export declare const NOTIFICATION_EVENT_TYPES: { readonly Idle: "idle"; readonly Question: "question"; readonly Permission: "permission"; readonly Error: "error"; readonly DispatchComplete: "dispatch_complete"; readonly DispatchProgress: "dispatch_progress"; readonly LoopComplete: "loop_complete"; readonly ApprovalPending: "approval_pending"; readonly SessionDeleted: "session_deleted"; readonly Custom: "custom"; }; /** Set of all valid notification event type values, for runtime validation. */ export declare const VALID_NOTIFICATION_EVENT_TYPES: ReadonlySet; /** * Notification event type — open string type. * Built-in values are in NOTIFICATION_EVENT_TYPES; custom values can be any string. */ export type NotificationEventType = string; export declare const NOTIFICATION_CHANNEL_KINDS: { readonly SystemToast: "system_toast"; readonly Sound: "sound"; readonly CustomCommand: "custom_command"; readonly Webhook: "webhook"; readonly File: "file"; readonly Log: "log"; }; /** * Notification channel kind — open string type. * Built-in values are in NOTIFICATION_CHANNEL_KINDS; custom values can be any string. */ export type NotificationChannelKind = string; export interface PlatformInfo { os: "darwin" | "linux" | "win32" | "unknown"; } export interface QuietHoursRange { /** Start time in "HH:MM" format (24-hour). */ start: string; /** End time in "HH:MM" format (24-hour). */ end: string; /** Day-of-week abbreviations, e.g. ["Mon", "Tue"]. Omit for daily. */ days?: string[]; } export interface QuietHoursConfig { enabled: boolean; /** IANA timezone identifier, e.g. "America/New_York". Defaults to system timezone. */ timezone?: string; ranges: QuietHoursRange[]; } export interface ThrottleConfig { /** Rolling time window in milliseconds for the global rate limit. */ windowMs: number; /** Maximum notifications allowed within the global window. */ maxPerWindow: number; /** Per-event-type overrides for the rate limit. */ perEventType?: Partial>; } /** Flat key-value map of template variables for notification messages. */ export type NotificationTemplateVars = Record; /** Wire format exchanged between the notification manager and channels. */ export interface NotificationMessage { title: string; body: string; sessionId: string; eventType: NotificationEventType; agent?: string; roleName?: string; /** ISO 8601 timestamp of when the event occurred. */ timestamp: string; lastUserMessage?: string; lastAssistantMessage?: string; } export interface SystemToastChannelConfig { kind: typeof NOTIFICATION_CHANNEL_KINDS.SystemToast; enabled: boolean; } export interface SoundChannelConfig { kind: typeof NOTIFICATION_CHANNEL_KINDS.Sound; enabled: boolean; /** Path to the sound file to play. */ soundPath: string; } export interface CustomCommandChannelConfig { kind: typeof NOTIFICATION_CHANNEL_KINDS.CustomCommand; enabled: boolean; /** Shell command to execute. */ command: string; /** When true, the notification message is piped to the command via stdin. */ passAsStdin?: boolean; /** Additional environment variables for the command process. */ env?: Record; } export interface WebhookChannelConfig { kind: typeof NOTIFICATION_CHANNEL_KINDS.Webhook; enabled: boolean; /** Target URL for the webhook POST request. */ url: string; /** Custom HTTP headers to include in the request. */ headers?: Record; /** Request timeout in milliseconds (default: 5000). */ timeoutMs?: number; } export interface FileChannelConfig { kind: typeof NOTIFICATION_CHANNEL_KINDS.File; enabled: boolean; /** Absolute or relative path to the notification log file. */ path: string; } export interface LogChannelConfig { kind: typeof NOTIFICATION_CHANNEL_KINDS.Log; enabled: boolean; /** Log level for the notification entry (default: "info"). */ level?: "info" | "warn" | "error" | "debug"; } export type NotificationChannelConfig = SystemToastChannelConfig | SoundChannelConfig | CustomCommandChannelConfig | WebhookChannelConfig | FileChannelConfig | LogChannelConfig; export interface NotificationEventConfig { /** Whether notifications for this event type are enabled. */ enabled: boolean; /** Channel overrides specific to this event type. Falls back to global channels. */ channels?: NotificationChannelConfig[]; /** Template string for the notification title. Supports {{var}} placeholders. */ titleTemplate?: string; /** Template string for the notification body. Supports {{var}} placeholders. */ messageTemplate?: string; /** Throttle overrides specific to this event type. */ throttle?: Partial; /** Quiet hours override specific to this event type. */ quietHoursOverride?: QuietHoursConfig; } export interface NotificationConfig { /** Master toggle for the entire notification system. */ enabled: boolean; /** When true, only the main session triggers notifications. */ mainSessionOnly: boolean; /** Milliseconds of inactivity before an idle notification fires. */ idleDelayMs: number; /** Tool names that represent a "question" to the user (used for question event detection). */ questionToolNames: string[]; /** Global channel configurations. */ channels: NotificationChannelConfig[]; /** Per-event-type configuration overrides. */ events?: Partial>; /** Global quiet hours configuration. */ quietHours: QuietHoursConfig; /** Global throttle configuration. */ throttle: ThrottleConfig; } //# sourceMappingURL=types.d.ts.map