import { EventEmitter_, EventEmitter_EE } from './EventEmitter';
import { Dict } from './types/Dict';
import { Unlisten } from './types/Unlisten';
export type SharedObjectClientEvents<_EE extends Dict<any[]>> = EventEmitter_EE<_EE> & _EE;
export interface SharedObjectClient<T, _EE extends Dict<any[]>> {
    proxy: T;
    emitter: EventEmitter_<SharedObjectClientEvents<_EE>>;
    disconnect: Unlisten;
}
export declare class SharedObject<T extends Dict<any>, _EE extends Dict<any[]>> {
    private _obj;
    private _clients;
    constructor(obj: T);
    connect(): SharedObjectClient<T, _EE>;
}
