import type { DiagnosticNodeInternal } from "../diagnostics/DiagnosticNodeInternal.js"; import type { RetryCallback } from "../utils/batch.js"; import type { Batcher } from "./Batcher.js"; import type { PartitionMetric } from "./PartitionMetric.js"; export type Task = () => Promise; /** * HighPerformanceQueue processes tasks concurrently. * If pauseAndClear() is called, it permanently halts processing, * clears queued tasks (resolving them with a custom value), and * any subsequent push() calls will immediately resolve with that value. */ export declare class LimiterQueue { concurrency: number; private running; private tasks; private terminated; private terminatedValue; private scheduled; private processing; private retrier; private partitionMetric; private readonly refreshPartitionKeyRangeCache; private refreshPKRangeCachePromise; /** * Creates a new HighPerformanceQueue. */ constructor(concurrency: number, partitionMetric: PartitionMetric, retrier: RetryCallback, refreshPartitionKeyRangeCache: (diagnosticNode: any) => Promise); /** * Enqueue a task and return a Promise that resolves or rejects when the task completes. * If the queue has been terminated via pauseAndClear, the promise resolves immediately with the terminated value. */ push(batcher: Batcher): Promise; /** * Permanently pauses processing and clears the queue. * All queued tasks and subsequent push() calls will immediately resolve with the provided custom value. */ pauseAndClear(customValue: T, diagnosticNode?: DiagnosticNodeInternal): Promise; /** * Schedules the processing loop using the best available asynchronous scheduler. */ private scheduleProcess; /** * Processes tasks up to the concurrency limit. */ private process; /** * Dynamically updates the concurrency limit. */ setConcurrency(newConcurrency: number): void; } //# sourceMappingURL=Limiter.d.ts.map