/**
 * cli-program.ts — pure factory for the AILF Commander program.
 *
 * Splits the program construction out of cli.ts so the CLI is testable
 * in-process. cli.ts owns bootstrap side effects (dotenv loading,
 * retired-flag/env/cmd checks, AILF_LOG_LEVEL pre-scan, parseAsync); this
 * module owns command wiring.
 *
 * The W0078 M4 black-box harness imports `buildCliProgram()` directly so
 * tests can construct a fresh program, attach `exitOverride()`, capture
 * stdout/stderr, and parse a synthetic argv — all without spawning a
 * subprocess.
 *
 * @see packages/eval/src/__tests__/cli-harness/run-cli.ts
 */
import { Command } from "commander";
/**
 * Options for `buildCliProgram`.
 */
export interface BuildCliProgramOptions {
    /**
     * Path to the eval package root (the directory containing package.json).
     * Used to resolve the version string and as the root passed to the
     * `--explain` handler.
     */
    evalRoot: string;
}
/**
 * Construct the Commander program with every subcommand registered.
 *
 * Pure factory — no I/O beyond reading package.json for the version, no
 * `process.exit()`, no `process.argv` access. Tests can call this and
 * attach `program.exitOverride()` before parsing to capture exit codes
 * instead of terminating the process.
 *
 * Registration order determines group display order in `--help`. Commands
 * within a group appear in the order they're added.
 */
export declare function buildCliProgram(opts: BuildCliProgramOptions): Command;
