import { CdmCorpusContext, CdmCorpusDefinition, CdmEntityReference, ProjectionAttributeState, ProjectionAttributeStateSet, ProjectionContext, ProjectionDirective, ResolvedAttributeSet } from '../../internal';
/**
 * A utility class to handle name based functionality for projections and operations
 * @internal
 */
export declare class ProjectionResolutionCommonUtil {
    private static TAG;
    /**
     * Function to initialize the input projection attribute state Set for a projection
     * @internal
     */
    static initializeProjectionAttributeStateSet(projDir: ProjectionDirective, ctx: CdmCorpusContext, orgSrcRAS: ResolvedAttributeSet, isSourcePolymorphic?: boolean, polymorphicSet?: Map<string, ProjectionAttributeState[]>): ProjectionAttributeStateSet;
    /**
     * If a source is tagged as polymorphic source, get the list of original source
     * @internal
     */
    static getPolymorphicSourceSet(projDir: ProjectionDirective, ctx: CdmCorpusContext, source: CdmEntityReference, rasSource: ResolvedAttributeSet): Map<string, ProjectionAttributeState[]>;
    /**
     * Get leaf nodes of the projection state tree for polymorphic scenarios
     * @internal
     */
    static getLeafList(projCtx: ProjectionContext, attrName: string): ProjectionAttributeState[];
    /**
     * Gets the names of the top-level nodes in the projection state tree (for non-polymorphic scenarios) that match a set of attribute names
     * @internal
     */
    static getTopList(projCtx: ProjectionContext, attrNames: string[]): Map<string, string>;
    /**
     * Convert a single value to a list
     * @internal
     */
    static convertToList(top: ProjectionAttributeState): ProjectionAttributeState[];
    /**
     * Create a constant entity that contains the source mapping to a foreign key.
     * e.g.
     * an fk created to entity "Customer" based on the "customerName", would add a parameter to the "is.linkedEntity.identifier" trait as follows:
     *   [
     *     "/Customer.cdm.json/Customer",
     *     "customerName"
     *   ]
     * In the case of polymorphic source, there will be a collection of such entries.
     * @internal
     */
    static createForeignKeyLinkedEntityIdentifierTraitParameter(projDir: ProjectionDirective, corpus: CdmCorpusDefinition, refFoundList: ProjectionAttributeState[]): CdmEntityReference;
}
