/**
 * InkUI — Ink-backed implementation of WizardUI.
 *
 * Translates business logic calls into store setter calls.
 * No direct session mutation. No imperative screen transitions.
 * The router derives the active screen from session state.
 */
import type { WizardUI, SpinnerHandle, EventPlanDecision } from '../wizard-ui.js';
import type { WizardStore } from './store.js';
import type { RetryState, PostAgentStep } from '../../lib/wizard-session.js';
export declare class InkUI implements WizardUI {
    private store;
    constructor(store: WizardStore);
    intro(message: string): void;
    outro(message: string): void;
    setCredentials(credentials: {
        accessToken: string;
        projectApiKey: string;
        host: string;
        appId: number;
        orgId?: string | null;
        orgName?: string | null;
        projectId?: string | null;
        projectName?: string | null;
        envName?: string | null;
    }): void;
    setDetectedFramework(label: string): void;
    onEnterScreen(screen: string, fn: () => void): void;
    setLoginUrl(url: string | null): void;
    setRegion(region: string): void;
    setProjectHasData(value: boolean): void;
    showServiceStatus(data: {
        description: string;
        statusPageUrl: string;
    }): void;
    setRetryState(state: RetryState | null): void;
    startRun(): void;
    setRunError(error: Error): Promise<boolean>;
    setOutroData(data: import('../../lib/wizard-session.js').OutroData): void;
    cancel(message: string, options?: {
        docsUrl?: string;
    }): Promise<void>;
    log: {
        info: (message: string) => void;
        warn: (message: string) => void;
        error: (message: string) => void;
        success: (message: string) => void;
        step: (message: string) => void;
    };
    note(message: string): void;
    spinner(): SpinnerHandle;
    seedPostAgentSteps(steps: PostAgentStep[]): void;
    setPostAgentStep(id: string, patch: {
        status: PostAgentStep['status'];
        reason?: string;
    }): void;
    pushStatus(message: string): void;
    heartbeat(_data: {
        statuses: string[];
        elapsedMs: number;
        attempt?: number;
    }): void;
    promptConfirm(message: string): Promise<boolean>;
    promptChoice(message: string, options: string[]): Promise<string>;
    promptEventPlan(events: Array<{
        name: string;
        description: string;
    }>): Promise<EventPlanDecision>;
    syncTodos(todos: Array<{
        content: string;
        status: string;
        activeForm?: string;
    }>): void;
    applyJourneyTransition(stepId: import('../../lib/journey-state.js').JourneyStepId, status: import('../../lib/journey-state.js').JourneyStatus): void;
    recordFileChangePlanned(data: {
        path: string;
        operation: 'create' | 'modify' | 'delete';
    }): void;
    recordFileChangeApplied(data: {
        path: string;
        operation: 'create' | 'modify' | 'delete';
        bytes?: number;
    }): void;
    setEventPlan(events: Array<{
        name: string;
        description: string;
    }>): void;
    setEventIngestionDetected(_eventNames: string[]): void;
    setDashboardUrl(url: string): void;
}
