///
import { EventEmitter } from 'events';
import { ErrorMessage, InstructionMessage, RelayMessage, StatusAckMessage, TrackerMessage } from '@streamr/protocol';
import { Status, NodeId, TrackerId } from '../identifiers';
import { PeerInfo } from '../connection/PeerInfo';
import { AbstractClientWsEndpoint } from "../connection/ws/AbstractClientWsEndpoint";
import { AbstractWsConnection } from "../connection/ws/AbstractWsConnection";
export declare enum Event {
CONNECTED_TO_TRACKER = "streamr:tracker-node:send-status",
TRACKER_DISCONNECTED = "streamr:tracker-node:tracker-disconnected",
TRACKER_INSTRUCTION_RECEIVED = "streamr:tracker-node:tracker-instruction-received",
STATUS_ACK_RECEIVED = "streamr:tracker-node:status-ack-received",
RELAY_MESSAGE_RECEIVED = "streamr:tracker-node:relay-message-received",
RTC_ERROR_RECEIVED = "streamr:tracker-node:rtc-error-received"
}
export interface NodeToTracker {
on(event: Event.CONNECTED_TO_TRACKER, listener: (trackerId: TrackerId) => void): this;
on(event: Event.TRACKER_DISCONNECTED, listener: (trackerId: TrackerId) => void): this;
on(event: Event.TRACKER_INSTRUCTION_RECEIVED, listener: (msg: InstructionMessage, trackerId: TrackerId) => void): this;
on(event: Event.STATUS_ACK_RECEIVED, listener: (msg: StatusAckMessage, trackerId: TrackerId) => void): this;
on(event: Event.RELAY_MESSAGE_RECEIVED, listener: (msg: RelayMessage, trackerId: TrackerId) => void): this;
on(event: Event.RTC_ERROR_RECEIVED, listener: (msg: ErrorMessage, trackerId: TrackerId) => void): this;
}
export type UUID = string;
export declare class NodeToTracker extends EventEmitter {
private readonly endpoint;
constructor(endpoint: AbstractClientWsEndpoint);
sendStatus(trackerId: TrackerId, status: Status): Promise;
sendRtcOffer(trackerId: TrackerId, targetNode: NodeId, connectionId: string, originatorInfo: PeerInfo, description: string): Promise;
sendRtcAnswer(trackerId: TrackerId, targetNode: NodeId, connectionId: string, originatorInfo: PeerInfo, description: string): Promise;
sendRtcIceCandidate(trackerId: TrackerId, targetNode: NodeId, connectionId: string, originatorInfo: PeerInfo, candidate: string, mid: string): Promise;
sendRtcConnect(trackerId: TrackerId, targetNode: NodeId, originatorInfo: PeerInfo): Promise;
send(receiverTrackerId: TrackerId, message: T & TrackerMessage): Promise;
getServerUrlByTrackerId(trackerId: TrackerId): string | undefined;
getDiagnosticInfo(): Record;
stop(): Promise;
onMessageReceived(peerInfo: PeerInfo, rawMessage: string): void;
connectToTracker(trackerAddress: string, trackerPeerInfo: PeerInfo): Promise;
disconnectFromTracker(trackerId: string): void;
onPeerConnected(peerInfo: PeerInfo): void;
onPeerDisconnected(peerInfo: PeerInfo): void;
}