import { ObservableSymbol } from './core';
type Act = (...args: any) => void;
export declare function tryInvokeGetter(getter: () => any, proxy: any, origin: any): any;
export type Trackable = {
    [ObservableSymbol.Tracker]: Record<string, any>;
    [Trackable.activator]?: (() => void) | undefined;
};
export declare namespace Trackable {
    const activator: unique symbol;
    function is(target: any): target is Trackable;
    function getOrigin(target: Trackable): any;
    function tryGetOrigin(target: any): any;
}
export declare namespace Tracker {
    function set<T extends Record<any, any> = any>(target: T, act: Act, proxy: T): void;
    function get<T extends Record<any, any> = any>(target: T, act: Act): (T & Trackable) | undefined;
    function has<T extends Record<any, any> = any>(target: T, act: Act): boolean;
    function tramsform(toTrack: any, act: Act, activator?: () => void): any;
    function transformArray(toTrack: any[], act: Act, activator?: () => void): any;
    function transformPlainObject(toTrack: any, act: Act, activator?: () => void): any;
    function transformMap(toTrack: Map<any, any>, act: Act, activator?: () => void): any;
    function toInstanceTracker<T extends Record<any, any>>(origin: T, act: Act): any;
    function toNotifiableTracker<T extends Record<any, any>>(origin: T, act: Act, asProperty: boolean): any;
    function track<T extends Record<any, any>>(object: T, act: Act, asProperty?: boolean): T;
}
export {};
//# sourceMappingURL=tracker.d.ts.map