UNPKG

@solana/codecs-data-structures

Version:

Codecs for various data structures

1 lines 174 kB
{"version":3,"sources":["../src/assertions.ts","../src/utils.ts","../src/array.ts","../src/bit-array.ts","../src/boolean.ts","../src/bytes.ts","../src/enum.ts","../src/constant.ts","../src/tuple.ts","../src/union.ts","../src/discriminated-union.ts","../src/enum-helpers.ts","../src/hidden-prefix.ts","../src/hidden-suffix.ts","../src/literal-union.ts","../src/map.ts","../src/unit.ts","../src/nullable.ts","../src/set.ts","../src/struct.ts"],"names":["newOffset","createEncoder","createDecoder","combineCodec","SolanaError","getEncodedSize","isFixedSize","getU8Encoder","transformEncoder","getU8Decoder","transformDecoder","containsBytes"],"mappings":"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","file":"index.node.mjs","sourcesContent":["import { SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, SolanaError } from '@solana/errors';\n\n/** Checks the number of items in an array-like structure is expected. */\nexport function assertValidNumberOfItemsForCodec(\n codecDescription: string,\n expected: bigint | number,\n actual: bigint | number,\n) {\n if (expected !== actual) {\n throw new SolanaError(SOLANA_ERROR__CODECS__INVALID_NUMBER_OF_ITEMS, {\n actual,\n codecDescription,\n expected,\n });\n }\n}\n","import { isFixedSize } from '@solana/codecs-core';\n\n/**\n * Functionally, this type helper is equivalent to the identity type — i.e. `type Identity<T> = T`.\n * However, wrapping generic object mappings in this type significantly reduces the number\n * of instantiation expressions processed, which increases TypeScript performance and\n * prevents \"Type instantiation is excessively deep and possibly infinite\" errors.\n *\n * This works because TypeScript doesn't create a new level of nesting when encountering conditional generic types.\n * @see https://github.com/microsoft/TypeScript/issues/34933\n * @see https://github.com/kysely-org/kysely/pull/483\n */\nexport type DrainOuterGeneric<T> = [T] extends [unknown] ? T : never;\n\nexport function maxCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce(\n (all, size) => (all === null || size === null ? null : Math.max(all, size)),\n 0 as number | null,\n );\n}\n\nexport function sumCodecSizes(sizes: (number | null)[]): number | null {\n return sizes.reduce((all, size) => (all === null || size === null ? null : all + size), 0 as number | null);\n}\n\nexport function getFixedSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : null;\n}\n\nexport function getMaxSize(codec: { fixedSize: number } | { maxSize?: number }): number | null {\n return isFixedSize(codec) ? codec.fixedSize : (codec.maxSize ?? null);\n}\n","import {\n Codec,\n combineCodec,\n createDecoder,\n createEncoder,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n getEncodedSize,\n ReadonlyUint8Array,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport { getU32Decoder, getU32Encoder, NumberCodec, NumberDecoder, NumberEncoder } from '@solana/codecs-numbers';\n\nimport { assertValidNumberOfItemsForCodec } from './assertions';\nimport { getFixedSize, getMaxSize } from './utils';\n\n/**\n * Defines the possible size strategies for array-like codecs (`array`, `map`, and `set`).\n *\n * The size of the collection can be determined using one of the following approaches:\n * - A {@link NumberCodec}, {@link NumberDecoder}, or {@link NumberEncoder} to store a size prefix.\n * - A fixed `number` of items, enforcing an exact length.\n * - The string `\"remainder\"`, which infers the number of items by consuming the rest of the available bytes.\n * This option is only available when encoding fixed-size items.\n *\n * @typeParam TPrefix - A number codec, decoder, or encoder used for size prefixing.\n */\nexport type ArrayLikeCodecSize<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> =\n | TPrefix\n | number\n | 'remainder';\n\n/**\n * Defines the configuration options for array codecs.\n *\n * @typeParam TPrefix - A number codec, decoder, or encoder used for size prefixing.\n */\nexport type ArrayCodecConfig<TPrefix extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * Specifies how the size of the array is determined.\n *\n * - A {@link NumberCodec}, {@link NumberDecoder}, or {@link NumberEncoder} stores a size prefix before encoding the array.\n * - A `number` enforces a fixed number of elements.\n * - `\"remainder\"` uses all remaining bytes to infer the array length (only for fixed-size items).\n *\n * @defaultValue A `u32` size prefix.\n */\n size?: ArrayLikeCodecSize<TPrefix>;\n};\n\n/**\n * Returns an encoder for arrays of values.\n *\n * This encoder serializes arrays by encoding each element using the provided item encoder.\n * By default, a `u32` size prefix is included to indicate the number of items in the array.\n * The `size` option can be used to modify this behaviour.\n *\n * For more details, see {@link getArrayCodec}.\n *\n * @typeParam TFrom - The type of the elements in the array.\n *\n * @param item - The encoder for each item in the array.\n * @param config - Optional configuration for the size encoding strategy.\n * @returns A `VariableSizeEncoder<TFrom[]>` for encoding arrays.\n *\n * @example\n * Encoding an array of `u8` numbers.\n * ```ts\n * const encoder = getArrayEncoder(getU8Encoder());\n * const bytes = encoder.encode([1, 2, 3]);\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix telling us to read 3 items.\n * ```\n *\n * @see {@link getArrayCodec}\n */\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> & { size: 0 },\n): FixedSizeEncoder<TFrom[], 0>;\nexport function getArrayEncoder<TFrom>(\n item: FixedSizeEncoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> & { size: number },\n): FixedSizeEncoder<TFrom[]>;\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config?: ArrayCodecConfig<NumberEncoder>,\n): VariableSizeEncoder<TFrom[]>;\nexport function getArrayEncoder<TFrom>(\n item: Encoder<TFrom>,\n config: ArrayCodecConfig<NumberEncoder> = {},\n): Encoder<TFrom[]> {\n const size = config.size ?? getU32Encoder();\n const fixedSize = computeArrayLikeCodecSize(size, getFixedSize(item));\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createEncoder({\n ...(fixedSize !== null\n ? { fixedSize }\n : {\n getSizeFromValue: (array: TFrom[]) => {\n const prefixSize = typeof size === 'object' ? getEncodedSize(array.length, size) : 0;\n return prefixSize + [...array].reduce((all, value) => all + getEncodedSize(value, item), 0);\n },\n maxSize,\n }),\n write: (array: TFrom[], bytes, offset) => {\n if (typeof size === 'number') {\n assertValidNumberOfItemsForCodec('array', size, array.length);\n }\n if (typeof size === 'object') {\n offset = size.write(array.length, bytes, offset);\n }\n array.forEach(value => {\n offset = item.write(value, bytes, offset);\n });\n return offset;\n },\n });\n}\n\n/**\n * Returns a decoder for arrays of values.\n *\n * This decoder deserializes arrays by decoding each element using the provided item decoder.\n * By default, a `u32` size prefix is expected to indicate the number of items in the array.\n * The `size` option can be used to modify this behaviour.\n *\n * For more details, see {@link getArrayCodec}.\n *\n * @typeParam TTo - The type of the decoded elements in the array.\n *\n * @param item - The decoder for each item in the array.\n * @param config - Optional configuration for the size decoding strategy.\n * @returns A `VariableSizeDecoder<TTo[]>` for decoding arrays.\n *\n * @example\n * Decoding an array of `u8` numbers.\n * ```ts\n * const decoder = getArrayDecoder(getU8Decoder());\n * const array = decoder.decode(new Uint8Array([0x03, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03]));\n * // [1, 2, 3]\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix telling us to read 3 items.\n * ```\n *\n * @see {@link getArrayCodec}\n */\nexport function getArrayDecoder<TTo>(\n item: Decoder<TTo>,\n config: ArrayCodecConfig<NumberDecoder> & { size: 0 },\n): FixedSizeDecoder<TTo[], 0>;\nexport function getArrayDecoder<TTo>(\n item: FixedSizeDecoder<TTo>,\n config: ArrayCodecConfig<NumberDecoder> & { size: number },\n): FixedSizeDecoder<TTo[]>;\nexport function getArrayDecoder<TTo>(\n item: Decoder<TTo>,\n config?: ArrayCodecConfig<NumberDecoder>,\n): VariableSizeDecoder<TTo[]>;\nexport function getArrayDecoder<TTo>(item: Decoder<TTo>, config: ArrayCodecConfig<NumberDecoder> = {}): Decoder<TTo[]> {\n const size = config.size ?? getU32Decoder();\n const itemSize = getFixedSize(item);\n const fixedSize = computeArrayLikeCodecSize(size, itemSize);\n const maxSize = computeArrayLikeCodecSize(size, getMaxSize(item)) ?? undefined;\n\n return createDecoder({\n ...(fixedSize !== null ? { fixedSize } : { maxSize }),\n read: (bytes: ReadonlyUint8Array | Uint8Array, offset) => {\n const array: TTo[] = [];\n if (typeof size === 'object' && bytes.slice(offset).length === 0) {\n return [array, offset];\n }\n\n if (size === 'remainder') {\n while (offset < bytes.length) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n }\n\n const [resolvedSize, newOffset] = typeof size === 'number' ? [size, offset] : size.read(bytes, offset);\n offset = newOffset;\n for (let i = 0; i < resolvedSize; i += 1) {\n const [value, newOffset] = item.read(bytes, offset);\n offset = newOffset;\n array.push(value);\n }\n return [array, offset];\n },\n });\n}\n\n/**\n * Returns a codec for encoding and decoding arrays of values.\n *\n * This codec serializes arrays by encoding each element using the provided item codec.\n * By default, a `u32` size prefix is included to indicate the number of items in the array.\n * The `size` option can be used to modify this behaviour.\n *\n * @typeParam TFrom - The type of the elements to encode.\n * @typeParam TTo - The type of the decoded elements.\n *\n * @param item - The codec for each item in the array.\n * @param config - Optional configuration for the size encoding/decoding strategy.\n * @returns A `VariableSizeCodec<TFrom[], TTo[]>` for encoding and decoding arrays.\n *\n * @example\n * Encoding and decoding an array of `u8` numbers.\n * ```ts\n * const codec = getArrayCodec(getU8Codec());\n * const bytes = codec.encode([1, 2, 3]);\n * // 0x03000000010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 4-byte prefix telling us to read 3 items.\n *\n * const array = codec.decode(bytes);\n * // [1, 2, 3]\n * ```\n *\n * @example\n * Using a `u16` size prefix instead of `u32`.\n * ```ts\n * const codec = getArrayCodec(getU8Codec(), { size: getU16Codec() });\n * const bytes = codec.encode([1, 2, 3]);\n * // 0x0300010203\n * // | └-- 3 items of 1 byte each.\n * // └-- 2-byte prefix telling us to read 3 items.\n * ```\n *\n * @example\n * Using a fixed-size array of 3 items.\n * ```ts\n * const codec = getArrayCodec(getU8Codec(), { size: 3 });\n * codec.encode([1, 2, 3]);\n * // 0x010203\n * // └-- 3 items of 1 byte each. There must always be 3 items in the array.\n * ```\n *\n * @example\n * Using the `\"remainder\"` size strategy.\n * ```ts\n * const codec = getArrayCodec(getU8Codec(), { size: 'remainder' });\n * codec.encode([1, 2, 3]);\n * // 0x010203\n * // └-- 3 items of 1 byte each. The size is inferred from the remainder of the bytes.\n * ```\n *\n * @remarks\n * The size of the array can be controlled using the `size` option:\n * - A `Codec<number>` (e.g. `getU16Codec()`) stores a size prefix before the array.\n * - A `number` enforces a fixed number of elements.\n * - `\"remainder\"` uses all remaining bytes to infer the array length.\n *\n * Separate {@link getArrayEncoder} and {@link getArrayDecoder} functions are available.\n *\n * ```ts\n * const bytes = getArrayEncoder(getU8Encoder()).encode([1, 2, 3]);\n * const array = getArrayDecoder(getU8Decoder()).decode(bytes);\n * ```\n *\n * @see {@link getArrayEncoder}\n * @see {@link getArrayDecoder}\n */\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> & { size: 0 },\n): FixedSizeCodec<TFrom[], TTo[], 0>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: FixedSizeCodec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> & { size: number },\n): FixedSizeCodec<TFrom[], TTo[]>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config?: ArrayCodecConfig<NumberCodec>,\n): VariableSizeCodec<TFrom[], TTo[]>;\nexport function getArrayCodec<TFrom, TTo extends TFrom = TFrom>(\n item: Codec<TFrom, TTo>,\n config: ArrayCodecConfig<NumberCodec> = {},\n): Codec<TFrom[], TTo[]> {\n return combineCodec(getArrayEncoder(item, config as object), getArrayDecoder(item, config as object));\n}\n\nfunction computeArrayLikeCodecSize(size: number | object | 'remainder', itemSize: number | null): number | null {\n if (typeof size !== 'number') return null;\n if (size === 0) return 0;\n return itemSize === null ? null : itemSize * size;\n}\n","import {\n assertByteArrayHasEnoughBytesForCodec,\n combineCodec,\n createDecoder,\n createEncoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n} from '@solana/codecs-core';\n\n/**\n * Defines the configuration options for bit array codecs.\n *\n * A bit array codec encodes an array of booleans into bits, packing them into bytes.\n * This configuration allows adjusting the bit ordering.\n *\n * @see {@link getBitArrayEncoder}\n * @see {@link getBitArrayDecoder}\n * @see {@link getBitArrayCodec}\n */\nexport type BitArrayCodecConfig = {\n /**\n * Determines whether the bits should be read in reverse order.\n *\n * - `false` (default): The first boolean is stored in the most significant bit (MSB-first).\n * - `true`: The first boolean is stored in the least significant bit (LSB-first).\n *\n * @defaultValue `false`\n */\n backward?: boolean;\n};\n\n/**\n * Returns an encoder that packs an array of booleans into bits.\n *\n * This encoder converts a list of `boolean` values into a compact bit representation,\n * storing 8 booleans per byte.\n *\n * The `backward` config option determines whether the bits are stored in MSB-first (`false`)\n * or LSB-first (`true`).\n *\n * For more details, see {@link getBitArrayCodec}.\n *\n * @typeParam TSize - The number of bytes used to store the bit array.\n *\n * @param size - The number of bytes allocated for the bit array (must be sufficient for the expected boolean count).\n * @param config - Configuration options for encoding the bit array.\n * @returns A `FixedSizeEncoder<boolean[], TSize>` for encoding bit arrays.\n *\n * @example\n * Encoding a bit array.\n * ```ts\n * const encoder = getBitArrayEncoder(1);\n *\n * encoder.encode([true, false, true, false, false, false, false, false]);\n * // 0xa0 (0b10100000)\n * ```\n *\n * @see {@link getBitArrayCodec}\n */\nexport function getBitArrayEncoder<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeEncoder<boolean[], TSize> {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createEncoder({\n fixedSize: size,\n write(value: boolean[], bytes, offset) {\n const bytesToAdd: number[] = [];\n\n for (let i = 0; i < size; i += 1) {\n let byte = 0;\n for (let j = 0; j < 8; j += 1) {\n const feature = Number(value[i * 8 + j] ?? 0);\n byte |= feature << (backward ? j : 7 - j);\n }\n if (backward) {\n bytesToAdd.unshift(byte);\n } else {\n bytesToAdd.push(byte);\n }\n }\n\n bytes.set(bytesToAdd, offset);\n return size;\n },\n });\n}\n\n/**\n * Returns a decoder that unpacks bits into an array of booleans.\n *\n * This decoder converts a compact bit representation back into a list of `boolean` values.\n * Each byte is expanded into 8 booleans.\n *\n * The `backward` config option determines whether the bits are read in MSB-first (`false`)\n * or LSB-first (`true`).\n *\n * For more details, see {@link getBitArrayCodec}.\n *\n * @typeParam TSize - The number of bytes used to store the bit array.\n *\n * @param size - The number of bytes allocated for the bit array (must be sufficient for the expected boolean count).\n * @param config - Configuration options for decoding the bit array.\n * @returns A `FixedSizeDecoder<boolean[], TSize>` for decoding bit arrays.\n *\n * @example\n * Decoding a bit array.\n * ```ts\n * const decoder = getBitArrayDecoder(1);\n *\n * decoder.decode(new Uint8Array([0xa0]));\n * // [true, false, true, false, false, false, false, false]\n * ```\n *\n * @see {@link getBitArrayCodec}\n */\nexport function getBitArrayDecoder<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeDecoder<boolean[], TSize> {\n const parsedConfig: BitArrayCodecConfig = typeof config === 'boolean' ? { backward: config } : config;\n const backward = parsedConfig.backward ?? false;\n return createDecoder({\n fixedSize: size,\n read(bytes, offset) {\n assertByteArrayHasEnoughBytesForCodec('bitArray', size, bytes, offset);\n const booleans: boolean[] = [];\n let slice = bytes.slice(offset, offset + size);\n slice = backward ? slice.reverse() : slice;\n\n slice.forEach(byte => {\n for (let i = 0; i < 8; i += 1) {\n if (backward) {\n booleans.push(Boolean(byte & 1));\n byte >>= 1;\n } else {\n booleans.push(Boolean(byte & 0b1000_0000));\n byte <<= 1;\n }\n }\n });\n\n return [booleans, offset + size];\n },\n });\n}\n\n/**\n * Returns a codec that encodes and decodes boolean arrays as compact bit representations.\n *\n * This codec efficiently stores boolean arrays as bits, packing 8 values per byte.\n * The `backward` config option determines whether bits are stored in MSB-first (`false`)\n * or LSB-first (`true`).\n *\n * @typeParam TSize - The number of bytes used to store the bit array.\n *\n * @param size - The number of bytes allocated for the bit array (must be sufficient for the expected boolean count).\n * @param config - Configuration options for encoding and decoding the bit array.\n * @returns A `FixedSizeCodec<boolean[], boolean[], TSize>` for encoding and decoding bit arrays.\n *\n * @example\n * Encoding and decoding a bit array.\n * ```ts\n * const codec = getBitArrayCodec(1);\n *\n * codec.encode([true, false, true, false, false, false, false, false]);\n * // 0xa0 (0b10100000)\n *\n * codec.decode(new Uint8Array([0xa0]));\n * // [true, false, true, false, false, false, false, false]\n * ```\n *\n * @example\n * Encoding and decoding a bit array backwards.\n * ```ts\n * const codec = getBitArrayCodec(1, { backward: true });\n *\n * codec.encode([true, false, true, false, false, false, false, false]);\n * // 0x05 (0b00000101)\n *\n * codec.decode(new Uint8Array([0x05]));\n * // [true, false, true, false, false, false, false, false]\n * ```\n *\n * @remarks\n * Separate {@link getBitArrayEncoder} and {@link getBitArrayDecoder} functions are available.\n *\n * ```ts\n * const bytes = getBitArrayEncoder(1).encode([true, false, true, false]);\n * const value = getBitArrayDecoder(1).decode(bytes);\n * ```\n *\n * @see {@link getBitArrayEncoder}\n * @see {@link getBitArrayDecoder}\n */\nexport function getBitArrayCodec<TSize extends number>(\n size: TSize,\n config: BitArrayCodecConfig | boolean = {},\n): FixedSizeCodec<boolean[], boolean[], TSize> {\n return combineCodec(getBitArrayEncoder(size, config), getBitArrayDecoder(size, config));\n}\n","import {\n Codec,\n combineCodec,\n Decoder,\n Encoder,\n FixedSizeCodec,\n FixedSizeDecoder,\n FixedSizeEncoder,\n transformDecoder,\n transformEncoder,\n VariableSizeCodec,\n VariableSizeDecoder,\n VariableSizeEncoder,\n} from '@solana/codecs-core';\nimport {\n FixedSizeNumberCodec,\n FixedSizeNumberDecoder,\n FixedSizeNumberEncoder,\n getU8Decoder,\n getU8Encoder,\n NumberCodec,\n NumberDecoder,\n NumberEncoder,\n} from '@solana/codecs-numbers';\n\n/**\n * Defines the configuration options for boolean codecs.\n *\n * A boolean codec encodes `true` as `1` and `false` as `0`.\n * The `size` option allows customizing the number codec used for storage.\n *\n * @typeParam TSize - A number codec, encoder, or decoder used for boolean representation.\n *\n * @see {@link getBooleanEncoder}\n * @see {@link getBooleanDecoder}\n * @see {@link getBooleanCodec}\n */\nexport type BooleanCodecConfig<TSize extends NumberCodec | NumberDecoder | NumberEncoder> = {\n /**\n * The number codec used to store boolean values.\n *\n * - By default, booleans are stored as a `u8` (`1` for `true`, `0` for `false`).\n * - A custom number codec can be provided to change the storage size.\n *\n * @defaultValue `u8`\n */\n size?: TSize;\n};\n\n/**\n * Returns an encoder for boolean values.\n *\n * This encoder converts `true` into `1` and `false` into `0`.\n * The `size` option allows customizing the number codec used for storage.\n *\n * For more details, see {@link getBooleanCodec}.\n *\n * @param config - Configuration options for encoding booleans.\n * @returns A `FixedSizeEncoder<boolean, N>` where `N` is the size of the number codec.\n *\n * @example\n * Encoding booleans.\n * ```ts\n * const encoder = getBooleanEncoder();\n *\n * encoder.encode(false); // 0x00\n * encoder.encode(true); // 0x01\n * ```\n *\n * @see {@link getBooleanCodec}\n */\nexport function getBooleanEncoder(): FixedSizeEncoder<boolean, 1>;\nexport function getBooleanEncoder<TSize extends number>(\n config: BooleanCodecConfig<NumberEncoder> & { size: FixedSizeNumberEncoder<TSize> },\n): FixedSizeEncoder<boolean, TSize>;\nexport function getBooleanEncoder(config: BooleanCodecConfig<NumberEncoder>): VariableSizeEncoder<boolean>;\nexport function getBooleanEncoder(config: BooleanCodecConfig<NumberEncoder> = {}): Encoder<boolean> {\n return transformEncoder(config.size ?? getU8Encoder(), (value: boolean) => (value ? 1 : 0));\n}\n\n/**\n * Returns a decoder for boolean values.\n *\n * This decoder reads a number and interprets `1` as `true` and `0` as `false`.\n * The `size` option allows customizing the number codec used for storage.\n *\n * For more details, see {@link getBooleanCodec}.\n *\n * @param config - Configuration options for decoding booleans.\n * @returns A `FixedSizeDecoder<boolean, N>` where `N` is the size of the number codec.\n *\n * @example\n * Decoding booleans.\n * ```ts\n * const decoder = getBooleanDecoder();\n *\n * decoder.decode(new Uint8Array([0x00])); // false\n * decoder.decode(new Uint8Array([0x01])); // true\n * ```\n *\n * @see {@link getBooleanCodec}\n */\nexport function getBooleanDecoder(): FixedSizeDecoder<boolean, 1>;\nexport function getBooleanDecoder<TSize extends number>(\n config: BooleanCodecConfig<NumberDecoder> & { size: FixedSizeNumberDecoder<TSize> },\n): FixedSizeDecoder<boolean, TSize>;\nexport function getBooleanDecoder(config: BooleanCodecConfig<NumberDecoder>): VariableSizeDecoder<boolean>;\nexport function getBooleanDecoder(config: BooleanCodecConfig<NumberDecoder> = {}): Decoder<boolean> {\n return transformDecoder(config.size ?? getU8Decoder(), (value: bigint | number): boolean => Number(value) === 1);\n}\n\n/**\n * Returns a codec for encoding and decoding boolean values.\n *\n * By default, booleans are stored as a `u8` (`1` for `true`, `0` for `false`).\n * The `size` option allows customizing the number codec used for storage.\n *\n * @param config - Configuration options for encoding and decoding booleans.\n * @returns A `FixedSizeC