import React from 'react';

interface MendableSearchStyle {
    darkMode: boolean;
    accentColor: string;
}
interface MendableInPlaceProps {
    anon_key: string;
    style?: MendableSearchStyle;
    hintText?: string;
    showSimpleSearch?: boolean;
    welcomeMessage?: string;
    botIcon?: JSX.Element | React.ReactNode | string | undefined;
    userIcon?: JSX.Element | React.ReactNode | undefined;
    messageSettings?: MessageSettings;
    footer?: MendableFooterProps;
    testing_id?: string;
    askAIText?: string;
    context?: string;
    privacyDisclaimer?: string;
    _shouldStream?: boolean;
}
interface MendableSearchProps {
    anon_key: string;
    customSearchBar?: JSX.Element | undefined;
    floatingButtonEnabled?: boolean;
    style?: MendableSearchStyle;
    welcomeMessage?: string;
    hintText: string;
    openState?: boolean;
    setOpenState?: (openState: boolean) => void;
    showSimpleSearch?: boolean;
    botIcon?: JSX.Element | React.ReactNode | string | undefined;
    userIcon?: JSX.Element | React.ReactNode | undefined;
    dialogCustomStyle?: DialogCustomStyle;
    messageSettings?: MessageSettings;
    footer?: MendableFooterProps;
    cmdShortcutKey?: string;
    _shouldStream?: boolean;
    testing_id?: string;
    isPinnable?: boolean;
    _setIsPinned?: () => void;
    _isPinned?: boolean;
    askAIText?: string;
    context?: string;
    privacyDisclaimer?: string;
    onMessageForTracking?: (question: string, answer: string) => void;
    onSourceClickedForTracking?: (source: string) => void;
    onSwitchingSearchType?: (searchType: string) => void;
}
interface DialogCustomStyle {
    dialogTopMargin?: string;
}
interface MendableFooterProps {
    bottomRightLink?: {
        label: string;
        link: string;
    };
}
interface SearchBarProps {
    anon_key: string;
    language?: string;
    placeholder?: string;
    welcomeMessage?: string;
    onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
    style?: MendableSearchStyle;
    botIcon?: JSX.Element | React.ReactNode | string | undefined;
    userIcon?: JSX.Element | React.ReactNode | undefined;
    cmdShortcutKey?: string;
    dialogPlaceholder?: string;
    showSimpleSearch?: boolean;
    dialogCustomStyle?: DialogCustomStyle;
    messageSettings?: MessageSettings;
    footer?: MendableFooterProps;
    _js?: boolean;
    _shouldStream?: boolean;
    testing_id?: string;
    askAIText?: string;
    context?: string;
    isPinnable?: boolean;
    privacyDisclaimer?: string;
    onMessageForTracking?: (question: string, answer: string) => void;
    onSourceClickedForTracking?: (source: string) => void;
    onSwitchingSearchType?: (searchType: string) => void;
}
interface FloatingButtonProps {
    anon_key: string;
    style?: MendableSearchStyle;
    icon?: JSX.Element | React.ReactNode | string | undefined;
    floatingButtonStyle?: FloatingButtonStyle;
    cmdShortcutKey?: string;
    showSimpleSearch?: boolean;
    welcomeMessage?: string;
    dialogPlaceholder?: string;
    botIcon?: JSX.Element | React.ReactNode | string | undefined;
    userIcon?: JSX.Element | React.ReactNode | undefined;
    positionOverwriteClassname?: string;
    dialogCustomStyle?: DialogCustomStyle;
    footer?: MendableFooterProps;
    customText?: string;
    messageSettings?: MessageSettings;
    language?: string;
    _js?: boolean;
    _shouldStream?: boolean;
    testing_id?: string;
    askAIText?: string;
    context?: string;
    privacyDisclaimer?: string;
    onMessageForTracking?: (question: string, answer: string) => void;
    onSourceClickedForTracking?: (source: string) => void;
    onSwitchingSearchType?: (searchType: string) => void;
}
interface MendableChatBubbleProps {
    anon_key: string;
    style?: MendableSearchStyle;
    icon?: JSX.Element | React.ReactNode | string | undefined;
    floatingButtonStyle?: FloatingButtonStyle;
    cmdShortcutKey?: string;
    showSimpleSearch?: boolean;
    welcomeMessage?: string;
    dialogPlaceholder?: string;
    botIcon?: JSX.Element | React.ReactNode | string | undefined;
    userIcon?: JSX.Element | React.ReactNode | undefined;
    positionOverwriteClassname?: string;
    dialogCustomStyle?: DialogCustomStyle;
    customText?: string;
    messageSettings?: MessageSettings;
    footer?: MendableFooterProps;
    language?: string;
    _js?: boolean;
    _shouldStream?: boolean;
    testing_id?: string;
    askAIText?: string;
    context?: string;
}
interface MessageSettings {
    openSourcesInNewTab?: boolean;
    openInNewTabForOutsideSources?: boolean;
    prettySources?: boolean;
    persistMessagesBetweenSessions?: boolean;
    scrollToView?: boolean;
    hideSources?: boolean;
    legacySourceDisplay?: boolean;
}
interface FloatingButtonStyle {
    color: string;
    backgroundColor: string;
}

declare function MendableSearch({ anon_key, style, dialogCustomStyle, welcomeMessage, openState, setOpenState, showSimpleSearch, isPinnable, cmdShortcutKey, onMessageForTracking, onSourceClickedForTracking, onSwitchingSearchType, ...restProps }: MendableSearchProps): React.JSX.Element;

declare function MendableSearchBar({ anon_key, placeholder, cmdShortcutKey, onKeyDown, style, welcomeMessage, botIcon, userIcon, dialogPlaceholder, showSimpleSearch, dialogCustomStyle, messageSettings, language, _js, _shouldStream, testing_id, askAIText, isPinnable, privacyDisclaimer, footer, onMessageForTracking, onSourceClickedForTracking, onSwitchingSearchType, ...restProps }: SearchBarProps): React.JSX.Element;

declare function MendableFloatingButton({ floatingButtonStyle, icon, dialogPlaceholder, positionOverwriteClassname, language, welcomeMessage, cmdShortcutKey, customText, ...restProps }: FloatingButtonProps): React.JSX.Element;

declare function MendableInPlace({ anon_key, style, hintText, showSimpleSearch, welcomeMessage, botIcon, userIcon, testing_id, _shouldStream, ...restProps }: MendableInPlaceProps): React.JSX.Element;

declare function MendableChatBubble({ floatingButtonStyle, icon, dialogPlaceholder, positionOverwriteClassname, language, welcomeMessage, cmdShortcutKey, customText, ...restProps }: MendableChatBubbleProps): React.JSX.Element;

export { MendableChatBubble, MendableFloatingButton, MendableInPlace, MendableSearch, MendableSearchBar };
