import { type LocalEventHookConfig, type LocalEventHookTarget } from "./config.js";
export declare const LOCAL_EVENT_TYPES: readonly ["task.assigned", "task.blocked", "task.started", "task.completed", "task.due", "task.due_soon", "task.failed", "task.sla_breached", "task.stale", "task.unblocked", "task.status_changed", "calendar.reminder", "plan.updated", "run.started", "run.completed", "run.failed", "run.cancelled", "approval.decided", "import.finished", "export.finished"];
export type LocalEventType = typeof LOCAL_EVENT_TYPES[number] | string;
export interface LocalEventHookInput {
    name: string;
    events: string[];
    target: LocalEventHookTarget;
    enabled?: boolean;
    file_path?: string;
    socket_path?: string;
    command?: string;
    cwd?: string;
    sandbox?: string;
    env?: Record<string, string>;
    retry?: {
        attempts?: number;
        backoff_ms?: number;
    };
}
export interface LocalEventEnvelope {
    id: string;
    type: LocalEventType;
    timestamp: string;
    payload: unknown;
    source: {
        package: "@hasna/todos";
        local_only: true;
    };
    integrity: {
        algorithm: "sha256";
        digest: string;
    };
}
export interface LocalEventHookDispatchInput {
    type: LocalEventType;
    payload?: unknown;
    hooks?: LocalEventHookConfig[];
    timestamp?: string;
}
export interface LocalEventHookDispatchResult {
    hook: string;
    event_id: string;
    event_type: LocalEventType;
    target: LocalEventHookTarget;
    status: "delivered" | "failed" | "skipped";
    attempts: number;
    integrity: LocalEventEnvelope["integrity"];
    output_summary?: string;
    error?: string;
}
export declare function upsertLocalEventHook(input: LocalEventHookInput): LocalEventHookConfig;
export declare function listLocalEventHooks(): LocalEventHookConfig[];
export declare function getLocalEventHook(name: string): LocalEventHookConfig | null;
export declare function removeLocalEventHook(name: string): boolean;
export declare function emitLocalEventHooks(input: LocalEventHookDispatchInput): Promise<LocalEventHookDispatchResult[]>;
export declare function emitLocalEventHooksQuiet(input: LocalEventHookDispatchInput): void;
export declare function testLocalEventHook(name: string, input: Omit<LocalEventHookDispatchInput, "hooks">): Promise<LocalEventHookDispatchResult[]>;
//# sourceMappingURL=event-hooks.d.ts.map