import { Cron } from 'croner'; import { type ScheduleRow } from './db.js'; import type { GatewayCoordinator, PiNotifier } from './slack.js'; export type ScheduleInput = { title: string; instructions: string; at: string; } | { title: string; instructions: string; cron: string; timezone: string; }; export declare function parseAt(value: string): string; export declare function validateTimezone(timezone: string): void; export declare function cronFor(expression: string, timezone: string): Cron; export declare function nextCronOccurrence(expression: string, timezone: string, after: Date): string; export declare function addSchedule(input: ScheduleInput, clock?: () => Date): ScheduleRow; export declare function enableSchedule(row: ScheduleRow, clock?: () => Date): ScheduleRow; export declare function materializeDueSchedules(clock?: () => Date): Record[]; export declare class SchedulerService { private readonly notifier; private readonly coordinator; private readonly clock; private timer; constructor(notifier: PiNotifier, coordinator: GatewayCoordinator, clock?: () => Date); tick(): Promise; start(intervalMs?: number): void; stop(): void; }