/**
 * Native desktop notifications by shelling out to per-platform binaries.
 *
 * No external dependency: the industry-standard `node-notifier` is
 * effectively abandoned (last publish April 2022), and its active fork
 * `toasted-notifier` does what this file does — subprocess to platform
 * tools — with similar footprint. Rolling our own keeps the surface tight
 * and makes the shell-escape behavior explicit.
 *
 * Platform matrix (April 2026):
 *
 *   macOS   → `osascript -e 'display notification …'`. Universal since
 *             10.8. No action buttons (AppleScript limitation).
 *   Linux   → `notify-send` (libnotify). Installed by default on most
 *             modern DEs; absent on minimal containers / WSL. We degrade
 *             to a log warning.
 *   Windows → `powershell.exe` invoking the built-in `[Windows.UI.Notifications]`
 *             WinRT API. No module install required on Win10+.
 *
 * All calls are fire-and-forget — a failed notifier should never break
 * the caller. Errors are logged at debug.
 */
export interface DesktopNotification {
    title: string;
    body: string;
    /** Optional subtitle shown under the title (macOS only). */
    subtitle?: string;
    /**
     * Sound name. macOS: system sound (e.g. "Glass", "Ping"). Linux:
     * ignored. Windows: true/false to enable default sound. Undefined
     * suppresses sound on platforms that support it.
     */
    sound?: boolean | string;
}
export interface DesktopNotifierDeps {
    /** Inject the current platform — used for tests. */
    platform?: NodeJS.Platform;
    /** Inject the subprocess runner — used for tests to assert the command. */
    runner?: (cmd: string, args: string[]) => Promise<{
        code: number;
    }>;
}
export declare class DesktopNotifier {
    private readonly platform;
    private readonly run;
    constructor(deps?: DesktopNotifierDeps);
    /** Dispatch a notification. Resolves when the subprocess exits (fast). */
    notify(n: DesktopNotification): Promise<{
        ok: boolean;
        platform: string;
        reason?: string;
    }>;
    private notifyMac;
    private notifyLinux;
    private notifyWindows;
}
//# sourceMappingURL=desktop.d.ts.map