/** * Interval-mode driving for `workflow-claim-renewal-task.ts`'s claim-renewal * task. Split out purely to keep that module under the repository's * implementation-file-size ceiling as the number of independent interval-mode * sub-passes has grown (renewal, reclaim, signal poll, update poll) — see * that module's own doc for the "each sub-pass gets its own single-flight * slot" design this file implements. `workflow-claim-renewal-task.ts` is the * only expected caller; `runOnce()`/the manual combined pass stays there, * since it shares none of this file's interval-scheduling state. * * @module core/engine/workflow-claim-renewal-interval */ import type { OwnerSideSignalPollTarget } from './owner-side-signal-poll.ts'; import type { OwnerSideUpdatePollTarget } from './owner-side-update-poll.ts'; import { type WorkflowClaimReclaimTarget, type WorkflowClaimRenewalTarget } from './workflow-claim-renewal-subpasses.ts'; import type { WorkflowClaimRenewalIntervalScheduler, WorkflowClaimRenewalPassResult } from './workflow-claim-renewal-task.ts'; /** Options for {@link createWorkflowClaimRenewalIntervalDriver}. Mirrors the relevant subset of `WorkflowClaimRenewalTaskOptions`. */ export type WorkflowClaimRenewalIntervalDriverOptions = { target: WorkflowClaimRenewalTarget; getNow: () => number; intervalMs: number; scheduler: WorkflowClaimRenewalIntervalScheduler; reclaimTarget?: WorkflowClaimReclaimTarget; signalPollTarget?: OwnerSideSignalPollTarget; updatePollTarget?: OwnerSideUpdatePollTarget; onPassComplete?: (result: WorkflowClaimRenewalPassResult) => void; }; /** A running interval-mode driver. */ export type WorkflowClaimRenewalIntervalDriver = { /** Start interval-driven passes. Idempotent — a second call while already started does not create a second interval. */ start(): void; /** Stop interval-driven passes. Idempotent. Only clears the interval; passes already in flight still run to completion. */ stop(): void; }; /** * Real-timer scheduler used when no `scheduler` is injected. Keeps each real * `Timer` in a private map, keyed by an opaque token, so the public * {@link WorkflowClaimRenewalIntervalScheduler} interface never needs to name * the concrete timer type — `clearInterval` looks the real timer back up by * token rather than requiring a narrowed `unknown` parameter. */ export declare function defaultWorkflowClaimRenewalScheduler(): WorkflowClaimRenewalIntervalScheduler; /** * Create the interval-mode driver: four independent single-flight sub-passes * (renewal, reclaim, signal poll, update poll), each on its OWN cadence slot * so a slow or hung sub-pass never delays a different one — see * `workflow-claim-renewal-task.ts`'s module doc for the full rationale * (WFT-79 Finding 2 and its extensions). */ export declare function createWorkflowClaimRenewalIntervalDriver(options: WorkflowClaimRenewalIntervalDriverOptions): WorkflowClaimRenewalIntervalDriver;