import { Class } from "./types";
import { PropertyConfiguration, RootElementConfiguration } from "./root-element";
export declare type PropertyDefinition = {
    type: Class<any>;
    realName: string;
    readAlias: string;
    writeAlias: string;
};
export declare type TypeRegistration<T> = {
    alias: string;
    properties?: Map<string, PropertyDefinition>;
};
export default class TypeRegistry {
    private readonly types;
    constructor();
    register<T>(type: Class<T>): void;
    contains<T>(type: Class<T>): boolean;
    configure<T>(type: Class<T>, cfg: RootElementConfiguration): void;
    resolveConfiguration<T>(type: Class<T>): TypeRegistration<T>;
    private check;
    defineProperty<T>(target: Class<T>, propertyName: string, configuration: PropertyConfiguration): void;
}
