import React from 'react';
import type { TitleShape } from '../components/ui/styled-title.js';
import { CustomCommandExecutor } from '../custom-commands/executor.js';
import { CustomCommandLoader } from '../custom-commands/loader.js';
import type { Task } from '../tools/tasks/types.js';
import { ToolManager } from '../tools/tool-manager.js';
import type { CheckpointListItem } from '../types/checkpoint.js';
import type { CustomCommand } from '../types/commands.js';
import type { AIProviderConfig, TuneConfig } from '../types/config.js';
import { ApiUsageSnapshot, ContextSource, DevelopmentMode, LLMClient, LSPConnectionStatus, MCPConnectionStatus, Message, ToolCall } from '../types/core.js';
import type { UpdateInfo } from '../types/index.js';
import type { Tokenizer } from '../types/tokenization.js';
import type { ThemePreset } from '../types/ui.js';
import { BoundedMap } from '../utils/bounded-map.js';
import type { PendingQuestion } from '../utils/question-queue.js';
export type ActiveMode = 'model' | 'modelDatabase' | 'configWizard' | 'mcpWizard' | 'explorer' | 'ideSelection' | 'checkpointLoad' | 'sessionSelector' | 'tune' | null;
export declare function useAppState(initialDevelopmentMode?: DevelopmentMode): {
    client: LLMClient | null;
    messages: Message[];
    messageTokenCache: BoundedMap<string, number>;
    currentModel: string;
    currentProvider: string;
    currentProviderConfig: AIProviderConfig | null;
    currentTheme: ThemePreset;
    currentTitleShape: TitleShape;
    reasoningExpanded: boolean;
    reasoningExpandedRef: React.RefObject<boolean>;
    toolManager: ToolManager | null;
    customCommandLoader: CustomCommandLoader | null;
    customCommandExecutor: CustomCommandExecutor | null;
    customCommandCache: Map<string, CustomCommand>;
    startChat: boolean;
    mcpInitialized: boolean;
    updateInfo: UpdateInfo | null;
    mcpServersStatus: MCPConnectionStatus[];
    lspServersStatus: LSPConnectionStatus[];
    preferencesLoaded: boolean;
    customCommandsCount: number;
    isCancelling: boolean;
    isConversationComplete: boolean;
    isSettingsMode: boolean;
    abortController: AbortController | null;
    activeMode: ActiveMode;
    setActiveMode: React.Dispatch<React.SetStateAction<ActiveMode>>;
    isExplorerMode: boolean;
    isIdeSelectionMode: boolean;
    isVscodeEnabled: boolean;
    checkpointLoadData: {
        checkpoints: CheckpointListItem[];
        currentMessageCount: number;
    } | null;
    showAllSessions: boolean;
    currentSessionId: string | null;
    sessionName: string;
    isToolConfirmationMode: boolean;
    isToolExecuting: boolean;
    subagentsReady: boolean;
    compactToolDisplay: boolean;
    compactToolDisplayRef: React.RefObject<boolean>;
    compactToolCounts: Record<string, number> | null;
    compactToolCountsRef: React.RefObject<Record<string, number>>;
    liveTaskList: Task[] | null;
    isQuestionMode: boolean;
    pendingQuestion: PendingQuestion | null;
    developmentMode: DevelopmentMode;
    developmentModeRef: React.RefObject<DevelopmentMode>;
    tune: TuneConfig;
    contextPercentUsed: number | null;
    contextLimit: number | null;
    contextSource: ContextSource | null;
    lastApiUsage: ApiUsageSnapshot | null;
    pendingToolCalls: ToolCall[];
    currentToolIndex: number;
    chatComponents: React.ReactNode[];
    tokenizer: Tokenizer;
    setClient: React.Dispatch<React.SetStateAction<LLMClient | null>>;
    setMessages: React.Dispatch<React.SetStateAction<Message[]>>;
    setMessageTokenCache: React.Dispatch<React.SetStateAction<BoundedMap<string, number>>>;
    setCurrentModel: React.Dispatch<React.SetStateAction<string>>;
    setCurrentProvider: React.Dispatch<React.SetStateAction<string>>;
    setCurrentProviderConfig: React.Dispatch<React.SetStateAction<AIProviderConfig | null>>;
    setCurrentTheme: React.Dispatch<React.SetStateAction<ThemePreset>>;
    setCurrentTitleShape: React.Dispatch<React.SetStateAction<TitleShape>>;
    setReasoningExpanded: React.Dispatch<React.SetStateAction<boolean>>;
    setToolManager: React.Dispatch<React.SetStateAction<ToolManager | null>>;
    setCustomCommandLoader: React.Dispatch<React.SetStateAction<CustomCommandLoader | null>>;
    setCustomCommandExecutor: React.Dispatch<React.SetStateAction<CustomCommandExecutor | null>>;
    setCustomCommandCache: React.Dispatch<React.SetStateAction<Map<string, CustomCommand>>>;
    setStartChat: React.Dispatch<React.SetStateAction<boolean>>;
    setMcpInitialized: React.Dispatch<React.SetStateAction<boolean>>;
    setUpdateInfo: React.Dispatch<React.SetStateAction<UpdateInfo | null>>;
    setMcpServersStatus: React.Dispatch<React.SetStateAction<MCPConnectionStatus[]>>;
    setLspServersStatus: React.Dispatch<React.SetStateAction<LSPConnectionStatus[]>>;
    setPreferencesLoaded: React.Dispatch<React.SetStateAction<boolean>>;
    setCustomCommandsCount: React.Dispatch<React.SetStateAction<number>>;
    setIsCancelling: React.Dispatch<React.SetStateAction<boolean>>;
    setIsConversationComplete: React.Dispatch<React.SetStateAction<boolean>>;
    setIsSettingsMode: React.Dispatch<React.SetStateAction<boolean>>;
    setAbortController: React.Dispatch<React.SetStateAction<AbortController | null>>;
    setIsVscodeEnabled: React.Dispatch<React.SetStateAction<boolean>>;
    setCheckpointLoadData: React.Dispatch<React.SetStateAction<{
        checkpoints: CheckpointListItem[];
        currentMessageCount: number;
    } | null>>;
    setShowAllSessions: React.Dispatch<React.SetStateAction<boolean>>;
    setCurrentSessionId: React.Dispatch<React.SetStateAction<string | null>>;
    setSessionName: React.Dispatch<React.SetStateAction<string>>;
    setIsToolConfirmationMode: React.Dispatch<React.SetStateAction<boolean>>;
    setIsToolExecuting: React.Dispatch<React.SetStateAction<boolean>>;
    setSubagentsReady: React.Dispatch<React.SetStateAction<boolean>>;
    setCompactToolDisplay: React.Dispatch<React.SetStateAction<boolean>>;
    setCompactToolCounts: React.Dispatch<React.SetStateAction<Record<string, number> | null>>;
    setLiveTaskList: React.Dispatch<React.SetStateAction<Task[] | null>>;
    setIsQuestionMode: React.Dispatch<React.SetStateAction<boolean>>;
    setPendingQuestion: React.Dispatch<React.SetStateAction<PendingQuestion | null>>;
    setDevelopmentMode: React.Dispatch<React.SetStateAction<DevelopmentMode>>;
    setTune: React.Dispatch<React.SetStateAction<TuneConfig>>;
    setContextPercentUsed: React.Dispatch<React.SetStateAction<number | null>>;
    setContextLimit: React.Dispatch<React.SetStateAction<number | null>>;
    setContextSource: React.Dispatch<React.SetStateAction<ContextSource | null>>;
    setLastApiUsage: React.Dispatch<React.SetStateAction<ApiUsageSnapshot | null>>;
    setPendingToolCalls: React.Dispatch<React.SetStateAction<ToolCall[]>>;
    setCurrentToolIndex: React.Dispatch<React.SetStateAction<number>>;
    setChatComponents: React.Dispatch<React.SetStateAction<React.ReactNode[]>>;
    liveComponent: React.ReactNode;
    setLiveComponent: React.Dispatch<React.SetStateAction<React.ReactNode>>;
    addToChatQueue: (component: React.ReactNode) => void;
    getMessageTokens: (message: Message) => number;
    updateMessages: (newMessages: Message[]) => void;
};
//# sourceMappingURL=useAppState.d.ts.map