import { MetadataType } from './metadataType';
import MetadataRegistry = require('./metadataRegistry');
export interface FileProperty {
    fileName: string;
    fullName: string;
    type: string;
}
export declare class MetadataTypeFactory {
    static getMetadataTypeFromSourcePath(sourcePath: string, metadataRegistry: MetadataRegistry): MetadataType;
    static getMetadataTypeFromFileProperty(fileProperty: FileProperty, metadataRegistry: MetadataRegistry): MetadataType;
    /**
     * @param fileProperty - the mdapi file property
     * @param metadataRegistry
     * @returns {TypeDefObj}
     */
    private static getTypeDefObjFromFileProperty;
    static getAggregateMetadataType(metadataName: string, metadataRegistry: MetadataRegistry): MetadataType;
    private static getTypeDefName;
    static getMetadataTypeFromMetadataName(metadataName: string, metadataRegistry: MetadataRegistry): MetadataType;
    static getMetadataTypeFromMdapiPackagePath(packagePath: string, metadataRegistry: MetadataRegistry): MetadataType;
}
declare type MdTypeCacheIndex = Map<string, MetadataType>;
export declare class MetadataTypeCache {
    private static _sourcePaths;
    private static _metadataNames;
    private static _mdapiPackagePaths;
    static get sourcePaths(): MdTypeCacheIndex;
    static set sourcePaths(newIndex: MdTypeCacheIndex);
    static get metadataNames(): MdTypeCacheIndex;
    static set metadataNames(newIndex: MdTypeCacheIndex);
    static get mdapiPackagePaths(): MdTypeCacheIndex;
    static set mdapiPackagePaths(newIndex: MdTypeCacheIndex);
    static clear(): void;
}
export {};
