/**
 * CLI surface for `nanocoder daemon <subcommand>`. Each handler returns a
 * `{exitCode, output}` pair so the wiring in `cli.tsx` (step 21) can fan
 * those to the right stdout/stderr streams without each handler needing
 * to know.
 *
 * `start` is special: it must spawn the daemon entry point detached from
 * the parent terminal. The default uses `child_process.spawn`; tests
 * inject a stub launcher.
 *
 * See `agents/2026-05-20-skills-unification-plan.md` step 19.
 */
import { type ChildProcess } from 'node:child_process';
export interface DaemonCliResult {
    exitCode: 0 | 1;
    output: string;
}
export type DaemonCliCommand = 'start' | 'stop' | 'status' | 'logs' | 'install' | 'uninstall';
export interface DaemonCliOptions {
    projectRoot: string;
    /**
     * Launch the detached daemon process. Tests pass a stub that records the
     * arguments without actually forking. Production uses
     * `defaultLaunchDaemon`.
     */
    launchDaemon?: (projectRoot: string) => ChildProcess | null;
}
export declare function runDaemonCli(command: DaemonCliCommand, opts: DaemonCliOptions): Promise<DaemonCliResult>;
//# sourceMappingURL=cli.d.ts.map