import { IMetadataEntry } from '../interface/class';
import { TMetadata } from '../type/class';
/**
 * Singleton class for storing and retrieving entity property metadata.
 * @see {@link https://elsikora.com/docs/nestjs-crud-automator/api-reference/classes#metadatastorage | API Reference - MetadataStorage}
 * @see {@link https://elsikora.com/docs/nestjs-crud-automator/core-concepts/metadata-storage | Core Concepts - Metadata Storage}
 */
export declare class MetadataStorage {
    private static instance;
    private readonly REGISTRY;
    constructor();
    static getInstance(): MetadataStorage;
    getAllEntitiesMetadata(): Record<string, TMetadata>;
    getMetadata(entityName: string): TMetadata | undefined;
    getMetadata(entityName: string, propertyName: string): IMetadataEntry | undefined;
    getMetadata<K extends keyof IMetadataEntry>(entityName: string, propertyName: string, key: K): IMetadataEntry[K] | undefined;
    setMetadata<K extends keyof IMetadataEntry>(entityName: string, propertyName: string | symbol, key: K, value: IMetadataEntry[K]): void;
}
