import type { Observable } from 'rxjs'; export interface JobParams { batchKey: string; payload: Payload; } export interface Job extends JobParams { id: string; } export interface JobQueueStatus { remaining: number; } export interface JobQueue { enqueue(jobs: JobParams[]): Promise; accept(): Promise[] | null>; waitForAccept(signal: AbortSignal): Promise[]>; return(jobs: Job[], retry?: boolean): Promise; clear(): Promise; status$: Observable; }