import { CdmCorpusDefinition, CdmDocumentDefinition, CdmEntityAttributeDefinition, CdmEntityDefinition, CdmEntityReference, CdmFolderDefinition, CdmManifestDefinition, CdmOperationCombineAttributes, CdmOperationIncludeAttributes, CdmProjection, CdmTypeAttributeDefinition } from '../../../internal';
import { TypeAttributeParam } from './TypeAttributeParam';
/**
 * Utility class to help create object model based tests
 */
export declare class ProjectionOMTestUtil {
    private foundationJsonPath;
    private localOutputStorageNS;
    private manifestName;
    manifestDocName: string;
    private allImportsName;
    private allImportsDocName;
    /**
     * The path between TestDataPath and this.testName.
     */
    private testsSubpath;
    /**
     * ClassName property
     */
    private _className;
    get className(): string;
    set className(value: string);
    /**
     * TestName property
     */
    private _testName;
    get testName(): string;
    set testName(value: string);
    /**
     * Corpus property
     */
    private _corpus;
    get corpus(): CdmCorpusDefinition;
    set corpus(value: CdmCorpusDefinition);
    /**
     * Test Folder Input Path
     */
    private _inputPath;
    get inputPath(): string;
    set inputPath(value: string);
    /**
     * Test Folder Expected Output Path
     */
    private _expectedOutputPath;
    get expectedOutputPath(): string;
    set expectedOutputPath(value: string);
    /**
     * Test Folder Actual Output Path
     */
    private _actualOutputPath;
    get actualOutputPath(): string;
    set actualOutputPath(value: string);
    /**
     * Local storage root folder definition
     */
    private _localStorageRoot;
    get localStorageRoot(): CdmFolderDefinition;
    set localStorageRoot(value: CdmFolderDefinition);
    /**
     * Default manifest definition
     */
    private _defaultManifest;
    get defaultManifest(): CdmManifestDefinition;
    set defaultManifest(value: CdmManifestDefinition);
    /**
     * All imports files
     */
    private _allImports;
    get allImports(): CdmDocumentDefinition;
    set allImports(value: CdmDocumentDefinition);
    /**
     * Utility class constructor
     */
    constructor(className: string, testName: string);
    Dispose(): void;
    /**
     * Create a default manifest
     */
    createDefaultManifest(): CdmManifestDefinition;
    /**
     * Create and initialize _allImports file
     */
    createAndInitializeAllImportsFile(): CdmDocumentDefinition;
    /**
     * Create a simple entity called 'TestSource' with a single attribute
     */
    CreateBasicEntity(entityName: string, attributesParams: TypeAttributeParam[]): CdmEntityDefinition;
    /**
     * Function to valid the entity
     */
    validateBasicEntity(entity: CdmEntityDefinition, entityName: string, attributesParams: TypeAttributeParam[]): void;
    /**
     * Create a simple projection object
     */
    createProjection(projectionSourceName: string): CdmProjection;
    /**
     * Create an inline entity reference for a projection
     */
    createProjectionInlineEntityReference(projection: CdmProjection): CdmEntityReference;
    /**
     * Create an Input Attribute Operation
     */
    createOperationInputAttribute(projection: CdmProjection, includeAttributes: string[]): CdmOperationIncludeAttributes;
    /**
     * Create a Combine Attribute Operation
     */
    createOperationCombineAttributes(projection: CdmProjection, selectedAttributes: string[], mergeIntoAttribute: CdmTypeAttributeDefinition): CdmOperationCombineAttributes;
    /**
     * Create a Type Attribute
     */
    createTypeAttribute(attributeName: string, dataType: string, purpose: string): CdmTypeAttributeDefinition;
    /**
     * Create an entity attribute
     */
    createEntityAttribute(entityAttributeName: string, projectionSourceEntityRef: CdmEntityReference): CdmEntityAttributeDefinition;
    getAndValidateResolvedEntity(entity: CdmEntityDefinition, resOpts: string[]): Promise<CdmEntityDefinition>;
}
