/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { V1_Lambda, RawLambda, TDSExecutionResult, type GraphManagerState, type V1_ValueSpecification, type ParameterValue } from '@finos/legend-graph';
import { DataCubeEngine, DataCubeSource, type CompletionItem, DataCubeSpecification } from '@finos/legend-data-cube';
import { LogService, StopWatch, type PlainObject, type TimingsRecord } from '@finos/legend-shared';
import type { QueryBuilderState } from '../QueryBuilderState.js';
declare class QueryBuilderDataCubeSource extends DataCubeSource {
    mapping?: string | undefined;
    runtime: string | undefined;
}
export declare const QUERY_BUILDER_DATA_CUBE_SOURCE_TYPE = "queryBuilder";
export declare class QueryBuilderDataCubeEngine extends DataCubeEngine {
    readonly logService: LogService;
    readonly graphState: GraphManagerState;
    readonly queryBuilderState: QueryBuilderState | undefined;
    readonly selectInitialQuery: RawLambda;
    readonly mappingPath: string | undefined;
    readonly parameterValues: ParameterValue[] | undefined;
    readonly runtimePath: string | undefined;
    readonly parameters: object | undefined;
    readonly letFuncsRawLambda: RawLambda | undefined;
    constructor(selectQuery: RawLambda, parameterValues: ParameterValue[] | undefined, mappingPath: string | undefined, runtimePath: string | undefined, graphManagerState: GraphManagerState, queryBuilderState?: QueryBuilderState, letFuncsRawLambda?: RawLambda | undefined);
    finalizeTimingRecord(stopWatch: StopWatch, timings?: TimingsRecord): TimingsRecord | undefined;
    getDataFromSource(source?: DataCubeSource): PlainObject;
    processSource(sourceData: PlainObject): Promise<QueryBuilderDataCubeSource>;
    parseValueSpecification(code: string, returnSourceInformation?: boolean): Promise<V1_ValueSpecification>;
    getValueSpecificationCode(value: V1_ValueSpecification, pretty?: boolean | undefined): Promise<string>;
    getQueryTypeahead(code: string, baseQuery: V1_Lambda, context: DataCubeSource | PlainObject): Promise<CompletionItem[]>;
    getQueryRelationReturnType(query: V1_Lambda, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
    getQueryCodeRelationReturnType(code: string, baseQuery: V1_ValueSpecification, source: DataCubeSource): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
    executeQuery(query: V1_Lambda, source: DataCubeSource): Promise<{
        result: TDSExecutionResult;
        executedQuery: string;
        executedSQL: string | undefined;
        executionTime: number;
    }>;
    buildExecutionContext(source: DataCubeSource): import("@finos/legend-graph").V1_AppliedFunction | undefined;
    sendTelemetry(event: string, data: PlainObject): void;
    private buildRawLambdaFromValueSpec;
    private getSourceFunctionExpression;
    generateInitialSpecification(): Promise<DataCubeSpecification>;
    getRelationType(lambda: RawLambda): Promise<import("@finos/legend-graph").RelationTypeMetadata>;
}
export {};
//# sourceMappingURL=QueryBuilderDataCubeEngine.d.ts.map