/**
 * 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 { type GenericLegendApplicationStore } from '@finos/legend-application';
import { type QueryBuilderConfig, type QuerySDLC, type QueryBuilderWorkflowState, type QueryBuilderActionConfig, QueryBuilderState, type QueryBuilderExtraFunctionAnalysisInfo } from '@finos/legend-query-builder';
import { type Class, type GraphManagerState, type QueryExecutionContext, type Runtime, type Mapping, type GraphData } from '@finos/legend-graph';
import { type DepotServerClient } from '@finos/legend-server-depot';
import { type GeneratorFn, ActionState } from '@finos/legend-shared';
import { type DataSpaceExecutionContext, DataSpace } from '../../graph/metamodel/pure/model/packageableElements/dataSpace/DSL_DataSpace_DataSpace.js';
import { DataSpaceAdvancedSearchState } from '../query/DataSpaceAdvancedSearchState.js';
import { type DataSpaceAnalysisResult, type DataSpaceExecutableAnalysisResult } from '../../graph-manager/action/analytics/DataSpaceAnalysis.js';
import { type DataSpaceInfo } from '../shared/DataSpaceInfo.js';
import type { ProjectGAVCoordinates } from '@finos/legend-storage';
export declare const resolveUsableDataSpaceClasses: (dataSpace: DataSpace, mapping: Mapping, graphManagerState: GraphManagerState, queryBuilderState?: DataSpaceQueryBuilderState) => Class[];
export interface DataSpaceQuerySDLC extends QuerySDLC {
    groupId: string;
    artifactId: string;
    versionId: string;
    dataSpace: string;
}
export declare abstract class DataSpacesBuilderRepoistory {
    readonly applicationStore: GenericLegendApplicationStore;
    readonly graphManagerState: GraphManagerState;
    readonly loadDataSpacesState: ActionState;
    dataSpaces: DataSpaceInfo[] | undefined;
    prioritizeDataSpaceFunc?: ((val: DataSpaceInfo) => boolean) | undefined;
    constructor(applicatonstore: GenericLegendApplicationStore, graphManagerState: GraphManagerState, prioritizeDataSpaceFunc?: ((val: DataSpaceInfo) => boolean) | undefined);
    get isAdvancedDataSpaceSearchEnabled(): boolean;
    get canVisitTemplateQuery(): boolean;
    abstract loadDataSpaces(): GeneratorFn<void>;
    abstract visitTemplateQuery(dataSpace: DataSpace, template: DataSpaceExecutableAnalysisResult): void;
    configureDataSpaceOptions(val: DataSpaceInfo[]): void;
}
export declare class DataSpacesGraphRepoistory extends DataSpacesBuilderRepoistory {
    constructor(applicatonstore: GenericLegendApplicationStore, graphManagerState: GraphManagerState, prioritizeDataSpaceFunc?: ((val: DataSpaceInfo) => boolean) | undefined);
    loadDataSpaces(): GeneratorFn<void>;
    visitTemplateQuery(dataSpace: DataSpace, template: DataSpaceExecutableAnalysisResult): void;
}
export declare class DataSpacesDepotRepository extends DataSpacesBuilderRepoistory {
    readonly depotServerClient: DepotServerClient;
    readonly project: ProjectGAVCoordinates;
    readonly viewProject: (groupId: string, artifactId: string, versionId: string, entityPath: string | undefined) => void;
    readonly viewSDLCProject: (groupId: string, artifactId: string, entityPath: string | undefined) => Promise<void>;
    advancedSearchState?: DataSpaceAdvancedSearchState | undefined;
    constructor(depotServerClient: DepotServerClient, applicatonstore: GenericLegendApplicationStore, graphManagerState: GraphManagerState, project: ProjectGAVCoordinates, viewProject: (groupId: string, artifactId: string, versionId: string, entityPath: string | undefined) => void, viewSDLCProject: (groupId: string, artifactId: string, entityPath: string | undefined) => Promise<void>, prioritizeDataSpaceFunc?: ((val: DataSpaceInfo) => boolean) | undefined);
    get isAdvancedDataSpaceSearchEnabled(): boolean;
    get canVisitTemplateQuery(): boolean;
    visitTemplateQuery(dataSpace: DataSpace, template: DataSpaceExecutableAnalysisResult): void;
    showAdvancedSearchPanel(dataSpace: DataSpace): void;
    hideAdvancedSearchPanel(): void;
    loadDataSpaces(): GeneratorFn<void>;
}
export declare class DataSpaceQueryBuilderState extends QueryBuilderState {
    readonly onDataSpaceChange: (val: DataSpaceInfo) => Promise<void>;
    readonly onExecutionContextChange?: ((val: DataSpaceExecutionContext) => void) | undefined;
    readonly onRuntimeChange?: ((val: Runtime) => void) | undefined;
    readonly onClassChange?: ((val: Class) => void) | undefined;
    readonly dataSpaceAnalysisResult?: DataSpaceAnalysisResult | undefined;
    readonly dataSpaceRepo: DataSpacesBuilderRepoistory;
    TEMPORARY__setupPanelContentRenderer: () => React.ReactNode;
    dataSpace: DataSpace;
    executionContext: DataSpaceExecutionContext;
    showRuntimeSelector: boolean;
    isTemplateQueryDialogOpen: boolean;
    isLightGraphEnabled: boolean;
    displayedTemplateQueries: DataSpaceExecutableAnalysisResult[] | undefined;
    constructor(applicationStore: GenericLegendApplicationStore, graphManagerState: GraphManagerState, workflow: QueryBuilderWorkflowState, actionConfig: QueryBuilderActionConfig, dataSpace: DataSpace, executionContext: DataSpaceExecutionContext, isLightGraphEnabled: boolean, dataSpaceRepo: DataSpacesBuilderRepoistory | undefined, onDataSpaceChange: (val: DataSpaceInfo) => Promise<void>, dataSpaceAnalysisResult?: DataSpaceAnalysisResult | undefined, onExecutionContextChange?: ((val: DataSpaceExecutionContext) => void) | undefined, onRuntimeChange?: ((val: Runtime) => void) | undefined, onClassChange?: ((val: Class) => void) | undefined, config?: QueryBuilderConfig | undefined, sourceInfo?: QuerySDLC | undefined);
    get sideBarClassName(): string | undefined;
    getQueryExecutionContext(): QueryExecutionContext;
    setTemplateQueryDialogOpen(val: boolean): void;
    setExecutionContext(val: DataSpaceExecutionContext): void;
    setShowRuntimeSelector(val: boolean): void;
    setIsLightGraphEnabled(val: boolean): void;
    buildFunctionAnalysisInfo(): QueryBuilderExtraFunctionAnalysisInfo | undefined;
    getGraphData(): GraphData;
    intialize(): GeneratorFn<void>;
}
//# sourceMappingURL=DataSpaceQueryBuilderState.d.ts.map