/** * Shared worker poll lifecycle. * * The full connector worker and the lean device daemon use the same health, * polling, concurrency, and graceful-shutdown lifecycle. Run execution stays * injected so the device build does not import fleet connector machinery. */ import { type PollResponse, type WorkerClient } from './client.js'; export interface WorkerPollLoopOptions { client: WorkerClient; pollIntervalMs?: number; /** * Optional ceiling for the delay between claims. Device daemons that expose * short-deadline source reads use this so an idle server hint cannot consume * the caller's whole queue budget before the run is claimed. */ maxIdleDelayMs?: number; maxConcurrentJobs?: number; execute: (job: PollResponse) => Promise; beforeIdlePoll?: () => Promise; /** Persisted device credentials treat poll-time revocation as terminal. */ failClosedOnPollAuthError?: boolean; } export type WorkerPollLoopExit = (code: number) => void; export interface WorkerPollLoopSignalOptions { /** Only a supervised parent/child launch treats stdin EOF as shutdown. */ stdinEof?: boolean; } export declare function shouldHandleWorkerPollLoopStdinEof(options?: WorkerPollLoopSignalOptions): boolean; export declare class WorkerPollLoop { private readonly client; private readonly pollIntervalMs; private readonly maxIdleDelayMs?; private readonly maxConcurrentJobs; private readonly execute; private readonly beforeIdlePoll?; private readonly failClosedOnPollAuthError; private running; private admittingJobs; private activeJobs; private capacityVersion; private wakePoll?; private pendingPoll?; constructor(options: WorkerPollLoopOptions); start(): Promise; stop(): void; waitForActiveJobs(timeoutMs?: number, pollMs?: number): Promise; private pollAndExecute; private waitForNextPoll; private sleep; } export declare function createWorkerPollLoopShutdownHandler(loop: WorkerPollLoop, onShutdown?: () => void | Promise, exit?: WorkerPollLoopExit): (signal: string) => Promise; export declare function installWorkerPollLoopSignals(loop: WorkerPollLoop, onShutdown?: () => void | Promise, options?: WorkerPollLoopSignalOptions): void; export declare function startWorkerPollLoop(options: WorkerPollLoopOptions): Promise; //# sourceMappingURL=poll-loop.d.ts.map