import { AttributeContextParameters, AttributeResolutionApplier, CdmAttributeContext, CdmAttributeResolutionGuidance, CdmEntityDefinition, refCounted, ResolvedAttribute, ResolvedTraitSet, resolveOptions, spewCatcher, TraitSpec } from '../internal';
/**
 * @internal
 */
export declare class ResolvedAttributeSet extends refCounted {
    resolvedName2resolvedAttribute: Map<string, ResolvedAttribute>;
    baseTrait2Attributes: Map<string, Set<ResolvedAttribute>>;
    attributeContext: CdmAttributeContext;
    insertOrder: number;
    /**
     * @internal
     */
    resolvedAttributeCount: number;
    /**
     * @internal
     * indicates the depth level that this set was resolved at.
     * resulting set can vary depending on the maxDepth value
     */
    depthTraveled: number;
    /**
     * @internal
     * this maps the the name of an owner (an entity attribute) to a set of the attributes names that were added because of that entAtt
     * used in the entity attribute code to decide when previous (inherit) attributes from an entAtt with the same name might need to be removed
     */
    attributeOwnershipMap: Map<string, Set<string>>;
    private _set;
    constructor();
    /**
     * @internal
     */
    set set(newVal: ResolvedAttribute[]);
    /**
     * @internal
     */
    get set(): ResolvedAttribute[];
    setAttributeContext(under: CdmAttributeContext): void;
    createAttributeContext(resOpt: resolveOptions, acp: AttributeContextParameters): CdmAttributeContext;
    /**
     * @internal
     */
    merge(toMerge: ResolvedAttribute): ResolvedAttributeSet;
    /**
     * @internal
     */
    alterSetOrderAndScope(newSet: ResolvedAttribute[]): void;
    mergeSet(toMerge: ResolvedAttributeSet): ResolvedAttributeSet;
    /**
     * Recursively sets the target owner's to be the provided entity.
     */
    setTargetOwner(entity: CdmEntityDefinition): void;
    /**
     * Apply a set of resolved traits to this resolved attribute set.
     * @internal
     */
    applyTraits(traits: ResolvedTraitSet): void;
    /**
     * @internal
     */
    applyTraitsResolutionGuidance(traits: ResolvedTraitSet, resOpt: resolveOptions, resGuide: CdmAttributeResolutionGuidance, actions: AttributeResolutionApplier[]): ResolvedAttributeSet;
    apply(traits: ResolvedTraitSet, resOpt: resolveOptions, resGuide: CdmAttributeResolutionGuidance, actions: AttributeResolutionApplier[]): ResolvedAttributeSet;
    removeRequestedAtts(marker: [number, number]): ResolvedAttributeSet;
    fetchAttributesWithTraits(resOpt: resolveOptions, queryFor: TraitSpec | TraitSpec[]): ResolvedAttributeSet;
    /**
     * @internal
     */
    get(name: string): ResolvedAttribute;
    get size(): number;
    copy(): ResolvedAttributeSet;
    spew(resOpt: resolveOptions, to: spewCatcher, indent: string, nameSort: boolean): void;
    private copyNeeded;
    /**
     * @internal
     * everything in this set now 'belongs' to the specified owner
     */
    setAttributeOwnership(ownerName: string): void;
    /**
     * @internal
     */
    markOrphansForRemoval(ownerName: string, rasNewOnes: ResolvedAttributeSet): void;
}
