import 'reflect-metadata';
import { Type } from '@itrocks/class-type';
import { PropertyDefaults } from '@itrocks/property-default';
import { PropertyTypes } from '@itrocks/property-type';
import { ReflectProperty } from './property';
export declare class ReflectClass<T extends object = object> {
    readonly name: string;
    readonly object: T | undefined;
    readonly type: Type<T>;
    constructor(object: T | Type<T>);
    inheritPropertyDefaults(propertyDefaults: PropertyDefaults<T>): void;
    inheritPropertyTypes(propertyTypes: PropertyTypes<T>): void;
    get parent(): ReflectClass | null;
    get properties(): ReflectProperty<T, keyof T>[];
    get property(): { [K in keyof T]: ReflectProperty<T, K>; };
    get propertyDefaults(): Partial<Pick<T, keyof T>>;
    get propertyNames(): Array<keyof T>;
    get propertyTypes(): PropertyTypes<T>;
}
