import type { TerminalBackend, SplitDirection } from '../types.js';
/** An editor flavour that speaks the swarm-ext URI protocol. */
export interface EditorVariant {
    /** CLI on PATH, invoked with `--open-url`. */
    cli: string;
    /** URL scheme the product registers (must match the CLI's product). */
    scheme: string;
    /** macOS app bundle, for local availability detection. */
    app: string;
    label: string;
}
/**
 * Known editors, in preference order. VSCodium first — the backend is named for
 * it and is the user's editor; Cursor and VS Code also ship the extension and
 * are wired here for `makeVscodiumAgentBackend` / future registration.
 */
export declare const EDITOR_VARIANTS: EditorVariant[];
/**
 * The `<scheme>://swarmify.swarm-ext/spawn?p=<payload>` URL the extension handles.
 *
 * The payload is base64url-encoded JSON in a single `p` param — NOT one param per
 * field. VS Code percent-*decodes* `uri.query` once before the extension parses
 * it, so a `command`/`cwd` containing `&` (or `=`) would be mis-split by a naive
 * multi-param query. base64url is `[A-Za-z0-9_-]` only (no `&`, `=`, `%`, `+`,
 * `/`), so it survives that decode untouched and round-trips exactly.
 *
 * Optional `meta.agent` / `meta.sessionId` / `meta.title` let the extension set
 * the tab chip and status bar without sniffing the local process tree — required
 * when `command` is a remote attach (`ssh … tmux attach`) with no agent binary
 * on this box (#2478).
 */
export declare function spawnUri(scheme: string, cwd: string, command: string[], direction?: SplitDirection, meta?: {
    agent?: string;
    sessionId?: string;
    title?: string;
}): string;
/** Build a backend bound to one editor variant. */
export declare function makeVscodiumAgentBackend(variant: EditorVariant): TerminalBackend;
/** Default backend: VSCodium (`codium` CLI, `vscodium://` scheme). */
export declare const vscodiumAgentBackend: TerminalBackend;
