/**
 * 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 { PropertyMapping } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/PropertyMapping.js';
import type { InstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/InstanceSetImplementation.js';
import type { PropertyMappingsImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/PropertyMappingsImplementation.js';
import type { EnumerationMapping } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/EnumerationMapping.js';
import type { SetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/SetImplementation.js';
import type { TableAlias } from '../../../../../../../graph/metamodel/pure/packageableElements/store/relational/model/RelationalOperationElement.js';
import type { V1_GraphBuilderContext } from './V1_GraphBuilderContext.js';
import type { V1_PropertyMapping, V1_PropertyMappingVisitor } from '../../../model/packageableElements/mapping/V1_PropertyMapping.js';
import type { V1_PurePropertyMapping } from '../../../model/packageableElements/store/modelToModel/mapping/V1_PurePropertyMapping.js';
import type { V1_InlineEmbeddedPropertyMapping } from '../../../model/packageableElements/store/relational/mapping/V1_InlineEmbeddedPropertyMapping.js';
import type { V1_AggregationAwarePropertyMapping } from '../../../model/packageableElements/store/relational/mapping/aggregationAware/V1_AggregationAwarePropertyMapping.js';
import type { V1_RelationalPropertyMapping } from '../../../model/packageableElements/store/relational/mapping/V1_RelationalPropertyMapping.js';
import type { V1_EmbeddedFlatDataPropertyMapping } from '../../../model/packageableElements/store/flatData/mapping/V1_EmbeddedFlatDataPropertyMapping.js';
import type { V1_FlatDataPropertyMapping } from '../../../model/packageableElements/store/flatData/mapping/V1_FlatDataPropertyMapping.js';
import type { V1_OtherwiseEmbeddedRelationalPropertyMapping } from '../../../model/packageableElements/store/relational/mapping/V1_OtherwiseEmbeddedRelationalPropertyMapping.js';
import type { V1_EmbeddedRelationalPropertyMapping } from '../../../model/packageableElements/store/relational/mapping/V1_EmbeddedRelationalPropertyMapping.js';
import type { V1_XStorePropertyMapping } from '../../../model/packageableElements/mapping/xStore/V1_XStorePropertyMapping.js';
import type { XStoreAssociationImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/xStore/XStoreAssociationImplementation.js';
import type { AggregationAwareSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/aggregationAware/AggregationAwareSetImplementation.js';
import type { V1_FlatDataAssociationPropertyMapping } from '../../../model/packageableElements/store/flatData/mapping/V1_FlatDataAssociationPropertyMapping.js';
import type { V1_INTERNAL__UnknownPropertyMapping } from '../../../model/packageableElements/mapping/V1_INTERNAL__UnknownPropertyMapping.js';
import type { V1_RelationFunctionPropertyMapping } from '../../../model/packageableElements/mapping/V1_RelationFunctionPropertyMapping.js';
export declare class V1_PropertyMappingBuilder implements V1_PropertyMappingVisitor<PropertyMapping> {
    private context;
    private immediateParent;
    private topParent;
    private allEnumerationMappings;
    private tableAliasIndex;
    private allClassMappings;
    private xStoreParent?;
    private aggregationAwareParent?;
    constructor(context: V1_GraphBuilderContext, immediateParent: PropertyMappingsImplementation, topParent: InstanceSetImplementation | undefined, allEnumerationMappings: EnumerationMapping[], tableAliasMap?: Map<string, TableAlias>, allClassMappings?: SetImplementation[], xStoreParent?: XStoreAssociationImplementation, aggregationAwareParent?: AggregationAwareSetImplementation);
    visit_PropertyMapping(propertyMapping: V1_PropertyMapping): PropertyMapping;
    visit_INTERNAL__UnknownPropertyMapping(propertyMapping: V1_INTERNAL__UnknownPropertyMapping): PropertyMapping;
    visit_PurePropertyMapping(protocol: V1_PurePropertyMapping): PropertyMapping;
    visit_FlatDataPropertyMapping(protocol: V1_FlatDataPropertyMapping): PropertyMapping;
    visit_EmbeddedFlatDataPropertyMapping(protocol: V1_EmbeddedFlatDataPropertyMapping): PropertyMapping;
    visit_RelationalPropertyMapping(protocol: V1_RelationalPropertyMapping): PropertyMapping;
    visit_FlatDataAssociationPropertyMapping(protocol: V1_FlatDataAssociationPropertyMapping): PropertyMapping;
    visit_InlineEmbeddedPropertyMapping(protocol: V1_InlineEmbeddedPropertyMapping): PropertyMapping;
    visit_EmbeddedRelationalPropertyMapping(protocol: V1_EmbeddedRelationalPropertyMapping): PropertyMapping;
    visit_OtherwiseEmbeddedRelationalPropertyMapping(protocol: V1_OtherwiseEmbeddedRelationalPropertyMapping): PropertyMapping;
    visit_XStorePropertyMapping(protocol: V1_XStorePropertyMapping): PropertyMapping;
    visit_AggregationAwarePropertyMapping(protocol: V1_AggregationAwarePropertyMapping): PropertyMapping;
    visit_RelationFunctionPropertyMapping(protocol: V1_RelationFunctionPropertyMapping): PropertyMapping;
}
//# sourceMappingURL=V1_PropertyMappingBuilder.d.ts.map