import { SchemaOptions } from '../decorator/schema.decorator';
import { Type } from '@nestjs/common';
type PropertyOptions<T = any> = {
    required: boolean;
    type: Type;
    default?: T;
    isArray?: boolean;
    size?: number;
    encrypt?: boolean;
    isEmail?: boolean;
    enum?: Record<string, any>;
    isInt?: boolean;
    min?: number;
    max?: number;
};
type Property = {
    target: Function;
    propertyKey: string;
    options: PropertyOptions;
};
type IndexOptions = {
    type: 'key' | 'fulltext' | 'unique';
    orders: ('ASC' | 'DESC')[];
    attributes: string[];
};
type Index = {
    target: Function;
    propertyKey: string;
    options: IndexOptions;
};
declare class TypeMetadataStorage {
    private readonly schemas;
    private readonly properties;
    private readonly indexes;
    addSchemaMetadata: (target: Function, options: SchemaOptions) => void;
    getSchemaMetadata: (target: Function) => SchemaOptions;
    addPropertyMetadata: (target: Function, propertyKey: string, options: PropertyOptions) => void;
    getClassProperties: (target: Function) => Property[];
    addIndexMetadata: (target: Function, propertyKey: string, options: IndexOptions) => void;
    getClassIndexes: (target: Function) => Index[];
}
declare const _default: TypeMetadataStorage;
export default _default;
