import { Location, NodeId, TrackerId } from '../identifiers';
export declare type PeerId = NodeId | TrackerId | string;
export declare enum PeerType {
    Tracker = "tracker",
    Node = "node",
    Unknown = "unknown"
}
interface ObjectRepresentation {
    peerId: PeerId;
    peerType: string;
    controlLayerVersions: number[] | null;
    messageLayerVersions: number[] | null;
    location?: Location | null | undefined;
}
export declare class PeerInfo {
    static newTracker(peerId: TrackerId, controlLayerVersions?: number[], messageLayerVersions?: number[], location?: Location): PeerInfo;
    static newNode(peerId: NodeId, controlLayerVersions?: number[] | undefined, messageLayerVersions?: number[] | undefined, location?: Location): PeerInfo;
    static newUnknown(peerId: PeerId): PeerInfo;
    static fromObject({ peerId, peerType, location, controlLayerVersions, messageLayerVersions }: ObjectRepresentation): PeerInfo;
    readonly peerId: PeerId;
    readonly peerType: PeerType;
    readonly controlLayerVersions: number[];
    readonly messageLayerVersions: number[];
    readonly location: Location | undefined;
    constructor(peerId: PeerId, peerType: PeerType, controlLayerVersions?: number[], messageLayerVersions?: number[], location?: Location);
    isTracker(): boolean;
    isNode(): boolean;
    toString(): string;
}
export {};
