@fleet-sdk/common 0.1.3 → 0.2.1

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.
Files changed (142) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -1
  3. package/dist/index.cjs.js +604 -0
  4. package/dist/index.cjs.js.map +1 -0
  5. package/dist/index.d.mts +268 -0
  6. package/dist/index.d.ts +268 -0
  7. package/dist/index.esm.js +551 -0
  8. package/dist/index.esm.js.map +1 -0
  9. package/package.json +9 -9
  10. package/src/utils/{arrayUtils.ts → array.ts} +4 -0
  11. package/src/utils/assertions.ts +68 -22
  12. package/src/utils/{bigIntUtils.ts → bigInt.ts} +10 -76
  13. package/src/utils/bytes.bench.ts +43 -0
  14. package/src/utils/bytes.ts +34 -0
  15. package/src/utils/index.ts +5 -6
  16. package/src/utils/object.ts +28 -0
  17. package/src/utils/{boxUtils.ts → utxo.ts} +3 -4
  18. package/dist/cjs/index.d.ts +0 -3
  19. package/dist/cjs/index.js +0 -20
  20. package/dist/cjs/index.js.map +0 -1
  21. package/dist/cjs/models/collection.d.ts +0 -20
  22. package/dist/cjs/models/collection.js +0 -76
  23. package/dist/cjs/models/collection.js.map +0 -1
  24. package/dist/cjs/models/index.d.ts +0 -1
  25. package/dist/cjs/models/index.js +0 -18
  26. package/dist/cjs/models/index.js.map +0 -1
  27. package/dist/cjs/types/boxes.d.ts +0 -22
  28. package/dist/cjs/types/boxes.js +0 -3
  29. package/dist/cjs/types/boxes.js.map +0 -1
  30. package/dist/cjs/types/common.d.ts +0 -23
  31. package/dist/cjs/types/common.js +0 -19
  32. package/dist/cjs/types/common.js.map +0 -1
  33. package/dist/cjs/types/contextExtension.d.ts +0 -4
  34. package/dist/cjs/types/contextExtension.js +0 -3
  35. package/dist/cjs/types/contextExtension.js.map +0 -1
  36. package/dist/cjs/types/index.d.ts +0 -8
  37. package/dist/cjs/types/index.js +0 -25
  38. package/dist/cjs/types/index.js.map +0 -1
  39. package/dist/cjs/types/inputs.d.ts +0 -37
  40. package/dist/cjs/types/inputs.js +0 -3
  41. package/dist/cjs/types/inputs.js.map +0 -1
  42. package/dist/cjs/types/proverResult.d.ts +0 -6
  43. package/dist/cjs/types/proverResult.js +0 -3
  44. package/dist/cjs/types/proverResult.js.map +0 -1
  45. package/dist/cjs/types/registers.d.ts +0 -9
  46. package/dist/cjs/types/registers.js +0 -3
  47. package/dist/cjs/types/registers.js.map +0 -1
  48. package/dist/cjs/types/token.d.ts +0 -18
  49. package/dist/cjs/types/token.js +0 -3
  50. package/dist/cjs/types/token.js.map +0 -1
  51. package/dist/cjs/types/transactions.d.ts +0 -22
  52. package/dist/cjs/types/transactions.js +0 -3
  53. package/dist/cjs/types/transactions.js.map +0 -1
  54. package/dist/cjs/utils/arrayUtils.d.ts +0 -25
  55. package/dist/cjs/utils/arrayUtils.js +0 -155
  56. package/dist/cjs/utils/arrayUtils.js.map +0 -1
  57. package/dist/cjs/utils/assertions.d.ts +0 -8
  58. package/dist/cjs/utils/assertions.js +0 -40
  59. package/dist/cjs/utils/assertions.js.map +0 -1
  60. package/dist/cjs/utils/bigIntLiterals.d.ts +0 -7
  61. package/dist/cjs/utils/bigIntLiterals.js +0 -12
  62. package/dist/cjs/utils/bigIntLiterals.js.map +0 -1
  63. package/dist/cjs/utils/bigIntUtils.d.ts +0 -54
  64. package/dist/cjs/utils/bigIntUtils.js +0 -183
  65. package/dist/cjs/utils/bigIntUtils.js.map +0 -1
  66. package/dist/cjs/utils/boxUtils.d.ts +0 -23
  67. package/dist/cjs/utils/boxUtils.js +0 -121
  68. package/dist/cjs/utils/boxUtils.js.map +0 -1
  69. package/dist/cjs/utils/index.d.ts +0 -7
  70. package/dist/cjs/utils/index.js +0 -24
  71. package/dist/cjs/utils/index.js.map +0 -1
  72. package/dist/cjs/utils/objectUtils.d.ts +0 -4
  73. package/dist/cjs/utils/objectUtils.js +0 -27
  74. package/dist/cjs/utils/objectUtils.js.map +0 -1
  75. package/dist/cjs/utils/stringUtils.d.ts +0 -7
  76. package/dist/cjs/utils/stringUtils.js +0 -21
  77. package/dist/cjs/utils/stringUtils.js.map +0 -1
  78. package/dist/esm/index.d.ts +0 -3
  79. package/dist/esm/index.js +0 -4
  80. package/dist/esm/index.js.map +0 -1
  81. package/dist/esm/models/collection.d.ts +0 -20
  82. package/dist/esm/models/collection.js +0 -72
  83. package/dist/esm/models/collection.js.map +0 -1
  84. package/dist/esm/models/index.d.ts +0 -1
  85. package/dist/esm/models/index.js +0 -2
  86. package/dist/esm/models/index.js.map +0 -1
  87. package/dist/esm/types/boxes.d.ts +0 -22
  88. package/dist/esm/types/boxes.js +0 -2
  89. package/dist/esm/types/boxes.js.map +0 -1
  90. package/dist/esm/types/common.d.ts +0 -23
  91. package/dist/esm/types/common.js +0 -16
  92. package/dist/esm/types/common.js.map +0 -1
  93. package/dist/esm/types/contextExtension.d.ts +0 -4
  94. package/dist/esm/types/contextExtension.js +0 -2
  95. package/dist/esm/types/contextExtension.js.map +0 -1
  96. package/dist/esm/types/index.d.ts +0 -8
  97. package/dist/esm/types/index.js +0 -9
  98. package/dist/esm/types/index.js.map +0 -1
  99. package/dist/esm/types/inputs.d.ts +0 -37
  100. package/dist/esm/types/inputs.js +0 -2
  101. package/dist/esm/types/inputs.js.map +0 -1
  102. package/dist/esm/types/proverResult.d.ts +0 -6
  103. package/dist/esm/types/proverResult.js +0 -2
  104. package/dist/esm/types/proverResult.js.map +0 -1
  105. package/dist/esm/types/registers.d.ts +0 -9
  106. package/dist/esm/types/registers.js +0 -2
  107. package/dist/esm/types/registers.js.map +0 -1
  108. package/dist/esm/types/token.d.ts +0 -18
  109. package/dist/esm/types/token.js +0 -2
  110. package/dist/esm/types/token.js.map +0 -1
  111. package/dist/esm/types/transactions.d.ts +0 -22
  112. package/dist/esm/types/transactions.js +0 -2
  113. package/dist/esm/types/transactions.js.map +0 -1
  114. package/dist/esm/utils/arrayUtils.d.ts +0 -25
  115. package/dist/esm/utils/arrayUtils.js +0 -139
  116. package/dist/esm/utils/arrayUtils.js.map +0 -1
  117. package/dist/esm/utils/assertions.d.ts +0 -8
  118. package/dist/esm/utils/assertions.js +0 -32
  119. package/dist/esm/utils/assertions.js.map +0 -1
  120. package/dist/esm/utils/bigIntLiterals.d.ts +0 -7
  121. package/dist/esm/utils/bigIntLiterals.js +0 -9
  122. package/dist/esm/utils/bigIntLiterals.js.map +0 -1
  123. package/dist/esm/utils/bigIntUtils.d.ts +0 -54
  124. package/dist/esm/utils/bigIntUtils.js +0 -170
  125. package/dist/esm/utils/bigIntUtils.js.map +0 -1
  126. package/dist/esm/utils/boxUtils.d.ts +0 -23
  127. package/dist/esm/utils/boxUtils.js +0 -113
  128. package/dist/esm/utils/boxUtils.js.map +0 -1
  129. package/dist/esm/utils/index.d.ts +0 -7
  130. package/dist/esm/utils/index.js +0 -8
  131. package/dist/esm/utils/index.js.map +0 -1
  132. package/dist/esm/utils/objectUtils.d.ts +0 -4
  133. package/dist/esm/utils/objectUtils.js +0 -20
  134. package/dist/esm/utils/objectUtils.js.map +0 -1
  135. package/dist/esm/utils/stringUtils.d.ts +0 -7
  136. package/dist/esm/utils/stringUtils.js +0 -16
  137. package/dist/esm/utils/stringUtils.js.map +0 -1
  138. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  139. package/dist/tsconfig.tsbuildinfo +0 -1
  140. package/src/utils/bigIntLiterals.ts +0 -9
  141. package/src/utils/objectUtils.ts +0 -23
  142. package/src/utils/stringUtils.ts +0 -18
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/assertions.ts","../src/utils/array.ts","../src/utils/bigInt.ts","../src/utils/utxo.ts","../src/utils/object.ts","../src/utils/bytes.ts","../src/types/common.ts","../src/models/collection.ts"],"names":["min","max","tokenId","Network","AddressType"],"mappings":"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","sourcesContent":["export type AssertErrorMessageInput = string | Error | (() => string);\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype Constructable = Function;\n\ntype JSPrimitiveTypes =\n | \"string\"\n | \"number\"\n | \"bigint\"\n | \"boolean\"\n | \"symbol\"\n | \"undefined\"\n | \"object\"\n | \"function\";\n\nexport function assert(condition: boolean, error: AssertErrorMessageInput): asserts condition {\n if (condition) return;\n\n let err: Error | undefined = undefined;\n switch (typeof error) {\n case \"string\":\n err = new Error(error);\n break;\n case \"function\":\n err = new Error(error());\n break;\n default:\n err = error;\n }\n\n throw err;\n}\n\nexport function assertTypeOf<T>(obj: T, expected: JSPrimitiveTypes): asserts obj {\n const type = typeof obj;\n\n if (type !== expected) {\n throw new Error(`Expected an object of type '${expected}', got '${type}'.`);\n }\n}\n\nconst toString = (value: unknown) => Object.prototype.toString.call(value);\nfunction getTypeName(value: unknown): string {\n if (value === null) return \"null\";\n const type = typeof value;\n\n return type === \"object\" || type === \"function\" ? toString(value).slice(8, -1) : type;\n}\n\nexport function assertInstanceOf<T>(obj: T, expected: Constructable): asserts obj {\n const condition = obj instanceof expected;\n\n if (!condition) {\n throw new Error(`Expected an instance of '${expected.name}', got '${getTypeName(obj)}'.`);\n }\n}\n\nexport function isEmpty<T extends object>(obj?: T): obj is undefined;\nexport function isEmpty<T>(array?: T[]): array is undefined;\nexport function isEmpty<T>(obj?: T[] | object): obj is undefined {\n if (!obj) return true;\n\n return Array.isArray(obj) ? obj.length === 0 : Object.keys(obj).length === 0;\n}\n\nexport function some<T extends object>(obj?: T): obj is T;\nexport function some<T>(array?: T[]): array is T[];\nexport function some<T>(obj?: T[] | object): boolean {\n return !isEmpty(obj);\n}\n\nexport function isTruthy<T>(value?: T): value is NonNullable<T> {\n return !!value;\n}\n\nexport function isFalsy<T>(value?: T): value is undefined {\n return !value;\n}\n\nexport function isUndefined(v: unknown): v is undefined {\n return v === undefined || v === null || Number.isNaN(v);\n}\n\nexport function isDefined<T>(v: T | undefined): v is T {\n return !isUndefined(v);\n}\n\nexport function hasKey(o: unknown, key: PropertyKey): boolean {\n return Object.prototype.hasOwnProperty.call(o, key);\n}\n","import { SortingDirection, SortingSelector } from \"../types\";\nimport { assert, isEmpty } from \"./assertions\";\n\ntype ObjectSelector<T> = (item: T) => T[keyof T];\n\nexport function first(array: undefined): undefined;\nexport function first<T>(array: ArrayLike<T>): T;\nexport function first<T>(array: ArrayLike<T> | undefined): T | number | undefined {\n if (!array) return undefined;\n assert(array.length > 0, \"Empty array.\");\n\n return array[0];\n}\n\nexport function last(array: undefined): undefined;\nexport function last<T>(array: ArrayLike<T>): T;\nexport function last<T>(array: ArrayLike<T> | undefined): T | undefined {\n if (!array) return undefined;\n assert(array.length > 0, \"Empty array.\");\n\n return at(array, -1);\n}\n\nexport function at(array: undefined, index: number): undefined;\nexport function at<T>(array: ArrayLike<T>, index: number): T;\nexport function at<T>(array: ArrayLike<T> | undefined, index: number): T | undefined {\n const len = array?.length;\n if (!len) return undefined;\n\n if (index < 0) {\n index += len;\n }\n\n return array[index];\n}\n\n/**\n * Check for duplicate elements using the equality operator\n */\nexport function hasDuplicates<T>(array: T[]): boolean {\n return array.some((item, index) => {\n return array.indexOf(item) !== index;\n });\n}\n\n/**\n * Check for duplicate keys in complex elements\n */\nexport function hasDuplicatesBy<T>(array: T[], selector: ObjectSelector<T>): boolean {\n return array.some((item, index) => {\n return array.findIndex((x) => selector(x) === selector(item)) !== index;\n });\n}\n\nexport function chunk<T>(array: T[], size: number): T[][] {\n if (array.length <= size) {\n return [array];\n }\n\n const chunks: T[][] = [];\n for (let i = 0; i < array.length; i += size) {\n chunks.push(array.slice(i, i + size));\n }\n\n return chunks;\n}\n\nexport function orderBy<T>(\n array: T[],\n iteratee: SortingSelector<T>,\n order: SortingDirection = \"asc\"\n): T[] {\n return [...array].sort((a: T, b: T) => {\n if (iteratee(a) > iteratee(b)) {\n return order === \"asc\" ? 1 : -1;\n } else if (iteratee(a) < iteratee(b)) {\n return order === \"asc\" ? -1 : 1;\n } else {\n return 0;\n }\n });\n}\n\nexport function areEqual<T>(array1: ArrayLike<T>, array2: ArrayLike<T>): boolean {\n if (array1 === array2) {\n return true;\n }\n\n if (array1.length != array2.length) {\n return false;\n }\n\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function areEqualBy<T>(\n array1: ArrayLike<T>,\n array2: ArrayLike<T>,\n selector: ObjectSelector<T>\n): boolean {\n if (array1 === array2) {\n return true;\n }\n\n if (array1.length != array2.length) {\n return false;\n }\n\n for (let i = 0; i < array1.length; i++) {\n if (selector(array1[i]) !== selector(array2[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function startsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean {\n if (array === target) {\n return true;\n }\n\n if (target.length > array.length) {\n return false;\n }\n\n for (let i = 0; i < target.length; i++) {\n if (target[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function endsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean {\n if (array === target) {\n return true;\n }\n\n if (target.length > array.length) {\n return false;\n }\n\n const offset = array.length - target.length;\n\n for (let i = target.length - 1; i >= 0; i--) {\n if (target[i] !== array[i + offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function uniq<T>(array: Array<T>): Array<T> {\n if (isEmpty(array)) {\n return array;\n }\n\n return Array.from(new Set(array));\n}\n\nexport function uniqBy<T>(\n array: Array<T>,\n selector: ObjectSelector<T>,\n selection: \"keep-first\" | \"keep-last\" = \"keep-first\"\n): Array<T> {\n if (isEmpty(array)) {\n return array;\n }\n\n return Array.from(\n array\n .reduce((map, e) => {\n const key = selector(e);\n\n if (selection === \"keep-first\" && map.has(key)) {\n return map;\n }\n\n return map.set(key, e);\n }, new Map())\n .values()\n );\n}\n\nexport function depthOf(array: unknown | unknown[]): number {\n return Array.isArray(array) ? 1 + Math.max(0, ...array.map(depthOf)) : 0;\n}\n","import { Amount } from \"../types\";\nimport { first } from \"./array\";\nimport { isEmpty, isUndefined } from \"./assertions\";\n\ntype NumberLike = string | number | bigint | boolean;\n\nexport const _0n = BigInt(0);\nexport const _1n = BigInt(1);\nexport const _7n = BigInt(7);\nexport const _10n = BigInt(10);\nexport const _63n = BigInt(63);\nexport const _127n = BigInt(127);\nexport const _128n = BigInt(128);\n\nexport function ensureBigInt(number: NumberLike): bigint {\n return typeof number === \"bigint\" ? number : BigInt(number);\n}\n\ntype ParsingOptions = {\n /**\n * Number of decimals.\n */\n decimals?: number;\n\n /**\n * Thousand mark char.\n * Default: `.`\n */\n decimalMark?: string;\n};\n\nexport function undecimalize(decimalStr: string, options?: ParsingOptions | number): bigint {\n if (!decimalStr) {\n return _0n;\n }\n\n options = typeof options == \"number\" ? { decimals: options } : options;\n if (isUndefined(options)) {\n options = {};\n }\n\n options.decimals = options.decimals || 0;\n options.decimalMark = options.decimalMark || \".\";\n\n const fragments = decimalStr.split(options.decimalMark);\n if (fragments.length > 2) {\n throw new Error(\"Invalid numeric string.\");\n }\n\n let [integer, decimal] = fragments;\n integer = _removeLeadingZeros(integer);\n const negative = integer.startsWith(\"-\") ? \"-\" : \"\";\n\n if (!decimal) {\n decimal = \"0\".repeat(options.decimals);\n } else if (decimal.length < options.decimals) {\n decimal = decimal.padEnd(options.decimals, \"0\");\n }\n\n return BigInt(negative + _stripNonDigits(integer + decimal));\n}\n\nfunction _stripNonDigits(value: string): string {\n return value.replace(/\\D/g, \"\");\n}\n\ntype FormattingOptions = {\n /**\n * Number of decimals.\n */\n decimals: number;\n\n /**\n * Thousand mark char.\n */\n thousandMark?: string;\n\n /**\n * Decimal mark char.\n * Default: `.`\n */\n decimalMark?: string;\n};\n\nexport function decimalize(value: Amount, options?: FormattingOptions | number): string {\n value = ensureBigInt(value);\n if (!options) {\n return value.toString();\n }\n\n options = typeof options == \"number\" ? { decimals: options } : options;\n options.decimals = options.decimals || 0;\n options.decimalMark = options.decimalMark || \".\";\n\n const pow = _10n ** BigInt(options.decimals);\n const integer = value / pow;\n const decimal = value - integer * pow;\n\n return _buildFormattedDecimal(integer.toString(10), decimal.toString(10), options);\n}\n\nexport function percent(value: bigint, percentage: bigint, precision = 2n) {\n return (value * percentage) / 10n ** precision;\n}\n\nfunction _buildFormattedDecimal(\n integer: string,\n decimal: string,\n options: FormattingOptions\n): string {\n const integerPart = _addThousandMarks(integer, options.thousandMark);\n const decimalPart = _stripTrailingZeros(decimal.padStart(options.decimals, \"0\"));\n\n if (decimalPart) {\n return `${integerPart}${options.decimalMark}${decimalPart}`;\n } else {\n return integerPart;\n }\n}\n\nfunction _addThousandMarks(value: string, mark?: string): string {\n if (!mark) {\n return value;\n }\n\n return value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, mark);\n}\n\nfunction _stripTrailingZeros(value: string): string {\n if (!value.endsWith(\"0\")) {\n return value;\n }\n\n return value.replace(/\\.?0+$/, \"\");\n}\n\nfunction _removeLeadingZeros(value: string): string {\n if (!value.startsWith(\"0\")) {\n return value;\n }\n\n return value.replace(/^0+\\.?/, \"\");\n}\n\nexport function sumBy<T>(\n collection: readonly T[],\n iteratee: (value: T) => bigint,\n condition?: (value: T) => boolean\n): bigint {\n let acc = _0n;\n if (isEmpty(collection)) {\n return acc;\n }\n\n for (const item of collection) {\n if (isUndefined(condition) || condition(item)) {\n acc += iteratee(item);\n }\n }\n\n return acc;\n}\n\nexport function min<T extends bigint | number>(...numbers: T[]): T {\n let min = first(numbers);\n\n for (const num of numbers) {\n if (num < min) {\n min = num;\n }\n }\n\n return min;\n}\n\nexport function max<T extends bigint | number>(...numbers: T[]): T {\n let max = first(numbers);\n\n for (const num of numbers) {\n if (num > max) {\n max = num;\n }\n }\n\n return max;\n}\n","import {\n Amount,\n AmountType,\n Box,\n BoxCandidate,\n NonMandatoryRegisters,\n TokenAmount,\n TokenId\n} from \"../types\";\nimport { isDefined, isEmpty, isUndefined } from \"./assertions\";\nimport { ensureBigInt } from \"./bigInt\";\nimport { _0n } from \"./bigInt\";\n\nconst NANOERGS_TOKEN_ID = \"nanoErgs\";\n\nexport function utxoSum(boxes: MinimalBoxAmounts): BoxSummary;\nexport function utxoSum(boxes: MinimalBoxAmounts, tokenId: TokenId): bigint;\nexport function utxoSum(boxes: MinimalBoxAmounts, tokenId?: TokenId): BoxSummary | bigint {\n const balances: { [tokenId: string]: bigint } = {};\n\n for (const box of boxes) {\n if (isUndefined(tokenId) || tokenId === NANOERGS_TOKEN_ID) {\n balances[NANOERGS_TOKEN_ID] = (balances[NANOERGS_TOKEN_ID] || _0n) + ensureBigInt(box.value);\n }\n\n if (tokenId !== NANOERGS_TOKEN_ID) {\n for (const token of box.assets) {\n if (isDefined(tokenId) && tokenId !== token.tokenId) {\n continue;\n }\n\n balances[token.tokenId] = (balances[token.tokenId] || _0n) + ensureBigInt(token.amount);\n }\n }\n }\n\n if (isDefined(tokenId)) {\n return balances[tokenId] || _0n;\n }\n\n return {\n nanoErgs: balances[NANOERGS_TOKEN_ID] || _0n,\n tokens: Object.keys(balances)\n .filter((x) => x !== NANOERGS_TOKEN_ID)\n .map((tokenId) => ({ tokenId, amount: balances[tokenId] }))\n };\n}\n\nexport function utxoDiff(\n minuend: BoxSummary | Box<Amount>[],\n subtrahend: BoxSummary | Box<Amount>[]\n): BoxSummary {\n if (Array.isArray(minuend)) {\n minuend = utxoSum(minuend);\n }\n\n if (Array.isArray(subtrahend)) {\n subtrahend = utxoSum(subtrahend);\n }\n\n const tokens: TokenAmount<bigint>[] = [];\n const nanoErgs = minuend.nanoErgs - subtrahend.nanoErgs;\n\n for (const token of minuend.tokens) {\n const balance =\n token.amount - (subtrahend.tokens.find((t) => t.tokenId === token.tokenId)?.amount || _0n);\n\n if (balance !== _0n) {\n tokens.push({ tokenId: token.tokenId, amount: balance });\n }\n }\n\n return { nanoErgs, tokens };\n}\n\nconst MIN_NON_MANDATORY_REGISTER_INDEX = 4;\nconst MAX_NON_MANDATORY_REGISTER_INDEX = 9;\n\nexport function areRegistersDenselyPacked(registers: NonMandatoryRegisters): boolean {\n let lastIndex = 0;\n for (let i = MIN_NON_MANDATORY_REGISTER_INDEX; i <= MAX_NON_MANDATORY_REGISTER_INDEX; i++) {\n const key = `R${i}` as keyof NonMandatoryRegisters;\n if (registers[key]) {\n if (i === MIN_NON_MANDATORY_REGISTER_INDEX) {\n lastIndex = i;\n continue;\n }\n\n if (i - lastIndex > 1) {\n return false;\n }\n\n lastIndex = i;\n }\n }\n\n return true;\n}\n\nexport function utxoFilter<T extends AmountType>(\n utxos: Box<T>[],\n filterParams: UTxOFilterParams<T>\n) {\n if (isEmpty(filterParams) || isEmpty(utxos)) {\n return utxos;\n }\n\n const { by, max } = filterParams;\n let filtered = utxos;\n\n if (by) {\n filtered = utxos.filter(by);\n if (isEmpty(filtered)) {\n return filtered;\n }\n }\n\n if (!max) {\n return filtered;\n }\n\n if (isDefined(max.aggregatedDistinctTokens)) {\n const tokenIds = _getDistinctTokenIds(filtered, max.aggregatedDistinctTokens);\n filtered = filtered.filter(\n (utxo) => isEmpty(utxo.assets) || utxo.assets.every((token) => tokenIds.has(token.tokenId))\n );\n }\n\n if (isDefined(max.count) && filtered.length > max.count) {\n filtered = filtered.slice(0, max.count);\n }\n\n return filtered;\n}\n\nfunction _getDistinctTokenIds(utxos: Box<AmountType>[], max: number): Set<string> {\n const tokenIds = new Set<string>();\n\n for (let i = 0; i < utxos.length && tokenIds.size < max; i++) {\n if (isEmpty(utxos[i].assets) || utxos[i].assets.length > max) {\n continue;\n }\n\n for (const token of utxos[i].assets) {\n tokenIds.add(token.tokenId);\n }\n }\n\n return tokenIds;\n}\n\nexport type UTxOFilterParams<T extends AmountType> = {\n by?: (utxo: Box<T>) => boolean;\n max?: {\n count?: number;\n aggregatedDistinctTokens?: number;\n };\n};\n\nexport type BoxSummary = {\n nanoErgs: bigint;\n tokens: TokenAmount<bigint>[];\n};\n\nexport type MinimalBoxAmounts = readonly {\n value: Amount;\n assets: TokenAmount<Amount>[];\n}[];\n\nexport function ensureUTxOBigInt(box: Box<Amount>): Box<bigint>;\nexport function ensureUTxOBigInt(candidate: BoxCandidate<Amount>): BoxCandidate<bigint>;\nexport function ensureUTxOBigInt(\n box: Box<Amount> | BoxCandidate<Amount>\n): BoxCandidate<bigint> | Box<bigint> {\n return {\n ...box,\n value: ensureBigInt(box.value),\n assets: box.assets.map((token) => ({\n tokenId: token.tokenId,\n amount: ensureBigInt(token.amount)\n }))\n };\n}\n","import { isEmpty, isUndefined } from \"./assertions\";\n\nexport function clearUndefined(value: Record<string, unknown>) {\n const result: Record<string, unknown> = {};\n for (const key in value) {\n const val = value[key];\n if (!isUndefined(val)) {\n result[key] = val;\n }\n }\n\n return result;\n}\n\nexport function ensureDefaults<T extends Partial<R>, R extends object = Required<T>>(\n options: T | undefined,\n defaults: R\n): R & T {\n if (isEmpty(options)) return defaults as R & T;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const newObj: any = { ...defaults, ...options };\n for (const key in newObj) {\n newObj[key as keyof object] = options[key as keyof R] ?? defaults[key as keyof R];\n }\n\n return newObj;\n}\n","import { assertInstanceOf } from \".\";\n\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n const r = new Uint8Array(arrays.reduce((sum, a) => sum + a.length, 0));\n\n let pad = 0;\n for (const bytes of arrays) {\n assertInstanceOf(bytes, Uint8Array);\n\n r.set(bytes, pad);\n pad += bytes.length;\n }\n\n return r;\n}\n\nexport function isHex(value?: string) {\n if (!value || value.length % 2) return false;\n\n if (!value.startsWith(\"0x\")) {\n value = \"0x\" + value;\n }\n\n return !isNaN(Number(value));\n}\n\n/**\n * Get hex string size in bytes\n * @param hex\n * @returns the byte size if the hex string\n */\nexport function byteSizeOf(hex: string): number {\n return hex.length / 2;\n}\n","export type HexString = string;\nexport type ErgoTreeHex = string;\nexport type Base58String = string;\nexport type Amount = string | bigint;\n\nexport type OneOrMore<T> = T | T[];\n\nexport type SortingSelector<T> = (item: T) => string | number | bigint;\nexport type SortingDirection = \"asc\" | \"desc\";\n\nexport type FilterPredicate<T> = (item: T) => boolean;\n\nexport type BuildOutputType = \"default\" | \"EIP-12\";\n\nexport enum Network {\n Mainnet = 0x00,\n Testnet = 0x10\n}\n\nexport enum AddressType {\n P2PK = 1,\n P2SH = 2,\n P2S = 3\n}\n\nexport const ergoTreeHeaderFlags = {\n sizeInclusion: 0x08,\n constantSegregation: 0x10\n} as const;\n\nexport type ErgoTreeHeaderFlag = (typeof ergoTreeHeaderFlags)[keyof typeof ergoTreeHeaderFlags];\n","import { OneOrMore } from \"../types\";\nimport { isDefined } from \"../utils\";\n\nexport type CollectionAddOptions = { index?: number };\n\nexport abstract class Collection<InternalType, ExternalType> implements Iterable<InternalType> {\n protected readonly _items: InternalType[];\n\n constructor() {\n this._items = [];\n }\n\n protected _isIndexOutOfBounds(index: number): boolean {\n return index < 0 || index >= this._items.length;\n }\n\n [Symbol.iterator](): Iterator<InternalType> {\n let counter = 0;\n\n return {\n next: () => {\n return {\n done: counter >= this.length,\n value: this._items[counter++]\n };\n }\n };\n }\n\n public get length(): number {\n return this._items.length;\n }\n\n public get isEmpty(): boolean {\n return this.length === 0;\n }\n\n public at(index: number): InternalType {\n if (this._isIndexOutOfBounds(index)) {\n throw new RangeError(`Index '${index}' is out of range.`);\n }\n\n return this._items[index];\n }\n\n public add(items: OneOrMore<ExternalType>, options?: CollectionAddOptions): number {\n return this._addOneOrMore(items, options);\n }\n\n abstract remove(item: unknown): number;\n\n protected abstract _map(item: ExternalType | InternalType): InternalType;\n\n protected _addOne(item: InternalType | ExternalType, options?: CollectionAddOptions): number {\n if (isDefined(options) && isDefined(options.index)) {\n if (options.index === this.length) {\n this._items.push(this._map(item));\n\n return this.length;\n }\n\n if (this._isIndexOutOfBounds(options.index)) {\n throw new RangeError(`Index '${options.index}' is out of range.`);\n }\n\n this._items.splice(options.index, 0, this._map(item));\n\n return this.length;\n }\n\n this._items.push(this._map(item));\n\n return this._items.length;\n }\n\n protected _addOneOrMore(items: OneOrMore<ExternalType>, options?: CollectionAddOptions): number {\n if (Array.isArray(items)) {\n if (isDefined(options) && isDefined(options.index)) {\n items = items.reverse();\n }\n\n for (const item of items) {\n this._addOne(item, options);\n }\n } else {\n this._addOne(items, options);\n }\n\n return this.length;\n }\n\n public toArray(): InternalType[] {\n return [...this._items];\n }\n\n public reduce<U>(\n callbackFn: (\n accumulator: U,\n currentValue: InternalType,\n currentIndex: number,\n array: InternalType[]\n ) => U,\n initialValue: U\n ): U {\n return this._items.reduce(callbackFn, initialValue);\n }\n}\n"]}
@@ -0,0 +1,268 @@
1
+ type HexString = string;
2
+ type ErgoTreeHex = string;
3
+ type Base58String = string;
4
+ type Amount = string | bigint;
5
+ type OneOrMore<T> = T | T[];
6
+ type SortingSelector<T> = (item: T) => string | number | bigint;
7
+ type SortingDirection = "asc" | "desc";
8
+ type FilterPredicate<T> = (item: T) => boolean;
9
+ type BuildOutputType = "default" | "EIP-12";
10
+ declare enum Network {
11
+ Mainnet = 0,
12
+ Testnet = 16
13
+ }
14
+ declare enum AddressType {
15
+ P2PK = 1,
16
+ P2SH = 2,
17
+ P2S = 3
18
+ }
19
+ declare const ergoTreeHeaderFlags: {
20
+ readonly sizeInclusion: 8;
21
+ readonly constantSegregation: 16;
22
+ };
23
+ type ErgoTreeHeaderFlag = (typeof ergoTreeHeaderFlags)[keyof typeof ergoTreeHeaderFlags];
24
+
25
+ type NonMandatoryRegisters = {
26
+ R4?: HexString;
27
+ R5?: HexString;
28
+ R6?: HexString;
29
+ R7?: HexString;
30
+ R8?: HexString;
31
+ R9?: HexString;
32
+ };
33
+
34
+ type TokenId = string;
35
+ type TokenBase<AmountType> = {
36
+ amount: AmountType;
37
+ };
38
+ type TokenAmount<AmountType> = TokenBase<AmountType> & {
39
+ tokenId: TokenId;
40
+ };
41
+ type NewToken<AmountType> = TokenBase<AmountType> & {
42
+ tokenId?: TokenId;
43
+ name?: string;
44
+ decimals?: number;
45
+ description?: string;
46
+ };
47
+ type TokenTargetAmount<AmountType> = {
48
+ tokenId: TokenId;
49
+ amount?: AmountType;
50
+ };
51
+
52
+ type ContextExtension = {
53
+ [key: number]: HexString | undefined;
54
+ };
55
+
56
+ type ProverResult = {
57
+ readonly proofBytes: HexString;
58
+ readonly extension: ContextExtension;
59
+ };
60
+
61
+ type SignedInput = {
62
+ readonly boxId: BoxId;
63
+ readonly spendingProof: ProverResult;
64
+ };
65
+ type UnsignedInput = {
66
+ boxId: BoxId;
67
+ extension: ContextExtension;
68
+ };
69
+ type EIP12UnsignedInput = UnsignedInput & {
70
+ transactionId: TransactionId;
71
+ index: number;
72
+ ergoTree: ErgoTreeHex;
73
+ creationHeight: number;
74
+ value: string;
75
+ assets: TokenAmount<string>[];
76
+ additionalRegisters: NonMandatoryRegisters;
77
+ };
78
+ type EIP12UnsignedDataInput = {
79
+ boxId: BoxId;
80
+ transactionId: TransactionId;
81
+ index: number;
82
+ ergoTree: ErgoTreeHex;
83
+ creationHeight: number;
84
+ value: string;
85
+ assets: TokenAmount<string>[];
86
+ additionalRegisters: NonMandatoryRegisters;
87
+ };
88
+ type DataInput = {
89
+ boxId: BoxId;
90
+ };
91
+
92
+ type TransactionId = string;
93
+ type UnsignedTransaction = {
94
+ id?: TransactionId;
95
+ inputs: UnsignedInput[];
96
+ dataInputs: DataInput[];
97
+ outputs: BoxCandidate<Amount>[];
98
+ };
99
+ type EIP12UnsignedTransaction = {
100
+ id?: TransactionId;
101
+ inputs: EIP12UnsignedInput[];
102
+ dataInputs: EIP12UnsignedDataInput[];
103
+ outputs: BoxCandidate<string>[];
104
+ };
105
+ type SignedTransaction = {
106
+ readonly id: TransactionId;
107
+ readonly inputs: SignedInput[];
108
+ readonly dataInputs: DataInput[];
109
+ readonly outputs: Box<Amount>[];
110
+ };
111
+
112
+ type BoxId = string;
113
+ type AmountType = string | bigint;
114
+ type BoxBaseType<T extends AmountType, R extends NonMandatoryRegisters> = {
115
+ ergoTree: ErgoTreeHex;
116
+ creationHeight: number;
117
+ value: T;
118
+ assets: TokenAmount<T>[];
119
+ additionalRegisters: R;
120
+ };
121
+ type BoxCandidate<T extends AmountType, R extends NonMandatoryRegisters = NonMandatoryRegisters> = BoxBaseType<T, R> & {
122
+ boxId?: BoxId;
123
+ };
124
+ type Box<T extends AmountType, R extends NonMandatoryRegisters = NonMandatoryRegisters> = BoxBaseType<T, R> & {
125
+ boxId: BoxId;
126
+ transactionId: TransactionId;
127
+ index: number;
128
+ };
129
+
130
+ type ObjectSelector<T> = (item: T) => T[keyof T];
131
+ declare function first(array: undefined): undefined;
132
+ declare function first<T>(array: ArrayLike<T>): T;
133
+ declare function last(array: undefined): undefined;
134
+ declare function last<T>(array: ArrayLike<T>): T;
135
+ declare function at(array: undefined, index: number): undefined;
136
+ declare function at<T>(array: ArrayLike<T>, index: number): T;
137
+ /**
138
+ * Check for duplicate elements using the equality operator
139
+ */
140
+ declare function hasDuplicates<T>(array: T[]): boolean;
141
+ /**
142
+ * Check for duplicate keys in complex elements
143
+ */
144
+ declare function hasDuplicatesBy<T>(array: T[], selector: ObjectSelector<T>): boolean;
145
+ declare function chunk<T>(array: T[], size: number): T[][];
146
+ declare function orderBy<T>(array: T[], iteratee: SortingSelector<T>, order?: SortingDirection): T[];
147
+ declare function areEqual<T>(array1: ArrayLike<T>, array2: ArrayLike<T>): boolean;
148
+ declare function areEqualBy<T>(array1: ArrayLike<T>, array2: ArrayLike<T>, selector: ObjectSelector<T>): boolean;
149
+ declare function startsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
150
+ declare function endsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
151
+ declare function uniq<T>(array: Array<T>): Array<T>;
152
+ declare function uniqBy<T>(array: Array<T>, selector: ObjectSelector<T>, selection?: "keep-first" | "keep-last"): Array<T>;
153
+ declare function depthOf(array: unknown | unknown[]): number;
154
+
155
+ type NumberLike = string | number | bigint | boolean;
156
+ declare const _0n: bigint;
157
+ declare const _1n: bigint;
158
+ declare const _7n: bigint;
159
+ declare const _10n: bigint;
160
+ declare const _63n: bigint;
161
+ declare const _127n: bigint;
162
+ declare const _128n: bigint;
163
+ declare function ensureBigInt(number: NumberLike): bigint;
164
+ type ParsingOptions = {
165
+ /**
166
+ * Number of decimals.
167
+ */
168
+ decimals?: number;
169
+ /**
170
+ * Thousand mark char.
171
+ * Default: `.`
172
+ */
173
+ decimalMark?: string;
174
+ };
175
+ declare function undecimalize(decimalStr: string, options?: ParsingOptions | number): bigint;
176
+ type FormattingOptions = {
177
+ /**
178
+ * Number of decimals.
179
+ */
180
+ decimals: number;
181
+ /**
182
+ * Thousand mark char.
183
+ */
184
+ thousandMark?: string;
185
+ /**
186
+ * Decimal mark char.
187
+ * Default: `.`
188
+ */
189
+ decimalMark?: string;
190
+ };
191
+ declare function decimalize(value: Amount, options?: FormattingOptions | number): string;
192
+ declare function percent(value: bigint, percentage: bigint, precision?: bigint): bigint;
193
+ declare function sumBy<T>(collection: readonly T[], iteratee: (value: T) => bigint, condition?: (value: T) => boolean): bigint;
194
+ declare function min<T extends bigint | number>(...numbers: T[]): T;
195
+ declare function max<T extends bigint | number>(...numbers: T[]): T;
196
+
197
+ declare function utxoSum(boxes: MinimalBoxAmounts): BoxSummary;
198
+ declare function utxoSum(boxes: MinimalBoxAmounts, tokenId: TokenId): bigint;
199
+ declare function utxoDiff(minuend: BoxSummary | Box<Amount>[], subtrahend: BoxSummary | Box<Amount>[]): BoxSummary;
200
+ declare function areRegistersDenselyPacked(registers: NonMandatoryRegisters): boolean;
201
+ declare function utxoFilter<T extends AmountType>(utxos: Box<T>[], filterParams: UTxOFilterParams<T>): Box<T>[];
202
+ type UTxOFilterParams<T extends AmountType> = {
203
+ by?: (utxo: Box<T>) => boolean;
204
+ max?: {
205
+ count?: number;
206
+ aggregatedDistinctTokens?: number;
207
+ };
208
+ };
209
+ type BoxSummary = {
210
+ nanoErgs: bigint;
211
+ tokens: TokenAmount<bigint>[];
212
+ };
213
+ type MinimalBoxAmounts = readonly {
214
+ value: Amount;
215
+ assets: TokenAmount<Amount>[];
216
+ }[];
217
+ declare function ensureUTxOBigInt(box: Box<Amount>): Box<bigint>;
218
+ declare function ensureUTxOBigInt(candidate: BoxCandidate<Amount>): BoxCandidate<bigint>;
219
+
220
+ declare function clearUndefined(value: Record<string, unknown>): Record<string, unknown>;
221
+ declare function ensureDefaults<T extends Partial<R>, R extends object = Required<T>>(options: T | undefined, defaults: R): R & T;
222
+
223
+ type AssertErrorMessageInput = string | Error | (() => string);
224
+ type Constructable = Function;
225
+ type JSPrimitiveTypes = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
226
+ declare function assert(condition: boolean, error: AssertErrorMessageInput): asserts condition;
227
+ declare function assertTypeOf<T>(obj: T, expected: JSPrimitiveTypes): asserts obj;
228
+ declare function assertInstanceOf<T>(obj: T, expected: Constructable): asserts obj;
229
+ declare function isEmpty<T extends object>(obj?: T): obj is undefined;
230
+ declare function isEmpty<T>(array?: T[]): array is undefined;
231
+ declare function some<T extends object>(obj?: T): obj is T;
232
+ declare function some<T>(array?: T[]): array is T[];
233
+ declare function isTruthy<T>(value?: T): value is NonNullable<T>;
234
+ declare function isFalsy<T>(value?: T): value is undefined;
235
+ declare function isUndefined(v: unknown): v is undefined;
236
+ declare function isDefined<T>(v: T | undefined): v is T;
237
+ declare function hasKey(o: unknown, key: PropertyKey): boolean;
238
+
239
+ declare function concatBytes(...arrays: Uint8Array[]): Uint8Array;
240
+ declare function isHex(value?: string): boolean;
241
+ /**
242
+ * Get hex string size in bytes
243
+ * @param hex
244
+ * @returns the byte size if the hex string
245
+ */
246
+ declare function byteSizeOf(hex: string): number;
247
+
248
+ type CollectionAddOptions = {
249
+ index?: number;
250
+ };
251
+ declare abstract class Collection<InternalType, ExternalType> implements Iterable<InternalType> {
252
+ protected readonly _items: InternalType[];
253
+ constructor();
254
+ protected _isIndexOutOfBounds(index: number): boolean;
255
+ [Symbol.iterator](): Iterator<InternalType>;
256
+ get length(): number;
257
+ get isEmpty(): boolean;
258
+ at(index: number): InternalType;
259
+ add(items: OneOrMore<ExternalType>, options?: CollectionAddOptions): number;
260
+ abstract remove(item: unknown): number;
261
+ protected abstract _map(item: ExternalType | InternalType): InternalType;
262
+ protected _addOne(item: InternalType | ExternalType, options?: CollectionAddOptions): number;
263
+ protected _addOneOrMore(items: OneOrMore<ExternalType>, options?: CollectionAddOptions): number;
264
+ toArray(): InternalType[];
265
+ reduce<U>(callbackFn: (accumulator: U, currentValue: InternalType, currentIndex: number, array: InternalType[]) => U, initialValue: U): U;
266
+ }
267
+
268
+ export { AddressType, Amount, AmountType, AssertErrorMessageInput, Base58String, Box, BoxCandidate, BoxId, BoxSummary, BuildOutputType, Collection, CollectionAddOptions, ContextExtension, DataInput, EIP12UnsignedDataInput, EIP12UnsignedInput, EIP12UnsignedTransaction, ErgoTreeHeaderFlag, ErgoTreeHex, FilterPredicate, HexString, MinimalBoxAmounts, Network, NewToken, NonMandatoryRegisters, OneOrMore, ProverResult, SignedInput, SignedTransaction, SortingDirection, SortingSelector, TokenAmount, TokenId, TokenTargetAmount, TransactionId, UTxOFilterParams, UnsignedInput, UnsignedTransaction, _0n, _10n, _127n, _128n, _1n, _63n, _7n, areEqual, areEqualBy, areRegistersDenselyPacked, assert, assertInstanceOf, assertTypeOf, at, byteSizeOf, chunk, clearUndefined, concatBytes, decimalize, depthOf, endsWith, ensureBigInt, ensureDefaults, ensureUTxOBigInt, ergoTreeHeaderFlags, first, hasDuplicates, hasDuplicatesBy, hasKey, isDefined, isEmpty, isFalsy, isHex, isTruthy, isUndefined, last, max, min, orderBy, percent, some, startsWith, sumBy, undecimalize, uniq, uniqBy, utxoDiff, utxoFilter, utxoSum };
@@ -0,0 +1,268 @@
1
+ type HexString = string;
2
+ type ErgoTreeHex = string;
3
+ type Base58String = string;
4
+ type Amount = string | bigint;
5
+ type OneOrMore<T> = T | T[];
6
+ type SortingSelector<T> = (item: T) => string | number | bigint;
7
+ type SortingDirection = "asc" | "desc";
8
+ type FilterPredicate<T> = (item: T) => boolean;
9
+ type BuildOutputType = "default" | "EIP-12";
10
+ declare enum Network {
11
+ Mainnet = 0,
12
+ Testnet = 16
13
+ }
14
+ declare enum AddressType {
15
+ P2PK = 1,
16
+ P2SH = 2,
17
+ P2S = 3
18
+ }
19
+ declare const ergoTreeHeaderFlags: {
20
+ readonly sizeInclusion: 8;
21
+ readonly constantSegregation: 16;
22
+ };
23
+ type ErgoTreeHeaderFlag = (typeof ergoTreeHeaderFlags)[keyof typeof ergoTreeHeaderFlags];
24
+
25
+ type NonMandatoryRegisters = {
26
+ R4?: HexString;
27
+ R5?: HexString;
28
+ R6?: HexString;
29
+ R7?: HexString;
30
+ R8?: HexString;
31
+ R9?: HexString;
32
+ };
33
+
34
+ type TokenId = string;
35
+ type TokenBase<AmountType> = {
36
+ amount: AmountType;
37
+ };
38
+ type TokenAmount<AmountType> = TokenBase<AmountType> & {
39
+ tokenId: TokenId;
40
+ };
41
+ type NewToken<AmountType> = TokenBase<AmountType> & {
42
+ tokenId?: TokenId;
43
+ name?: string;
44
+ decimals?: number;
45
+ description?: string;
46
+ };
47
+ type TokenTargetAmount<AmountType> = {
48
+ tokenId: TokenId;
49
+ amount?: AmountType;
50
+ };
51
+
52
+ type ContextExtension = {
53
+ [key: number]: HexString | undefined;
54
+ };
55
+
56
+ type ProverResult = {
57
+ readonly proofBytes: HexString;
58
+ readonly extension: ContextExtension;
59
+ };
60
+
61
+ type SignedInput = {
62
+ readonly boxId: BoxId;
63
+ readonly spendingProof: ProverResult;
64
+ };
65
+ type UnsignedInput = {
66
+ boxId: BoxId;
67
+ extension: ContextExtension;
68
+ };
69
+ type EIP12UnsignedInput = UnsignedInput & {
70
+ transactionId: TransactionId;
71
+ index: number;
72
+ ergoTree: ErgoTreeHex;
73
+ creationHeight: number;
74
+ value: string;
75
+ assets: TokenAmount<string>[];
76
+ additionalRegisters: NonMandatoryRegisters;
77
+ };
78
+ type EIP12UnsignedDataInput = {
79
+ boxId: BoxId;
80
+ transactionId: TransactionId;
81
+ index: number;
82
+ ergoTree: ErgoTreeHex;
83
+ creationHeight: number;
84
+ value: string;
85
+ assets: TokenAmount<string>[];
86
+ additionalRegisters: NonMandatoryRegisters;
87
+ };
88
+ type DataInput = {
89
+ boxId: BoxId;
90
+ };
91
+
92
+ type TransactionId = string;
93
+ type UnsignedTransaction = {
94
+ id?: TransactionId;
95
+ inputs: UnsignedInput[];
96
+ dataInputs: DataInput[];
97
+ outputs: BoxCandidate<Amount>[];
98
+ };
99
+ type EIP12UnsignedTransaction = {
100
+ id?: TransactionId;
101
+ inputs: EIP12UnsignedInput[];
102
+ dataInputs: EIP12UnsignedDataInput[];
103
+ outputs: BoxCandidate<string>[];
104
+ };
105
+ type SignedTransaction = {
106
+ readonly id: TransactionId;
107
+ readonly inputs: SignedInput[];
108
+ readonly dataInputs: DataInput[];
109
+ readonly outputs: Box<Amount>[];
110
+ };
111
+
112
+ type BoxId = string;
113
+ type AmountType = string | bigint;
114
+ type BoxBaseType<T extends AmountType, R extends NonMandatoryRegisters> = {
115
+ ergoTree: ErgoTreeHex;
116
+ creationHeight: number;
117
+ value: T;
118
+ assets: TokenAmount<T>[];
119
+ additionalRegisters: R;
120
+ };
121
+ type BoxCandidate<T extends AmountType, R extends NonMandatoryRegisters = NonMandatoryRegisters> = BoxBaseType<T, R> & {
122
+ boxId?: BoxId;
123
+ };
124
+ type Box<T extends AmountType, R extends NonMandatoryRegisters = NonMandatoryRegisters> = BoxBaseType<T, R> & {
125
+ boxId: BoxId;
126
+ transactionId: TransactionId;
127
+ index: number;
128
+ };
129
+
130
+ type ObjectSelector<T> = (item: T) => T[keyof T];
131
+ declare function first(array: undefined): undefined;
132
+ declare function first<T>(array: ArrayLike<T>): T;
133
+ declare function last(array: undefined): undefined;
134
+ declare function last<T>(array: ArrayLike<T>): T;
135
+ declare function at(array: undefined, index: number): undefined;
136
+ declare function at<T>(array: ArrayLike<T>, index: number): T;
137
+ /**
138
+ * Check for duplicate elements using the equality operator
139
+ */
140
+ declare function hasDuplicates<T>(array: T[]): boolean;
141
+ /**
142
+ * Check for duplicate keys in complex elements
143
+ */
144
+ declare function hasDuplicatesBy<T>(array: T[], selector: ObjectSelector<T>): boolean;
145
+ declare function chunk<T>(array: T[], size: number): T[][];
146
+ declare function orderBy<T>(array: T[], iteratee: SortingSelector<T>, order?: SortingDirection): T[];
147
+ declare function areEqual<T>(array1: ArrayLike<T>, array2: ArrayLike<T>): boolean;
148
+ declare function areEqualBy<T>(array1: ArrayLike<T>, array2: ArrayLike<T>, selector: ObjectSelector<T>): boolean;
149
+ declare function startsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
150
+ declare function endsWith<T>(array: ArrayLike<T>, target: ArrayLike<T>): boolean;
151
+ declare function uniq<T>(array: Array<T>): Array<T>;
152
+ declare function uniqBy<T>(array: Array<T>, selector: ObjectSelector<T>, selection?: "keep-first" | "keep-last"): Array<T>;
153
+ declare function depthOf(array: unknown | unknown[]): number;
154
+
155
+ type NumberLike = string | number | bigint | boolean;
156
+ declare const _0n: bigint;
157
+ declare const _1n: bigint;
158
+ declare const _7n: bigint;
159
+ declare const _10n: bigint;
160
+ declare const _63n: bigint;
161
+ declare const _127n: bigint;
162
+ declare const _128n: bigint;
163
+ declare function ensureBigInt(number: NumberLike): bigint;
164
+ type ParsingOptions = {
165
+ /**
166
+ * Number of decimals.
167
+ */
168
+ decimals?: number;
169
+ /**
170
+ * Thousand mark char.
171
+ * Default: `.`
172
+ */
173
+ decimalMark?: string;
174
+ };
175
+ declare function undecimalize(decimalStr: string, options?: ParsingOptions | number): bigint;
176
+ type FormattingOptions = {
177
+ /**
178
+ * Number of decimals.
179
+ */
180
+ decimals: number;
181
+ /**
182
+ * Thousand mark char.
183
+ */
184
+ thousandMark?: string;
185
+ /**
186
+ * Decimal mark char.
187
+ * Default: `.`
188
+ */
189
+ decimalMark?: string;
190
+ };
191
+ declare function decimalize(value: Amount, options?: FormattingOptions | number): string;
192
+ declare function percent(value: bigint, percentage: bigint, precision?: bigint): bigint;
193
+ declare function sumBy<T>(collection: readonly T[], iteratee: (value: T) => bigint, condition?: (value: T) => boolean): bigint;
194
+ declare function min<T extends bigint | number>(...numbers: T[]): T;
195
+ declare function max<T extends bigint | number>(...numbers: T[]): T;
196
+
197
+ declare function utxoSum(boxes: MinimalBoxAmounts): BoxSummary;
198
+ declare function utxoSum(boxes: MinimalBoxAmounts, tokenId: TokenId): bigint;
199
+ declare function utxoDiff(minuend: BoxSummary | Box<Amount>[], subtrahend: BoxSummary | Box<Amount>[]): BoxSummary;
200
+ declare function areRegistersDenselyPacked(registers: NonMandatoryRegisters): boolean;
201
+ declare function utxoFilter<T extends AmountType>(utxos: Box<T>[], filterParams: UTxOFilterParams<T>): Box<T>[];
202
+ type UTxOFilterParams<T extends AmountType> = {
203
+ by?: (utxo: Box<T>) => boolean;
204
+ max?: {
205
+ count?: number;
206
+ aggregatedDistinctTokens?: number;
207
+ };
208
+ };
209
+ type BoxSummary = {
210
+ nanoErgs: bigint;
211
+ tokens: TokenAmount<bigint>[];
212
+ };
213
+ type MinimalBoxAmounts = readonly {
214
+ value: Amount;
215
+ assets: TokenAmount<Amount>[];
216
+ }[];
217
+ declare function ensureUTxOBigInt(box: Box<Amount>): Box<bigint>;
218
+ declare function ensureUTxOBigInt(candidate: BoxCandidate<Amount>): BoxCandidate<bigint>;
219
+
220
+ declare function clearUndefined(value: Record<string, unknown>): Record<string, unknown>;
221
+ declare function ensureDefaults<T extends Partial<R>, R extends object = Required<T>>(options: T | undefined, defaults: R): R & T;
222
+
223
+ type AssertErrorMessageInput = string | Error | (() => string);
224
+ type Constructable = Function;
225
+ type JSPrimitiveTypes = "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function";
226
+ declare function assert(condition: boolean, error: AssertErrorMessageInput): asserts condition;
227
+ declare function assertTypeOf<T>(obj: T, expected: JSPrimitiveTypes): asserts obj;
228
+ declare function assertInstanceOf<T>(obj: T, expected: Constructable): asserts obj;
229
+ declare function isEmpty<T extends object>(obj?: T): obj is undefined;
230
+ declare function isEmpty<T>(array?: T[]): array is undefined;
231
+ declare function some<T extends object>(obj?: T): obj is T;
232
+ declare function some<T>(array?: T[]): array is T[];
233
+ declare function isTruthy<T>(value?: T): value is NonNullable<T>;
234
+ declare function isFalsy<T>(value?: T): value is undefined;
235
+ declare function isUndefined(v: unknown): v is undefined;
236
+ declare function isDefined<T>(v: T | undefined): v is T;
237
+ declare function hasKey(o: unknown, key: PropertyKey): boolean;
238
+
239
+ declare function concatBytes(...arrays: Uint8Array[]): Uint8Array;
240
+ declare function isHex(value?: string): boolean;
241
+ /**
242
+ * Get hex string size in bytes
243
+ * @param hex
244
+ * @returns the byte size if the hex string
245
+ */
246
+ declare function byteSizeOf(hex: string): number;
247
+
248
+ type CollectionAddOptions = {
249
+ index?: number;
250
+ };
251
+ declare abstract class Collection<InternalType, ExternalType> implements Iterable<InternalType> {
252
+ protected readonly _items: InternalType[];
253
+ constructor();
254
+ protected _isIndexOutOfBounds(index: number): boolean;
255
+ [Symbol.iterator](): Iterator<InternalType>;
256
+ get length(): number;
257
+ get isEmpty(): boolean;
258
+ at(index: number): InternalType;
259
+ add(items: OneOrMore<ExternalType>, options?: CollectionAddOptions): number;
260
+ abstract remove(item: unknown): number;
261
+ protected abstract _map(item: ExternalType | InternalType): InternalType;
262
+ protected _addOne(item: InternalType | ExternalType, options?: CollectionAddOptions): number;
263
+ protected _addOneOrMore(items: OneOrMore<ExternalType>, options?: CollectionAddOptions): number;
264
+ toArray(): InternalType[];
265
+ reduce<U>(callbackFn: (accumulator: U, currentValue: InternalType, currentIndex: number, array: InternalType[]) => U, initialValue: U): U;
266
+ }
267
+
268
+ export { AddressType, Amount, AmountType, AssertErrorMessageInput, Base58String, Box, BoxCandidate, BoxId, BoxSummary, BuildOutputType, Collection, CollectionAddOptions, ContextExtension, DataInput, EIP12UnsignedDataInput, EIP12UnsignedInput, EIP12UnsignedTransaction, ErgoTreeHeaderFlag, ErgoTreeHex, FilterPredicate, HexString, MinimalBoxAmounts, Network, NewToken, NonMandatoryRegisters, OneOrMore, ProverResult, SignedInput, SignedTransaction, SortingDirection, SortingSelector, TokenAmount, TokenId, TokenTargetAmount, TransactionId, UTxOFilterParams, UnsignedInput, UnsignedTransaction, _0n, _10n, _127n, _128n, _1n, _63n, _7n, areEqual, areEqualBy, areRegistersDenselyPacked, assert, assertInstanceOf, assertTypeOf, at, byteSizeOf, chunk, clearUndefined, concatBytes, decimalize, depthOf, endsWith, ensureBigInt, ensureDefaults, ensureUTxOBigInt, ergoTreeHeaderFlags, first, hasDuplicates, hasDuplicatesBy, hasKey, isDefined, isEmpty, isFalsy, isHex, isTruthy, isUndefined, last, max, min, orderBy, percent, some, startsWith, sumBy, undecimalize, uniq, uniqBy, utxoDiff, utxoFilter, utxoSum };