import { JSX as JSX_2 } from 'react/jsx-runtime';

export declare const ChatbotClient: (clientConfig?: IChatbotClient) => JSX_2.Element;

declare interface IChatbot {
    config: IConfig;
    candidate_id?: string;
}

export declare type IChatbotClient = Partial<Omit<IChatbot, 'config'> & {
    config: IConfigClient;
}>;

declare interface IConfig {
    isReady: boolean;
    isValid: boolean;
    auth: string;
    useInbox?: boolean;
    usePopup?: boolean;
    autoOpen?: boolean;
    position?: IPosition;
    offsetX?: string;
    offsetY?: string;
    preferredHeight?: number;
    preferredWidth?: number;
    env?: IEnv;
    debug?: boolean;
    timeFormat?: ITimeFormat;
    theme: ITheme;
    colors: {
        primaryColor: string;
        secondaryColor: string;
        primaryDarkColor: string;
        secondaryDarkColor: string;
    };
    dtnc?: boolean;
    onOpen?: () => void;
    onClose?: () => void;
    onConversationCreated?: ({ sid, candidate_id }: {
        sid: string;
        candidate_id: string;
    }) => void;
    onFinish?: (data: IOnFinishData) => void;
    onError?: (data: IOnErrorData) => void;
}

declare type IConfigClient = Partial<Omit<IConfig, 'usePopup' | 'isReady' | 'isValid' | 'dtnc'>>;

declare type IEnv = 'development' | 'staging' | 'production';

declare interface IOnErrorData {
    errorMessage: string;
}

declare interface IOnFinishData {
    video_id: string;
}

declare type IPosition = 'left' | 'right';

declare type ITheme = 'light' | 'dark' | 'deviceDefault';

declare type ITimeFormat = '12h' | '24h' | 'deviceDefault';

export declare const usePopupChatbot: () => {
    init: (clientConfig: Partial<Omit<IChatbot, "config"> & {
        config: Partial<Omit<IConfig, "usePopup" | "isReady" | "isValid" | "dtnc">>;
    }>) => void;
    update: (clientConfig?: Partial<Omit<IChatbot, "config"> & {
        config: Partial<Omit<IConfig, "usePopup" | "isReady" | "isValid" | "dtnc">>;
    }>) => void;
    shutdown: () => void;
};

export { }
