/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import React from 'react';
import type { DOMElement } from 'ink';
import type { TextBuffer } from '../components/shared/text-buffer.js';
import type { HistoryItem, HistoryItemWithoutId, ConsoleMessageItem, StreamingState, ConfirmationRequest } from '../types.js';
import type { IdeContext, IModel, ApprovalMode, AnyDeclarativeTool, ThoughtSummary, IdeInfo, Config } from '@vybestack/llxprt-code-core';
import type { Extension } from '../../config/extension.js';
import type { SlashCommand, CommandContext } from '../commands/types.js';
import type { ShellConfirmationRequest } from '../components/ShellConfirmationDialog.js';
import type { LoadedSettings } from '../../config/settings.js';
/**
 * UI State shape for the AppContainer architecture.
 * This consolidates all UI state that was previously scattered across
 * the monolithic App.tsx component.
 */
export interface UIState {
    config: Config;
    settings: LoadedSettings;
    terminalWidth: number;
    terminalHeight: number;
    mainAreaWidth: number;
    inputWidth: number;
    suggestionsWidth: number;
    history: HistoryItem[];
    pendingHistoryItems: HistoryItemWithoutId[];
    streamingState: StreamingState;
    thought: ThoughtSummary | null;
    buffer: TextBuffer;
    shellModeActive: boolean;
    isThemeDialogOpen: boolean;
    isSettingsDialogOpen: boolean;
    isAuthDialogOpen: boolean;
    isAuthenticating: boolean;
    isEditorDialogOpen: boolean;
    isProviderDialogOpen: boolean;
    isProviderModelDialogOpen: boolean;
    isLoadProfileDialogOpen: boolean;
    isToolsDialogOpen: boolean;
    isFolderTrustDialogOpen: boolean;
    showWorkspaceMigrationDialog: boolean;
    showPrivacyNotice: boolean;
    isOAuthCodeDialogOpen: boolean;
    isPermissionsDialogOpen: boolean;
    isLoggingDialogOpen: boolean;
    providerOptions: string[];
    selectedProvider: string;
    providerModels: IModel[];
    currentModel: string;
    profiles: string[];
    toolsDialogAction: 'enable' | 'disable';
    toolsDialogTools: AnyDeclarativeTool[];
    toolsDialogDisabledTools: string[];
    workspaceExtensions: Extension[];
    loggingDialogData: {
        entries: unknown[];
    };
    shellConfirmationRequest: ShellConfirmationRequest | null;
    confirmationRequest: {
        prompt: React.ReactNode;
        onConfirm: (value: boolean) => void;
    } | null;
    confirmUpdateExtensionRequests: ConfirmationRequest[];
    ctrlCPressedOnce: boolean;
    ctrlDPressedOnce: boolean;
    showEscapePrompt: boolean;
    showIdeRestartPrompt: boolean;
    quittingMessages: HistoryItem[] | null;
    constrainHeight: boolean;
    showErrorDetails: boolean;
    showToolDescriptions: boolean;
    isNarrow: boolean;
    vimModeEnabled: boolean;
    vimMode: string | undefined;
    ideContextState: IdeContext | undefined;
    llxprtMdFileCount: number;
    branchName: string | undefined;
    errorCount: number;
    consoleMessages: ConsoleMessageItem[];
    elapsedTime: number;
    currentLoadingPhrase: string | undefined;
    showAutoAcceptIndicator: ApprovalMode;
    tokenMetrics: {
        tokensPerMinute: number;
        throttleWaitTimeMs: number;
        sessionTokenTotal: number;
    };
    historyTokenCount: number;
    initError: string | null;
    authError: string | null;
    themeError: string | null;
    editorError: string | null;
    isProcessing: boolean;
    isInputActive: boolean;
    isFocused: boolean;
    rootUiRef: React.RefObject<DOMElement | null>;
    pendingHistoryItemRef: React.RefObject<DOMElement | null>;
    slashCommands: readonly SlashCommand[];
    commandContext: CommandContext;
    shouldShowIdePrompt: boolean;
    currentIDE: IdeInfo | undefined;
    isRestarting: boolean;
    isTrustedFolder: boolean;
    inputHistory: string[];
    staticKey: number;
    debugMessage: string;
    showDebugProfiler: boolean;
    footerHeight: number;
    placeholder: string;
    availableTerminalHeight: number;
}
declare const UIStateContext: React.Context<UIState | undefined>;
export declare function UIStateProvider({ children, value, }: {
    children: React.ReactNode;
    value: UIState;
}): import("react/jsx-runtime").JSX.Element;
export declare function useUIState(): UIState;
export { UIStateContext };
