/**
 * 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 { TreeNodeData, TreeData, TreeNodeContainerProps } from '@finos/legend-art';
import { type V1_AccessPoint, type V1_DataProductArtifact, type V1_IngestDataset, V1_PureModelContextData, V1_DataProduct, V1_RelationTypeColumn, V1_IngestDefinition, type PureProtocolProcessorPlugin } from '@finos/legend-graph';
import { type GeneratorFn } from '@finos/legend-shared';
import type { Entity } from '@finos/legend-storage';
export declare abstract class AccessorExplorerTreeNodeData implements TreeNodeData {
    isOpen?: boolean;
    id: string;
    label: string;
    parentId: string | undefined;
    childrenIds: string[] | undefined;
    isChecked: boolean;
    constructor(id: string, label: string, parentId?: string);
    setChecked(val: boolean): void;
}
export declare class AccessorExplorerTreeDataProductNodeData extends AccessorExplorerTreeNodeData {
    dataProduct: V1_DataProduct;
    constructor(id: string, dataProduct: V1_DataProduct, parentId?: string);
}
export declare class AccessorExplorerTreeIngestNodeData extends AccessorExplorerTreeNodeData {
    ingestDefinition: V1_IngestDefinition;
    constructor(id: string, ingestDefinition: V1_IngestDefinition, parentId?: string);
}
export declare class AccessorExplorerTreeHeaderNodeData extends AccessorExplorerTreeNodeData {
}
export declare class AccessorExplorerTreeAccessPointGroupNodeData extends AccessorExplorerTreeNodeData {
    parentId: string | undefined;
    accessPointGroupId: string;
    accessPointGroupTitle: string;
    dataProductPath: string;
    constructor(id: string, parentId: string | undefined, accessPointGroupId: string, accessPointGroupTitle: string, dataProductPath: string);
}
export declare class AccessorExplorerTreeAccessPointNodeData extends AccessorExplorerTreeNodeData {
    parentId: string | undefined;
    accessPoint: V1_AccessPoint;
    dataProductPath: string;
    constructor(id: string, parentId: string | undefined, accessPoint: V1_AccessPoint, dataProductPath: string);
}
export declare class AccessorExplorerTreeDatasetNodeData extends AccessorExplorerTreeNodeData {
    parentId: string | undefined;
    dataset: V1_IngestDataset;
    constructor(id: string, parentId: string | undefined, dataset: V1_IngestDataset);
}
export declare class AccessorExplorerTreeColumnNodeData extends AccessorExplorerTreeNodeData {
    parentId: string;
    owner: V1_AccessPoint | V1_IngestDataset;
    column: V1_RelationTypeColumn;
    constructor(id: string, parentId: string, owner: V1_AccessPoint | V1_IngestDataset, column: V1_RelationTypeColumn);
}
export type AccessorExplorerTreeNodeContainerProps = TreeNodeContainerProps<AccessorExplorerTreeNodeData, {
    toggleCheckedNode: (node: AccessorExplorerTreeNodeData) => void;
    isPartiallySelected: (node: AccessorExplorerTreeNodeData) => boolean;
}>;
export declare class SQLPlaygroundAccessorExplorerState {
    isGeneratingAccessor: boolean;
    treeData: TreeData<AccessorExplorerTreeNodeData> | undefined;
    parsedIngestDefinitions: Map<string, V1_IngestDefinition>;
    parsedDataProducts: Map<string, V1_DataProduct>;
    fetchDataProductArtifact: (dataProductPath: string) => Promise<V1_DataProductArtifact | undefined>;
    artifactCache: Map<string, V1_DataProductArtifact>;
    private entities;
    private plugins;
    constructor(entities: Entity[], plugins: PureProtocolProcessorPlugin[], fetchDataProductArtifact: (dataProductPath: string) => Promise<V1_DataProductArtifact | undefined>);
    setTreeData(builderTreeData?: TreeData<AccessorExplorerTreeNodeData>): void;
    parsePMCD(pmcd: V1_PureModelContextData): void;
    getIngestDefinitionEntries(): Array<[string, V1_IngestDefinition]>;
    getDataProducts(): V1_DataProduct[];
    fetchProjectData(): GeneratorFn<void>;
    onNodeSelect(node: AccessorExplorerTreeNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): GeneratorFn<void>;
    fetchDataProductMetadata(node: AccessorExplorerTreeDataProductNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): GeneratorFn<void>;
    fetchIngestMetadata(node: AccessorExplorerTreeIngestNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): GeneratorFn<void>;
    fetchAccessPointGroupMetadata(node: AccessorExplorerTreeAccessPointGroupNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): GeneratorFn<void>;
    fetchAccessPointMetadata(node: AccessorExplorerTreeAccessPointNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): GeneratorFn<void>;
    fetchDatasetMetadata(node: AccessorExplorerTreeDatasetNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): GeneratorFn<void>;
    private fetchChildNodes;
    protected getDataProductChildren(node: AccessorExplorerTreeDataProductNodeData): AccessorExplorerTreeNodeData[];
    protected getAccessPointGroupChildren(node: AccessorExplorerTreeAccessPointGroupNodeData): AccessorExplorerTreeNodeData[];
    protected getIngestChildren(node: AccessorExplorerTreeIngestNodeData): AccessorExplorerTreeNodeData[];
    protected getAccessPointChildren(node: AccessorExplorerTreeAccessPointNodeData): AccessorExplorerTreeNodeData[];
    protected getDatasetChildren(node: AccessorExplorerTreeDatasetNodeData): AccessorExplorerTreeNodeData[];
    getChildNodes(node: AccessorExplorerTreeNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): AccessorExplorerTreeNodeData[] | undefined;
    toggleCheckedNode(node: AccessorExplorerTreeNodeData, treeData: TreeData<AccessorExplorerTreeNodeData>): void;
}
//# sourceMappingURL=SqlPlaygroundAccessorExplorerState.d.ts.map