import { VoxketClient } from '../core/client';
import { ChatMessage } from '../types/core';
import { InteractiveUIState } from '../types/rpc';
import { ToolExecutionData } from '../types/tools';
import * as React from 'react';
export type { ToolExecutionData };
export declare function useChatMessages(client: VoxketClient): {
    messages: ChatMessage[];
    setMessages: React.Dispatch<React.SetStateAction<ChatMessage[]>>;
    isLoading: boolean;
    setIsLoading: React.Dispatch<React.SetStateAction<boolean>>;
    streamingMessages: Set<string>;
    setStreamingMessages: React.Dispatch<React.SetStateAction<Set<string>>>;
    pendingMessages: ChatMessage[];
    setPendingMessages: React.Dispatch<React.SetStateAction<ChatMessage[]>>;
};
export declare function useAgentState(client: VoxketClient): {
    agentState: "idle" | "thinking" | "speaking" | "tool_execution";
    setAgentState: React.Dispatch<React.SetStateAction<"idle" | "thinking" | "speaking" | "tool_execution">>;
    toolExecutions: ToolExecutionData[];
    setToolExecutions: React.Dispatch<React.SetStateAction<ToolExecutionData[]>>;
};
export declare function useInteractionState(client: VoxketClient): {
    currentInteraction: InteractiveUIState | null;
    setCurrentInteraction: React.Dispatch<React.SetStateAction<InteractiveUIState | null>>;
};
export declare function useScrollBehavior(): {
    messagesContainerRef: React.RefObject<HTMLDivElement>;
    shouldAutoScroll: boolean;
    setShouldAutoScroll: React.Dispatch<React.SetStateAction<boolean>>;
    scrollToBottom: (immediate?: boolean) => void;
    smartScrollToBottom: (immediate?: boolean) => void;
    handleScroll: () => void;
};
export declare function useMobileDetection(): {
    isMobile: boolean;
    isFullscreen: boolean;
    setIsFullscreen: React.Dispatch<React.SetStateAction<boolean>>;
};
