@xyo-network/xl1-wrappers 1.15.26 → 1.15.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,3 @@
1
- export * from './amount/index.ts';
2
1
  export * from './Base.ts';
3
2
  export * from './chain/index.ts';
4
3
  export * from './Fees.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA"}
@@ -1,83 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
- // src/amount/splitOnDecimal.ts
5
- var splitOnDecimal = /* @__PURE__ */ __name((value, places = 18) => {
6
- const whole = value / BigInt(10 ** places);
7
- const decimal = value % BigInt(10 ** places);
8
- return [
9
- whole,
10
- decimal
11
- ];
12
- }, "splitOnDecimal");
13
-
14
- // src/amount/splitOnDecimalToString.ts
15
- var splitOnDecimalToString = /* @__PURE__ */ __name((value, places = 18, maxDecimal = places, maxCharacters = 9, minDecimals = 1, locale = "en-US") => {
16
- const [whole, decimal] = splitOnDecimal(value, places);
17
- if (whole === 0n && decimal < 10 ** maxDecimal && decimal !== 0n) return "< 0.".padEnd(maxDecimal + 5, "0") + "1";
18
- const wholeCharacters = whole.toString(10).length;
19
- const calcMaxDecimalCharacters = maxCharacters === -1 ? places : wholeCharacters > maxCharacters ? 0 : maxCharacters - wholeCharacters;
20
- const maxDecimalCharacters = Math.min(maxDecimal, calcMaxDecimalCharacters);
21
- const formattedWhole = new Intl.NumberFormat(locale, {
22
- maximumFractionDigits: 0,
23
- useGrouping: true
24
- }).format(whole);
25
- const decimalSeparator = new Intl.NumberFormat(locale).formatToParts(1.1).find((part) => part.type === "decimal")?.value ?? ".";
26
- let paddedDecimal = decimal.toString().padStart(places, "0").slice(0, maxDecimalCharacters);
27
- while (paddedDecimal.length > minDecimals && paddedDecimal.endsWith("0")) {
28
- paddedDecimal = paddedDecimal.slice(0, -1);
29
- }
30
- return `${formattedWhole}${paddedDecimal.length > 0 ? decimalSeparator : ""}${paddedDecimal}`;
31
- }, "splitOnDecimalToString");
32
-
33
- // src/amount/ShiftedBigInt.ts
34
- var ShiftedBigInt = class _ShiftedBigInt {
35
- static {
36
- __name(this, "ShiftedBigInt");
37
- }
38
- static defaultConfig = {
39
- places: 18,
40
- maxDecimal: 18,
41
- maxCharacters: 9,
42
- minDecimals: 1,
43
- locale: "en-US"
44
- };
45
- config;
46
- value;
47
- constructor(value, config = {}) {
48
- this.value = typeof value === "bigint" ? value : value.value;
49
- this.config = {
50
- ..._ShiftedBigInt.defaultConfig,
51
- ...typeof value === "bigint" ? {} : value.config,
52
- ...config
53
- };
54
- }
55
- get locale() {
56
- return this.config.locale ?? "en-US";
57
- }
58
- get maxCharacters() {
59
- return this.config.maxCharacters ?? 9;
60
- }
61
- get maxDecimal() {
62
- return this.config.maxDecimal ?? this.places;
63
- }
64
- get minDecimals() {
65
- return this.config.minDecimals ?? 1;
66
- }
67
- get places() {
68
- return this.config.places ?? 18;
69
- }
70
- toFullString() {
71
- return splitOnDecimalToString(this.value, this.places, this.places, Infinity, this.places, this.locale);
72
- }
73
- toShortString() {
74
- return splitOnDecimalToString(this.value, this.places, this.maxDecimal, this.maxCharacters, this.minDecimals, this.locale);
75
- }
76
- toString() {
77
- return this.toFullString();
78
- }
79
- };
80
-
81
4
  // src/Base.ts
