/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type { ApprovalMode, AuthType, IdeContext, IdeInfo } from '@aetherai/aether-core'; import type { DOMElement } from 'ink'; import type { CommandContext, SlashCommand } from '../commands/types.js'; import type { TextBuffer } from '../components/shared/text-buffer.js'; import type { SessionStatsState } from '../contexts/SessionContext.js'; import type { aetherAuthState } from '../hooks/useAetherAuth.js'; import type { ArenaDialogType } from '../hooks/useArenaCommand.js'; import type { CodingPlanUpdateRequest } from '../hooks/useCodingPlanUpdates.js'; import type { UseHistoryManagerReturn } from '../hooks/useHistoryManager.js'; import type { RestartReason } from '../hooks/useIdeTrustListener.js'; import type { ExtensionUpdateState } from '../state/extensions.js'; import type { ConfirmationRequest, HistoryItem, HistoryItemBtw, HistoryItemWithoutId, LoopDetectionConfirmationRequest, PluginChoiceRequest, SettingInputRequest, ShellConfirmationRequest, StreamingState, ThoughtSummary } from '../types.js'; import type { UpdateObject } from '../utils/updateCheck.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; aetherAuthState: aetherAuthState; editorError: string | null; isEditorDialogOpen: boolean; debugMessage: string; quittingMessages: HistoryItem[] | null; isSettingsDialogOpen: boolean; isModelDialogOpen: boolean; isFastModelMode: boolean; isTrustDialogOpen: boolean; activeArenaDialog: ArenaDialogType; isPermissionsDialogOpen: boolean; isApprovalModeDialogOpen: boolean; isResumeDialogOpen: 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[]; btwItem: HistoryItemBtw | null; setBtwItem: (item: HistoryItemBtw | null) => void; cancelBtw: () => void; nightly: boolean; branchName: string | undefined; sessionStats: SessionStatsState; terminalWidth: number; terminalHeight: number; mainControlsRef: React.MutableRefObject; currentIDE: IdeInfo | null; updateInfo: UpdateObject | null; showIdeRestartPrompt: boolean; ideTrustRestartReason: RestartReason; isRestarting: boolean; extensionsUpdateState: Map; 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; promptSuggestion: string | null; /** Dismiss prompt suggestion (clears state, aborts speculation) */ dismissPromptSuggestion: () => void; } export declare const UIStateContext: import("react").Context; export declare const useUIState: () => UIState;