import { BinaryWriter } from '../io/binaryWriter.js'; export interface NetAddress { type: string; port: number; } /** * NetChan handles reliable message delivery over an unreliable channel (UDP/WebSocket). * Fragmentation support is planned but not fully implemented. * * Ported from qcommon/net_chan.c */ export declare class NetChan { static readonly MAX_MSGLEN = 1400; static readonly FRAGMENT_SIZE = 1024; static readonly PACKET_HEADER = 10; static readonly HEADER_OVERHEAD: number; static readonly MAX_RELIABLE_BUFFER = 262144; qport: number; incomingSequence: number; outgoingSequence: number; incomingAcknowledged: number; incomingReliableAcknowledged: boolean; incomingReliableSequence: number; outgoingReliableSequence: number; reliableMessage: BinaryWriter; reliableLength: number; fragmentSendOffset: number; fragmentBuffer: Uint8Array | null; fragmentLength: number; fragmentReceived: number; lastReceived: number; lastSent: number; remoteAddress: NetAddress | null; constructor(); /** * Setup the netchan with specific settings */ setup(qport: number, address?: NetAddress | null): void; /** * Reset the netchan state */ reset(): void; /** * Transmits a packet containing reliable and unreliable data */ transmit(unreliableData?: Uint8Array): Uint8Array; /** * Processes a received packet * Returns the payload data (reliable + unreliable) to be processed, or null if discarded */ process(packet: Uint8Array): Uint8Array | null; /** * Checks if reliable message buffer is empty and ready for new data */ canSendReliable(): boolean; /** * Writes a byte to the reliable message buffer */ writeReliableByte(value: number): void; /** * Writes a short to the reliable message buffer */ writeReliableShort(value: number): void; /** * Writes a long to the reliable message buffer */ writeReliableLong(value: number): void; /** * Writes a string to the reliable message buffer */ writeReliableString(value: string): void; /** * Returns the current reliable data buffer */ getReliableData(): Uint8Array; /** * Checks if we need to send a keepalive packet */ needsKeepalive(currentTime: number): boolean; /** * Checks if the connection has timed out */ isTimedOut(currentTime: number, timeoutMs?: number): boolean; } //# sourceMappingURL=netchan.d.ts.map