import { IInstance } from './interfaces'; export declare function GetOrCreatePropertiesFunctionMap(instance: object): Map; export declare function GetOrCreateInstanceFunctionProperty any>(instance: object, propertyKey: PropertyKey, callback: T, functionsMap?: Map): T; /** PRIVATES **/ export declare const INSTANCE_PRIVATE: unique symbol; export interface IInstancePrivate { instance: TInstance; proto: TPrototype; functionsMap: Map; } export interface IInstanceInternal extends IInstance { [INSTANCE_PRIVATE]: IInstancePrivate; } /** CONSTRUCTOR **/ export declare function ConstructInstance(instance: IInstance, _instance: TInstance, proto?: TPrototype): void; /** FUNCTIONS **/ export declare function InstanceGetPropertyDescriptor(instance: IInstance, propertyKey: PropertyKey): PropertyDescriptor | undefined; /** METHODS **/ export declare function InstanceProp(instance: IInstance, propertyKey: PropertyKey): T | undefined; export declare function InstanceAssign(instance: IInstance, propertyKey: PropertyKey, value: any): void; export declare function InstanceGet(instance: IInstance, propertyKey: PropertyKey): T; export declare function InstanceSet(instance: IInstance, propertyKey: PropertyKey, value: any): void; export declare function InstanceApply(instance: IInstance, propertyKey: PropertyKey, args?: any[]): T; /** CLASS **/ export declare class Instance implements IInstance { constructor(instance: TInstance, proto?: TPrototype); get instance(): TInstance; get proto(): TPrototype; prop(propertyKey: PropertyKey): T | undefined; assign(propertyKey: PropertyKey, value: any): void; call(propertyKey: PropertyKey, ...args: any[]): T; get(propertyKey: PropertyKey): T; set(propertyKey: PropertyKey, value: any): void; apply(propertyKey: PropertyKey, args?: any[]): T; }