import { isCodingAgentLaunch } from "#cli/agent-detection.js";
import { detectInvokingPackageManager, detectPackageManager } from "#setup/package-manager.js";
import { runPackageManagerInstall, spawnPackageManager } from "#setup/primitives/index.js";
import { addAgentToProject } from "#setup/scaffold/create/add-to-project.js";
import { ensureChannel, scaffoldBaseProject } from "#setup/scaffold/index.js";
import { tryInitializeGit } from "./init-git.js";
import { selectInitHandoff, spawnCodingAgentRepl } from "./init-repl.js";
export interface InitCliLogger {
    error(message: string): void;
    log(message: string): void;
}
export interface InitCommandOptions {
    /** Add the Web Chat channel (a Next.js app). Set by `--channel-web-nextjs`. */
    channelWebNextjs?: boolean;
}
export interface InitCommandDependencies {
    addAgentToProject: typeof addAgentToProject;
    detectInvokingPackageManager: typeof detectInvokingPackageManager;
    detectPackageManager: typeof detectPackageManager;
    ensureChannel: typeof ensureChannel;
    isCodingAgentLaunch: typeof isCodingAgentLaunch;
    now: () => number;
    runPackageManagerInstall: typeof runPackageManagerInstall;
    scaffoldBaseProject: typeof scaffoldBaseProject;
    selectInitHandoff: typeof selectInitHandoff;
    spawnCodingAgentRepl: typeof spawnCodingAgentRepl;
    spawnPackageManager: typeof spawnPackageManager;
    tryInitializeGit: typeof tryInitializeGit;
}
export declare const EVE_INIT_PACKAGE_SPEC_ENV = "EVE_INIT_PACKAGE_SPEC";
/**
 * Creates a new eve agent (`target` is a project name), or adds one to an
 * existing project (`target` is a directory), without prompts or external
 * provisioning.
 *
 * Runs launched by a coding agent get the dev command printed instead of
 * spawned after scaffolding, since the dev TUI would wedge the launching agent.
 * A coding agent that omits the target entirely gets the setup guide printed and
 * nothing scaffolded, since a bare `eve init` means it has not yet chosen what to
 * build.
 */
export declare function runInitCommand(logger: InitCliLogger, parentDirectory: string, target: string | undefined, options: InitCommandOptions, dependencies?: InitCommandDependencies): Promise<void>;
