import type { AgentConfig } from './types.js'; import type { Telegraf } from 'telegraf'; import { CronScheduler, type SchedulerOptions, type TelemetryRecord } from './daemon/scheduler.js'; import type { ScheduledTask } from './daemon/triggers.js'; export interface DaemonOptions { port?: number; host?: string; tasks?: ScheduledTask[]; sessionConfig?: Partial; telemetryPath?: string; sessionFactory?: SchedulerOptions['sessionFactory']; cooldownMs?: number; now?: () => number; onTaskComplete?: SchedulerOptions['onTaskComplete']; doneUnverifiedProbe?: SchedulerOptions['doneUnverifiedProbe']; pullPollIntervalMs?: number; queueDir?: string; writePortFile?: boolean; bot?: Telegraf; primaryChatId?: number; primaryThreadId?: number; oauthRefresher?: () => Promise; oauthRefreshIntervalMs?: number; } export interface DaemonHandle { readonly port: number; readonly host: string; readonly scheduler: CronScheduler; registerTask(task: ScheduledTask): void; unregisterTask(taskId: string): void; tickOnce(taskId: string): Promise; fireOnStart(): Promise; stop(): Promise; } export declare function startDaemon(options?: DaemonOptions): Promise;