/**
 * Parse the `agents://` deep-link scheme.
 *
 * A rendered artifact (a plan or report) embeds `agents://session/<id>` in its
 * provenance line. Clicking it hands the URL to the OS, which routes it to the
 * registered handler (see register.ts) that runs the machine-only `agents _callback
 * <url>` verb (`open` remains a hidden back-compat alias). This module turns that URL
 * into a validated {@link AgentsSessionLink} the resume dispatcher consumes.
 *
 * Parsing is deliberately strict: the session id is the only thing that ever
 * reaches a child process, and the `_callback` command passes it as argv (never
 * interpolated into a shell), so a hostile URL cannot inject a command. Anything
 * that is not `agents://session/<valid-id>` is rejected with a reason.
 *
 * URL shape:
 *   agents://session/<id>              — resume <id>, owner host resolved from the id
 *   agents://session/<id>?host=<name>  — the same, with a routing hint
 */
export interface AgentsSessionLink {
    kind: 'session';
    /** The session id (or short-id/alias) to resume. */
    id: string;
    /** Optional owning-host hint; resume self-resolves the owner from the id regardless. */
    host?: string;
}
export interface AgentsUrlError {
    error: string;
}
export declare function isDeepLinkSessionId(raw: string): boolean;
/**
 * Parse an `agents://…` URL into a {@link AgentsSessionLink}, or return an
 * {@link AgentsUrlError} with a human reason. Never throws.
 */
export declare function parseAgentsUrl(input: string): AgentsSessionLink | AgentsUrlError;
