import { CreateJobRequest, CreateSessionRequest, JobEvent, JobInfo, QueueStats } from "@workerdeck/protocol"; import { Runner, SessionRunnerConfig } from "@workerdeck/core"; //#region src/adapter.d.ts type JobRecord = { info: JobInfo; request: CreateJobRequest; }; interface QueueAdapter { add(job: JobRecord): Promise; claimNext(): Promise; get(id: string): Promise; list(): Promise; update(id: string, patch: Partial): Promise; prune(olderThanMs: number): Promise; addDailyTokens(dayKey: string, tokens: number): Promise; dailyTokens(dayKey: string): Promise; nextRunAt?(): Promise; onWork?(listener: () => void): () => void; } declare class InMemoryQueueAdapter implements QueueAdapter { #private; add(job: JobRecord): Promise; claimNext(): Promise; get(id: string): Promise; list(): Promise; update(id: string, patch: Partial): Promise; prune(olderThanMs: number): Promise; addDailyTokens(dayKey: string, tokens: number): Promise; dailyTokens(dayKey: string): Promise; nextRunAt(): Promise; } //#endregion //#region src/queue.d.ts type JobQueueOptions = { createRunner: (config: SessionRunnerConfig) => Runner | Promise; adapter?: QueueAdapter; maxConcurrency?: number; sessionTokenLimit?: number; dailyTokenLimit?: number; maxJobDurationMs?: number; maxParkedDurationMs?: number; killGraceMs?: number; retention?: { maxAgeMs: number; sweepIntervalMs?: number; }; buildRunnerConfig?: (req: CreateSessionRequest) => SessionRunnerConfig; discardSession?: (sessionId: string) => void | Promise; fetchImpl?: typeof fetch; webhookAttempts?: number; webhookRetryDelayMs?: number; onEvent?: (event: JobEvent) => void; onError?: (error: unknown, context: JobQueueErrorContext) => void; }; type JobQueueErrorPhase = 'pump' | 'start' | 'event' | 'finalize' | 'park' | 'resume'; type JobQueueErrorContext = { jobId?: string; phase: JobQueueErrorPhase; }; declare class JobQueue { #private; constructor(options: JobQueueOptions); submit(request: CreateJobRequest): Promise; get(id: string): Promise; list(): Promise; canParkSession(sessionId: string): boolean; onSessionParking(sessionId: string, executionId: string): boolean; onSessionResumed(sessionId: string, runner: Runner): void; cancel(id: string): Promise; pause(): void; resume(): void; get paused(): boolean; stats(): Promise; close(): void; } //#endregion export { InMemoryQueueAdapter, JobQueue, type JobQueueErrorContext, type JobQueueErrorPhase, type JobQueueOptions, type JobRecord, type QueueAdapter }; //# sourceMappingURL=index.d.mts.map