/**
 * Init command — scaffolds a new flow-weaver project interactively.
 * Supports persona-aware onboarding for nocode, low-code, vibe-coder, and expert users.
 */
import type { ToolId } from './mcp-setup.js';
import type { TModuleFormat } from '../../ast/types.js';
import type { PersonaId } from './init-personas.js';
export interface InitOptions {
    name?: string;
    template?: string;
    format?: TModuleFormat;
    yes?: boolean;
    install?: boolean;
    git?: boolean;
    force?: boolean;
    json?: boolean;
    preset?: string;
    useCase?: string;
    mcp?: boolean;
    agent?: boolean;
    withWeaver?: boolean;
    weaver?: boolean;
}
export interface InitConfig {
    projectName: string;
    targetDir: string;
    template: string;
    format: TModuleFormat;
    install: boolean;
    git: boolean;
    force: boolean;
    persona: PersonaId;
    useCase?: string;
    /** Free-text description when user picked "Something else" */
    useCaseDescription?: string;
    mcp: boolean;
    installWeaver: boolean;
}
export interface InitReport {
    projectDir: string;
    filesCreated: string[];
    filesSkipped: string[];
    template: string;
    format: TModuleFormat;
    persona: PersonaId;
    installResult?: {
        success: boolean;
        error?: string;
    };
    gitResult?: {
        success: boolean;
        error?: string;
    };
    mcpConfigured?: string[];
    agentLaunched?: boolean;
}
export declare function validateProjectName(name: string): string | true;
export declare function toWorkflowName(projectName: string): string;
export declare function isNonInteractive(): boolean;
export declare function resolveInitConfig(dirArg: string | undefined, options: InitOptions): Promise<InitConfig>;
export declare function generateProjectFiles(projectName: string, template: string, format?: TModuleFormat, persona?: PersonaId, installWeaver?: boolean): Record<string, string>;
export declare function scaffoldProject(targetDir: string, files: Record<string, string>, options: {
    force: boolean;
}): {
    filesCreated: string[];
    filesSkipped: string[];
};
export declare function runNpmInstall(targetDir: string): {
    success: boolean;
    error?: string;
};
export declare function runGitInit(targetDir: string): {
    success: boolean;
    error?: string;
};
interface AgentHandoffOptions {
    projectName: string;
    persona: PersonaId;
    template: string;
    targetDir: string;
    cliTools: ToolId[];
    guiTools: ToolId[];
    filesCreated: string[];
    useCaseDescription?: string;
}
/**
 * After init + MCP setup, offer to launch a CLI agent or generate a prompt for GUI editors.
 * Returns true if a CLI agent was spawned (init should exit and let the agent take over).
 */
export declare function handleAgentHandoff(opts: AgentHandoffOptions): Promise<boolean>;
export declare function initCommand(dirArg: string | undefined, options: InitOptions): Promise<void>;
export {};
//# sourceMappingURL=init.d.ts.map