import { FetchResponse } from "../service-requester";
export declare type AnalyticsQuery = Record<string, any>;
export declare type AnalyticsFieldType = 'float' | 'long' | 'boolean' | 'text' | 'keyword' | 'date' | 'object';
export interface MappingFieldInfo {
    type: AnalyticsFieldType;
    fields?: {
        keyword: {
            type: 'keyword';
            ignore_above: number;
        };
    };
}
declare type MappingField = Record<string, MappingFieldInfo & Mapping>;
export interface Mapping {
    properties?: Record<string, MappingField>;
}
export interface AnalyticsMapping {
    mappings: Mapping | MappingField;
}
export declare type AnalyticsMappingsResponse = Record<string, AnalyticsMapping>;
export interface AnalyticsClientProvider {
    search(index: string, query: AnalyticsQuery): Promise<FetchResponse<any>>;
    msearch(query: MultiSearchQuery[]): Promise<FetchResponse<any>>;
    msearchCombined(query: MultiSearchQuery[]): Promise<FetchResponse<any>>;
}
export interface SearchRequestOptions {
    index: string;
    body: Record<string, any>;
    interval: number;
}
export declare type SearchSubscribeCallbackSuccess = (data: FetchResponse<any>) => void;
export declare type SearchSubscribeCallbackError = (data: FetchResponse<any>) => void;
export interface SubscribeSearchOptions {
    requestOptions: SearchRequestOptions;
    callback: (data: FetchResponse<any>) => void;
    errorCallback: (error: any) => void;
}
export declare type MultiSearchHeader = Record<string, any> & {
    index: string;
};
export declare type MultiSearchBody = Record<string, any>;
export interface MultiSearchQuery {
    header: MultiSearchHeader;
    body: MultiSearchBody;
}
export {};
