@solana/codecs-numbers
Version:
Codecs for numbers of different sizes and endianness
1 lines • 68.5 kB
Source Map (JSON)
{"version":3,"sources":["../src/assertions.ts","../src/common.ts","../src/utils.ts","../src/f32.ts","../src/f64.ts","../src/i128.ts","../src/i16.ts","../src/i32.ts","../src/i64.ts","../src/i8.ts","../src/short-u16.ts","../src/u128.ts","../src/u16.ts","../src/u32.ts","../src/u64.ts","../src/u8.ts"],"names":["Endian","combineCodec","createEncoder","createDecoder"],"mappings":"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","file":"index.browser.mjs","sourcesContent":["import { SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, SolanaError } from '@solana/errors';\n\n/**\n * Ensures that a given number falls within a specified range.\n *\n * If the number is outside the allowed range, an error is thrown.\n * This function is primarily used to validate values before encoding them in a codec.\n *\n * @param codecDescription - A string describing the codec that is performing the validation.\n * @param min - The minimum allowed value (inclusive).\n * @param max - The maximum allowed value (inclusive).\n * @param value - The number to validate.\n *\n * @throws {@link SolanaError} if the value is out of range.\n *\n * @example\n * Validating a number within range.\n * ```ts\n * assertNumberIsBetweenForCodec('u8', 0, 255, 42); // Passes\n * ```\n *\n * @example\n * Throwing an error for an out-of-range value.\n * ```ts\n * assertNumberIsBetweenForCodec('u8', 0, 255, 300); // Throws\n * ```\n */\nexport function assertNumberIsBetweenForCodec(\n codecDescription: string,\n min: bigint | number,\n max: bigint | number,\n value: bigint | number,\n) {\n if (value < min || value > max) {\n throw new SolanaError(SOLANA_ERROR__CODECS__NUMBER_OUT_OF_RANGE, {\n codecDescription,\n max,\n min,\n value,\n });\n }\n}\n","import { Codec, Decoder, Encoder, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n/**\n * Represents an encoder for numbers and bigints.\n *\n * This type allows encoding values that are either `number` or `bigint`.\n * Depending on the specific implementation, the encoded output may have a fixed or variable size.\n *\n * @see {@link FixedSizeNumberEncoder}\n */\nexport type NumberEncoder = Encoder<bigint | number>;\n\n/**\n * Represents a fixed-size encoder for numbers and bigints.\n *\n * This encoder serializes values using an exact number of bytes, defined by `TSize`.\n *\n * @typeParam TSize - The number of bytes used for encoding.\n *\n * @see {@link NumberEncoder}\n */\nexport type FixedSizeNumberEncoder<TSize extends number = number> = FixedSizeEncoder<bigint | number, TSize>;\n\n/**\n * Represents a decoder for numbers and bigints.\n *\n * This type supports decoding values as either `number` or `bigint`, depending on the implementation.\n *\n * @see {@link FixedSizeNumberDecoder}\n */\nexport type NumberDecoder = Decoder<bigint> | Decoder<number>;\n\n/**\n * Represents a fixed-size decoder for numbers and bigints.\n *\n * This decoder reads a fixed number of bytes (`TSize`) and converts them into a `number` or `bigint`.\n *\n * @typeParam TSize - The number of bytes expected for decoding.\n *\n * @see {@link NumberDecoder}\n */\nexport type FixedSizeNumberDecoder<TSize extends number = number> =\n | FixedSizeDecoder<bigint, TSize>\n | FixedSizeDecoder<number, TSize>;\n\n/**\n * Represents a codec for encoding and decoding numbers and bigints.\n *\n * - The encoded value can be either a `number` or a `bigint`.\n * - The decoded value will always be either a `number` or `bigint`, depending on the implementation.\n *\n * @see {@link FixedSizeNumberCodec}\n */\nexport type NumberCodec = Codec<bigint | number, bigint> | Codec<bigint | number, number>;\n\n/**\n * Represents a fixed-size codec for encoding and decoding numbers and bigints.\n *\n * This codec uses a specific number of bytes (`TSize`) for serialization.\n * The encoded value can be either a `number` or `bigint`, but the decoded value will always be a `number` or `bigint`,\n * depending on the implementation.\n *\n * @typeParam TSize - The number of bytes used for encoding and decoding.\n *\n * @see {@link NumberCodec}\n */\nexport type FixedSizeNumberCodec<TSize extends number = number> =\n | FixedSizeCodec<bigint | number, bigint, TSize>\n | FixedSizeCodec<bigint | number, number, TSize>;\n\n/**\n * Configuration options for number codecs that use more than one byte.\n *\n * This configuration applies to all number codecs except `u8` and `i8`,\n * allowing the user to specify the endianness of serialization.\n */\nexport type NumberCodecConfig = {\n /**\n * Specifies whether numbers should be encoded in little-endian or big-endian format.\n *\n * @defaultValue `Endian.Little`\n */\n endian?: Endian;\n};\n\n/**\n * Defines the byte order used for number serialization.\n *\n * - `Little`: The least significant byte is stored first.\n * - `Big`: The most significant byte is stored first.\n */\nexport enum Endian {\n Little,\n Big,\n}\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n assertByteArrayIsNotEmptyForCodec,\n createDecoder,\n createEncoder,\n FixedSizeDecoder,\n FixedSizeEncoder,\n Offset,\n ReadonlyUint8Array,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\nimport { Endian, NumberCodecConfig } from './common';\n\ntype NumberFactorySharedInput<TSize extends number> = {\n config?: NumberCodecConfig;\n name: string;\n size: TSize;\n};\n\ntype NumberFactoryEncoderInput<TFrom, TSize extends number> = NumberFactorySharedInput<TSize> & {\n range?: [bigint | number, bigint | number];\n set: (view: DataView, value: TFrom, littleEndian?: boolean) => void;\n};\n\ntype NumberFactoryDecoderInput<TTo, TSize extends number> = NumberFactorySharedInput<TSize> & {\n get: (view: DataView, littleEndian?: boolean) => TTo;\n};\n\nfunction isLittleEndian(config?: NumberCodecConfig): boolean {\n return config?.endian === Endian.Big ? false : true;\n}\n\nexport function numberEncoderFactory<TFrom extends bigint | number, TSize extends number>(\n input: NumberFactoryEncoderInput<TFrom, TSize>,\n): FixedSizeEncoder<TFrom, TSize> {\n return createEncoder({\n fixedSize: input.size,\n write(value: TFrom, bytes: Uint8Array, offset: Offset): Offset {\n if (input.range) {\n assertNumberIsBetweenForCodec(input.name, input.range[0], input.range[1], value);\n }\n const arrayBuffer = new ArrayBuffer(input.size);\n input.set(new DataView(arrayBuffer), value, isLittleEndian(input.config));\n bytes.set(new Uint8Array(arrayBuffer), offset);\n return offset + input.size;\n },\n });\n}\n\nexport function numberDecoderFactory<TTo extends bigint | number, TSize extends number>(\n input: NumberFactoryDecoderInput<TTo, TSize>,\n): FixedSizeDecoder<TTo, TSize> {\n return createDecoder({\n fixedSize: input.size,\n read(bytes, offset = 0): [TTo, number] {\n assertByteArrayIsNotEmptyForCodec(input.name, bytes, offset);\n assertByteArrayHasEnoughBytesForCodec(input.name, input.size, bytes, offset);\n const view = new DataView(toArrayBuffer(bytes, offset, input.size));\n return [input.get(view, isLittleEndian(input.config)), offset + input.size];\n },\n });\n}\n\n/**\n * Helper function to ensure that the ArrayBuffer is converted properly from a Uint8Array\n * Source: https://stackoverflow.com/questions/37228285/uint8array-to-arraybuffer\n */\nfunction toArrayBuffer(bytes: ReadonlyUint8Array | Uint8Array, offset?: number, length?: number): ArrayBuffer {\n const bytesOffset = bytes.byteOffset + (offset ?? 0);\n const bytesLength = length ?? bytes.byteLength;\n return bytes.buffer.slice(bytesOffset, bytesOffset + bytesLength);\n}\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 32-bit floating-point numbers (`f32`).\n *\n * This encoder serializes `f32` values using 4 bytes.\n * Floating-point values may lose precision when encoded.\n *\n * For more details, see {@link getF32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder<number, 4>` for encoding `f32` values.\n *\n * @example\n * Encoding an `f32` value.\n * ```ts\n * const encoder = getF32Encoder();\n * const bytes = encoder.encode(-1.5); // 0x0000c0bf\n * ```\n *\n * @see {@link getF32Codec}\n */\nexport const getF32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'f32',\n set: (view, value, le) => view.setFloat32(0, Number(value), le),\n size: 4,\n });\n\n/**\n * Returns a decoder for 32-bit floating-point numbers (`f32`).\n *\n * This decoder deserializes `f32` values from 4 bytes.\n * Some precision may be lost during decoding due to floating-point representation.\n *\n * For more details, see {@link getF32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder<number, 4>` for decoding `f32` values.\n *\n * @example\n * Decoding an `f32` value.\n * ```ts\n * const decoder = getF32Decoder();\n * const value = decoder.decode(new Uint8Array([0x00, 0x00, 0xc0, 0xbf])); // -1.5\n * ```\n *\n * @see {@link getF32Codec}\n */\nexport const getF32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat32(0, le),\n name: 'f32',\n size: 4,\n });\n\n/**\n * Returns a codec for encoding and decoding 32-bit floating-point numbers (`f32`).\n *\n * This codec serializes `f32` values using 4 bytes.\n * Due to the IEEE 754 floating-point representation, some precision loss may occur.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec<number, number, 4>` for encoding and decoding `f32` values.\n *\n * @example\n * Encoding and decoding an `f32` value.\n * ```ts\n * const codec = getF32Codec();\n * const bytes = codec.encode(-1.5); // 0x0000c0bf\n * const value = codec.decode(bytes); // -1.5\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getF32Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-1.5); // 0xbfc00000\n * ```\n *\n * @remarks\n * `f32` values follow the IEEE 754 single-precision floating-point standard.\n * Precision loss may occur for certain values.\n *\n * - If you need higher precision, consider using {@link getF64Codec}.\n * - If you need integer values, consider using {@link getI32Codec} or {@link getU32Codec}.\n *\n * Separate {@link getF32Encoder} and {@link getF32Decoder} functions are available.\n *\n * ```ts\n * const bytes = getF32Encoder().encode(-1.5);\n * const value = getF32Decoder().decode(bytes);\n * ```\n *\n * @see {@link getF32Encoder}\n * @see {@link getF32Decoder}\n */\nexport const getF32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getF32Encoder(config), getF32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 64-bit floating-point numbers (`f64`).\n *\n * This encoder serializes `f64` values using 8 bytes.\n * Floating-point values may lose precision when encoded.\n *\n * For more details, see {@link getF64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder<number, 8>` for encoding `f64` values.\n *\n * @example\n * Encoding an `f64` value.\n * ```ts\n * const encoder = getF64Encoder();\n * const bytes = encoder.encode(-1.5); // 0x000000000000f8bf\n * ```\n *\n * @see {@link getF64Codec}\n */\nexport const getF64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'f64',\n set: (view, value, le) => view.setFloat64(0, Number(value), le),\n size: 8,\n });\n\n/**\n * Returns a decoder for 64-bit floating-point numbers (`f64`).\n *\n * This decoder deserializes `f64` values from 8 bytes.\n * Some precision may be lost during decoding due to floating-point representation.\n *\n * For more details, see {@link getF64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder<number, 8>` for decoding `f64` values.\n *\n * @example\n * Decoding an `f64` value.\n * ```ts\n * const decoder = getF64Decoder();\n * const value = decoder.decode(new Uint8Array([0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbf])); // -1.5\n * ```\n *\n * @see {@link getF64Codec}\n */\nexport const getF64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getFloat64(0, le),\n name: 'f64',\n size: 8,\n });\n\n/**\n * Returns a codec for encoding and decoding 64-bit floating-point numbers (`f64`).\n *\n * This codec serializes `f64` values using 8 bytes.\n * Due to the IEEE 754 floating-point representation, some precision loss may occur.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec<number, number, 8>` for encoding and decoding `f64` values.\n *\n * @example\n * Encoding and decoding an `f64` value.\n * ```ts\n * const codec = getF64Codec();\n * const bytes = codec.encode(-1.5); // 0x000000000000f8bf\n * const value = codec.decode(bytes); // -1.5\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getF64Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-1.5); // 0xbff8000000000000\n * ```\n *\n * @remarks\n * `f64` values follow the IEEE 754 double-precision floating-point standard.\n * Precision loss may still occur but is significantly lower than `f32`.\n *\n * - If you need smaller floating-point values, consider using {@link getF32Codec}.\n * - If you need integer values, consider using {@link getI64Codec} or {@link getU64Codec}.\n *\n * Separate {@link getF64Encoder} and {@link getF64Decoder} functions are available.\n *\n * ```ts\n * const bytes = getF64Encoder().encode(-1.5);\n * const value = getF64Decoder().decode(bytes);\n * ```\n *\n * @see {@link getF64Encoder}\n * @see {@link getF64Decoder}\n */\nexport const getF64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 8> =>\n combineCodec(getF64Encoder(config), getF64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 128-bit signed integers (`i128`).\n *\n * This encoder serializes `i128` values using 16 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI128Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder<number | bigint, 16>` for encoding `i128` values.\n *\n * @example\n * Encoding an `i128` value.\n * ```ts\n * const encoder = getI128Encoder();\n * const bytes = encoder.encode(-42n); // 0xd6ffffffffffffffffffffffffffffff\n * ```\n *\n * @see {@link getI128Codec}\n */\nexport const getI128Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 16> =>\n numberEncoderFactory({\n config,\n name: 'i128',\n range: [-BigInt('0x7fffffffffffffffffffffffffffffff') - 1n, BigInt('0x7fffffffffffffffffffffffffffffff')],\n set: (view, value, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const rightMask = 0xffffffffffffffffn;\n view.setBigInt64(leftOffset, BigInt(value) >> 64n, le);\n view.setBigUint64(rightOffset, BigInt(value) & rightMask, le);\n },\n size: 16,\n });\n\n/**\n * Returns a decoder for 128-bit signed integers (`i128`).\n *\n * This decoder deserializes `i128` values from 16 bytes.\n * The decoded value is always a `bigint`.\n *\n * For more details, see {@link getI128Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder<bigint, 16>` for decoding `i128` values.\n *\n * @example\n * Decoding an `i128` value.\n * ```ts\n * const decoder = getI128Decoder();\n * const value = decoder.decode(new Uint8Array([\n * 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n * 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff\n * ])); // -42n\n * ```\n *\n * @see {@link getI128Codec}\n */\nexport const getI128Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 16> =>\n numberDecoderFactory({\n config,\n get: (view, le) => {\n const leftOffset = le ? 8 : 0;\n const rightOffset = le ? 0 : 8;\n const left = view.getBigInt64(leftOffset, le);\n const right = view.getBigUint64(rightOffset, le);\n return (left << 64n) + right;\n },\n name: 'i128',\n size: 16,\n });\n\n/**\n * Returns a codec for encoding and decoding 128-bit signed integers (`i128`).\n *\n * This codec serializes `i128` values using 16 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `bigint`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec<number | bigint, bigint, 16>` for encoding and decoding `i128` values.\n *\n * @example\n * Encoding and decoding an `i128` value.\n * ```ts\n * const codec = getI128Codec();\n * const bytes = codec.encode(-42n); // 0xd6ffffffffffffffffffffffffffffff\n * const value = codec.decode(bytes); // -42n\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI128Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42n); // 0xffffffffffffffffffffffffffffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^127` and `2^127 - 1`.\n * Since JavaScript `number` cannot safely represent values beyond `2^53 - 1`, the decoded value is always a `bigint`.\n *\n * - If you need a smaller signed integer, consider using {@link getI64Codec} or {@link getI32Codec}.\n * - If you need a larger signed integer, consider using a custom codec.\n * - If you need unsigned integers, consider using {@link getU128Codec}.\n *\n * Separate {@link getI128Encoder} and {@link getI128Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI128Encoder().encode(-42);\n * const value = getI128Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI128Encoder}\n * @see {@link getI128Decoder}\n */\nexport const getI128Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 16> =>\n combineCodec(getI128Encoder(config), getI128Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 16-bit signed integers (`i16`).\n *\n * This encoder serializes `i16` values using 2 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI16Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder<number | bigint, 2>` for encoding `i16` values.\n *\n * @example\n * Encoding an `i16` value.\n * ```ts\n * const encoder = getI16Encoder();\n * const bytes = encoder.encode(-42); // 0xd6ff\n * ```\n *\n * @see {@link getI16Codec}\n */\nexport const getI16Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 2> =>\n numberEncoderFactory({\n config,\n name: 'i16',\n range: [-Number('0x7fff') - 1, Number('0x7fff')],\n set: (view, value, le) => view.setInt16(0, Number(value), le),\n size: 2,\n });\n\n/**\n * Returns a decoder for 16-bit signed integers (`i16`).\n *\n * This decoder deserializes `i16` values from 2 bytes.\n * The decoded value is always a `number`.\n *\n * For more details, see {@link getI16Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder<number, 2>` for decoding `i16` values.\n *\n * @example\n * Decoding an `i16` value.\n * ```ts\n * const decoder = getI16Decoder();\n * const value = decoder.decode(new Uint8Array([0xd6, 0xff])); // -42\n * ```\n *\n * @see {@link getI16Codec}\n */\nexport const getI16Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 2> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt16(0, le),\n name: 'i16',\n size: 2,\n });\n\n/**\n * Returns a codec for encoding and decoding 16-bit signed integers (`i16`).\n *\n * This codec serializes `i16` values using 2 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `number`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec<number | bigint, number, 2>` for encoding and decoding `i16` values.\n *\n * @example\n * Encoding and decoding an `i16` value.\n * ```ts\n * const codec = getI16Codec();\n * const bytes = codec.encode(-42); // 0xd6ff\n * const value = codec.decode(bytes); // -42\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI16Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42); // 0xffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^15` (`-32,768`) and `2^15 - 1` (`32,767`).\n *\n * - If you need a smaller signed integer, consider using {@link getI8Codec}.\n * - If you need a larger signed integer, consider using {@link getI32Codec}.\n * - If you need unsigned integers, consider using {@link getU16Codec}.\n *\n * Separate {@link getI16Encoder} and {@link getI16Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI16Encoder().encode(-42);\n * const value = getI16Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI16Encoder}\n * @see {@link getI16Decoder}\n */\nexport const getI16Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 2> =>\n combineCodec(getI16Encoder(config), getI16Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 32-bit signed integers (`i32`).\n *\n * This encoder serializes `i32` values using 4 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder<number | bigint, 4>` for encoding `i32` values.\n *\n * @example\n * Encoding an `i32` value.\n * ```ts\n * const encoder = getI32Encoder();\n * const bytes = encoder.encode(-42); // 0xd6ffffff\n * ```\n *\n * @see {@link getI32Codec}\n */\nexport const getI32Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 4> =>\n numberEncoderFactory({\n config,\n name: 'i32',\n range: [-Number('0x7fffffff') - 1, Number('0x7fffffff')],\n set: (view, value, le) => view.setInt32(0, Number(value), le),\n size: 4,\n });\n\n/**\n * Returns a decoder for 32-bit signed integers (`i32`).\n *\n * This decoder deserializes `i32` values from 4 bytes.\n * The decoded value is always a `number`.\n *\n * For more details, see {@link getI32Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder<number, 4>` for decoding `i32` values.\n *\n * @example\n * Decoding an `i32` value.\n * ```ts\n * const decoder = getI32Decoder();\n * const value = decoder.decode(new Uint8Array([0xd6, 0xff, 0xff, 0xff])); // -42\n * ```\n *\n * @see {@link getI32Codec}\n */\nexport const getI32Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<number, 4> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getInt32(0, le),\n name: 'i32',\n size: 4,\n });\n\n/**\n * Returns a codec for encoding and decoding 32-bit signed integers (`i32`).\n *\n * This codec serializes `i32` values using 4 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `number`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec<number | bigint, number, 4>` for encoding and decoding `i32` values.\n *\n * @example\n * Encoding and decoding an `i32` value.\n * ```ts\n * const codec = getI32Codec();\n * const bytes = codec.encode(-42); // 0xd6ffffff\n * const value = codec.decode(bytes); // -42\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI32Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42); // 0xffffffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^31` (`-2,147,483,648`) and `2^31 - 1` (`2,147,483,647`).\n *\n * - If you need a smaller signed integer, consider using {@link getI16Codec} or {@link getI8Codec}.\n * - If you need a larger signed integer, consider using {@link getI64Codec}.\n * - If you need unsigned integers, consider using {@link getU32Codec}.\n *\n * Separate {@link getI32Encoder} and {@link getI32Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI32Encoder().encode(-42);\n * const value = getI32Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI32Encoder}\n * @see {@link getI32Decoder}\n */\nexport const getI32Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, number, 4> =>\n combineCodec(getI32Encoder(config), getI32Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { NumberCodecConfig } from './common';\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 64-bit signed integers (`i64`).\n *\n * This encoder serializes `i64` values using 8 bytes.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeEncoder<number | bigint, 8>` for encoding `i64` values.\n *\n * @example\n * Encoding an `i64` value.\n * ```ts\n * const encoder = getI64Encoder();\n * const bytes = encoder.encode(-42n); // 0xd6ffffffffffffff\n * ```\n *\n * @see {@link getI64Codec}\n */\nexport const getI64Encoder = (config: NumberCodecConfig = {}): FixedSizeEncoder<bigint | number, 8> =>\n numberEncoderFactory({\n config,\n name: 'i64',\n range: [-BigInt('0x7fffffffffffffff') - 1n, BigInt('0x7fffffffffffffff')],\n set: (view, value, le) => view.setBigInt64(0, BigInt(value), le),\n size: 8,\n });\n\n/**\n * Returns a decoder for 64-bit signed integers (`i64`).\n *\n * This decoder deserializes `i64` values from 8 bytes.\n * The decoded value is always a `bigint`.\n *\n * For more details, see {@link getI64Codec}.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeDecoder<bigint, 8>` for decoding `i64` values.\n *\n * @example\n * Decoding an `i64` value.\n * ```ts\n * const decoder = getI64Decoder();\n * const value = decoder.decode(new Uint8Array([\n * 0xd6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff\n * ])); // -42n\n * ```\n *\n * @see {@link getI64Codec}\n */\nexport const getI64Decoder = (config: NumberCodecConfig = {}): FixedSizeDecoder<bigint, 8> =>\n numberDecoderFactory({\n config,\n get: (view, le) => view.getBigInt64(0, le),\n name: 'i64',\n size: 8,\n });\n\n/**\n * Returns a codec for encoding and decoding 64-bit signed integers (`i64`).\n *\n * This codec serializes `i64` values using 8 bytes.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `bigint`.\n *\n * @param config - Optional configuration to specify endianness (little by default).\n * @returns A `FixedSizeCodec<number | bigint, bigint, 8>` for encoding and decoding `i64` values.\n *\n * @example\n * Encoding and decoding an `i64` value.\n * ```ts\n * const codec = getI64Codec();\n * const bytes = codec.encode(-42n); // 0xd6ffffffffffffff\n * const value = codec.decode(bytes); // -42n\n * ```\n *\n * @example\n * Using big-endian encoding.\n * ```ts\n * const codec = getI64Codec({ endian: Endian.Big });\n * const bytes = codec.encode(-42n); // 0xffffffffffffffd6\n * ```\n *\n * @remarks\n * This codec supports values between `-2^63` and `2^63 - 1`.\n * Since JavaScript `number` cannot safely represent values beyond `2^53 - 1`, the decoded value is always a `bigint`.\n *\n * - If you need a smaller signed integer, consider using {@link getI32Codec} or {@link getI16Codec}.\n * - If you need a larger signed integer, consider using {@link getI128Codec}.\n * - If you need unsigned integers, consider using {@link getU64Codec}.\n *\n * Separate {@link getI64Encoder} and {@link getI64Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI64Encoder().encode(-42);\n * const value = getI64Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI64Encoder}\n * @see {@link getI64Decoder}\n */\nexport const getI64Codec = (config: NumberCodecConfig = {}): FixedSizeCodec<bigint | number, bigint, 8> =>\n combineCodec(getI64Encoder(config), getI64Decoder(config));\n","import { combineCodec, FixedSizeCodec, FixedSizeDecoder, FixedSizeEncoder } from '@solana/codecs-core';\n\nimport { numberDecoderFactory, numberEncoderFactory } from './utils';\n\n/**\n * Returns an encoder for 8-bit signed integers (`i8`).\n *\n * This encoder serializes `i8` values using 1 byte.\n * Values can be provided as either `number` or `bigint`.\n *\n * For more details, see {@link getI8Codec}.\n *\n * @returns A `FixedSizeEncoder<number | bigint, 1>` for encoding `i8` values.\n *\n * @example\n * Encoding an `i8` value.\n * ```ts\n * const encoder = getI8Encoder();\n * const bytes = encoder.encode(-42); // 0xd6\n * ```\n *\n * @see {@link getI8Codec}\n */\nexport const getI8Encoder = (): FixedSizeEncoder<bigint | number, 1> =>\n numberEncoderFactory({\n name: 'i8',\n range: [-Number('0x7f') - 1, Number('0x7f')],\n set: (view, value) => view.setInt8(0, Number(value)),\n size: 1,\n });\n\n/**\n * Returns a decoder for 8-bit signed integers (`i8`).\n *\n * This decoder deserializes `i8` values from 1 byte.\n * The decoded value is always a `number`.\n *\n * For more details, see {@link getI8Codec}.\n *\n * @returns A `FixedSizeDecoder<number, 1>` for decoding `i8` values.\n *\n * @example\n * Decoding an `i8` value.\n * ```ts\n * const decoder = getI8Decoder();\n * const value = decoder.decode(new Uint8Array([0xd6])); // -42\n * ```\n *\n * @see {@link getI8Codec}\n */\nexport const getI8Decoder = (): FixedSizeDecoder<number, 1> =>\n numberDecoderFactory({\n get: view => view.getInt8(0),\n name: 'i8',\n size: 1,\n });\n\n/**\n * Returns a codec for encoding and decoding 8-bit signed integers (`i8`).\n *\n * This codec serializes `i8` values using 1 byte.\n * Values can be provided as either `number` or `bigint`, but the decoded value is always a `number`.\n *\n * @returns A `FixedSizeCodec<number | bigint, number, 1>` for encoding and decoding `i8` values.\n *\n * @example\n * Encoding and decoding an `i8` value.\n * ```ts\n * const codec = getI8Codec();\n * const bytes = codec.encode(-42); // 0xd6\n * const value = codec.decode(bytes); // -42\n * ```\n *\n * @remarks\n * This codec supports values between `-2^7` (`-128`) and `2^7 - 1` (`127`).\n *\n * - If you need a larger signed integer, consider using {@link getI16Codec}.\n * - If you need an unsigned integer, consider using {@link getU8Codec}.\n *\n * Separate {@link getI8Encoder} and {@link getI8Decoder} functions are available.\n *\n * ```ts\n * const bytes = getI8Encoder().encode(-42);\n * const value = getI8Decoder().decode(bytes);\n * ```\n *\n * @see {@link getI8Encoder}\n * @see {@link getI8Decoder}\n */\nexport const getI8Codec = (): FixedSizeCodec<bigint | number, number, 1> =>\n combineCodec(getI8Encoder(), getI8Decoder());\n","import {\n combineCodec,\n createDecoder,\n createEncoder,\n Offset,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\n\nimport { assertNumberIsBetweenForCodec } from './assertions';\n\n/**\n * Returns an encoder for `shortU16` values.\n *\n * This encoder serializes `shortU16` values using **1 to 3 bytes**.\n * Smaller values use fewer bytes, while larger values take up more space.\n *\n * For more details, see {@link getShortU16Codec}.\n *\n * @returns A `VariableSizeEncoder<number | bigint>` for encoding `shortU16` values.\n *\n * @example\n * Encoding a `shortU16` value.\n * ```ts\n * const encoder = getShortU16Encoder();\n * encoder.encode(42); // 0x2a\n * encoder.encode(128); // 0x8001\n * encoder.encode(16384); // 0x808001\n * ```\n *\n * @see {@link getShortU16Codec}\n */\nexport const getShortU16Encoder = (): VariableSizeEncoder<bigint | number> =>\n createEncoder({\n getSizeFromValue: (value: bigint | number): number => {\n if (value <= 0b01111111) return 1;\n if (value <= 0b0011111111111111) return 2;\n return 3;\n },\n maxSize: 3,\n write: (value: bigint | number, bytes: Uint8Array, offset: Offset): Offset => {\n assertNumberIsBetweenForCodec('shortU16', 0, 65535, value);\n const shortU16Bytes = [0];\n for (let ii = 0; ; ii += 1) {\n // Shift the bits of the value over such that the next 7 bits are at the right edge.\n const alignedValue = Number(value) >> (ii * 7);\n if (alignedValue === 0) {\n // No more bits to consume.\n break;\n }\n // Extract those 7 bits using a mask.\n const nextSevenBits = 0b1111111 & alignedValue;\n shortU16Bytes[ii] = nextSevenBits;\n if (ii > 0) {\n // Set the continuation bit of the previous slice.\n shortU16Bytes[ii - 1] |= 0b10000000;\n }\n }\n bytes.set(shortU16Bytes, offset);\n return offset + shortU16Bytes.length;\n },\n });\n\n/**\n * Returns a decoder for `shortU16` values.\n *\n * This decoder deserializes `shortU16` values from **1 to 3 bytes**.\n * The number of bytes used depends on the encoded value.\n *\n * For more details, see {@link getShortU16Codec}.\n *\n * @returns A `VariableSizeDecoder<number>` for decoding `shortU16` values.\n *\n * @example\n * Decoding a `shortU16` value.\n * ```ts\n * const decoder = getShortU16Decoder();\n * decoder.decode(new Uint8Array([0x2a])); // 42\n * decoder.decode(new Uint8Array([0x80, 0x01])); // 128\n * decoder.decode(new Uint8Array([0x80, 0x80, 0x01])); // 16384\n * ```\n *\n * @see {@link getShortU16Codec}\n */\nexport const getShortU16Decoder = (): VariableSizeDecoder<number> =>\n createDecoder({\n maxSize: 3,\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset): [number, Offset] => {\n let value = 0;\n let byteCount = 0;\n while (++byteCount) {\n const byteIndex = byteCount - 1;\n const currentByte = bytes[offset + byteIndex];\n const nextSevenBits = 0b1111111 & currentByte;\n // Insert the next group of seven bits into the correct slot of the output value.\n value |= nextSevenBits << (byteIndex * 7);\n if ((currentByte & 0b10000000) === 0) {\n // This byte does not have its continuation bit set. We're done.\n break;\n }\n }\n return [value, offset + byteCount];\n },\n });\n\n/**\n * Returns a codec for encoding and decoding `shortU16` values.\n *\n * It serializes unsigned integers using **1 to 3 bytes** based on the encoded value.\n * The larger the value, the more bytes it uses.\n *\n * - If the value is `<= 0x7f` (127), it is stored in a **single byte**\n * and the first bit is set to `0` to indicate the end of the value.\n * - Otherwise, the first bit is set to `1` to indicate that the value continues in the next byte, which follows the same pattern.\n * - This process repeats until the value is fully encoded in up to 3 bytes. The third and last byte, if needed, uses all 8 bits to store the remaining value.\n *\n * In other words, the encoding scheme follows this structure:\n *\n * ```txt\n * 0XXXXXXX <- Values 0 to 127 (1 byte)\n * 1XXXXXXX 0XXXXXXX <- Values 128 to 16,383 (2 bytes)\n * 1XXXXXXX 1XXXXXXX XXXXXXXX <- Values 16,384 to 4,194,303 (3 bytes)\n * ```\n *\n * @returns A `VariableSizeCodec<number | bigint, number>` for encoding and decoding `shortU16` values.\n *\n * @example\n * Encoding and decoding `shortU16` values.\n * ```ts\n * const codec = getShortU16Codec();\n * const bytes1 = codec.encode(42); // 0x2a\n * const bytes2 = codec.encode(128); // 0x8001\n * const bytes3 = codec.encode(16384); // 0x808001\n