import type { SupervisorHttpClient } from "./http.js"; import type { WeightedWorkerQueueSubscription } from "../workerQueue.js"; import type { WorkerApiDequeueResponseBody, WorkerQueueClass } from "./schemas.js"; import type { PreDequeueFn, PreSkipFn } from "./types.js"; import type { ConsumerPoolMetrics } from "./consumerPoolMetrics.js"; export interface QueueConsumer { start(): void; stop(): void; } export type RunQueueConsumerOptions = { client: SupervisorHttpClient; intervalMs: number; idleIntervalMs: number; preDequeue?: PreDequeueFn; preSkip?: PreSkipFn; /** Which worker-queue class this consumer pulls from. Defaults to the worker's region queue. */ queueClass?: WorkerQueueClass; subscriptions?: WeightedWorkerQueueSubscription[]; onDequeue: (messages: WorkerApiDequeueResponseBody, timing?: { dequeueResponseMs: number; pollingIntervalMs: number; }) => Promise; /** Optional shared pool metrics. When provided, dequeue API latency is recorded as a histogram. */ metrics?: ConsumerPoolMetrics; }; export declare class RunQueueConsumer implements QueueConsumer { private readonly client; private readonly preDequeue?; private readonly preSkip?; private readonly queueClass?; private readonly subscriptions?; private readonly onDequeue; private readonly metrics?; private readonly logger; private intervalMs; private idleIntervalMs; private isEnabled; private lastScheduledIntervalMs; private rejectionBackoffMs; constructor(opts: RunQueueConsumerOptions); start(): void; stop(): void; private dequeue; private scheduleNextDequeue; }