import { type ClassMetadata, type ClassType, type MethodMetadata, type ParameterMetadata, type PropertyMetadata, type ReceiveType, type Type } from './model';
export declare function typeOf<T>(type?: Type): ReceiveType<T>;
export declare function registerClassMetadata(target: ClassType, metadata: ClassMetadata): void;
export declare class ReflectionClass<T = any> {
    private readonly classType;
    readonly name: string;
    readonly indexes: {
        names: (string | number | symbol)[];
        options: Record<string, any>;
    }[];
    private readonly metadata;
    private constructor();
    static from<T>(classType: ClassType<T>): ReflectionClass<T>;
    getClassType(): ClassType<T>;
    getCollectionName(): string | undefined;
    isDatabaseMigrationSkipped(_dialect: string): boolean;
    getProperties(): ReflectionProperty[];
    getProperty(name: string | number | symbol): ReflectionProperty;
    getPrimary(): ReflectionProperty;
    getMethod(name: string | symbol): ReflectionMethod;
    getConstructorOrUndefined(): ReflectionMethod | undefined;
}
export declare class ReflectionProperty {
    private readonly metadata;
    readonly type: Type;
    readonly name: string | number | symbol;
    constructor(metadata: PropertyMetadata);
    getNameAsString(): string;
    getType(): Type;
    getDescription(): string;
    isPublic(): boolean;
    isPrimaryKey(): boolean;
    isAutoIncrement(): boolean;
    isOptional(): boolean;
    isNullable(): boolean;
    getDatabase<T = any>(dialect?: string): T | undefined;
    isBackReference(): boolean;
    isDatabaseSkipped(_dialect: string): boolean;
    isDatabaseMigrationSkipped(_dialect: string): boolean;
    isReference(): boolean;
    getReference<T = any>(): T | undefined;
    getResolvedReflectionClass(): ReflectionClass;
}
export declare class ReflectionMethod {
    private readonly metadata;
    constructor(metadata: MethodMetadata);
    getDescription(): string;
    getParameters(): ReflectionParameter[];
    getReturnType(): Type;
}
export declare class ReflectionParameter {
    private readonly metadata;
    constructor(metadata: ParameterMetadata);
    getName(): string;
    getType(): Type;
    isOptional(): boolean;
    hasDefault(): boolean;
}
export declare function readClassMetadata(target: Function): ClassMetadata | undefined;
//# sourceMappingURL=reflection-class.d.ts.map