type QueuePriority = "high" | "default" | "low"; declare abstract class Job { static readonly jobName?: string; readonly maxAttempts?: number; readonly backoffMs?: number; readonly priority?: QueuePriority; constructor(); abstract handle(payload: TPayload): Promise; } interface Queue { dispatch(job: Job, payload: TPayload): Promise; } declare class SyncQueue implements Queue { dispatch(job: Job, payload: TPayload): Promise; } declare class AsyncQueue implements Queue { dispatch(job: Job, payload: TPayload): Promise; } declare function createQueue(driver: "sync" | "async"): Queue; export type { Queue, QueuePriority }; export { AsyncQueue, createQueue, Job, SyncQueue };