import { CardinalitySettings, CdmObjectDefinitionBase, CdmObjectReference, resolveOptions } from '../../internal';
/**
 * Directives to pass to the top level projection on resolution
 * ProjectionDirective contains all the inputs for a projection towards resolution.
 * ProjectionContext is the context that initializes, lives and evolves through the projection resolution process.
 * ProjectionContext contains an instance of ProjectionDirective.
 * @internal
 */
export declare class ProjectionDirective {
    /**
     * Resolution option used
     * @internal
     */
    resOpt: resolveOptions;
    /**
     * The calling referencing EntityDef, the EntityAttributeDef, or the TypeAttributeDef that contains this projection
     * @internal
     */
    owner: CdmObjectDefinitionBase;
    /**
     * The EntityRef to the owning EntityDef, EntityAttributeDef, or TypeAttributeDef
     * @internal
     */
    ownerRef: CdmObjectReference;
    /**
     * The entity/type attribute name or "{a/A}"
     * This may pass through at each operation action/transformation
     * @internal
     */
    get originalSourceAttributeName(): string;
    /**
     * If EntityAttributeDef - then the Cardinality from the Owner EntityAttributeDef
     * This is ignored for EntityDef and will default to min:max = 0:1
     * @internal
     */
    cardinality: CardinalitySettings;
    /**
     * For entity attribute - get if the source is polymorphic
     * @internal
     */
    isSourcePolymorphic: boolean;
    /**
     * Has maximum depth override flag
     * @internal
     */
    hasNoMaximumDepth: boolean;
    /**
     * Allowed maximum depth of reference
     * @internal
     */
    maximumDepth?: number;
    /**
     * Is array
     * @internal
     */
    isArray?: boolean;
    /**
     * Is referenceOnly
     * @internal
     */
    isReferenceOnly: boolean;
    /**
     * Is normalized
     * @internal
     */
    isNormalized: boolean;
    /**
     * Is structured
     * @internal
     */
    isStructured: boolean;
    /**
     * Is virtual
     * @internal
     */
    isVirtual: boolean;
    constructor(resOpt: resolveOptions, owner: CdmObjectDefinitionBase, ownerRef?: CdmObjectReference);
}
