/// import { UUID } from './UUID'; import { Socket } from 'dgram'; import { PacketFlags } from '../enums/PacketFlags'; import { Packet } from './Packet'; import { MessageBase } from './MessageBase'; import { Message } from '../enums/Message'; import { Subscription } from 'rxjs/Subscription'; import 'rxjs/add/operator/filter'; import { ClientEvents } from "./ClientEvents"; export declare class Circuit { secureSessionID: UUID; sessionID: UUID; circuitCode: number; udpBlacklist: string[]; timestamp: number; client: Socket | null; port: number; ipAddress: string; sequenceNumber: number; awaitingAck: { [key: number]: { packet: Packet; timeout: number; sent: number; }; }; receivedPackets: { [key: number]: number; }; private clientEvents; private onPacketReceived; private onAckReceived; constructor(clientEvents: ClientEvents); subscribeToMessages(ids: number[], callback: (packet: Packet) => void): Subscription; sendMessage(message: MessageBase, flags: PacketFlags): number; resend(sequenceNumber: number): void; waitForAck(ack: number, timeout: number): Promise; init(): void; shutdown(): void; waitForMessage(id: Message, timeout: number, filter?: (packet: Packet) => boolean): Promise; sendPacket(packet: Packet): void; ackReceived(sequenceNumber: number): void; sendAck(sequenceNumber: number): void; getOldestUnacked(): number; expireReceivedPacket(sequenceNumber: number): void; receivedPacket(bytes: Buffer): void; }