///
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