82
5
  var BaseWrapper = class {
83
6
  static {
@@ -318,8 +241,10 @@ var HydratedTransactionWrapper = class _HydratedTransactionWrapper {
318
241
  return this._signatureCache[index];
319
242
  }
320
243
  async validate() {
321
- const errors = [];
322
- errors.push(...(await Promise.all(this._signatureCache.map((signature) => signature.validate()))).flat(), ...await validateTransaction(this.data));
244
+ const errors = [
245
+ ...(await Promise.all(this._signatureCache.map((signature) => signature.validate()))).flat(),
246
+ ...await validateTransaction(this.data)
247
+ ];
323
248
  return errors;
324
249
  }
325
250
  async parse(validate = false) {
@@ -339,10 +264,7 @@ export {
339
264
  ChainWrapper,
340
265
  FeesWrapper,
341
266
  HydratedTransactionWrapper,
342
- ShiftedBigInt,
343
267
  SignatureWrapper,
344
- createSignatureWrappers,
345
- splitOnDecimal,
346
- splitOnDecimalToString
268
+ createSignatureWrappers
347
269
  };
348
270
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/amount/splitOnDecimal.ts","../../src/amount/splitOnDecimalToString.ts","../../src/amount/ShiftedBigInt.ts","../../src/Base.ts","../../src/chain/chain.ts","../../src/Fees.ts","../../src/lib/createSignatureWrappers.ts","../../src/Signature.ts","../../src/transaction/HydratedTransaction.ts"],"sourcesContent":["/** @deprecated use from \\@xyo-network/xl1-protocol instead */\nexport const splitOnDecimal = (value: bigint, places = 18): [bigint, bigint] => {\n const whole = value / BigInt(10 ** places)\n const decimal = value % BigInt(10 ** places)\n return [whole, decimal]\n}\n","/* eslint-disable sonarjs/deprecation */\nimport { splitOnDecimal } from './splitOnDecimal.ts'\n\n/** @deprecated use from \\@xyo-network/xl1-protocol instead */\nexport const splitOnDecimalToString = (\n value: bigint,\n places = 18,\n maxDecimal = places,\n maxCharacters = 9,\n minDecimals = 1,\n locale: Intl.LocalesArgument = 'en-US',\n): string => {\n const [whole, decimal] = splitOnDecimal(value, places)\n if (whole === 0n && decimal < 10 ** maxDecimal && decimal !== 0n) return '< 0.'.padEnd(maxDecimal + 5, '0') + '1'\n\n const wholeCharacters = whole.toString(10).length\n const calcMaxDecimalCharacters = maxCharacters === -1 ? places : wholeCharacters > maxCharacters ? 0 : maxCharacters - wholeCharacters\n const maxDecimalCharacters = Math.min(maxDecimal, calcMaxDecimalCharacters)\n\n // Format whole number with thousand separators according to locale\n const formattedWhole = new Intl.NumberFormat(locale, {\n maximumFractionDigits: 0,\n useGrouping: true,\n }).format(whole)\n\n // Get decimal separator for the locale\n const decimalSeparator = new Intl.NumberFormat(locale)\n .formatToParts(1.1)\n .find(part => part.type === 'decimal')?.value ?? '.'\n\n // Pad decimal part to correct number of places\n let paddedDecimal = decimal.toString().padStart(places, '0').slice(0, maxDecimalCharacters)\n // remove unneeded trailing zeros (honoring minDecimals)\n while (paddedDecimal.length > minDecimals && paddedDecimal.endsWith('0')) {\n paddedDecimal = paddedDecimal.slice(0, -1)\n }\n\n return `${formattedWhole}${paddedDecimal.length > 0 ? decimalSeparator : ''}${paddedDecimal}`\n}\n","/* eslint-disable sonarjs/deprecation */\nimport type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk'\n\nimport { splitOnDecimalToString } from './splitOnDecimalToString.ts'\n\n/** @deprecated use from \\@xyo-network/xl1-protocol instead */\nexport class ShiftedBigInt {\n static readonly defaultConfig: ShiftedBigIntConfig = {\n places: 18,\n maxDecimal: 18,\n maxCharacters: 9,\n minDecimals: 1,\n locale: 'en-US',\n }\n\n config: ShiftedBigIntConfig\n value: bigint\n\n constructor(\n value: bigint | ShiftedBigInt,\n config: Partial<ShiftedBigIntConfig> = {},\n ) {\n this.value = typeof value === 'bigint' ? value : value.value\n this.config = {\n ...ShiftedBigInt.defaultConfig, ...(typeof value === 'bigint' ? {} : value.config), ...config,\n }\n }\n\n get locale(): Intl.LocalesArgument {\n return this.config.locale ?? 'en-US'\n }\n\n get maxCharacters(): number {\n return this.config.maxCharacters ?? 9\n }\n\n get maxDecimal(): number {\n return this.config.maxDecimal ?? this.places\n }\n\n get minDecimals(): number {\n return this.config.minDecimals ?? 1\n }\n\n get places(): number {\n return this.config.places ?? 18\n }\n\n toFullString(): string {\n return splitOnDecimalToString(\n this.value,\n this.places,\n this.places,\n Infinity,\n this.places,\n this.locale,\n )\n }\n\n toShortString(): string {\n return splitOnDecimalToString(\n this.value,\n this.places,\n this.maxDecimal,\n this.maxCharacters,\n this.minDecimals,\n this.locale,\n )\n }\n\n toString(): string {\n return this.toFullString()\n }\n}\n","import type { PromisableArray } from '@xylabs/promise'\nimport type { XyoConnection } from '@xyo-network/xl1-protocol'\n\nexport interface BaseWrapperConfig<T> {\n provider: XyoConnection\n value: T\n}\n\nexport class BaseWrapper<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>> {\n protected readonly config: Partial<C>\n protected readonly value: T\n protected constructor(value: T, config: Partial<C> = {}) {\n this.config = config\n this.value = value\n }\n\n get provider(): XyoConnection | undefined {\n return this.config.provider\n }\n\n static async create<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>>(value: T, config: Partial<C> = {}) {\n if ((await this.validateValue(value)).length > 0) {\n throw new Error(`Invalid value for ${this.constructor.name}: ${value}`)\n }\n if ((await this.validateConfig(config)).length > 0) {\n throw new Error(`Invalid config for ${this.constructor.name}: ${config}`)\n }\n return new this<T>(value, config)\n }\n\n static validateConfig(_config: unknown): PromisableArray<Error> {\n return []\n }\n\n static validateValue(_value: unknown): PromisableArray<Error> {\n return []\n }\n\n validate(): PromisableArray<Error> {\n return []\n }\n}\n","import type { Address } from '@xylabs/hex'\n\nimport type { BaseWrapperConfig } from '../Base.ts'\nimport { BaseWrapper } from '../Base.ts'\n\nexport class ChainWrapper extends BaseWrapper<Address, BaseWrapperConfig<Address>> {\n get id(): Address {\n return this.value\n }\n}\n","import type { Hex } from '@xylabs/hex'\nimport { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { TransactionFeesBigInt, TransactionFeesHex } from '@xyo-network/xl1-protocol'\nimport { AttoXL1 } from '@xyo-network/xl1-protocol'\nimport type { TransactionFeesInstance } from '@xyo-network/xl1-protocol-sdk'\n\nfunction parseHexOrBigInt(value: Hex | bigint) {\n return AttoXL1((typeof value === 'bigint' ? value : hexToBigInt(value)))\n}\n\nexport class FeesWrapper implements TransactionFeesInstance {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n\n constructor({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt) {\n this.base = parseHexOrBigInt(base)\n this.gasLimit = parseHexOrBigInt(gasLimit)\n this.gasPrice = parseHexOrBigInt(gasPrice)\n this.priority = parseHexOrBigInt(priority)\n }\n\n static validate({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt): Promisable<Error[]> {\n const errors: Error[] = []\n const baseValue = parseHexOrBigInt(base)\n const gasLimitValue = parseHexOrBigInt(gasLimit)\n const gasPriceValue = parseHexOrBigInt(gasPrice)\n const priorityValue = parseHexOrBigInt(priority)\n if (baseValue <= 0n) {\n errors.push(new Error('Base fee cannot be negative or zero'))\n }\n if (gasLimitValue < 0n) {\n errors.push(new Error('Gas limit cannot be negative'))\n }\n if (gasPriceValue < 0n) {\n errors.push(new Error('Gas price cannot be negative'))\n }\n if (priorityValue < 0n) {\n errors.push(new Error('Priority cannot be negative'))\n }\n return errors\n }\n\n async validate(): Promise<Error[]> {\n return await FeesWrapper.validate({\n base: this.base, gasLimit: this.gasLimit, gasPrice: this.gasPrice, priority: this.priority,\n })\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\n\nimport { SignatureWrapper } from '../Signature.ts'\n\nexport const createSignatureWrappers = async (bw: BoundWitness): Promise<SignatureInstance[]> => {\n const signatures: SignatureInstance[] = []\n const hash = await PayloadBuilder.dataHash(bw)\n for (let i = 0; i < bw.$signatures.length; i++) {\n signatures.push(\n new SignatureWrapper(bw.$signatures[i], bw.addresses[i], hash),\n )\n }\n return signatures\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\n\nexport class SignatureWrapper implements SignatureInstance {\n address: Address\n hash: Hash\n signature: Hex\n\n constructor(signature: Hex, address: Address, hash: Hash) {\n this.signature = signature\n this.address = address\n this.hash = hash\n }\n\n static async validate(hash: Hash, address: Address, signature: Hex): Promise<Error[]> {\n return await BoundWitnessValidator.validateSignature(toArrayBuffer(hash), toArrayBuffer(address), toArrayBuffer(signature))\n }\n\n async validate(): Promise<Error[]> {\n return await SignatureWrapper.validate(this.hash, this.address, this.signature)\n }\n}\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { hexToBigInt } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema, WithHashStorageMeta,\n WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, HydratedTransactionWithStorageMeta, Transfer,\n} from '@xyo-network/xl1-protocol'\nimport { isTransfer, XYO_ZERO_ADDRESS } from '@xyo-network/xl1-protocol'\nimport type {\n HydratedTransactionInstance, SignatureInstance,\n TransactionFeesInstance,\n} from '@xyo-network/xl1-protocol-sdk'\nimport {\n transactionRequiredGas, tryExtractElevatedHashes, tryExtractElevatedHashesFromScript,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\n\nimport { FeesWrapper } from '../Fees.ts'\nimport { createSignatureWrappers } from '../lib/index.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i ?? '00' as Hex)\n }\n return total\n}\n\nexport class HydratedTransactionWrapper<T extends HydratedTransactionWithStorageMeta> implements HydratedTransactionInstance<[T[0],\n T[1][number][]]> {\n data: T\n fees: TransactionFeesInstance\n\n protected payloadsCache: WithStorageMeta<Payload>[] = []\n\n private _signatureCache: SignatureInstance[] = []\n\n protected constructor(data: T) {\n this.data = data\n this.fees = new FeesWrapper(\n this.boundWitness.fees,\n )\n }\n\n get boundWitness(): T[0] {\n return this.data[0]\n }\n\n get elevatedPayloadCount(): number {\n const { script } = this.data[0]\n return script ? tryExtractElevatedHashesFromScript(script).length : 0\n }\n\n get elevatedPayloads(): WithStorageMeta<AllowedBlockPayload>[] {\n return tryExtractElevatedHashes(this.data)\n }\n\n get externalPayloads(): Record<Hash, Schema | Payload> {\n const allPayloads = this.payloads\n const external: Record<Hash, Schema | Payload> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n const payload = allPayloads.find(p => p._hash === payloadHash)\n external[payloadHash] = isDefined(payload) ? payload : this.boundWitness.payload_schemas[i]\n }\n return external\n }\n\n get from() {\n return this.data[0].from\n }\n\n get payloadCount(): number {\n return this.payloadsCache.length\n }\n\n get payloads(): WithHashStorageMeta<WithStorageMeta<T[1][number]>>[] {\n return [...this.payloadsCache]\n }\n\n get privateExternalPayloads(): Record<Hash, Schema> {\n const allPayloads = this.payloads\n const missing: Record<Hash, Schema> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n if (!allPayloads.some(p => p._hash === payloadHash)) {\n missing[payloadHash] = this.boundWitness.payload_schemas[i]\n }\n }\n return missing\n }\n\n // list all the payloads that are included in the transaction and are not elevated and found in the hydration\n get publicExternalPayloads(): Payload[] {\n const allPayloads = this.payloads\n const elevatedPayloads = this.elevatedPayloads\n return allPayloads.filter(p => !elevatedPayloads.some(ep => ep._hash === p._hash))\n }\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static async parse<T extends HydratedTransactionWithStorageMeta>(transaction: T, validate = false): Promise<HydratedTransactionInstance<[T[0],\n T[1][number][]]>> {\n const wrapper = new HydratedTransactionWrapper<T>(\n transaction,\n )\n const parsed = await wrapper.parse()\n if (validate) {\n const errors = await wrapper.validate()\n if (errors.length > 0) {\n throw new Error(`Block validation failed: ${errors.join(', ')}`)\n }\n }\n return parsed\n }\n\n elevatedPayload(index: number): WithHashStorageMeta<AllowedBlockPayload & T[1][number]> | undefined {\n return this.elevatedPayloads.at(index)\n }\n\n gasRequired(): bigint {\n return transactionRequiredGas(this.data)\n }\n\n payload(index: number): WithStorageMeta<Payload> | undefined {\n return this.payloads.at(index)\n }\n\n reward(): bigint {\n return this.payloadsCache.reduce((acc: bigint, payload) => acc + (\n isTransfer(payload)\n ? payload.from === XYO_ZERO_ADDRESS\n ? sumTransfers(payload)\n : 0n\n : 0n), 0n)\n }\n\n signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n async validate(): Promise<Error[]> {\n const errors: Error[] = []\n errors.push(\n ...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await validateTransaction(this.data)),\n )\n return errors\n }\n\n protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {\n const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n this._signatureCache = await createSignatureWrappers(this.data[0])\n for (const payload of transactionPayloads) {\n this.payloadsCache.push(payload)\n }\n if (validate) {\n await this.validate()\n }\n return this\n }\n}\n"],"mappings":"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","names":["splitOnDecimal","value","places","whole","BigInt","decimal","splitOnDecimalToString","value","places","maxDecimal","maxCharacters","minDecimals","locale","whole","decimal","splitOnDecimal","padEnd","wholeCharacters","toString","length","calcMaxDecimalCharacters","maxDecimalCharacters","Math","min","formattedWhole","Intl","NumberFormat","maximumFractionDigits","useGrouping","format","decimalSeparator","formatToParts","find","part","type","paddedDecimal","padStart","slice","endsWith","ShiftedBigInt","defaultConfig","places","maxDecimal","maxCharacters","minDecimals","locale","config","value","toFullString","splitOnDecimalToString","Infinity","toShortString","toString","BaseWrapper","config","value","provider","create","validateValue","length","Error","name","validateConfig","_config","_value","validate","ChainWrapper","BaseWrapper","id","value","hexToBigInt","AttoXL1","parseHexOrBigInt","value","AttoXL1","hexToBigInt","FeesWrapper","base","gasLimit","gasPrice","priority","validate","errors","baseValue","gasLimitValue","gasPriceValue","priorityValue","push","Error","PayloadBuilder","toArrayBuffer","BoundWitnessValidator","SignatureWrapper","address","hash","signature","validate","BoundWitnessValidator","validateSignature","toArrayBuffer","createSignatureWrappers","bw","signatures","hash","PayloadBuilder","dataHash","i","$signatures","length","push","SignatureWrapper","addresses","hexToBigInt","isDefined","PayloadBuilder","isTransfer","XYO_ZERO_ADDRESS","transactionRequiredGas","tryExtractElevatedHashes","tryExtractElevatedHashesFromScript","validateTransaction","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedTransactionWrapper","data","fees","payloadsCache","_signatureCache","FeesWrapper","boundWitness","elevatedPayloadCount","script","tryExtractElevatedHashesFromScript","length","elevatedPayloads","tryExtractElevatedHashes","externalPayloads","allPayloads","payloads","external","payload_hashes","payloadHash","find","p","_hash","isDefined","payload_schemas","from","payloadCount","privateExternalPayloads","missing","some","publicExternalPayloads","filter","ep","signatureCount","signatures","parse","transaction","validate","wrapper","parsed","errors","Error","join","elevatedPayload","index","at","gasRequired","transactionRequiredGas","reward","reduce","acc","isTransfer","XYO_ZERO_ADDRESS","signature","push","Promise","all","map","flat","validateTransaction","transactionPayloads","PayloadBuilder","addStorageMeta","createSignatureWrappers"]}
1
+ {"version":3,"sources":["../../src/Base.ts","../../src/chain/chain.ts","../../src/Fees.ts","../../src/lib/createSignatureWrappers.ts","../../src/Signature.ts","../../src/transaction/HydratedTransaction.ts"],"sourcesContent":["import type { PromisableArray } from '@xylabs/promise'\nimport type { XyoConnection } from '@xyo-network/xl1-protocol'\n\nexport interface BaseWrapperConfig<T> {\n provider: XyoConnection\n value: T\n}\n\nexport class BaseWrapper<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>> {\n protected readonly config: Partial<C>\n protected readonly value: T\n protected constructor(value: T, config: Partial<C> = {}) {\n this.config = config\n this.value = value\n }\n\n get provider(): XyoConnection | undefined {\n return this.config.provider\n }\n\n static async create<T, C extends BaseWrapperConfig<T> = BaseWrapperConfig<T>>(value: T, config: Partial<C> = {}) {\n if ((await this.validateValue(value)).length > 0) {\n throw new Error(`Invalid value for ${this.constructor.name}: ${value}`)\n }\n if ((await this.validateConfig(config)).length > 0) {\n throw new Error(`Invalid config for ${this.constructor.name}: ${config}`)\n }\n return new this<T>(value, config)\n }\n\n static validateConfig(_config: unknown): PromisableArray<Error> {\n return []\n }\n\n static validateValue(_value: unknown): PromisableArray<Error> {\n return []\n }\n\n validate(): PromisableArray<Error> {\n return []\n }\n}\n","import type { Address } from '@xylabs/hex'\n\nimport type { BaseWrapperConfig } from '../Base.ts'\nimport { BaseWrapper } from '../Base.ts'\n\nexport class ChainWrapper extends BaseWrapper<Address, BaseWrapperConfig<Address>> {\n get id(): Address {\n return this.value\n }\n}\n","import type { Hex } from '@xylabs/hex'\nimport { hexToBigInt } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { TransactionFeesBigInt, TransactionFeesHex } from '@xyo-network/xl1-protocol'\nimport { AttoXL1 } from '@xyo-network/xl1-protocol'\nimport type { TransactionFeesInstance } from '@xyo-network/xl1-protocol-sdk'\n\nfunction parseHexOrBigInt(value: Hex | bigint) {\n return AttoXL1((typeof value === 'bigint' ? value : hexToBigInt(value)))\n}\n\nexport class FeesWrapper implements TransactionFeesInstance {\n base: AttoXL1\n gasLimit: AttoXL1\n gasPrice: AttoXL1\n priority: AttoXL1\n\n constructor({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt) {\n this.base = parseHexOrBigInt(base)\n this.gasLimit = parseHexOrBigInt(gasLimit)\n this.gasPrice = parseHexOrBigInt(gasPrice)\n this.priority = parseHexOrBigInt(priority)\n }\n\n static validate({\n base, gasLimit, gasPrice, priority,\n }: TransactionFeesHex | TransactionFeesBigInt): Promisable<Error[]> {\n const errors: Error[] = []\n const baseValue = parseHexOrBigInt(base)\n const gasLimitValue = parseHexOrBigInt(gasLimit)\n const gasPriceValue = parseHexOrBigInt(gasPrice)\n const priorityValue = parseHexOrBigInt(priority)\n if (baseValue <= 0n) {\n errors.push(new Error('Base fee cannot be negative or zero'))\n }\n if (gasLimitValue < 0n) {\n errors.push(new Error('Gas limit cannot be negative'))\n }\n if (gasPriceValue < 0n) {\n errors.push(new Error('Gas price cannot be negative'))\n }\n if (priorityValue < 0n) {\n errors.push(new Error('Priority cannot be negative'))\n }\n return errors\n }\n\n async validate(): Promise<Error[]> {\n return await FeesWrapper.validate({\n base: this.base, gasLimit: this.gasLimit, gasPrice: this.gasPrice, priority: this.priority,\n })\n }\n}\n","import type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\n\nimport { SignatureWrapper } from '../Signature.ts'\n\nexport const createSignatureWrappers = async (bw: BoundWitness): Promise<SignatureInstance[]> => {\n const signatures: SignatureInstance[] = []\n const hash = await PayloadBuilder.dataHash(bw)\n for (let i = 0; i < bw.$signatures.length; i++) {\n signatures.push(\n new SignatureWrapper(bw.$signatures[i], bw.addresses[i], hash),\n )\n }\n return signatures\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { SignatureInstance } from '@xyo-network/xl1-protocol-sdk'\n\nexport class SignatureWrapper implements SignatureInstance {\n address: Address\n hash: Hash\n signature: Hex\n\n constructor(signature: Hex, address: Address, hash: Hash) {\n this.signature = signature\n this.address = address\n this.hash = hash\n }\n\n static async validate(hash: Hash, address: Address, signature: Hex): Promise<Error[]> {\n return await BoundWitnessValidator.validateSignature(toArrayBuffer(hash), toArrayBuffer(address), toArrayBuffer(signature))\n }\n\n async validate(): Promise<Error[]> {\n return await SignatureWrapper.validate(this.hash, this.address, this.signature)\n }\n}\n","import type { Hash, Hex } from '@xylabs/hex'\nimport { hexToBigInt } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n Payload, Schema,\n WithHashMeta,\n WithStorageMeta,\n} from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload, HydratedTransactionWithStorageMeta, Transfer,\n} from '@xyo-network/xl1-protocol'\nimport { isTransfer, XYO_ZERO_ADDRESS } from '@xyo-network/xl1-protocol'\nimport type {\n HydratedTransactionInstance, SignatureInstance,\n TransactionFeesInstance,\n} from '@xyo-network/xl1-protocol-sdk'\nimport {\n transactionRequiredGas, tryExtractElevatedHashes, tryExtractElevatedHashesFromScript,\n} from '@xyo-network/xl1-protocol-sdk'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\n\nimport { FeesWrapper } from '../Fees.ts'\nimport { createSignatureWrappers } from '../lib/index.ts'\n\nconst sumTransfers = (payload: Transfer) => {\n let total = 0n\n for (let i of Object.values(payload.transfers)) {\n total += hexToBigInt(i ?? '00' as Hex)\n }\n return total\n}\n\nexport class HydratedTransactionWrapper<T extends HydratedTransactionWithStorageMeta> implements HydratedTransactionInstance<[T[0],\n T[1][number][]]> {\n data: T\n fees: TransactionFeesInstance\n\n protected payloadsCache: WithStorageMeta<Payload>[] = []\n\n private _signatureCache: SignatureInstance[] = []\n\n protected constructor(data: T) {\n this.data = data\n this.fees = new FeesWrapper(\n this.boundWitness.fees,\n )\n }\n\n get boundWitness(): T[0] {\n return this.data[0]\n }\n\n get elevatedPayloadCount(): number {\n const { script } = this.data[0]\n return script ? tryExtractElevatedHashesFromScript(script).length : 0\n }\n\n get elevatedPayloads(): WithStorageMeta<AllowedBlockPayload>[] {\n return tryExtractElevatedHashes(this.data)\n }\n\n get externalPayloads(): Record<Hash, Schema | Payload> {\n const allPayloads = this.payloads\n const external: Record<Hash, Schema | Payload> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n const payload = allPayloads.find(p => p._hash === payloadHash)\n external[payloadHash] = isDefined(payload) ? payload : this.boundWitness.payload_schemas[i]\n }\n return external\n }\n\n get from() {\n return this.data[0].from\n }\n\n get payloadCount(): number {\n return this.payloadsCache.length\n }\n\n get payloads(): WithHashMeta<WithStorageMeta<T[1][number]>>[] {\n return [...this.payloadsCache]\n }\n\n get privateExternalPayloads(): Record<Hash, Schema> {\n const allPayloads = this.payloads\n const missing: Record<Hash, Schema> = {}\n for (let i = 0; i < this.boundWitness.payload_hashes.length; i++) {\n const payloadHash = this.boundWitness.payload_hashes[i]\n if (!allPayloads.some(p => p._hash === payloadHash)) {\n missing[payloadHash] = this.boundWitness.payload_schemas[i]\n }\n }\n return missing\n }\n\n // list all the payloads that are included in the transaction and are not elevated and found in the hydration\n get publicExternalPayloads(): Payload[] {\n const allPayloads = this.payloads\n const elevatedPayloads = this.elevatedPayloads\n return allPayloads.filter(p => !elevatedPayloads.some(ep => ep._hash === p._hash))\n }\n\n get signatureCount(): number {\n return this._signatureCache.length\n }\n\n get signatures(): SignatureInstance[] {\n return [...this._signatureCache]\n }\n\n static async parse<T extends HydratedTransactionWithStorageMeta>(transaction: T, validate = false): Promise<HydratedTransactionInstance<[T[0],\n T[1][number][]]>> {\n const wrapper = new HydratedTransactionWrapper<T>(\n transaction,\n )\n const parsed = await wrapper.parse()\n if (validate) {\n const errors = await wrapper.validate()\n if (errors.length > 0) {\n throw new Error(`Block validation failed: ${errors.join(', ')}`)\n }\n }\n return parsed\n }\n\n elevatedPayload(index: number): WithHashMeta<AllowedBlockPayload & T[1][number]> | undefined {\n return this.elevatedPayloads.at(index)\n }\n\n gasRequired(): bigint {\n return transactionRequiredGas(this.data)\n }\n\n payload(index: number): WithStorageMeta<Payload> | undefined {\n return this.payloads.at(index)\n }\n\n reward(): bigint {\n return this.payloadsCache.reduce((acc: bigint, payload) => acc + (\n isTransfer(payload)\n ? payload.from === XYO_ZERO_ADDRESS\n ? sumTransfers(payload)\n : 0n\n : 0n), 0n)\n }\n\n signature(index: number): SignatureInstance | undefined {\n return this._signatureCache[index]\n }\n\n async validate(): Promise<Error[]> {\n const errors: Error[] = [...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),\n ...(await validateTransaction(this.data))]\n return errors\n }\n\n protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashMeta<T[0]>, WithHashMeta<T[1][number]>[]]>> {\n const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])\n this._signatureCache = await createSignatureWrappers(this.data[0])\n for (const payload of transactionPayloads) {\n this.payloadsCache.push(payload)\n }\n if (validate) {\n await this.validate()\n }\n return this\n }\n}\n"],"mappings":"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","names":["BaseWrapper","config","value","provider","create","validateValue","length","Error","name","validateConfig","_config","_value","validate","ChainWrapper","BaseWrapper","id","value","hexToBigInt","AttoXL1","parseHexOrBigInt","value","AttoXL1","hexToBigInt","FeesWrapper","base","gasLimit","gasPrice","priority","validate","errors","baseValue","gasLimitValue","gasPriceValue","priorityValue","push","Error","PayloadBuilder","toArrayBuffer","BoundWitnessValidator","SignatureWrapper","address","hash","signature","validate","BoundWitnessValidator","validateSignature","toArrayBuffer","createSignatureWrappers","bw","signatures","hash","PayloadBuilder","dataHash","i","$signatures","length","push","SignatureWrapper","addresses","hexToBigInt","isDefined","PayloadBuilder","isTransfer","XYO_ZERO_ADDRESS","transactionRequiredGas","tryExtractElevatedHashes","tryExtractElevatedHashesFromScript","validateTransaction","sumTransfers","payload","total","i","Object","values","transfers","hexToBigInt","HydratedTransactionWrapper","data","fees","payloadsCache","_signatureCache","FeesWrapper","boundWitness","elevatedPayloadCount","script","tryExtractElevatedHashesFromScript","length","elevatedPayloads","tryExtractElevatedHashes","externalPayloads","allPayloads","payloads","external","payload_hashes","payloadHash","find","p","_hash","isDefined","payload_schemas","from","payloadCount","privateExternalPayloads","missing","some","publicExternalPayloads","filter","ep","signatureCount","signatures","parse","transaction","validate","wrapper","parsed","errors","Error","join","elevatedPayload","index","at","gasRequired","transactionRequiredGas","reward","reduce","acc","isTransfer","XYO_ZERO_ADDRESS","signature","Promise","all","map","flat","validateTransaction","transactionPayloads","PayloadBuilder","addStorageMeta","createSignatureWrappers","push"]}
@@ -1,5 +1,5 @@
1
1
  import type { Hash } from '@xylabs/hex';
2
- import type { Payload, Schema, WithHashStorageMeta, WithStorageMeta } from '@xyo-network/payload-model';
2
+ import type { Payload, Schema, WithHashMeta, WithStorageMeta } from '@xyo-network/payload-model';
3
3
  import type { AllowedBlockPayload, HydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol';
4
4
  import type { HydratedTransactionInstance, SignatureInstance, TransactionFeesInstance } from '@xyo-network/xl1-protocol-sdk';
5
5
  export declare class HydratedTransactionWrapper<T extends HydratedTransactionWithStorageMeta> implements HydratedTransactionInstance<[
@@ -21,7 +21,7 @@ export declare class HydratedTransactionWrapper<T extends HydratedTransactionWit
21
21
  readonly __address: true;
22
22
  }>;
23
23
  get payloadCount(): number;
24
- get payloads(): WithHashStorageMeta<WithStorageMeta<T[1][number]>>[];
24
+ get payloads(): WithHashMeta<WithStorageMeta<T[1][number]>>[];
25
25
  get privateExternalPayloads(): Record<Hash, Schema>;
26
26
  get publicExternalPayloads(): Payload[];
27
27
  get signatureCount(): number;
@@ -30,12 +30,12 @@ export declare class HydratedTransactionWrapper<T extends HydratedTransactionWit
30
30
  T[0],
31
31
  T[1][number][]
32
32
  ]>>;
33
- elevatedPayload(index: number): WithHashStorageMeta<AllowedBlockPayload & T[1][number]> | undefined;
33
+ elevatedPayload(index: number): WithHashMeta<AllowedBlockPayload & T[1][number]> | undefined;
34
34
  gasRequired(): bigint;
35
35
  payload(index: number): WithStorageMeta<Payload> | undefined;
36
36
  reward(): bigint;
37
37
  signature(index: number): SignatureInstance | undefined;
38
38
  validate(): Promise<Error[]>;
39
- protected parse(validate?: boolean): Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>>;
39
+ protected parse(validate?: boolean): Promise<HydratedTransactionInstance<[WithHashMeta<T[0]>, WithHashMeta<T[1][number]>[]]>>;
40
40
  }
41
41
  //# sourceMappingURL=HydratedTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,aAAa,CAAA;AAI5C,OAAO,KAAK,EACV,OAAO,EAAE,MAAM,EAAE,mBAAmB,EACpC,eAAe,EAChB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,mBAAmB,EAAE,kCAAkC,EACxD,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EACV,2BAA2B,EAAE,iBAAiB,EAC9C,uBAAuB,EACxB,MAAM,+BAA+B,CAAA;AAiBtC,qBAAa,0BAA0B,CAAC,CAAC,SAAS,kCAAkC,CAAE,YAAW,2BAA2B,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IAChI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;CAAC,CAAC;IAChB,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,EAAE,uBAAuB,CAAA;IAE7B,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAK;IAExD,OAAO,CAAC,eAAe,CAA0B;IAEjD,SAAS,aAAa,IAAI,EAAE,CAAC;IAO7B,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAEvB;IAED,IAAI,oBAAoB,IAAI,MAAM,CAGjC;IAED,IAAI,gBAAgB,IAAI,eAAe,CAAC,mBAAmB,CAAC,EAAE,CAE7D;IAED,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CASrD;IAED,IAAI,IAAI;;;;OAEP;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAEnE;IAED,IAAI,uBAAuB,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAUlD;IAGD,IAAI,sBAAsB,IAAI,OAAO,EAAE,CAItC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;WAEY,KAAK,CAAC,CAAC,SAAS,kCAAkC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QAC3I,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;KAAC,CAAC,CAAC;IAcnB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;IAInG,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS;IAI5D,MAAM,IAAI,MAAM;IAShB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIjD,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cASlB,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAWhJ"}
1
+ {"version":3,"file":"HydratedTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/HydratedTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAO,MAAM,aAAa,CAAA;AAI5C,OAAO,KAAK,EACV,OAAO,EAAE,MAAM,EACf,YAAY,EACZ,eAAe,EAChB,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EACV,mBAAmB,EAAE,kCAAkC,EACxD,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EACV,2BAA2B,EAAE,iBAAiB,EAC9C,uBAAuB,EACxB,MAAM,+BAA+B,CAAA;AAiBtC,qBAAa,0BAA0B,CAAC,CAAC,SAAS,kCAAkC,CAAE,YAAW,2BAA2B,CAAC;IAAC,CAAC,CAAC,CAAC,CAAC;IAChI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;CAAC,CAAC;IAChB,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,EAAE,uBAAuB,CAAA;IAE7B,SAAS,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,CAAK;IAExD,OAAO,CAAC,eAAe,CAA0B;IAEjD,SAAS,aAAa,IAAI,EAAE,CAAC;IAO7B,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAEvB;IAED,IAAI,oBAAoB,IAAI,MAAM,CAGjC;IAED,IAAI,gBAAgB,IAAI,eAAe,CAAC,mBAAmB,CAAC,EAAE,CAE7D;IAED,IAAI,gBAAgB,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CASrD;IAED,IAAI,IAAI;;;;OAEP;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAE5D;IAED,IAAI,uBAAuB,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAUlD;IAGD,IAAI,sBAAsB,IAAI,OAAO,EAAE,CAItC;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;WAEY,KAAK,CAAC,CAAC,SAAS,kCAAkC,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC;QAAC,CAAC,CAAC,CAAC,CAAC;QAC3I,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE;KAAC,CAAC,CAAC;IAcnB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,mBAAmB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS;IAI5F,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,SAAS;IAI5D,MAAM,IAAI,MAAM;IAShB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIjD,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;cAMlB,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAWlI"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/xl1-wrappers",
4
- "version": "1.15.26",
4
+ "version": "1.15.28",
5
5
  "description": "XYO Layer One SDK Wrappers",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -36,25 +36,25 @@
36
36
  "src"
37
37
  ],
38
38
  "dependencies": {
39
- "@xylabs/arraybuffer": "~5.0.17",
40
- "@xylabs/hex": "~5.0.17",
41
- "@xylabs/promise": "~5.0.17",
42
- "@xylabs/typeof": "~5.0.17",
43
- "@xyo-network/boundwitness-model": "~5.1.15",
44
- "@xyo-network/boundwitness-validator": "~5.1.15",
45
- "@xyo-network/payload-builder": "~5.1.15",
46
- "@xyo-network/payload-model": "~5.1.15",
47
- "@xyo-network/xl1-protocol": "~1.12.95",
48
- "@xyo-network/xl1-protocol-sdk": "~1.15.26",
49
- "@xyo-network/xl1-validation": "~1.15.26"
39
+ "@xylabs/arraybuffer": "~5.0.18",
40
+ "@xylabs/hex": "~5.0.18",
41
+ "@xylabs/promise": "~5.0.18",
42
+ "@xylabs/typeof": "~5.0.18",
43
+ "@xyo-network/boundwitness-model": "~5.1.17",
44
+ "@xyo-network/boundwitness-validator": "~5.1.17",
45
+ "@xyo-network/payload-builder": "~5.1.17",
46
+ "@xyo-network/payload-model": "~5.1.17",
47
+ "@xyo-network/xl1-protocol": "~1.12.102",
48
+ "@xyo-network/xl1-protocol-sdk": "~1.15.28",
49
+ "@xyo-network/xl1-validation": "~1.15.28"
50
50
  },
51
51
  "devDependencies": {
52
- "@types/node": "~24.9.2",
53
- "@xylabs/ts-scripts-yarn3": "~7.1.8",
54
- "@xylabs/tsconfig": "~7.1.8",
55
- "eslint": "^9.39.0",
52
+ "@types/node": "~24.10.0",
53
+ "@xylabs/ts-scripts-yarn3": "~7.2.4",
54
+ "@xylabs/tsconfig": "~7.2.4",
55
+ "eslint": "^9.39.1",
56
56
  "typescript": "~5.9.3",
57
- "vitest": "~3.2.4"
57
+ "vitest": "~4.0.7"
58
58
  },
59
59
  "engines": {
60
60
  "node": ">=22.3 <23"
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- export * from './amount/index.ts'
2
1
  export * from './Base.ts'
3
2
  export * from './chain/index.ts'
4
3
  export * from './Fees.ts'
@@ -3,7 +3,8 @@ import { hexToBigInt } from '@xylabs/hex'
3
3
  import { isDefined } from '@xylabs/typeof'
4
4
  import { PayloadBuilder } from '@xyo-network/payload-builder'
5
5
  import type {
6
- Payload, Schema, WithHashStorageMeta,
6
+ Payload, Schema,
7
+ WithHashMeta,
7
8
  WithStorageMeta,
8
9
  } from '@xyo-network/payload-model'
9
10
  import type {
@@ -78,7 +79,7 @@ export class HydratedTransactionWrapper<T extends HydratedTransactionWithStorage
78
79
  return this.payloadsCache.length
79
80
  }
80
81
 
81
- get payloads(): WithHashStorageMeta<WithStorageMeta<T[1][number]>>[] {
82
+ get payloads(): WithHashMeta<WithStorageMeta<T[1][number]>>[] {
82
83
  return [...this.payloadsCache]
83
84
  }
84
85
 
@@ -124,7 +125,7 @@ export class HydratedTransactionWrapper<T extends HydratedTransactionWithStorage
124
125
  return parsed
125
126
  }
126
127
 
127
- elevatedPayload(index: number): WithHashStorageMeta<AllowedBlockPayload & T[1][number]> | undefined {
128
+ elevatedPayload(index: number): WithHashMeta<AllowedBlockPayload & T[1][number]> | undefined {
128
129
  return this.elevatedPayloads.at(index)
129
130
  }
130
131
 
@@ -150,15 +151,12 @@ export class HydratedTransactionWrapper<T extends HydratedTransactionWithStorage
150
151
  }
151
152
 
152
153
  async validate(): Promise<Error[]> {
153
- const errors: Error[] = []
154
- errors.push(
155
- ...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),
156
- ...(await validateTransaction(this.data)),
157
- )
154
+ const errors: Error[] = [...(await Promise.all(this._signatureCache.map(signature => signature.validate()))).flat(),
155
+ ...(await validateTransaction(this.data))]
158
156
  return errors
159
157
  }
160
158
 
161
- protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashStorageMeta<T[0]>, WithHashStorageMeta<T[1][number]>[]]>> {
159
+ protected async parse(validate = false): Promise<HydratedTransactionInstance<[WithHashMeta<T[0]>, WithHashMeta<T[1][number]>[]]>> {
162
160
  const transactionPayloads = await PayloadBuilder.addStorageMeta(this.data[1])
163
161
  this._signatureCache = await createSignatureWrappers(this.data[0])
164
162
  for (const payload of transactionPayloads) {
@@ -1,17 +0,0 @@
1
- import type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk';
2
- /** @deprecated use from \@xyo-network/xl1-protocol instead */
3
- export declare class ShiftedBigInt {
4
- static readonly defaultConfig: ShiftedBigIntConfig;
5
- config: ShiftedBigIntConfig;
6
- value: bigint;
7
- constructor(value: bigint | ShiftedBigInt, config?: Partial<ShiftedBigIntConfig>);
8
- get locale(): Intl.LocalesArgument;
9
- get maxCharacters(): number;
10
- get maxDecimal(): number;
11
- get minDecimals(): number;
12
- get places(): number;
13
- toFullString(): string;
14
- toShortString(): string;
15
- toString(): string;
16
- }
17
- //# sourceMappingURL=ShiftedBigInt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShiftedBigInt.d.ts","sourceRoot":"","sources":["../../../src/amount/ShiftedBigInt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAIxE,8DAA8D;AAC9D,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAMjD;IAED,MAAM,EAAE,mBAAmB,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;gBAGX,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM;IAQ3C,IAAI,MAAM,IAAI,IAAI,CAAC,eAAe,CAEjC;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,YAAY,IAAI,MAAM;IAWtB,aAAa,IAAI,MAAM;IAWvB,QAAQ,IAAI,MAAM;CAGnB"}
@@ -1,4 +0,0 @@
1
- export * from './ShiftedBigInt.ts';
2
- export * from './splitOnDecimal.ts';
3
- export * from './splitOnDecimalToString.ts';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/amount/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA"}
@@ -1,3 +0,0 @@
1
- /** @deprecated use from \@xyo-network/xl1-protocol instead */
2
- export declare const splitOnDecimal: (value: bigint, places?: number) => [bigint, bigint];
3
- //# sourceMappingURL=splitOnDecimal.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"splitOnDecimal.d.ts","sourceRoot":"","sources":["../../../src/amount/splitOnDecimal.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,eAAW,KAAG,CAAC,MAAM,EAAE,MAAM,CAI1E,CAAA"}
@@ -1,3 +0,0 @@
1
- /** @deprecated use from \@xyo-network/xl1-protocol instead */
2
- export declare const splitOnDecimalToString: (value: bigint, places?: number, maxDecimal?: number, maxCharacters?: number, minDecimals?: number, locale?: Intl.LocalesArgument) => string;
3
- //# sourceMappingURL=splitOnDecimalToString.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"splitOnDecimalToString.d.ts","sourceRoot":"","sources":["../../../src/amount/splitOnDecimalToString.ts"],"names":[],"mappings":"AAGA,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,EACb,eAAW,EACX,mBAAmB,EACnB,sBAAiB,EACjB,oBAAe,EACf,SAAQ,IAAI,CAAC,eAAyB,KACrC,MA2BF,CAAA"}
@@ -1,74 +0,0 @@
1
- /* eslint-disable sonarjs/deprecation */
2
- import type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk'
3
-
4
- import { splitOnDecimalToString } from './splitOnDecimalToString.ts'
5
-
6
- /** @deprecated use from \@xyo-network/xl1-protocol instead */
7
- export class ShiftedBigInt {
8
- static readonly defaultConfig: ShiftedBigIntConfig = {
9
- places: 18,
10
- maxDecimal: 18,
11
- maxCharacters: 9,
12
- minDecimals: 1,
13
- locale: 'en-US',
14
- }
15
-
16
- config: ShiftedBigIntConfig
17
- value: bigint
18
-
19
- constructor(
20
- value: bigint | ShiftedBigInt,
21
- config: Partial<ShiftedBigIntConfig> = {},
22
- ) {
23
- this.value = typeof value === 'bigint' ? value : value.value
24
- this.config = {
25
- ...ShiftedBigInt.defaultConfig, ...(typeof value === 'bigint' ? {} : value.config), ...config,
26
- }
27
- }
28
-
29
- get locale(): Intl.LocalesArgument {
30
- return this.config.locale ?? 'en-US'
31
- }
32
-
33
- get maxCharacters(): number {
34
- return this.config.maxCharacters ?? 9
35
- }
36
-
37
- get maxDecimal(): number {
38
- return this.config.maxDecimal ?? this.places
39
- }
40
-
41
- get minDecimals(): number {
42
- return this.config.minDecimals ?? 1
43
- }
44
-
45
- get places(): number {
46
- return this.config.places ?? 18
47
- }
48
-
49
- toFullString(): string {
50
- return splitOnDecimalToString(
51
- this.value,
52
- this.places,
53
- this.places,
54
- Infinity,
55
- this.places,
56
- this.locale,
57
- )
58
- }
59
-
60
- toShortString(): string {
61
- return splitOnDecimalToString(
62
- this.value,
63
- this.places,
64
- this.maxDecimal,
65
- this.maxCharacters,
66
- this.minDecimals,
67
- this.locale,
68
- )
69
- }
70
-
71
- toString(): string {
72
- return this.toFullString()
73
- }
74
- }
@@ -1,3 +0,0 @@
1
- export * from './ShiftedBigInt.ts'
2
- export * from './splitOnDecimal.ts'
3
- export * from './splitOnDecimalToString.ts'
@@ -1,6 +0,0 @@
1
- /** @deprecated use from \@xyo-network/xl1-protocol instead */
2
- export const splitOnDecimal = (value: bigint, places = 18): [bigint, bigint] => {
3
- const whole = value / BigInt(10 ** places)
4
- const decimal = value % BigInt(10 ** places)
5
- return [whole, decimal]
6
- }
@@ -1,39 +0,0 @@
1
- /* eslint-disable sonarjs/deprecation */
2
- import { splitOnDecimal } from './splitOnDecimal.ts'
3
-
4
- /** @deprecated use from \@xyo-network/xl1-protocol instead */
5
- export const splitOnDecimalToString = (
6
- value: bigint,
7
- places = 18,
8
- maxDecimal = places,
9
- maxCharacters = 9,
10
- minDecimals = 1,
11
- locale: Intl.LocalesArgument = 'en-US',
12
- ): string => {
13
- const [whole, decimal] = splitOnDecimal(value, places)
14
- if (whole === 0n && decimal < 10 ** maxDecimal && decimal !== 0n) return '< 0.'.padEnd(maxDecimal + 5, '0') + '1'
15
-
16
- const wholeCharacters = whole.toString(10).length
17
- const calcMaxDecimalCharacters = maxCharacters === -1 ? places : wholeCharacters > maxCharacters ? 0 : maxCharacters - wholeCharacters
18
- const maxDecimalCharacters = Math.min(maxDecimal, calcMaxDecimalCharacters)
19
-
20
- // Format whole number with thousand separators according to locale
21
- const formattedWhole = new Intl.NumberFormat(locale, {
22
- maximumFractionDigits: 0,
23
- useGrouping: true,
24
- }).format(whole)
25
-
26
- // Get decimal separator for the locale
27
- const decimalSeparator = new Intl.NumberFormat(locale)
28
- .formatToParts(1.1)
29
- .find(part => part.type === 'decimal')?.value ?? '.'
30
-
31
- // Pad decimal part to correct number of places
32
- let paddedDecimal = decimal.toString().padStart(places, '0').slice(0, maxDecimalCharacters)
33
- // remove unneeded trailing zeros (honoring minDecimals)
34
- while (paddedDecimal.length > minDecimals && paddedDecimal.endsWith('0')) {
35
- paddedDecimal = paddedDecimal.slice(0, -1)
36
- }
37
-
38
- return `${formattedWhole}${paddedDecimal.length > 0 ? decimalSeparator : ''}${paddedDecimal}`
39
- }