import { CdmCorpusDefinition, CdmEntityDefinition, CdmFolderDefinition, CdmProjection, CdmTypeAttributeDefinition, CdmCollection, CdmAttributeItem, CdmAttributeGroupDefinition } from '../../internal';
/**
 * Common utility methods for projection tests
 * If you want to update the expected output txt files for all the tests that are ran,
 * please set the parameter updateExpectedOutput true in the method validateAttributeContext()
 */
export declare class projectionTestUtils {
    /**
     * Path to foundations
     */
    static foundationJsonPath: string;
    /**
     * Resolves an entity
     * @param corpus The corpus
     * @param inputEntity The entity to resolve
     * @param directives The set of directives used for resolution
     */
    static getResolvedEntity(corpus: CdmCorpusDefinition, inputEntity: CdmEntityDefinition, directives: string[]): Promise<CdmEntityDefinition>;
    /**
     * Returns a suffix that contains the file name and resolution option used
     * @param directives The set of directives used for resolution
     */
    static getResolutionOptionNameSuffix(directives: string[]): string;
    /**
     * Loads an entity, resolves it, and then validates the generated attribute contexts
     */
    static loadEntityForResolutionOptionAndSave(corpus: CdmCorpusDefinition, testName: string, testsSubpath: string, entityName: string, directives: string[], updateExpectedOutput?: boolean): Promise<CdmEntityDefinition>;
    /**
     * Creates an entity
     */
    static createEntity(corpus: CdmCorpusDefinition, localRoot: CdmFolderDefinition): CdmEntityDefinition;
    /**
     * Creates a source entity for a projection
     */
    static createSourceEntity(corpus: CdmCorpusDefinition, localRoot: CdmFolderDefinition): CdmEntityDefinition;
    /**
     * Creates a projection
     */
    static createProjection(corpus: CdmCorpusDefinition, localRoot: CdmFolderDefinition): CdmProjection;
    /**
     * Validates trait "has.expansionInfo.list" for array type.
     * @param attribute The type attribute
     * @param expectedAttrName The expected attribute name
     * @param ordinal The expected ordinal
     * @param expansionName The expected expansion name
     * @param memberAttribute The expected member attribute name
     * @internal
     */
    static validateExpansionInfoTrait(attribute: CdmTypeAttributeDefinition, expectedAttrName: string, ordinal: number, expansionName: string, memberAttribute: string): void;
    /**
     * Validates the creation of an attribute group and return its definition
     * @param attributes The collection of attributes
     * @param attributeGroupName The attribute group name
     * @param attributesSize The expected size of the attributes collection
     * @internal
     */
    static validateAttributeGroup(attributes: CdmCollection<CdmAttributeItem>, attributeGroupName: string, attributesSize?: number, index?: number): CdmAttributeGroupDefinition;
    /**
     * Validates if the attribute context of the resolved entity matches the expected output.
     * @param directives
     * @param expectedOutputPath
     * @param entityName
     * @param resolvedEntity
     * @param updateExpectedOutput If true, will update the expected output txt files for all the tests that are ran.
     */
    private static validateAttributeContext;
}
