/**
 * 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 { Entity } from '@finos/legend-storage';
import type { Mapping } from '../../../graph/metamodel/pure/packageableElements/mapping/Mapping.js';
export type RawMappingModelCoverageAnalysisResult = object;
export declare class MappedEntityInfo {
    readonly __PROPERTIES_INDEX: Map<string, MappedProperty>;
    classPath: string;
    isRootEntity: boolean;
    subClasses: string[];
    constructor(classPath: string, isRootEntity: boolean, subClasses: string[]);
}
export declare class MappedEntity {
    readonly __PROPERTIES_INDEX: Map<string, MappedProperty>;
    path: string;
    properties: MappedProperty[];
    info?: MappedEntityInfo | undefined;
    constructor(path: string, properties: MappedProperty[], info?: MappedEntityInfo | undefined);
}
export declare class MappedProperty {
    name: string;
    constructor(name: string);
}
export declare class EntityMappedProperty extends MappedProperty {
    entityPath: string;
    /**
     * If this attribute is set, we need to understand this `mapped property` slightly differently
     * as this will represent a subtype of the class corresponding to the parent mapped entity.
     *
     * For example: class A extends B, assuming that A is mapped and B is mapped, in the list of
     * mapped properties of B, we should see a mapped property with subtype A.
     */
    subType: string | undefined;
    constructor(name: string, entityPath: string, subType: string | undefined);
}
export declare class EnumMappedProperty extends MappedProperty {
    enumPath: string;
    constructor(name: string, enumPath: string);
}
export declare class MappingModelCoverageAnalysisResult {
    readonly __ENTITIES_INDEX: Map<string, MappedEntity>;
    readonly mapping: Mapping;
    mappedEntities: MappedEntity[];
    entities?: Entity[] | undefined;
    constructor(mappedEntities: MappedEntity[], mapping: Mapping, entities?: Entity[] | undefined);
}
//# sourceMappingURL=MappingModelCoverageAnalysis.d.ts.map