/**
 * 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 { Mapping } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/Mapping.js';
import type { SetImplementationVisitor } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/SetImplementation.js';
import type { EmbeddedFlatDataPropertyMapping } from '../../../../../../../graph/metamodel/pure/packageableElements/store/flatData/mapping/EmbeddedFlatDataPropertyMapping.js';
import type { PureInstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/store/modelToModel/mapping/PureInstanceSetImplementation.js';
import { type OperationSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/OperationSetImplementation.js';
import type { FlatDataInstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/store/flatData/mapping/FlatDataInstanceSetImplementation.js';
import type { RelationalInstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/store/relational/mapping/RelationalInstanceSetImplementation.js';
import type { RootRelationalInstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/store/relational/mapping/RootRelationalInstanceSetImplementation.js';
import type { PropertyReference } from '../../../../../../../graph/metamodel/pure/packageableElements/domain/PropertyReference.js';
import type { AggregationAwareSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/aggregationAware/AggregationAwareSetImplementation.js';
import { V1_Mapping } from '../../../model/packageableElements/mapping/V1_Mapping.js';
import type { V1_ClassMapping } from '../../../model/packageableElements/mapping/V1_ClassMapping.js';
import { V1_DEPRECATED__ObjectInputType } from '../../../model/packageableElements/mapping/V1_DEPRECATED__MappingTest.js';
import { V1_PropertyPointer } from '../../../model/packageableElements/domain/V1_PropertyPointer.js';
import type { V1_GraphTransformerContext } from './V1_GraphTransformerContext.js';
import type { InstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/InstanceSetImplementation.js';
import { MergeOperationSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/MergeOperationSetImplementation.js';
import type { INTERNAL__UnresolvedSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/INTERNAL__UnresolvedSetImplementation.js';
import { V1_MappingTest } from '../../../model/packageableElements/mapping/V1_MappingTest.js';
import type { MappingTest } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/MappingTest.js';
import { type MappingTestSuite } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/MappingTestSuite.js';
import { V1_MappingTestSuite } from '../../../model/packageableElements/mapping/V1_MappingTestSuite.js';
import type { INTERNAL__UnknownSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/INTERNAL__UnknownSetImplementation.js';
import type { RelationFunctionInstanceSetImplementation } from '../../../../../../../graph/metamodel/pure/packageableElements/mapping/relationFunction/RelationFunctionInstanceSetImplementation.js';
export declare const V1_transformPropertyReference: (element: PropertyReference, options?: {
    isTransformingEmbeddedPropertyMapping?: boolean;
    isTransformingLocalPropertyMapping?: boolean;
}) => V1_PropertyPointer;
export declare const V1_getObjectInputType: (type: string) => V1_DEPRECATED__ObjectInputType;
export declare const V1_transformMappingTest: (element: MappingTest, context: V1_GraphTransformerContext) => V1_MappingTest;
export declare const V1_transformMappingTestSuite: (element: MappingTestSuite, context: V1_GraphTransformerContext) => V1_MappingTestSuite;
export declare class V1_SetImplementationTransformer implements SetImplementationVisitor<V1_ClassMapping | undefined> {
    context: V1_GraphTransformerContext;
    constructor(context: V1_GraphTransformerContext);
    visit_SetImplementation(setImplementation: InstanceSetImplementation): V1_ClassMapping | undefined;
    visit_INTERNAL__UnknownSetImplementation(setImplementation: INTERNAL__UnknownSetImplementation): V1_ClassMapping | undefined;
    visit_OperationSetImplementation(setImplementation: OperationSetImplementation): V1_ClassMapping | undefined;
    visit_MergeOperationSetImplementation(setImplementation: MergeOperationSetImplementation): V1_ClassMapping | undefined;
    visit_PureInstanceSetImplementation(setImplementation: PureInstanceSetImplementation): V1_ClassMapping | undefined;
    visit_FlatDataInstanceSetImplementation(setImplementation: FlatDataInstanceSetImplementation): V1_ClassMapping | undefined;
    visit_EmbeddedFlatDataSetImplementation(setImplementation: EmbeddedFlatDataPropertyMapping): V1_ClassMapping | undefined;
    visit_RootRelationalInstanceSetImplementation(setImplementation: RootRelationalInstanceSetImplementation): V1_ClassMapping | undefined;
    visit_RelationalInstanceSetImplementation(setImplementation: RelationalInstanceSetImplementation): V1_ClassMapping | undefined;
    visit_AggregationAwareSetImplementation(setImplementation: AggregationAwareSetImplementation): V1_ClassMapping | undefined;
    visit_RelationFunctionInstanceSetImplementation(setImplementation: RelationFunctionInstanceSetImplementation): V1_ClassMapping | undefined;
    /**
     * This test is skipped because we want to temporarily relax graph building algorithm
     * to ease Pure -> Legend migration push.
     * See https://github.com/finos/legend-studio/issues/880
     *
     * @discrepancy graph-building
     */
    visit_INTERNAL__UnresolvedSetImplementation(setImplementation: INTERNAL__UnresolvedSetImplementation): V1_ClassMapping | undefined;
}
export declare const V1_transformMapping: (element: Mapping, context: V1_GraphTransformerContext) => V1_Mapping;
//# sourceMappingURL=V1_MappingTransformer.d.ts.map