/**
 * 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 { TreeData, TreeNodeData } from '@finos/legend-art';
import { type GeneratorFn } from '@finos/legend-shared';
import type { EditorStore } from '../../../EditorStore.js';
import { type RelationalDatabaseConnection, type Schema, type Table, Column, Database } from '@finos/legend-graph';
export declare abstract class DatabaseBuilderTreeNodeData implements TreeNodeData {
    isOpen?: boolean | undefined;
    id: string;
    label: string;
    parentId?: string | undefined;
    childrenIds?: string[] | undefined;
    isChecked: boolean;
    constructor(id: string, label: string, parentId: string | undefined);
}
export declare class SchemaDatabaseBuilderTreeNodeData extends DatabaseBuilderTreeNodeData {
    schema: Schema;
    constructor(id: string, parentId: string | undefined, schema: Schema);
}
export declare class TableDatabaseBuilderTreeNodeData extends DatabaseBuilderTreeNodeData {
    table: Table;
    constructor(id: string, parentId: string | undefined, table: Table);
}
export declare class ColumnDatabaseBuilderTreeNodeData extends DatabaseBuilderTreeNodeData {
    column: Column;
    constructor(id: string, parentId: string | undefined, column: Column);
}
export interface DatabaseBuilderTreeData extends TreeData<DatabaseBuilderTreeNodeData> {
    database: Database;
}
export declare class DatabaseBuilderState {
    editorStore: EditorStore;
    connection: RelationalDatabaseConnection;
    showModal: boolean;
    databaseGrammarCode: string;
    isBuildingDatabase: boolean;
    isSavingDatabase: boolean;
    targetDatabasePath: string;
    treeData?: DatabaseBuilderTreeData | undefined;
    constructor(editorStore: EditorStore, connection: RelationalDatabaseConnection);
    setShowModal(val: boolean): void;
    setTreeData(builderTreeData?: DatabaseBuilderTreeData): void;
    setDatabaseGrammarCode(val: string): void;
    setTargetDatabasePath(val: string): void;
    onNodeSelect(node: DatabaseBuilderTreeNodeData, treeData: DatabaseBuilderTreeData): GeneratorFn<void>;
    getChildNodes(node: DatabaseBuilderTreeNodeData, treeData: DatabaseBuilderTreeData): DatabaseBuilderTreeNodeData[] | undefined;
    toggleCheckedNode(node: DatabaseBuilderTreeNodeData, treeData: DatabaseBuilderTreeData): void;
    private buildNonEnrichedDbBuilderInput;
    fetchSchemaDefinitions(): GeneratorFn<void>;
    fetchSchemaMetadata(schemaNode: SchemaDatabaseBuilderTreeNodeData, treeData: DatabaseBuilderTreeData): GeneratorFn<void>;
    fetchTableMetadata(tableNode: TableDatabaseBuilderTreeNodeData, treeData: DatabaseBuilderTreeData): GeneratorFn<void>;
    private addColumnsNodeToTableNode;
    private removeChildren;
    private getDatabasePackageAndName;
    buildDatabaseWithTreeData(): GeneratorFn<void>;
    private getSchemasFromTreeNode;
    private buildDatabaseGrammar;
    private buildDatabaseFromInput;
    createOrUpdateDatabase(): GeneratorFn<void>;
    updateDatabase(current: Database, generatedDb: Database, allSchemas: Schema[]): void;
    get currentDatabase(): Database | undefined;
}
//# sourceMappingURL=DatabaseBuilderState.d.ts.map