import React from "react";
import { Chunk, ChunkWithHighlights, GroupChunk } from "../types";
import { ChunkFilter, ChunkGroup, SearchChunksReqPayload, TrieveSDK } from "trieve-ts-sdk";
import { InferenceFilterFormStep } from "../../TrieveModal/FilterSidebarComponents";
export declare const ALL_TAG: {
    tag: string;
    label: string;
    icon: null;
    iconClassName: string;
};
type simpleSearchReqPayload = Omit<SearchChunksReqPayload, "query" | "highlight_options">;
type customAutoCompleteAddOn = {
    use_autocomplete?: boolean;
};
export type PagefindApi = any;
export type currencyPosition = "before" | "after";
export type ModalTypes = "ecommerce" | "docs" | "pdf";
export type SearchModes = "chat" | "search";
export type searchOptions = simpleSearchReqPayload & customAutoCompleteAddOn;
export interface PagefindOptions {
    usePagefind: boolean;
    cdnBaseUrl?: string;
}
export interface TagProp {
    tag: string;
    label?: string;
    selected?: boolean;
    iconClassName?: string;
    icon?: () => JSX.Element;
    description?: string;
    child?: FilterSidebarSection;
}
export interface FilterSidebarSection {
    key: string;
    title: string;
    selectionType: "single" | "multiple";
    filterType: "match_any" | "match_all";
    options: TagProp[];
}
export interface FilterSidebarProps {
    sections: FilterSidebarSection[];
}
export interface InferenceFiltersFormProps {
    steps: InferenceFilterFormStep[];
}
export interface SearchPageProps {
    filterSidebarProps?: FilterSidebarProps;
    inferenceFiltersFormProps?: InferenceFiltersFormProps;
    display?: boolean;
}
export type ModalProps = {
    datasetId: string;
    apiKey: string;
    partnerSettings?: {
        partnerCompanyName?: string;
        partnerCompanyUrl?: string;
        partnerCompanyFaviconUrl?: string;
    };
    baseUrl?: string;
    onResultClick?: (chunk: Chunk) => void;
    theme?: "light" | "dark";
    searchOptions?: searchOptions;
    chatFilters?: ChunkFilter;
    placeholder?: string;
    chatPlaceholder?: string;
    chat?: boolean;
    analytics?: boolean;
    analyticsSelectors?: {
        checkout: {
            querySelector: string;
        };
    };
    ButtonEl?: JSX.ElementType;
    suggestedQueries?: boolean;
    followupQuestions?: boolean;
    numberOfSuggestions?: number;
    defaultSearchQueries?: string[];
    defaultAiQuestions?: string[];
    brandLogoImgSrcUrl?: string;
    brandName?: string;
    problemLink?: string;
    brandColor?: string;
    brandFontFamily?: string;
    openKeyCombination?: {
        key?: string;
        label?: string;
        ctrl?: boolean;
    }[];
    tags?: TagProp[];
    defaultSearchMode?: SearchModes;
    usePagefind?: boolean;
    type?: ModalTypes;
    useGroupSearch?: boolean;
    allowSwitchingModes?: boolean;
    defaultCurrency?: string;
    currencyPosition?: currencyPosition;
    responsive?: boolean;
    open?: boolean;
    openLinksInNewTab?: boolean;
    onOpenChange?: (open: boolean) => void;
    debounceMs?: number;
    buttonTriggers?: {
        selector: string;
        mode: SearchModes;
        removeListeners?: boolean;
    }[];
    inline?: boolean;
    inlineCarousel?: boolean;
    zIndex?: number;
    showFloatingButton?: boolean;
    floatingButtonPosition?: "top-left" | "top-right" | "bottom-left" | "bottom-right";
    floatingButtonVersion?: "brand-logo" | "brand-color";
    floatingSearchIconPosition?: "left" | "right";
    showFloatingSearchIcon?: boolean;
    disableFloatingSearchIconClick?: boolean;
    showFloatingInput?: boolean;
    inlineHeader?: string;
    groupTrackingId?: string;
    cleanGroupName?: string;
    cssRelease?: string;
    hideOpenButton?: boolean;
    defaultImageQuestion?: string;
    onAddToCart?: (chunk: Chunk) => Promise<void> | void;
    getCartQuantity?: (trackingId: string) => Promise<number> | number;
    showResultHighlights?: boolean;
    initialAiMessage?: string;
    ignoreEventListeners?: boolean;
    hideOverlay?: boolean;
    hidePrice?: boolean;
    hideChunkHtml?: boolean;
    componentName?: string;
    displayModal?: boolean;
    searchPageProps?: SearchPageProps;
    recommendOptions?: {
        queriesToTriggerRecommendations: string[];
        productId: string;
        filter?: ChunkFilter;
    };
    usePortal?: boolean;
    previewTopicId?: string;
};
declare const ModalProvider: ({ children, onLoadProps, }: {
    children: React.ReactNode;
    onLoadProps: ModalProps;
}) => React.JSX.Element;
declare function useModalState(): {
    props: ModalProps;
    trieveSDK: TrieveSDK;
    query: string;
    imageUrl: string;
    audioBase64: string | undefined;
    uploadingImage: boolean;
    fingerprint: string;
    setFingerprint: React.Dispatch<React.SetStateAction<string>>;
    setQuery: React.Dispatch<React.SetStateAction<string>>;
    setImageUrl: React.Dispatch<React.SetStateAction<string>>;
    setAudioBase64: React.Dispatch<React.SetStateAction<string | undefined>>;
    setUploadingImage: React.Dispatch<React.SetStateAction<boolean>>;
    results: ChunkWithHighlights[] | GroupChunk[][];
    setResults: React.Dispatch<React.SetStateAction<ChunkWithHighlights[] | GroupChunk[][]>>;
    requestID: string;
    setRequestID: React.Dispatch<React.SetStateAction<string>>;
    loadingResults: boolean;
    setLoadingResults: React.Dispatch<React.SetStateAction<boolean>>;
    open: boolean;
    setOpen: React.Dispatch<React.SetStateAction<boolean>>;
    inputRef: React.RefObject<HTMLInputElement>;
    mode: string;
    setMode: React.Dispatch<React.SetStateAction<SearchModes>>;
    modalRef: React.RefObject<HTMLDivElement>;
    setContextProps: (props: ModalProps) => void;
    selectedTags: TagProp[];
    setSelectedTags: React.Dispatch<React.SetStateAction<TagProp[] | undefined>>;
    currentGroup: ChunkGroup | null;
    setCurrentGroup: React.Dispatch<React.SetStateAction<ChunkGroup | null>>;
    pagefind?: PagefindApi;
    isRecording: boolean;
    setIsRecording: React.Dispatch<React.SetStateAction<boolean>>;
    selectedSidebarFilters: Record<string, string[]>;
    setSelectedSidebarFilters: React.Dispatch<React.SetStateAction<Record<string, string[]>>>;
    minHeight: number;
    resetHeight: () => void;
    addHeight: (height: number) => void;
};
export { ModalProvider, useModalState };
//# sourceMappingURL=modal-context.d.ts.map