import { IVars } from "./vars";
import { Tip, IQueryResponse, ResponseHeaders, IHeaderValue } from "./models/types";
import { Observable } from "rxjs";
import { IEnSrvOptions } from "./IEnSrvOptions";
export interface IQueryExtraInfo {
    label: string;
    formula: string;
}
export interface IDimensionOption extends IQueryExtraInfo {
    sortby?: string[];
    sortdir?: ("asc" | "desc")[];
    offset?: number;
    limit?: number;
}
export interface IQueryOption {
    branch?: Tip;
    lang?: string | string[];
    vars?: IVars;
    extraFilters?: IQueryExtraInfo[];
    extraAttributes?: IQueryExtraInfo[];
    dimensionOptions?: IDimensionOption[];
    includeFallbackLang?: boolean;
    responseHeadersToInclude?: ResponseHeaders;
    lastPersist?: string;
}
export declare function execute1d<T>(queryTip: Tip, enSrvOptions: IEnSrvOptions, options?: IQueryOption, timeoutMs?: number): Observable<T[]>;
export declare function execute1dWithResponseHeaders<T>(queryTip: Tip, enSrvOptions: IEnSrvOptions, options?: IQueryOption, timeoutMs?: number): Observable<T[] | {
    results: T[];
    responseHeaders: IHeaderValue[];
}>;
export declare function execute(queryTip: Tip, enSrvOptions: IEnSrvOptions, options?: IQueryOption, timeoutMs?: number): Observable<IQueryResponse>;
export declare function calcQueryTimeouts(timeoutMs: number): {
    queryTimeoutMs: number;
    observableTimeoutMs: number;
};
