import type { Command } from 'commander';
interface ForkOptions {
    name?: string;
    device?: string;
    /** Open the sibling in a real terminal tab instead of in-place; optional backend. */
    terminal?: string | boolean;
}
/**
 * The two process boundaries fork crosses — a preview subprocess (cross-fleet
 * resolve + digest) and the sibling launch. Injectable so the resolve→recap→run
 * argv logic is unit-tested without spawning real CLIs.
 */
export interface ForkDeps {
    /** Run `agents sessions preview <sub…>` and capture stdout + exit status. */
    runPreview: (sub: string[]) => {
        status: number | null;
        stdout: string;
    };
    /** Launch `agents <sub…>` inheriting stdio; returns its exit status. */
    launch: (sub: string[]) => {
        status: number | null;
    };
}
/**
 * Resolve the source cross-fleet, build a recap from its preview digest, and
 * launch a same-harness sibling seeded with that recap. Shared by
 * `agents sessions fork` and the `agents fork` alias.
 */
export declare function runFork(sessionArg: string, options: ForkOptions, deps?: ForkDeps): Promise<void>;
/**
 * Register `agents sessions fork <session>` — the canonical surface (fork is a
 * session operation, so it lives under the `sessions` group).
 */
export declare function registerSessionsForkCommand(sessionsCmd: Command): void;
/**
 * Register the hidden top-level `agents fork` alias. Kept working for back-compat
 * and muscle memory; the canonical, discoverable surface is `agents sessions fork`.
 */
export declare function registerForkCommand(program: Command): void;
export {};
