/**
 * @license
 * Copyright 2025 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import type { HistoryItem, HistoryItemBtw, ThoughtSummary, ShellConfirmationRequest, ConfirmationRequest, LoopDetectionConfirmationRequest, HistoryItemWithoutId, StreamingState, SettingInputRequest, PluginChoiceRequest } from '../types.js';
import type { TodoItem } from '../components/TodoDisplay.js';
import type { ExternalAuthState, QwenAuthState } from '../hooks/useQwenAuth.js';
import type { CommandContext, SlashCommand } from '../commands/types.js';
import type { TextBuffer } from '../components/shared/text-buffer.js';
import type { AuthType, IdeContext, ApprovalMode, IdeInfo, SessionListItem } from '@hoptrendy/hopcode-core';
import type { DOMElement } from 'ink';
import type { SessionStatsState } from '../contexts/SessionContext.js';
import type { ExtensionUpdateState } from '../state/extensions.js';
import type { UpdateObject } from '../utils/updateCheck.js';
import { type UseHistoryManagerReturn } from '../hooks/useHistoryManager.js';
import { type RestartReason } from '../hooks/useIdeTrustListener.js';
import { type CodingPlanUpdateRequest } from '../hooks/useCodingPlanUpdates.js';
import { type ArenaDialogType } from '../hooks/useArenaCommand.js';
export interface UIState {
    history: HistoryItem[];
    historyManager: UseHistoryManagerReturn;
    isThemeDialogOpen: boolean;
    themeError: string | null;
    isAuthenticating: boolean;
    isConfigInitialized: boolean;
    authError: string | null;
    isAuthDialogOpen: boolean;
    pendingAuthType: AuthType | undefined;
    externalAuthState: ExternalAuthState | null;
    qwenAuthState: QwenAuthState;
    editorError: string | null;
    isEditorDialogOpen: boolean;
    debugMessage: string;
    quittingMessages: HistoryItem[] | null;
    isSettingsDialogOpen: boolean;
    isMemoryDialogOpen: boolean;
    isModelDialogOpen: boolean;
    isFastModelMode: boolean;
    isManageModelsDialogOpen: boolean;
    isTrustDialogOpen: boolean;
    activeArenaDialog: ArenaDialogType;
    isPermissionsDialogOpen: boolean;
    isApprovalModeDialogOpen: boolean;
    isResumeDialogOpen: boolean;
    resumeMatchedSessions: SessionListItem[] | undefined;
    isDeleteDialogOpen: boolean;
    slashCommands: readonly SlashCommand[];
    pendingSlashCommandHistoryItems: HistoryItemWithoutId[];
    commandContext: CommandContext;
    shellConfirmationRequest: ShellConfirmationRequest | null;
    confirmationRequest: ConfirmationRequest | null;
    confirmUpdateExtensionRequests: ConfirmationRequest[];
    codingPlanUpdateRequest: CodingPlanUpdateRequest | undefined;
    settingInputRequests: SettingInputRequest[];
    pluginChoiceRequests: PluginChoiceRequest[];
    loopDetectionConfirmationRequest: LoopDetectionConfirmationRequest | null;
    geminiMdFileCount: number;
    streamingState: StreamingState;
    initError: string | null;
    pendingGeminiHistoryItems: HistoryItemWithoutId[];
    thought: ThoughtSummary | null;
    shellModeActive: boolean;
    userMessages: string[];
    buffer: TextBuffer;
    inputWidth: number;
    suggestionsWidth: number;
    isInputActive: boolean;
    shouldShowIdePrompt: boolean;
    shouldShowCommandMigrationNudge: boolean;
    commandMigrationTomlFiles: string[];
    isFolderTrustDialogOpen: boolean;
    isTrustedFolder: boolean | undefined;
    constrainHeight: boolean;
    ideContextState: IdeContext | undefined;
    showToolDescriptions: boolean;
    ctrlCPressedOnce: boolean;
    ctrlDPressedOnce: boolean;
    showEscapePrompt: boolean;
    elapsedTime: number;
    currentLoadingPhrase: string;
    historyRemountKey: number;
    messageQueue: string[];
    showAutoAcceptIndicator: ApprovalMode;
    currentModel: string;
    contextFileNames: string[];
    availableTerminalHeight: number | undefined;
    mainAreaWidth: number;
    staticAreaMaxItemHeight: number;
    staticExtraHeight: number;
    dialogsVisible: boolean;
    pendingHistoryItems: HistoryItemWithoutId[];
    stickyTodos: TodoItem[] | null;
    btwItem: HistoryItemBtw | null;
    setBtwItem: (item: HistoryItemBtw | null) => void;
    cancelBtw: () => void;
    nightly: boolean;
    branchName: string | undefined;
    sessionStats: SessionStatsState;
    terminalWidth: number;
    terminalHeight: number;
    mainControlsRef: React.MutableRefObject<DOMElement | null>;
    currentIDE: IdeInfo | null;
    updateInfo: UpdateObject | null;
    showIdeRestartPrompt: boolean;
    ideTrustRestartReason: RestartReason;
    isRestarting: boolean;
    extensionsUpdateState: Map<string, ExtensionUpdateState>;
    activePtyId: number | undefined;
    embeddedShellFocused: boolean;
    showWelcomeBackDialog: boolean;
    welcomeBackInfo: {
        hasHistory: boolean;
        lastPrompt?: string;
    } | null;
    welcomeBackChoice: 'continue' | 'restart' | null;
    isSubagentCreateDialogOpen: boolean;
    isAgentsManagerDialogOpen: boolean;
    isExtensionsManagerDialogOpen: boolean;
    isMcpDialogOpen: boolean;
    isHooksDialogOpen: boolean;
    isFeedbackDialogOpen: boolean;
    taskStartTokens: number;
    streamingResponseLengthRef: React.RefObject<number>;
    isReceivingContent: boolean;
    sessionName: string | null;
    setSessionName: (name: string | null) => void;
    promptSuggestion: string | null;
    /** Dismiss prompt suggestion (clears state, aborts speculation) */
    dismissPromptSuggestion: () => void;
    isRewindSelectorOpen: boolean;
    rewindEscPending: boolean;
}
export declare const UIStateContext: import("react").Context<UIState>;
export declare const useUIState: () => UIState;
