import type { Surrogate, SurrogateOptions } from '../../interfaces';
import { EventManager } from '../../manager';
import { Context } from '../../context';
export declare class SurrogateProxy<T extends object> implements ProxyHandler<T> {
    private readonly targets;
    private static instance;
    constructor(target: T, { useSingleton, ...globalOptions }?: SurrogateOptions);
    get<K extends keyof T>(target: T, event: string, receiver: Surrogate<T>): T[K] | EventManager<T>;
    getEventManager(target: T): EventManager<T>;
    static wrap<T extends object>(object: T, options?: SurrogateOptions): Surrogate<T>;
    static hasTarget<T extends object>(target: T): target is Surrogate<T>;
    bindHandler(event: string, target: T, receiver: Surrogate<T>): Function;
    surrogateHandler(context: Context<T>): any;
    dispose(target: T): T;
    private setTarget;
    private useInstance;
}
