import * as protocol from 'open-collaboration-protocol';
import { Channel } from './channel.js';
import { Peer, PeerInfo, Room, User } from './types.js';
import { Logger } from './utils/logging.js';
export declare const PeerFactory: unique symbol;
export type PeerFactory = (info: PeerInfo) => Peer;
export declare class PeerImpl implements Peer {
    protected logger: Logger;
    readonly id: string;
    get jwt(): string;
    get publicKey(): string;
    get client(): string;
    get supportedCompression(): string[];
    get user(): User;
    get host(): boolean;
    get room(): Room;
    private readonly messageRelay;
    private readonly peerInfo;
    private readonly roomManager;
    private _channel?;
    private disposed;
    private readonly onDisposeEmitter;
    get onDispose(): protocol.Event<void>;
    get channel(): Channel;
    protected initialize(): void;
    private receiveMessage;
    private handleServerMessage;
    private getTargetPeer;
    toProtocol(): protocol.Peer;
    dispose(): void;
}
//# sourceMappingURL=peer.d.ts.map