///
///
import EventEmitter from 'events';
import { PacketManager } from '../Packets/PacketManager.js';
import { ConnectionState, PacketType, UtpSocketType } from '../index.js';
import { ContentReader } from './ContentReader.js';
import { ContentWriter } from './ContentWriter.js';
import type { NetworkId } from '../../../index.js';
import type { ICreatePacketOpts, Packet, UtpSocketOptions } from '../index.js';
import type { Debugger } from 'debug';
export declare class UtpSocket extends EventEmitter {
networkId: NetworkId;
type: UtpSocketType;
content: Uint8Array;
remoteAddress: string;
protected seqNr: number;
ackNr: number;
finNr: number | undefined;
sndConnectionId: number;
rcvConnectionId: number;
state: ConnectionState | null;
writer: ContentWriter | undefined;
reader: ContentReader | undefined;
readerContent: Uint8Array | undefined;
ackNrs: (number | undefined)[];
received: number[];
expected: number[];
logger: Debugger;
packetManager: PacketManager;
throttle: () => void;
updateDelay: (timestamp: number, timeReceived: number) => void;
updateRTT: (packetRTT: number, ackNr: number) => void;
updateWindow: () => void;
constructor(options: UtpSocketOptions);
setAckNr(ackNr: number): void;
setSeqNr(seqNr: number): void;
getSeqNr(): number;
setWriter(seqNr: number): void;
setState(state: ConnectionState): void;
setReader(startingSeqNr: number): void;
_clearTimeout(): void;
sendPacket(packet: Packet): Promise;
createPacket(opts?: ICreatePacketOpts): Packet;
sendSynPacket(pktId?: number): Promise;
sendAckPacket(bitmask?: Uint8Array): Promise;
sendSynAckPacket(): Promise;
sendResetPacket(): Promise;
sendFinPacket(): Promise;
sendDataPacket(bytes: Uint8Array): Promise;
handleSynPacket(seqNr: number): Promise;
handleFinAck(): Promise;
handleStatePacket(ackNr: number, timestamp: number): Promise;
handleDataPacket(packet: Packet): Promise;
handleFinPacket(packet: Packet): Promise;
compare(): boolean;
close(): void;
logProgress(): void;
generateSelectiveAckBitMask(): Uint8Array;
updateAckNrs(ackNr: number): void;
}
//# sourceMappingURL=UtpSocket.d.ts.map