interface IMap<T> {
    [key: string]: T;
}
export declare type TAVClass = new () => TAVObject;
export declare class TAVObject {
    private static classes;
    private static instances;
    static parse<T extends TAVObject>(source: unknown): T | undefined;
    static declareType(name: string, class_: TAVClass): void;
    static getType(name: string): TAVClass;
    id: string;
    prepared: boolean;
    readonly type: string;
    protected nativeInvalidated: boolean;
    protected _nativeObject?: any;
    constructor(id?: string);
    prepare(): Promise<void>;
    release(): void;
    protected doPrepare(): Promise<void>;
    protected invalidated(): void;
}
export declare function isTAVObject(source: unknown, classes: IMap<TAVClass>): source is TAVObject;
interface ObjectRef {
    target: any;
    prop: string | number;
}
export declare class ObjectPlaceholder extends TAVObject {
    refs: ObjectRef[];
    resolve(realValue: unknown): void;
}
export declare function parseTAVObject<T extends TAVObject>(source: unknown, classes: IMap<TAVClass>, instances: IMap<TAVObject>): TAVObject;
export declare function uuid(len?: number): string;
export declare function updateNative(_target: any, name: string, descriptor: PropertyDescriptor): void;
export declare function updateNativeIfEffect(_target: any, name: string, descriptor: PropertyDescriptor): void;
export declare function allowCallNativeAnytime(_target: any, name: string, descriptor: PropertyDescriptor): void;
export declare function updateNativeOrMakeInvalidate(_target: any, name: string, descriptor: PropertyDescriptor): void;
export {};
