export declare const INIT_CANCEL: unique symbol;
export type InitLogTone = 'cyan' | 'yellow' | 'green' | 'red';
export type InitScreenTone = 'cyan' | 'blue' | 'green' | 'yellow';
export interface InitScreen {
    headerTitle?: string;
    title?: string;
    introLines?: string[];
    phaseLabel?: string;
    progress?: number;
    stepLabel?: string;
    stepSummary?: string;
    roadmapLine?: string;
    statusLine?: string;
    resumeLine?: string;
    completionLines?: string[];
    tone?: InitScreenTone;
}
export interface ConfirmPrompt {
    kind: 'confirm';
    message: string;
    initialValue?: boolean;
    resolve: (value: boolean | symbol) => void;
}
export interface TextPrompt {
    kind: 'text';
    message: string;
    placeholder?: string;
    validate?: (value: string | undefined) => string | undefined;
    error?: string;
    resolve: (value: string | symbol) => void;
}
export interface SelectPromptOption {
    label: string;
    hint?: string;
    value: string;
}
export interface SelectPrompt {
    kind: 'select';
    message: string;
    options: SelectPromptOption[];
    resolve: (value: string | symbol) => void;
}
export type PromptRequest = ConfirmPrompt | TextPrompt | SelectPrompt;
export interface InitLogEntry {
    message: string;
    tone: InitLogTone;
}
export interface InitVersionWarning {
    currentVersion: string;
    latestVersion: string;
    majorVersion: string;
}
export interface InitCodeDiffLine {
    lineNumber: number;
    text: string;
    kind: 'context' | 'add';
}
export interface InitCodeDiff {
    filePath: string;
    created: boolean;
    lines: InitCodeDiffLine[];
    note?: string;
}
export type InitEncryptionPhase = 'enabled' | 'pending-sync' | 'skipped' | 'failed';
export interface InitEncryptionSummary {
    phase: InitEncryptionPhase;
    title: string;
    lines: string[];
}
export type InitStreamingOutputStatus = 'running' | 'success' | 'error';
export interface InitStreamingOutput {
    title: string;
    command: string;
    lines: string[];
    status: InitStreamingOutputStatus;
    statusMessage?: string;
}
export interface InitRuntimeState {
    screen?: InitScreen;
    logs: InitLogEntry[];
    spinner?: string;
    prompt?: PromptRequest;
    versionWarning?: InitVersionWarning;
    codeDiff?: InitCodeDiff;
    encryptionSummary?: InitEncryptionSummary;
    streamingOutput?: InitStreamingOutput;
}
export declare function subscribe(listener: () => void): () => boolean;
export declare function getInitSnapshot(): InitRuntimeState;
export declare function ensureInitInkSession(): void;
export declare function stopInitInkSession(finalMessage?: {
    text: string;
    tone: 'green' | 'yellow';
}): void;
export declare function setInitScreen(screen: InitScreen): void;
export declare function pushInitLog(message: string, tone: InitLogTone): void;
export declare function clearInitLogs(): void;
export declare function setInitSpinner(message?: string): void;
export declare function requestInitConfirm(message: string, initialValue?: boolean): Promise<boolean | symbol>;
export declare function requestInitText(message: string, placeholder?: string, validate?: (value: string | undefined) => string | undefined): Promise<string | symbol>;
export declare function requestInitSelect(message: string, options: SelectPromptOption[]): Promise<string | symbol>;
export declare function setInitCodeDiff(diff?: InitCodeDiff): void;
export declare function setInitEncryptionSummary(summary?: InitEncryptionSummary): void;
export declare function startInitStreamingOutput(params: {
    title: string;
    command: string;
}): void;
export declare function appendInitStreamingLine(line: string): void;
export declare function updateInitStreamingStatus(status: InitStreamingOutputStatus, statusMessage?: string): void;
export declare function clearInitStreamingOutput(): void;
export declare function setInitVersionWarning(currentVersion: string, latestVersion: string, majorVersion: string): void;
