import type Database from 'better-sqlite3';
import type { JobRunner } from './job-runner.js';
export interface ScheduleConfig {
    enabled: boolean;
    cron: string;
    timezone?: string;
    mode: 'autonomous';
    prompt: string;
    timeout_minutes?: number;
    retry_on_failure?: number;
}
export interface SchedulerServiceConfig {
    db: Database.Database;
    jobRunner: JobRunner;
    squadsDir: string;
    broadcast?: (squadName: string, message: Record<string, unknown>) => void;
}
export interface SchedulerStatus {
    squadName: string;
    cronExpression: string;
    timezone?: string;
    status: 'active' | 'paused' | 'error';
    lastRunAt?: string;
    lastResult?: string;
    nextRunAt?: string;
}
export declare class SchedulerService {
    private db;
    private jobRunner;
    private squadsDir;
    private broadcast?;
    private jobs;
    constructor(config: SchedulerServiceConfig);
    start(): void;
    private restoreFromDb;
    stop(): void;
    register(squadName: string): void;
    unregister(squadName: string): void;
    pause(squadName: string): void;
    resume(squadName: string): void;
    triggerNow(squadName: string): void;
    reload(squadName: string): void;
    /** Register a schedule from API data (not from YAML) */
    registerDynamic(squadName: string, config: {
        cron: string;
        prompt: string;
        timezone?: string;
        timeout_minutes?: number;
        retry_on_failure?: number;
    }): boolean;
    getStatus(): SchedulerStatus[];
    getJob(squadName: string): SchedulerStatus | null;
    private readScheduleConfig;
}
//# sourceMappingURL=scheduler-service.d.ts.map