import { type SourceFile } from 'ts-morph';
import { type EntityMetadata, MetadataProvider } from '@mikro-orm/core';
/** Metadata provider that uses ts-morph to infer property types from TypeScript source files or declaration files. */
export declare class TsMorphMetadataProvider extends MetadataProvider {
    private project;
    private sources;
    static useCache(): boolean;
    useCache(): boolean;
    loadEntityMetadata(meta: EntityMetadata): void;
    getExistingSourceFile(path: string, ext?: string, validate?: boolean): SourceFile;
    protected initProperties(meta: EntityMetadata): void;
    private extractType;
    private cleanUpTypeTags;
    private initPropertyType;
    private readTypeFromSource;
    private getSourceFile;
    private stripRelativePath;
    private processWrapper;
    private initProject;
    private initSourceFiles;
    saveToCache(meta: EntityMetadata): void;
    getCacheKey(meta: Pick<EntityMetadata, 'className' | 'path'>): string;
}
