@fleet-sdk/serializer 0.7.0 → 0.8.2

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/coders/bigint.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/dataSerializer.ts","../src/serializers/typeSerializer.ts","../src/sigmaConstant.ts","../src/serializers/boxSerializer.ts","../src/serializers/transactionSerializer.ts"],"names":["hex","_0n","first","_127n","_7n","_128n","ensureBigInt","_1n","_63n","isEmpty","ensureBytes","blake2b256","assert","last","isDefined","some","isUndefined","byteSizeOf"],"mappings":"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","file":"index.js","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\n/**\n * Encode a signed integer.\n * @param input Signed integer\n * @returns ZigZag-encoded value\n */\nexport function zigZagEncode(input: number): number {\n return (input << 1) ^ (input >> 63);\n}\n\n/**\n * Decode a ZigZag-encoded value.\n * @param input ZigZag-encoded value\n * @returns Signed integer\n */\nexport function zigZagDecode(input: number): number {\n return (input >> 1) ^ -(input & 1);\n}\n\n/**\n * Encode a signed big integer.\n * @param input Signed big integer\n * @returns ZigZag-encoded value\n */\nexport function zigZagEncodeBigInt(input: bigint): bigint {\n return (input << _1n) ^ (input >> _63n);\n}\n\n/**\n * Decode a ZigZag-encoded value.\n * @param input ZigZag-encoded value\n * @returns Signed big integer\n */\nexport function zigZagDecodeBigInt(input: bigint): bigint {\n return (input >> _1n) ^ -(input & _1n);\n}\n","import { isEmpty } from \"@fleet-sdk/common\";\nimport { type ByteInput, ensureBytes, hex } from \"@fleet-sdk/crypto\";\nimport { hexToBigInt } from \"./bigint\";\nimport { readBigVLQ, readVLQ } from \"./vlq\";\nimport { zigZagDecode, zigZagDecodeBigInt } from \"./zigZag\";\n\nexport class SigmaByteReader {\n readonly #bytes: Uint8Array;\n #cursor: number;\n\n public get isEmpty(): boolean {\n return isEmpty(this.#bytes);\n }\n\n constructor(bytes: ByteInput) {\n this.#bytes = ensureBytes(bytes);\n this.#cursor = 0;\n }\n\n public readBoolean(): boolean {\n return this.readByte() === 0x01;\n }\n\n public 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 public readByte(): number {\n return this.#bytes[this.#cursor++];\n }\n\n public readBytes(length: number): Uint8Array {\n return this.#bytes.subarray(this.#cursor, (this.#cursor += length));\n }\n\n public readVlq(): number {\n return readVLQ(this);\n }\n\n public readShort(): number {\n return Number(zigZagDecode(readVLQ(this)));\n }\n\n public readInt(): number {\n return Number(this.readLong());\n }\n\n public readLong(): bigint {\n return zigZagDecodeBigInt(readBigVLQ(this));\n }\n\n public readBigInt(): bigint {\n const len = readVLQ(this);\n return hexToBigInt(hex.encode(this.readBytes(len)));\n }\n}\n","import { blake2b256, type Coder, hex } from \"@fleet-sdk/crypto\";\nimport { bigIntToHex } from \"./bigint\";\nimport { writeBigVLQ, writeVLQ } from \"./vlq\";\nimport { zigZagEncode, zigZagEncodeBigInt } from \"./zigZag\";\n\nexport class SigmaByteWriter {\n readonly #bytes: Uint8Array;\n #cursor: number;\n\n public 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 public writeBoolean(value: boolean): SigmaByteWriter {\n this.write(value === true ? 0x01 : 0x00);\n\n return this;\n }\n\n public writeVLQ(value: number): SigmaByteWriter {\n return writeVLQ(this, value);\n }\n\n public writeBigVLQ(value: bigint): SigmaByteWriter {\n return writeBigVLQ(this, value);\n }\n\n public writeShort(value: number): SigmaByteWriter {\n this.writeVLQ(zigZagEncode(value));\n return this;\n }\n\n public writeInt(value: number): SigmaByteWriter {\n this.writeLong(BigInt(value));\n return this;\n }\n\n public writeLong(value: bigint): SigmaByteWriter {\n this.writeBigVLQ(zigZagEncodeBigInt(value));\n return this;\n }\n\n public write(byte: number): SigmaByteWriter {\n this.#bytes[this.#cursor++] = byte;\n return this;\n }\n\n public writeBytes(bytes: ArrayLike<number>): SigmaByteWriter {\n this.#bytes.set(bytes, this.#cursor);\n this.#cursor += bytes.length;\n return this;\n }\n\n public writeHex(bytesHex: string): SigmaByteWriter {\n return this.writeBytes(hex.decode(bytesHex));\n }\n\n public 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 public writeBigInt(value: bigint): SigmaByteWriter {\n const hex = bigIntToHex(value);\n return this.writeVLQ(hex.length / 2).writeHex(hex);\n }\n\n public 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 public encode<T>(coder: Coder<Uint8Array, T>): T {\n return coder.encode(this.toBytes());\n }\n\n public 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 { 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","import type { SType } from \"./base\";\nimport type { SCollType, STupleType } from \"./generics\";\nimport { 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 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 { isEmpty } from \"@fleet-sdk/common\";\nimport { SConstant } from \"../sigmaConstant\";\nimport type { SType } from \"./base\";\nimport { descriptors } from \"./descriptors\";\nimport { SCollType, STupleType } from \"./generics\";\nimport { 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 = (value?: undefined) => SConstant<undefined, SUnitType>;\nexport const SUnit: SUnit = monoProxy(SUnitType, undefined, true);\n\ntype SColl = {\n <D, T extends SType>(type: SConstructor<D, T>): SConstructor<D[], T>;\n <D, T extends SByteType>(\n type: SConstructor<D, T>,\n elements: ByteInput | D[]\n ): SConstant<Uint8Array, 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 { assert } 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\";\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.writeBoolean(data as boolean);\n case descriptors.byte.code:\n return writer.write(data as number);\n case descriptors.short.code:\n return writer.writeShort(data as number);\n case descriptors.int.code:\n return writer.writeInt(data as number);\n case descriptors.long.code:\n return writer.writeLong(data as bigint);\n case descriptors.bigInt.code:\n return writer.writeBigInt(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.writeVLQ(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\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.readBoolean();\n case descriptors.byte.code:\n return reader.readByte();\n case descriptors.short.code:\n return reader.readShort();\n case descriptors.int.code:\n return reader.readInt();\n case descriptors.long.code:\n return reader.readLong();\n case descriptors.bigInt.code:\n return reader.readBigInt();\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.readVlq();\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 }\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 (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.writeVLQ(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.readVlq();\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 }\n }\n\n throw new Error(\"Not implemented.\");\n }\n};\n","import { assert, isUndefined } from \"@fleet-sdk/common\";\nimport { 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>(bytes: ByteInput): SConstant<D, T> {\n assert(bytes.length > 0, \"Empty constant bytes.\");\n\n const reader = new SigmaByteReader(bytes);\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 {\n type Amount,\n type Box,\n type BoxCandidate,\n byteSizeOf,\n ensureBigInt,\n isDefined,\n isEmpty,\n isUndefined,\n type NonMandatoryRegisters,\n some,\n type TokenAmount\n} from \"@fleet-sdk/common\";\nimport { estimateVLQSize, SigmaByteWriter } from \"../coders\";\n\nconst MAX_UINT16_VALUE = 65535;\n\nexport function serializeBox(box: Box<Amount>): SigmaByteWriter;\nexport function serializeBox(box: Box<Amount>, writer: SigmaByteWriter): SigmaByteWriter;\nexport function serializeBox(\n box: BoxCandidate<Amount>,\n writer: SigmaByteWriter,\n distinctTokenIds: string[]\n): SigmaByteWriter;\nexport function serializeBox(\n box: Box<Amount> | BoxCandidate<Amount>,\n writer = new SigmaByteWriter(5_0000),\n distinctTokenIds?: string[]\n): SigmaByteWriter {\n writer.writeBigVLQ(ensureBigInt(box.value));\n writer.writeHex(box.ergoTree);\n writer.writeVLQ(box.creationHeight);\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).writeVLQ(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\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 (isEmpty(tokens)) {\n writer.write(0);\n\n return;\n }\n\n writer.writeVLQ(tokens.length);\n if (some(tokenIds)) {\n tokens.map((token) =>\n writer\n .writeVLQ(tokenIds.indexOf(token.tokenId))\n .writeBigVLQ(ensureBigInt(token.amount))\n );\n } else {\n tokens.map((token) =>\n writer.writeHex(token.tokenId).writeBigVLQ(ensureBigInt(token.amount))\n );\n }\n}\n\nfunction writeRegisters(writer: SigmaByteWriter, registers: NonMandatoryRegisters): void {\n const keys = Object.keys(registers).sort();\n let length = 0;\n\n for (const key of keys) {\n if (registers[key as keyof NonMandatoryRegisters]) length++;\n }\n\n writer.writeVLQ(length);\n if (length === 0) return;\n\n for (const key of keys) {\n const register = registers[key as keyof NonMandatoryRegisters];\n if (isDefined(register)) writer.writeHex(register);\n }\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","import {\n type Amount,\n type BoxCandidate,\n type ContextExtension,\n type DataInput,\n isDefined,\n type UnsignedInput\n} from \"@fleet-sdk/common\";\nimport { SigmaByteWriter } from \"../coders\";\nimport { serializeBox } from \"./boxSerializer\";\n\nexport type MinimalUnsignedTransaction = {\n inputs: readonly UnsignedInput[];\n dataInputs: readonly DataInput[];\n outputs: readonly BoxCandidate<Amount>[];\n};\n\nexport function serializeTransaction(\n transaction: MinimalUnsignedTransaction\n): SigmaByteWriter {\n const writer = new SigmaByteWriter(100_000);\n\n // write inputs\n writer.writeVLQ(transaction.inputs.length);\n transaction.inputs.map((input) => writeInput(writer, input));\n\n // write data inputs\n writer.writeVLQ(transaction.dataInputs.length);\n transaction.dataInputs.map((dataInput) => writer.writeHex(dataInput.boxId));\n\n // write distinct token IDs\n const distinctTokenIds = getDistinctTokenIds(transaction.outputs);\n writer.writeVLQ(distinctTokenIds.length);\n distinctTokenIds.map((tokenId) => writer.writeHex(tokenId));\n\n // write outputs\n writer.writeVLQ(transaction.outputs.length);\n transaction.outputs.map((output) => serializeBox(output, writer, distinctTokenIds));\n\n return writer;\n}\n\nfunction writeInput(writer: SigmaByteWriter, input: UnsignedInput): void {\n writer.writeHex(input.boxId);\n writer.write(0); // empty proof\n writeExtension(writer, input.extension);\n}\n\nfunction writeExtension(writer: SigmaByteWriter, extension: ContextExtension): void {\n const keys = Object.keys(extension);\n let length = 0;\n\n for (const key of keys) {\n const ext = extension[key as unknown as keyof ContextExtension];\n if (isDefined(ext)) {\n length++;\n }\n }\n\n writer.writeVLQ(length);\n if (length === 0) return;\n\n for (const key of keys) {\n const ext = extension[key as unknown as keyof ContextExtension];\n if (isDefined(ext)) {\n writer.writeVLQ(Number(key)).writeHex(ext);\n }\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"]}
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/dataSerializer.ts","../src/serializers/typeSerializer.ts","../src/sigmaConstant.ts","../src/serializers/boxSerializer.ts","../src/serializers/transactionSerializer.ts"],"names":["hex","_0n","first","_127n","_7n","_128n","ensureBigInt","_1n","_63n","isEmpty","ensureBytes","blake2b256","assert","last","isDefined","some","isUndefined","byteSizeOf"],"mappings":"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","file":"index.js","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 } 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 public get isEmpty(): boolean {\n return isEmpty(this.#bytes);\n }\n\n constructor(bytes: ByteInput) {\n this.#bytes = ensureBytes(bytes);\n this.#cursor = 0;\n }\n\n public readBool(): boolean {\n return this.readByte() === 0x01;\n }\n\n public 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 public readByte(): number {\n return this.#bytes[this.#cursor++];\n }\n\n public readBytes(length: number): Uint8Array {\n return this.#bytes.subarray(this.#cursor, (this.#cursor += length));\n }\n\n public readVlq(): number {\n return readVLQ(this);\n }\n\n public readI8(): number {\n const byte = this.readByte();\n return byte > MAX_I8 ? byte - (MAX_U8 + 1) : byte;\n }\n\n public readI16(): number {\n return zigZag32.decode(readBigVLQ(this));\n }\n\n public readI32(): number {\n return zigZag32.decode(readBigVLQ(this));\n }\n\n public readI64(): bigint {\n return zigZag64.decode(readBigVLQ(this));\n }\n\n public readI256(): bigint {\n const len = readVLQ(this);\n return hexToBigInt(hex.encode(this.readBytes(len)));\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 public 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 public writeBool(value: boolean): SigmaByteWriter {\n this.write(value === true ? 0x01 : 0x00);\n\n return this;\n }\n\n public writeVLQ(value: number): SigmaByteWriter {\n return writeVLQ(this, value);\n }\n\n public writeBigVLQ(value: bigint): SigmaByteWriter {\n return writeBigVLQ(this, value);\n }\n\n public 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.writeBigVLQ(zigZag32.encode(value));\n return this;\n }\n\n public 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.writeBigVLQ(zigZag32.encode(value));\n }\n\n public 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.writeBigVLQ(zigZag64.encode(value));\n }\n\n public 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.writeVLQ(hex.length / 2).writeHex(hex);\n }\n\n public write(byte: number): SigmaByteWriter {\n this.#bytes[this.#cursor++] = byte;\n return this;\n }\n\n public writeBytes(bytes: ArrayLike<number>): SigmaByteWriter {\n this.#bytes.set(bytes, this.#cursor);\n this.#cursor += bytes.length;\n return this;\n }\n\n public writeHex(bytesHex: string): SigmaByteWriter {\n return this.writeBytes(hex.decode(bytesHex));\n }\n\n public 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 public 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 public encode<T>(coder: Coder<Uint8Array, T>): T {\n return coder.encode(this.toBytes());\n }\n\n public 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 { 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","import type { SType } from \"./base\";\nimport type { SCollType, STupleType } from \"./generics\";\nimport { 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 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 { isEmpty } from \"@fleet-sdk/common\";\nimport { SConstant } from \"../sigmaConstant\";\nimport type { SType } from \"./base\";\nimport { descriptors } from \"./descriptors\";\nimport { SCollType, STupleType } from \"./generics\";\nimport { 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 = (value?: undefined) => SConstant<undefined, SUnitType>;\nexport const SUnit: SUnit = monoProxy(SUnitType, undefined, true);\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 { assert } 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\";\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.writeVLQ(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\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.readVlq();\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 }\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 (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.writeVLQ(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.readVlq();\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 }\n }\n\n throw new Error(\"Not implemented.\");\n }\n};\n","import { assert, isUndefined } from \"@fleet-sdk/common\";\nimport { 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>(bytes: ByteInput): SConstant<D, T> {\n assert(bytes.length > 0, \"Empty constant bytes.\");\n\n const reader = new SigmaByteReader(bytes);\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 {\n type Amount,\n type Box,\n type BoxCandidate,\n byteSizeOf,\n ensureBigInt,\n isDefined,\n isEmpty,\n isUndefined,\n type NonMandatoryRegisters,\n some,\n type TokenAmount\n} from \"@fleet-sdk/common\";\nimport { estimateVLQSize, SigmaByteWriter } from \"../coders\";\n\nconst MAX_UINT16_VALUE = 65535;\n\nexport function serializeBox(box: Box<Amount>): SigmaByteWriter;\nexport function serializeBox(box: Box<Amount>, writer: SigmaByteWriter): SigmaByteWriter;\nexport function serializeBox(\n box: BoxCandidate<Amount>,\n writer: SigmaByteWriter,\n distinctTokenIds: string[]\n): SigmaByteWriter;\nexport function serializeBox(\n box: Box<Amount> | BoxCandidate<Amount>,\n writer = new SigmaByteWriter(4_096),\n distinctTokenIds?: string[]\n): SigmaByteWriter {\n writer.writeBigVLQ(ensureBigInt(box.value));\n writer.writeHex(box.ergoTree);\n writer.writeVLQ(box.creationHeight);\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).writeVLQ(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 (isEmpty(tokens)) {\n writer.write(0);\n return;\n }\n\n writer.writeVLQ(tokens.length);\n if (some(tokenIds)) {\n tokens.map((token) =>\n writer\n .writeVLQ(tokenIds.indexOf(token.tokenId))\n .writeBigVLQ(ensureBigInt(token.amount))\n );\n } else {\n tokens.map((token) =>\n writer.writeHex(token.tokenId).writeBigVLQ(ensureBigInt(token.amount))\n );\n }\n}\n\nfunction writeRegisters(writer: SigmaByteWriter, registers: NonMandatoryRegisters): void {\n const keys = Object.keys(registers).sort();\n let length = 0;\n\n for (const key of keys) {\n if (registers[key as keyof NonMandatoryRegisters]) length++;\n }\n\n writer.writeVLQ(length);\n if (length === 0) return;\n\n for (const key of keys) {\n const register = registers[key as keyof NonMandatoryRegisters];\n if (isDefined(register)) writer.writeHex(register);\n }\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","import {\n type Amount,\n type BoxCandidate,\n type DataInput,\n isDefined,\n type UnsignedInput\n} from \"@fleet-sdk/common\";\nimport { SigmaByteWriter } from \"../coders\";\nimport { serializeBox } from \"./boxSerializer\";\n\nexport type MinimalUnsignedTransaction = {\n inputs: readonly UnsignedInput[];\n dataInputs: readonly DataInput[];\n outputs: readonly BoxCandidate<Amount>[];\n};\n\nexport function serializeTransaction(\n transaction: MinimalUnsignedTransaction\n): SigmaByteWriter {\n const writer = new SigmaByteWriter(100_000);\n\n // write inputs\n writer.writeVLQ(transaction.inputs.length);\n transaction.inputs.map((input) => writeInput(writer, input));\n\n // write data inputs\n writer.writeVLQ(transaction.dataInputs.length);\n transaction.dataInputs.map((dataInput) => writer.writeHex(dataInput.boxId));\n\n // write distinct token IDs\n const distinctTokenIds = getDistinctTokenIds(transaction.outputs);\n writer.writeVLQ(distinctTokenIds.length);\n distinctTokenIds.map((tokenId) => writer.writeHex(tokenId));\n\n // write outputs\n writer.writeVLQ(transaction.outputs.length);\n transaction.outputs.map((output) => serializeBox(output, writer, distinctTokenIds));\n\n return writer;\n}\n\nfunction writeInput(writer: SigmaByteWriter, input: UnsignedInput): void {\n writer.writeHex(input.boxId);\n writer.write(0); // empty proof\n writeExtension(writer, input.extension);\n}\n\nfunction writeExtension(\n writer: SigmaByteWriter,\n extension: Record<string, string | undefined>\n): void {\n const keys = Object.keys(extension);\n let length = 0;\n\n for (const key of keys) {\n if (isDefined(extension[key])) length++;\n }\n\n writer.writeVLQ(length);\n if (length === 0) return;\n\n for (const key of keys) {\n const val = extension[key];\n if (isDefined(val)) {\n writer.writeVLQ(Number(key)).writeHex(val);\n }\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"]}
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { ensureBigInt, _0n, _128n, isEmpty, assert, first, last, isDefined, some, isUndefined, byteSizeOf, _7n, _1n, _63n, _127n } from '@fleet-sdk/common';
1
+ import { ensureBigInt, _0n, _128n, isEmpty, assert, first, last, isDefined, some, isUndefined, byteSizeOf, _7n, _1n, _127n, _63n } from '@fleet-sdk/common';
2
2
  import { ensureBytes, hex, blake2b256 } from '@fleet-sdk/crypto';
3
3
 
4
4
  // src/coders/sigmaByteReader.ts
@@ -103,18 +103,45 @@ function estimateVLQSize(value) {
103
103
  } while (val > _0n);
104
104
  return size;
105
105
  }
106
- function zigZagEncode(input) {
107
- return input << 1 ^ input >> 63;
108
- }
109
- function zigZagDecode(input) {
110
- return input >> 1 ^ -(input & 1);
111
- }
112
- function zigZagEncodeBigInt(input) {
113
- return input << _1n ^ input >> _63n;
114
- }
115
- function zigZagDecodeBigInt(input) {
116
- return input >> _1n ^ -(input & _1n);
117
- }
106
+ var _31n = BigInt(31);
107
+ var u64 = (v) => BigInt.asUintN(64, v);
108
+ var i64 = (v) => BigInt.asIntN(64, v);
109
+ var i32 = (v) => BigInt.asIntN(32, v);
110
+ var u32 = (v) => BigInt.asUintN(32, v);
111
+ var zigZag32 = {
112
+ encode: (input) => {
113
+ const v = i32(BigInt(input));
114
+ return u64(i32(v << _1n) ^ i32(v >> _31n));
115
+ },
116
+ decode: (input) => {
117
+ const v = u32(input);
118
+ return Number(v >> _1n ^ -(v & _1n));
119
+ }
120
+ };
121
+ var zigZag64 = {
122
+ encode: (input) => {
123
+ return u64(input << _1n ^ input >> _63n);
124
+ },
125
+ decode: (input) => {
126
+ return i64(input >> _1n ^ -(input & _1n));
127
+ }
128
+ };
129
+
130
+ // src/coders/numRanges.ts
131
+ var MAX_U8 = 255;
132
+ var MAX_I8 = 127;
133
+ var MIN_I16 = -32768;
134
+ var MAX_I16 = 32767;
135
+ var MIN_I32 = -2147483648;
136
+ var MAX_I32 = 2147483647;
137
+ var MIN_I64 = -BigInt("0x8000000000000000");
138
+ var MAX_I64 = BigInt("0x7fffffffffffffff");
139
+ var MIN_I256 = -BigInt(
140
+ "0x8000000000000000000000000000000000000000000000000000000000000000"
141
+ );
142
+ var MAX_I256 = BigInt(
143
+ "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
144
+ );
118
145
 
119
146
  // src/coders/sigmaByteReader.ts
120
147
  var SigmaByteReader = class {
@@ -127,7 +154,7 @@ var SigmaByteReader = class {
127
154
  this.#bytes = ensureBytes(bytes);
128
155
  this.#cursor = 0;
129
156
  }
130
- readBoolean() {
157
+ readBool() {
131
158
  return this.readByte() === 1;
132
159
  }
133
160
  readBits(length) {
@@ -153,16 +180,20 @@ var SigmaByteReader = class {
153
180
  readVlq() {
154
181
  return readVLQ(this);
155
182
  }
156
- readShort() {
157
- return Number(zigZagDecode(readVLQ(this)));
183
+ readI8() {
184
+ const byte = this.readByte();
185
+ return byte > MAX_I8 ? byte - (MAX_U8 + 1) : byte;
186
+ }
187
+ readI16() {
188
+ return zigZag32.decode(readBigVLQ(this));
158
189
  }
159
- readInt() {
160
- return Number(this.readLong());
190
+ readI32() {
191
+ return zigZag32.decode(readBigVLQ(this));
161
192
  }
162
- readLong() {
163
- return zigZagDecodeBigInt(readBigVLQ(this));
193
+ readI64() {
194
+ return zigZag64.decode(readBigVLQ(this));
164
195
  }
165
- readBigInt() {
196
+ readI256() {
166
197
  const len = readVLQ(this);
167
198
  return hexToBigInt(hex.encode(this.readBytes(len)));
168
199
  }
@@ -177,7 +208,7 @@ var SigmaByteWriter = class {
177
208
  this.#bytes = new Uint8Array(length);
178
209
  this.#cursor = 0;
179
210
  }
180
- writeBoolean(value) {
211
+ writeBool(value) {
181
212
  this.write(value === true ? 1 : 0);
182
213
  return this;
183
214
  }
@@ -187,17 +218,31 @@ var SigmaByteWriter = class {
187
218
  writeBigVLQ(value) {
188
219
  return writeBigVLQ(this, value);
189
220
  }
190
- writeShort(value) {
191
- this.writeVLQ(zigZagEncode(value));
221
+ writeI16(value) {
222
+ if (value < MIN_I16 || value > MAX_I16) {
223
+ throw new RangeError(`Value ${value} is out of range for a 16-bit integer`);
224
+ }
225
+ this.writeBigVLQ(zigZag32.encode(value));
192
226
  return this;
193
227
  }
194
- writeInt(value) {
195
- this.writeLong(BigInt(value));
196
- return this;
228
+ writeI32(value) {
229
+ if (value < MIN_I32 || value > MAX_I32) {
230
+ throw new RangeError(`Value ${value} is out of range for a 32-bit integer`);
231
+ }
232
+ return this.writeBigVLQ(zigZag32.encode(value));
197
233
  }
198
- writeLong(value) {
199
- this.writeBigVLQ(zigZagEncodeBigInt(value));
200
- return this;
234
+ writeI64(value) {
235
+ if (value < MIN_I64 || value > MAX_I64) {
236
+ throw new RangeError(`Value ${value} is out of range for a 64-bit integer`);
237
+ }
238
+ return this.writeBigVLQ(zigZag64.encode(value));
239
+ }
240
+ writeI256(value) {
241
+ if (value < MIN_I256 || value > MAX_I256) {
242
+ throw new RangeError(`Value ${value} is out of range for a 256-bit integer`);
243
+ }
244
+ const hex6 = bigIntToHex(value);
245
+ return this.writeVLQ(hex6.length / 2).writeHex(hex6);
201
246
  }
202
247
  write(byte) {
203
248
  this.#bytes[this.#cursor++] = byte;
@@ -227,10 +272,6 @@ var SigmaByteWriter = class {
227
272
  if (bitOffset > 0) this.#cursor++;
228
273
  return this;
229
274
  }
230
- writeBigInt(value) {
231
- const hex6 = bigIntToHex(value);
232
- return this.writeVLQ(hex6.length / 2).writeHex(hex6);
233
- }
234
275
  writeChecksum(length = 4, hashFn = blake2b256) {
235
276
  const hash = hashFn(this.toBytes());
236
277
  return this.writeBytes(length ? hash.subarray(0, length) : hash);
@@ -494,7 +535,7 @@ var SSigmaProp = monoProxy(
494
535
  SSigmaPropType,
495
536
  descriptors.sigmaProp
496
537
  );
497
- var SUnit = monoProxy(SUnitType, void 0, true);
538
+ var SUnit = monoProxy(SUnitType, undefined, true);
498
539
  var SColl = genericProxy(SCollType, (target, _, args) => {
499
540
  const [type, elements] = args;
500
541
  const elementsType = type();
@@ -520,17 +561,17 @@ var dataSerializer = {
520
561
  if (type.embeddable) {
521
562
  switch (type.code) {
522
563
  case descriptors.bool.code:
523
- return writer.writeBoolean(data);
564
+ return writer.writeBool(data);
524
565
  case descriptors.byte.code:
525
566
  return writer.write(data);
526
567
  case descriptors.short.code:
527
- return writer.writeShort(data);
568
+ return writer.writeI16(data);
528
569
  case descriptors.int.code:
529
- return writer.writeInt(data);
570
+ return writer.writeI32(data);
530
571
  case descriptors.long.code:
531
- return writer.writeLong(data);
572
+ return writer.writeI64(data);
532
573
  case descriptors.bigInt.code:
533
- return writer.writeBigInt(data);
574
+ return writer.writeI256(data);
534
575
  case descriptors.groupElement.code:
535
576
  return writer.writeBytes(data);
536
577
  case descriptors.sigmaProp.code: {
@@ -588,17 +629,17 @@ var dataSerializer = {
588
629
  if (type.embeddable) {
589
630
  switch (type.code) {
590
631
  case descriptors.bool.code:
591
- return reader.readBoolean();
632
+ return reader.readBool();
592
633
  case descriptors.byte.code:
593
- return reader.readByte();
634
+ return reader.readI8();
594
635
  case descriptors.short.code:
595
- return reader.readShort();
636
+ return reader.readI16();
596
637
  case descriptors.int.code:
597
- return reader.readInt();
638
+ return reader.readI32();
598
639
  case descriptors.long.code:
599
- return reader.readLong();
640
+ return reader.readI64();
600
641
  case descriptors.bigInt.code:
601
- return reader.readBigInt();
642
+ return reader.readI256();
602
643
  case descriptors.groupElement.code:
603
644
  return reader.readBytes(GROUP_ELEMENT_LENGTH);
604
645
  case descriptors.sigmaProp.code: {
@@ -633,7 +674,7 @@ var dataSerializer = {
633
674
  );
634
675
  }
635
676
  case descriptors.unit.code:
636
- return void 0;
677
+ return undefined;
637
678
  }
638
679
  }
639
680
  throw new Error(`Parsing error: '0x${type.code.toString(16)}' type not implemented.`);
@@ -793,7 +834,7 @@ var SConstant = class _SConstant {
793
834
  }
794
835
  };
795
836
  function decode(value) {
796
- if (value === void 0) return;
837
+ if (value === undefined) return;
797
838
  try {
798
839
  return SConstant.from(value);
799
840
  } catch {
@@ -818,7 +859,7 @@ function parse(constant, mode = "strict") {
818
859
  }
819
860
  }
820
861
  var MAX_UINT16_VALUE = 65535;
821
- function serializeBox(box, writer = new SigmaByteWriter(5e4), distinctTokenIds) {
862
+ function serializeBox(box, writer = new SigmaByteWriter(4096), distinctTokenIds) {
822
863
  writer.writeBigVLQ(ensureBigInt(box.value));
823
864
  writer.writeHex(box.ergoTree);
824
865
  writer.writeVLQ(box.creationHeight);
@@ -908,17 +949,14 @@ function writeExtension(writer, extension) {
908
949
  const keys = Object.keys(extension);
909
950
  let length = 0;
910
951
  for (const key of keys) {
911
- const ext = extension[key];
912
- if (isDefined(ext)) {
913
- length++;
914
- }
952
+ if (isDefined(extension[key])) length++;
915
953
  }
916
954
  writer.writeVLQ(length);
917
955
  if (length === 0) return;
918
956
  for (const key of keys) {
919
- const ext = extension[key];
920
- if (isDefined(ext)) {
921
- writer.writeVLQ(Number(key)).writeHex(ext);
957
+ const val = extension[key];
958
+ if (isDefined(val)) {
959
+ writer.writeVLQ(Number(key)).writeHex(val);
922
960
  }
923
961
  }
924
962
  }