/**
 * First-run setup command.
 *
 * Registers the `agents setup` command which clones the system repo into
 * ~/.agents/.system/ and installs agent CLIs with resource syncing.
 */
import type { Command } from 'commander';
interface RunSetupOptions {
    force?: boolean;
    suppressFooter?: boolean;
    systemRepo?: boolean;
    runHub?: () => Promise<void>;
    startDaemonFn?: () => {
        pid: number | null;
        method: string;
    };
    isDaemonEnabledFn?: () => boolean;
}
/** First-run setup. Clones ~/.agents/.system/ from the system repo if needed. */
export declare function runSetup(program: Command, options?: RunSetupOptions): Promise<void>;
/**
 * Ensure the system repo exists before running a command that needs it.
 * If ~/.agents/.system/ is not a git repo AND we're in an interactive TTY,
 * prompt the user to run setup now. In non-interactive mode, print a clear
 * error and exit.
 */
export declare function ensureInitialized(program: Command): Promise<void>;
/**
 * Interactive "what else do you want to set up?" menu shown after the bare
 * `agents setup` finishes on a TTY. Each pick runs that capability's guided
 * wizard. Never throws — a cancel or an optional wizard's error just skips the
 * rest and lets core setup complete.
 */
export type SetupPhase = 'browser' | 'computer' | 'share' | 'secrets' | 'accounts' | 'fleet' | 'watchdog' | 'preferences';
export type SetupStatusState = 'ready' | 'missing' | 'n/a';
export interface SetupStatusRow {
    phase: 'core' | SetupPhase;
    state: SetupStatusState;
    detail: string;
}
export declare function getSetupStatus(): Promise<SetupStatusRow[]>;
export declare function renderSetupStatus(rows: SetupStatusRow[]): void;
export declare function runSetupHub(deps?: {
    interactive?: boolean;
    selectPhase?: (rows: SetupStatusRow[]) => Promise<SetupPhase | 'exit'>;
    runPhase?: (phase: SetupPhase) => Promise<void>;
}): Promise<void>;
/** Register the `agents setup` command and its capability subcommands. */
export declare function registerSetupCommand(program: Command): void;
export {};
