export interface AutomationAtSchedule {
    readonly kind: 'at';
    readonly at: number;
}
export interface AutomationEverySchedule {
    readonly kind: 'every';
    readonly intervalMs: number;
    readonly anchorAt?: number;
}
export interface AutomationCronSchedule {
    readonly kind: 'cron';
    readonly expression: string;
    readonly timezone?: string;
    readonly staggerMs?: number;
}
export type AutomationScheduleDefinition = AutomationAtSchedule | AutomationEverySchedule | AutomationCronSchedule;
export type AutomationScheduleKind = AutomationScheduleDefinition['kind'];
export declare const DEFAULT_TOP_OF_HOUR_STAGGER_MS: number;
export declare function parseEveryInterval(input: string): number;
export declare function formatEveryInterval(intervalMs: number): string;
export declare function isRecurringTopOfHourCronExpression(expression: string): boolean;
export declare function normalizeCronStaggerMs(raw: unknown): number | undefined;
export declare function resolveDefaultCronStaggerMs(expression: string): number | undefined;
export declare function resolveAutomationCronStaggerMs(schedule: AutomationCronSchedule): number;
export declare function resolveStableAutomationCronOffsetMs(stableId: string | undefined, staggerMs: number): number;
export declare function validateSchedule(schedule: AutomationScheduleDefinition): void;
export declare function normalizeAtSchedule(at: number): AutomationAtSchedule;
export declare function normalizeEverySchedule(interval: string | number, anchorAt?: number): AutomationEverySchedule;
export declare function normalizeCronSchedule(expression: string, timezone?: string, staggerMs?: unknown): AutomationCronSchedule;
export declare function getNextAutomationOccurrence(schedule: AutomationScheduleDefinition, fromMs?: number, stableId?: string): number | undefined;
export declare function isAutomationDue(schedule: AutomationScheduleDefinition, nextRunAt: number | undefined, now?: number): boolean;
//# sourceMappingURL=schedules.d.ts.map