import { type DueJobResult } from './jobs';
import type { AutomationPolicyContext } from './runner';
export interface AutomationSchedulerOptions {
    projectDir: string;
    /** Returns the current automation policy context (grants + kill switch state). */
    getPolicyContext(): AutomationPolicyContext;
    /** When true, the scheduler skips all execution. */
    isKillSwitchActive(): boolean;
    /** When false, the scheduler is paused. */
    isEnabled(): boolean;
    /** Returns ms timestamp of the last user activity. */
    getLastUserActivityMs(): number;
    /** Minutes of inactivity before the scheduler is allowed to run. */
    idleThresholdMinutes: number;
    /** Optional callback to send breach notifications via configured channels. */
    onBreachDetected?: (breaches: Array<{
        breach_type: string;
        detail: string;
    }>) => void;
}
export declare class AutomationScheduler {
    private opts;
    private heartbeat;
    private lastCheckMs;
    private running;
    constructor(opts: AutomationSchedulerOptions);
    start(now?: Date): void;
    stop(): void;
    tick(now?: Date): Promise<{
        executed: number;
        reason?: string;
        results?: DueJobResult[];
    }>;
    /** After jobs execute, check promise obligations and service health. */
    private runPostExecutionChecks;
    /** Auto-fulfil pending promises that are linked to the executed job IDs via schedule_id. */
    private autoFulfilLinkedPromises;
}
//# sourceMappingURL=scheduler.d.ts.map