import type { Hit } from '@algolia/client-search';
import type { SearchIndex as AlgoliaIndex } from 'algoliasearch/lite';
export type AlgoliaResultHit = Hit<{
    [prop: string]: string;
}>;
export interface IndexResult {
    searchIndex?: SearchIndex;
    index?: string;
    indexName?: string;
    totalHits: number;
    totalHitsWithFilters: number;
    hitsPerPage: number;
    currentPage: number;
    totalPages: number;
    query: string;
    queryID: string;
    results: Array<AlgoliaResultHit>;
    origFilters?: AlgoliaFacet;
    dynFilters?: AlgoliaFacet;
    appliedFilters: AppliedFilter[];
    domain?: string;
    domains?: [
        {
            origin: string;
            domain: string;
        }
    ];
}
export interface AppliedFilter {
    name: string;
    values: Array<string>;
}
export interface AlgoliaFacet {
    [prop: string]: {
        [prop: string]: number;
    };
}
export interface FilterChangeEventDetail {
    filterId: string;
    facetName: string;
    value: Array<string>;
    operator: 'or' | 'and';
}
export interface PageChangeEventDetail {
    page: number;
}
export interface AlgoliaSearchResultDetail {
    meta: {
        index: string;
        indexTitle: string;
        domain: string;
        filters: [string];
        query?: string;
        replicas?: {
            name: string;
            index: string;
        }[];
    };
    client: {
        apiKey: string;
        appId: string;
    };
}
export interface SearchIndex {
    index: string;
    name?: string;
    algoliaIndex?: AlgoliaIndex;
    domain?: string;
    autocompleteField?: string;
    allGroup?: boolean;
    filters?: [string];
    hitsPerPage?: number;
    replicas?: {
        name: string;
        index: string;
    }[];
}
export interface AlgoliaResults {
    hits: Array<AlgoliaResultHit>;
    nbHits: number;
    page: number;
    facets?: {
        [prop: string]: {
            [prop: string]: number;
        };
    };
    nbPages: number;
    hitsPerPage: number;
    exhaustiveNbHits: boolean;
    query: string;
    queryID: string;
    params: string;
    processingTimeMS: number;
    appliedFilters?: [
        {
            name: string;
            values: Array<string>;
        }
    ];
    domain?: string;
    domains?: [
        {
            origin: string;
            domain: string;
        }
    ];
}
export interface AlgoliaMultiResult extends AlgoliaResults {
    filters?: [string];
    selected?: boolean;
    indexName?: string;
    allGroup?: boolean;
    index?: string;
    replicas?: {
        name: string;
        index: string;
    }[];
}
export interface AlgoliaMultiResults {
    results: AlgoliaMultiResult[];
}
