/**
 * Native on-screen approval dialog (Approve / Deny) shown on the machine where
 * mailpouch runs — so the operator can decide right at the screen instead of
 * going to the Agents tab in a browser. Shells out to a per-platform dialog
 * tool, exactly like DesktopNotifier, with no external dependency.
 *
 * Platform matrix:
 *   macOS   → osascript `display dialog … buttons {"Deny","Approve"}`
 *   Linux   → `zenity --question` (GNOME) → `kdialog --yesno` (KDE) fallback
 *   Windows → PowerShell `[System.Windows.Forms.MessageBox]` Yes/No
 *
 * Result is read from the process EXIT CODE (0 = approve, 1 = deny), so the
 * subprocess can stay stdio-ignored. Returns "unavailable" when no dialog tool
 * is present (headless / minimal host) or the prompt times out — the caller
 * then falls back to the browser approval window, and the pending grant's
 * 5-minute TTL still applies.
 */
export type ApprovalChoice = "approve" | "deny" | "unavailable";
export interface ApprovalPrompt {
    title: string;
    message: string;
    /** Max time to wait for the user (default 5 min, matching the pending TTL). */
    timeoutMs?: number;
}
export interface DesktopPromptDeps {
    platform?: NodeJS.Platform;
    /** Injected for tests. Resolves an exit code: 0 approve, 1 deny, -1 spawn
     *  error (tool missing), -2 timeout. */
    runner?: (cmd: string, args: string[], timeoutMs: number) => Promise<number>;
}
export declare class DesktopPrompt {
    private readonly platform;
    private readonly run;
    constructor(deps?: DesktopPromptDeps);
    prompt(p: ApprovalPrompt): Promise<ApprovalChoice>;
    private map;
    private promptMac;
    private promptLinux;
    private promptWindows;
}
//# sourceMappingURL=desktop-prompt.d.ts.map