import { type Constructor, EntityMetadata } from '../typings';
import type { Configuration } from '../utils/Configuration';
import { MetadataStorage } from './MetadataStorage';
import { EntitySchema } from './EntitySchema';
import type { Platform } from '../platforms';
export declare class MetadataDiscovery {
    private readonly metadata;
    private readonly platform;
    private readonly config;
    private readonly namingStrategy;
    private readonly metadataProvider;
    private readonly cache;
    private readonly logger;
    private readonly schemaHelper;
    private readonly validator;
    private readonly discovered;
    constructor(metadata: MetadataStorage, platform: Platform, config: Configuration);
    discover(preferTsNode?: boolean): Promise<MetadataStorage>;
    discoverSync(preferTsNode?: boolean): MetadataStorage;
    private mapDiscoveredEntities;
    processDiscoveredEntities(discovered: EntityMetadata[]): EntityMetadata[];
    private findEntities;
    private discoverMissingTargets;
    private tryDiscoverTargets;
    private discoverDirectories;
    discoverReferences<T>(refs: (Constructor<T> | EntitySchema<T>)[]): EntityMetadata<T>[];
    reset(className: string): void;
    private prepare;
    private getSchema;
    private discoverEntity;
    private saveToCache;
    private initNullability;
    private applyNamingStrategy;
    private initOwnColumns;
    private initFieldName;
    private initManyToOneFieldName;
    private initManyToManyFieldName;
    private initManyToManyFields;
    private initManyToOneFields;
    private initOneToManyFields;
    private processEntity;
    private findReferencingProperties;
    private initFactoryField;
    private ensureCorrectFKOrderInPivotEntity;
    private definePivotTableEntity;
    private defineFixedOrderProperty;
    private definePivotProperty;
    private autoWireBidirectionalProperties;
    private defineBaseEntityProperties;
    private initPolyEmbeddables;
    private initEmbeddables;
    private initSingleTableInheritance;
    private createDiscriminatorProperty;
    private initAutoincrement;
    private initCheckConstraints;
    private initGeneratedColumn;
    private createColumnMappingObject;
    private getDefaultVersionValue;
    private inferDefaultValue;
    private initDefaultValue;
    private inferTypeFromDefault;
    private initVersionProperty;
    private initCustomType;
    private initRelation;
    private initColumnType;
    private getMappedType;
    private getPrefix;
    private initUnsigned;
    private initIndexes;
    private getEntityClassOrSchema;
    private shouldForceConstructorUsage;
}
