import type { ChannelProvider } from '../registry.js';
/**
 * Split one message into the notification's title and body.
 *
 * A broadcast sink hands us `composeBroadcastMessage`'s shape — a title line, a
 * blank line, then the body (and a `Sent from …` footer) — so honouring the first
 * newline puts the scannable head in the title and the rest in the body, which is
 * how the existing daemon notifications already read. (Desktop is a plain sink, so
 * the message carries no URLs to split off.)
 *
 * Notification banners show roughly two lines before an ellipsis, so a long
 * single-line message is split at the title boundary rather than truncated away:
 * the head becomes the title and the remainder still arrives in the body.
 */
export declare function splitDesktopMessage(text: string): {
    title: string;
    body: string;
};
/**
 * Which native notifier this platform wires, or undefined when it wires none.
 *
 * macOS always ships `osascript`, and `notifyDesktop` prefers the branded
 * MenubarHelper when installed and degrades to osascript otherwise — either way
 * something delivers. Linux depends on `notify-send`, which is NOT guaranteed
 * (a headless box typically lacks it), so the platform answer alone is not proof
 * there — see `desktopDeliverable`. Every other platform has no wired notifier at
 * all (`notifyDesktop` is a documented no-op), so sending there must fail loud.
 *
 * Pure and platform-injectable so the gate is testable without spawning.
 */
export declare function desktopNotifier(platform?: NodeJS.Platform): string | undefined;
/**
 * Whether a notification sent right now would actually arrive.
 *
 * On Linux the notifier is a separate binary that is frequently absent, and
 * `notifyDesktop` spawns it detached — an ENOENT surfaces asynchronously and is
 * swallowed. Reporting `ok` off the platform name alone would therefore mark an
 * undelivered notification as delivered, which is the same silent failure this
 * provider exists to remove, just relocated. So probe for the binary.
 *
 * macOS needs no probe: `osascript` is part of the OS, so the degrade path is
 * always available even when MenubarHelper is not installed.
 */
export declare function desktopDeliverable(platform?: NodeJS.Platform): {
    ok: true;
} | {
    ok: false;
    reason: string;
};
export declare const desktopProvider: ChannelProvider;
