import type { InstructionType, WidgetSettingsData } from '../sdk';
export type { AgentData, ConnectionData, InstructionType, IntegrationData, TenantData, UserData, WidgetChip, WidgetSettingsData, } from '../sdk';
/**
 * MarketrixConfig - Single source of truth for all widget configuration
 *
 * This type extends WidgetSettingsData (with all fields optional) with additional
 * widget-specific fields, allowing API settings to be spread directly:
 * { ...config, ...apiSettings }
 *
 * All fields are at the top level for easy merging and access.
 *
 * Component-level defaults (not in config):
 * - Input placeholder: 'Ask anything'
 * - Live agent header: 'Live Agent'
 * - Live agent body: 'A live agent will be with you shortly.'
 * - Position offset default: { x: 20, y: 20 }
 * - Z-index default: 40
 */
export type MarketrixConfig = Partial<WidgetSettingsData> & {
    mtxId?: string;
    mtxKey?: string;
    mtxApp?: number;
    mtxAgent?: number;
    userId?: number;
    mtxApiHost?: string;
    mtxAiHost?: string;
    widget_position_offset?: {
        x?: number;
        y?: number;
    };
    widget_position_z_index?: number;
    isPreviewMode?: boolean;
    /** Controls visual rendering of the widget. When false, widget initializes fully but UI is hidden. Default: true */
    show_widget?: boolean;
    /** Controls screen sharing prompts and button. When false, screen access requests are auto-denied and Share Screen button is hidden. Default: true */
    use_screenshare?: boolean;
};
export interface ChatMessage {
    id: string;
    content: string;
    sender: 'user' | 'agent';
    timestamp: Date;
    mode?: InstructionType;
    videoStream?: MediaStream;
    isScreenAccessRequest?: boolean;
    screenShareStatus?: 'allowed' | 'denied';
    isSystemMessage?: boolean;
    isPlaceholder?: boolean;
    placeholderState?: 'thinking' | 'waiting-for-user';
    parts?: MessagePart[];
    taskStatus?: 'ongoing' | 'done' | 'failed' | 'stopped';
}
export interface MessagePart {
    type: 'text' | 'progress';
    content: string;
    status?: 'running' | 'completed' | 'failed' | 'canceled';
    toolName?: string;
    hideIcon?: boolean;
    textStyle?: 'default' | 'muted';
}
export interface TaskProgress {
    tool_name: string;
    tool_params: Record<string, unknown>;
    step: number;
    explanation: string;
    mode: string;
    timestamp: number;
}
export interface WidgetState {
    isOpen: boolean;
    isMinimized: boolean;
    isLoading: boolean;
    messages: ChatMessage[];
    currentMode: InstructionType;
    agentAvailable: boolean;
    error?: string;
    activeTaskId: string | null;
    isTaskRunning: boolean;
    taskProgress: TaskProgress[];
}
export interface SendMessageRequest {
    message?: string;
    mode?: InstructionType;
    mtxId?: string;
    mtxKey?: string;
    connection_id?: number;
    question?: string;
}
export interface SendMessageResponse {
    messageId: string;
    response: string;
    mode: InstructionType;
    timestamp: Date;
    task_id?: string;
}
export type WidgetPosition = WidgetSettingsData['widget_position'];
/**
 * Configuration for addWidget function
 * Supports preview, production, and dev modes
 */
export type AddWidgetConfig = ({
    settings: WidgetSettingsData;
    mtxId?: never;
    mtxKey?: never;
    mtxApp?: never;
    mtxAgent?: never;
} | {
    settings?: never;
    mtxId: string;
    mtxKey: string;
    mtxApp?: never;
    mtxAgent?: never;
} | {
    settings?: never;
    mtxId?: never;
    mtxKey?: never;
    mtxApp: number;
    mtxAgent: number;
}) & {
    container?: HTMLElement;
    mtxApiHost?: string;
    mtxAiHost?: string;
    userId?: number;
    widget_position_offset?: {
        x?: number;
        y?: number;
    };
    widget_position_z_index?: number;
    /** Controls visual rendering of the widget. When false, widget initializes fully but UI is hidden. Default: true */
    show_widget?: boolean;
    /** Controls screen sharing prompts and button. When false, screen access requests are auto-denied and Share Screen button is hidden. Default: true */
    use_screenshare?: boolean;
};
/**
 * Props for MarketrixWidget React component
 */
export interface MarketrixWidgetProps {
    settings: WidgetSettingsData;
    container?: HTMLElement;
    mtxId?: string;
    mtxKey?: string;
    mtxApiHost?: string;
    mtxAiHost?: string;
}
export type { TourData } from '../sdk';
export type { BrowserAction, BrowserToolMetadata, ClickElementAction, CloseTabAction, DoneAction, ExtractAction, GetDropdownOptionsAction, InputTextAction, NavigateAction, NoParamsAction, ScrollAction, SearchAction, SelectDropdownOptionAction, SendKeysAction, StructuredOutputAction, SwitchTabAction, UploadFileAction, } from './browserTools';
export { BROWSER_TOOL_CATEGORIES, BROWSER_TOOLS } from './browserTools';
//# sourceMappingURL=index.d.ts.map