import { type StreamFn, type StreamFnExtraOptions } from './use-sse';
import type { Message } from '../types/message.types';
export type { Message } from '../types/message.types';
export type { StreamFnExtraOptions } from './use-sse';
interface UseChatOptions {
    useMock?: boolean;
    debugMode?: boolean;
    assistantName?: string;
    assistantAvatar?: string;
    /** Custom stream function — bypasses mock/SSE service when provided */
    streamFn?: StreamFn;
    /** Initial messages (e.g., restored from localStorage). Evaluated once on mount. */
    initialMessages?: Message[];
    /** Called whenever the messages array changes — use for persistence. */
    onMessagesChange?: (messages: Message[]) => void;
}
export declare function useChat({ useMock, debugMode, assistantName, assistantAvatar, streamFn, initialMessages, onMessagesChange, }?: UseChatOptions): {
    messages: Message[];
    isTyping: boolean;
    isStreaming: boolean;
    error: string | null;
    sendMessage: (text: string, extra?: StreamFnExtraOptions, options?: {
        hidden?: boolean;
    }) => Promise<void>;
    stopMessage: () => void;
    handleQuickAction: (actionText: string) => void;
    clearMessages: () => void;
    hasMessages: boolean;
};
//# sourceMappingURL=use-chat.d.ts.map