@fleet-sdk/serializer 0.8.5 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/coders/bigint.ts","../src/coders/vlq.ts","../src/coders/zigZag.ts","../src/coders/numRanges.ts","../src/coders/sigmaByteReader.ts","../src/coders/sigmaByteWriter.ts","../src/types/base.ts","../src/types/primitives.ts","../src/types/monomorphics.ts","../src/types/descriptors.ts","../src/types/generics.ts","../src/types/constructors.ts","../src/serializers/boxSerializer.ts","../src/serializers/dataSerializer.ts","../src/serializers/typeSerializer.ts","../src/sigmaConstant.ts","../src/serializers/transactionSerializer.ts"],"names":["hex","_0n","ensureBigInt","isEmpty","blake2b256","first","assert"],"mappings":"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","file":"index.mjs","sourcesContent":["import { _0n, first } from \"@fleet-sdk/common\";\n\n/**\n * Converts a hex string to bigint.\n * @param hex The hex string to be converted.\n * @returns The bigint value represented by the hex string.\n */\nexport function hexToBigInt(hex: string): bigint {\n // https://coolaj86.com/articles/convert-hex-to-decimal-with-js-bigints/\n const value = BigInt(hex.length % 2 ? `0x0${hex}` : `0x${hex}`);\n const highByte = Number.parseInt(hex.slice(0, 2), 16);\n if (0x80 & highByte) return -negateAndMask(value);\n\n return value;\n}\n\n/**\n * Serializes a `BigInt` to a hex string\n * @param value The bigint value to be serialized\n * @returns Hex representation for the provided `number`.\n */\nexport function bigIntToHex(value: bigint): string {\n // implementation inspired on\n // https://coolaj86.com/articles/convert-decimal-to-hex-with-js-bigints/\n const positive = value >= _0n;\n let hex = (positive ? value : negateAndMask(value)).toString(16);\n if (hex.length % 2) hex = `0${hex}`;\n\n if (positive && 0x80 & Number.parseInt(hex.slice(0, 2), 16)) {\n return `00${hex}`;\n }\n\n return hex;\n}\n\n/**\n * Returns the two’s complement of a bigint value.\n * @param value The bigint value to negate.\n * @returns The two’s complement of `number` as a bigint.\n */\nexport function negateAndMask(value: bigint): bigint {\n let val = value;\n const negative = val < _0n;\n if (negative) val = -val; // turn into a positive number\n\n const bits = val.toString(2);\n let len = bits.length; // convert to binary\n const mod = len % 8;\n\n if (mod > 0) {\n len += 8 - mod;\n } else if (negative && first(bits) === \"1\" && bits.indexOf(\"1\", 1) !== -1) {\n len += 8;\n }\n\n const mask = (1n << BigInt(len)) - 1n; // create a mask\n return (~val & mask) + 1n; // invert bits, mask it, and add one\n}\n","import { _0n, _127n, _128n, _7n, ensureBigInt } from \"@fleet-sdk/common\";\nimport type { SigmaByteReader } from \"./sigmaByteReader\";\nimport type { SigmaByteWriter } from \"./sigmaByteWriter\";\n\n/**\n * A **variable-length quantity (VLQ)** is a universal code that uses an arbitrary number\n * of binary octets (eight-bit bytes) to represent an arbitrarily large integer. A VLQ\n * is essentially a base-128 representation of an unsigned integer with the addition of\n * the eighth bit to mark continuation of bytes. VLQ is identical to LEB128 except in\n * endianness. See the example below.\n */\n\n/**\n * Write an unsigned integer value as VLQ to a `SigmaByteWriter`.\n * @param value: Integer value\n * @param writer: Sigma writer\n * @returns Sigma writer passed as function argument.\n */\nexport function writeVLQ(writer: SigmaByteWriter, value: number): SigmaByteWriter {\n // source: https://stackoverflow.com/a/3564685\n if (value === 0) return writer.write(0);\n if (value < 0) {\n throw new RangeError(\"Variable Length Quantity not supported for negative numbers.\");\n }\n\n let val = value;\n do {\n let lower7bits = val & 0x7f;\n val >>= 7;\n if (val > 0) lower7bits |= 0x80;\n writer.write(lower7bits);\n } while (val > 0);\n\n return writer;\n}\n\n/**\n * Decode VLQ bytes to an unsigned integer value\n * @param reader VLQ bytes\n * @returns Unsigned integer value\n */\nexport function readVLQ(reader: SigmaByteReader): number {\n if (reader.isEmpty) {\n return 0;\n }\n\n let value = 0;\n let shift = 0;\n let lower7bits = 0;\n\n do {\n lower7bits = reader.readByte();\n value |= (lower7bits & 0x7f) << shift;\n shift += 7;\n } while ((lower7bits & 0x80) !== 0);\n\n return value;\n}\n\n/**\n * Write an unsigned integer value as VLQ to a `SigmaByteWriter`.\n * @param value: Big integer value\n * @param writer: Sigma writer\n * @returns Sigma writer passed as function argument.\n */\nexport function writeBigVLQ(writer: SigmaByteWriter, value: bigint): SigmaByteWriter {\n // source: https://stackoverflow.com/a/3564685\n\n if (value === _0n) return writer.write(0);\n if (value < _0n) {\n throw new RangeError(\"Variable Length Quantity not supported for negative numbers\");\n }\n\n let val = value;\n do {\n let lower7bits = Number(val & _127n);\n val >>= _7n;\n if (val > 0) lower7bits |= 0x80;\n writer.write(lower7bits);\n } while (val > 0);\n\n return writer;\n}\n\n/**\n * Decode VLQ bytes to an unsigned big integer value\n * @param reader VLQ bytes\n * @returns Unsigned integer value\n */\nexport function readBigVLQ(reader: SigmaByteReader): bigint {\n if (reader.isEmpty) return _0n;\n\n let value = _0n;\n let shift = _0n;\n let lower7bits = _0n;\n\n do {\n lower7bits = BigInt(reader.readByte());\n value |= (lower7bits & _127n) << shift;\n shift += _7n;\n } while ((lower7bits & _128n) !== _0n);\n\n return value;\n}\n\n/**\n * Estimates the byte size of a given unsigned integer.\n * @param value: the value to be evaluated.\n * @returns the byte size of the value.\n */\nexport function estimateVLQSize(value: number | bigint | string): number {\n let size = 0;\n let val = value;\n if (typeof val === \"number\") {\n do {\n size++;\n val = Math.floor(val / 128);\n } while (val > 0);\n\n return size;\n }\n\n val = ensureBigInt(val);\n do {\n size++;\n val /= _128n;\n } while (val > _0n);\n\n return size;\n}\n","import { _1n, _63n } from \"@fleet-sdk/common\";\n\n/**\n * ZigZag encoding maps signed integers to unsigned integers so that numbers\n * with a small absolute value (for instance, -1) have a small variant encoded\n * value too. It does this in a way that \"zig-zags\" back and forth through the\n * positive and negative integers, so that -1 is encoded as 1, 1 is encoded as 2,\n * -2 is encoded as 3, and so on.\n * @see https://developers.google.com/protocol-buffers/docs/encoding#types\n */\n\nconst _31n = BigInt(31);\n\nconst u64 = (v: bigint) => BigInt.asUintN(64, v);\nconst i64 = (v: bigint) => BigInt.asIntN(64, v);\nconst i32 = (v: bigint) => BigInt.asIntN(32, v);\nconst u32 = (v: bigint) => BigInt.asUintN(32, v);\n\n/**\n * 32-bit ZigZag encoding.\n */\nexport const zigZag32 = {\n encode: (input: bigint | number): bigint => {\n const v = i32(BigInt(input));\n return u64(i32(v << _1n) ^ i32(v >> _31n));\n },\n decode: (input: bigint): number => {\n const v = u32(input);\n return Number((v >> _1n) ^ -(v & _1n));\n }\n};\n\n/**\n * 64-bit ZigZag encoding.\n */\nexport const zigZag64 = {\n encode: (input: bigint): bigint => {\n return u64((input << _1n) ^ (input >> _63n));\n },\n decode: (input: bigint): bigint => {\n return i64((input >> _1n) ^ -(input & _1n));\n }\n};\n","export const MIN_U8 = 0x00;\nexport const MAX_U8 = 0xff;\n\nexport const MIN_I8 = -0x80;\nexport const MAX_I8 = 0x7f;\n\nexport const MIN_I16 = -0x8000;\nexport const MAX_I16 = 0x7fff;\n\nexport const MIN_I32 = -0x80000000;\nexport const MAX_I32 = 0x7fffffff;\n\nexport const MIN_I64 = -BigInt(\"0x8000000000000000\");\nexport const MAX_I64 = BigInt(\"0x7fffffffffffffff\");\n\nexport const MIN_I256 = -BigInt(\n \"0x8000000000000000000000000000000000000000000000000000000000000000\"\n);\n\nexport const MAX_I256 = BigInt(\n \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n);\n","import { isEmpty, startsWith } from \"@fleet-sdk/common\";\nimport { type ByteInput, ensureBytes, hex } from \"@fleet-sdk/crypto\";\nimport { hexToBigInt } from \"./bigint\";\nimport { readBigVLQ, readVLQ } from \"./vlq\";\nimport { zigZag32, zigZag64 } from \"./zigZag\";\nimport { MAX_I8, MAX_U8 } from \"./numRanges\";\n\nexport class SigmaByteReader {\n readonly #bytes: Uint8Array;\n #cursor: number;\n\n get isEmpty(): boolean {\n return this.#bytes.length === this.#cursor;\n }\n\n get bytes(): Uint8Array {\n return this.#bytes;\n }\n\n get cursor(): number {\n return this.#cursor;\n }\n\n constructor(bytes: ByteInput) {\n this.#bytes = ensureBytes(bytes);\n this.#cursor = 0;\n }\n\n readArray<T>(readFn: (reader: SigmaByteReader, index: number) => T): Array<T> {\n const length = this.readUInt();\n const items = new Array<T>(length);\n\n for (let i = 0; i < length; i++) {\n items[i] = readFn(this, i);\n }\n\n return items;\n }\n\n readBool(): boolean {\n return this.readByte() === 0x01;\n }\n\n readBits(length: number): ArrayLike<boolean> {\n const bits = new Array<boolean>(length);\n let bitOffset = 0;\n\n for (let i = 0; i < length; i++) {\n const bit = (this.#bytes[this.#cursor] >> bitOffset++) & 1;\n bits[i] = bit === 1;\n\n if (bitOffset === 8) {\n bitOffset = 0;\n this.#cursor++;\n }\n }\n\n if (bitOffset > 0) this.#cursor++;\n\n return bits;\n }\n\n readByte(): number {\n return this.#bytes[this.#cursor++];\n }\n\n readBytes(length: number): Uint8Array {\n return this.#bytes.subarray(this.#cursor, (this.#cursor += length));\n }\n\n readUInt(): number {\n return readVLQ(this);\n }\n\n readBigUInt(): bigint {\n return readBigVLQ(this);\n }\n\n readI8(): number {\n const byte = this.readByte();\n return byte > MAX_I8 ? byte - (MAX_U8 + 1) : byte;\n }\n\n readI16(): number {\n return zigZag32.decode(readBigVLQ(this));\n }\n\n readI32(): number {\n return zigZag32.decode(readBigVLQ(this));\n }\n\n readI64(): bigint {\n return zigZag64.decode(readBigVLQ(this));\n }\n\n readI256(): bigint {\n const len = readVLQ(this);\n return hexToBigInt(hex.encode(this.readBytes(len)));\n }\n\n /**\n * Returns bytes without advancing the cursor.\n */\n peek(count: number, offset = 0): Uint8Array {\n const begin = this.#cursor + offset;\n return this.#bytes.subarray(begin, begin + count);\n }\n\n /**\n * Checks if the current position in the byte array starts with the given bytes.\n */\n match(bytes: Uint8Array, offset = 0): boolean {\n return startsWith(this.#bytes, bytes, this.#cursor + offset);\n }\n}\n","import { blake2b256, type Coder, hex } from \"@fleet-sdk/crypto\";\nimport { bigIntToHex } from \"./bigint\";\nimport { writeBigVLQ, writeVLQ } from \"./vlq\";\nimport { zigZag32, zigZag64 } from \"./zigZag\";\nimport {\n MIN_I16,\n MAX_I16,\n MIN_I32,\n MAX_I32,\n MIN_I64,\n MAX_I64,\n MIN_I256,\n MAX_I256\n} from \"./numRanges\";\n\nexport class SigmaByteWriter {\n readonly #bytes: Uint8Array;\n #cursor: number;\n\n get length() {\n return this.#cursor;\n }\n\n constructor(length: number) {\n this.#bytes = new Uint8Array(length);\n this.#cursor = 0;\n }\n\n writeBool(value: boolean): SigmaByteWriter {\n this.write(value === true ? 0x01 : 0x00);\n return this;\n }\n\n writeUInt(value: number): SigmaByteWriter {\n return writeVLQ(this, value);\n }\n\n writeBigUInt(value: bigint): SigmaByteWriter {\n return writeBigVLQ(this, value);\n }\n\n writeI16(value: number): SigmaByteWriter {\n if (value < MIN_I16 || value > MAX_I16) {\n throw new RangeError(`Value ${value} is out of range for a 16-bit integer`);\n }\n\n this.writeBigUInt(zigZag32.encode(value));\n return this;\n }\n\n writeI32(value: number): SigmaByteWriter {\n if (value < MIN_I32 || value > MAX_I32) {\n throw new RangeError(`Value ${value} is out of range for a 32-bit integer`);\n }\n\n return this.writeBigUInt(zigZag32.encode(value));\n }\n\n writeI64(value: bigint): SigmaByteWriter {\n if (value < MIN_I64 || value > MAX_I64) {\n throw new RangeError(`Value ${value} is out of range for a 64-bit integer`);\n }\n\n return this.writeBigUInt(zigZag64.encode(value));\n }\n\n writeI256(value: bigint): SigmaByteWriter {\n if (value < MIN_I256 || value > MAX_I256) {\n throw new RangeError(`Value ${value} is out of range for a 256-bit integer`);\n }\n\n const hex = bigIntToHex(value);\n return this.writeUInt(hex.length / 2).writeHex(hex);\n }\n\n write(byte: number): SigmaByteWriter {\n this.#bytes[this.#cursor++] = byte;\n return this;\n }\n\n writeBytes(bytes: ArrayLike<number>): SigmaByteWriter {\n this.#bytes.set(bytes, this.#cursor);\n this.#cursor += bytes.length;\n return this;\n }\n\n writeHex(bytesHex: string): SigmaByteWriter {\n return this.writeBytes(hex.decode(bytesHex));\n }\n\n writeBits(bits: ArrayLike<boolean>): SigmaByteWriter {\n let bitOffset = 0;\n\n for (let i = 0; i < bits.length; i++) {\n if (bits[i]) {\n this.#bytes[this.#cursor] |= 1 << bitOffset++;\n } else {\n this.#bytes[this.#cursor] &= ~(1 << bitOffset++);\n }\n\n if (bitOffset === 8) {\n bitOffset = 0;\n this.#cursor++;\n }\n }\n\n if (bitOffset > 0) this.#cursor++;\n\n return this;\n }\n\n writeChecksum(length = 4, hashFn = blake2b256): SigmaByteWriter {\n const hash = hashFn(this.toBytes());\n return this.writeBytes(length ? hash.subarray(0, length) : hash);\n }\n\n /**\n * Writes a length-delimited array of items to the byte stream using a provided\n * serializer function.\n *\n * @typeParam T - The type of items in the array.\n * @param items - The array of items to serialize and write.\n * @param serializer - A function that serializes each item and writes it using the provided SigmaByteWriter.\n * @returns The current instance of SigmaByteWriter for method chaining.\n */\n writeArray<T>(\n items: T[],\n serializer: (item: T, writer: SigmaByteWriter) => void\n ): SigmaByteWriter {\n this.writeUInt(items.length);\n if (items.length === 0) return this;\n\n for (const item of items) {\n serializer(item, this);\n }\n\n return this;\n }\n\n encode<T>(coder: Coder<Uint8Array, T>): T {\n return coder.encode(this.toBytes());\n }\n\n toBytes(): Uint8Array {\n if (this.#cursor === this.#bytes.length) return this.#bytes;\n return this.#bytes.subarray(0, this.#cursor);\n }\n}\n","export abstract class SType<I = unknown, O = I> {\n abstract get code(): number;\n abstract get embeddable(): boolean;\n\n coerce(data: I): O {\n // a bit hacky but most of types will not need a specific coercion function.\n return data as unknown as O;\n }\n\n abstract toString(): string;\n}\n\nexport abstract class SMonomorphicType<I, O = I> extends SType<I, O> {\n abstract get code(): number;\n\n get embeddable(): boolean {\n return false;\n }\n}\n\nexport abstract class SPrimitiveType<I, O = I> extends SMonomorphicType<I, O> {\n abstract get code(): number;\n\n override get embeddable(): boolean {\n return true;\n }\n}\n\nexport abstract class SGenericType<T extends SType | SType[]> extends SType {\n readonly #internalType: T;\n\n constructor(type: T) {\n super();\n this.#internalType = type;\n }\n\n abstract get code(): number;\n\n get elementsType(): T {\n return this.#internalType;\n }\n\n get embeddable(): boolean {\n return false;\n }\n}\n","import { ensureBigInt } from \"@fleet-sdk/common\";\nimport { hex } from \"@fleet-sdk/crypto\";\nimport type { SConstant } from \"../sigmaConstant\";\nimport { SPrimitiveType } from \"./base\";\nimport type { BigIntInput, ByteInput } from \"./constructors\";\n\nexport class SBoolType extends SPrimitiveType<boolean> {\n get code(): 0x01 {\n return 0x01;\n }\n\n toString(): string {\n return \"SBool\";\n }\n}\n\nexport class SByteType extends SPrimitiveType<number> {\n get code(): 0x02 {\n return 0x02;\n }\n\n toString(): string {\n return \"SByte\";\n }\n}\n\nexport class SShortType extends SPrimitiveType<number> {\n get code(): 0x03 {\n return 0x03;\n }\n\n toString(): string {\n return \"SShort\";\n }\n}\n\nexport class SIntType extends SPrimitiveType<number> {\n get code(): 0x04 {\n return 0x04;\n }\n\n toString(): string {\n return \"SInt\";\n }\n}\n\nexport class SLongType extends SPrimitiveType<BigIntInput, bigint> {\n get code(): 0x05 {\n return 0x05;\n }\n\n override coerce(data: BigIntInput): bigint {\n return ensureBigInt(data);\n }\n\n toString(): string {\n return \"SLong\";\n }\n}\n\nexport class SBigIntType extends SPrimitiveType<string | bigint, bigint> {\n get code(): number {\n return 0x06;\n }\n\n override coerce(data: BigIntInput): bigint {\n return ensureBigInt(data);\n }\n\n toString(): string {\n return \"SBigInt\";\n }\n}\n\nexport class SGroupElementType extends SPrimitiveType<ByteInput, Uint8Array> {\n get code(): 0x07 {\n return 0x07;\n }\n\n override coerce(data: ByteInput): Uint8Array {\n return typeof data === \"string\" ? hex.decode(data) : data;\n }\n\n toString(): string {\n return \"SGroupElement\";\n }\n}\n\nexport class SSigmaPropType extends SPrimitiveType<SConstant<Uint8Array>> {\n get code(): 0x08 {\n return 0x08;\n }\n\n toString(): string {\n return \"SSigmaProp\";\n }\n}\n","import type { Box } from \"@fleet-sdk/common\";\nimport type { SConstant } from \"../sigmaConstant\";\nimport { SMonomorphicType } from \"./base\";\n\nexport class SUnitType extends SMonomorphicType<undefined> {\n get code(): 0x62 {\n return 0x62;\n }\n\n toString(): string {\n return \"SUnit\";\n }\n}\n\nexport class SBoxType extends SMonomorphicType<SConstant<Box<bigint>>> {\n get code(): 0x63 {\n return 0x63;\n }\n\n toString(): string {\n return \"SBox\";\n }\n}\n","import type { SType } from \"./base\";\nimport type { SCollType, STupleType } from \"./generics\";\nimport { SBoxType, SUnitType } from \"./monomorphics\";\nimport {\n SBigIntType,\n SBoolType,\n SByteType,\n SGroupElementType,\n SIntType,\n SLongType,\n SShortType,\n SSigmaPropType\n} from \"./primitives\";\n\nexport const constructorCode = Object.freeze({\n embeddable: 0,\n\n simpleColl: 1,\n nestedColl: 2,\n\n option: 3,\n optionCollection: 4,\n\n pairOne: 5,\n pairTwo: 6,\n symmetricPair: 7,\n genericTuple: 8\n});\n\nconst MAX_PRIMITIVE_TYPE_CODE = 0x0b;\nexport const PRIMITIVE_TYPE_RANGE = MAX_PRIMITIVE_TYPE_CODE + 0x01;\nconst typeCodeOf = (ctor: number) => PRIMITIVE_TYPE_RANGE * ctor;\n\ntype Descriptor = { code: number; embeddable: boolean };\n\nconst collDescriptor = Object.freeze({\n code: typeCodeOf(constructorCode.simpleColl),\n embeddable: false,\n simpleCollTypeCode: typeCodeOf(constructorCode.simpleColl),\n nestedCollTypeCode: typeCodeOf(constructorCode.nestedColl)\n}) satisfies Descriptor;\n\nconst tupleDescriptor = Object.freeze({\n code: typeCodeOf(constructorCode.pairOne),\n embeddable: false,\n pairOneTypeCode: typeCodeOf(constructorCode.pairOne),\n pairTwoTypeCode: typeCodeOf(constructorCode.pairTwo),\n tripleTypeCode: typeCodeOf(constructorCode.pairTwo),\n symmetricPairTypeCode: typeCodeOf(constructorCode.symmetricPair),\n quadrupleTypeCode: typeCodeOf(constructorCode.symmetricPair),\n genericTupleTypeCode: typeCodeOf(constructorCode.genericTuple)\n}) satisfies Descriptor;\n\nexport const descriptors = {\n bool: new SBoolType(),\n byte: new SByteType(),\n short: new SShortType(),\n int: new SIntType(),\n long: new SLongType(),\n bigInt: new SBigIntType(),\n groupElement: new SGroupElementType(),\n sigmaProp: new SSigmaPropType(),\n unit: new SUnitType(),\n box: new SBoxType(),\n coll: collDescriptor,\n tuple: tupleDescriptor\n} satisfies { [key: string]: Descriptor };\n\nexport function isColl(type: SType): type is SCollType {\n return (\n type.code >= descriptors.coll.simpleCollTypeCode &&\n type.code <= descriptors.coll.nestedCollTypeCode + MAX_PRIMITIVE_TYPE_CODE\n );\n}\n\nexport function isTuple(type: SType): type is STupleType {\n return (\n type.code >= descriptors.tuple.pairOneTypeCode &&\n type.code <= descriptors.tuple.genericTupleTypeCode\n );\n}\n\nexport function getPrimitiveType(typeCode: number) {\n switch (typeCode) {\n case descriptors.bool.code:\n return descriptors.bool;\n case descriptors.byte.code:\n return descriptors.byte;\n case descriptors.short.code:\n return descriptors.short;\n case descriptors.int.code:\n return descriptors.int;\n case descriptors.long.code:\n return descriptors.long;\n case descriptors.bigInt.code:\n return descriptors.bigInt;\n case descriptors.groupElement.code:\n return descriptors.groupElement;\n case descriptors.sigmaProp.code:\n return descriptors.sigmaProp;\n default:\n throw new Error(\n `The type code '0x${typeCode.toString(16)}' is not a valid primitive type code.`\n );\n }\n}\n","import { hex } from \"@fleet-sdk/crypto\";\nimport { SGenericType, type SType } from \"./base\";\nimport { descriptors } from \"./descriptors\";\n\nexport class SCollType<T extends SType = SType> extends SGenericType<T> {\n get code(): number {\n return descriptors.coll.code;\n }\n\n override coerce<I, O>(elements: I[]): O[] | Uint8Array {\n if (\n this.elementsType.code === descriptors.byte.code &&\n !(elements instanceof Uint8Array)\n ) {\n return typeof elements === \"string\"\n ? hex.decode(elements)\n : Uint8Array.from(elements as ArrayLike<number>);\n }\n\n return elements.map((el) => this.elementsType.coerce(el)) as O[];\n }\n\n toString(): string {\n return `SColl[${this.elementsType.toString()}]`;\n }\n}\n\nexport class STupleType<T extends SType[] = SType[]> extends SGenericType<T> {\n get code(): number {\n return descriptors.tuple.code;\n }\n\n override coerce<I, O>(elements: I[]): O[] {\n const output = new Array(elements.length);\n for (let i = 0; i < elements.length; i++) {\n output[i] = this.elementsType[i].coerce(elements[i]);\n }\n\n return output;\n }\n\n toString(): string {\n return `(${this.elementsType.map((el) => el.toString()).join(\", \")})`;\n }\n}\n","import { type Box, isEmpty } from \"@fleet-sdk/common\";\nimport { SConstant } from \"../sigmaConstant\";\nimport type { SType } from \"./base\";\nimport { descriptors } from \"./descriptors\";\nimport { SCollType, STupleType } from \"./generics\";\nimport { SBoxType, SUnitType } from \"./monomorphics\";\nimport {\n SBigIntType,\n SBoolType,\n SByteType,\n SGroupElementType,\n SIntType,\n SLongType,\n SShortType,\n SSigmaPropType\n} from \"./primitives\";\n\nexport type BigIntInput = string | bigint;\nexport type ByteInput = Uint8Array | string;\n\nexport type SConstructor<T = unknown, S extends SType = SType | SCollType<SType>> = (\n arg?: T\n) => S;\n\n// biome-ignore lint/suspicious/noExplicitAny: <explanation>\ntype Any = any;\n\ntype Constructable<T = Any> = { new (...args: Any): T };\ntype GenericProxyArgs<R> = R extends (...args: Any) => unknown ? Parameters<R> : [];\n\ntype SProxy<T extends SType, I, O = I> = {\n (value: I): SConstant<O, T>;\n (value?: I): T;\n};\n\n/**\n * Creates a proxy for monomorphic types, this allows constructor\n * functions to be equivalent to their corresponding type.\n *\n * This function will return one instance of `ctor` if not params as set.\n * Otherwise it will return an `SigmaConstant` instance of `ctor` type.\n *\n * @example\n * // SInt is a proxy for SIntType\n * (intConstant instanceof SInt) === true\n * (intConstant instanceof SIntType) === true\n * @param ctor Class to be proxied.\n * @param cache If defined, proxy will return this instead of a new instance of `ctor`.\n * @param forceConstruction If true, bypasses the constant creation and returns a type.\n * @returns\n */\nfunction monoProxy<T extends SType, I, O = I>(\n ctor: Constructable<T>,\n cache?: T,\n forceConstruction?: boolean\n): SProxy<T, I, O> {\n return new Proxy(ctor, {\n apply: (target, _, args) => {\n const instance = cache ?? new target();\n if (!forceConstruction && isEmpty(args)) return instance;\n\n return new (SConstant as Constructable)(instance, ...args);\n }\n }) as Any;\n}\n\n/**\n * Creates a proxy for generic types.\n */\nfunction genericProxy<T extends SType, R>(\n ctor: Constructable<T>,\n handler: (\n target: Constructable<T>,\n thisArgs: unknown,\n args: GenericProxyArgs<R>\n ) => unknown\n) {\n return new Proxy(ctor, {\n apply: handler\n }) as R;\n}\n\nexport const SByte = monoProxy<SByteType, number>(SByteType, descriptors.byte);\n\nexport const SBool = monoProxy<SBoolType, boolean>(SBoolType, descriptors.bool);\n\nexport const SShort = monoProxy<SShortType, number>(SShortType, descriptors.short);\n\nexport const SInt = monoProxy<SIntType, number>(SIntType, descriptors.int);\n\nexport const SLong = monoProxy<SLongType, BigIntInput, bigint>(\n SLongType,\n descriptors.long\n);\n\nexport const SBigInt = monoProxy<SBigIntType, BigIntInput, bigint>(\n SBigIntType,\n descriptors.bigInt\n);\n\nexport const SGroupElement = monoProxy<SGroupElementType, ByteInput, Uint8Array>(\n SGroupElementType,\n descriptors.groupElement\n);\n\nexport const SSigmaProp = monoProxy<SSigmaPropType, SConstant<Uint8Array>>(\n SSigmaPropType,\n descriptors.sigmaProp\n);\n\ntype SUnit = () => SConstant<undefined, SUnitType>;\nexport const SUnit = monoProxy(SUnitType, undefined, true) as unknown as SUnit;\n\ntype SBox = (value?: Box) => SConstant<Box<bigint>, SBoxType>;\nexport const SBox = monoProxy(SBoxType, undefined, true) as unknown as SBox;\n\ntype SColl = {\n <D, T extends SByteType>(\n type: SConstructor<D, T>,\n elements: ByteInput | D[]\n ): SConstant<Uint8Array, T>;\n <D, T extends SByteType>(\n type: SConstructor<D, T>,\n elements: ByteInput[]\n ): SConstant<Uint8Array[], T>;\n\n <D, T extends SType>(type: SConstructor<D, T>): SConstructor<D[], T>;\n <D, T extends SType>(type: SConstructor<D, T>, elements: D[]): SConstant<D[], T>;\n};\n\nexport const SColl = genericProxy<SCollType, SColl>(SCollType, (target, _, args) => {\n const [type, elements] = args;\n const elementsType = type();\n if (!elements) return () => new target(elementsType);\n\n return new SConstant(new target(elementsType), elements);\n});\n\nexport function STuple(...items: SConstant[]) {\n return new SConstant(\n new STupleType(items.map((x) => x.type)),\n items.map((x) => x.data)\n );\n}\n\ntype ByteInputOr<D, T extends SType> = T extends SByteType ? ByteInput | D : D;\ntype SPair = {\n <L, R>(left: SConstant<L>, right: SConstant<R>): SConstant<[L, R], STupleType>;\n <LD, RD, LT extends SType, RT extends SType>(\n left: SConstructor<LD, LT>,\n right: SConstructor<RD, RT>\n ): SConstructor<[ByteInputOr<LD, LT>, ByteInputOr<RD, RT>]>;\n};\n\nexport const SPair = genericProxy<STupleType, SPair>(STupleType, (target, _, args) => {\n const [left, right] = args;\n\n if (typeof left === \"function\" && typeof right === \"function\") {\n return () => new target([left(), right()]);\n }\n\n if (left instanceof SConstant && right instanceof SConstant) {\n return new SConstant(new target([left.type, right.type]), [left.data, right.data]);\n }\n\n throw new Error(\"Invalid tuple declaration.\");\n});\n","import {\n byteSizeOf,\n ensureBigInt,\n ergoTreeHeaderFlags,\n FEE_CONTRACT,\n isDefined,\n isUndefined\n} from \"@fleet-sdk/common\";\nimport type {\n Amount,\n Box,\n BoxCandidate,\n NonMandatoryRegisters,\n TokenAmount\n} from \"@fleet-sdk/common\";\nimport { estimateVLQSize, SigmaByteReader, SigmaByteWriter } from \"../coders\";\nimport { blake2b256, hex, validateEcPoint } from \"@fleet-sdk/crypto\";\nimport type { ByteInput } from \"../types/constructors\";\nimport { SConstant } from \"../sigmaConstant\";\n\nconst MAX_UINT16_VALUE = 65535;\n\nconst FEE_CONTRACT_BYTES = hex.decode(FEE_CONTRACT);\nconst P2PK_CONTRACT_PREFIX = hex.decode(\"0008cd\");\nconst COMPRESSED_PK_LENGTH = 33;\nconst P2PK_CONTRACT_LENGTH = P2PK_CONTRACT_PREFIX.length + COMPRESSED_PK_LENGTH;\n\nexport function serializeBox(\n box: Box<Amount> | BoxCandidate<Amount>,\n writer = new SigmaByteWriter(4_096),\n distinctTokenIds?: string[]\n): SigmaByteWriter {\n writer\n .writeBigUInt(ensureBigInt(box.value))\n .writeHex(box.ergoTree)\n .writeUInt(box.creationHeight);\n\n writeTokens(writer, box.assets, distinctTokenIds);\n writeRegisters(writer, box.additionalRegisters);\n\n if (isDefined(distinctTokenIds)) return writer;\n if (!isBox(box)) throw new Error(\"Invalid box type.\");\n return writer.writeHex(box.transactionId).writeUInt(box.index);\n}\n\nfunction isBox<T extends Amount>(box: Box<Amount> | BoxCandidate<Amount>): box is Box<T> {\n const castedBox = box as Box<T>;\n return isDefined(castedBox.transactionId) && isDefined(castedBox.index);\n}\n\nfunction writeTokens(\n writer: SigmaByteWriter,\n tokens: TokenAmount<Amount>[],\n tokenIds?: string[]\n): void {\n if (tokenIds) {\n writer.writeArray(tokens, (token, w) =>\n w\n .writeUInt(tokenIds.indexOf(token.tokenId))\n .writeBigUInt(ensureBigInt(token.amount))\n );\n } else {\n writer.writeArray(tokens, (token, w) =>\n w.writeHex(token.tokenId).writeBigUInt(ensureBigInt(token.amount))\n );\n }\n}\n\nfunction writeRegisters(writer: SigmaByteWriter, registers: NonMandatoryRegisters): void {\n const keys = Object.keys(registers).sort();\n const values: string[] = [];\n\n for (const key of keys) {\n const value = registers[key as keyof NonMandatoryRegisters];\n if (!value) continue;\n\n values.push(value);\n }\n\n writer.writeArray(values, (value, w) => w.writeHex(value));\n}\n\n/**\n * Estimates the byte size a box.\n * @returns byte size of the box.\n */\nexport function estimateBoxSize(\n box: Box<Amount> | BoxCandidate<Amount>,\n withValue?: Amount\n): number {\n if (isUndefined(box.creationHeight)) {\n throw new Error(\"Box size estimation error: creation height is undefined.\");\n }\n\n let size = 0;\n\n size += estimateVLQSize(isDefined(withValue) ? withValue : box.value);\n size += byteSizeOf(box.ergoTree);\n size += estimateVLQSize(box.creationHeight);\n\n size += estimateVLQSize(box.assets.length);\n for (const asset of box.assets) {\n size += byteSizeOf(asset.tokenId) + estimateVLQSize(asset.amount);\n }\n\n let registersLength = 0;\n for (const key in box.additionalRegisters) {\n const register = box.additionalRegisters[key as keyof NonMandatoryRegisters];\n if (register) {\n size += byteSizeOf(register);\n registersLength++;\n }\n }\n\n size += estimateVLQSize(registersLength);\n size += 32; // transaction id (BLAKE2b 256 hash)\n size += estimateVLQSize(isBox(box) ? box.index : MAX_UINT16_VALUE);\n\n return size;\n}\n\n/**\n * Deserializes a box embedded in a transaction.\n *\n * It efficiently calculates the box ID by accumulating the serialized data during\n * deserialization and applying blake2b256 hashing, avoiding redundant serialization\n * operations.\n *\n * @param reader - SigmaByteReader containing the serialized box data\n * @param distinctTokenIds - Array of TokenIDs referenced in the parent transaction\n * @param transactionId - ID of the transaction containing this box\n * @param index - Index position of the box in the transaction outputs\n * @returns A fully deserialized Box with all properties including boxId\n */\nexport function deserializeEmbeddedBox(\n reader: SigmaByteReader,\n distinctTokenIds: string[],\n transactionId: string,\n index: number\n): Box<bigint> {\n // SigmaByteReader moves the cursor on read, so we need to save the current position to\n // track read bytes.\n let begin = reader.cursor;\n\n const value = reader.readBigUInt();\n const ergoTree = hex.encode(readErgoTree(reader));\n const creationHeight = reader.readUInt();\n\n // Calculating the BoxID needs the full box data, so to avoid serialization road-trips,\n // we will accumulate the the box data in a SigmaByteWriter and then calculate the hash\n // from the its bytes.\n const boxIdWriter = new SigmaByteWriter(4_096) // max size of a box\n .writeBytes(reader.bytes.subarray(begin, reader.cursor)); // copy the bytes read so far\n\n const assets = readTokens(reader, distinctTokenIds);\n\n // TokenIDs need to be written in the full box writer\n boxIdWriter.writeUInt(assets.length);\n for (const asset of assets) {\n boxIdWriter.writeHex(asset.tokenId).writeBigUInt(asset.amount);\n }\n\n begin = reader.cursor; // save the current cursor position again to track the registers bytes\n const additionalRegisters = readRegisters(reader);\n\n boxIdWriter\n .writeBytes(reader.bytes.subarray(begin, reader.cursor)) // write the registers\n .writeHex(transactionId)\n .writeUInt(index);\n\n return {\n boxId: hex.encode(blake2b256(boxIdWriter.toBytes())),\n value,\n ergoTree,\n creationHeight,\n assets,\n additionalRegisters,\n transactionId,\n index\n };\n}\n\nexport function deserializeBox(\n input: ByteInput | SigmaByteReader\n): BoxCandidate<bigint> | Box<bigint> {\n const reader = input instanceof SigmaByteReader ? input : new SigmaByteReader(input);\n const begin = reader.cursor; // save the current cursor position to track the read bytes\n\n const box: Box<bigint> = {\n boxId: \"\", // placeholder, will be calculated later\n value: reader.readBigUInt(),\n ergoTree: hex.encode(readErgoTree(reader)),\n creationHeight: reader.readUInt(),\n assets: readTokens(reader),\n additionalRegisters: readRegisters(reader),\n transactionId: hex.encode(reader.readBytes(32)),\n index: reader.readUInt()\n };\n\n box.boxId = hex.encode(blake2b256(reader.bytes.subarray(begin, reader.cursor)));\n return box;\n}\n\nfunction readErgoTree(reader: SigmaByteReader): Uint8Array {\n // handles miner fee contract\n if (reader.match(FEE_CONTRACT_BYTES)) {\n return reader.readBytes(FEE_CONTRACT_BYTES.length);\n }\n\n // handles P2PK contracts\n if (\n reader.match(P2PK_CONTRACT_PREFIX) &&\n validateEcPoint(reader.peek(COMPRESSED_PK_LENGTH, P2PK_CONTRACT_PREFIX.length))\n ) {\n return reader.readBytes(P2PK_CONTRACT_LENGTH);\n }\n\n // handles contracts with the size flag enabled\n const header = reader.readByte();\n const hasSize = (header & ergoTreeHeaderFlags.sizeInclusion) !== 0;\n if (!hasSize) {\n throw new Error(\"ErgoTree parsing without the size flag is not supported.\");\n }\n\n const size = reader.readUInt();\n return new SigmaByteWriter(1 + 4 + size) // header + vlq size + body\n .write(header)\n .writeUInt(size)\n .writeBytes(reader.readBytes(size))\n .toBytes();\n}\n\nfunction readTokens(reader: SigmaByteReader, tokenIds?: string[]): TokenAmount<bigint>[] {\n return reader.readArray((r) => ({\n tokenId: tokenIds ? tokenIds[r.readUInt()] : hex.encode(r.readBytes(32)),\n amount: r.readBigUInt()\n }));\n}\n\nfunction readRegisters(reader: SigmaByteReader): NonMandatoryRegisters {\n const registers: NonMandatoryRegisters = {};\n const count = reader.readUInt();\n\n for (let i = 0; i < count; i++) {\n // const key = reader.readByte();\n const value = SConstant.from(reader).toHex();\n registers[`R${(i + 4).toString()}` as keyof NonMandatoryRegisters] = value;\n }\n\n return registers;\n}\n","import { assert, type Box } from \"@fleet-sdk/common\";\nimport type { SigmaByteReader, SigmaByteWriter } from \"../coders\";\nimport type { SConstant } from \"../sigmaConstant\";\nimport { isColl, isTuple, type SCollType, type STupleType, type SType } from \"../types\";\nimport { descriptors } from \"../types/descriptors\";\nimport { deserializeBox, serializeBox } from \"./boxSerializer\";\n\nconst GROUP_ELEMENT_LENGTH = 33;\nconst PROVE_DLOG_OP = 0xcd;\n\nexport const dataSerializer = {\n serialize(data: unknown, type: SType, writer: SigmaByteWriter): SigmaByteWriter {\n if (type.embeddable) {\n switch (type.code) {\n case descriptors.bool.code:\n return writer.writeBool(data as boolean);\n case descriptors.byte.code:\n return writer.write(data as number);\n case descriptors.short.code:\n return writer.writeI16(data as number);\n case descriptors.int.code:\n return writer.writeI32(data as number);\n case descriptors.long.code:\n return writer.writeI64(data as bigint);\n case descriptors.bigInt.code:\n return writer.writeI256(data as bigint);\n case descriptors.groupElement.code:\n return writer.writeBytes(data as Uint8Array);\n case descriptors.sigmaProp.code: {\n const node = data as SConstant<SConstant<Uint8Array>>;\n if (node.type === descriptors.groupElement) {\n writer.write(PROVE_DLOG_OP);\n return dataSerializer.serialize(node.data, node.type, writer);\n }\n\n throw Error(\"Serialization error: SigmaProp operation not implemented.\");\n }\n }\n }\n\n if (isColl(type)) {\n if (type.elementsType.code === descriptors.byte.code) {\n assert(\n data instanceof Uint8Array,\n `SColl[Byte] expected an UInt8Array, got ${typeof data}.`\n );\n } else {\n assert(Array.isArray(data), `SColl expected an array, got ${typeof data}.`);\n }\n\n writer.writeUInt(data.length);\n switch (type.elementsType.code) {\n case descriptors.bool.code: {\n return writer.writeBits(data as boolean[]);\n }\n case descriptors.byte.code: {\n return writer.writeBytes(data as Uint8Array);\n }\n default: {\n for (let i = 0; i < data.length; i++) {\n dataSerializer.serialize(data[i], type.elementsType, writer);\n }\n\n return writer;\n }\n }\n }\n\n if (isTuple(type)) {\n assert(\n Array.isArray(data),\n `STupleType serialization expected an array, got ${typeof data}.`\n );\n\n const len = type.elementsType.length;\n for (let i = 0; i < len; i++) {\n dataSerializer.serialize(data[i], type.elementsType[i], writer);\n }\n\n return writer;\n }\n\n if (type.code === descriptors.unit.code) return writer;\n if (type.code === descriptors.box.code) return serializeBox(data as Box, writer);\n\n throw Error(\n `Serialization error: '0x${type.code.toString(16)}' type not implemented.`\n );\n },\n\n deserialize(type: SType, reader: SigmaByteReader): unknown {\n if (type.embeddable) {\n switch (type.code) {\n case descriptors.bool.code:\n return reader.readBool();\n case descriptors.byte.code:\n return reader.readI8();\n case descriptors.short.code:\n return reader.readI16();\n case descriptors.int.code:\n return reader.readI32();\n case descriptors.long.code:\n return reader.readI64();\n case descriptors.bigInt.code:\n return reader.readI256();\n case descriptors.groupElement.code:\n return reader.readBytes(GROUP_ELEMENT_LENGTH);\n case descriptors.sigmaProp.code: {\n if (reader.readByte() === PROVE_DLOG_OP) {\n return this.deserialize(descriptors.groupElement, reader);\n }\n\n break;\n }\n }\n } else {\n switch (type.code) {\n case descriptors.coll.code: {\n const length = reader.readUInt();\n const embeddedType = (type as SCollType).elementsType;\n\n switch (embeddedType.code) {\n case descriptors.bool.code:\n return reader.readBits(length);\n case descriptors.byte.code:\n return reader.readBytes(length);\n default: {\n const elements = new Array(length);\n for (let i = 0; i < length; i++) {\n elements[i] = this.deserialize(embeddedType, reader);\n }\n\n return elements;\n }\n }\n }\n case descriptors.tuple.code: {\n return (type as STupleType).elementsType.map((t) =>\n this.deserialize(t, reader)\n );\n }\n case descriptors.unit.code:\n return undefined;\n case descriptors.box.code:\n return deserializeBox(reader);\n }\n }\n\n throw new Error(`Parsing error: '0x${type.code.toString(16)}' type not implemented.`);\n }\n};\n","import { assert, first, last } from \"@fleet-sdk/common\";\nimport type { SigmaByteReader, SigmaByteWriter } from \"../coders\";\nimport { isColl, isTuple, SCollType, STupleType, type SType } from \"../types\";\nimport {\n constructorCode,\n descriptors,\n getPrimitiveType,\n PRIMITIVE_TYPE_RANGE\n} from \"../types/descriptors\";\n\nexport const typeSerializer = {\n serialize(type: SType, writer: SigmaByteWriter) {\n if (type.embeddable) {\n writer.write(type.code);\n } else if (type.code === descriptors.unit.code) {\n writer.write(type.code);\n } else if (type.code === descriptors.box.code) {\n writer.write(type.code);\n } else if (isColl(type)) {\n if (type.elementsType.embeddable) {\n writer.write(descriptors.coll.simpleCollTypeCode + type.elementsType.code);\n } else if (isColl(type.elementsType)) {\n const nestedColl = type.elementsType;\n if (nestedColl.elementsType.embeddable) {\n writer.write(\n descriptors.coll.nestedCollTypeCode + nestedColl.elementsType.code\n );\n } else {\n writer.write(descriptors.coll.simpleCollTypeCode);\n this.serialize(nestedColl, writer);\n }\n } else {\n writer.write(descriptors.coll.simpleCollTypeCode);\n this.serialize(type.elementsType, writer);\n }\n } else if (isTuple(type)) {\n switch (type.elementsType.length) {\n case 2: {\n const left = first(type.elementsType);\n const right = last(type.elementsType);\n\n if (left.embeddable) {\n if (left.code === right.code) {\n // Symmetric pair of primitive types (`(Int, Int)`, `(Byte,Byte)`, etc.)\n writer.write(descriptors.tuple.symmetricPairTypeCode + left.code);\n } else {\n // Pair of types where first is primitive (`(_, Int)`)\n writer.write(descriptors.tuple.pairOneTypeCode + left.code);\n this.serialize(right, writer);\n }\n } else if (right.embeddable) {\n // Pair of types where second is primitive (`(Int, _)`)\n writer.write(descriptors.tuple.pairTwoTypeCode + right.code);\n this.serialize(left, writer);\n } else {\n // Pair of non-primitive types (`((Int, Byte), (Boolean,Box))`, etc.)\n writer.write(descriptors.tuple.pairOneTypeCode);\n this.serialize(left, writer);\n this.serialize(right, writer);\n }\n\n return;\n }\n case 3:\n writer.write(descriptors.tuple.tripleTypeCode);\n break;\n case 4:\n writer.write(descriptors.tuple.quadrupleTypeCode);\n break;\n default: {\n const len = type.elementsType.length;\n assert(\n len >= 2 && len <= 255,\n \"Invalid type: tuples must have between 2 and 255 items.\"\n );\n\n // Generic tuple\n writer.write(descriptors.tuple.genericTupleTypeCode);\n writer.writeUInt(len);\n }\n }\n\n for (let i = 0; i < type.elementsType.length; i++) {\n this.serialize(type.elementsType[i], writer);\n }\n } else {\n throw new Error(\"Serialization error: type not implemented.\");\n }\n },\n\n deserialize(r: SigmaByteReader): SType {\n const byte = r.readByte();\n assert(byte > 0, `Parsing Error: Unexpected type code '0x${byte.toString(16)}'`);\n\n if (byte < descriptors.tuple.genericTupleTypeCode) {\n const ctorCode = Math.floor(byte / PRIMITIVE_TYPE_RANGE);\n const embdCode = Math.floor(byte % PRIMITIVE_TYPE_RANGE);\n\n switch (ctorCode) {\n case constructorCode.embeddable: {\n return getPrimitiveType(embdCode);\n }\n case constructorCode.simpleColl: {\n const internal =\n embdCode === 0 ? this.deserialize(r) : getPrimitiveType(embdCode);\n\n return new SCollType(internal);\n }\n case constructorCode.nestedColl: {\n return new SCollType(new SCollType(getPrimitiveType(embdCode)));\n }\n case constructorCode.pairOne: {\n const internal =\n embdCode === 0\n ? [this.deserialize(r), this.deserialize(r)] // Pair of non-primitive types (`((Int, Byte), (Boolean,Box))`, etc.)\n : [getPrimitiveType(embdCode), this.deserialize(r)]; // Pair of types where first is primitive (`(_, Int)`)\n\n return new STupleType(internal);\n }\n case constructorCode.pairTwo: {\n const internal =\n embdCode === 0\n ? [this.deserialize(r), this.deserialize(r), this.deserialize(r)] // Triple of types\n : [this.deserialize(r), getPrimitiveType(embdCode)];\n\n return new STupleType(internal);\n }\n case constructorCode.symmetricPair: {\n const internal =\n embdCode === 0\n ? [\n this.deserialize(r),\n this.deserialize(r),\n this.deserialize(r),\n this.deserialize(r)\n ] // Quadruple of types\n : [getPrimitiveType(embdCode), getPrimitiveType(embdCode)]; // Symmetric pair of primitive types (`(Int, Int)`, `(Byte,Byte)`, etc.)\n\n return new STupleType(internal);\n }\n }\n }\n\n switch (byte) {\n case descriptors.tuple.genericTupleTypeCode: {\n const len = r.readUInt();\n const wrapped = new Array<SType>(len);\n for (let i = 0; i < len; i++) {\n wrapped[i] = this.deserialize(r);\n }\n\n return new STupleType(wrapped);\n }\n case descriptors.unit.code:\n return descriptors.unit;\n case descriptors.box.code:\n return descriptors.box;\n }\n\n throw new Error(\"Not implemented.\");\n }\n};\n","import { type ByteInput, hex } from \"@fleet-sdk/crypto\";\nimport { SigmaByteReader, SigmaByteWriter } from \"./coders\";\nimport { dataSerializer } from \"./serializers/dataSerializer\";\nimport { typeSerializer } from \"./serializers/typeSerializer\";\nimport type { SType } from \"./types\";\n\nexport const MAX_CONSTANT_LENGTH = 4096;\n\nexport class SConstant<D = unknown, T extends SType = SType> {\n readonly #type: T;\n readonly #data: D;\n\n constructor(type: T, data: D) {\n this.#type = type;\n this.#data = type.coerce(data) as D;\n }\n\n static from<D, T extends SType = SType>(\n bytes: ByteInput | SigmaByteReader\n ): SConstant<D, T> {\n const reader = bytes instanceof SigmaByteReader ? bytes : new SigmaByteReader(bytes);\n if (reader.isEmpty) throw new Error(\"Empty constant bytes.\");\n\n const type = typeSerializer.deserialize(reader);\n const data = dataSerializer.deserialize(type, reader);\n\n return new SConstant(type as T, data as D);\n }\n\n get type(): T {\n return this.#type;\n }\n\n get data(): D {\n return this.#data;\n }\n\n toBytes(): Uint8Array {\n const writer = new SigmaByteWriter(MAX_CONSTANT_LENGTH);\n typeSerializer.serialize(this.type, writer);\n dataSerializer.serialize(this.data, this.type, writer);\n\n return writer.toBytes();\n }\n\n toHex(): string {\n return hex.encode(this.toBytes());\n }\n}\n\n/**\n * Decodes a byte input into a Sigma constant of type `SConstant<D, T>`.\n *\n * @template D - The data type of the constant.\n * @template T - The type of the constant.\n * @param value - The value to decode.\n * @returns The decoded constant or `undefined` if the value is `undefined` or decoding fails.\n */\nexport function decode<D = unknown, T extends SType = SType>(\n value?: ByteInput\n): SConstant<D, T> | undefined {\n if (value === undefined) return;\n\n try {\n return SConstant.from<D, T>(value);\n } catch {\n return;\n }\n}\n\n/**\n * Returns the `SType` of the given value.\n *\n * @param value - The value to check the SType of.\n * @returns The SType of the value, or `undefined` if the value is `undefined` or\n * deserialization fails.\n */\nexport function stypeof(value?: ByteInput): SType | undefined {\n if (!value) return;\n\n try {\n return typeSerializer.deserialize(new SigmaByteReader(value));\n } catch {\n return;\n }\n}\n\n/** @deprecated use `decode` instead */\nexport function parse<T>(constant: ByteInput): T;\n/** @deprecated use `decode` instead */\nexport function parse<T>(constant: ByteInput, mode: \"strict\"): T;\n/** @deprecated use `decode` instead */\nexport function parse<T>(constant: ByteInput | undefined, mode: \"safe\"): T | undefined;\n/** @deprecated use `decode` instead */\nexport function parse<T>(\n constant: ByteInput | undefined,\n mode: \"strict\" | \"safe\" = \"strict\"\n) {\n if (mode === \"strict\") return SConstant.from<T>(constant ?? \"\").data;\n if (!constant) return;\n\n try {\n return SConstant.from<T>(constant).data;\n } catch {\n return;\n }\n}\n","import type {\n Amount,\n BoxCandidate,\n SignedInput,\n SignedTransaction,\n UnsignedInput,\n UnsignedTransaction\n} from \"@fleet-sdk/common\";\nimport { SigmaByteReader, SigmaByteWriter } from \"../coders\";\nimport { deserializeEmbeddedBox, serializeBox } from \"./boxSerializer\";\nimport { blake2b256, hex } from \"@fleet-sdk/crypto\";\nimport type { ByteInput } from \"../types/constructors\";\nimport { SConstant } from \"../sigmaConstant\";\n\ntype Nullish<T> = T | null | undefined;\ntype Input = UnsignedInput | SignedInput;\ntype Transaction = UnsignedTransaction | SignedTransaction;\n\nexport function serializeTransaction(transaction: Transaction): SigmaByteWriter {\n const tokenIds = getDistinctTokenIds(transaction.outputs);\n\n return new SigmaByteWriter(100_000)\n .writeArray<Input>(transaction.inputs, (input, w) => writeInput(w, input))\n .writeArray(transaction.dataInputs, (dataInput, w) => w.writeHex(dataInput.boxId))\n .writeArray(tokenIds, (tokenId, w) => w.writeHex(tokenId))\n .writeArray(transaction.outputs, (output, w) => serializeBox(output, w, tokenIds));\n}\n\nfunction writeInput(writer: SigmaByteWriter, input: Input): void {\n if (isSignedInput(input)) {\n writeSignedInput(writer, input);\n return;\n }\n\n writeUnsignedInput(writer, input);\n}\n\nfunction writeSignedInput(writer: SigmaByteWriter, input: SignedInput): void {\n writer.writeHex(input.boxId);\n writeProof(writer, input.spendingProof?.proofBytes);\n writeExtension(writer, input.spendingProof?.extension);\n}\n\nfunction writeUnsignedInput(writer: SigmaByteWriter, input: Input): void {\n writer.writeHex(input.boxId);\n writeProof(writer, null);\n writeExtension(\n writer,\n isSignedInput(input) ? input.spendingProof?.extension : input.extension\n );\n}\n\nfunction isSignedInput(input: Input): input is SignedInput {\n return (input as SignedInput).spendingProof !== undefined;\n}\n\nfunction writeProof(writer: SigmaByteWriter, proof: Nullish<string>): void {\n if (!proof) {\n writer.write(0);\n return;\n }\n\n const bytes = hex.decode(proof);\n writer.writeUInt(bytes.length).writeBytes(bytes);\n}\n\nfunction writeExtension(\n writer: SigmaByteWriter,\n extension: Nullish<Record<string, string | undefined>>\n): void {\n if (!extension) {\n writer.write(0);\n return;\n }\n\n const keys = Object.keys(extension);\n const values: [string, string][] = [];\n\n for (const key of keys) {\n const value = extension[key];\n if (!value) continue;\n\n values.push([key, value]);\n }\n\n writer.writeArray(values, ([key, value], w) =>\n w.writeUInt(Number(key)).writeHex(value)\n );\n}\n\nfunction getDistinctTokenIds(outputs: readonly BoxCandidate<Amount>[]) {\n const tokenIds = new Set<string>();\n outputs.flatMap((output) => output.assets.map((asset) => tokenIds.add(asset.tokenId)));\n\n return Array.from(tokenIds);\n}\n\nexport function deserializeTransaction<T extends Transaction>(input: ByteInput): T {\n const reader = new SigmaByteReader(input);\n\n const inputs = reader.readArray(readInput);\n const id = computeId(reader, inputs);\n const dataInputs = reader.readArray((r) => ({ boxId: hex.encode(r.readBytes(32)) }));\n const tokenIds = reader.readArray((r) => hex.encode(r.readBytes(32)));\n const outputs = reader.readArray((r, i) => deserializeEmbeddedBox(r, tokenIds, id, i));\n\n return {\n id,\n inputs,\n dataInputs,\n outputs\n } as T;\n}\n\nfunction readInput(reader: SigmaByteReader): SignedInput | UnsignedInput {\n const boxId = hex.encode(reader.readBytes(32));\n\n const proofLength = reader.readUInt();\n const proofBytes = proofLength > 0 ? hex.encode(reader.readBytes(proofLength)) : null;\n\n const extensionLength = reader.readUInt();\n const extension: Record<string, string> = {};\n for (let i = 0; i < extensionLength; i++) {\n extension[reader.readUInt()] = SConstant.from(reader).toHex();\n }\n\n return proofBytes\n ? { boxId, spendingProof: { proofBytes, extension } }\n : { boxId, extension };\n}\n\n/**\n * Computes the transaction ID by serializing inputs as unsigned (excluding proofs),\n * even for signed transactions.\n */\nfunction computeId(reader: SigmaByteReader, inputs: Input[]): string {\n const bytes = new SigmaByteWriter(reader.bytes.length)\n .writeArray(inputs, (input, writer) => writeUnsignedInput(writer, input)) // write inputs as unsigned\n .writeBytes(reader.bytes.subarray(reader.cursor))\n .toBytes();\n\n return hex.encode(blake2b256(bytes));\n}\n"]}
1
+ {"version":3,"sources":["../src/coders/bigint.ts","../src/coders/numRanges.ts","../src/coders/vlq.ts","../src/coders/zigZag.ts","../src/coders/sigmaByteReader.ts","../src/coders/sigmaByteWriter.ts","../src/types/base.ts","../src/types/primitives.ts","../src/types/monomorphics.ts","../src/types/descriptors.ts","../src/types/generics.ts","../src/types/constructors.ts","../src/serializers/boxSerializer.ts","../src/serializers/dataSerializer.ts","../src/serializers/typeSerializer.ts","../src/sigmaConstant.ts","../src/serializers/transactionSerializer.ts"],"names":["hex","_0n","ensureBigInt","blake2b256","first","assert"],"mappings":"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","file":"index.mjs","sourcesContent":["import { _0n, first } from \"@fleet-sdk/common\";\n\n/**\n * Converts a hex string to bigint.\n * @param hex The hex string to be converted.\n * @returns The bigint value represented by the hex string.\n */\nexport function hexToBigInt(hex: string): bigint {\n // https://coolaj86.com/articles/convert-hex-to-decimal-with-js-bigints/\n const value = BigInt(hex.length % 2 ? `0x0${hex}` : `0x${hex}`);\n const highByte = Number.parseInt(hex.slice(0, 2), 16);\n if (0x80 & highByte) return -negateAndMask(value);\n\n return value;\n}\n\n/**\n * Serializes a `BigInt` to a hex string\n * @param value The bigint value to be serialized\n * @returns Hex representation for the provided `number`.\n */\nexport function bigIntToHex(value: bigint): string {\n // implementation inspired on\n // https://coolaj86.com/articles/convert-decimal-to-hex-with-js-bigints/\n const positive = value >= _0n;\n let hex = (positive ? value : negateAndMask(value)).toString(16);\n if (hex.length % 2) hex = `0${hex}`;\n\n if (positive && 0x80 & Number.parseInt(hex.slice(0, 2), 16)) {\n return `00${hex}`;\n }\n\n return hex;\n}\n\n/**\n * Returns the two’s complement of a bigint value.\n * @param value The bigint value to negate.\n * @returns The two’s complement of `number` as a bigint.\n */\nexport function negateAndMask(value: bigint): bigint {\n let val = value;\n const negative = val < _0n;\n if (negative) val = -val; // turn into a positive number\n\n const bits = val.toString(2);\n let len = bits.length; // convert to binary\n const mod = len % 8;\n\n if (mod > 0) {\n len += 8 - mod;\n } else if (negative && first(bits) === \"1\" && bits.indexOf(\"1\", 1) !== -1) {\n len += 8;\n }\n\n const mask = (1n << BigInt(len)) - 1n; // create a mask\n return (~val & mask) + 1n; // invert bits, mask it, and add one\n}\n","export const MIN_U8 = 0x00;\nexport const MAX_U8 = 0xff;\n\nexport const MIN_I8 = -0x80;\nexport const MAX_I8 = 0x7f;\n\nexport const MIN_I16 = -0x8000;\nexport const MAX_I16 = 0x7fff;\n\nexport const MIN_I32 = -0x80000000;\nexport const MAX_I32 = 0x7fffffff;\n\nexport const MIN_I64 = -BigInt(\"0x8000000000000000\");\nexport const MAX_I64 = BigInt(\"0x7fffffffffffffff\");\n\nexport const MIN_I256 = -BigInt(\n \"0x8000000000000000000000000000000000000000000000000000000000000000\"\n);\n\nexport const MAX_I256 = BigInt(\n \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n);\n","import { _0n, _7n, _127n, _128n, ensureBigInt } from \"@fleet-sdk/common\";\nimport type { SigmaByteReader } from \"./sigmaByteReader\";\nimport type { SigmaByteWriter } from \"./sigmaByteWriter\";\n\n/**\n * A **variable-length quantity (VLQ)** is a universal code that uses an arbitrary number\n * of binary octets (eight-bit bytes) to represent an arbitrarily large integer. A VLQ\n * is essentially a base-128 representation of an unsigned integer with the addition of\n * the eighth bit to mark continuation of bytes. VLQ is identical to LEB128 except in\n * endianness. See the example below.\n */\n\n/**\n * Write an unsigned integer value as VLQ to a `SigmaByteWriter`.\n * @param value: Integer value\n * @param writer: Sigma writer\n * @returns Sigma writer passed as function argument.\n */\nexport function writeVLQ(writer: SigmaByteWriter, value: number): SigmaByteWriter {\n // source: https://stackoverflow.com/a/3564685\n if (value === 0) return writer.write(0);\n if (value < 0) {\n throw new RangeError(\"Variable Length Quantity not supported for negative numbers.\");\n }\n\n let val = value;\n do {\n let lower7bits = val & 0x7f;\n val >>= 7;\n if (val > 0) lower7bits |= 0x80;\n writer.write(lower7bits);\n } while (val > 0);\n\n return writer;\n}\n\n/**\n * Decode VLQ bytes to an unsigned integer value\n * @param reader VLQ bytes\n * @returns Unsigned integer value\n */\nexport function readVLQ(reader: SigmaByteReader): number {\n if (reader.isEmpty) {\n return 0;\n }\n\n let value = 0;\n let shift = 0;\n let lower7bits = 0;\n\n do {\n lower7bits = reader.readByte();\n value |= (lower7bits & 0x7f) << shift;\n shift += 7;\n } while ((lower7bits & 0x80) !== 0);\n\n return value;\n}\n\n/**\n * Write an unsigned integer value as VLQ to a `SigmaByteWriter`.\n * @param value: Big integer value\n * @param writer: Sigma writer\n * @returns Sigma writer passed as function argument.\n */\nexport function writeBigVLQ(writer: SigmaByteWriter, value: bigint): SigmaByteWriter {\n // source: https://stackoverflow.com/a/3564685\n\n if (value === _0n) return writer.write(0);\n if (value < _0n) {\n throw new RangeError(\"Variable Length Quantity not supported for negative numbers\");\n }\n\n let val = value;\n do {\n let lower7bits = Number(val & _127n);\n val >>= _7n;\n if (val > 0) lower7bits |= 0x80;\n writer.write(lower7bits);\n } while (val > 0);\n\n return writer;\n}\n\n/**\n * Decode VLQ bytes to an unsigned big integer value\n * @param reader VLQ bytes\n * @returns Unsigned integer value\n */\nexport function readBigVLQ(reader: SigmaByteReader): bigint {\n if (reader.isEmpty) return _0n;\n\n let value = _0n;\n let shift = _0n;\n let lower7bits: bigint;\n\n do {\n lower7bits = BigInt(reader.readByte());\n value |= (lower7bits & _127n) << shift;\n shift += _7n;\n } while ((lower7bits & _128n) !== _0n);\n\n return value;\n}\n\n/**\n * Estimates the byte size of a given unsigned integer.\n * @param value: the value to be evaluated.\n * @returns the byte size of the value.\n */\nexport function estimateVLQSize(value: number | bigint | string): number {\n let size = 0;\n let val = value;\n if (typeof val === \"number\") {\n do {\n size++;\n val = Math.floor(val / 128);\n } while (val > 0);\n\n return size;\n }\n\n val = ensureBigInt(val);\n do {\n size++;\n val /= _128n;\n } while (val > _0n);\n\n return size;\n}\n","import { _1n, _63n } from \"@fleet-sdk/common\";\n\n/**\n * ZigZag encoding maps signed integers to unsigned integers so that numbers\n * with a small absolute value (for instance, -1) have a small variant encoded\n * value too. It does this in a way that \"zig-zags\" back and forth through the\n * positive and negative integers, so that -1 is encoded as 1, 1 is encoded as 2,\n * -2 is encoded as 3, and so on.\n * @see https://developers.google.com/protocol-buffers/docs/encoding#types\n */\n\nconst _31n = BigInt(31);\n\nconst u64 = (v: bigint) => BigInt.asUintN(64, v);\nconst i64 = (v: bigint) => BigInt.asIntN(64, v);\nconst i32 = (v: bigint) => BigInt.asIntN(32, v);\nconst u32 = (v: bigint) => BigInt.asUintN(32, v);\n\n/**\n * 32-bit ZigZag encoding.\n */\nexport const zigZag32 = {\n encode: (input: bigint | number): bigint => {\n const v = i32(BigInt(input));\n return u64(i32(v << _1n) ^ i32(v >> _31n));\n },\n decode: (input: bigint): number => {\n const v = u32(input);\n return Number((v >> _1n) ^ -(v & _1n));\n }\n};\n\n/**\n * 64-bit ZigZag encoding.\n */\nexport const zigZag64 = {\n encode: (input: bigint): bigint => {\n return u64((input << _1n) ^ (input >> _63n));\n },\n decode: (input: bigint): bigint => {\n return i64((input >> _1n) ^ -(input & _1n));\n }\n};\n","import { startsWith } from \"@fleet-sdk/common\";\nimport { type ByteInput, ensureBytes, hex } from \"@fleet-sdk/crypto\";\nimport { hexToBigInt } from \"./bigint\";\nimport { MAX_I8, MAX_U8 } from \"./numRanges\";\nimport { readBigVLQ, readVLQ } from \"./vlq\";\nimport { zigZag32, zigZag64 } from \"./zigZag\";\n\nexport class SigmaByteReader {\n readonly #bytes: Uint8Array;\n #cursor: number;\n\n get isEmpty(): boolean {\n return this.#bytes.length === this.#cursor;\n }\n\n get bytes(): Uint8Array {\n return this.#bytes;\n }\n\n get cursor(): number {\n return this.#cursor;\n }\n\n constructor(bytes: ByteInput) {\n this.#bytes = ensureBytes(bytes);\n this.#cursor = 0;\n }\n\n readArray<T>(readFn: (reader: SigmaByteReader, index: number) => T): Array<T> {\n const length = this.readUInt();\n const items = new Array<T>(length);\n\n for (let i = 0; i < length; i++) {\n items[i] = readFn(this, i);\n }\n\n return items;\n }\n\n readBool(): boolean {\n return this.readByte() === 0x01;\n }\n\n readBits(length: number): ArrayLike<boolean> {\n const bits = new Array<boolean>(length);\n let bitOffset = 0;\n\n for (let i = 0; i < length; i++) {\n const bit = (this.#bytes[this.#cursor] >> bitOffset++) & 1;\n bits[i] = bit === 1;\n\n if (bitOffset === 8) {\n bitOffset = 0;\n this.#cursor++;\n }\n }\n\n if (bitOffset > 0) this.#cursor++;\n\n return bits;\n }\n\n readByte(): number {\n return this.#bytes[this.#cursor++];\n }\n\n readBytes(length: number): Uint8Array {\n return this.#bytes.subarray(this.#cursor, (this.#cursor += length));\n }\n\n readUInt(): number {\n return readVLQ(this);\n }\n\n readBigUInt(): bigint {\n return readBigVLQ(this);\n }\n\n readI8(): number {\n const byte = this.readByte();\n return byte > MAX_I8 ? byte - (MAX_U8 + 1) : byte;\n }\n\n readI16(): number {\n return zigZag32.decode(readBigVLQ(this));\n }\n\n readI32(): number {\n return zigZag32.decode(readBigVLQ(this));\n }\n\n readI64(): bigint {\n return zigZag64.decode(readBigVLQ(this));\n }\n\n readI256(): bigint {\n const len = readVLQ(this);\n return hexToBigInt(hex.encode(this.readBytes(len)));\n }\n\n readRemainingBytes(): Uint8Array {\n return this.readBytes(this.#bytes.length - this.#cursor);\n }\n\n /**\n * Returns bytes without advancing the cursor.\n */\n peek(count: number, offset = 0): Uint8Array {\n const begin = this.#cursor + offset;\n return this.#bytes.subarray(begin, begin + count);\n }\n\n /**\n * Checks if the current position in the byte array starts with the given bytes.\n */\n match(bytes: Uint8Array, offset = 0): boolean {\n return startsWith(this.#bytes, bytes, this.#cursor + offset);\n }\n}\n","import { type Coder, blake2b256, hex } from \"@fleet-sdk/crypto\";\nimport { bigIntToHex } from \"./bigint\";\nimport {\n MAX_I16,\n MAX_I32,\n MAX_I64,\n MAX_I256,\n MIN_I16,\n MIN_I32,\n MIN_I64,\n MIN_I256\n} from \"./numRanges\";\nimport { writeBigVLQ, writeVLQ } from \"./vlq\";\nimport { zigZag32, zigZag64 } from \"./zigZag\";\n\nexport class SigmaByteWriter {\n readonly #bytes: Uint8Array;\n #cursor: number;\n\n get length() {\n return this.#cursor;\n }\n\n constructor(length: number) {\n this.#bytes = new Uint8Array(length);\n this.#cursor = 0;\n }\n\n writeBool(value: boolean): SigmaByteWriter {\n this.write(value === true ? 0x01 : 0x00);\n return this;\n }\n\n writeUInt(value: number): SigmaByteWriter {\n return writeVLQ(this, value);\n }\n\n writeBigUInt(value: bigint): SigmaByteWriter {\n return writeBigVLQ(this, value);\n }\n\n writeI16(value: number): SigmaByteWriter {\n if (value < MIN_I16 || value > MAX_I16) {\n throw new RangeError(`Value ${value} is out of range for a 16-bit integer`);\n }\n\n this.writeBigUInt(zigZag32.encode(value));\n return this;\n }\n\n writeI32(value: number): SigmaByteWriter {\n if (value < MIN_I32 || value > MAX_I32) {\n throw new RangeError(`Value ${value} is out of range for a 32-bit integer`);\n }\n\n return this.writeBigUInt(zigZag32.encode(value));\n }\n\n writeI64(value: bigint): SigmaByteWriter {\n if (value < MIN_I64 || value > MAX_I64) {\n throw new RangeError(`Value ${value} is out of range for a 64-bit integer`);\n }\n\n return this.writeBigUInt(zigZag64.encode(value));\n }\n\n writeI256(value: bigint): SigmaByteWriter {\n if (value < MIN_I256 || value > MAX_I256) {\n throw new RangeError(`Value ${value} is out of range for a 256-bit integer`);\n }\n\n const hex = bigIntToHex(value);\n return this.writeUInt(hex.length / 2).writeHex(hex);\n }\n\n write(byte: number): SigmaByteWriter {\n this.#bytes[this.#cursor++] = byte;\n return this;\n }\n\n writeBytes(bytes: ArrayLike<number>): SigmaByteWriter {\n this.#bytes.set(bytes, this.#cursor);\n this.#cursor += bytes.length;\n return this;\n }\n\n writeHex(bytesHex: string): SigmaByteWriter {\n return this.writeBytes(hex.decode(bytesHex));\n }\n\n writeBits(bits: ArrayLike<boolean>): SigmaByteWriter {\n let bitOffset = 0;\n\n for (let i = 0; i < bits.length; i++) {\n if (bits[i]) {\n this.#bytes[this.#cursor] |= 1 << bitOffset++;\n } else {\n this.#bytes[this.#cursor] &= ~(1 << bitOffset++);\n }\n\n if (bitOffset === 8) {\n bitOffset = 0;\n this.#cursor++;\n }\n }\n\n if (bitOffset > 0) this.#cursor++;\n\n return this;\n }\n\n writeChecksum(length = 4, hashFn = blake2b256): SigmaByteWriter {\n const hash = hashFn(this.toBytes());\n return this.writeBytes(length ? hash.subarray(0, length) : hash);\n }\n\n /**\n * Writes a length-delimited array of items to the byte stream using a provided\n * serializer function.\n *\n * @typeParam T - The type of items in the array.\n * @param items - The array of items to serialize and write.\n * @param serializer - A function that serializes each item and writes it using the provided SigmaByteWriter.\n * @returns The current instance of SigmaByteWriter for method chaining.\n */\n writeArray<T>(\n items: T[],\n serializer: (writer: SigmaByteWriter, item: T) => void\n ): SigmaByteWriter {\n this.writeUInt(items.length);\n if (items.length === 0) return this;\n\n for (const item of items) {\n serializer(this, item);\n }\n\n return this;\n }\n\n encode<T>(coder: Coder<Uint8Array, T>): T {\n return coder.encode(this.toBytes());\n }\n\n toBytes(): Uint8Array {\n if (this.#cursor === this.#bytes.length) return this.#bytes;\n return this.#bytes.subarray(0, this.#cursor);\n }\n}\n","export abstract class SType<I = unknown, O = I> {\n abstract get code(): number;\n abstract get embeddable(): boolean;\n\n coerce(data: I): O {\n // a bit hacky but most of types will not need a specific coercion function.\n return data as unknown as O;\n }\n\n abstract toString(): string;\n}\n\nexport abstract class SMonomorphicType<I, O = I> extends SType<I, O> {\n abstract get code(): number;\n\n get embeddable(): boolean {\n return false;\n }\n}\n\nexport abstract class SPrimitiveType<I, O = I> extends SMonomorphicType<I, O> {\n abstract get code(): number;\n\n override get embeddable(): boolean {\n return true;\n }\n}\n\nexport abstract class SGenericType<T extends SType | SType[]> extends SType {\n readonly #internalType: T;\n\n constructor(type: T) {\n super();\n this.#internalType = type;\n }\n\n abstract get code(): number;\n\n get elementsType(): T {\n return this.#internalType;\n }\n\n get embeddable(): boolean {\n return false;\n }\n}\n","import { ensureBigInt } from \"@fleet-sdk/common\";\nimport { hex } from \"@fleet-sdk/crypto\";\nimport type { SConstant } from \"../sigmaConstant\";\nimport { SPrimitiveType } from \"./base\";\nimport type { BigIntInput, ByteInput } from \"./constructors\";\n\nexport class SBoolType extends SPrimitiveType<boolean> {\n get code(): 0x01 {\n return 0x01;\n }\n\n toString(): string {\n return \"SBool\";\n }\n}\n\nexport class SByteType extends SPrimitiveType<number> {\n get code(): 0x02 {\n return 0x02;\n }\n\n toString(): string {\n return \"SByte\";\n }\n}\n\nexport class SShortType extends SPrimitiveType<number> {\n get code(): 0x03 {\n return 0x03;\n }\n\n toString(): string {\n return \"SShort\";\n }\n}\n\nexport class SIntType extends SPrimitiveType<number> {\n get code(): 0x04 {\n return 0x04;\n }\n\n toString(): string {\n return \"SInt\";\n }\n}\n\nexport class SLongType extends SPrimitiveType<BigIntInput, bigint> {\n get code(): 0x05 {\n return 0x05;\n }\n\n override coerce(data: BigIntInput): bigint {\n return ensureBigInt(data);\n }\n\n toString(): string {\n return \"SLong\";\n }\n}\n\nexport class SBigIntType extends SPrimitiveType<string | bigint, bigint> {\n get code(): number {\n return 0x06;\n }\n\n override coerce(data: BigIntInput): bigint {\n return ensureBigInt(data);\n }\n\n toString(): string {\n return \"SBigInt\";\n }\n}\n\nexport class SGroupElementType extends SPrimitiveType<ByteInput, Uint8Array> {\n get code(): 0x07 {\n return 0x07;\n }\n\n override coerce(data: ByteInput): Uint8Array {\n return typeof data === \"string\" ? hex.decode(data) : data;\n }\n\n toString(): string {\n return \"SGroupElement\";\n }\n}\n\nexport class SSigmaPropType extends SPrimitiveType<SConstant<Uint8Array>> {\n get code(): 0x08 {\n return 0x08;\n }\n\n toString(): string {\n return \"SSigmaProp\";\n }\n}\n","import type { Box } from \"@fleet-sdk/common\";\nimport type { SConstant } from \"../sigmaConstant\";\nimport { SMonomorphicType } from \"./base\";\n\nexport class SUnitType extends SMonomorphicType<undefined> {\n get code(): 0x62 {\n return 0x62;\n }\n\n toString(): string {\n return \"SUnit\";\n }\n}\n\nexport class SBoxType extends SMonomorphicType<SConstant<Box<bigint>>> {\n get code(): 0x63 {\n return 0x63;\n }\n\n toString(): string {\n return \"SBox\";\n }\n}\n","import type { SType } from \"./base\";\nimport type { SCollType, STupleType } from \"./generics\";\nimport { SBoxType, SUnitType } from \"./monomorphics\";\nimport {\n SBigIntType,\n SBoolType,\n SByteType,\n SGroupElementType,\n SIntType,\n SLongType,\n SShortType,\n SSigmaPropType\n} from \"./primitives\";\n\nexport const constructorCode = Object.freeze({\n embeddable: 0,\n\n simpleColl: 1,\n nestedColl: 2,\n\n option: 3,\n optionCollection: 4,\n\n pairOne: 5,\n pairTwo: 6,\n symmetricPair: 7,\n genericTuple: 8\n});\n\nconst MAX_PRIMITIVE_TYPE_CODE = 0x0b;\nexport const PRIMITIVE_TYPE_RANGE = MAX_PRIMITIVE_TYPE_CODE + 0x01;\nconst typeCodeOf = (ctor: number) => PRIMITIVE_TYPE_RANGE * ctor;\n\ntype Descriptor = { code: number; embeddable: boolean };\n\nconst collDescriptor = Object.freeze({\n code: typeCodeOf(constructorCode.simpleColl),\n embeddable: false,\n simpleCollTypeCode: typeCodeOf(constructorCode.simpleColl),\n nestedCollTypeCode: typeCodeOf(constructorCode.nestedColl)\n}) satisfies Descriptor;\n\nconst tupleDescriptor = Object.freeze({\n code: typeCodeOf(constructorCode.pairOne),\n embeddable: false,\n pairOneTypeCode: typeCodeOf(constructorCode.pairOne),\n pairTwoTypeCode: typeCodeOf(constructorCode.pairTwo),\n tripleTypeCode: typeCodeOf(constructorCode.pairTwo),\n symmetricPairTypeCode: typeCodeOf(constructorCode.symmetricPair),\n quadrupleTypeCode: typeCodeOf(constructorCode.symmetricPair),\n genericTupleTypeCode: typeCodeOf(constructorCode.genericTuple)\n}) satisfies Descriptor;\n\nexport const descriptors = {\n bool: new SBoolType(),\n byte: new SByteType(),\n short: new SShortType(),\n int: new SIntType(),\n long: new SLongType(),\n bigInt: new SBigIntType(),\n groupElement: new SGroupElementType(),\n sigmaProp: new SSigmaPropType(),\n unit: new SUnitType(),\n box: new SBoxType(),\n coll: collDescriptor,\n tuple: tupleDescriptor\n} satisfies { [key: string]: Descriptor };\n\nexport function isColl(type: SType): type is SCollType {\n return (\n type.code >= descriptors.coll.simpleCollTypeCode &&\n type.code <= descriptors.coll.nestedCollTypeCode + MAX_PRIMITIVE_TYPE_CODE\n );\n}\n\nexport function isTuple(type: SType): type is STupleType {\n return (\n type.code >= descriptors.tuple.pairOneTypeCode &&\n type.code <= descriptors.tuple.genericTupleTypeCode\n );\n}\n\nexport function getPrimitiveType(typeCode: number) {\n switch (typeCode) {\n case descriptors.bool.code:\n return descriptors.bool;\n case descriptors.byte.code:\n return descriptors.byte;\n case descriptors.short.code:\n return descriptors.short;\n case descriptors.int.code:\n return descriptors.int;\n case descriptors.long.code:\n return descriptors.long;\n case descriptors.bigInt.code:\n return descriptors.bigInt;\n case descriptors.groupElement.code:\n return descriptors.groupElement;\n case descriptors.sigmaProp.code:\n return descriptors.sigmaProp;\n default:\n throw new Error(\n `The type code '0x${typeCode.toString(16)}' is not a valid primitive type code.`\n );\n }\n}\n","import { hex } from \"@fleet-sdk/crypto\";\nimport { SGenericType, type SType } from \"./base\";\nimport { descriptors } from \"./descriptors\";\n\nexport class SCollType<T extends SType = SType> extends SGenericType<T> {\n get code(): number {\n return descriptors.coll.code;\n }\n\n override coerce<I, O>(elements: I[]): O[] | Uint8Array {\n if (this.elementsType.code === descriptors.byte.code && !(elements instanceof Uint8Array)) {\n return typeof elements === \"string\"\n ? hex.decode(elements)\n : Uint8Array.from(elements as ArrayLike<number>);\n }\n\n return elements.map((el) => this.elementsType.coerce(el)) as O[];\n }\n\n toString(): string {\n return `SColl[${this.elementsType.toString()}]`;\n }\n}\n\nexport class STupleType<T extends SType[] = SType[]> extends SGenericType<T> {\n get code(): number {\n return descriptors.tuple.code;\n }\n\n override coerce<I, O>(elements: I[]): O[] {\n const output = new Array(elements.length);\n for (let i = 0; i < elements.length; i++) {\n output[i] = this.elementsType[i].coerce(elements[i]);\n }\n\n return output;\n }\n\n toString(): string {\n return `(${this.elementsType.map((el) => el.toString()).join(\", \")})`;\n }\n}\n","import { type Box, isEmpty } from \"@fleet-sdk/common\";\nimport { SConstant } from \"../sigmaConstant\";\nimport type { SType } from \"./base\";\nimport { descriptors } from \"./descriptors\";\nimport { SCollType, STupleType } from \"./generics\";\nimport { SBoxType, SUnitType } from \"./monomorphics\";\nimport {\n SBigIntType,\n SBoolType,\n SByteType,\n SGroupElementType,\n SIntType,\n SLongType,\n SShortType,\n SSigmaPropType\n} from \"./primitives\";\n\nexport type BigIntInput = string | bigint;\nexport type ByteInput = Uint8Array | string;\n\nexport type SConstructor<T = unknown, S extends SType = SType | SCollType<SType>> = (arg?: T) => S;\n\n// biome-ignore lint/suspicious/noExplicitAny: <explanation>\ntype Any = any;\n\ntype Constructable<T = Any> = { new (...args: Any): T };\ntype GenericProxyArgs<R> = R extends (...args: Any) => unknown ? Parameters<R> : [];\n\ntype SProxy<T extends SType, I, O = I> = {\n (value: I): SConstant<O, T>;\n (value?: I): T;\n};\n\n/**\n * Creates a proxy for monomorphic types, this allows constructor\n * functions to be equivalent to their corresponding type.\n *\n * This function will return one instance of `ctor` if not params as set.\n * Otherwise it will return an `SigmaConstant` instance of `ctor` type.\n *\n * @example\n * // SInt is a proxy for SIntType\n * (intConstant instanceof SInt) === true\n * (intConstant instanceof SIntType) === true\n * @param ctor Class to be proxied.\n * @param cache If defined, proxy will return this instead of a new instance of `ctor`.\n * @param forceConstruction If true, bypasses the constant creation and returns a type.\n * @returns\n */\nfunction monoProxy<T extends SType, I, O = I>(\n ctor: Constructable<T>,\n cache?: T,\n forceConstruction?: boolean\n): SProxy<T, I, O> {\n return new Proxy(ctor, {\n apply: (target, _, args) => {\n const instance = cache ?? new target();\n if (!forceConstruction && isEmpty(args)) return instance;\n\n return new (SConstant as Constructable)(instance, ...args);\n }\n }) as Any;\n}\n\n/**\n * Creates a proxy for generic types.\n */\nfunction genericProxy<T extends SType, R>(\n ctor: Constructable<T>,\n handler: (target: Constructable<T>, thisArgs: unknown, args: GenericProxyArgs<R>) => unknown\n) {\n return new Proxy(ctor, {\n apply: handler\n }) as R;\n}\n\nexport const SByte = monoProxy<SByteType, number>(SByteType, descriptors.byte);\n\nexport const SBool = monoProxy<SBoolType, boolean>(SBoolType, descriptors.bool);\n\nexport const SShort = monoProxy<SShortType, number>(SShortType, descriptors.short);\n\nexport const SInt = monoProxy<SIntType, number>(SIntType, descriptors.int);\n\nexport const SLong = monoProxy<SLongType, BigIntInput, bigint>(SLongType, descriptors.long);\n\nexport const SBigInt = monoProxy<SBigIntType, BigIntInput, bigint>(SBigIntType, descriptors.bigInt);\n\nexport const SGroupElement = monoProxy<SGroupElementType, ByteInput, Uint8Array>(\n SGroupElementType,\n descriptors.groupElement\n);\n\nexport const SSigmaProp = monoProxy<SSigmaPropType, SConstant<Uint8Array>>(\n SSigmaPropType,\n descriptors.sigmaProp\n);\n\ntype SUnit = () => SConstant<undefined, SUnitType>;\nexport const SUnit = monoProxy(SUnitType, undefined, true) as unknown as SUnit;\n\ntype SBox = (value?: Box) => SConstant<Box<bigint>, SBoxType>;\nexport const SBox = monoProxy(SBoxType, undefined, true) as unknown as SBox;\n\ntype SColl = {\n <D, T extends SByteType>(\n type: SConstructor<D, T>,\n elements: ByteInput | D[]\n ): SConstant<Uint8Array, T>;\n <D, T extends SByteType>(\n type: SConstructor<D, T>,\n elements: ByteInput[]\n ): SConstant<Uint8Array[], T>;\n\n <D, T extends SType>(type: SConstructor<D, T>): SConstructor<D[], T>;\n <D, T extends SType>(type: SConstructor<D, T>, elements: D[]): SConstant<D[], T>;\n};\n\nexport const SColl = genericProxy<SCollType, SColl>(SCollType, (target, _, args) => {\n const [type, elements] = args;\n const elementsType = type();\n if (!elements) return () => new target(elementsType);\n\n return new SConstant(new target(elementsType), elements);\n});\n\nexport function STuple(...items: SConstant[]) {\n return new SConstant(\n new STupleType(items.map((x) => x.type)),\n items.map((x) => x.data)\n );\n}\n\ntype ByteInputOr<D, T extends SType> = T extends SByteType ? ByteInput | D : D;\ntype SPair = {\n <L, R>(left: SConstant<L>, right: SConstant<R>): SConstant<[L, R], STupleType>;\n <LD, RD, LT extends SType, RT extends SType>(\n left: SConstructor<LD, LT>,\n right: SConstructor<RD, RT>\n ): SConstructor<[ByteInputOr<LD, LT>, ByteInputOr<RD, RT>]>;\n};\n\nexport const SPair = genericProxy<STupleType, SPair>(STupleType, (target, _, args) => {\n const [left, right] = args;\n\n if (typeof left === \"function\" && typeof right === \"function\") {\n return () => new target([left(), right()]);\n }\n\n if (left instanceof SConstant && right instanceof SConstant) {\n return new SConstant(new target([left.type, right.type]), [left.data, right.data]);\n }\n\n throw new Error(\"Invalid tuple declaration.\");\n});\n","import {\n FEE_CONTRACT,\n byteSizeOf,\n ensureBigInt,\n ergoTreeHeaderFlags,\n isDefined,\n isUndefined\n} from \"@fleet-sdk/common\";\nimport type {\n Amount,\n Box,\n BoxCandidate,\n NonMandatoryRegisters,\n TokenAmount\n} from \"@fleet-sdk/common\";\nimport { blake2b256, hex, validateEcPoint } from \"@fleet-sdk/crypto\";\nimport { SigmaByteReader, SigmaByteWriter, estimateVLQSize } from \"../coders\";\nimport { SConstant } from \"../sigmaConstant\";\nimport type { ByteInput } from \"../types/constructors\";\n\nconst MAX_UINT16_VALUE = 65535;\n\nconst FEE_CONTRACT_BYTES = hex.decode(FEE_CONTRACT);\nconst P2PK_CONTRACT_PREFIX = hex.decode(\"0008cd\");\nconst COMPRESSED_PK_LENGTH = 33;\nconst P2PK_CONTRACT_LENGTH = P2PK_CONTRACT_PREFIX.length + COMPRESSED_PK_LENGTH;\n\nexport function serializeBox(\n box: Box<Amount> | BoxCandidate<Amount>,\n writer = new SigmaByteWriter(4_096),\n distinctTokenIds?: string[]\n): SigmaByteWriter {\n writer.writeBigUInt(ensureBigInt(box.value)).writeHex(box.ergoTree).writeUInt(box.creationHeight);\n\n writeTokens(writer, box.assets, distinctTokenIds);\n writeRegisters(writer, box.additionalRegisters);\n\n if (isDefined(distinctTokenIds)) return writer;\n if (!isBox(box)) throw new Error(\"Invalid box type.\");\n return writer.writeHex(box.transactionId).writeUInt(box.index);\n}\n\nfunction isBox<T extends Amount>(box: Box<Amount> | BoxCandidate<Amount>): box is Box<T> {\n const castedBox = box as Box<T>;\n return isDefined(castedBox.transactionId) && isDefined(castedBox.index);\n}\n\nfunction writeTokens(\n writer: SigmaByteWriter,\n tokens: TokenAmount<Amount>[],\n tokenIds?: string[]\n): void {\n if (tokenIds) {\n writer.writeArray(tokens, (w, token) =>\n w.writeUInt(tokenIds.indexOf(token.tokenId)).writeBigUInt(ensureBigInt(token.amount))\n );\n } else {\n writer.writeArray(tokens, (w, token) =>\n w.writeHex(token.tokenId).writeBigUInt(ensureBigInt(token.amount))\n );\n }\n}\n\nfunction writeRegisters(writer: SigmaByteWriter, registers: NonMandatoryRegisters): void {\n const keys = Object.keys(registers).sort();\n const values: string[] = [];\n\n for (const key of keys) {\n const value = registers[key as keyof NonMandatoryRegisters];\n if (!value) continue;\n\n values.push(value);\n }\n\n writer.writeArray(values, (w, value) => w.writeHex(value));\n}\n\n/**\n * Estimates the byte size a box.\n * @returns byte size of the box.\n */\nexport function estimateBoxSize(\n box: Box<Amount> | BoxCandidate<Amount>,\n withValue?: Amount\n): number {\n if (isUndefined(box.creationHeight)) {\n throw new Error(\"Box size estimation error: creation height is undefined.\");\n }\n\n let size = 0;\n\n size += estimateVLQSize(isDefined(withValue) ? withValue : box.value);\n size += byteSizeOf(box.ergoTree);\n size += estimateVLQSize(box.creationHeight);\n\n size += estimateVLQSize(box.assets.length);\n for (const asset of box.assets) {\n size += byteSizeOf(asset.tokenId) + estimateVLQSize(asset.amount);\n }\n\n let registersLength = 0;\n for (const key in box.additionalRegisters) {\n const register = box.additionalRegisters[key as keyof NonMandatoryRegisters];\n if (register) {\n size += byteSizeOf(register);\n registersLength++;\n }\n }\n\n size += estimateVLQSize(registersLength);\n size += 32; // transaction id (BLAKE2b 256 hash)\n size += estimateVLQSize(isBox(box) ? box.index : MAX_UINT16_VALUE);\n\n return size;\n}\n\n/**\n * Deserializes a box embedded in a transaction.\n *\n * It efficiently calculates the box ID by accumulating the serialized data during\n * deserialization and applying blake2b256 hashing, avoiding redundant serialization\n * operations.\n *\n * @param reader - SigmaByteReader containing the serialized box data\n * @param distinctTokenIds - Array of TokenIDs referenced in the parent transaction\n * @param transactionId - ID of the transaction containing this box\n * @param index - Index position of the box in the transaction outputs\n * @returns A fully deserialized Box with all properties including boxId\n */\nexport function deserializeEmbeddedBox(\n reader: SigmaByteReader,\n distinctTokenIds: string[],\n transactionId: string,\n index: number\n): Box<bigint> {\n // SigmaByteReader moves the cursor on read, so we need to save the current position to\n // track read bytes.\n let begin = reader.cursor;\n\n const value = reader.readBigUInt();\n const ergoTree = hex.encode(readErgoTree(reader));\n const creationHeight = reader.readUInt();\n\n // Calculating the BoxID needs the full box data, so to avoid serialization road-trips,\n // we will accumulate the the box data in a SigmaByteWriter and then calculate the hash\n // from the its bytes.\n const boxIdWriter = new SigmaByteWriter(4_096) // max size of a box\n .writeBytes(reader.bytes.subarray(begin, reader.cursor)); // copy the bytes read so far\n\n const assets = readTokens(reader, distinctTokenIds);\n\n // TokenIDs need to be written in the full box writer\n boxIdWriter.writeUInt(assets.length);\n for (const asset of assets) {\n boxIdWriter.writeHex(asset.tokenId).writeBigUInt(asset.amount);\n }\n\n begin = reader.cursor; // save the current cursor position again to track the registers bytes\n const additionalRegisters = readRegisters(reader);\n\n boxIdWriter\n .writeBytes(reader.bytes.subarray(begin, reader.cursor)) // write the registers\n .writeHex(transactionId)\n .writeUInt(index);\n\n return {\n boxId: hex.encode(blake2b256(boxIdWriter.toBytes())),\n value,\n ergoTree,\n creationHeight,\n assets,\n additionalRegisters,\n transactionId,\n index\n };\n}\n\nexport function deserializeBox(\n input: ByteInput | SigmaByteReader\n): BoxCandidate<bigint> | Box<bigint> {\n const reader = input instanceof SigmaByteReader ? input : new SigmaByteReader(input);\n const begin = reader.cursor; // save the current cursor position to track the read bytes\n\n const box: Box<bigint> = {\n boxId: \"\", // placeholder, will be calculated later\n value: reader.readBigUInt(),\n ergoTree: hex.encode(readErgoTree(reader)),\n creationHeight: reader.readUInt(),\n assets: readTokens(reader),\n additionalRegisters: readRegisters(reader),\n transactionId: hex.encode(reader.readBytes(32)),\n index: reader.readUInt()\n };\n\n box.boxId = hex.encode(blake2b256(reader.bytes.subarray(begin, reader.cursor)));\n return box;\n}\n\nfunction readErgoTree(reader: SigmaByteReader): Uint8Array {\n // handles miner fee contract\n if (reader.match(FEE_CONTRACT_BYTES)) {\n return reader.readBytes(FEE_CONTRACT_BYTES.length);\n }\n\n // handles P2PK contracts\n if (\n reader.match(P2PK_CONTRACT_PREFIX) &&\n validateEcPoint(reader.peek(COMPRESSED_PK_LENGTH, P2PK_CONTRACT_PREFIX.length))\n ) {\n return reader.readBytes(P2PK_CONTRACT_LENGTH);\n }\n\n // handles contracts with the size flag enabled\n const header = reader.readByte();\n const hasSize = (header & ergoTreeHeaderFlags.sizeInclusion) !== 0;\n if (!hasSize) {\n throw new Error(\"ErgoTree parsing without the size flag is not supported.\");\n }\n\n const size = reader.readUInt();\n return new SigmaByteWriter(1 + 4 + size) // header + vlq size + body\n .write(header)\n .writeUInt(size)\n .writeBytes(reader.readBytes(size))\n .toBytes();\n}\n\nfunction readTokens(reader: SigmaByteReader, tokenIds?: string[]): TokenAmount<bigint>[] {\n return reader.readArray((r) => ({\n tokenId: tokenIds ? tokenIds[r.readUInt()] : hex.encode(r.readBytes(32)),\n amount: r.readBigUInt()\n }));\n}\n\nfunction readRegisters(reader: SigmaByteReader): NonMandatoryRegisters {\n const registers: NonMandatoryRegisters = {};\n const count = reader.readUInt();\n\n for (let i = 0; i < count; i++) {\n // const key = reader.readByte();\n const value = SConstant.from(reader).toHex();\n registers[`R${(i + 4).toString()}` as keyof NonMandatoryRegisters] = value;\n }\n\n return registers;\n}\n","import { assert, type Box } from \"@fleet-sdk/common\";\nimport type { SigmaByteReader, SigmaByteWriter } from \"../coders\";\nimport type { SConstant } from \"../sigmaConstant\";\nimport { type SCollType, type STupleType, type SType, isColl, isTuple } from \"../types\";\nimport { descriptors } from \"../types/descriptors\";\nimport { deserializeBox, serializeBox } from \"./boxSerializer\";\n\nconst GROUP_ELEMENT_LENGTH = 33;\nconst PROVE_DLOG_OP = 0xcd;\n\nexport const dataSerializer = {\n serialize(data: unknown, type: SType, writer: SigmaByteWriter): SigmaByteWriter {\n if (type.embeddable) {\n switch (type.code) {\n case descriptors.bool.code:\n return writer.writeBool(data as boolean);\n case descriptors.byte.code:\n return writer.write(data as number);\n case descriptors.short.code:\n return writer.writeI16(data as number);\n case descriptors.int.code:\n return writer.writeI32(data as number);\n case descriptors.long.code:\n return writer.writeI64(data as bigint);\n case descriptors.bigInt.code:\n return writer.writeI256(data as bigint);\n case descriptors.groupElement.code:\n return writer.writeBytes(data as Uint8Array);\n case descriptors.sigmaProp.code: {\n const node = data as SConstant<SConstant<Uint8Array>>;\n if (node.type === descriptors.groupElement) {\n writer.write(PROVE_DLOG_OP);\n return dataSerializer.serialize(node.data, node.type, writer);\n }\n\n throw Error(\"Serialization error: SigmaProp operation not implemented.\");\n }\n }\n }\n\n if (isColl(type)) {\n if (type.elementsType.code === descriptors.byte.code) {\n assert(\n data instanceof Uint8Array,\n `SColl[Byte] expected an UInt8Array, got ${typeof data}.`\n );\n } else {\n assert(Array.isArray(data), `SColl expected an array, got ${typeof data}.`);\n }\n\n writer.writeUInt(data.length);\n switch (type.elementsType.code) {\n case descriptors.bool.code: {\n return writer.writeBits(data as boolean[]);\n }\n case descriptors.byte.code: {\n return writer.writeBytes(data as Uint8Array);\n }\n default: {\n for (let i = 0; i < data.length; i++) {\n dataSerializer.serialize(data[i], type.elementsType, writer);\n }\n\n return writer;\n }\n }\n }\n\n if (isTuple(type)) {\n assert(\n Array.isArray(data),\n `STupleType serialization expected an array, got ${typeof data}.`\n );\n\n const len = type.elementsType.length;\n for (let i = 0; i < len; i++) {\n dataSerializer.serialize(data[i], type.elementsType[i], writer);\n }\n\n return writer;\n }\n\n if (type.code === descriptors.unit.code) return writer;\n if (type.code === descriptors.box.code) return serializeBox(data as Box, writer);\n\n throw Error(`Serialization error: '0x${type.code.toString(16)}' type not implemented.`);\n },\n\n deserialize(type: SType, reader: SigmaByteReader): unknown {\n if (type.embeddable) {\n switch (type.code) {\n case descriptors.bool.code:\n return reader.readBool();\n case descriptors.byte.code:\n return reader.readI8();\n case descriptors.short.code:\n return reader.readI16();\n case descriptors.int.code:\n return reader.readI32();\n case descriptors.long.code:\n return reader.readI64();\n case descriptors.bigInt.code:\n return reader.readI256();\n case descriptors.groupElement.code:\n return reader.readBytes(GROUP_ELEMENT_LENGTH);\n case descriptors.sigmaProp.code: {\n if (reader.readByte() === PROVE_DLOG_OP) {\n return this.deserialize(descriptors.groupElement, reader);\n }\n\n break;\n }\n }\n } else {\n switch (type.code) {\n case descriptors.coll.code: {\n const length = reader.readUInt();\n const embeddedType = (type as SCollType).elementsType;\n\n switch (embeddedType.code) {\n case descriptors.bool.code:\n return reader.readBits(length);\n case descriptors.byte.code:\n return reader.readBytes(length);\n default: {\n const elements = new Array(length);\n for (let i = 0; i < length; i++) {\n elements[i] = this.deserialize(embeddedType, reader);\n }\n\n return elements;\n }\n }\n }\n case descriptors.tuple.code: {\n return (type as STupleType).elementsType.map((t) => this.deserialize(t, reader));\n }\n case descriptors.unit.code:\n return undefined;\n case descriptors.box.code:\n return deserializeBox(reader);\n }\n }\n\n throw new Error(`Parsing error: '0x${type.code.toString(16)}' type not implemented.`);\n }\n};\n","import { assert, first, last } from \"@fleet-sdk/common\";\nimport type { SigmaByteReader, SigmaByteWriter } from \"../coders\";\nimport { SCollType, STupleType, type SType, isColl, isTuple } from \"../types\";\nimport {\n PRIMITIVE_TYPE_RANGE,\n constructorCode,\n descriptors,\n getPrimitiveType\n} from \"../types/descriptors\";\n\nexport const typeSerializer = {\n serialize(type: SType, writer: SigmaByteWriter) {\n if (type.embeddable) {\n writer.write(type.code);\n } else if (type.code === descriptors.unit.code) {\n writer.write(type.code);\n } else if (type.code === descriptors.box.code) {\n writer.write(type.code);\n } else if (isColl(type)) {\n if (type.elementsType.embeddable) {\n writer.write(descriptors.coll.simpleCollTypeCode + type.elementsType.code);\n } else if (isColl(type.elementsType)) {\n const nestedColl = type.elementsType;\n if (nestedColl.elementsType.embeddable) {\n writer.write(descriptors.coll.nestedCollTypeCode + nestedColl.elementsType.code);\n } else {\n writer.write(descriptors.coll.simpleCollTypeCode);\n this.serialize(nestedColl, writer);\n }\n } else {\n writer.write(descriptors.coll.simpleCollTypeCode);\n this.serialize(type.elementsType, writer);\n }\n } else if (isTuple(type)) {\n switch (type.elementsType.length) {\n case 2: {\n const left = first(type.elementsType);\n const right = last(type.elementsType);\n\n if (left.embeddable) {\n if (left.code === right.code) {\n // Symmetric pair of primitive types (`(Int, Int)`, `(Byte,Byte)`, etc.)\n writer.write(descriptors.tuple.symmetricPairTypeCode + left.code);\n } else {\n // Pair of types where first is primitive (`(_, Int)`)\n writer.write(descriptors.tuple.pairOneTypeCode + left.code);\n this.serialize(right, writer);\n }\n } else if (right.embeddable) {\n // Pair of types where second is primitive (`(Int, _)`)\n writer.write(descriptors.tuple.pairTwoTypeCode + right.code);\n this.serialize(left, writer);\n } else {\n // Pair of non-primitive types (`((Int, Byte), (Boolean,Box))`, etc.)\n writer.write(descriptors.tuple.pairOneTypeCode);\n this.serialize(left, writer);\n this.serialize(right, writer);\n }\n\n return;\n }\n case 3:\n writer.write(descriptors.tuple.tripleTypeCode);\n break;\n case 4:\n writer.write(descriptors.tuple.quadrupleTypeCode);\n break;\n default: {\n const len = type.elementsType.length;\n assert(len >= 2 && len <= 255, \"Invalid type: tuples must have between 2 and 255 items.\");\n\n // Generic tuple\n writer.write(descriptors.tuple.genericTupleTypeCode);\n writer.writeUInt(len);\n }\n }\n\n for (let i = 0; i < type.elementsType.length; i++) {\n this.serialize(type.elementsType[i], writer);\n }\n } else {\n throw new Error(\"Serialization error: type not implemented.\");\n }\n },\n\n deserialize(r: SigmaByteReader): SType {\n const byte = r.readByte();\n assert(byte > 0, `Parsing Error: Unexpected type code '0x${byte.toString(16)}'`);\n\n if (byte < descriptors.tuple.genericTupleTypeCode) {\n const ctorCode = Math.floor(byte / PRIMITIVE_TYPE_RANGE);\n const embdCode = Math.floor(byte % PRIMITIVE_TYPE_RANGE);\n\n switch (ctorCode) {\n case constructorCode.embeddable: {\n return getPrimitiveType(embdCode);\n }\n case constructorCode.simpleColl: {\n const internal = embdCode === 0 ? this.deserialize(r) : getPrimitiveType(embdCode);\n\n return new SCollType(internal);\n }\n case constructorCode.nestedColl: {\n return new SCollType(new SCollType(getPrimitiveType(embdCode)));\n }\n case constructorCode.pairOne: {\n const internal =\n embdCode === 0\n ? [this.deserialize(r), this.deserialize(r)] // Pair of non-primitive types (`((Int, Byte), (Boolean,Box))`, etc.)\n : [getPrimitiveType(embdCode), this.deserialize(r)]; // Pair of types where first is primitive (`(_, Int)`)\n\n return new STupleType(internal);\n }\n case constructorCode.pairTwo: {\n const internal =\n embdCode === 0\n ? [this.deserialize(r), this.deserialize(r), this.deserialize(r)] // Triple of types\n : [this.deserialize(r), getPrimitiveType(embdCode)];\n\n return new STupleType(internal);\n }\n case constructorCode.symmetricPair: {\n const internal =\n embdCode === 0\n ? [this.deserialize(r), this.deserialize(r), this.deserialize(r), this.deserialize(r)] // Quadruple of types\n : [getPrimitiveType(embdCode), getPrimitiveType(embdCode)]; // Symmetric pair of primitive types (`(Int, Int)`, `(Byte,Byte)`, etc.)\n\n return new STupleType(internal);\n }\n }\n }\n\n switch (byte) {\n case descriptors.tuple.genericTupleTypeCode: {\n const len = r.readUInt();\n const wrapped = new Array<SType>(len);\n for (let i = 0; i < len; i++) {\n wrapped[i] = this.deserialize(r);\n }\n\n return new STupleType(wrapped);\n }\n case descriptors.unit.code:\n return descriptors.unit;\n case descriptors.box.code:\n return descriptors.box;\n }\n\n throw new Error(\"Not implemented.\");\n }\n};\n","import { type ByteInput, hex } from \"@fleet-sdk/crypto\";\nimport { SigmaByteReader, SigmaByteWriter, estimateVLQSize } from \"./coders\";\nimport { dataSerializer } from \"./serializers/dataSerializer\";\nimport { typeSerializer } from \"./serializers/typeSerializer\";\nimport type { SCollType, SType } from \"./types\";\nimport { descriptors, isColl, isTuple } from \"./types/descriptors\";\n\nexport const MAX_CONSTANT_LENGTH = 4096;\n\nexport class SConstant<D = unknown, T extends SType = SType> {\n readonly #type: T;\n readonly #data: D;\n #bytes?: Uint8Array;\n\n constructor(type: T, data: D) {\n this.#type = type;\n this.#data = type.coerce(data) as D;\n }\n\n static from<D, T extends SType = SType>(bytes: ByteInput | SigmaByteReader): SConstant<D, T> {\n const reader = bytes instanceof SigmaByteReader ? bytes : new SigmaByteReader(bytes);\n if (reader.isEmpty) throw new Error(\"Empty constant bytes.\");\n\n const start = reader.cursor;\n const type = typeSerializer.deserialize(reader);\n const data = dataSerializer.deserialize(type, reader);\n return new SConstant(type as T, data as D).#withBytes(reader.bytes.slice(start, reader.cursor));\n }\n\n #withBytes(bytes: Uint8Array): SConstant<D, T> {\n this.#bytes = bytes;\n return this;\n }\n\n get type(): T {\n return this.#type;\n }\n\n get data(): D {\n return this.#data;\n }\n\n /**\n * Returns the serialized representation of the current instance as a `Uint8Array`.\n * If the bytes have already been computed and cached, returns the cached value.\n * Otherwise, serializes the instance and returns the resulting bytes.\n */\n get bytes(): Uint8Array {\n if (this.#bytes) return this.#bytes;\n return this.serialize();\n }\n\n /**\n * Serializes the current object into a `Uint8Array`.\n */\n serialize(): Uint8Array {\n const writer = new SigmaByteWriter(guessConstantBytesSize(this.type, this.data));\n typeSerializer.serialize(this.type, writer);\n dataSerializer.serialize(this.data, this.type, writer);\n\n this.#bytes = writer.toBytes();\n return this.#bytes;\n }\n\n /**\n * @deprecated use `serialize` instead\n */\n toBytes(): Uint8Array {\n return this.serialize();\n }\n\n toHex(): string {\n return hex.encode(this.serialize());\n }\n}\n\nfunction guessConstantBytesSize(type: SType, data?: unknown): number {\n const dataSize = 1;\n\n // left some safe room for integer types\n if (type.code === descriptors.short.code) return dataSize + 8;\n if (type.code === descriptors.int.code) return dataSize + 16;\n if (type.code === descriptors.long.code) return dataSize + 32;\n if (type.code === descriptors.bigInt.code) return dataSize + 64;\n\n if (type.code === descriptors.bool.code) return dataSize + 1;\n if (type.code === descriptors.byte.code) return dataSize + 1;\n if (type.code === descriptors.unit.code) return dataSize + 0;\n if (type.code === descriptors.groupElement.code) return dataSize + 33;\n if (type.code === descriptors.sigmaProp.code) return dataSize + 35; // only prove DLog is implemented, so it's safe to assume 35 bytes\n\n // handle collections, but avoid complex types\n if (isColl(type) && !isColl(type.elementsType) && !isTuple(type.elementsType)) {\n const len = (data as Uint8Array).length;\n return (\n dataSize +\n estimateVLQSize(len) +\n guessConstantBytesSize((type as SCollType).elementsType) * len\n );\n }\n\n return MAX_CONSTANT_LENGTH;\n}\n\n/**\n * Decodes a byte input into a Sigma constant of type `SConstant<D, T>`.\n *\n * @template D - The data type of the constant.\n * @template T - The type of the constant.\n * @param value - The value to decode.\n * @returns The decoded constant or `undefined` if the value is `undefined` or decoding fails.\n */\nexport function decode<D = unknown, T extends SType = SType>(\n value?: ByteInput\n): SConstant<D, T> | undefined {\n if (value === undefined) return;\n\n try {\n return SConstant.from<D, T>(value);\n } catch {\n return;\n }\n}\n\n/**\n * Returns the `SType` of the given value.\n *\n * @param value - The value to check the SType of.\n * @returns The SType of the value, or `undefined` if the value is `undefined` or\n * deserialization fails.\n */\nexport function stypeof(value?: ByteInput): SType | undefined {\n if (!value) return;\n\n try {\n return typeSerializer.deserialize(new SigmaByteReader(value));\n } catch {\n return;\n }\n}\n\n/** @deprecated use `decode` instead */\nexport function parse<T>(constant: ByteInput): T;\n/** @deprecated use `decode` instead */\nexport function parse<T>(constant: ByteInput, mode: \"strict\"): T;\n/** @deprecated use `decode` instead */\nexport function parse<T>(constant: ByteInput | undefined, mode: \"safe\"): T | undefined;\n/** @deprecated use `decode` instead */\nexport function parse<T>(constant: ByteInput | undefined, mode: \"strict\" | \"safe\" = \"strict\") {\n if (mode === \"strict\") return SConstant.from<T>(constant ?? \"\").data;\n if (!constant) return;\n\n try {\n return SConstant.from<T>(constant).data;\n } catch {\n return;\n }\n}\n","import type {\n Amount,\n BoxCandidate,\n SignedInput,\n SignedTransaction,\n UnsignedInput,\n UnsignedTransaction\n} from \"@fleet-sdk/common\";\nimport { blake2b256, hex } from \"@fleet-sdk/crypto\";\nimport { SigmaByteReader, SigmaByteWriter } from \"../coders\";\nimport { SConstant } from \"../sigmaConstant\";\nimport type { ByteInput } from \"../types/constructors\";\nimport { deserializeEmbeddedBox, serializeBox } from \"./boxSerializer\";\n\ntype Nullish<T> = T | null | undefined;\ntype Input = UnsignedInput | SignedInput;\ntype Transaction = UnsignedTransaction | SignedTransaction;\n\nexport function serializeTransaction(transaction: Transaction): SigmaByteWriter {\n const tokenIds = getDistinctTokenIds(transaction.outputs);\n\n return new SigmaByteWriter(100_000)\n .writeArray<Input>(transaction.inputs, (w, input) => writeInput(w, input))\n .writeArray(transaction.dataInputs, (w, dataInput) => w.writeHex(dataInput.boxId))\n .writeArray(tokenIds, (w, tokenId) => w.writeHex(tokenId))\n .writeArray(transaction.outputs, (w, output) => serializeBox(output, w, tokenIds));\n}\n\nfunction writeInput(writer: SigmaByteWriter, input: Input): void {\n if (isSignedInput(input)) {\n writeSignedInput(writer, input);\n return;\n }\n\n writeUnsignedInput(writer, input);\n}\n\nfunction writeSignedInput(writer: SigmaByteWriter, input: SignedInput): void {\n writer.writeHex(input.boxId);\n writeProof(writer, input.spendingProof?.proofBytes);\n writeExtension(writer, input.spendingProof?.extension);\n}\n\nfunction writeUnsignedInput(writer: SigmaByteWriter, input: Input): void {\n writer.writeHex(input.boxId);\n writeProof(writer, null);\n writeExtension(writer, isSignedInput(input) ? input.spendingProof?.extension : input.extension);\n}\n\nfunction isSignedInput(input: Input): input is SignedInput {\n return (input as SignedInput).spendingProof !== undefined;\n}\n\nfunction writeProof(writer: SigmaByteWriter, proof: Nullish<string>): void {\n if (!proof) {\n writer.write(0);\n return;\n }\n\n const bytes = hex.decode(proof);\n writer.writeUInt(bytes.length).writeBytes(bytes);\n}\n\nfunction writeExtension(\n writer: SigmaByteWriter,\n extension: Nullish<Record<string, string | undefined>>\n): void {\n if (!extension) {\n writer.write(0);\n return;\n }\n\n const keys = Object.keys(extension);\n const values: [string, string][] = [];\n\n for (const key of keys) {\n const value = extension[key];\n if (!value) continue;\n\n values.push([key, value]);\n }\n\n writer.writeArray(values, (w, [key, value]) => w.writeUInt(Number(key)).writeHex(value));\n}\n\nfunction getDistinctTokenIds(outputs: readonly BoxCandidate<Amount>[]) {\n const tokenIds = new Set<string>();\n outputs.flatMap((output) => output.assets.map((asset) => tokenIds.add(asset.tokenId)));\n\n return Array.from(tokenIds);\n}\n\nexport function deserializeTransaction<T extends Transaction>(input: ByteInput): T {\n const reader = new SigmaByteReader(input);\n\n const inputs = reader.readArray(readInput);\n const id = computeId(reader, inputs);\n const dataInputs = reader.readArray((r) => ({ boxId: hex.encode(r.readBytes(32)) }));\n const tokenIds = reader.readArray((r) => hex.encode(r.readBytes(32)));\n const outputs = reader.readArray((r, i) => deserializeEmbeddedBox(r, tokenIds, id, i));\n\n return {\n id,\n inputs,\n dataInputs,\n outputs\n } as T;\n}\n\nfunction readInput(reader: SigmaByteReader): SignedInput | UnsignedInput {\n const boxId = hex.encode(reader.readBytes(32));\n\n const proofLength = reader.readUInt();\n const proofBytes = proofLength > 0 ? hex.encode(reader.readBytes(proofLength)) : null;\n\n const extensionLength = reader.readUInt();\n const extension: Record<string, string> = {};\n for (let i = 0; i < extensionLength; i++) {\n extension[reader.readUInt()] = SConstant.from(reader).toHex();\n }\n\n return proofBytes ? { boxId, spendingProof: { proofBytes, extension } } : { boxId, extension };\n}\n\n/**\n * Computes the transaction ID by serializing inputs as unsigned (excluding proofs),\n * even for signed transactions.\n */\nfunction computeId(reader: SigmaByteReader, inputs: Input[]): string {\n const bytes = new SigmaByteWriter(reader.bytes.length)\n .writeArray(inputs, (w, input) => writeUnsignedInput(w, input)) // write inputs as unsigned\n .writeBytes(reader.bytes.subarray(reader.cursor))\n .toBytes();\n\n return hex.encode(blake2b256(bytes));\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fleet-sdk/serializer",
3
- "version": "0.8.5",
3
+ "version": "0.9.0",
4
4
  "description": "Ergo constant serializer and parser.",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",