import { Attribute, DataSource, Measure, PivotAttribute, PivotMeasure, PivotQueryResultData, QueryResultData } from '@sisense/sdk-data';
import type { PivotQueryDescription as InternalPivotQueryDescription, QueryDescription as InternalQueryDescription, QueryExecutionConfig } from '@sisense/sdk-query-client';
import { CreateCacheKeyFn } from '../../../shared/utils/create-cache';
import { type ClientApplication } from '../../../infra/app/types.js';
/**
 * All the properties that fully describe a query you want to send.
 *
 * We use "dimensions" in public interface because the term is closer to the query and charting
 * as used in the industry (Sisense included).
 * internally, "dimensions" are represented by attributes as the latter is closer to the data model.
 */
export type QueryDescription = Partial<Omit<InternalQueryDescription, 'attributes'>> & {
    dimensions?: Attribute[];
};
/**
 * All the properties that fully describe a pivot query you want to send.
 *
 * We use "dimensions" in public interface because the term is closer to the query and charting
 * as used in the industry (Sisense included).
 * internally, "dimensions" are represented by attributes as the latter is closer to the data model.
 *
 */
export type PivotQueryDescription = Partial<Omit<InternalPivotQueryDescription, 'rowsAttributes' | 'columnsAttributes' | 'measures'>> & {
    rows?: (Attribute | PivotAttribute)[];
    columns?: (Attribute | PivotAttribute)[];
    values?: (Measure | PivotMeasure)[];
};
/** @internal */
export declare const prepareQueryParams: (queryDescription: QueryDescription, defaultDataSource?: DataSource) => InternalQueryDescription;
/** @internal */
export declare function executeQuery(queryDescription: QueryDescription, app: ClientApplication, executionConfig?: QueryExecutionConfig): Promise<QueryResultData>;
/** @internal */
export declare const executeCsvQuery: (queryDescription: QueryDescription, app: ClientApplication, executionConfig?: QueryExecutionConfig) => Promise<Blob>;
/** @internal */
export declare const executePivotQuery: (queryDescription: PivotQueryDescription, app: ClientApplication, executionConfig?: QueryExecutionConfig) => Promise<PivotQueryResultData>;
export declare const createExecuteQueryCacheKey: CreateCacheKeyFn<typeof executeQuery>;
export declare const executeQueryWithCache: typeof executeQuery;
export declare const clearExecuteQueryCache: (specificKey?: string | undefined) => void;
