/** A deferrable background job the governor can pause/resume. */ export interface PausableJob { /** Stable id for logs and receipts. */ readonly id: string; /** Called when the governor pauses the job. Best-effort; must not throw. */ onPause?(reason: string): void; /** Called when the governor resumes the job. Best-effort; must not throw. */ onResume?(reason: string): void; } /** Snapshot of a job's pause state. */ export interface PausableJobState { readonly id: string; readonly paused: boolean; } export declare class PauseController { private readonly jobs; private readonly paused; private readonly resumeWaiters; /** Register a job. Returns a deregister fn. A job registered while paused stays paused. */ register(job: PausableJob): () => void; /** Whether a job is currently paused. Unknown jobs are never paused. */ isPaused(id: string): boolean; /** Ids currently paused. */ pausedJobs(): string[]; /** State of every registered job. */ states(): PausableJobState[]; /** Pause every registered job. Emits one receipt line per newly-paused job. */ pauseAll(reason: string): void; /** Resume every registered job. Emits one receipt line per newly-resumed job. */ resumeAll(reason: string): void; private pauseOne; private resumeOne; /** * Resolve when the job is not paused. Resolves immediately if already running. * A job's work loop can `await controller.whenResumed(id)` at a yield point to * apply governor backpressure without busy-waiting. */ whenResumed(id: string): Promise; private flushWaiters; } //# sourceMappingURL=pause-controller.d.ts.map