import { KaitaiStream, StreamBufferType } from './kaitai-stream'; /** * KaitaiStreamReader is an implementation of Kaitai Struct API for JavaScript. * * Some functions are based on KaitaiStream.js - https://github.com/kaitai-io/kaitai_struct_javascript_runtime/blob/master/KaitaiStream.js that comes with the following license * * @license Copyright 2012-2016 Ilmari Heikkinen Copyright 2016-2020 Kaitai Project licensed under Apache License, Version 2.0 (the "License"); * * Implementation has been translated to Typescript and modified to fit our needs */ export declare class KaitaiStreamReader extends KaitaiStream { static fromArray(array: Uint8Array): KaitaiStreamReader; static create(packet: Uint8Array | KaitaiStreamReader): KaitaiStreamReader; /** * @param arrayBuffer ArrayBuffer to read from. * @param byteOffset Offset from arrayBuffer beginning for the KaitaiStream. */ constructor(arrayBuffer?: StreamBufferType, byteOffset?: number, isBigEndian?: boolean); readS(size: 1 | 2 | 4): number; readSigned(size: 1 | 2 | 4): number; read(type: 'f' | 'u' | 's' | 'b', bitSize: number, isLittleEndian?: boolean): any; /** Reads an 8-bit signed int from the stream. @return {number} The read number. */ readS1(): number; /** Reads a 16-bit big-endian signed int from the stream. @return {number} The read number. */ readS2be(): number; /** Reads a 32-bit big-endian signed int from the stream. @return {number} The read number. */ readS4be(): number; /** Reads a 64-bit big-endian unsigned int from the stream. Note that JavaScript does not support 64-bit integers natively, so it will automatically upgrade internal representation to use IEEE 754 double precision float. @return {number} The read number. */ readS8be(): number; /** Reads a 16-bit little-endian signed int from the stream. @return {number} The read number. */ readS2le(): number; /** Reads a 32-bit little-endian signed int from the stream. @return {number} The read number. */ readS4le(): number; /** Reads a 64-bit little-endian unsigned int from the stream. Note that JavaScript does not support 64-bit integers natively, so it will automatically upgrade internal representation to use IEEE 754 double precision float. @return {number} The read number. */ readS8le(): number; /** * Read unsigned * @param size */ readU(size: 1 | 2 | 4 | number): number; readUnsigned(size: 1 | 2 | 4 | number): number; /** Reads an 8-bit unsigned int from the stream. @return {number} The read number. */ readU1(): number; /** Reads a 16-bit big-endian unsigned int from the stream. @return {number} The read number. */ readU2be(): number; /** Reads a 32-bit big-endian unsigned int from the stream. @return {number} The read number. */ readU4be(): number; /** Reads a 64-bit big-endian unsigned int from the stream. Note that JavaScript does not support 64-bit integers natively, so it will automatically upgrade internal representation to use IEEE 754 double precision float. @return {number} The read number. */ readU8be(): number; /** Reads a 16-bit little-endian unsigned int from the stream. @return {number} The read number. */ readU2le(): number; /** Reads a 32-bit little-endian unsigned int from the stream. @return {number} The read number. */ readU4le(): number; /** Reads a 64-bit little-endian unsigned int from the stream. Note that JavaScript does not support 64-bit integers natively, so it will automatically upgrade internal representation to use IEEE 754 double precision float. @return {number} The read number. */ readU8le(): number; readF(size: 4 | 8): number; readFloat(size: 4 | 8): number; readF4be(): number; readF8be(): number; readF4le(): number; readF8le(): number; readBitsBoolean(n: number): boolean; readB(n: number): number; readBits(n: number): number; readBoolean(n: number): boolean; /** * Read n bits as unsigned integer * @param n * @returns */ readBitsInt(n: number): number; /** * * @param len number of bytes(s) to read. If value is < 0, read until up to buffer position 'size - |len|' */ readBytes(len?: number): Uint8Array; /** * Read all remaining bytes in buffer */ readBytesFull(): Uint8Array; /** * Read bytes until terminator value is found * @throws if eosError is set to true and terminator is not found * * @param terminator value to search for * @param include true to include terminator to result * @param consume true to consume terminator * @param eosError true to throw an error if we reach end of stream */ readBytesTerm(terminator: number, { include, consume, eosError, }?: { include?: boolean; consume?: boolean; eosError?: boolean; }): Uint8Array; /** * Ensure that the next stream bytes are the one expected * @param expected expected content to check * @throws UnexpectedDataError is not the expected bytes */ ensureFixedContents(expected: Uint8Array): Uint8Array; }