@bsv/sdk 1.0.29 → 1.0.31

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 (329) hide show
  1. package/dist/cjs/mod.js +25 -0
  2. package/dist/cjs/mod.js.map +1 -0
  3. package/dist/cjs/package.json +49 -0
  4. package/dist/cjs/src/compat/BSM.js +77 -0
  5. package/dist/cjs/src/compat/BSM.js.map +1 -0
  6. package/dist/cjs/src/compat/ECIES.js +512 -0
  7. package/dist/cjs/src/compat/ECIES.js.map +1 -0
  8. package/dist/cjs/src/compat/HD.js +344 -0
  9. package/dist/cjs/src/compat/HD.js.map +1 -0
  10. package/dist/cjs/src/compat/Mnemonic.js +298 -0
  11. package/dist/cjs/src/compat/Mnemonic.js.map +1 -0
  12. package/dist/cjs/src/compat/bip-39-wordlist-en.js +2057 -0
  13. package/dist/cjs/src/compat/bip-39-wordlist-en.js.map +1 -0
  14. package/dist/cjs/src/compat/index.js +37 -0
  15. package/dist/cjs/src/compat/index.js.map +1 -0
  16. package/dist/cjs/src/messages/EncryptedMessage.js +69 -0
  17. package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -0
  18. package/dist/cjs/src/messages/SignedMessage.js +85 -0
  19. package/dist/cjs/src/messages/SignedMessage.js.map +1 -0
  20. package/dist/cjs/src/messages/index.js +29 -0
  21. package/dist/cjs/src/messages/index.js.map +1 -0
  22. package/dist/cjs/src/primitives/AESGCM.js +384 -0
  23. package/dist/cjs/src/primitives/AESGCM.js.map +1 -0
  24. package/dist/cjs/src/primitives/BasePoint.js +19 -0
  25. package/dist/cjs/src/primitives/BasePoint.js.map +1 -0
  26. package/dist/cjs/src/primitives/BigNumber.js +4272 -0
  27. package/dist/cjs/src/primitives/BigNumber.js.map +1 -0
  28. package/dist/cjs/src/primitives/Curve.js +1126 -0
  29. package/dist/cjs/src/primitives/Curve.js.map +1 -0
  30. package/dist/cjs/src/primitives/DRBG.js +99 -0
  31. package/dist/cjs/src/primitives/DRBG.js.map +1 -0
  32. package/dist/cjs/src/primitives/ECDSA.js +169 -0
  33. package/dist/cjs/src/primitives/ECDSA.js.map +1 -0
  34. package/dist/cjs/src/primitives/Hash.js +1387 -0
  35. package/dist/cjs/src/primitives/Hash.js.map +1 -0
  36. package/dist/cjs/src/primitives/JacobianPoint.js +400 -0
  37. package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -0
  38. package/dist/cjs/src/primitives/K256.js +111 -0
  39. package/dist/cjs/src/primitives/K256.js.map +1 -0
  40. package/dist/cjs/src/primitives/Mersenne.js +118 -0
  41. package/dist/cjs/src/primitives/Mersenne.js.map +1 -0
  42. package/dist/cjs/src/primitives/MontgomoryMethod.js +150 -0
  43. package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -0
  44. package/dist/cjs/src/primitives/Point.js +819 -0
  45. package/dist/cjs/src/primitives/Point.js.map +1 -0
  46. package/dist/cjs/src/primitives/PrivateKey.js +246 -0
  47. package/dist/cjs/src/primitives/PrivateKey.js.map +1 -0
  48. package/dist/cjs/src/primitives/PublicKey.js +168 -0
  49. package/dist/cjs/src/primitives/PublicKey.js.map +1 -0
  50. package/dist/cjs/src/primitives/Random.js +57 -0
  51. package/dist/cjs/src/primitives/Random.js.map +1 -0
  52. package/dist/cjs/src/primitives/ReductionContext.js +490 -0
  53. package/dist/cjs/src/primitives/ReductionContext.js.map +1 -0
  54. package/dist/cjs/src/primitives/Signature.js +357 -0
  55. package/dist/cjs/src/primitives/Signature.js.map +1 -0
  56. package/dist/cjs/src/primitives/SymmetricKey.js +82 -0
  57. package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -0
  58. package/dist/cjs/src/primitives/TransactionSignature.js +172 -0
  59. package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -0
  60. package/dist/cjs/src/primitives/index.js +51 -0
  61. package/dist/cjs/src/primitives/index.js.map +1 -0
  62. package/dist/cjs/src/primitives/utils.js +624 -0
  63. package/dist/cjs/src/primitives/utils.js.map +1 -0
  64. package/dist/cjs/src/script/LockingScript.js +35 -0
  65. package/dist/cjs/src/script/LockingScript.js.map +1 -0
  66. package/dist/cjs/src/script/OP.js +207 -0
  67. package/dist/cjs/src/script/OP.js.map +1 -0
  68. package/dist/cjs/src/script/Script.js +435 -0
  69. package/dist/cjs/src/script/Script.js.map +1 -0
  70. package/dist/cjs/src/script/ScriptChunk.js +3 -0
  71. package/dist/cjs/src/script/ScriptChunk.js.map +1 -0
  72. package/dist/cjs/src/script/ScriptTemplate.js +3 -0
  73. package/dist/cjs/src/script/ScriptTemplate.js.map +1 -0
  74. package/dist/cjs/src/script/Spend.js +1252 -0
  75. package/dist/cjs/src/script/Spend.js.map +1 -0
  76. package/dist/cjs/src/script/UnlockingScript.js +35 -0
  77. package/dist/cjs/src/script/UnlockingScript.js.map +1 -0
  78. package/dist/cjs/src/script/index.js +32 -0
  79. package/dist/cjs/src/script/index.js.map +1 -0
  80. package/dist/cjs/src/script/templates/P2PKH.js +120 -0
  81. package/dist/cjs/src/script/templates/P2PKH.js.map +1 -0
  82. package/dist/cjs/src/script/templates/RPuzzle.js +125 -0
  83. package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -0
  84. package/dist/cjs/src/script/templates/index.js +11 -0
  85. package/dist/cjs/src/script/templates/index.js.map +1 -0
  86. package/dist/cjs/src/transaction/Broadcaster.js +3 -0
  87. package/dist/cjs/src/transaction/Broadcaster.js.map +1 -0
  88. package/dist/cjs/src/transaction/ChainTracker.js +3 -0
  89. package/dist/cjs/src/transaction/ChainTracker.js.map +1 -0
  90. package/dist/cjs/src/transaction/FeeModel.js +3 -0
  91. package/dist/cjs/src/transaction/FeeModel.js.map +1 -0
  92. package/dist/cjs/src/transaction/MerklePath.js +239 -0
  93. package/dist/cjs/src/transaction/MerklePath.js.map +1 -0
  94. package/dist/cjs/src/transaction/Transaction.js +616 -0
  95. package/dist/cjs/src/transaction/Transaction.js.map +1 -0
  96. package/dist/cjs/src/transaction/TransactionInput.js +3 -0
  97. package/dist/cjs/src/transaction/TransactionInput.js.map +1 -0
  98. package/dist/cjs/src/transaction/TransactionOutput.js +3 -0
  99. package/dist/cjs/src/transaction/TransactionOutput.js.map +1 -0
  100. package/dist/cjs/src/transaction/broadcasters/ARC.js +112 -0
  101. package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -0
  102. package/dist/cjs/src/transaction/broadcasters/index.js +9 -0
  103. package/dist/cjs/src/transaction/broadcasters/index.js.map +1 -0
  104. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +69 -0
  105. package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
  106. package/dist/cjs/src/transaction/fee-models/index.js +9 -0
  107. package/dist/cjs/src/transaction/fee-models/index.js.map +1 -0
  108. package/dist/cjs/src/transaction/index.js +11 -0
  109. package/dist/cjs/src/transaction/index.js.map +1 -0
  110. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  111. package/dist/esm/mod.js +9 -0
  112. package/dist/esm/mod.js.map +1 -0
  113. package/dist/esm/src/compat/BSM.js +45 -0
  114. package/dist/esm/src/compat/BSM.js.map +1 -0
  115. package/dist/esm/src/compat/ECIES.js +483 -0
  116. package/dist/esm/src/compat/ECIES.js.map +1 -0
  117. package/dist/esm/src/compat/HD.js +322 -0
  118. package/dist/esm/src/compat/HD.js.map +1 -0
  119. package/dist/esm/src/compat/Mnemonic.js +272 -0
  120. package/dist/esm/src/compat/Mnemonic.js.map +1 -0
  121. package/dist/esm/src/compat/bip-39-wordlist-en.js +2054 -0
  122. package/dist/esm/src/compat/bip-39-wordlist-en.js.map +1 -0
  123. package/dist/esm/src/compat/index.js +5 -0
  124. package/dist/esm/src/compat/index.js.map +1 -0
  125. package/dist/esm/src/messages/EncryptedMessage.js +61 -0
  126. package/dist/esm/src/messages/EncryptedMessage.js.map +1 -0
  127. package/dist/esm/src/messages/SignedMessage.js +77 -0
  128. package/dist/esm/src/messages/SignedMessage.js.map +1 -0
  129. package/dist/esm/src/messages/index.js +3 -0
  130. package/dist/esm/src/messages/index.js.map +1 -0
  131. package/dist/esm/src/primitives/AESGCM.js +371 -0
  132. package/dist/esm/src/primitives/AESGCM.js.map +1 -0
  133. package/dist/esm/src/primitives/BasePoint.js +16 -0
  134. package/dist/esm/src/primitives/BasePoint.js.map +1 -0
  135. package/dist/esm/src/primitives/BigNumber.js +4307 -0
  136. package/dist/esm/src/primitives/BigNumber.js.map +1 -0
  137. package/dist/esm/src/primitives/Curve.js +1141 -0
  138. package/dist/esm/src/primitives/Curve.js.map +1 -0
  139. package/dist/esm/src/primitives/DRBG.js +98 -0
  140. package/dist/esm/src/primitives/DRBG.js.map +1 -0
  141. package/dist/esm/src/primitives/ECDSA.js +161 -0
  142. package/dist/esm/src/primitives/ECDSA.js.map +1 -0
  143. package/dist/esm/src/primitives/Hash.js +1391 -0
  144. package/dist/esm/src/primitives/Hash.js.map +1 -0
  145. package/dist/esm/src/primitives/JacobianPoint.js +398 -0
  146. package/dist/esm/src/primitives/JacobianPoint.js.map +1 -0
  147. package/dist/esm/src/primitives/K256.js +105 -0
  148. package/dist/esm/src/primitives/K256.js.map +1 -0
  149. package/dist/esm/src/primitives/Mersenne.js +117 -0
  150. package/dist/esm/src/primitives/Mersenne.js.map +1 -0
  151. package/dist/esm/src/primitives/MontgomoryMethod.js +149 -0
  152. package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -0
  153. package/dist/esm/src/primitives/Point.js +816 -0
  154. package/dist/esm/src/primitives/Point.js.map +1 -0
  155. package/dist/esm/src/primitives/PrivateKey.js +240 -0
  156. package/dist/esm/src/primitives/PrivateKey.js.map +1 -0
  157. package/dist/esm/src/primitives/PublicKey.js +162 -0
  158. package/dist/esm/src/primitives/PublicKey.js.map +1 -0
  159. package/dist/esm/src/primitives/Random.js +56 -0
  160. package/dist/esm/src/primitives/Random.js.map +1 -0
  161. package/dist/esm/src/primitives/ReductionContext.js +486 -0
  162. package/dist/esm/src/primitives/ReductionContext.js.map +1 -0
  163. package/dist/esm/src/primitives/Signature.js +360 -0
  164. package/dist/esm/src/primitives/Signature.js.map +1 -0
  165. package/dist/esm/src/primitives/SymmetricKey.js +76 -0
  166. package/dist/esm/src/primitives/SymmetricKey.js.map +1 -0
  167. package/dist/esm/src/primitives/TransactionSignature.js +144 -0
  168. package/dist/esm/src/primitives/TransactionSignature.js.map +1 -0
  169. package/dist/esm/src/primitives/index.js +13 -0
  170. package/dist/esm/src/primitives/index.js.map +1 -0
  171. package/dist/esm/src/primitives/utils.js +609 -0
  172. package/dist/esm/src/primitives/utils.js.map +1 -0
  173. package/dist/esm/src/script/LockingScript.js +29 -0
  174. package/dist/esm/src/script/LockingScript.js.map +1 -0
  175. package/dist/esm/src/script/OP.js +205 -0
  176. package/dist/esm/src/script/OP.js.map +1 -0
  177. package/dist/esm/src/script/Script.js +430 -0
  178. package/dist/esm/src/script/Script.js.map +1 -0
  179. package/dist/esm/src/script/ScriptChunk.js +2 -0
  180. package/dist/esm/src/script/ScriptChunk.js.map +1 -0
  181. package/dist/esm/src/script/ScriptTemplate.js +2 -0
  182. package/dist/esm/src/script/ScriptTemplate.js.map +1 -0
  183. package/dist/esm/src/script/Spend.js +1240 -0
  184. package/dist/esm/src/script/Spend.js.map +1 -0
  185. package/dist/esm/src/script/UnlockingScript.js +29 -0
  186. package/dist/esm/src/script/UnlockingScript.js.map +1 -0
  187. package/dist/esm/src/script/index.js +7 -0
  188. package/dist/esm/src/script/index.js.map +1 -0
  189. package/dist/esm/src/script/templates/P2PKH.js +113 -0
  190. package/dist/esm/src/script/templates/P2PKH.js.map +1 -0
  191. package/dist/esm/src/script/templates/RPuzzle.js +119 -0
  192. package/dist/esm/src/script/templates/RPuzzle.js.map +1 -0
  193. package/dist/esm/src/script/templates/index.js +3 -0
  194. package/dist/esm/src/script/templates/index.js.map +1 -0
  195. package/dist/esm/src/transaction/Broadcaster.js +2 -0
  196. package/dist/esm/src/transaction/Broadcaster.js.map +1 -0
  197. package/dist/esm/src/transaction/ChainTracker.js +2 -0
  198. package/dist/esm/src/transaction/ChainTracker.js.map +1 -0
  199. package/dist/esm/src/transaction/FeeModel.js +2 -0
  200. package/dist/esm/src/transaction/FeeModel.js.map +1 -0
  201. package/dist/esm/src/transaction/MerklePath.js +237 -0
  202. package/dist/esm/src/transaction/MerklePath.js.map +1 -0
  203. package/dist/esm/src/transaction/Transaction.js +617 -0
  204. package/dist/esm/src/transaction/Transaction.js.map +1 -0
  205. package/dist/esm/src/transaction/TransactionInput.js +2 -0
  206. package/dist/esm/src/transaction/TransactionInput.js.map +1 -0
  207. package/dist/esm/src/transaction/TransactionOutput.js +2 -0
  208. package/dist/esm/src/transaction/TransactionOutput.js.map +1 -0
  209. package/dist/esm/src/transaction/broadcasters/ARC.js +111 -0
  210. package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -0
  211. package/dist/esm/src/transaction/broadcasters/index.js +2 -0
  212. package/dist/esm/src/transaction/broadcasters/index.js.map +1 -0
  213. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +71 -0
  214. package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
  215. package/dist/esm/src/transaction/fee-models/index.js +2 -0
  216. package/dist/esm/src/transaction/fee-models/index.js.map +1 -0
  217. package/dist/esm/src/transaction/index.js +3 -0
  218. package/dist/esm/src/transaction/index.js.map +1 -0
  219. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  220. package/dist/types/mod.d.ts +9 -0
  221. package/dist/types/mod.d.ts.map +1 -0
  222. package/dist/types/src/compat/BSM.d.ts +28 -0
  223. package/dist/types/src/compat/BSM.d.ts.map +1 -0
  224. package/dist/types/src/compat/ECIES.d.ts +62 -0
  225. package/dist/types/src/compat/ECIES.d.ts.map +1 -0
  226. package/dist/types/src/compat/HD.d.ts +131 -0
  227. package/dist/types/src/compat/HD.d.ts.map +1 -0
  228. package/dist/types/src/compat/Mnemonic.d.ts +132 -0
  229. package/dist/types/src/compat/Mnemonic.d.ts.map +1 -0
  230. package/dist/types/src/compat/bip-39-wordlist-en.d.ts +5 -0
  231. package/dist/types/src/compat/bip-39-wordlist-en.d.ts.map +1 -0
  232. package/dist/types/src/compat/index.d.ts +5 -0
  233. package/dist/types/src/compat/index.d.ts.map +1 -0
  234. package/dist/types/src/messages/EncryptedMessage.d.ts +20 -0
  235. package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -0
  236. package/dist/types/src/messages/SignedMessage.d.ts +21 -0
  237. package/dist/types/src/messages/SignedMessage.d.ts.map +1 -0
  238. package/dist/types/src/messages/index.d.ts +3 -0
  239. package/dist/types/src/messages/index.d.ts.map +1 -0
  240. package/dist/types/src/primitives/AESGCM.d.ts +14 -0
  241. package/dist/types/src/primitives/AESGCM.d.ts.map +1 -0
  242. package/dist/types/src/primitives/BasePoint.d.ts +22 -0
  243. package/dist/types/src/primitives/BasePoint.d.ts.map +1 -0
  244. package/dist/types/src/primitives/BigNumber.d.ts +1895 -0
  245. package/dist/types/src/primitives/BigNumber.d.ts.map +1 -0
  246. package/dist/types/src/primitives/Curve.d.ts +55 -0
  247. package/dist/types/src/primitives/Curve.d.ts.map +1 -0
  248. package/dist/types/src/primitives/DRBG.d.ts +54 -0
  249. package/dist/types/src/primitives/DRBG.d.ts.map +1 -0
  250. package/dist/types/src/primitives/ECDSA.d.ts +39 -0
  251. package/dist/types/src/primitives/ECDSA.d.ts.map +1 -0
  252. package/dist/types/src/primitives/Hash.d.ts +450 -0
  253. package/dist/types/src/primitives/Hash.d.ts.map +1 -0
  254. package/dist/types/src/primitives/JacobianPoint.d.ts +164 -0
  255. package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -0
  256. package/dist/types/src/primitives/K256.d.ts +53 -0
  257. package/dist/types/src/primitives/K256.d.ts.map +1 -0
  258. package/dist/types/src/primitives/Mersenne.d.ts +72 -0
  259. package/dist/types/src/primitives/Mersenne.d.ts.map +1 -0
  260. package/dist/types/src/primitives/MontgomoryMethod.d.ts +96 -0
  261. package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +1 -0
  262. package/dist/types/src/primitives/Point.d.ts +303 -0
  263. package/dist/types/src/primitives/Point.d.ts.map +1 -0
  264. package/dist/types/src/primitives/PrivateKey.d.ts +174 -0
  265. package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -0
  266. package/dist/types/src/primitives/PublicKey.d.ts +120 -0
  267. package/dist/types/src/primitives/PublicKey.d.ts.map +1 -0
  268. package/dist/types/src/primitives/Random.d.ts +14 -0
  269. package/dist/types/src/primitives/Random.d.ts.map +1 -0
  270. package/dist/types/src/primitives/ReductionContext.d.ts +308 -0
  271. package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -0
  272. package/dist/types/src/primitives/Signature.d.ts +162 -0
  273. package/dist/types/src/primitives/Signature.d.ts.map +1 -0
  274. package/dist/types/src/primitives/SymmetricKey.d.ts +55 -0
  275. package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -0
  276. package/dist/types/src/primitives/TransactionSignature.d.ts +36 -0
  277. package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -0
  278. package/dist/types/src/primitives/index.d.ts +13 -0
  279. package/dist/types/src/primitives/index.d.ts.map +1 -0
  280. package/dist/types/src/primitives/utils.d.ts +124 -0
  281. package/dist/types/src/primitives/utils.d.ts.map +1 -0
  282. package/dist/types/src/script/LockingScript.d.ts +25 -0
  283. package/dist/types/src/script/LockingScript.d.ts.map +1 -0
  284. package/dist/types/src/script/OP.d.ts +193 -0
  285. package/dist/types/src/script/OP.d.ts.map +1 -0
  286. package/dist/types/src/script/Script.d.ts +148 -0
  287. package/dist/types/src/script/Script.d.ts.map +1 -0
  288. package/dist/types/src/script/ScriptChunk.d.ts +8 -0
  289. package/dist/types/src/script/ScriptChunk.d.ts.map +1 -0
  290. package/dist/types/src/script/ScriptTemplate.d.ts +33 -0
  291. package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -0
  292. package/dist/types/src/script/Spend.d.ts +103 -0
  293. package/dist/types/src/script/Spend.d.ts.map +1 -0
  294. package/dist/types/src/script/UnlockingScript.d.ts +25 -0
  295. package/dist/types/src/script/UnlockingScript.d.ts.map +1 -0
  296. package/dist/types/src/script/index.d.ts +8 -0
  297. package/dist/types/src/script/index.d.ts.map +1 -0
  298. package/dist/types/src/script/templates/P2PKH.d.ts +40 -0
  299. package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -0
  300. package/dist/types/src/script/templates/RPuzzle.d.ts +47 -0
  301. package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -0
  302. package/dist/types/src/script/templates/index.d.ts +3 -0
  303. package/dist/types/src/script/templates/index.d.ts.map +1 -0
  304. package/dist/types/src/transaction/Broadcaster.d.ts +39 -0
  305. package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -0
  306. package/dist/types/src/transaction/ChainTracker.d.ts +23 -0
  307. package/dist/types/src/transaction/ChainTracker.d.ts.map +1 -0
  308. package/dist/types/src/transaction/FeeModel.d.ts +12 -0
  309. package/dist/types/src/transaction/FeeModel.d.ts.map +1 -0
  310. package/dist/types/src/transaction/MerklePath.d.ts +91 -0
  311. package/dist/types/src/transaction/MerklePath.d.ts.map +1 -0
  312. package/dist/types/src/transaction/Transaction.d.ts +215 -0
  313. package/dist/types/src/transaction/Transaction.d.ts.map +1 -0
  314. package/dist/types/src/transaction/TransactionInput.d.ts +63 -0
  315. package/dist/types/src/transaction/TransactionInput.d.ts.map +1 -0
  316. package/dist/types/src/transaction/TransactionOutput.d.ts +36 -0
  317. package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -0
  318. package/dist/types/src/transaction/broadcasters/ARC.d.ts +28 -0
  319. package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -0
  320. package/dist/types/src/transaction/broadcasters/index.d.ts +2 -0
  321. package/dist/types/src/transaction/broadcasters/index.d.ts.map +1 -0
  322. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +26 -0
  323. package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -0
  324. package/dist/types/src/transaction/fee-models/index.d.ts +2 -0
  325. package/dist/types/src/transaction/fee-models/index.d.ts.map +1 -0
  326. package/dist/types/src/transaction/index.d.ts +7 -0
  327. package/dist/types/src/transaction/index.d.ts.map +1 -0
  328. package/dist/types/tsconfig.types.tsbuildinfo +1 -0
  329. package/package.json +1 -1
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const BigNumber_js_1 = __importDefault(require("./BigNumber.js"));
7
+ const K256_js_1 = __importDefault(require("./K256.js"));
8
+ /**
9
+ * A base reduction engine that provides several arithmetic operations over
10
+ * big numbers under a modulus context. It's particularly suitable for
11
+ * calculations required in cryptography algorithms and encoding schemas.
12
+ *
13
+ * @class ReductionContext
14
+ *
15
+ * @property prime - The prime number utilised in the reduction context, typically an instance of Mersenne class.
16
+ * @property m - The modulus used for reduction operations.
17
+ */
18
+ class ReductionContext {
19
+ /**
20
+ * Constructs a new ReductionContext.
21
+ *
22
+ * @constructor
23
+ * @param m - A BigNumber representing the modulus, or 'k256' to create a context for Koblitz curve.
24
+ *
25
+ * @example
26
+ * new ReductionContext(new BigNumber(11));
27
+ * new ReductionContext('k256');
28
+ */
29
+ constructor(m) {
30
+ if (m === 'k256') {
31
+ const prime = new K256_js_1.default();
32
+ this.m = prime.p;
33
+ this.prime = prime;
34
+ }
35
+ else {
36
+ this.assert(m.gtn(1), 'modulus must be greater than 1');
37
+ this.m = m;
38
+ this.prime = null;
39
+ }
40
+ }
41
+ /**
42
+ * Asserts that given value is truthy. Throws an Error with a provided message
43
+ * if the value is falsy.
44
+ *
45
+ * @private
46
+ * @param val - The value to be checked.
47
+ * @param msg - The error message to be thrown if the value is falsy.
48
+ *
49
+ * @example
50
+ * this.assert(1 < 2, '1 is not less than 2');
51
+ * this.assert(2 < 1, '2 is less than 1'); // throws an Error with message '2 is less than 1'
52
+ */
53
+ assert(val, msg = 'Assertion failed') {
54
+ if (!val)
55
+ throw new Error(msg);
56
+ }
57
+ /**
58
+ * Verifies that a BigNumber is positive and red. Throws an error if these
59
+ * conditions are not met.
60
+ *
61
+ * @param a - The BigNumber to be verified.
62
+ *
63
+ * @example
64
+ * this.verify1(new BigNumber(10).toRed());
65
+ * this.verify1(new BigNumber(-10).toRed()); //throws an Error
66
+ * this.verify1(new BigNumber(10)); //throws an Error
67
+ */
68
+ verify1(a) {
69
+ this.assert(a.negative === 0, 'red works only with positives');
70
+ this.assert(a.red, 'red works only with red numbers');
71
+ }
72
+ /**
73
+ * Verifies that two BigNumbers are both positive and red. Also checks
74
+ * that they have the same reduction context. Throws an error if these
75
+ * conditions are not met.
76
+ *
77
+ * @param a - The first BigNumber to be verified.
78
+ * @param b - The second BigNumber to be verified.
79
+ *
80
+ * @example
81
+ * this.verify2(new BigNumber(10).toRed(this), new BigNumber(20).toRed(this));
82
+ * this.verify2(new BigNumber(-10).toRed(this), new BigNumber(20).toRed(this)); //throws an Error
83
+ * this.verify2(new BigNumber(10).toRed(this), new BigNumber(20)); //throws an Error
84
+ */
85
+ verify2(a, b) {
86
+ this.assert((a.negative | b.negative) === 0, 'red works only with positives');
87
+ this.assert((a.red != null) && a.red === b.red, 'red works only with red numbers');
88
+ }
89
+ /**
90
+ * Performs an in-place reduction of the given BigNumber by the modulus of the reduction context, 'm'.
91
+ *
92
+ * @method imod
93
+ *
94
+ * @param a - BigNumber to be reduced.
95
+ *
96
+ * @returns Returns the reduced result.
97
+ *
98
+ * @example
99
+ * const context = new ReductionContext(new BigNumber(7));
100
+ * context.imod(new BigNumber(19)); // Returns 5
101
+ */
102
+ imod(a) {
103
+ if (this.prime != null)
104
+ return this.prime.ireduce(a).forceRed(this);
105
+ BigNumber_js_1.default.move(a, a.umod(this.m).forceRed(this));
106
+ return a;
107
+ }
108
+ /**
109
+ * Negates a BigNumber in the context of the modulus.
110
+ *
111
+ * @method neg
112
+ *
113
+ * @param a - BigNumber to negate.
114
+ *
115
+ * @returns Returns the negation of 'a' in the reduction context.
116
+ *
117
+ * @example
118
+ * const context = new ReductionContext(new BigNumber(7));
119
+ * context.neg(new BigNumber(3)); // Returns 4
120
+ */
121
+ neg(a) {
122
+ if (a.isZero()) {
123
+ return a.clone();
124
+ }
125
+ return this.m.sub(a).forceRed(this);
126
+ }
127
+ /**
128
+ * Performs the addition operation on two BigNumbers in the reduction context.
129
+ *
130
+ * @method add
131
+ *
132
+ * @param a - First BigNumber to add.
133
+ * @param b - Second BigNumber to add.
134
+ *
135
+ * @returns Returns the result of 'a + b' in the reduction context.
136
+ *
137
+ * @example
138
+ * const context = new ReductionContext(new BigNumber(5));
139
+ * context.add(new BigNumber(2), new BigNumber(4)); // Returns 1
140
+ */
141
+ add(a, b) {
142
+ this.verify2(a, b);
143
+ const res = a.add(b);
144
+ if (res.cmp(this.m) >= 0) {
145
+ res.isub(this.m);
146
+ }
147
+ return res.forceRed(this);
148
+ }
149
+ /**
150
+ * Performs an in-place addition operation on two BigNumbers in the reduction context
151
+ * in order to avoid creating a new BigNumber, it modifies the first one with the result.
152
+ *
153
+ * @method iadd
154
+ *
155
+ * @param a - First BigNumber to add.
156
+ * @param b - Second BigNumber to add.
157
+ *
158
+ * @returns Returns the modified 'a' after addition with 'b' in the reduction context.
159
+ *
160
+ * @example
161
+ * const context = new ReductionContext(new BigNumber(5));
162
+ * const a = new BigNumber(2);
163
+ * context.iadd(a, new BigNumber(4)); // Modifies 'a' to be 1
164
+ */
165
+ iadd(a, b) {
166
+ this.verify2(a, b);
167
+ const res = a.iadd(b);
168
+ if (res.cmp(this.m) >= 0) {
169
+ res.isub(this.m);
170
+ }
171
+ return res;
172
+ }
173
+ /**
174
+ * Subtracts one BigNumber from another BigNumber in the reduction context.
175
+ *
176
+ * @method sub
177
+ *
178
+ * @param a - BigNumber to be subtracted from.
179
+ * @param b - BigNumber to subtract.
180
+ *
181
+ * @returns Returns the result of 'a - b' in the reduction context.
182
+ *
183
+ * @example
184
+ * const context = new ReductionContext(new BigNumber(7));
185
+ * context.sub(new BigNumber(3), new BigNumber(2)); // Returns 1
186
+ */
187
+ sub(a, b) {
188
+ this.verify2(a, b);
189
+ const res = a.sub(b);
190
+ if (res.cmpn(0) < 0) {
191
+ res.iadd(this.m);
192
+ }
193
+ return res.forceRed(this);
194
+ }
195
+ /**
196
+ * Performs in-place subtraction of one BigNumber from another in the reduction context,
197
+ * it modifies the first BigNumber with the result.
198
+ *
199
+ * @method isub
200
+ *
201
+ * @param a - BigNumber to be subtracted from.
202
+ * @param b - BigNumber to subtract.
203
+ *
204
+ * @returns Returns the modified 'a' after subtraction of 'b' in the reduction context.
205
+ *
206
+ * @example
207
+ * const context = new ReductionContext(new BigNumber(5));
208
+ * const a = new BigNumber(4);
209
+ * context.isub(a, new BigNumber(2)); // Modifies 'a' to be 2
210
+ */
211
+ isub(a, b) {
212
+ this.verify2(a, b);
213
+ const res = a.isub(b);
214
+ if (res.cmpn(0) < 0) {
215
+ res.iadd(this.m);
216
+ }
217
+ return res;
218
+ }
219
+ /**
220
+ * Performs bitwise shift left operation on a BigNumber in the reduction context.
221
+ *
222
+ * @method shl
223
+ *
224
+ * @param a - BigNumber to perform shift on.
225
+ * @param num - The number of positions to shift.
226
+ *
227
+ * @returns Returns the result of shifting 'a' left by 'num' positions in the reduction context.
228
+ *
229
+ * @example
230
+ * const context = new ReductionContext(new BigNumber(32));
231
+ * context.shl(new BigNumber(4), 2); // Returns 16
232
+ */
233
+ shl(a, num) {
234
+ this.verify1(a);
235
+ return this.imod(a.ushln(num));
236
+ }
237
+ /**
238
+ * Performs in-place multiplication of two BigNumbers in the reduction context,
239
+ * modifying the first BigNumber with the result.
240
+ *
241
+ * @method imul
242
+ *
243
+ * @param a - First BigNumber to multiply.
244
+ * @param b - Second BigNumber to multiply.
245
+ *
246
+ * @returns Returns the modified 'a' after multiplication with 'b' in the reduction context.
247
+ *
248
+ * @example
249
+ * const context = new ReductionContext(new BigNumber(7));
250
+ * const a = new BigNumber(3);
251
+ * context.imul(a, new BigNumber(2)); // Modifies 'a' to be 6
252
+ */
253
+ imul(a, b) {
254
+ this.verify2(a, b);
255
+ return this.imod(a.imul(b));
256
+ }
257
+ /**
258
+ * Multiplies two BigNumbers in the reduction context.
259
+ *
260
+ * @method mul
261
+ *
262
+ * @param a - First BigNumber to multiply.
263
+ * @param b - Second BigNumber to multiply.
264
+ *
265
+ * @returns Returns the result of 'a * b' in the reduction context.
266
+ *
267
+ * @example
268
+ * const context = new ReductionContext(new BigNumber(7));
269
+ * context.mul(new BigNumber(3), new BigNumber(2)); // Returns 6
270
+ */
271
+ mul(a, b) {
272
+ this.verify2(a, b);
273
+ return this.imod(a.mul(b));
274
+ }
275
+ /**
276
+ * Calculates the square of a BigNumber in the reduction context,
277
+ * modifying the original BigNumber with the result.
278
+ *
279
+ * @method isqr
280
+ *
281
+ * @param a - BigNumber to be squared.
282
+ *
283
+ * @returns Returns the squared 'a' in the reduction context.
284
+ *
285
+ * @example
286
+ * const context = new ReductionContext(new BigNumber(7));
287
+ * const a = new BigNumber(3);
288
+ * context.isqr(a); // Modifies 'a' to be 2 (9 % 7 = 2)
289
+ */
290
+ isqr(a) {
291
+ return this.imul(a, a.clone());
292
+ }
293
+ /**
294
+ * Calculates the square of a BigNumber in the reduction context.
295
+ *
296
+ * @method sqr
297
+ *
298
+ * @param a - BigNumber to be squared.
299
+ *
300
+ * @returns Returns the result of 'a^2' in the reduction context.
301
+ *
302
+ * @example
303
+ * const context = new ReductionContext(new BigNumber(7));
304
+ * context.sqr(new BigNumber(3)); // Returns 2 (9 % 7 = 2)
305
+ */
306
+ sqr(a) {
307
+ return this.mul(a, a);
308
+ }
309
+ /**
310
+ * Calculates the square root of a BigNumber in the reduction context.
311
+ *
312
+ * @method sqrt
313
+ *
314
+ * @param a - The BigNumber to calculate the square root of.
315
+ *
316
+ * @returns Returns the square root of 'a' in the reduction context.
317
+ *
318
+ * @example
319
+ * const context = new ReductionContext(new BigNumber(9));
320
+ * context.sqrt(new BigNumber(4)); // Returns 2
321
+ */
322
+ sqrt(a) {
323
+ if (a.isZero())
324
+ return a.clone();
325
+ const mod3 = this.m.andln(3);
326
+ this.assert(mod3 % 2 === 1);
327
+ // Fast case
328
+ if (mod3 === 3) {
329
+ const pow = this.m.add(new BigNumber_js_1.default(1)).iushrn(2);
330
+ return this.pow(a, pow);
331
+ }
332
+ // Tonelli-Shanks algorithm (Totally unoptimized and slow)
333
+ //
334
+ // Find Q and S, that Q * 2 ^ S = (P - 1)
335
+ const q = this.m.subn(1);
336
+ let s = 0;
337
+ while (!q.isZero() && q.andln(1) === 0) {
338
+ s++;
339
+ q.iushrn(1);
340
+ }
341
+ this.assert(!q.isZero());
342
+ const one = new BigNumber_js_1.default(1).toRed(this);
343
+ const nOne = one.redNeg();
344
+ // Find quadratic non-residue
345
+ // NOTE: Max is such because of generalized Riemann hypothesis.
346
+ const lpow = this.m.subn(1).iushrn(1);
347
+ const zl = this.m.bitLength();
348
+ const z = new BigNumber_js_1.default(2 * zl * zl).toRed(this);
349
+ while (this.pow(z, lpow).cmp(nOne) !== 0) {
350
+ z.redIAdd(nOne);
351
+ }
352
+ let c = this.pow(z, q);
353
+ let r = this.pow(a, q.addn(1).iushrn(1));
354
+ let t = this.pow(a, q);
355
+ let m = s;
356
+ while (t.cmp(one) !== 0) {
357
+ let tmp = t;
358
+ let i = 0;
359
+ for (; tmp.cmp(one) !== 0; i++) {
360
+ tmp = tmp.redSqr();
361
+ }
362
+ this.assert(i < m);
363
+ const b = this.pow(c, new BigNumber_js_1.default(1).iushln(m - i - 1));
364
+ r = r.redMul(b);
365
+ c = b.redSqr();
366
+ t = t.redMul(c);
367
+ m = i;
368
+ }
369
+ return r;
370
+ }
371
+ /**
372
+ * Calculates the multiplicative inverse of a BigNumber in the reduction context.
373
+ *
374
+ * @method invm
375
+ *
376
+ * @param a - The BigNumber to find the multiplicative inverse of.
377
+ *
378
+ * @returns Returns the multiplicative inverse of 'a' in the reduction context.
379
+ *
380
+ * @example
381
+ * const context = new ReductionContext(new BigNumber(11));
382
+ * context.invm(new BigNumber(3)); // Returns 4 (3*4 mod 11 = 1)
383
+ */
384
+ invm(a) {
385
+ const inv = a._invmp(this.m);
386
+ if (inv.negative !== 0) {
387
+ inv.negative = 0;
388
+ return this.imod(inv).redNeg();
389
+ }
390
+ else {
391
+ return this.imod(inv);
392
+ }
393
+ }
394
+ /**
395
+ * Raises a BigNumber to a power in the reduction context.
396
+ *
397
+ * @method pow
398
+ *
399
+ * @param a - The BigNumber to be raised to a power.
400
+ * @param num - The power to raise the BigNumber to.
401
+ *
402
+ * @returns Returns the result of 'a' raised to the power of 'num' in the reduction context.
403
+ *
404
+ * @example
405
+ * const context = new ReductionContext(new BigNumber(7));
406
+ * context.pow(new BigNumber(3), new BigNumber(2)); // Returns 2 (3^2 % 7)
407
+ */
408
+ pow(a, num) {
409
+ if (num.isZero())
410
+ return new BigNumber_js_1.default(1).toRed(this);
411
+ if (num.cmpn(1) === 0)
412
+ return a.clone();
413
+ const windowSize = 4;
414
+ const wnd = new Array(1 << windowSize);
415
+ wnd[0] = new BigNumber_js_1.default(1).toRed(this);
416
+ wnd[1] = a;
417
+ let i = 2;
418
+ for (; i < wnd.length; i++) {
419
+ wnd[i] = this.mul(wnd[i - 1], a);
420
+ }
421
+ let res = wnd[0];
422
+ let current = 0;
423
+ let currentLen = 0;
424
+ let start = num.bitLength() % 26;
425
+ if (start === 0) {
426
+ start = 26;
427
+ }
428
+ for (i = num.length - 1; i >= 0; i--) {
429
+ const word = num.words[i];
430
+ for (let j = start - 1; j >= 0; j--) {
431
+ const bit = (word >> j) & 1;
432
+ if (res !== wnd[0]) {
433
+ res = this.sqr(res);
434
+ }
435
+ if (bit === 0 && current === 0) {
436
+ currentLen = 0;
437
+ continue;
438
+ }
439
+ current <<= 1;
440
+ current |= bit;
441
+ currentLen++;
442
+ if (currentLen !== windowSize && (i !== 0 || j !== 0))
443
+ continue;
444
+ res = this.mul(res, wnd[current]);
445
+ currentLen = 0;
446
+ current = 0;
447
+ }
448
+ start = 26;
449
+ }
450
+ return res;
451
+ }
452
+ /**
453
+ * Converts a BigNumber to its equivalent in the reduction context.
454
+ *
455
+ * @method convertTo
456
+ *
457
+ * @param num - The BigNumber to convert to the reduction context.
458
+ *
459
+ * @returns Returns the converted BigNumber compatible with the reduction context.
460
+ *
461
+ * @example
462
+ * const context = new ReductionContext(new BigNumber(7));
463
+ * context.convertTo(new BigNumber(8)); // Returns 1 (8 % 7)
464
+ */
465
+ convertTo(num) {
466
+ const r = num.umod(this.m);
467
+ return r === num ? r.clone() : r;
468
+ }
469
+ /**
470
+ * Converts a BigNumber from reduction context to its regular form.
471
+ *
472
+ * @method convertFrom
473
+ *
474
+ * @param num - The BigNumber to convert from the reduction context.
475
+ *
476
+ * @returns Returns the converted BigNumber in its regular form.
477
+ *
478
+ * @example
479
+ * const context = new ReductionContext(new BigNumber(7));
480
+ * const a = context.convertTo(new BigNumber(8)); // 'a' is now 1 in the reduction context
481
+ * context.convertFrom(a); // Returns 1
482
+ */
483
+ convertFrom(num) {
484
+ const res = num.clone();
485
+ res.red = null;
486
+ return res;
487
+ }
488
+ }
489
+ exports.default = ReductionContext;
490
+ //# sourceMappingURL=ReductionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReductionContext.js","sourceRoot":"","sources":["../../../../src/primitives/ReductionContext.ts"],"names":[],"mappings":"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"}