import { type WizardIO } from './install/WizardIO';
import type { WizardContext, WizardResultV2, InstallProfileV2 } from './install/types';
export interface InstallWizardV2Options {
    /** Project root. Defaults to process.cwd(). */
    root?: string;
    /** Inject a custom IO (eg CannedIO for tests). */
    io?: WizardIO;
    /**
     * Pre-select products so the product-selection phase is skipped.
     * Used by `openlife install cli` / `openlife install agent`.
     */
    initialProducts?: InstallProfileV2[];
}
/**
 * The new install wizard. Returns a WizardResultV2 — `ok: true` if all phases
 * completed without abort, plus the fully-mutated context so callers can
 * inspect what happened.
 *
 * Note: the wizard itself does NOT call InstallFlow — the per-product confirm
 * phases (16-core-confirm, 28-agent-confirm) do that inline so each install
 * happens after its own preview and the user has a chance to abort mid-flow.
 */
export declare class InstallWizardV2 {
    private ownsIO;
    private io;
    private context;
    constructor(opts?: InstallWizardV2Options);
    run(): Promise<WizardResultV2>;
}
export declare function buildEmptyContext(root: string, initialProducts?: InstallProfileV2[]): WizardContext;
export { CannedIO, ReadlineWizardIO } from './install/WizardIO';
export type { WizardIO } from './install/WizardIO';
export type { WizardContext, WizardResultV2, InstallMode } from './install/types';
