/**
 * Widget Types
 * Simplified appearance configuration
 */
import type { JsonValue, MessageRole, BaseMessage, ToolCallFunction, ToolCall, SystemMessage, UserMessage, DeveloperMessage, AssistantMessage, ToolMessage, AnyMessage, KbDocument, FollowUpSuggestion, ConversationMessage } from '@chatwidgetai/chat-components';
export type { JsonValue, MessageRole, BaseMessage, ToolCallFunction, ToolCall, SystemMessage, UserMessage, DeveloperMessage, AssistantMessage, ToolMessage, AnyMessage, KbDocument, FollowUpSuggestion, ConversationMessage, };
export type WidgetPosition = 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
export type WidgetSize = 'small' | 'medium' | 'large';
export type WelcomeBubbleFrequency = 'always' | 'session' | 'weekly' | 'monthly';
export type TriggerType = 'button' | 'pill-text' | 'input-bar';
export interface WidgetAppearance {
    primaryColor: string;
    position: WidgetPosition;
    size: WidgetSize;
    logo?: string;
    triggerType?: TriggerType;
    triggerText?: string;
    headerTitle: string;
    welcomeTitle?: string;
    welcomeMessage: string;
    placeholder: string;
    welcomeBubbleText?: string;
    welcomeBubbleFrequency?: WelcomeBubbleFrequency;
}
export interface WidgetSettings {
    autoOpen: boolean;
    autoOpenDelay?: number;
    persistConversation: boolean;
    showChatHistory?: boolean;
    showTimestamps: boolean;
    showTypingIndicator: boolean;
    showToolCalls?: boolean;
    enableFileUpload: boolean;
    enableFeedback: boolean;
    maxMessagesPerSession?: number;
    suggestedQuestions?: string[];
    enableFollowUpSuggestions?: boolean;
    showDataPolicy?: boolean;
}
export interface WidgetBehavior {
    agentic: boolean;
    fallbackMessage?: string;
}
export interface WidgetConfig {
    appearance: WidgetAppearance;
    settings: WidgetSettings;
    behavior: WidgetBehavior;
    knowledgeBases: string[];
    actions?: string[];
}
export interface FileAttachment {
    name: string;
    size: number;
    extension: string;
}
export type StreamEvent = {
    type: "content";
    content: string;
    timestamp: string;
} | {
    type: "tool_start";
    tool_name: string;
    tool_call_id: string;
    timestamp: string;
} | {
    type: "tool_end";
    tool_name: string;
    tool_call_id: string;
    timestamp: string;
    input?: Record<string, JsonValue>;
    action_id?: string;
    implementation?: string;
    done: boolean;
} | {
    type: "tool_error";
    tool_name: string;
    tool_call_id: string;
    error: string;
    timestamp: string;
} | {
    type: "halt";
    tool_calls: {
        tool_call_id: string;
        name: string;
        arguments: string;
    }[];
    timestamp: string;
} | {
    type: "action_request";
    tool_call_id: string;
    action_id: string;
    implementation: string;
    input: Record<string, JsonValue>;
    done: boolean;
    messages: AnyMessage[];
    tool_call_to_action_id: Record<string, string>;
    timestamp: string;
} | {
    type: "done";
    messages: AnyMessage[];
    sources: KbDocument[];
    tool_call_to_action_id: Record<string, string>;
    suggestions?: FollowUpSuggestion[];
    timestamp: string;
} | {
    type: "error";
    error: string;
    timestamp: string;
};
export type WidgetMode = 'bubble' | 'inline' | 'embedded';
export interface WidgetProps {
    widgetId?: string;
    apiUrl?: string;
    mode?: WidgetMode;
    previewMode?: boolean;
    previewConfig?: Partial<WidgetConfig>;
    position?: WidgetPosition;
    primaryColor?: string;
    size?: WidgetSize;
    headerTitle?: string;
    welcomeTitle?: string;
    welcomeMessage?: string;
    placeholder?: string;
    welcomeBubbleText?: string;
    triggerType?: TriggerType;
    triggerText?: string;
    theme?: 'light' | 'dark';
    triggerTheme?: 'light' | 'dark' | 'auto';
    suggestedQuestions?: string[];
    customStyles?: Record<string, string>;
    currentRoute?: string;
    defaultOpen?: boolean;
    zIndex?: number;
    containerMode?: boolean;
    mobileMode?: boolean;
    desktopMode?: boolean;
    onOpen?: () => void;
    onClose?: () => void;
    onMessage?: (message: ConversationMessage) => void;
    onError?: (error: Error) => void;
}
export interface ChatState {
    messages: ConversationMessage[];
    isOpen: boolean;
    isLoading: boolean;
    isTyping: boolean;
    error: string | null;
    conversationId: string;
    config: WidgetConfig | null;
}
//# sourceMappingURL=index.d.ts.map