import type { EnqueueTemporalGenerationInput, TaskRecord, TemporalGenerationEnqueueResult } from './task-ledger.js'; export type TemporalCandidateKind = 'exact_or_deferred' | 'date_activation'; export interface TemporalCandidate extends EnqueueTemporalGenerationInput { kind: TemporalCandidateKind; } export interface TemporalSelectionOptions { now: number; timeZone: string; exactLimit?: number; dateLimit?: number; } export interface TemporalScannerLedger { listTemporalScanPage(input: { limit: number; afterId: number; }): TaskRecord[]; findTemporalGenerationKeys(generationKeys: readonly string[]): Set; countOpenWorkOrders(kind: 'temporal'): number; enqueueTemporalGeneration(input: EnqueueTemporalGenerationInput): TemporalGenerationEnqueueResult; } export interface TemporalSchedulerOptions { ledger: TemporalScannerLedger; now: () => number; timeZone: string; intervalMs?: number; maxOpen?: number; exactLimit?: number; dateLimit?: number; setInterval?: (callback: () => void, intervalMs: number) => NodeJS.Timeout; clearInterval?: (timer: NodeJS.Timeout) => void; log?: (line: string) => void; } export interface TemporalTickResult { enqueued: number; saturated: boolean; } export declare function startOfTaskDate(deadlineIso: string, offsetMinutes: number | null, timeZone: string): number; export declare function buildTemporalGenerationKey(task: TaskRecord, checkAt: number): string; export declare function selectTemporalCandidates(tasks: readonly TaskRecord[], existingGenerationKeys: ReadonlySet, options: TemporalSelectionOptions): TemporalCandidate[]; export declare class TemporalReconcileScheduler { private readonly options; private timer; constructor(options: TemporalSchedulerOptions); tick(): TemporalTickResult; start(): void; stop(): void; } //# sourceMappingURL=temporal-reconcile.d.ts.map