/**
 * Shared state and constructor wiring for interactive mode.
 * Responsibility-specific behavior is installed by sibling modules.
 */
import "./interactive-mode-surface.ts";
import { type AssistantMessage, type AutocompleteProvider, type EditorComponent, type Component, type LoaderIndicatorOptions, type AgentSession, type AgentSessionRuntime, type AutocompleteProviderFactory, type EditorFactory, type HostCustomUiStateListener, Container, Loader, Spacer, Text, TUI, FooterDataProvider, KeybindingsManager, AssistantMessageComponent, BashExecutionComponent, CountdownTimer, CustomEditor, ExtensionEditorComponent, ExtensionInputComponent, ExtensionSelectorComponent, FooterComponent, UsageMeterComponent, ToolExecutionComponent, InteractiveThemeController } from "./interactive-mode-deps.ts";
import type { CompactionQueuedMessage, InteractiveModeOptions } from "./interactive-mode-types.ts";
import type { EarlyInputSnapshot } from "../../main-early-input.ts";
export declare function seedStartupInput(pendingUserInputs: string[], editor: {
    setText(text: string): void;
}, startupInput: EarlyInputSnapshot | undefined, startupReplayInputs?: string[], setStartupDraftText?: (text: string) => void, setStartupReplayActiveInput?: (text: string) => void): void;
export declare class InteractiveModeBase {
    runtimeHost: AgentSessionRuntime;
    ui: TUI;
    chatContainer: Container;
    startupNoticesContainer: Container;
    pendingMessagesContainer: Container;
    statusContainer: Container;
    defaultEditor: CustomEditor;
    editor: EditorComponent;
    editorComponentFactory: EditorFactory | undefined;
    autocompleteProvider: AutocompleteProvider | undefined;
    autocompleteProviderWrappers: AutocompleteProviderFactory[];
    fdPath: string | undefined;
    editorContainer: Container;
    footer: FooterComponent;
    usageMeter: UsageMeterComponent;
    footerDataProvider: FooterDataProvider;
    keybindings: KeybindingsManager;
    version: string;
    isInitialized: boolean;
    copilotCatalogApplied: boolean;
    copilotCatalogInFlight?: Promise<void>;
    onInputCallback?: (text: string) => void;
    pendingUserInputs: string[];
    startupReplayInputs: string[];
    startupReplayActiveInput: string | undefined;
    startupDraftText: string | undefined;
    startupCookedInputRecovered: boolean;
    deferredRenderedUserInputs: string[];
    deferredRenderedUserInputComponents: Map<string, Component[][]>;
    loadingAnimation: Loader | undefined;
    workingMessage: string | undefined;
    workingVisible: boolean;
    workingIndicatorOptions: LoaderIndicatorOptions | undefined;
    readonly defaultWorkingMessage = "Working...";
    readonly defaultHiddenThinkingLabel = "Thinking...";
    hiddenThinkingLabel: string;
    lastSigintTime: number;
    lastEscapeTime: number;
    changelogMarkdown: string | undefined;
    startupNoticesShown: boolean;
    startupNoticesPrepared: boolean;
    anthropicSubscriptionWarningShown: boolean;
    firstRunNoticeVisible: boolean;
    hadLastChangelogVersionAtStartup: boolean;
    firstRunOnboardingNoticeComponents: Component[];
    autoTrustOnReloadCwd: string | undefined;
    lastStatusSpacer: Spacer | undefined;
    lastStatusText: Text | undefined;
    streamingComponent: AssistantMessageComponent | undefined;
    streamingMessage: AssistantMessage | undefined;
    pendingTools: Map<string, ToolExecutionComponent>;
    toolOutputExpanded: boolean;
    hideThinkingBlock: boolean;
    outputPad: 0 | 1;
    skillCommands: Map<string, string>;
    unsubscribe?: () => void;
    signalCleanupHandlers: Array<() => void>;
    isBashMode: boolean;
    bashComponent: BashExecutionComponent | undefined;
    pendingBashComponents: BashExecutionComponent[];
    autoCompactionLoader: Loader | undefined;
    autoCompactionEscapeHandler?: () => void;
    retryLoader: Loader | undefined;
    fallbackLoader: Loader | undefined;
    retryCountdown: CountdownTimer | undefined;
    retryEscapeHandler?: () => void;
    compactionQueuedMessages: CompactionQueuedMessage[];
    deferredStartupPending: boolean;
    deferredStartupPromise: Promise<void> | undefined;
    inputHandlerReadyRecorded: boolean;
    firstSubmitRecorded: boolean;
    deferLoadedResourcesDisclosureUntilAgentEnd: boolean;
    pendingLoadedResourcesDisclosure: boolean;
    shutdownRequested: boolean;
    extensionSelector: ExtensionSelectorComponent | undefined;
    extensionInput: ExtensionInputComponent | undefined;
    extensionEditor: ExtensionEditorComponent | undefined;
    extensionTerminalInputUnsubscribers: Set<() => void>;
    blockingInlineCustomUiDepth: number;
    deferredInlineCustomUiFocusDepth: number;
    pendingInlineCustomUiFocus: Component | undefined;
    hostCustomUiStateListeners: Set<HostCustomUiStateListener>;
    themeController: InteractiveThemeController;
    extensionWidgetsAbove: Map<string, Component & {
        dispose?(): void;
    }>;
    extensionWidgetsBelow: Map<string, Component & {
        dispose?(): void;
    }>;
    widgetContainerAbove: Container;
    widgetContainerBelow: Container;
    customFooter: (Component & {
        dispose?(): void;
    }) | undefined;
    headerContainer: Container;
    builtInHeader: Component | undefined;
    customHeader: (Component & {
        dispose?(): void;
    }) | undefined;
    get session(): AgentSession;
    get agent(): import("@earendil-works/pi-agent-core").Agent;
    get sessionManager(): import("./interactive-mode-deps.ts").SessionManager;
    get settingsManager(): import("../../index.ts").SettingsManager;
    options: InteractiveModeOptions;
    constructor(runtimeHost: AgentSessionRuntime, options?: InteractiveModeOptions);
    static readonly MAX_WIDGET_LINES = 10;
    /**
     * Gracefully shutdown the agent.
     * Stops the TUI before emitting shutdown events so extension UI cleanup cannot
     * repaint the final frame while the process is exiting.
     */
    isShuttingDown: boolean;
}
//# sourceMappingURL=interactive-mode-base.d.ts.map