@xyo-network/xl1-wrappers 1.15.0 → 1.15.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/neutral/AddressState.d.ts +2 -1
- package/dist/neutral/AddressState.d.ts.map +1 -1
- package/dist/neutral/amount/ShiftedBigInt.d.ts +1 -0
- package/dist/neutral/amount/ShiftedBigInt.d.ts.map +1 -1
- package/dist/neutral/amount/Xl1Amount.d.ts +2 -0
- package/dist/neutral/amount/Xl1Amount.d.ts.map +1 -1
- package/dist/neutral/amount/splitOnDecimal.d.ts +1 -0
- package/dist/neutral/amount/splitOnDecimal.d.ts.map +1 -1
- package/dist/neutral/amount/splitOnDecimalToString.d.ts +1 -0
- package/dist/neutral/amount/splitOnDecimalToString.d.ts.map +1 -1
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +10 -10
- package/src/AddressState.ts +1 -1
- package/src/amount/ShiftedBigInt.ts +2 -0
- package/src/amount/Xl1Amount.ts +3 -0
- package/src/amount/splitOnDecimal.ts +1 -0
- package/src/amount/splitOnDecimalToString.ts +2 -0
- package/dist/neutral/amount/specs/Xl1Amount.spec.d.ts +0 -2
- package/dist/neutral/amount/specs/Xl1Amount.spec.d.ts.map +0 -1
- package/src/amount/specs/Xl1Amount.spec.ts +0 -166
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise';
|
|
2
|
-
import type {
|
|
2
|
+
import type { XL1AmountInstance } from '@xyo-network/xl1-protocol';
|
|
3
|
+
import type { AddressStateInstance, BlockWindowInstance } from '@xyo-network/xl1-protocol-sdk';
|
|
3
4
|
import { AddressWrapper } from './Address.ts';
|
|
4
5
|
export declare class AddressStateWrapper extends AddressWrapper implements AddressStateInstance {
|
|
5
6
|
get blockWindow(): BlockWindowInstance;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressState.d.ts","sourceRoot":"","sources":["../../src/AddressState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"AddressState.d.ts","sourceRoot":"","sources":["../../src/AddressState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClE,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,qBAAa,mBAAoB,SAAQ,cAAe,YAAW,oBAAoB;IACrF,IAAI,WAAW,IAAI,mBAAmB,CAErC;IAED,OAAO,IAAI,UAAU,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;CAGhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShiftedBigInt.d.ts","sourceRoot":"","sources":["../../../src/amount/ShiftedBigInt.ts"],"names":[],"mappings":"
|
|
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,6DAA6D;AAC7D,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,5 +1,6 @@
|
|
|
1
1
|
import { AttoXL1, FemtoXL1, MicroXL1, MilliXL1, NanoXL1, PicoXL1 } from '@xyo-network/xl1-protocol';
|
|
2
2
|
import type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk';
|
|
3
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
3
4
|
export interface XL1AmountInstance {
|
|
4
5
|
value: AttoXL1;
|
|
5
6
|
to(places: bigint | number): bigint;
|
|
@@ -11,6 +12,7 @@ export interface XL1AmountInstance {
|
|
|
11
12
|
atto: AttoXL1;
|
|
12
13
|
toString(places: number, config: Partial<ShiftedBigIntConfig>): string;
|
|
13
14
|
}
|
|
15
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
14
16
|
export declare class XL1Amount implements XL1AmountInstance {
|
|
15
17
|
value: AttoXL1;
|
|
16
18
|
private locale;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Xl1Amount.d.ts","sourceRoot":"","sources":["../../../src/amount/Xl1Amount.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Xl1Amount.d.ts","sourceRoot":"","sources":["../../../src/amount/Xl1Amount.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAExD,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAOxE,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;IAEd,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;IAEnC,KAAK,EAAE,QAAQ,CAAA;IAEf,KAAK,EAAE,QAAQ,CAAA;IAEf,IAAI,EAAE,OAAO,CAAA;IAEb,IAAI,EAAE,OAAO,CAAA;IAEb,KAAK,EAAE,QAAQ,CAAA;IAEf,IAAI,EAAE,OAAO,CAAA;IAEb,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAA;CACvE;AAED,6DAA6D;AAC7D,qBAAa,SAAU,YAAW,iBAAiB;IACjD,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,MAAM,CAAsB;gBAExB,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,IAAI,CAAC,eAAyB;IAKjE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAuB;IAK1D,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ;IAIhC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ;IAIhC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO;IAI9B,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO;IAI9B,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ;IAIhC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO;IAI9B,EAAE,CAAC,MAAM,GAAE,MAAM,GAAG,MAAuB;IAI3C,IAAI,KAAK,aAER;IAED,IAAI,KAAK,aAER;IAED,IAAI,IAAI,YAEP;IAED,IAAI,IAAI,YAEP;IAED,IAAI,KAAK,aAER;IAED,IAAI,IAAI,YAEP;IAED,QAAQ,CAAC,MAAM,GAAE,MAA+B,EAAE,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,GAAG,MAAM;CAcrG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitOnDecimal.d.ts","sourceRoot":"","sources":["../../../src/amount/splitOnDecimal.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,eAAW,KAAG,CAAC,MAAM,EAAE,MAAM,CAI1E,CAAA"}
|
|
1
|
+
{"version":3,"file":"splitOnDecimal.d.ts","sourceRoot":"","sources":["../../../src/amount/splitOnDecimal.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,eAAW,KAAG,CAAC,MAAM,EAAE,MAAM,CAI1E,CAAA"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
1
2
|
export declare const splitOnDecimalToString: (value: bigint, places?: number, maxDecimal?: number, maxCharacters?: number, minDecimals?: number, locale?: Intl.LocalesArgument) => string;
|
|
2
3
|
//# sourceMappingURL=splitOnDecimalToString.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitOnDecimalToString.d.ts","sourceRoot":"","sources":["../../../src/amount/splitOnDecimalToString.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"splitOnDecimalToString.d.ts","sourceRoot":"","sources":["../../../src/amount/splitOnDecimalToString.ts"],"names":[],"mappings":"AAGA,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,GACjC,OAAO,MAAM,EACb,eAAW,EACX,mBAAmB,EACnB,sBAAiB,EACjB,oBAAe,EACf,SAAQ,IAAI,CAAC,eAAyB,KACrC,MA2BF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/amount/splitOnDecimal.ts","../../src/amount/splitOnDecimalToString.ts","../../src/amount/ShiftedBigInt.ts","../../src/amount/Xl1Amount.ts","../../src/Base.ts","../../src/chain/chain.ts","../../src/Fees.ts","../../src/lib/createSignatureWrappers.ts","../../src/Signature.ts","../../src/transaction/HydratedTransaction.ts"],"sourcesContent":["export 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","import { splitOnDecimal } from './splitOnDecimal.ts'\n\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","import type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk'\n\nimport { splitOnDecimalToString } from './splitOnDecimalToString.ts'\n\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","/* eslint-disable @typescript-eslint/member-ordering */\nimport { assertEx } from '@xylabs/assert'\nimport {\n AttoXL1, FemtoXL1, MicroXL1, MilliXL1, NanoXL1, PicoXL1,\n XL1Places,\n} from '@xyo-network/xl1-protocol'\nimport type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk'\n\nimport { ShiftedBigInt } from './ShiftedBigInt.ts'\n\nconst MAX_XL1_AMOUNT = 2n ** BigInt(256) - 1n\nconst allowedPlaces = Object.values(XL1Places)\n\nexport interface XL1AmountInstance {\n value: AttoXL1\n\n to(places: bigint | number): bigint\n\n milli: MilliXL1\n\n micro: MicroXL1\n\n nano: NanoXL1\n\n pico: PicoXL1\n\n femto: FemtoXL1\n\n atto: AttoXL1\n\n toString(places: number, config: Partial<ShiftedBigIntConfig>): string\n}\n\nexport class XL1Amount implements XL1AmountInstance {\n value: AttoXL1\n private locale: Intl.LocalesArgument\n\n constructor(value: bigint, locale: Intl.LocalesArgument = 'en-US') {\n this.locale = locale\n this.value = AttoXL1(value > MAX_XL1_AMOUNT ? MAX_XL1_AMOUNT : value < 0n ? 0n : value)\n }\n\n static from(value: bigint, places: bigint = XL1Places.atto) {\n assertEx(allowedPlaces.includes(places), () => `Invalid conversion places (${places} not in ${allowedPlaces})`)\n return new XL1Amount(value * 10n ** BigInt(places))\n }\n\n static fromMilli(value: MilliXL1) {\n return this.from(value, XL1Places.milli)\n }\n\n static fromMicro(value: MicroXL1) {\n return this.from(value, XL1Places.micro)\n }\n\n static fromNano(value: NanoXL1) {\n return this.from(value, XL1Places.nano)\n }\n\n static fromPico(value: PicoXL1) {\n return this.from(value, XL1Places.pico)\n }\n\n static fromFemto(value: FemtoXL1) {\n return this.from(value, XL1Places.femto)\n }\n\n static fromAtto(value: AttoXL1) {\n return this.from(value, XL1Places.atto)\n }\n\n to(places: number | bigint = XL1Places.atto) {\n return this.value / 10n ** BigInt(places)\n }\n\n get milli() {\n return MilliXL1(this.to(XL1Places.milli))\n }\n\n get micro() {\n return MicroXL1(this.to(XL1Places.micro))\n }\n\n get nano() {\n return NanoXL1(this.to(XL1Places.nano))\n }\n\n get pico() {\n return PicoXL1(this.to(XL1Places.pico))\n }\n\n get femto() {\n return FemtoXL1(this.to(XL1Places.femto))\n }\n\n get atto() {\n return AttoXL1(this.to(XL1Places.atto))\n }\n\n toString(places: number = Number(XL1Places.atto), config: Partial<ShiftedBigIntConfig> = {}): string {\n assertEx(allowedPlaces.includes(BigInt(places)), () => `Invalid conversion places (${places} not in ${allowedPlaces})`)\n return new ShiftedBigInt(\n this.value,\n {\n places,\n locale: this.locale,\n maxDecimal: places,\n minDecimals: 0,\n maxCharacters: places,\n ...config,\n },\n ).toShortString()\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":";;;;AAAO,IAAMA,iBAAiB,wBAACC,OAAeC,SAAS,OAAE;AACvD,QAAMC,QAAQF,QAAQG,OAAO,MAAMF,MAAAA;AACnC,QAAMG,UAAUJ,QAAQG,OAAO,MAAMF,MAAAA;AACrC,SAAO;IAACC;IAAOE;;AACjB,GAJ8B;;;ACEvB,IAAMC,yBAAyB,wBACpCC,OACAC,SAAS,IACTC,aAAaD,QACbE,gBAAgB,GAChBC,cAAc,GACdC,SAA+B,YAAO;AAEtC,QAAM,CAACC,OAAOC,OAAAA,IAAWC,eAAeR,OAAOC,MAAAA;AAC/C,MAAIK,UAAU,MAAMC,UAAU,MAAML,cAAcK,YAAY,GAAI,QAAO,OAAOE,OAAOP,aAAa,GAAG,GAAA,IAAO;AAE9G,QAAMQ,kBAAkBJ,MAAMK,SAAS,EAAA,EAAIC;AAC3C,QAAMC,2BAA2BV,kBAAkB,KAAKF,SAASS,kBAAkBP,gBAAgB,IAAIA,gBAAgBO;AACvH,QAAMI,uBAAuBC,KAAKC,IAAId,YAAYW,wBAAAA;AAGlD,QAAMI,iBAAiB,IAAIC,KAAKC,aAAad,QAAQ;IACnDe,uBAAuB;IACvBC,aAAa;EACf,CAAA,EAAGC,OAAOhB,KAAAA;AAGV,QAAMiB,mBAAmB,IAAIL,KAAKC,aAAad,MAAAA,EAC5CmB,cAAc,GAAA,EACdC,KAAKC,CAAAA,SAAQA,KAAKC,SAAS,SAAA,GAAY3B,SAAS;AAGnD,MAAI4B,gBAAgBrB,QAAQI,SAAQ,EAAGkB,SAAS5B,QAAQ,GAAA,EAAK6B,MAAM,GAAGhB,oBAAAA;AAEtE,SAAOc,cAAchB,SAASR,eAAewB,cAAcG,SAAS,GAAA,GAAM;AACxEH,oBAAgBA,cAAcE,MAAM,GAAG,EAAC;EAC1C;AAEA,SAAO,GAAGb,cAAAA,GAAiBW,cAAchB,SAAS,IAAIW,mBAAmB,EAAA,GAAKK,aAAAA;AAChF,GAlCsC;;;ACE/B,IAAMI,gBAAN,MAAMA,eAAAA;EAFb,OAEaA;;;EACX,OAAgBC,gBAAqC;IACnDC,QAAQ;IACRC,YAAY;IACZC,eAAe;IACfC,aAAa;IACbC,QAAQ;EACV;EAEAC;EACAC;EAEA,YACEA,OACAD,SAAuC,CAAC,GACxC;AACA,SAAKC,QAAQ,OAAOA,UAAU,WAAWA,QAAQA,MAAMA;AACvD,SAAKD,SAAS;MACZ,GAAGP,eAAcC;MAAe,GAAI,OAAOO,UAAU,WAAW,CAAC,IAAIA,MAAMD;MAAS,GAAGA;IACzF;EACF;EAEA,IAAID,SAA+B;AACjC,WAAO,KAAKC,OAAOD,UAAU;EAC/B;EAEA,IAAIF,gBAAwB;AAC1B,WAAO,KAAKG,OAAOH,iBAAiB;EACtC;EAEA,IAAID,aAAqB;AACvB,WAAO,KAAKI,OAAOJ,cAAc,KAAKD;EACxC;EAEA,IAAIG,cAAsB;AACxB,WAAO,KAAKE,OAAOF,eAAe;EACpC;EAEA,IAAIH,SAAiB;AACnB,WAAO,KAAKK,OAAOL,UAAU;EAC/B;EAEAO,eAAuB;AACrB,WAAOC,uBACL,KAAKF,OACL,KAAKN,QACL,KAAKA,QACLS,UACA,KAAKT,QACL,KAAKI,MAAM;EAEf;EAEAM,gBAAwB;AACtB,WAAOF,uBACL,KAAKF,OACL,KAAKN,QACL,KAAKC,YACL,KAAKC,eACL,KAAKC,aACL,KAAKC,MAAM;EAEf;EAEAO,WAAmB;AACjB,WAAO,KAAKJ,aAAY;EAC1B;AACF;;;ACtEA,SAASK,gBAAgB;AACzB,SACEC,SAASC,UAAUC,UAAUC,UAAUC,SAASC,SAChDC,iBACK;AAKP,IAAMC,iBAAiB,MAAMC,OAAO,GAAA,IAAO;AAC3C,IAAMC,gBAAgBC,OAAOC,OAAOC,SAAAA;AAsB7B,IAAMC,YAAN,MAAMA,WAAAA;EAjCb,OAiCaA;;;EACXC;EACQC;EAER,YAAYD,OAAeC,SAA+B,SAAS;AACjE,SAAKA,SAASA;AACd,SAAKD,QAAQE,QAAQF,QAAQP,iBAAiBA,iBAAiBO,QAAQ,KAAK,KAAKA,KAAAA;EACnF;EAEA,OAAOG,KAAKH,OAAeI,SAAiBN,UAAUO,MAAM;AAC1DC,aAASX,cAAcY,SAASH,MAAAA,GAAS,MAAM,8BAA8BA,MAAAA,WAAiBT,aAAAA,GAAgB;AAC9G,WAAO,IAAII,WAAUC,QAAQ,OAAON,OAAOU,MAAAA,CAAAA;EAC7C;EAEA,OAAOI,UAAUR,OAAiB;AAChC,WAAO,KAAKG,KAAKH,OAAOF,UAAUW,KAAK;EACzC;EAEA,OAAOC,UAAUV,OAAiB;AAChC,WAAO,KAAKG,KAAKH,OAAOF,UAAUa,KAAK;EACzC;EAEA,OAAOC,SAASZ,OAAgB;AAC9B,WAAO,KAAKG,KAAKH,OAAOF,UAAUe,IAAI;EACxC;EAEA,OAAOC,SAASd,OAAgB;AAC9B,WAAO,KAAKG,KAAKH,OAAOF,UAAUiB,IAAI;EACxC;EAEA,OAAOC,UAAUhB,OAAiB;AAChC,WAAO,KAAKG,KAAKH,OAAOF,UAAUmB,KAAK;EACzC;EAEA,OAAOC,SAASlB,OAAgB;AAC9B,WAAO,KAAKG,KAAKH,OAAOF,UAAUO,IAAI;EACxC;EAEAc,GAAGf,SAA0BN,UAAUO,MAAM;AAC3C,WAAO,KAAKL,QAAQ,OAAON,OAAOU,MAAAA;EACpC;EAEA,IAAIK,QAAQ;AACV,WAAOW,SAAS,KAAKD,GAAGrB,UAAUW,KAAK,CAAA;EACzC;EAEA,IAAIE,QAAQ;AACV,WAAOU,SAAS,KAAKF,GAAGrB,UAAUa,KAAK,CAAA;EACzC;EAEA,IAAIE,OAAO;AACT,WAAOS,QAAQ,KAAKH,GAAGrB,UAAUe,IAAI,CAAA;EACvC;EAEA,IAAIE,OAAO;AACT,WAAOQ,QAAQ,KAAKJ,GAAGrB,UAAUiB,IAAI,CAAA;EACvC;EAEA,IAAIE,QAAQ;AACV,WAAOO,SAAS,KAAKL,GAAGrB,UAAUmB,KAAK,CAAA;EACzC;EAEA,IAAIZ,OAAO;AACT,WAAOH,QAAQ,KAAKiB,GAAGrB,UAAUO,IAAI,CAAA;EACvC;EAEAoB,SAASrB,SAAiBsB,OAAO5B,UAAUO,IAAI,GAAGsB,SAAuC,CAAC,GAAW;AACnGrB,aAASX,cAAcY,SAASb,OAAOU,MAAAA,CAAAA,GAAU,MAAM,8BAA8BA,MAAAA,WAAiBT,aAAAA,GAAgB;AACtH,WAAO,IAAIiC,cACT,KAAK5B,OACL;MACEI;MACAH,QAAQ,KAAKA;MACb4B,YAAYzB;MACZ0B,aAAa;MACbC,eAAe3B;MACf,GAAGuB;IACL,CAAA,EACAK,cAAa;EACjB;AACF;;;ACzGO,IAAMC,cAAN,MAAMA;EAAb,OAAaA;;;EACQC;EACAC;EACnB,YAAsBA,OAAUD,SAAqB,CAAC,GAAG;AACvD,SAAKA,SAASA;AACd,SAAKC,QAAQA;EACf;EAEA,IAAIC,WAAsC;AACxC,WAAO,KAAKF,OAAOE;EACrB;EAEA,aAAaC,OAAiEF,OAAUD,SAAqB,CAAC,GAAG;AAC/G,SAAK,MAAM,KAAKI,cAAcH,KAAAA,GAAQI,SAAS,GAAG;AAChD,YAAM,IAAIC,MAAM,qBAAqB,KAAK,YAAYC,IAAI,KAAKN,KAAAA,EAAO;IACxE;AACA,SAAK,MAAM,KAAKO,eAAeR,MAAAA,GAASK,SAAS,GAAG;AAClD,YAAM,IAAIC,MAAM,sBAAsB,KAAK,YAAYC,IAAI,KAAKP,MAAAA,EAAQ;IAC1E;AACA,WAAO,IAAI,KAAQC,OAAOD,MAAAA;EAC5B;EAEA,OAAOQ,eAAeC,SAA0C;AAC9D,WAAO,CAAA;EACT;EAEA,OAAOL,cAAcM,QAAyC;AAC5D,WAAO,CAAA;EACT;EAEAC,WAAmC;AACjC,WAAO,CAAA;EACT;AACF;;;ACpCO,IAAMC,eAAN,cAA2BC,YAAAA;EAFlC,OAEkCA;;;EAChC,IAAIC,KAAc;AAChB,WAAO,KAAKC;EACd;AACF;;;ACRA,SAASC,mBAAmB;AAG5B,SAASC,WAAAA,gBAAe;AAGxB,SAASC,iBAAiBC,OAAmB;AAC3C,SAAOC,SAAS,OAAOD,UAAU,WAAWA,QAAQE,YAAYF,KAAAA,CAAAA;AAClE;AAFSD;AAIF,IAAMI,cAAN,MAAMA,aAAAA;EAVb,OAUaA;;;EACXC;EACAC;EACAC;EACAC;EAEA,YAAY,EACVH,MAAMC,UAAUC,UAAUC,SAAQ,GACW;AAC7C,SAAKH,OAAOL,iBAAiBK,IAAAA;AAC7B,SAAKC,WAAWN,iBAAiBM,QAAAA;AACjC,SAAKC,WAAWP,iBAAiBO,QAAAA;AACjC,SAAKC,WAAWR,iBAAiBQ,QAAAA;EACnC;EAEA,OAAOC,SAAS,EACdJ,MAAMC,UAAUC,UAAUC,SAAQ,GACgC;AAClE,UAAME,SAAkB,CAAA;AACxB,UAAMC,YAAYX,iBAAiBK,IAAAA;AACnC,UAAMO,gBAAgBZ,iBAAiBM,QAAAA;AACvC,UAAMO,gBAAgBb,iBAAiBO,QAAAA;AACvC,UAAMO,gBAAgBd,iBAAiBQ,QAAAA;AACvC,QAAIG,aAAa,IAAI;AACnBD,aAAOK,KAAK,IAAIC,MAAM,qCAAA,CAAA;IACxB;AACA,QAAIJ,gBAAgB,IAAI;AACtBF,aAAOK,KAAK,IAAIC,MAAM,8BAAA,CAAA;IACxB;AACA,QAAIH,gBAAgB,IAAI;AACtBH,aAAOK,KAAK,IAAIC,MAAM,8BAAA,CAAA;IACxB;AACA,QAAIF,gBAAgB,IAAI;AACtBJ,aAAOK,KAAK,IAAIC,MAAM,6BAAA,CAAA;IACxB;AACA,WAAON;EACT;EAEA,MAAMD,WAA6B;AACjC,WAAO,MAAML,aAAYK,SAAS;MAChCJ,MAAM,KAAKA;MAAMC,UAAU,KAAKA;MAAUC,UAAU,KAAKA;MAAUC,UAAU,KAAKA;IACpF,CAAA;EACF;AACF;;;ACrDA,SAASS,sBAAsB;;;ACD/B,SAASC,qBAAqB;AAI9B,SAASC,6BAA6B;AAG/B,IAAMC,mBAAN,MAAMA,kBAAAA;EAPb,OAOaA;;;EACXC;EACAC;EACAC;EAEA,YAAYA,WAAgBF,SAAkBC,MAAY;AACxD,SAAKC,YAAYA;AACjB,SAAKF,UAAUA;AACf,SAAKC,OAAOA;EACd;EAEA,aAAaE,SAASF,MAAYD,SAAkBE,WAAkC;AACpF,WAAO,MAAME,sBAAsBC,kBAAkBC,cAAcL,IAAAA,GAAOK,cAAcN,OAAAA,GAAUM,cAAcJ,SAAAA,CAAAA;EAClH;EAEA,MAAMC,WAA6B;AACjC,WAAO,MAAMJ,kBAAiBI,SAAS,KAAKF,MAAM,KAAKD,SAAS,KAAKE,SAAS;EAChF;AACF;;;ADnBO,IAAMK,0BAA0B,8BAAOC,OAAAA;AAC5C,QAAMC,aAAkC,CAAA;AACxC,QAAMC,OAAO,MAAMC,eAAeC,SAASJ,EAAAA;AAC3C,WAASK,IAAI,GAAGA,IAAIL,GAAGM,YAAYC,QAAQF,KAAK;AAC9CJ,eAAWO,KACT,IAAIC,iBAAiBT,GAAGM,YAAYD,CAAAA,GAAIL,GAAGU,UAAUL,CAAAA,GAAIH,IAAAA,CAAAA;EAE7D;AACA,SAAOD;AACT,GATuC;;;AELvC,SAASU,eAAAA,oBAAmB;AAC5B,SAASC,iBAAiB;AAC1B,SAASC,kBAAAA,uBAAsB;AAQ/B,SAASC,YAAYC,wBAAwB;AAK7C,SACEC,wBAAwBC,0BAA0BC,0CAC7C;AACP,SAASC,2BAA2B;AAKpC,IAAMC,eAAe,wBAACC,YAAAA;AACpB,MAAIC,QAAQ;AACZ,WAASC,KAAKC,OAAOC,OAAOJ,QAAQK,SAAS,GAAG;AAC9CJ,aAASK,aAAYJ,KAAK,IAAA;EAC5B;AACA,SAAOD;AACT,GANqB;AAQd,IAAMM,6BAAN,MAAMA,4BAAAA;EA/Bb,OA+BaA;;;EAEXC;EACAC;EAEUC,gBAA4C,CAAA;EAE9CC,kBAAuC,CAAA;EAE/C,YAAsBH,MAAS;AAC7B,SAAKA,OAAOA;AACZ,SAAKC,OAAO,IAAIG,YACd,KAAKC,aAAaJ,IAAI;EAE1B;EAEA,IAAII,eAAqB;AACvB,WAAO,KAAKL,KAAK,CAAA;EACnB;EAEA,IAAIM,uBAA+B;AACjC,UAAM,EAAEC,OAAM,IAAK,KAAKP,KAAK,CAAA;AAC7B,WAAOO,SAASC,mCAAmCD,MAAAA,EAAQE,SAAS;EACtE;EAEA,IAAIC,mBAA2D;AAC7D,WAAOC,yBAAyB,KAAKX,IAAI;EAC3C;EAEA,IAAIY,mBAAmD;AACrD,UAAMC,cAAc,KAAKC;AACzB,UAAMC,WAA2C,CAAC;AAClD,aAASrB,IAAI,GAAGA,IAAI,KAAKW,aAAaW,eAAeP,QAAQf,KAAK;AAChE,YAAMuB,cAAc,KAAKZ,aAAaW,eAAetB,CAAAA;AACrD,YAAMF,UAAUqB,YAAYK,KAAKC,CAAAA,MAAKA,EAAEC,UAAUH,WAAAA;AAClDF,eAASE,WAAAA,IAAeI,UAAU7B,OAAAA,IAAWA,UAAU,KAAKa,aAAaiB,gBAAgB5B,CAAAA;IAC3F;AACA,WAAOqB;EACT;EAEA,IAAIQ,OAAO;AACT,WAAO,KAAKvB,KAAK,CAAA,EAAGuB;EACtB;EAEA,IAAIC,eAAuB;AACzB,WAAO,KAAKtB,cAAcO;EAC5B;EAEA,IAAIK,WAAiE;AACnE,WAAO;SAAI,KAAKZ;;EAClB;EAEA,IAAIuB,0BAAgD;AAClD,UAAMZ,cAAc,KAAKC;AACzB,UAAMY,UAAgC,CAAC;AACvC,aAAShC,IAAI,GAAGA,IAAI,KAAKW,aAAaW,eAAeP,QAAQf,KAAK;AAChE,YAAMuB,cAAc,KAAKZ,aAAaW,eAAetB,CAAAA;AACrD,UAAI,CAACmB,YAAYc,KAAKR,CAAAA,MAAKA,EAAEC,UAAUH,WAAAA,GAAc;AACnDS,gBAAQT,WAAAA,IAAe,KAAKZ,aAAaiB,gBAAgB5B,CAAAA;MAC3D;IACF;AACA,WAAOgC;EACT;;EAGA,IAAIE,yBAAoC;AACtC,UAAMf,cAAc,KAAKC;AACzB,UAAMJ,mBAAmB,KAAKA;AAC9B,WAAOG,YAAYgB,OAAOV,CAAAA,MAAK,CAACT,iBAAiBiB,KAAKG,CAAAA,OAAMA,GAAGV,UAAUD,EAAEC,KAAK,CAAA;EAClF;EAEA,IAAIW,iBAAyB;AAC3B,WAAO,KAAK5B,gBAAgBM;EAC9B;EAEA,IAAIuB,aAAkC;AACpC,WAAO;SAAI,KAAK7B;;EAClB;EAEA,aAAa8B,MAAoDC,aAAgBC,WAAW,OACxE;AAClB,UAAMC,UAAU,IAAIrC,4BAClBmC,WAAAA;AAEF,UAAMG,SAAS,MAAMD,QAAQH,MAAK;AAClC,QAAIE,UAAU;AACZ,YAAMG,SAAS,MAAMF,QAAQD,SAAQ;AACrC,UAAIG,OAAO7B,SAAS,GAAG;AACrB,cAAM,IAAI8B,MAAM,4BAA4BD,OAAOE,KAAK,IAAA,CAAA,EAAO;MACjE;IACF;AACA,WAAOH;EACT;EAEAI,gBAAgBC,OAAoF;AAClG,WAAO,KAAKhC,iBAAiBiC,GAAGD,KAAAA;EAClC;EAEAE,cAAsB;AACpB,WAAOC,uBAAuB,KAAK7C,IAAI;EACzC;EAEAR,QAAQkD,OAAqD;AAC3D,WAAO,KAAK5B,SAAS6B,GAAGD,KAAAA;EAC1B;EAEAI,SAAiB;AACf,WAAO,KAAK5C,cAAc6C,OAAO,CAACC,KAAaxD,YAAYwD,OACzDC,WAAWzD,OAAAA,IACPA,QAAQ+B,SAAS2B,mBACf3D,aAAaC,OAAAA,IACb,KACF,KAAK,EAAE;EACf;EAEA2D,UAAUT,OAA8C;AACtD,WAAO,KAAKvC,gBAAgBuC,KAAAA;EAC9B;EAEA,MAAMP,WAA6B;AACjC,UAAMG,SAAkB,CAAA;AACxBA,WAAOc,KAAI,IACL,MAAMC,QAAQC,IAAI,KAAKnD,gBAAgBoD,IAAIJ,CAAAA,cAAaA,UAAUhB,SAAQ,CAAA,CAAA,GAAMqB,KAAI,GAAA,GACpF,MAAMC,oBAAoB,KAAKzD,IAAI,CAAA;AAEzC,WAAOsC;EACT;EAEA,MAAgBL,MAAME,WAAW,OAA+G;AAC9I,UAAMuB,sBAAsB,MAAMC,gBAAeC,eAAe,KAAK5D,KAAK,CAAA,CAAE;AAC5E,SAAKG,kBAAkB,MAAM0D,wBAAwB,KAAK7D,KAAK,CAAA,CAAE;AACjE,eAAWR,WAAWkE,qBAAqB;AACzC,WAAKxD,cAAckD,KAAK5D,OAAAA;IAC1B;AACA,QAAI2C,UAAU;AACZ,YAAM,KAAKA,SAAQ;IACrB;AACA,WAAO;EACT;AACF;","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","assertEx","AttoXL1","FemtoXL1","MicroXL1","MilliXL1","NanoXL1","PicoXL1","XL1Places","MAX_XL1_AMOUNT","BigInt","allowedPlaces","Object","values","XL1Places","XL1Amount","value","locale","AttoXL1","from","places","atto","assertEx","includes","fromMilli","milli","fromMicro","micro","fromNano","nano","fromPico","pico","fromFemto","femto","fromAtto","to","MilliXL1","MicroXL1","NanoXL1","PicoXL1","FemtoXL1","toString","Number","config","ShiftedBigInt","maxDecimal","minDecimals","maxCharacters","toShortString","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/amount/splitOnDecimal.ts","../../src/amount/splitOnDecimalToString.ts","../../src/amount/ShiftedBigInt.ts","../../src/amount/Xl1Amount.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","/* eslint-disable sonarjs/deprecation */\n/* eslint-disable @typescript-eslint/member-ordering */\nimport { assertEx } from '@xylabs/assert'\nimport {\n AttoXL1, FemtoXL1, MicroXL1, MilliXL1, NanoXL1, PicoXL1,\n XL1Places,\n} from '@xyo-network/xl1-protocol'\nimport type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk'\n\nimport { ShiftedBigInt } from './ShiftedBigInt.ts'\n\nconst MAX_XL1_AMOUNT = 2n ** BigInt(256) - 1n\nconst allowedPlaces = Object.values(XL1Places)\n\n/** @deprecated use from @xyo-network/xl1-protocol instead */\nexport interface XL1AmountInstance {\n value: AttoXL1\n\n to(places: bigint | number): bigint\n\n milli: MilliXL1\n\n micro: MicroXL1\n\n nano: NanoXL1\n\n pico: PicoXL1\n\n femto: FemtoXL1\n\n atto: AttoXL1\n\n toString(places: number, config: Partial<ShiftedBigIntConfig>): string\n}\n\n/** @deprecated use from @xyo-network/xl1-protocol instead */\nexport class XL1Amount implements XL1AmountInstance {\n value: AttoXL1\n private locale: Intl.LocalesArgument\n\n constructor(value: bigint, locale: Intl.LocalesArgument = 'en-US') {\n this.locale = locale\n this.value = AttoXL1(value > MAX_XL1_AMOUNT ? MAX_XL1_AMOUNT : value < 0n ? 0n : value)\n }\n\n static from(value: bigint, places: bigint = XL1Places.atto) {\n assertEx(allowedPlaces.includes(places), () => `Invalid conversion places (${places} not in ${allowedPlaces})`)\n return new XL1Amount(value * 10n ** BigInt(places))\n }\n\n static fromMilli(value: MilliXL1) {\n return this.from(value, XL1Places.milli)\n }\n\n static fromMicro(value: MicroXL1) {\n return this.from(value, XL1Places.micro)\n }\n\n static fromNano(value: NanoXL1) {\n return this.from(value, XL1Places.nano)\n }\n\n static fromPico(value: PicoXL1) {\n return this.from(value, XL1Places.pico)\n }\n\n static fromFemto(value: FemtoXL1) {\n return this.from(value, XL1Places.femto)\n }\n\n static fromAtto(value: AttoXL1) {\n return this.from(value, XL1Places.atto)\n }\n\n to(places: number | bigint = XL1Places.atto) {\n return this.value / 10n ** BigInt(places)\n }\n\n get milli() {\n return MilliXL1(this.to(XL1Places.milli))\n }\n\n get micro() {\n return MicroXL1(this.to(XL1Places.micro))\n }\n\n get nano() {\n return NanoXL1(this.to(XL1Places.nano))\n }\n\n get pico() {\n return PicoXL1(this.to(XL1Places.pico))\n }\n\n get femto() {\n return FemtoXL1(this.to(XL1Places.femto))\n }\n\n get atto() {\n return AttoXL1(this.to(XL1Places.atto))\n }\n\n toString(places: number = Number(XL1Places.atto), config: Partial<ShiftedBigIntConfig> = {}): string {\n assertEx(allowedPlaces.includes(BigInt(places)), () => `Invalid conversion places (${places} not in ${allowedPlaces})`)\n return new ShiftedBigInt(\n this.value,\n {\n places,\n locale: this.locale,\n maxDecimal: places,\n minDecimals: 0,\n maxCharacters: places,\n ...config,\n },\n ).toShortString()\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","assertEx","AttoXL1","FemtoXL1","MicroXL1","MilliXL1","NanoXL1","PicoXL1","XL1Places","MAX_XL1_AMOUNT","BigInt","allowedPlaces","Object","values","XL1Places","XL1Amount","value","locale","AttoXL1","from","places","atto","assertEx","includes","fromMilli","milli","fromMicro","micro","fromNano","nano","fromPico","pico","fromFemto","femto","fromAtto","to","MilliXL1","MicroXL1","NanoXL1","PicoXL1","FemtoXL1","toString","Number","config","ShiftedBigInt","maxDecimal","minDecimals","maxCharacters","toShortString","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"]}
|
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.
|
|
4
|
+
"version": "1.15.2",
|
|
5
5
|
"description": "XYO Layer One SDK Wrappers",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -41,19 +41,19 @@
|
|
|
41
41
|
"@xylabs/hex": "~5.0.11",
|
|
42
42
|
"@xylabs/promise": "~5.0.11",
|
|
43
43
|
"@xylabs/typeof": "~5.0.11",
|
|
44
|
-
"@xyo-network/boundwitness-model": "~5.1.
|
|
45
|
-
"@xyo-network/boundwitness-validator": "~5.1.
|
|
46
|
-
"@xyo-network/payload-builder": "~5.1.
|
|
47
|
-
"@xyo-network/payload-model": "~5.1.
|
|
48
|
-
"@xyo-network/xl1-protocol": "~1.12.
|
|
49
|
-
"@xyo-network/xl1-protocol-sdk": "~1.15.
|
|
50
|
-
"@xyo-network/xl1-validation": "~1.15.
|
|
44
|
+
"@xyo-network/boundwitness-model": "~5.1.3",
|
|
45
|
+
"@xyo-network/boundwitness-validator": "~5.1.3",
|
|
46
|
+
"@xyo-network/payload-builder": "~5.1.3",
|
|
47
|
+
"@xyo-network/payload-model": "~5.1.3",
|
|
48
|
+
"@xyo-network/xl1-protocol": "~1.12.40",
|
|
49
|
+
"@xyo-network/xl1-protocol-sdk": "~1.15.2",
|
|
50
|
+
"@xyo-network/xl1-validation": "~1.15.2"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@types/node": "~24.
|
|
53
|
+
"@types/node": "~24.5.2",
|
|
54
54
|
"@xylabs/ts-scripts-yarn3": "~7.1.7",
|
|
55
55
|
"@xylabs/tsconfig": "~7.1.7",
|
|
56
|
-
"eslint": "^9.
|
|
56
|
+
"eslint": "^9.36.0",
|
|
57
57
|
"typescript": "~5.9.2",
|
|
58
58
|
"vitest": "~3.2.4"
|
|
59
59
|
},
|
package/src/AddressState.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Promisable } from '@xylabs/promise'
|
|
2
|
+
import type { XL1AmountInstance } from '@xyo-network/xl1-protocol'
|
|
2
3
|
import type {
|
|
3
4
|
AddressStateInstance,
|
|
4
5
|
BlockWindowInstance,
|
|
5
|
-
XL1AmountInstance,
|
|
6
6
|
} from '@xyo-network/xl1-protocol-sdk'
|
|
7
7
|
|
|
8
8
|
import { AddressWrapper } from './Address.ts'
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
/* eslint-disable sonarjs/deprecation */
|
|
1
2
|
import type { ShiftedBigIntConfig } from '@xyo-network/xl1-protocol-sdk'
|
|
2
3
|
|
|
3
4
|
import { splitOnDecimalToString } from './splitOnDecimalToString.ts'
|
|
4
5
|
|
|
6
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
5
7
|
export class ShiftedBigInt {
|
|
6
8
|
static readonly defaultConfig: ShiftedBigIntConfig = {
|
|
7
9
|
places: 18,
|
package/src/amount/Xl1Amount.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable sonarjs/deprecation */
|
|
1
2
|
/* eslint-disable @typescript-eslint/member-ordering */
|
|
2
3
|
import { assertEx } from '@xylabs/assert'
|
|
3
4
|
import {
|
|
@@ -11,6 +12,7 @@ import { ShiftedBigInt } from './ShiftedBigInt.ts'
|
|
|
11
12
|
const MAX_XL1_AMOUNT = 2n ** BigInt(256) - 1n
|
|
12
13
|
const allowedPlaces = Object.values(XL1Places)
|
|
13
14
|
|
|
15
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
14
16
|
export interface XL1AmountInstance {
|
|
15
17
|
value: AttoXL1
|
|
16
18
|
|
|
@@ -31,6 +33,7 @@ export interface XL1AmountInstance {
|
|
|
31
33
|
toString(places: number, config: Partial<ShiftedBigIntConfig>): string
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
/** @deprecated use from @xyo-network/xl1-protocol instead */
|
|
34
37
|
export class XL1Amount implements XL1AmountInstance {
|
|
35
38
|
value: AttoXL1
|
|
36
39
|
private locale: Intl.LocalesArgument
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Xl1Amount.spec.d.ts","sourceRoot":"","sources":["../../../../src/amount/specs/Xl1Amount.spec.ts"],"names":[],"mappings":""}
|
|
@@ -1,166 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
AttoXL1, FemtoXL1, MicroXL1, MilliXL1, NanoXL1, PicoXL1,
|
|
3
|
-
} from '@xyo-network/xl1-protocol'
|
|
4
|
-
import { XL1Places } from '@xyo-network/xl1-protocol'
|
|
5
|
-
import {
|
|
6
|
-
describe, expect, it,
|
|
7
|
-
} from 'vitest'
|
|
8
|
-
|
|
9
|
-
import { XL1Amount } from '../Xl1Amount.ts'
|
|
10
|
-
|
|
11
|
-
describe('XL1Amount', () => {
|
|
12
|
-
describe('constructor', () => {
|
|
13
|
-
it('should create an instance with valid value', () => {
|
|
14
|
-
const amount = new XL1Amount(1000n)
|
|
15
|
-
expect(amount.value).toBe(1000n)
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
it('should clamp negative values to 0', () => {
|
|
19
|
-
const amount = new XL1Amount(-1000n)
|
|
20
|
-
expect(amount.value).toBe(0n)
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
// it('should clamp values exceeding MAX_XL1_AMOUNT', () => {
|
|
24
|
-
// const maxValue = 2n ** 256n - 1n
|
|
25
|
-
// const amount = new XL1Amount(maxValue + 1n)
|
|
26
|
-
// expect(amount.value).toBe(maxValue)
|
|
27
|
-
// })
|
|
28
|
-
|
|
29
|
-
it('should accept custom locale', () => {
|
|
30
|
-
const amount = new XL1Amount(1000n, 'de-DE')
|
|
31
|
-
expect(amount.value).toBe(1000n)
|
|
32
|
-
})
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
describe('static from method', () => {
|
|
36
|
-
it('should create XL1Amount from value and places', () => {
|
|
37
|
-
const amount = XL1Amount.from(1n, XL1Places.milli)
|
|
38
|
-
expect(amount.value).toBe(1n * 10n ** XL1Places.milli)
|
|
39
|
-
})
|
|
40
|
-
|
|
41
|
-
it('should default to atto places', () => {
|
|
42
|
-
const amount = XL1Amount.from(1000n)
|
|
43
|
-
expect(amount.value).toBe(1000n)
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
it('should throw error for invalid places', () => {
|
|
47
|
-
expect(() => XL1Amount.from(1000n, 99n)).toThrow('Invalid conversion places')
|
|
48
|
-
})
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
describe('static factory methods', () => {
|
|
52
|
-
it('should create from milli', () => {
|
|
53
|
-
const amount = XL1Amount.fromMilli(1n as MilliXL1)
|
|
54
|
-
expect(amount.value).toBe(1n * 10n ** XL1Places.milli)
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
it('should create from micro', () => {
|
|
58
|
-
const amount = XL1Amount.fromMicro(1n as MicroXL1)
|
|
59
|
-
expect(amount.value).toBe(1n * 10n ** XL1Places.micro)
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
it('should create from nano', () => {
|
|
63
|
-
const amount = XL1Amount.fromNano(1n as NanoXL1)
|
|
64
|
-
expect(amount.value).toBe(1n * 10n ** XL1Places.nano)
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
it('should create from pico', () => {
|
|
68
|
-
const amount = XL1Amount.fromPico(1n as PicoXL1)
|
|
69
|
-
expect(amount.value).toBe(1n * 10n ** XL1Places.pico)
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
it('should create from femto', () => {
|
|
73
|
-
const amount = XL1Amount.fromFemto(1n as FemtoXL1)
|
|
74
|
-
expect(amount.value).toBe(1n * 10n ** XL1Places.femto)
|
|
75
|
-
})
|
|
76
|
-
|
|
77
|
-
it('should create from atto', () => {
|
|
78
|
-
const amount = XL1Amount.fromAtto(1000n as AttoXL1)
|
|
79
|
-
expect(amount.value).toBe(1000n)
|
|
80
|
-
})
|
|
81
|
-
})
|
|
82
|
-
|
|
83
|
-
describe('to method', () => {
|
|
84
|
-
it('should convert to specified places', () => {
|
|
85
|
-
const amount = new XL1Amount(1_000_000_000_000_000_000n) // 1 * 10^18
|
|
86
|
-
expect(amount.to(XL1Places.milli)).toBe(1000n)
|
|
87
|
-
})
|
|
88
|
-
|
|
89
|
-
it('should default to atto places', () => {
|
|
90
|
-
const amount = new XL1Amount(1000n)
|
|
91
|
-
expect(amount.to()).toBe(1000n)
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
it('should handle bigint places', () => {
|
|
95
|
-
const amount = new XL1Amount(1_000_000_000_000_000_000n)
|
|
96
|
-
expect(amount.to(XL1Places.milli)).toBe(1000n)
|
|
97
|
-
})
|
|
98
|
-
})
|
|
99
|
-
|
|
100
|
-
describe('getters', () => {
|
|
101
|
-
const oneXl1 = 1n * 10n ** BigInt(XL1Places.xl1) // 1 * 10^18
|
|
102
|
-
const amount = new XL1Amount(oneXl1) // 1 * 10^18
|
|
103
|
-
|
|
104
|
-
it('should get milli value', () => {
|
|
105
|
-
expect(amount.milli).toBe(1000n)
|
|
106
|
-
})
|
|
107
|
-
|
|
108
|
-
it('should get micro value', () => {
|
|
109
|
-
expect(amount.micro).toBe(1_000_000n)
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
it('should get nano value', () => {
|
|
113
|
-
expect(amount.nano).toBe(1_000_000_000n)
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
it('should get pico value', () => {
|
|
117
|
-
expect(amount.pico).toBe(1_000_000_000_000n)
|
|
118
|
-
})
|
|
119
|
-
|
|
120
|
-
it('should get femto value', () => {
|
|
121
|
-
expect(amount.femto).toBe(1_000_000_000_000_000n)
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
it('should get atto value', () => {
|
|
125
|
-
expect(amount.atto).toBe(oneXl1)
|
|
126
|
-
})
|
|
127
|
-
})
|
|
128
|
-
|
|
129
|
-
describe('toString method', () => {
|
|
130
|
-
it('should convert to string with default places', () => {
|
|
131
|
-
const amount = new XL1Amount(1_000_000_000_000_000_000n)
|
|
132
|
-
const result = amount.toString()
|
|
133
|
-
expect(typeof result).toBe('string')
|
|
134
|
-
})
|
|
135
|
-
|
|
136
|
-
it('should convert to string with specified places', () => {
|
|
137
|
-
const amount = new XL1Amount(1_000_000_000_000_000_000n)
|
|
138
|
-
const result = amount.toString(Number(XL1Places.milli))
|
|
139
|
-
expect(typeof result).toBe('string')
|
|
140
|
-
})
|
|
141
|
-
|
|
142
|
-
it('should accept custom config', () => {
|
|
143
|
-
const amount = new XL1Amount(1_000_000_000_000_000_000n)
|
|
144
|
-
const result = amount.toString(Number(XL1Places.milli), { minDecimals: 2 })
|
|
145
|
-
expect(typeof result).toBe('string')
|
|
146
|
-
})
|
|
147
|
-
|
|
148
|
-
it('should throw error for invalid places', () => {
|
|
149
|
-
const amount = new XL1Amount(1000n)
|
|
150
|
-
expect(() => amount.toString(99)).toThrow('Invalid conversion places')
|
|
151
|
-
})
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
describe('edge cases', () => {
|
|
155
|
-
it('should handle zero value', () => {
|
|
156
|
-
const amount = new XL1Amount(0n)
|
|
157
|
-
expect(amount.value).toBe(0n)
|
|
158
|
-
expect(amount.to(XL1Places.milli)).toBe(0n)
|
|
159
|
-
})
|
|
160
|
-
|
|
161
|
-
it('should handle division with remainder', () => {
|
|
162
|
-
const amount = new XL1Amount(1_500_000_000_000_000_000n)
|
|
163
|
-
expect(amount.to(XL1Places.milli)).toBe(1500n)
|
|
164
|
-
})
|
|
165
|
-
})
|
|
166
|
-
})
|