export declare class Model {
    [key: keyof any]: any;
    constructor(...args: any[]);
    initialize(data?: any): this;
    set(name: string, value: any, hidden?: boolean): this;
    get(prop: string): any;
    has(prop: string, model?: this): PropertyDescriptor | undefined;
    getData(callBack?: ((this: any, key: string, value: any) => any) | undefined): {
        [key: string]: any;
    };
    protected setOwnProperties(data?: Record<string, any>, properties?: {
        [key: string]: PropertyDescriptor;
    }): this;
    protected setDataProperties(data?: Record<string, any>): this;
    protected privateName(name: string): string;
    protected publicName(name: string): string;
    protected getAllPropertyDescriptors(descriptors?: {}, root?: Model): {
        [p: string]: PropertyDescriptor;
    };
    protected defineProperty(name: string, value: any, hidden?: boolean): void;
}
export declare class JsonModel extends Model {
    constructor(data: object);
    initialize(data?: any): this;
    set(key: string, value: any): this;
    get(value: any): any;
}
export declare function getObjectProperty(object: object, property: string, root?: any): PropertyDescriptor | undefined;
