/**
 * 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 { Database, INTERNAL__LakehouseGeneratedDatabase } from '../../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/Database.js';
import { Schema } from '../../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/Schema.js';
import { Join } from '../../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/Join.js';
import { Filter } from '../../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/Filter.js';
import { type RelationalOperationElement, type Relation, TableAlias, TableAliasColumn, JoinTreeNode } from '../../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/RelationalOperationElement.js';
import { type RelationalDataType } from '../../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/RelationalDataType.js';
import type { V1_GraphBuilderContext } from '../../../../transformation/pureGraph/to/V1_GraphBuilderContext.js';
import type { V1_Schema } from '../../../../model/packageableElements/store/relational/model/V1_Schema.js';
import { type V1_RelationalDataType } from '../../../../model/packageableElements/store/relational/model/V1_RelationalDataType.js';
import type { V1_Join } from '../../../../model/packageableElements/store/relational/model/V1_Join.js';
import { V1_RelationalOperationElement } from '../../../../model/packageableElements/store/relational/model/V1_RelationalOperationElement.js';
import type { V1_JoinPointer } from '../../../../model/packageableElements/store/relational/model/V1_JoinPointer.js';
import type { V1_Filter } from '../../../../model/packageableElements/store/relational/model/V1_Filter.js';
import type { V1_TablePtr } from '../../../../model/packageableElements/store/relational/model/V1_TablePtr.js';
import { TablePtr } from '../../../../../../../../graph/metamodel/pure/packageableElements/service/TablePtr.js';
import type { IncludeStore } from '../../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/IncludeStore.js';
export declare const V1_findSchema: (database: Database, _schema: string) => void;
export declare const V1_initInternalLakehouseGeneratedDatabase: (includedStore: IncludeStore, owner: Database) => INTERNAL__LakehouseGeneratedDatabase;
export declare const V1_findRelation: (database: Database, schemaName: string, tableName: string) => Relation | undefined;
export declare const V1_getRelation: (db: Database, schemaName: string, relationName: string) => Relation;
export declare const V1_buildElementWithJoinsJoinTreeNode: (joinPointers: V1_JoinPointer[], context: V1_GraphBuilderContext) => JoinTreeNode | undefined;
export declare const V1_buildRelationalOperationElement: (operationalElement: V1_RelationalOperationElement, context: V1_GraphBuilderContext, tableAliasIndex: Map<string, TableAlias>, selfJoinTargets: TableAliasColumn[], generatedDbs?: Map<string, INTERNAL__LakehouseGeneratedDatabase> | undefined, allowImplicitToGeneratedDatabase?: boolean | undefined) => RelationalOperationElement;
export declare const V1_transformDatabaseDataType: (dataType: V1_RelationalDataType) => RelationalDataType;
export declare const V1_buildSchema: (srcSchema: V1_Schema, database: Database, context: V1_GraphBuilderContext) => Schema;
export declare const V1_buildDatabaseSchemaViewsFirstPass: (srcSchema: V1_Schema, database: Database, context: V1_GraphBuilderContext) => Schema;
export declare const V1_buildDatabaseSchemaViewsSecondPass: (srcSchema: V1_Schema, context: V1_GraphBuilderContext, database: Database) => Schema;
export declare const V1_buildDatabaseJoin: (srcJoin: V1_Join, context: V1_GraphBuilderContext, database: Database) => Join;
export declare const V1_buildDatabaseFilter: (srcFilter: V1_Filter, context: V1_GraphBuilderContext, database: Database) => Filter;
export declare const V1_buildTablePtr: (protocol: V1_TablePtr) => TablePtr;
//# sourceMappingURL=V1_DatabaseBuilderHelper.d.ts.map