/// import EventEmitter from "events"; import "durr"; export interface ClientEvents extends IClientEvents { readonly init: () => void; readonly success: (response?: Response) => void; readonly fail: (reason: string) => void; readonly close: () => void; } export interface WorkerEvents extends IWorkerEvents { readonly init: () => void; readonly cancel: () => void; readonly close: () => void; } export type IWorkerEvents = { [key: string | symbol]: ((...args: any[]) => void) | (() => void); }; export type IClientEvents = { [key: string | symbol]: ((...args: any[]) => void) | (() => void); }; export type BasePayload = unknown; export interface Job { readonly payload: Payload; } export declare function isJob(it: unknown, payloadTypeGuard?: (p: unknown) => p is Payload): it is Job; export interface ClientEventEmitter = ClientEvents> extends EventEmitter { on(event: U, listener: Client[U]): this; emit(event: U, ...args: Parameters): boolean; } export declare class ClientEventEmitter = ClientEvents> extends EventEmitter { constructor(); } export interface WorkerEventEmitter extends EventEmitter { on(event: U, listener: Worker[U]): this; emit(event: U, ...args: Parameters): boolean; } export declare class WorkerEventEmitter extends EventEmitter { constructor(); } export type JobId = string; export type JobHandler = ClientEvents, Worker extends WorkerEvents = WorkerEvents> = (job: Job, context: ClientEventEmitter, workerEvents: WorkerEventEmitter) => void; export interface JobQueue = ClientEvents, Worker extends WorkerEvents = WorkerEvents> { submit(job: Job, preHook?: (emitter: ClientEventEmitter, id: JobId) => Promise): Promise; register(handler: JobHandler): Promise; monitor(jobId: JobId): Promise>; cancel(jobId: JobId): void; notify(jobId: JobId, eventName: keyof Worker, ...params: Parameters): Promise; close(): Promise; } export interface JobWorker { readonly isCanceled: () => boolean; readonly cancel: () => void; } //# sourceMappingURL=JobQueue.d.ts.map