/// import { Event } from "rx.mini"; import { Chunk, DataChunk, ForwardTsnChunk } from "./chunk"; import { SCTP_STATE } from "./const"; import { Unpacked } from "./helper"; import { OutgoingSSNResetRequestParam, StreamParam } from "./param"; import { Transport } from "./transport"; declare const SCTPConnectionStates: readonly ["new", "closed", "connected", "connecting"]; type SCTPConnectionState = Unpacked; export declare class SCTP { transport: Transport; port: number; readonly stateChanged: { [key in SCTPConnectionState]: Event<[]>; }; readonly onReconfigStreams: Event<[number[]]>; /**streamId: number, ppId: number, data: Buffer */ readonly onReceive: Event<[number, number, Buffer]>; onSackReceived: () => Promise; associationState: SCTP_STATE; started: boolean; state: SCTPConnectionState; isServer: boolean; private hmacKey; private localPartialReliability; private localPort; private localVerificationTag; remoteExtensions: number[]; remotePartialReliability: boolean; private remotePort?; private remoteVerificationTag; private advertisedRwnd; private inboundStreams; _inboundStreamsCount: number; _inboundStreamsMax: number; private lastReceivedTsn?; private sackDuplicates; private sackMisOrdered; private sackNeeded; private cwnd; private fastRecoveryExit?; private fastRecoveryTransmit; private forwardTsnChunk?; private flightSize; outboundQueue: DataChunk[]; private outboundStreamSeq; _outboundStreamsCount: number; /**local transmission sequence number */ private localTsn; private lastSackedTsn; private advancedPeerAckTsn; private partialBytesAcked; private sentQueue; /**初期TSNと同じ値に初期化される単調に増加する数です. これは、新しいre-configuration requestパラメーターを送信するたびに1ずつ増加します */ reconfigRequestSeq: number; /**このフィールドは、incoming要求のre-configuration requestシーケンス番号を保持します. 他の場合では、次に予想されるre-configuration requestシーケンス番号から1を引いた値が保持されます */ reconfigResponseSeq: number; reconfigRequest?: OutgoingSSNResetRequestParam; reconfigQueue: number[]; private srtt?; private rttvar?; private rto; /**t1 is wait for initAck or cookieAck */ private timer1Handle?; private timer1Chunk?; private timer1Failures; /**t2 is wait for shutdown */ private timer2Handle?; private timer2Chunk?; private timer2Failures; /**t3 is wait for data sack */ private timer3Handle?; /**Re-configuration Timer */ private timerReconfigHandle?; private timerReconfigFailures; private ssthresh?; constructor(transport: Transport, port?: number); get maxChannels(): number | undefined; static client(transport: Transport, port?: number): SCTP; static server(transport: Transport, port?: number): SCTP; private handleData; private sendSack; private receiveChunk; private getExtensions; private receiveReconfigParam; private receiveDataChunk; private receiveSackChunk; receiveForwardTsnChunk(chunk: ForwardTsnChunk): void; private updateRto; private receive; private getInboundStream; private markReceived; send: (streamId: number, ppId: number, userData: Buffer, { expiry, maxRetransmits, ordered, }?: { expiry?: number | undefined; maxRetransmits?: number | undefined; ordered?: boolean | undefined; }) => Promise; private transmit; transmitReconfigRequest(): Promise; sendReconfigParam(param: StreamParam): Promise; private sendResetRequest; private flightSizeIncrease; private flightSizeDecrease; /**t1 is wait for initAck or cookieAck */ private timer1Start; private timer1Expired; private timer1Cancel; /**t2 is wait for shutdown */ private t2Start; private timer2Expired; private timer2Cancel; /**t3 is wait for data sack */ private timer3Start; private timer3Restart; private timer3Expired; private timer3Cancel; /**Re-configuration Timer */ private timerReconfigHandleStart; private timerReconfigHandleExpired; private timerReconfigCancel; private updateAdvancedPeerAckPoint; private maybeAbandon; static getCapabilities(): RTCSctpCapabilities; setRemotePort(port: number): void; start(remotePort?: number): Promise; private init; private setExtensions; sendChunk(chunk: Chunk): Promise; setState(state: SCTP_STATE): void; setConnectionState(state: SCTPConnectionState): void; stop(): Promise; abort(): Promise; private removeAllListeners; } export declare class InboundStream { reassembly: DataChunk[]; streamSequenceNumber: number; constructor(); addChunk(chunk: DataChunk): void; popMessages(): Generator<[number, number, Buffer]>; pruneChunks(tsn: number): number; } export declare class RTCSctpCapabilities { maxMessageSize: number; constructor(maxMessageSize: number); } export {};