/**
 * Local-only notification reminders — due-date alerts, SLA warnings, custom reminders.
 * Stored in SQLite; optional desktop notify-send when enabled.
 */
import type { Database } from "bun:sqlite";
import { type Task } from "../db/tasks.js";
export declare const NOTIFICATION_REMINDERS_SCHEMA = "todos.notification_reminders.v1";
export declare const REMINDER_TYPES: readonly ["due_soon", "due_overdue", "sla_warning", "sla_breach", "custom"];
export type ReminderType = (typeof REMINDER_TYPES)[number];
export declare const REMINDER_STATUSES: readonly ["pending", "fired", "dismissed", "snoozed"];
export type ReminderStatus = (typeof REMINDER_STATUSES)[number];
export interface ReminderPreferences {
    schema_version: typeof NOTIFICATION_REMINDERS_SCHEMA;
    due_soon_hours: number;
    sla_warning_minutes: number;
    enabled: boolean;
    desktop_notify: boolean;
    updated_at: string;
}
export interface NotificationReminder {
    schema_version: typeof NOTIFICATION_REMINDERS_SCHEMA;
    id: string;
    task_id: string | null;
    reminder_type: ReminderType;
    title: string;
    message: string | null;
    trigger_at: string;
    status: ReminderStatus;
    snoozed_until: string | null;
    project_id: string | null;
    agent_id: string | null;
    priority: string;
    metadata: Record<string, unknown>;
    created_at: string;
    updated_at: string;
    fired_at: string | null;
    dismissed_at: string | null;
}
export interface ScanRemindersResult {
    schema_version: typeof NOTIFICATION_REMINDERS_SCHEMA;
    created: number;
    updated: number;
    dismissed: number;
    reminders: NotificationReminder[];
}
export interface ProcessRemindersResult {
    schema_version: typeof NOTIFICATION_REMINDERS_SCHEMA;
    fired: number;
    reminders: NotificationReminder[];
    desktop_notifications_sent: number;
}
export interface ReminderSummary {
    schema_version: typeof NOTIFICATION_REMINDERS_SCHEMA;
    pending: number;
    due_now: number;
    snoozed: number;
    fired_today: number;
    by_type: Record<string, number>;
}
export interface CreateReminderInput {
    task_id?: string;
    reminder_type?: ReminderType;
    title: string;
    message?: string;
    trigger_at: string;
    project_id?: string;
    agent_id?: string;
    priority?: string;
    metadata?: Record<string, unknown>;
}
export declare function getReminderPreferences(db?: Database): ReminderPreferences;
export declare function setReminderPreferences(input: Partial<Omit<ReminderPreferences, "schema_version" | "updated_at">>, db?: Database): ReminderPreferences;
export declare function createReminder(input: CreateReminderInput, db?: Database): NotificationReminder;
export declare function getReminder(id: string, db?: Database): NotificationReminder | null;
export declare function listReminders(filters?: {
    status?: ReminderStatus | ReminderStatus[];
    reminder_type?: ReminderType;
    project_id?: string;
    agent_id?: string;
    task_id?: string;
    limit?: number;
}, db?: Database): NotificationReminder[];
export declare function dismissReminder(id: string, db?: Database): NotificationReminder | null;
export declare function snoozeReminder(id: string, until: string, db?: Database): NotificationReminder | null;
export declare function getUpcomingDueTasks(filters?: {
    hours?: number;
    project_id?: string;
    agent_id?: string;
}, db?: Database): Task[];
/** Backward-compatible alias used by notify_upcoming_deadlines MCP tool. */
export declare function notifyUpcomingDeadlines(filters?: {
    hours?: number;
    project_id?: string;
    agent_id?: string;
}, db?: Database): Task[];
export declare function scanReminders(filters?: {
    project_id?: string;
    agent_id?: string;
}, db?: Database): ScanRemindersResult;
export declare function processDueReminders(options?: {
    desktop?: boolean;
    project_id?: string;
    agent_id?: string;
}, db?: Database): ProcessRemindersResult;
export declare function getReminderSummary(db?: Database): ReminderSummary;
export declare function getReminderDocs(): string;
//# sourceMappingURL=notification-reminders.d.ts.map