import { QueueCronJobOptions, QueueJobOptions, } from 'src/engine/integrations/message-queue/drivers/interfaces/job-options.interface'; import { MessageQueueJobData } from 'src/engine/integrations/message-queue/interfaces/message-queue-job.interface'; import { MessageQueueWorkerOptions } from 'src/engine/integrations/message-queue/interfaces/message-queue-worker-options.interface'; import { MessageQueue } from 'src/engine/integrations/message-queue/message-queue.constants'; export interface MessageQueueDriver { add( queueName: MessageQueue, jobName: string, data: T, options?: QueueJobOptions, ): Promise; work( queueName: MessageQueue, handler: ({ data, id }: { data: T; id: string }) => Promise | void, options?: MessageQueueWorkerOptions, ); addCron( queueName: MessageQueue, jobName: string, data: T, options?: QueueCronJobOptions, ); removeCron(queueName: MessageQueue, jobName: string, pattern?: string); register?(queueName: MessageQueue): void; }