/** Every command name the CLI registers (drives the `CommandName` type + tests). */
declare const COMMANDS: readonly ["init", "add", "dev", "codegen", "build", "deploy", "prepare", "link", "cloudflare", "logs", "run", "insights", "profile", "reset", "migrate", "export", "import", "seed", "shards", "backup", "eval", "verify", "info", "doctor", "env", "analyze", "view", "docs", "registry", "rules", "mcp", "workflow"];
type CommandName = (typeof COMMANDS)[number];
declare const VERSION: string;
/**
 * Every registered command's name. A superset of {@link COMMANDS}, which is the
 * user-facing list driving "did you mean …?" suggestions — `advisor`,
 * `introspect`, `version` and `completion` are all reachable but deliberately
 * absent from it. Exported so the help-rendering guard covers what is actually
 * reachable, not what is advertised.
 */
declare const REGISTERED_COMMAND_NAMES: ReadonlyArray<string>;
interface RunCliOptions {
  argv?: ReadonlyArray<string>;
  cwd?: string;
  /**
   * Inject a console-like logger so callers (tests) can capture cerebro's
   * help / version / usage rendering AND the commands' own output. Omitted in
   * production, where cerebro uses its default stdout/stderr logger and the
   * commands log through the shared pail.
   */
  logger?: Console;
}
/**
 * Run the CLI and resolve to the process exit code. cerebro handles help,
 * version, usage, and unknown commands (the latter throws, caught here as 1).
 * `shouldExitProcess: false` keeps the process alive so callers/tests read the
 * captured exit code.
 */
declare const runCli: (options?: RunCliOptions) => Promise<number>;
export { COMMANDS, type CommandName, REGISTERED_COMMAND_NAMES, type RunCliOptions, VERSION, runCli };
