import { CdmAttributeContext, CdmCorpusContext, CdmEntityReference, CdmObject, CdmObjectDefinitionBase, cdmObjectType, CdmOperationCollection, ProjectionContext, ProjectionDirective, ResolvedAttributeSet, ResolvedTraitSet, resolveOptions, VisitCallback } from '../../internal';
/**
 * Class for projection
 */
export declare class CdmProjection extends CdmObjectDefinitionBase {
    private TAG;
    /**
     * Property of a projection that holds the condition expression string
     */
    condition: string;
    /**
     * Property of a projection that holds a collection of operations
     */
    operations: CdmOperationCollection;
    private _source;
    /**
     * If true, runs the operations sequentially so each operation receives the result of the previous one
     */
    runSequentially?: boolean;
    /**
     * Property of a projection that holds the source of the operation
     */
    get source(): CdmEntityReference;
    set source(source: CdmEntityReference);
    /**
     * Projection constructor
     */
    constructor(ctx: CdmCorpusContext);
    /**
     * @inheritdoc
     */
    copy(resOpt?: resolveOptions, host?: CdmObject): CdmObject;
    /**
     * @inheritdoc
     */
    getName(): string;
    /**
     * @inheritdoc
     */
    getObjectType(): cdmObjectType;
    /**
     * @inheritdoc
     */
    isDerivedFrom(base: string, resOpt?: resolveOptions): boolean;
    /**
     * @inheritdoc
     */
    validate(): boolean;
    /**
     * @inheritdoc
     */
    visit(pathFrom: string, preChildren: VisitCallback, postChildren: VisitCallback): boolean;
    /**
     * @inheritdoc
     * @internal
     */
    fetchResolvedTraits(resOpt?: resolveOptions): ResolvedTraitSet;
    /**
     * A function to construct projection context and populate the resolved attribute set that ExtractResolvedAttributes method can then extract
     * This function is the entry point for projection resolution.
     * This function is expected to do the following 3 things:
     * - Create an condition expression tree & default if appropriate
     * - Create and initialize Projection Context
     * - Process operations
     * @internal
     */
    constructProjectionContext(projDirective: ProjectionDirective, attrCtx: CdmAttributeContext, ras?: ResolvedAttributeSet): ProjectionContext;
    /**
     * Create resolved attribute set based on the CurrentResolvedAttribute array
     * @internal
     */
    extractResolvedAttributes(projCtx: ProjectionContext, attCtxUnder: CdmAttributeContext): ResolvedAttributeSet;
    private getRootOwner;
}
