import { ElasticDocument, ElasticHit } from "./elastic";
export interface ReactivesearchFilterListProps {
    loading: boolean;
    error: Error | null;
    handleChange: (key: string) => void;
    data: {
        doc_count: number;
        key: string;
    }[];
    value: string | {
        [key: string]: boolean;
    };
    rawData: {
        aggregations?: any;
    };
}
export interface ReactivesearchPaginationProps {
    pages: number;
    showEndPage: false;
    totalPages: number;
    currentPage: number;
    setPage: (page: number) => void;
}
export interface ReactivesearchResultProps {
    error?: ReactivesearchError;
    loading: boolean;
    data: Array<Omit<ElasticHit, "_source"> & ElasticDocument>;
    loadMore: () => void;
    customData: unknown;
    promotedData: unknown;
    aggregationData: unknown;
    rawData?: {
        _shards: {
            failed: number;
            skipped: number;
            successful: number;
            total: number;
        };
        took: number;
        status: number;
        timed_out: boolean;
        hits: ElasticHit[];
    };
    resultStats: {
        time: number;
        hidden: number;
        promoted: number;
        currentPage: number;
        numberOfPages: number;
        numberOfResults?: number;
        displayedResults: number;
    };
    streamData: unknown;
    triggerAnalytics: unknown;
    triggerClickAnalytics: unknown;
}
export type ResultsDataListenerParams = Pick<ReactivesearchResultProps, "data" | "resultStats" | "rawData">;
export type ResultsDataListener = (params: ResultsDataListenerParams) => void;
export interface ReactivesearchSearchStatePage {
    isLoading: boolean;
    hits: {
        hidden: number;
        time: number;
        total: number;
        hits: ElasticHit[];
    };
    resultStats: {
        hidden: number;
        numberOfResults?: number;
        promoted: number;
        time: number;
    };
    error?: ReactivesearchError;
}
export interface ReactivesearchError {
    status: number;
    statusText: string;
}
