/**
 * Cron job types.
 *
 * Simplified from OpenClaw — no delivery channels, no gateway, no failure alerts.
 * Every cron job spawns an isolated agent run with a prompt.
 */
export type CronSchedule = {
    kind: 'at';
    at: string;
} | {
    kind: 'every';
    everyMs: number;
    anchorMs?: number;
} | {
    kind: 'cron';
    expr: string;
    tz?: string;
};
export type CronPayload = {
    message: string;
    model?: string;
};
export type CronRunStatus = 'ok' | 'error' | 'skipped';
export type CronJobState = {
    nextRunAtMs?: number;
    runningAtMs?: number;
    lastRunAtMs?: number;
    lastRunStatus?: CronRunStatus;
    lastError?: string;
    lastDurationMs?: number;
    consecutiveErrors?: number;
    scheduleErrorCount?: number;
};
export type CronJob = {
    id: string;
    name: string;
    description?: string;
    enabled: boolean;
    deleteAfterRun?: boolean;
    createdAtMs: number;
    updatedAtMs: number;
    schedule: CronSchedule;
    payload: CronPayload;
    state: CronJobState;
};
export type CronJobCreate = Omit<CronJob, 'id' | 'createdAtMs' | 'updatedAtMs' | 'state' | 'enabled'> & {
    enabled?: boolean;
    state?: Partial<CronJobState>;
};
export type CronJobPatch = Partial<Omit<CronJob, 'id' | 'createdAtMs' | 'updatedAtMs' | 'state'>> & {
    state?: Partial<CronJobState>;
};
export type CronStoreFile = {
    version: 1;
    jobs: CronJob[];
};
//# sourceMappingURL=types.d.ts.map