/// import { BitstreamElement } from "@astronautlabs/bitstream"; import { ProtocolMessageType } from "./constants"; export declare class MessageData extends BitstreamElement { header?: ChunkHeader; private bytesAvailable; constructor(header?: ChunkHeader, bytesAvailable?: number); inspect(): string; $variant: any; data: Uint8Array; } export declare abstract class ChunkStreamId extends BitstreamElement { /** * This field identifies one of four format used by the ’chunk message header’. * The ’chunk message header’ for each of the chunk types is explained in the next section. */ csidPart1: number; abstract chunkStreamId: number; } /** * One byte version of chunk stream ID (used to represent chunk stream Ids between 2 and 63) * https://rtmp.veriskope.com/docs/spec/#1-byte */ export declare class ChunkStreamId1 extends ChunkStreamId { get chunkStreamId(): number; set chunkStreamId(value: number); } /** * Two byte version of chunk stream ID (used to represent chunk stream IDs between 64 and 319) * https://rtmp.veriskope.com/docs/spec/#2-bytes */ export declare class ChunkStreamId2 extends ChunkStreamId { chunkStreamIdSub64: number; get chunkStreamId(): number; set chunkStreamId(value: number); } /** * Two byte version of chunk stream ID (used to represent chunk stream IDs between 64 and 65599) * https://rtmp.veriskope.com/docs/spec/#2-bytes */ export declare class ChunkStreamId3 extends ChunkStreamId { chunkStreamIdSub64: number; get chunkStreamId(): number; set chunkStreamId(value: number); } export declare class ChunkHeader extends BitstreamElement { #private; readonly expectsExtendedTimestamp?: boolean; constructor(expectsExtendedTimestamp?: boolean); /** * This field identifies one of four format used by the ’chunk message header’. * The ’chunk message header’ for each of the chunk types is explained in the next section. */ fmt: number; chunkStreamIdRep: ChunkStreamId; get chunkStreamId(): number; set chunkStreamId(value: number); basicTimestamp: number; messageLength: number; messageTypeId: number; get messageStreamId(): number; set messageStreamId(value: number); $variant: any; extendedTimestamp: number; get hasExtendedTimestamp(): boolean; get timestamp(): number; set timestamp(value: number); } export declare class ChunkHeader0 extends ChunkHeader { fmt: number; basicTimestamp: number; messageLength: number; messageTypeId: number; private $messageStreamId; get messageStreamId(): number; set messageStreamId(value: number); } export declare class ChunkHeader1 extends ChunkHeader { fmt: number; basicTimestamp: number; messageLength: number; messageTypeId: number; } export declare class ChunkHeader2 extends ChunkHeader { fmt: number; basicTimestamp: number; messageLength: undefined; messageTypeId: undefined; } export declare class ChunkHeader3 extends ChunkHeader { fmt: number; basicTimestamp: undefined; messageLength: undefined; messageTypeId: undefined; } export declare class Handshake0 extends BitstreamElement { /** * In C0, this field identifies the RTMP version requested by the client. In S0, this field identifies the RTMP * version selected by the server. The version defined by this specification is 3. Values 0-2 are deprecated values * used by earlier proprietary products; 4-31 are reserved for future implementations; and 32-255 are not allowed * (to allow distinguishing RTMP from text-based protocols, which always start with a printable character). A * server that does not recognize the client’s requested version SHOULD respond with 3. The client MAY choose to * degrade to version 3, or to abandon the handshake. */ version: number; } export declare class Handshake1 extends BitstreamElement { /** * This field contains a timestamp, which SHOULD be used as the epoch for all future chunks sent from this * endpoint. This may be 0, or some arbitrary value. To synchronize multiple chunkstreams, the endpoint may wish * to send the current value of the other chunkstream’s timestamp. */ time: number; /** * This field MUST be all 0s. */ zero: number; /** * This field can contain any arbitrary values. Since each endpoint has to distinguish between the response to the * handshake it has initiated and the handshake initiated by its peer,this data SHOULD send something sufficiently * random. But there is no need for cryptographically-secure randomness, or even dynamic values */ random: Buffer; } export declare class Handshake2 extends BitstreamElement { /** * This field MUST contain the timestamp sent by the peer in S1 (for C2) or C1 (for S2). */ time: number; /** * This field MUST contain the timestamp at which the previous packet(s1 or c1) sent by the peer was read. */ time2: number; /** * This field MUST contain the random data field sent by the peer in S1 (for C2) or S2 (for C1). Either peer can * use the time and time2 fields together with the current timestamp as a quick estimate of the bandwidth and/or * latency of the connection, but this is unlikely to be useful. */ randomEcho: Buffer; } export declare class SetChunkSizeData extends MessageData { typeId: ProtocolMessageType; zero: number; chunkSize: number; } export declare class AbortMessageData extends MessageData { chunkStreamId: number; } export declare class AcknowledgementData extends MessageData { sequenceNumber: number; inspect(): string; } export declare class WindowAcknowledgementSizeData extends MessageData { acknowledgementWindowSize: number; } export declare class SetPeerBandwidthData extends MessageData { acknowledgementWindowSize: number; limitType: number; } export declare class Message extends BitstreamElement { readonly typeId: number; readonly length: number; readonly timestamp: number; readonly messageStreamId: number; readonly data: MessageData; readonly rawData: Buffer; }