@aeternity/aepp-sdk 13.2.2 → 13.3.0

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 (494) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/bin/aesophia_cli +0 -0
  4. package/bin/aesophia_cli_8 +0 -0
  5. package/dist/aepp-sdk.browser-script.js +1 -1
  6. package/dist/aepp-sdk.browser-script.js.map +1 -1
  7. package/dist/aepp-sdk.browser.js +1 -1
  8. package/dist/aepp-sdk.browser.js.map +1 -1
  9. package/dist/aepp-sdk.js +9171 -7086
  10. package/dist/aepp-sdk.js.map +1 -1
  11. package/es/AeSdk.d.ts +3 -0
  12. package/es/AeSdk.mjs +12 -12
  13. package/es/AeSdk.mjs.map +1 -1
  14. package/es/AeSdkAepp.d.ts +0 -1
  15. package/es/AeSdkAepp.mjs +12 -16
  16. package/es/AeSdkAepp.mjs.map +1 -1
  17. package/es/AeSdkBase.d.ts +61 -6
  18. package/es/AeSdkBase.mjs +150 -69
  19. package/es/AeSdkBase.mjs.map +1 -1
  20. package/es/AeSdkMethods.d.ts +19 -7
  21. package/es/AeSdkMethods.mjs +39 -38
  22. package/es/AeSdkMethods.mjs.map +1 -1
  23. package/es/AeSdkWallet.mjs +86 -55
  24. package/es/AeSdkWallet.mjs.map +1 -1
  25. package/es/Middleware.mjs +31 -27
  26. package/es/Middleware.mjs.map +1 -1
  27. package/es/MiddlewareSubscriber.mjs +5 -14
  28. package/es/MiddlewareSubscriber.mjs.map +1 -1
  29. package/es/Node.d.ts +10 -2
  30. package/es/Node.mjs +53 -54
  31. package/es/Node.mjs.map +1 -1
  32. package/es/account/Base.d.ts +39 -3
  33. package/es/account/Base.mjs +35 -1
  34. package/es/account/Base.mjs.map +1 -1
  35. package/es/account/Generalized.d.ts +2 -0
  36. package/es/account/Generalized.mjs +15 -6
  37. package/es/account/Generalized.mjs.map +1 -1
  38. package/es/account/Ledger.d.ts +2 -0
  39. package/es/account/Ledger.mjs +14 -5
  40. package/es/account/Ledger.mjs.map +1 -1
  41. package/es/account/LedgerFactory.mjs +4 -6
  42. package/es/account/LedgerFactory.mjs.map +1 -1
  43. package/es/account/Memory.d.ts +15 -4
  44. package/es/account/Memory.mjs +96 -31
  45. package/es/account/Memory.mjs.map +1 -1
  46. package/es/account/Rpc.d.ts +16 -5
  47. package/es/account/Rpc.mjs +94 -21
  48. package/es/account/Rpc.mjs.map +1 -1
  49. package/es/aens.d.ts +17 -44
  50. package/es/aens.mjs +32 -71
  51. package/es/aens.mjs.map +1 -1
  52. package/es/aepp-wallet-communication/connection/Browser.mjs +3 -4
  53. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  54. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
  55. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +7 -5
  56. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  57. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +8 -9
  58. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  59. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +7 -7
  60. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  61. package/es/aepp-wallet-communication/rpc/types.d.ts +14 -0
  62. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  63. package/es/aepp-wallet-communication/schema.d.ts +2 -0
  64. package/es/aepp-wallet-communication/schema.mjs +2 -0
  65. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  66. package/es/aepp-wallet-communication/wallet-detector.mjs +4 -5
  67. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  68. package/es/apis/compiler/compiler.mjs.map +1 -1
  69. package/es/apis/compiler/models/index.d.ts +1 -0
  70. package/es/apis/compiler/models/index.mjs.map +1 -1
  71. package/es/apis/compiler/models/mappers.mjs +13 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  73. package/es/apis/compiler/models/parameters.mjs.map +1 -1
  74. package/es/apis/middleware/middleware.d.ts +23 -5
  75. package/es/apis/middleware/middleware.mjs +114 -18
  76. package/es/apis/middleware/middleware.mjs.map +1 -1
  77. package/es/apis/middleware/models/index.d.ts +164 -15
  78. package/es/apis/middleware/models/index.mjs +53 -3
  79. package/es/apis/middleware/models/index.mjs.map +1 -1
  80. package/es/apis/middleware/models/mappers.d.ts +8 -1
  81. package/es/apis/middleware/models/mappers.mjs +376 -3
  82. package/es/apis/middleware/models/mappers.mjs.map +1 -1
  83. package/es/apis/middleware/models/parameters.d.ts +6 -3
  84. package/es/apis/middleware/models/parameters.mjs +38 -11
  85. package/es/apis/middleware/models/parameters.mjs.map +1 -1
  86. package/es/apis/node/models/index.d.ts +66 -2
  87. package/es/apis/node/models/index.mjs.map +1 -1
  88. package/es/apis/node/models/mappers.d.ts +5 -1
  89. package/es/apis/node/models/mappers.mjs +229 -7
  90. package/es/apis/node/models/mappers.mjs.map +1 -1
  91. package/es/apis/node/models/parameters.d.ts +2 -2
  92. package/es/apis/node/models/parameters.mjs +2 -2
  93. package/es/apis/node/models/parameters.mjs.map +1 -1
  94. package/es/apis/node/node.d.ts +24 -3
  95. package/es/apis/node/node.mjs +135 -3
  96. package/es/apis/node/node.mjs.map +1 -1
  97. package/es/chain.d.ts +14 -44
  98. package/es/chain.mjs +125 -219
  99. package/es/chain.mjs.map +1 -1
  100. package/es/channel/Base.d.ts +3 -47
  101. package/es/channel/Base.mjs +21 -54
  102. package/es/channel/Base.mjs.map +1 -1
  103. package/es/channel/Contract.d.ts +16 -25
  104. package/es/channel/Contract.mjs +39 -63
  105. package/es/channel/Contract.mjs.map +1 -1
  106. package/es/channel/Spend.d.ts +0 -8
  107. package/es/channel/Spend.mjs +17 -29
  108. package/es/channel/Spend.mjs.map +1 -1
  109. package/es/channel/handlers.mjs +1 -1
  110. package/es/channel/handlers.mjs.map +1 -1
  111. package/es/channel/internal.d.ts +104 -5
  112. package/es/channel/internal.mjs +26 -34
  113. package/es/channel/internal.mjs.map +1 -1
  114. package/es/contract/Contract.d.ts +9 -1
  115. package/es/contract/Contract.mjs +67 -73
  116. package/es/contract/Contract.mjs.map +1 -1
  117. package/es/contract/compiler/Base.d.ts +14 -8
  118. package/es/contract/compiler/Base.mjs.map +1 -1
  119. package/es/contract/compiler/Cli.d.ts +5 -9
  120. package/es/contract/compiler/Cli.mjs +45 -23
  121. package/es/contract/compiler/Cli.mjs.map +1 -1
  122. package/es/contract/compiler/Cli8.d.ts +13 -0
  123. package/es/contract/compiler/Cli8.mjs +22 -0
  124. package/es/contract/compiler/Cli8.mjs.map +1 -0
  125. package/es/contract/compiler/Http.d.ts +3 -9
  126. package/es/contract/compiler/Http.mjs +28 -16
  127. package/es/contract/compiler/Http.mjs.map +1 -1
  128. package/es/contract/compiler/HttpNode.d.ts +2 -5
  129. package/es/contract/compiler/HttpNode.mjs.map +1 -1
  130. package/es/contract/delegation-signature.d.ts +2 -1
  131. package/es/contract/delegation-signature.mjs +18 -14
  132. package/es/contract/delegation-signature.mjs.map +1 -1
  133. package/es/contract/ga.d.ts +1 -2
  134. package/es/contract/ga.mjs +23 -25
  135. package/es/contract/ga.mjs.map +1 -1
  136. package/es/deprecated.d.ts +38 -0
  137. package/es/deprecated.mjs +45 -0
  138. package/es/deprecated.mjs.map +1 -1
  139. package/es/index-browser.d.ts +10 -5
  140. package/es/index-browser.mjs +9 -5
  141. package/es/index-browser.mjs.map +1 -1
  142. package/es/index.d.ts +1 -0
  143. package/es/index.mjs +1 -0
  144. package/es/index.mjs.map +1 -1
  145. package/es/oracle.d.ts +6 -37
  146. package/es/oracle.mjs +32 -66
  147. package/es/oracle.mjs.map +1 -1
  148. package/es/send-transaction.d.ts +53 -0
  149. package/es/send-transaction.mjs +109 -0
  150. package/es/send-transaction.mjs.map +1 -0
  151. package/es/spend.d.ts +4 -3
  152. package/es/spend.mjs +6 -1
  153. package/es/spend.mjs.map +1 -1
  154. package/es/tx/builder/common.d.ts +29 -0
  155. package/es/tx/builder/common.mjs +42 -0
  156. package/es/tx/builder/common.mjs.map +1 -0
  157. package/es/tx/builder/constants.d.ts +4 -4
  158. package/es/tx/builder/constants.mjs +6 -15
  159. package/es/tx/builder/constants.mjs.map +1 -1
  160. package/es/tx/builder/delegation/index.d.ts +20 -0
  161. package/es/tx/builder/delegation/index.mjs +24 -0
  162. package/es/tx/builder/delegation/index.mjs.map +1 -0
  163. package/es/tx/builder/delegation/schema.d.ts +130 -0
  164. package/es/tx/builder/delegation/schema.generated.d.ts +141 -0
  165. package/es/tx/builder/delegation/schema.generated.mjs +2 -0
  166. package/es/tx/builder/delegation/schema.generated.mjs.map +1 -0
  167. package/es/tx/builder/delegation/schema.mjs +54 -0
  168. package/es/tx/builder/delegation/schema.mjs.map +1 -0
  169. package/es/tx/builder/field-types/abi-version.mjs +8 -11
  170. package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
  171. package/es/tx/builder/field-types/address.mjs +1 -4
  172. package/es/tx/builder/field-types/address.mjs.map +1 -1
  173. package/es/tx/builder/field-types/coin-amount.d.ts +2 -2
  174. package/es/tx/builder/field-types/coin-amount.mjs +6 -6
  175. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  176. package/es/tx/builder/field-types/ct-version.mjs +3 -4
  177. package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
  178. package/es/tx/builder/field-types/entry.mjs +7 -13
  179. package/es/tx/builder/field-types/entry.mjs.map +1 -1
  180. package/es/tx/builder/field-types/fee.d.ts +19 -11
  181. package/es/tx/builder/field-types/fee.mjs +56 -38
  182. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  183. package/es/tx/builder/field-types/gas-limit.mjs +13 -15
  184. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  185. package/es/tx/builder/field-types/gas-price.d.ts +10 -2
  186. package/es/tx/builder/field-types/gas-price.mjs +52 -3
  187. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  188. package/es/tx/builder/field-types/index.d.ts +31 -29
  189. package/es/tx/builder/field-types/index.mjs +31 -29
  190. package/es/tx/builder/field-types/index.mjs.map +1 -1
  191. package/es/tx/builder/field-types/map.mjs +20 -31
  192. package/es/tx/builder/field-types/map.mjs.map +1 -1
  193. package/es/tx/builder/field-types/mptree.mjs +14 -29
  194. package/es/tx/builder/field-types/mptree.mjs.map +1 -1
  195. package/es/tx/builder/field-types/name-fee.d.ts +1 -1
  196. package/es/tx/builder/field-types/name-fee.mjs +1 -1
  197. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  198. package/es/tx/builder/field-types/nonce.d.ts +1 -0
  199. package/es/tx/builder/field-types/nonce.mjs +2 -0
  200. package/es/tx/builder/field-types/nonce.mjs.map +1 -1
  201. package/es/tx/builder/field-types/pointers.mjs +4 -7
  202. package/es/tx/builder/field-types/pointers.mjs.map +1 -1
  203. package/es/tx/builder/field-types/pointers2.d.ts +23 -0
  204. package/es/tx/builder/field-types/pointers2.mjs +65 -0
  205. package/es/tx/builder/field-types/pointers2.mjs.map +1 -0
  206. package/es/tx/builder/field-types/query-fee.d.ts +19 -0
  207. package/es/tx/builder/field-types/query-fee.mjs +20 -0
  208. package/es/tx/builder/field-types/query-fee.mjs.map +1 -0
  209. package/es/tx/builder/field-types/ttl.d.ts +9 -1
  210. package/es/tx/builder/field-types/ttl.mjs +19 -8
  211. package/es/tx/builder/field-types/ttl.mjs.map +1 -1
  212. package/es/tx/builder/field-types/with-default.d.ts +7 -0
  213. package/es/tx/builder/field-types/with-default.mjs +9 -0
  214. package/es/tx/builder/field-types/with-default.mjs.map +1 -0
  215. package/es/tx/builder/field-types/with-formatting.d.ts +7 -0
  216. package/es/tx/builder/field-types/with-formatting.mjs +9 -0
  217. package/es/tx/builder/field-types/with-formatting.mjs.map +1 -0
  218. package/es/tx/builder/field-types/wrapped.mjs +6 -8
  219. package/es/tx/builder/field-types/wrapped.mjs.map +1 -1
  220. package/es/tx/builder/helpers.d.ts +2 -2
  221. package/es/tx/builder/helpers.mjs +12 -21
  222. package/es/tx/builder/helpers.mjs.map +1 -1
  223. package/es/tx/builder/index.d.ts +17 -10
  224. package/es/tx/builder/index.mjs +39 -65
  225. package/es/tx/builder/index.mjs.map +1 -1
  226. package/es/tx/builder/schema.d.ts +478 -257
  227. package/es/tx/builder/schema.generated.d.ts +39 -3
  228. package/es/tx/builder/schema.generated.mjs.map +1 -1
  229. package/es/tx/builder/schema.mjs +48 -36
  230. package/es/tx/builder/schema.mjs.map +1 -1
  231. package/es/tx/execution-cost.d.ts +6 -5
  232. package/es/tx/execution-cost.mjs +16 -17
  233. package/es/tx/execution-cost.mjs.map +1 -1
  234. package/es/tx/transaction-signer.mjs +1 -4
  235. package/es/tx/transaction-signer.mjs.map +1 -1
  236. package/es/tx/validator.mjs +61 -42
  237. package/es/tx/validator.mjs.map +1 -1
  238. package/es/utils/amount-formatter.mjs +15 -22
  239. package/es/utils/amount-formatter.mjs.map +1 -1
  240. package/es/utils/autorest.d.ts +2 -3
  241. package/es/utils/autorest.mjs +40 -24
  242. package/es/utils/autorest.mjs.map +1 -1
  243. package/es/utils/bytes.mjs +1 -2
  244. package/es/utils/bytes.mjs.map +1 -1
  245. package/es/utils/crypto.d.ts +8 -4
  246. package/es/utils/crypto.mjs +17 -13
  247. package/es/utils/crypto.mjs.map +1 -1
  248. package/es/utils/errors.d.ts +6 -0
  249. package/es/utils/errors.mjs +12 -6
  250. package/es/utils/errors.mjs.map +1 -1
  251. package/es/utils/hd-wallet.d.ts +2 -0
  252. package/es/utils/hd-wallet.mjs +6 -5
  253. package/es/utils/hd-wallet.mjs.map +1 -1
  254. package/es/utils/json-big.mjs +2 -10
  255. package/es/utils/json-big.mjs.map +1 -1
  256. package/es/utils/jwt.d.ts +53 -0
  257. package/es/utils/jwt.mjs +120 -0
  258. package/es/utils/jwt.mjs.map +1 -0
  259. package/es/utils/keystore.d.ts +6 -2
  260. package/es/utils/keystore.mjs +8 -16
  261. package/es/utils/keystore.mjs.map +1 -1
  262. package/es/utils/typed-data.mjs +1 -0
  263. package/es/utils/typed-data.mjs.map +1 -1
  264. package/es/utils/wrap-proxy.d.ts +2 -0
  265. package/es/utils/wrap-proxy.mjs +15 -0
  266. package/es/utils/wrap-proxy.mjs.map +1 -0
  267. package/package.json +57 -51
  268. package/src/AeSdk.ts +3 -0
  269. package/src/AeSdkAepp.ts +0 -1
  270. package/src/AeSdkBase.ts +97 -10
  271. package/src/AeSdkMethods.ts +37 -33
  272. package/src/AeSdkWallet.ts +22 -3
  273. package/src/Middleware.ts +16 -8
  274. package/src/MiddlewareSubscriber.ts +1 -1
  275. package/src/Node.ts +37 -18
  276. package/src/account/Base.ts +62 -3
  277. package/src/account/Generalized.ts +10 -0
  278. package/src/account/Ledger.ts +10 -0
  279. package/src/account/Memory.ts +83 -9
  280. package/src/account/Rpc.ts +69 -6
  281. package/src/aens.ts +35 -56
  282. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +3 -0
  283. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +2 -2
  284. package/src/aepp-wallet-communication/rpc/RpcClient.ts +4 -2
  285. package/src/aepp-wallet-communication/rpc/types.ts +13 -0
  286. package/src/aepp-wallet-communication/schema.ts +2 -0
  287. package/src/apis/compiler/compiler.ts +93 -93
  288. package/src/apis/compiler/models/index.ts +1 -0
  289. package/src/apis/compiler/models/mappers.ts +178 -165
  290. package/src/apis/compiler/models/parameters.ts +18 -18
  291. package/src/apis/middleware/middleware.ts +462 -341
  292. package/src/apis/middleware/models/index.ts +258 -56
  293. package/src/apis/middleware/models/mappers.ts +2357 -1919
  294. package/src/apis/middleware/models/parameters.ts +172 -142
  295. package/src/apis/node/models/index.ts +79 -2
  296. package/src/apis/node/models/mappers.ts +1529 -1302
  297. package/src/apis/node/models/parameters.ts +51 -51
  298. package/src/apis/node/node.ts +420 -275
  299. package/src/chain.ts +42 -128
  300. package/src/channel/Base.ts +14 -47
  301. package/src/channel/Contract.ts +18 -26
  302. package/src/channel/Spend.ts +0 -8
  303. package/src/channel/internal.ts +115 -13
  304. package/src/contract/Contract.ts +26 -8
  305. package/src/contract/compiler/Base.ts +15 -8
  306. package/src/contract/compiler/Cli.ts +37 -21
  307. package/src/contract/compiler/Cli8.ts +17 -0
  308. package/src/contract/compiler/Http.ts +24 -14
  309. package/src/contract/compiler/HttpNode.ts +2 -2
  310. package/src/contract/delegation-signature.ts +11 -5
  311. package/src/contract/ga.ts +4 -3
  312. package/src/deprecated.ts +36 -0
  313. package/src/index-browser.ts +14 -7
  314. package/src/index.ts +1 -0
  315. package/src/oracle.ts +11 -54
  316. package/src/send-transaction.ts +136 -0
  317. package/src/spend.ts +25 -11
  318. package/src/tx/builder/common.ts +74 -0
  319. package/src/tx/builder/constants.ts +6 -9
  320. package/src/tx/builder/delegation/index.ts +28 -0
  321. package/src/tx/builder/delegation/schema.generated.ts +143 -0
  322. package/src/tx/builder/delegation/schema.ts +61 -0
  323. package/src/tx/builder/field-types/coin-amount.ts +3 -2
  324. package/src/tx/builder/field-types/entry.ts +1 -4
  325. package/src/tx/builder/field-types/fee.ts +71 -43
  326. package/src/tx/builder/field-types/gas-limit.ts +4 -4
  327. package/src/tx/builder/field-types/gas-price.ts +58 -2
  328. package/src/tx/builder/field-types/index.ts +31 -59
  329. package/src/tx/builder/field-types/name-fee.ts +1 -1
  330. package/src/tx/builder/field-types/nonce.ts +7 -1
  331. package/src/tx/builder/field-types/pointers2.ts +62 -0
  332. package/src/tx/builder/field-types/query-fee.ts +25 -0
  333. package/src/tx/builder/field-types/ttl.ts +13 -3
  334. package/src/tx/builder/field-types/with-default.ts +18 -0
  335. package/src/tx/builder/field-types/with-formatting.ts +18 -0
  336. package/src/tx/builder/helpers.ts +2 -2
  337. package/src/tx/builder/index.ts +42 -59
  338. package/src/tx/builder/schema.generated.ts +39 -3
  339. package/src/tx/builder/schema.ts +55 -29
  340. package/src/tx/execution-cost.ts +6 -5
  341. package/src/tx/validator.ts +31 -5
  342. package/src/utils/autorest.ts +36 -27
  343. package/src/utils/crypto.ts +23 -13
  344. package/src/utils/errors.ts +10 -0
  345. package/src/utils/hd-wallet.ts +2 -0
  346. package/src/utils/jwt.ts +126 -0
  347. package/src/utils/keystore.ts +6 -2
  348. package/src/utils/wrap-proxy.ts +24 -0
  349. package/types-legacy/ts4.2/AeSdk.d.ts +3 -0
  350. package/types-legacy/ts4.2/AeSdkAepp.d.ts +0 -1
  351. package/types-legacy/ts4.2/AeSdkBase.d.ts +61 -6
  352. package/types-legacy/ts4.2/AeSdkMethods.d.ts +19 -7
  353. package/types-legacy/ts4.2/Node.d.ts +14 -1
  354. package/types-legacy/ts4.2/account/Base.d.ts +39 -3
  355. package/types-legacy/ts4.2/account/Generalized.d.ts +2 -0
  356. package/types-legacy/ts4.2/account/Ledger.d.ts +2 -0
  357. package/types-legacy/ts4.2/account/Memory.d.ts +15 -4
  358. package/types-legacy/ts4.2/account/Rpc.d.ts +16 -5
  359. package/types-legacy/ts4.2/aens.d.ts +17 -44
  360. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
  361. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +14 -0
  362. package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +2 -0
  363. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +1 -0
  364. package/types-legacy/ts4.2/apis/middleware/middleware.d.ts +23 -5
  365. package/types-legacy/ts4.2/apis/middleware/models/index.d.ts +164 -15
  366. package/types-legacy/ts4.2/apis/middleware/models/mappers.d.ts +8 -1
  367. package/types-legacy/ts4.2/apis/middleware/models/parameters.d.ts +6 -3
  368. package/types-legacy/ts4.2/apis/node/models/index.d.ts +66 -2
  369. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +5 -1
  370. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
  371. package/types-legacy/ts4.2/apis/node/node.d.ts +24 -3
  372. package/types-legacy/ts4.2/chain.d.ts +14 -44
  373. package/types-legacy/ts4.2/channel/Base.d.ts +3 -47
  374. package/types-legacy/ts4.2/channel/Contract.d.ts +16 -25
  375. package/types-legacy/ts4.2/channel/Spend.d.ts +0 -8
  376. package/types-legacy/ts4.2/channel/internal.d.ts +104 -5
  377. package/types-legacy/ts4.2/contract/Contract.d.ts +9 -1
  378. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +14 -8
  379. package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +5 -9
  380. package/types-legacy/ts4.2/contract/compiler/Cli8.d.ts +13 -0
  381. package/types-legacy/ts4.2/contract/compiler/Http.d.ts +3 -9
  382. package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +2 -5
  383. package/types-legacy/ts4.2/contract/delegation-signature.d.ts +2 -1
  384. package/types-legacy/ts4.2/contract/ga.d.ts +1 -2
  385. package/types-legacy/ts4.2/deprecated.d.ts +38 -0
  386. package/types-legacy/ts4.2/index-browser.d.ts +10 -5
  387. package/types-legacy/ts4.2/index.d.ts +1 -0
  388. package/types-legacy/ts4.2/oracle.d.ts +6 -37
  389. package/types-legacy/ts4.2/send-transaction.d.ts +53 -0
  390. package/types-legacy/ts4.2/spend.d.ts +4 -3
  391. package/types-legacy/ts4.2/tx/builder/common.d.ts +32 -0
  392. package/types-legacy/ts4.2/tx/builder/constants.d.ts +4 -4
  393. package/types-legacy/ts4.2/tx/builder/delegation/index.d.ts +20 -0
  394. package/types-legacy/ts4.2/tx/builder/delegation/schema.d.ts +136 -0
  395. package/types-legacy/ts4.2/tx/builder/delegation/schema.generated.d.ts +141 -0
  396. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +2 -2
  397. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +19 -11
  398. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +10 -2
  399. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +31 -29
  400. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -1
  401. package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +1 -0
  402. package/types-legacy/ts4.2/tx/builder/field-types/pointers2.d.ts +26 -0
  403. package/types-legacy/ts4.2/tx/builder/field-types/query-fee.d.ts +19 -0
  404. package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +9 -1
  405. package/types-legacy/ts4.2/tx/builder/field-types/with-default.d.ts +7 -0
  406. package/types-legacy/ts4.2/tx/builder/field-types/with-formatting.d.ts +7 -0
  407. package/types-legacy/ts4.2/tx/builder/helpers.d.ts +2 -2
  408. package/types-legacy/ts4.2/tx/builder/index.d.ts +17 -10
  409. package/types-legacy/ts4.2/tx/builder/schema.d.ts +482 -257
  410. package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +39 -3
  411. package/types-legacy/ts4.2/tx/execution-cost.d.ts +6 -5
  412. package/types-legacy/ts4.2/utils/autorest.d.ts +2 -3
  413. package/types-legacy/ts4.2/utils/crypto.d.ts +8 -4
  414. package/types-legacy/ts4.2/utils/errors.d.ts +6 -0
  415. package/types-legacy/ts4.2/utils/hd-wallet.d.ts +2 -0
  416. package/types-legacy/ts4.2/utils/jwt.d.ts +53 -0
  417. package/types-legacy/ts4.2/utils/keystore.d.ts +6 -2
  418. package/types-legacy/ts4.2/utils/wrap-proxy.d.ts +2 -0
  419. package/types-legacy/ts4.5/AeSdk.d.ts +3 -0
  420. package/types-legacy/ts4.5/AeSdkAepp.d.ts +0 -1
  421. package/types-legacy/ts4.5/AeSdkBase.d.ts +61 -6
  422. package/types-legacy/ts4.5/AeSdkMethods.d.ts +19 -7
  423. package/types-legacy/ts4.5/Node.d.ts +14 -1
  424. package/types-legacy/ts4.5/account/Base.d.ts +39 -3
  425. package/types-legacy/ts4.5/account/Generalized.d.ts +2 -0
  426. package/types-legacy/ts4.5/account/Ledger.d.ts +2 -0
  427. package/types-legacy/ts4.5/account/Memory.d.ts +15 -4
  428. package/types-legacy/ts4.5/account/Rpc.d.ts +16 -5
  429. package/types-legacy/ts4.5/aens.d.ts +17 -44
  430. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +3 -0
  431. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +14 -0
  432. package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +2 -0
  433. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +1 -0
  434. package/types-legacy/ts4.5/apis/middleware/middleware.d.ts +23 -5
  435. package/types-legacy/ts4.5/apis/middleware/models/index.d.ts +164 -15
  436. package/types-legacy/ts4.5/apis/middleware/models/mappers.d.ts +8 -1
  437. package/types-legacy/ts4.5/apis/middleware/models/parameters.d.ts +6 -3
  438. package/types-legacy/ts4.5/apis/node/models/index.d.ts +66 -2
  439. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +5 -1
  440. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
  441. package/types-legacy/ts4.5/apis/node/node.d.ts +24 -3
  442. package/types-legacy/ts4.5/chain.d.ts +14 -44
  443. package/types-legacy/ts4.5/channel/Base.d.ts +3 -47
  444. package/types-legacy/ts4.5/channel/Contract.d.ts +16 -25
  445. package/types-legacy/ts4.5/channel/Spend.d.ts +0 -8
  446. package/types-legacy/ts4.5/channel/internal.d.ts +104 -5
  447. package/types-legacy/ts4.5/contract/Contract.d.ts +9 -1
  448. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +14 -8
  449. package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +5 -9
  450. package/types-legacy/ts4.5/contract/compiler/Cli8.d.ts +13 -0
  451. package/types-legacy/ts4.5/contract/compiler/Http.d.ts +3 -9
  452. package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +2 -5
  453. package/types-legacy/ts4.5/contract/delegation-signature.d.ts +2 -1
  454. package/types-legacy/ts4.5/contract/ga.d.ts +1 -2
  455. package/types-legacy/ts4.5/deprecated.d.ts +38 -0
  456. package/types-legacy/ts4.5/index-browser.d.ts +10 -5
  457. package/types-legacy/ts4.5/index.d.ts +1 -0
  458. package/types-legacy/ts4.5/oracle.d.ts +6 -37
  459. package/types-legacy/ts4.5/send-transaction.d.ts +53 -0
  460. package/types-legacy/ts4.5/spend.d.ts +4 -3
  461. package/types-legacy/ts4.5/tx/builder/common.d.ts +32 -0
  462. package/types-legacy/ts4.5/tx/builder/constants.d.ts +4 -4
  463. package/types-legacy/ts4.5/tx/builder/delegation/index.d.ts +20 -0
  464. package/types-legacy/ts4.5/tx/builder/delegation/schema.d.ts +136 -0
  465. package/types-legacy/ts4.5/tx/builder/delegation/schema.generated.d.ts +141 -0
  466. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +2 -2
  467. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +19 -11
  468. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +10 -2
  469. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +31 -29
  470. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -1
  471. package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +1 -0
  472. package/types-legacy/ts4.5/tx/builder/field-types/pointers2.d.ts +26 -0
  473. package/types-legacy/ts4.5/tx/builder/field-types/query-fee.d.ts +19 -0
  474. package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +9 -1
  475. package/types-legacy/ts4.5/tx/builder/field-types/with-default.d.ts +7 -0
  476. package/types-legacy/ts4.5/tx/builder/field-types/with-formatting.d.ts +7 -0
  477. package/types-legacy/ts4.5/tx/builder/helpers.d.ts +2 -2
  478. package/types-legacy/ts4.5/tx/builder/index.d.ts +17 -10
  479. package/types-legacy/ts4.5/tx/builder/schema.d.ts +482 -257
  480. package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +39 -3
  481. package/types-legacy/ts4.5/tx/execution-cost.d.ts +6 -5
  482. package/types-legacy/ts4.5/utils/autorest.d.ts +2 -3
  483. package/types-legacy/ts4.5/utils/crypto.d.ts +8 -4
  484. package/types-legacy/ts4.5/utils/errors.d.ts +6 -0
  485. package/types-legacy/ts4.5/utils/hd-wallet.d.ts +2 -0
  486. package/types-legacy/ts4.5/utils/jwt.d.ts +53 -0
  487. package/types-legacy/ts4.5/utils/keystore.d.ts +6 -2
  488. package/types-legacy/ts4.5/utils/wrap-proxy.d.ts +2 -0
  489. package/es/tx/builder/field-types/deposit.d.ts +0 -15
  490. package/es/tx/builder/field-types/deposit.mjs +0 -18
  491. package/es/tx/builder/field-types/deposit.mjs.map +0 -1
  492. package/src/tx/builder/field-types/deposit.ts +0 -23
  493. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +0 -15
  494. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +0 -15
@@ -1 +1 @@
1
- {"version":3,"file":"validator.mjs","names":["RestError","hash","verify","ProtocolToVmAbi","Tag","buildTx","unpackTx","concatBuffers","isAccountNotFoundError","decode","Node","genAggressiveCacheGetResponsesPolicy","UnexpectedTsError","getTransactionSignerAddress","getExecutionCostUsingNode","validators","verifyTransactionInternal","tx","node","parentTxTypes","address","account","height","consensusProtocolVersion","nodeNetworkId","Promise","all","getAccountByPubkey","catch","error","id","balance","nonce","then","acc","getCurrentKeyBlockHeight","getNodeInfo","map","v","flat","verifyTransaction","transaction","nodeNotCached","$host","ignoreVersion","pipeline","clone","additionalPolicies","push","_ref","tag","SignedTx","encodedTx","signatures","length","prefix","_Buffer","from","includes","PayingForTx","join","txBinary","txWithNetworkId","txHashWithNetworkId","message","key","checkedKeys","_ref2","nestedTx","_ref3","ttl","_ref4","cost","_ref5","kind","GaMetaTx","_ref6","_ref7","_ref8","oracleCall","Oracle","OracleRegisterTx","contractCreate","ContractCreateTx","GaAttachTx","contractCall","ContractCallTx","type","protocol","ctVersion","abiVersion","vmVersion","JSON","stringify","_ref9","active","getContract","contractId","_error$response","response","bodyAsText","parse","reason"],"sources":["../../src/tx/validator.ts"],"sourcesContent":["import { RestError } from '@azure/core-rest-pipeline';\nimport { hash, verify } from '../utils/crypto';\nimport { TxUnpacked } from './builder/schema.generated';\nimport { CtVersion, ProtocolToVmAbi } from './builder/field-types/ct-version';\nimport { Tag, ConsensusProtocolVersion } from './builder/constants';\nimport { buildTx, unpackTx } from './builder';\nimport { concatBuffers, isAccountNotFoundError } from '../utils/other';\nimport { Encoded, decode } from '../utils/encoder';\nimport Node, { TransformNodeType } from '../Node';\nimport { Account } from '../apis/node';\nimport { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';\nimport { UnexpectedTsError } from '../utils/errors';\nimport getTransactionSignerAddress from './transaction-signer';\nimport { getExecutionCostUsingNode } from './execution-cost';\n\nexport interface ValidatorResult {\n message: string;\n key: string;\n checkedKeys: string[];\n}\n\ntype Validator = (\n tx: TxUnpacked,\n options: {\n // TODO: remove after fixing node types\n account: TransformNodeType<Account> & { id: Encoded.AccountAddress };\n nodeNetworkId: string;\n parentTxTypes: Tag[];\n node: Node;\n height: number;\n consensusProtocolVersion: ConsensusProtocolVersion;\n }\n) => ValidatorResult[] | Promise<ValidatorResult[]>;\n\nconst validators: Validator[] = [];\n\nasync function verifyTransactionInternal(\n tx: TxUnpacked,\n node: Node,\n parentTxTypes: Tag[],\n): Promise<ValidatorResult[]> {\n const address = getTransactionSignerAddress(buildTx(tx));\n const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([\n node.getAccountByPubkey(address)\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { id: address, balance: 0n, nonce: 0 };\n })\n // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537\n .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),\n node.getCurrentKeyBlockHeight(),\n node.getNodeInfo(),\n ]);\n\n return (await Promise.all(\n validators.map(async (v) => v(\n tx,\n {\n node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,\n },\n )),\n )).flat();\n}\n\n/**\n * Transaction Validator\n * This function validates some transaction properties,\n * to make sure it can be posted it to the chain\n * @category transaction builder\n * @param transaction - Base64Check-encoded transaction\n * @param nodeNotCached - Node to validate transaction against\n * @returns Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction(\n transaction: Parameters<typeof unpackTx>[0],\n nodeNotCached: Node,\n): Promise<ValidatorResult[]> {\n const node = new Node(nodeNotCached.$host, {\n ignoreVersion: true,\n pipeline: nodeNotCached.pipeline.clone(),\n additionalPolicies: [genAggressiveCacheGetResponsesPolicy()],\n });\n return verifyTransactionInternal(unpackTx(transaction), node, []);\n}\n\nvalidators.push(\n (tx, { account, nodeNetworkId, parentTxTypes }) => {\n if (tx.tag !== Tag.SignedTx) return [];\n const { encodedTx, signatures } = tx;\n if ((encodedTx ?? signatures) == null) return [];\n if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels\n const prefix = Buffer.from([\n nodeNetworkId,\n ...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],\n ].join('-'));\n const txBinary = decode(buildTx(encodedTx));\n const txWithNetworkId = concatBuffers([prefix, txBinary]);\n const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);\n if (verify(txWithNetworkId, signatures[0], account.id)\n || verify(txHashWithNetworkId, signatures[0], account.id)) return [];\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have'\n + ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures'],\n }];\n },\n async (tx, { node, parentTxTypes }) => {\n let nestedTx;\n if ('encodedTx' in tx) nestedTx = tx.encodedTx;\n if ('tx' in tx) nestedTx = tx.tx;\n if (nestedTx == null) return [];\n return verifyTransactionInternal(nestedTx, node, [...parentTxTypes, tx.tag]);\n },\n (tx, { height }) => {\n if (!('ttl' in tx)) return [];\n if (tx.ttl === 0 || tx.ttl >= height) return [];\n return [{\n message: `TTL ${tx.ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl'],\n }];\n },\n async (tx, { account, parentTxTypes, node }) => {\n if (parentTxTypes.length !== 0) return [];\n const cost = await getExecutionCostUsingNode(buildTx(tx), node).catch(() => 0n);\n if (cost <= account.balance) return [];\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee', 'gasLimit', 'gasPrice'],\n }];\n },\n (tx, { account }) => {\n let message;\n if (tx.tag === Tag.SignedTx && account.kind === 'generalized' && tx.signatures.length !== 0) {\n message = 'Generalized account can\\'t be used to generate SignedTx with signatures';\n }\n if (tx.tag === Tag.GaMetaTx && account.kind === 'basic') {\n message = 'Basic account can\\'t be used to generate GaMetaTx';\n }\n if (message == null) return [];\n return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];\n },\n // TODO: revert nonce check\n // TODO: ensure nonce valid when paying for own tx\n (tx, { consensusProtocolVersion }) => {\n const oracleCall = Tag.Oracle === tx.tag || Tag.OracleRegisterTx === tx.tag;\n const contractCreate = Tag.ContractCreateTx === tx.tag || Tag.GaAttachTx === tx.tag;\n const contractCall = Tag.ContractCallTx === tx.tag || Tag.GaMetaTx === tx.tag;\n const type = (oracleCall ? 'oracle-call' : null)\n ?? (contractCreate ? 'contract-create' : null)\n ?? (contractCall ? 'contract-call' : null);\n if (type == null) return [];\n const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as {\n abiVersion: readonly any[];\n vmVersion: readonly any[];\n };\n\n let ctVersion: Partial<CtVersion> | undefined;\n if ('abiVersion' in tx) ctVersion = { abiVersion: tx.abiVersion };\n if ('ctVersion' in tx) ctVersion = tx.ctVersion;\n if (ctVersion == null) throw new UnexpectedTsError();\n if (\n !protocol.abiVersion.includes(ctVersion.abiVersion)\n || (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))\n ) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion'],\n }];\n }\n return [];\n },\n async (tx, { node }) => {\n if (Tag.ContractCallTx !== tx.tag) return [];\n try {\n const { active } = await node.getContract(tx.contractId);\n if (active) return [];\n return [{\n message: `Contract ${tx.contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId'],\n }];\n } catch (error) {\n if (!(error instanceof RestError) || error.response?.bodyAsText == null) throw error;\n return [{\n message: JSON.parse(error.response.bodyAsText).reason, // TODO: use parsedBody instead\n key: 'ContractNotFound',\n checkedKeys: ['contractId'],\n }];\n }\n },\n);\n"],"mappings":"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"}
1
+ {"version":3,"file":"validator.mjs","names":["RestError","hash","isAddressValid","verify","ProtocolToVmAbi","Tag","ConsensusProtocolVersion","buildTx","unpackTx","concatBuffers","isAccountNotFoundError","Encoding","decode","Node","genAggressiveCacheGetResponsesPolicy","UnexpectedTsError","getTransactionSignerAddress","getExecutionCostUsingNode","validators","verifyTransactionInternal","tx","node","parentTxTypes","address","account","height","consensusProtocolVersion","nodeNetworkId","Promise","all","getAccountByPubkey","catch","error","id","balance","nonce","then","acc","getCurrentKeyBlockHeight","getNodeInfo","map","v","flat","verifyTransaction","transaction","nodeNotCached","$host","ignoreVersion","pipeline","clone","additionalPolicies","push","tag","SignedTx","encodedTx","signatures","length","prefix","_Buffer","from","includes","PayingForTx","join","txBinary","txWithNetworkId","txHashWithNetworkId","message","key","checkedKeys","nestedTx","ttl","cost","SpendTx","recipientId","Name","recipient","payable","kind","GaMetaTx","_ref","_ref2","oracleCall","OracleRegisterTx","contractCreate","ContractCreateTx","GaAttachTx","contractCall","ContractCallTx","type","protocol","ctVersion","abiVersion","vmVersion","JSON","stringify","contractId","startsWith","active","getContract","_error$response","response","bodyAsText","parse","reason","Ceres","ownerId"],"sources":["../../src/tx/validator.ts"],"sourcesContent":["import { RestError } from '@azure/core-rest-pipeline';\nimport { hash, isAddressValid, verify } from '../utils/crypto';\nimport { TxUnpacked } from './builder/schema.generated';\nimport { CtVersion, ProtocolToVmAbi } from './builder/field-types/ct-version';\nimport { Tag, ConsensusProtocolVersion } from './builder/constants';\nimport { buildTx, unpackTx } from './builder';\nimport { concatBuffers, isAccountNotFoundError } from '../utils/other';\nimport { Encoded, Encoding, decode } from '../utils/encoder';\nimport Node, { TransformNodeType } from '../Node';\nimport { Account } from '../apis/node';\nimport { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';\nimport { UnexpectedTsError } from '../utils/errors';\nimport getTransactionSignerAddress from './transaction-signer';\nimport { getExecutionCostUsingNode } from './execution-cost';\n\nexport interface ValidatorResult {\n message: string;\n key: string;\n checkedKeys: string[];\n}\n\ntype Validator = (\n tx: TxUnpacked,\n options: {\n // TODO: remove after fixing node types\n account: TransformNodeType<Account> & { id: Encoded.AccountAddress };\n nodeNetworkId: string;\n parentTxTypes: Tag[];\n node: Node;\n height: number;\n consensusProtocolVersion: ConsensusProtocolVersion;\n }\n) => ValidatorResult[] | Promise<ValidatorResult[]>;\n\nconst validators: Validator[] = [];\n\nasync function verifyTransactionInternal(\n tx: TxUnpacked,\n node: Node,\n parentTxTypes: Tag[],\n): Promise<ValidatorResult[]> {\n const address = getTransactionSignerAddress(buildTx(tx));\n const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([\n node.getAccountByPubkey(address)\n .catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return { id: address, balance: 0n, nonce: 0 };\n })\n // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537\n .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),\n node.getCurrentKeyBlockHeight(), // TODO: don't request height on each validation, use caching\n node.getNodeInfo(),\n ]);\n\n return (await Promise.all(\n validators.map(async (v) => v(\n tx,\n {\n node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,\n },\n )),\n )).flat();\n}\n\n/**\n * Transaction Validator\n * This function validates some transaction properties,\n * to make sure it can be posted it to the chain\n * @category transaction builder\n * @param transaction - Base64Check-encoded transaction\n * @param nodeNotCached - Node to validate transaction against\n * @returns Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction(\n transaction: Parameters<typeof unpackTx>[0],\n nodeNotCached: Node,\n): Promise<ValidatorResult[]> {\n const node = new Node(nodeNotCached.$host, {\n ignoreVersion: true,\n pipeline: nodeNotCached.pipeline.clone(),\n additionalPolicies: [genAggressiveCacheGetResponsesPolicy()],\n });\n return verifyTransactionInternal(unpackTx(transaction), node, []);\n}\n\nvalidators.push(\n (tx, { account, nodeNetworkId, parentTxTypes }) => {\n if (tx.tag !== Tag.SignedTx) return [];\n const { encodedTx, signatures } = tx;\n if ((encodedTx ?? signatures) == null) return [];\n if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels\n const prefix = Buffer.from([\n nodeNetworkId,\n ...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],\n ].join('-'));\n const txBinary = decode(buildTx(encodedTx));\n const txWithNetworkId = concatBuffers([prefix, txBinary]);\n const txHashWithNetworkId = concatBuffers([prefix, hash(txBinary)]);\n if (verify(txWithNetworkId, signatures[0], account.id)\n || verify(txHashWithNetworkId, signatures[0], account.id)) return [];\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have'\n + ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures'],\n }];\n },\n async (tx, { node, parentTxTypes }) => {\n let nestedTx;\n if ('encodedTx' in tx) nestedTx = tx.encodedTx;\n if ('tx' in tx) nestedTx = tx.tx;\n if (nestedTx == null) return [];\n return verifyTransactionInternal(nestedTx, node, [...parentTxTypes, tx.tag]);\n },\n (tx, { height }) => {\n if (!('ttl' in tx)) return [];\n if (tx.ttl === 0 || tx.ttl > height) return [];\n return [{\n message: `TTL ${tx.ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl'],\n }];\n },\n async (tx, { account, parentTxTypes, node }) => {\n if (parentTxTypes.length !== 0) return [];\n const cost = await getExecutionCostUsingNode(buildTx(tx), node).catch(() => 0n);\n if (cost <= account.balance) return [];\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee', 'gasLimit', 'gasPrice'],\n }];\n },\n async (tx, { node }) => {\n if (tx.tag !== Tag.SpendTx || isAddressValid(tx.recipientId, Encoding.Name)) return [];\n const recipient = await node.getAccountByPubkey(tx.recipientId).catch((error) => {\n if (!isAccountNotFoundError(error)) throw error;\n return null;\n });\n if (recipient == null || recipient.payable === true) return [];\n return [{\n message: 'Recipient account is not payable',\n key: 'RecipientAccountNotPayable',\n checkedKeys: ['recipientId'],\n }];\n },\n (tx, { account }) => {\n let message;\n if (tx.tag === Tag.SignedTx && account.kind === 'generalized' && tx.signatures.length !== 0) {\n message = 'Generalized account can\\'t be used to generate SignedTx with signatures';\n }\n if (tx.tag === Tag.GaMetaTx && account.kind === 'basic') {\n message = 'Basic account can\\'t be used to generate GaMetaTx';\n }\n if (message == null) return [];\n return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];\n },\n // TODO: revert nonce check\n // TODO: ensure nonce valid when paying for own tx\n (tx, { consensusProtocolVersion }) => {\n const oracleCall = Tag.OracleRegisterTx === tx.tag;\n const contractCreate = Tag.ContractCreateTx === tx.tag || Tag.GaAttachTx === tx.tag;\n const contractCall = Tag.ContractCallTx === tx.tag || Tag.GaMetaTx === tx.tag;\n const type = (oracleCall ? 'oracle-call' : null)\n ?? (contractCreate ? 'contract-create' : null)\n ?? (contractCall ? 'contract-call' : null);\n if (type == null) return [];\n const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as {\n abiVersion: readonly any[];\n vmVersion: readonly any[];\n };\n\n let ctVersion: Partial<CtVersion> | undefined;\n if ('abiVersion' in tx) ctVersion = { abiVersion: tx.abiVersion };\n if ('ctVersion' in tx) ctVersion = tx.ctVersion;\n if (ctVersion == null) throw new UnexpectedTsError();\n if (\n !protocol.abiVersion.includes(ctVersion.abiVersion)\n || (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))\n ) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(protocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion'],\n }];\n }\n return [];\n },\n async (tx, { node }) => {\n if (Tag.ContractCallTx !== tx.tag) return [];\n // TODO: remove after solving https://github.com/aeternity/aeternity/issues/3669\n if (tx.contractId.startsWith('nm_')) return [];\n try {\n const { active } = await node.getContract(tx.contractId);\n if (active) return [];\n return [{\n message: `Contract ${tx.contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId'],\n }];\n } catch (error) {\n if (!(error instanceof RestError) || error.response?.bodyAsText == null) throw error;\n return [{\n message: JSON.parse(error.response.bodyAsText).reason, // TODO: use parsedBody instead\n key: 'ContractNotFound',\n checkedKeys: ['contractId'],\n }];\n }\n },\n // TODO: move to fee field of tx builder after dropping Iris\n (tx, { consensusProtocolVersion }) => ((\n Tag.GaAttachTx === tx.tag\n && ConsensusProtocolVersion.Ceres === consensusProtocolVersion\n && tx.nonce !== 1\n ) ? [{\n message: `Account ${tx.ownerId} can't become generalized because it is already used`,\n key: 'AccountUsed',\n checkedKeys: ['nonce'],\n }]\n : []),\n);\n"],"mappings":"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"}
@@ -33,11 +33,10 @@ const DENOMINATION_MAGNITUDE = {
33
33
  * @param options.targetDenomination - target denomination,
34
34
  * can be ['ae', 'aettos']
35
35
  */
36
- export const formatAmount = (value, _ref) => {
37
- let {
38
- denomination = AE_AMOUNT_FORMATS.AETTOS,
39
- targetDenomination = AE_AMOUNT_FORMATS.AETTOS
40
- } = _ref;
36
+ export const formatAmount = (value, {
37
+ denomination = AE_AMOUNT_FORMATS.AETTOS,
38
+ targetDenomination = AE_AMOUNT_FORMATS.AETTOS
39
+ }) => {
41
40
  if (!isBigNumber(value)) throw new ArgumentError('value', 'a number', value);
42
41
  return new BigNumber(typeof value === 'bigint' ? value.toString() : value).shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination]).toFixed();
43
42
  };
@@ -48,15 +47,12 @@ export const formatAmount = (value, _ref) => {
48
47
  * @param options - options
49
48
  * @param options.denomination - denomination of amount, can be ['ae', 'aettos']
50
49
  */
51
- export const toAe = function (value) {
52
- let {
53
- denomination = AE_AMOUNT_FORMATS.AETTOS
54
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
55
- return formatAmount(value, {
56
- denomination,
57
- targetDenomination: AE_AMOUNT_FORMATS.AE
58
- });
59
- };
50
+ export const toAe = (value, {
51
+ denomination = AE_AMOUNT_FORMATS.AETTOS
52
+ } = {}) => formatAmount(value, {
53
+ denomination,
54
+ targetDenomination: AE_AMOUNT_FORMATS.AE
55
+ });
60
56
 
61
57
  /**
62
58
  * Convert amount to aettos
@@ -64,14 +60,11 @@ export const toAe = function (value) {
64
60
  * @param options - options
65
61
  * @param options.denomination - denomination of amount, can be ['ae', 'aettos']
66
62
  */
67
- export const toAettos = function (value) {
68
- let {
69
- denomination = AE_AMOUNT_FORMATS.AE
70
- } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
71
- return formatAmount(value, {
72
- denomination
73
- });
74
- };
63
+ export const toAettos = (value, {
64
+ denomination = AE_AMOUNT_FORMATS.AE
65
+ } = {}) => formatAmount(value, {
66
+ denomination
67
+ });
75
68
  const prefixes = [{
76
69
  name: 'exa',
77
70
  magnitude: 18
@@ -1 +1 @@
1
- {"version":3,"file":"amount-formatter.mjs","names":["BigNumber","isBigNumber","ArgumentError","AE_AMOUNT_FORMATS","DENOMINATION_MAGNITUDE","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","formatAmount","value","_ref","denomination","targetDenomination","toString","shiftedBy","toFixed","toAe","arguments","length","undefined","toAettos","prefixes","name","magnitude","getNearestPrefix","exponent","reduce","p","n","Math","abs","getLowerBoundPrefix","_prefixes$find","find","prefixedAmount","rawValue","_value$e","exp","e","v","precision","min"],"sources":["../../src/utils/amount-formatter.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { isBigNumber } from './bignumber';\nimport { ArgumentError } from './errors';\n\nexport enum AE_AMOUNT_FORMATS {\n AE = 'ae',\n MILI_AE = 'miliAE',\n MICRO_AE = 'microAE',\n NANO_AE = 'nanoAE',\n PICO_AE = 'picoAE',\n FEMTO_AE = 'femtoAE',\n AETTOS = 'aettos',\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nconst DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18,\n} as const;\n\n/**\n * Convert amount from one to other denomination\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n * @param options.targetDenomination - target denomination,\n * can be ['ae', 'aettos']\n */\nexport const formatAmount = (\n value: string | number | bigint | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS }:\n { denomination?: AE_AMOUNT_FORMATS; targetDenomination?: AE_AMOUNT_FORMATS },\n): string => {\n if (!isBigNumber(value)) throw new ArgumentError('value', 'a number', value);\n\n return new BigNumber(typeof value === 'bigint' ? value.toString() : value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed();\n};\n\n/**\n * Convert amount to AE\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE });\n\n/**\n * Convert amount to aettos\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination });\n\ninterface Prefix {\n name: string;\n magnitude: number;\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 },\n];\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p));\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find((p) => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1];\n\nexport const prefixedAmount = (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue);\n\n const exp = value.e ?? 0;\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp);\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed();\n return `${v}${name !== '' ? ' ' : ''}${name}`;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"amount-formatter.mjs","names":["BigNumber","isBigNumber","ArgumentError","AE_AMOUNT_FORMATS","DENOMINATION_MAGNITUDE","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","formatAmount","value","denomination","targetDenomination","toString","shiftedBy","toFixed","toAe","toAettos","prefixes","name","magnitude","getNearestPrefix","exponent","reduce","p","n","Math","abs","getLowerBoundPrefix","_prefixes$find","find","length","prefixedAmount","rawValue","_value$e","exp","e","v","precision","min"],"sources":["../../src/utils/amount-formatter.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { isBigNumber } from './bignumber';\nimport { ArgumentError } from './errors';\n\nexport enum AE_AMOUNT_FORMATS {\n AE = 'ae',\n MILI_AE = 'miliAE',\n MICRO_AE = 'microAE',\n NANO_AE = 'nanoAE',\n PICO_AE = 'picoAE',\n FEMTO_AE = 'femtoAE',\n AETTOS = 'aettos',\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nconst DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18,\n} as const;\n\n/**\n * Convert amount from one to other denomination\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n * @param options.targetDenomination - target denomination,\n * can be ['ae', 'aettos']\n */\nexport const formatAmount = (\n value: string | number | bigint | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS }:\n { denomination?: AE_AMOUNT_FORMATS; targetDenomination?: AE_AMOUNT_FORMATS },\n): string => {\n if (!isBigNumber(value)) throw new ArgumentError('value', 'a number', value);\n\n return new BigNumber(typeof value === 'bigint' ? value.toString() : value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed();\n};\n\n/**\n * Convert amount to AE\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE });\n\n/**\n * Convert amount to aettos\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination });\n\ninterface Prefix {\n name: string;\n magnitude: number;\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 },\n];\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p));\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find((p) => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1];\n\nexport const prefixedAmount = (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue);\n\n const exp = value.e ?? 0;\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp);\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed();\n return `${v}${name !== '' ? ' ' : ''}${name}`;\n};\n"],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import { PipelinePolicy } from '@azure/core-rest-pipeline';
2
- import { AdditionalPolicyConfig } from '@azure/core-client';
1
+ import { AdditionalPolicyConfig, OperationOptions } from '@azure/core-client';
3
2
  export declare const genRequestQueuesPolicy: () => AdditionalPolicyConfig;
4
3
  export declare const genCombineGetRequestsPolicy: () => AdditionalPolicyConfig;
5
4
  export declare const genAggressiveCacheGetResponsesPolicy: () => AdditionalPolicyConfig;
6
5
  export declare const genErrorFormatterPolicy: (getMessage: (b: any) => string) => AdditionalPolicyConfig;
7
- export declare const genVersionCheckPolicy: (name: string, ignorePath: string, versionPromise: Promise<string | Error>, geVersion: string, ltVersion: string) => PipelinePolicy;
6
+ export declare const genVersionCheckPolicy: (name: string, versionCb: (options: OperationOptions) => Promise<string>, geVersion: string, ltVersion: string) => AdditionalPolicyConfig;
8
7
  export declare const genRetryOnFailurePolicy: (retryCount: number, retryOverallDelay: number) => AdditionalPolicyConfig;
@@ -14,9 +14,7 @@ export const genRequestQueuesPolicy = () => {
14
14
  const getResponse = async () => next(request);
15
15
  if (key == null) return getResponse();
16
16
  const req = ((_requestQueues$get = requestQueues.get(key)) !== null && _requestQueues$get !== void 0 ? _requestQueues$get : Promise.resolve()).then(getResponse);
17
- // TODO: remove pause after fixing https://github.com/aeternity/aeternity/issues/3803
18
- // gap to ensure that node won't reject the nonce
19
- requestQueues.set(key, req.then(async () => pause(750), () => {}));
17
+ requestQueues.set(key, req.catch(() => {}));
20
18
  return req;
21
19
  }
22
20
  },
@@ -70,15 +68,14 @@ export const genErrorFormatterPolicy = getMessage => ({
70
68
  } catch (error) {
71
69
  var _error$response;
72
70
  if (!(error instanceof RestError) || error.request == null) throw error;
73
- if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.bodyAsText) == null) throw error;
74
- let body;
75
- try {
76
- body = JSON.parse(error.response.bodyAsText);
77
- } catch (e) {
71
+ const prefix = `${new URL(error.request.url).pathname.slice(1)} error`;
72
+ if (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.bodyAsText) == null) {
73
+ if (error.message === '') error.message = `${prefix}: ${error.code}`;
78
74
  throw error;
79
75
  }
80
- error.message = `${new URL(error.request.url).pathname.slice(1)} error`;
81
- const message = getMessage(body);
76
+ const body = error.response.parsedBody;
77
+ error.message = prefix;
78
+ const message = body == null ? ` ${error.response.status} status code` : getMessage(body);
82
79
  if (message !== '') error.message += `:${message}`;
83
80
  throw error;
84
81
  }
@@ -86,28 +83,47 @@ export const genErrorFormatterPolicy = getMessage => ({
86
83
  },
87
84
  position: 'perCall'
88
85
  });
89
- export const genVersionCheckPolicy = (name, ignorePath, versionPromise, geVersion, ltVersion) => ({
90
- name: 'version-check',
91
- async sendRequest(request, next) {
92
- if (new URL(request.url).pathname === ignorePath) return next(request);
93
- const version = await versionPromise;
94
- if (version instanceof Error) throw version;
95
- const args = [version, geVersion, ltVersion];
96
- if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);
97
- return next(request);
98
- }
86
+ export const genVersionCheckPolicy = (name, versionCb, geVersion, ltVersion) => ({
87
+ policy: {
88
+ name: 'version-check',
89
+ async sendRequest(request, next) {
90
+ if (request.headers.has('__version-check')) {
91
+ request.headers.delete('__version-check');
92
+ return next(request);
93
+ }
94
+ const options = {
95
+ requestOptions: {
96
+ customHeaders: {
97
+ '__version-check': 'true'
98
+ }
99
+ }
100
+ };
101
+ const args = [await versionCb(options), geVersion, ltVersion];
102
+ if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);
103
+ return next(request);
104
+ }
105
+ },
106
+ position: 'perCall'
99
107
  });
100
108
  export const genRetryOnFailurePolicy = (retryCount, retryOverallDelay) => ({
101
109
  policy: {
102
110
  name: 'retry-on-failure',
103
111
  async sendRequest(request, next) {
104
- const statusesToNotRetry = [200, 400, 403, 500];
112
+ var _request$headers$get;
113
+ const retryCode = (_request$headers$get = request.headers.get('__retry-code')) !== null && _request$headers$get !== void 0 ? _request$headers$get : NaN;
114
+ request.headers.delete('__retry-code');
115
+ const statusesToNotRetry = [200, 400, 403, 410, 500].filter(c => c !== +retryCode);
105
116
  const intervals = new Array(retryCount).fill(0).map((_, idx) => ((idx + 1) / retryCount) ** 2);
106
- const intervalSum = intervals.reduce((a, b) => a + b);
107
- const intervalsInMs = intervals.map(el => el / intervalSum * retryOverallDelay);
117
+ const intervalSum = intervals.reduce((a, b) => a + b, 0);
118
+ const intervalsInMs = intervals.map(e => Math.floor(e / intervalSum * retryOverallDelay));
108
119
  let error = new RestError('Not expected to be thrown');
109
120
  for (let attempt = 0; attempt <= retryCount; attempt += 1) {
110
- if (attempt !== 0) await pause(intervalsInMs[attempt - 1]);
121
+ if (attempt !== 0) {
122
+ await pause(intervalsInMs[attempt - 1]);
123
+ const urlParsed = new URL(request.url);
124
+ urlParsed.searchParams.set('__sdk-retry', attempt.toString());
125
+ request.url = urlParsed.toString();
126
+ }
111
127
  try {
112
128
  return await next(request);
113
129
  } catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"autorest.mjs","names":["RestError","pause","semverSatisfies","UnsupportedVersionError","genRequestQueuesPolicy","requestQueues","Map","policy","name","sendRequest","request","next","_requestQueues$get","key","headers","get","delete","getResponse","req","Promise","resolve","then","set","position","genCombineGetRequestsPolicy","pendingGetRequests","_pendingGetRequests$g","method","JSON","stringify","url","body","response","genAggressiveCacheGetResponsesPolicy","getRequests","_getRequests$get","genErrorFormatterPolicy","getMessage","error","_error$response","bodyAsText","parse","e","message","URL","pathname","slice","genVersionCheckPolicy","ignorePath","versionPromise","geVersion","ltVersion","version","Error","args","genRetryOnFailurePolicy","retryCount","retryOverallDelay","statusesToNotRetry","intervals","Array","fill","map","_","idx","intervalSum","reduce","a","b","intervalsInMs","el","attempt","_e$response$status","_e$response","includes","status"],"sources":["../../src/utils/autorest.ts"],"sourcesContent":["import { RestError, PipelineResponse, PipelinePolicy } from '@azure/core-rest-pipeline';\nimport { AdditionalPolicyConfig } from '@azure/core-client';\nimport { pause } from './other';\nimport semverSatisfies from './semver-satisfies';\nimport { UnsupportedVersionError } from './errors';\n\nexport const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {\n const requestQueues = new Map<string, Promise<unknown>>();\n\n return {\n policy: {\n name: 'request-queues',\n async sendRequest(request, next) {\n const key = request.headers.get('__queue');\n request.headers.delete('__queue');\n const getResponse = async (): Promise<PipelineResponse> => next(request);\n if (key == null) return getResponse();\n const req = (requestQueues.get(key) ?? Promise.resolve()).then(getResponse);\n // TODO: remove pause after fixing https://github.com/aeternity/aeternity/issues/3803\n // gap to ensure that node won't reject the nonce\n requestQueues.set(key, req.then(async () => pause(750), () => {}));\n return req;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {\n const pendingGetRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'combine-get-requests',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = pendingGetRequests.get(key) ?? next(request);\n pendingGetRequests.set(key, response);\n try {\n return await response;\n } finally {\n pendingGetRequests.delete(key);\n }\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genAggressiveCacheGetResponsesPolicy = (): AdditionalPolicyConfig => {\n const getRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'aggressive-cache-get-responses',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = getRequests.get(key) ?? next(request);\n getRequests.set(key, response);\n return response;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genErrorFormatterPolicy = (\n getMessage: (b: any) => string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'error-formatter',\n async sendRequest(request, next) {\n try {\n return await next(request);\n } catch (error) {\n if (!(error instanceof RestError) || error.request == null) throw error;\n if (error.response?.bodyAsText == null) throw error;\n\n let body;\n try {\n body = JSON.parse(error.response.bodyAsText);\n } catch (e) {\n throw error;\n }\n error.message = `${new URL(error.request.url).pathname.slice(1)} error`;\n const message = getMessage(body);\n if (message !== '') error.message += `:${message}`;\n throw error;\n }\n },\n },\n position: 'perCall',\n});\n\nexport const genVersionCheckPolicy = (\n name: string,\n ignorePath: string,\n versionPromise: Promise<string | Error>,\n geVersion: string,\n ltVersion: string,\n): PipelinePolicy => ({\n name: 'version-check',\n async sendRequest(request, next) {\n if (new URL(request.url).pathname === ignorePath) return next(request);\n const version = await versionPromise;\n if (version instanceof Error) throw version;\n const args = [version, geVersion, ltVersion] as const;\n if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);\n return next(request);\n },\n});\n\nexport const genRetryOnFailurePolicy = (\n retryCount: number,\n retryOverallDelay: number,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'retry-on-failure',\n async sendRequest(request, next) {\n const statusesToNotRetry = [200, 400, 403, 500];\n\n const intervals = new Array(retryCount).fill(0)\n .map((_, idx) => ((idx + 1) / retryCount) ** 2);\n const intervalSum = intervals.reduce((a, b) => a + b);\n const intervalsInMs = intervals.map((el) => (el / intervalSum) * retryOverallDelay);\n\n let error = new RestError('Not expected to be thrown');\n for (let attempt = 0; attempt <= retryCount; attempt += 1) {\n if (attempt !== 0) await pause(intervalsInMs[attempt - 1]);\n try {\n return await next(request);\n } catch (e) {\n if (!(e instanceof RestError)) throw e;\n if (statusesToNotRetry.includes(e.response?.status ?? 0)) throw e;\n error = e;\n }\n }\n throw error;\n },\n },\n position: 'perCall',\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"autorest.mjs","names":["RestError","pause","semverSatisfies","UnsupportedVersionError","genRequestQueuesPolicy","requestQueues","Map","policy","name","sendRequest","request","next","_requestQueues$get","key","headers","get","delete","getResponse","req","Promise","resolve","then","set","catch","position","genCombineGetRequestsPolicy","pendingGetRequests","_pendingGetRequests$g","method","JSON","stringify","url","body","response","genAggressiveCacheGetResponsesPolicy","getRequests","_getRequests$get","genErrorFormatterPolicy","getMessage","error","_error$response","prefix","URL","pathname","slice","bodyAsText","message","code","parsedBody","status","genVersionCheckPolicy","versionCb","geVersion","ltVersion","has","options","requestOptions","customHeaders","args","genRetryOnFailurePolicy","retryCount","retryOverallDelay","_request$headers$get","retryCode","NaN","statusesToNotRetry","filter","c","intervals","Array","fill","map","_","idx","intervalSum","reduce","a","b","intervalsInMs","e","Math","floor","attempt","urlParsed","searchParams","toString","_e$response$status","_e$response","includes"],"sources":["../../src/utils/autorest.ts"],"sourcesContent":["import { RestError, PipelineResponse } from '@azure/core-rest-pipeline';\nimport { AdditionalPolicyConfig, FullOperationResponse, OperationOptions } from '@azure/core-client';\nimport { pause } from './other';\nimport semverSatisfies from './semver-satisfies';\nimport { UnsupportedVersionError } from './errors';\n\nexport const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {\n const requestQueues = new Map<string, Promise<unknown>>();\n\n return {\n policy: {\n name: 'request-queues',\n async sendRequest(request, next) {\n const key = request.headers.get('__queue');\n request.headers.delete('__queue');\n const getResponse = async (): Promise<PipelineResponse> => next(request);\n if (key == null) return getResponse();\n const req = (requestQueues.get(key) ?? Promise.resolve()).then(getResponse);\n requestQueues.set(key, req.catch(() => {}));\n return req;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {\n const pendingGetRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'combine-get-requests',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = pendingGetRequests.get(key) ?? next(request);\n pendingGetRequests.set(key, response);\n try {\n return await response;\n } finally {\n pendingGetRequests.delete(key);\n }\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genAggressiveCacheGetResponsesPolicy = (): AdditionalPolicyConfig => {\n const getRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'aggressive-cache-get-responses',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = getRequests.get(key) ?? next(request);\n getRequests.set(key, response);\n return response;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genErrorFormatterPolicy = (\n getMessage: (b: any) => string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'error-formatter',\n async sendRequest(request, next) {\n try {\n return await next(request);\n } catch (error) {\n if (!(error instanceof RestError) || error.request == null) throw error;\n const prefix = `${new URL(error.request.url).pathname.slice(1)} error`;\n\n if (error.response?.bodyAsText == null) {\n if (error.message === '') error.message = `${prefix}: ${error.code}`;\n throw error;\n }\n\n const body = (error.response as FullOperationResponse).parsedBody;\n error.message = prefix;\n const message = body == null ? ` ${error.response.status} status code` : getMessage(body);\n if (message !== '') error.message += `:${message}`;\n throw error;\n }\n },\n },\n position: 'perCall',\n});\n\nexport const genVersionCheckPolicy = (\n name: string,\n versionCb: (options: OperationOptions) => Promise<string>,\n geVersion: string,\n ltVersion: string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'version-check',\n async sendRequest(request, next) {\n if (request.headers.has('__version-check')) {\n request.headers.delete('__version-check');\n return next(request);\n }\n const options = { requestOptions: { customHeaders: { '__version-check': 'true' } } };\n const args = [await versionCb(options), geVersion, ltVersion] as const;\n if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);\n return next(request);\n },\n },\n position: 'perCall',\n});\n\nexport const genRetryOnFailurePolicy = (\n retryCount: number,\n retryOverallDelay: number,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'retry-on-failure',\n async sendRequest(request, next) {\n const retryCode = request.headers.get('__retry-code') ?? NaN;\n request.headers.delete('__retry-code');\n const statusesToNotRetry = [200, 400, 403, 410, 500].filter((c) => c !== +retryCode);\n\n const intervals = new Array(retryCount).fill(0)\n .map((_, idx) => ((idx + 1) / retryCount) ** 2);\n const intervalSum = intervals.reduce((a, b) => a + b, 0);\n const intervalsInMs = intervals.map((e) => Math.floor((e / intervalSum) * retryOverallDelay));\n\n let error = new RestError('Not expected to be thrown');\n for (let attempt = 0; attempt <= retryCount; attempt += 1) {\n if (attempt !== 0) {\n await pause(intervalsInMs[attempt - 1]);\n const urlParsed = new URL(request.url);\n urlParsed.searchParams.set('__sdk-retry', attempt.toString());\n request.url = urlParsed.toString();\n }\n try {\n return await next(request);\n } catch (e) {\n if (!(e instanceof RestError)) throw e;\n if (statusesToNotRetry.includes(e.response?.status ?? 0)) throw e;\n error = e;\n }\n }\n throw error;\n },\n },\n position: 'perCall',\n});\n"],"mappings":"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"}
@@ -11,8 +11,7 @@ import { NoSerializerFoundError, TypeError } from "./errors.mjs";
11
11
  * @returns Buffer
12
12
  */
13
13
  // eslint-disable-next-line import/prefer-default-export
14
- export function toBytes(val) {
15
- let big = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
14
+ export function toBytes(val, big = false) {
16
15
  // Encode a value to bytes.
17
16
  // If the value is an int it will be encoded as bytes big endian
18
17
  // Raises ValueError if the input is not an int or string
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.mjs","names":["BigNumber","NoSerializerFoundError","TypeError","toBytes","val","big","arguments","length","undefined","_Buffer","from","Number","isInteger","isBigNumber","toFixed","hexString","toString"],"sources":["../../src/utils/bytes.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { NoSerializerFoundError, TypeError } from './errors';\n\n/**\n * Convert string, number, or BigNumber to byte array\n * @param val - value to convert\n * @param big - enables force conversion to BigNumber\n * @returns Buffer\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function toBytes(val?: null | string | number | BigNumber, big = false): Buffer {\n // Encode a value to bytes.\n // If the value is an int it will be encoded as bytes big endian\n // Raises ValueError if the input is not an int or string\n\n if (val == null) return Buffer.from([]);\n if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n if (!val.isInteger()) throw new TypeError(`Unexpected not integer value: ${val.toFixed()}`);\n let hexString = val.toString(16);\n if (hexString.length % 2 === 1) hexString = `0${hexString}`;\n return Buffer.from(hexString, 'hex');\n }\n if (typeof val === 'string') {\n return Buffer.from(val);\n }\n throw new NoSerializerFoundError();\n}\n"],"mappings":";;;;AAAA,OAAOA,SAAS,MAAM,cAAc;AAAC,SAC5BC,sBAAsB,EAAEC,SAAS;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAACC,GAAwC,EAAuB;EAAA,IAArBC,GAAG,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,KAAK;EAC3E;EACA;EACA;;EAEA,IAAIF,GAAG,IAAI,IAAI,EAAE,OAAOK,OAAA,CAAOC,IAAI,CAAC,EAAE,CAAC;EACvC,IAAIC,MAAM,CAACC,SAAS,CAACR,GAAG,CAAC,IAAIJ,SAAS,CAACa,WAAW,CAACT,GAAG,CAAC,IAAIC,GAAG,EAAE;IAC9D,IAAI,CAACL,SAAS,CAACa,WAAW,CAACT,GAAG,CAAC,EAAEA,GAAG,GAAG,IAAIJ,SAAS,CAACI,GAAG,CAAC;IACzD,IAAI,CAACA,GAAG,CAACQ,SAAS,CAAC,CAAC,EAAE,MAAM,IAAIV,SAAS,CAAE,iCAAgCE,GAAG,CAACU,OAAO,CAAC,CAAE,EAAC,CAAC;IAC3F,IAAIC,SAAS,GAAGX,GAAG,CAACY,QAAQ,CAAC,EAAE,CAAC;IAChC,IAAID,SAAS,CAACR,MAAM,GAAG,CAAC,KAAK,CAAC,EAAEQ,SAAS,GAAI,IAAGA,SAAU,EAAC;IAC3D,OAAON,OAAA,CAAOC,IAAI,CAACK,SAAS,EAAE,KAAK,CAAC;EACtC;EACA,IAAI,OAAOX,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAOK,OAAA,CAAOC,IAAI,CAACN,GAAG,CAAC;EACzB;EACA,MAAM,IAAIH,sBAAsB,CAAC,CAAC;AACpC"}
1
+ {"version":3,"file":"bytes.mjs","names":["BigNumber","NoSerializerFoundError","TypeError","toBytes","val","big","_Buffer","from","Number","isInteger","isBigNumber","toFixed","hexString","toString","length"],"sources":["../../src/utils/bytes.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { NoSerializerFoundError, TypeError } from './errors';\n\n/**\n * Convert string, number, or BigNumber to byte array\n * @param val - value to convert\n * @param big - enables force conversion to BigNumber\n * @returns Buffer\n */\n// eslint-disable-next-line import/prefer-default-export\nexport function toBytes(val?: null | string | number | BigNumber, big = false): Buffer {\n // Encode a value to bytes.\n // If the value is an int it will be encoded as bytes big endian\n // Raises ValueError if the input is not an int or string\n\n if (val == null) return Buffer.from([]);\n if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n if (!val.isInteger()) throw new TypeError(`Unexpected not integer value: ${val.toFixed()}`);\n let hexString = val.toString(16);\n if (hexString.length % 2 === 1) hexString = `0${hexString}`;\n return Buffer.from(hexString, 'hex');\n }\n if (typeof val === 'string') {\n return Buffer.from(val);\n }\n throw new NoSerializerFoundError();\n}\n"],"mappings":";;;;AAAA,OAAOA,SAAS,MAAM,cAAc;AAAC,SAC5BC,sBAAsB,EAAEC,SAAS;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,OAAOA,CAACC,GAAwC,EAAEC,GAAG,GAAG,KAAK,EAAU;EACrF;EACA;EACA;;EAEA,IAAID,GAAG,IAAI,IAAI,EAAE,OAAOE,OAAA,CAAOC,IAAI,CAAC,EAAE,CAAC;EACvC,IAAIC,MAAM,CAACC,SAAS,CAACL,GAAG,CAAC,IAAIJ,SAAS,CAACU,WAAW,CAACN,GAAG,CAAC,IAAIC,GAAG,EAAE;IAC9D,IAAI,CAACL,SAAS,CAACU,WAAW,CAACN,GAAG,CAAC,EAAEA,GAAG,GAAG,IAAIJ,SAAS,CAACI,GAAG,CAAC;IACzD,IAAI,CAACA,GAAG,CAACK,SAAS,CAAC,CAAC,EAAE,MAAM,IAAIP,SAAS,CAAE,iCAAgCE,GAAG,CAACO,OAAO,CAAC,CAAE,EAAC,CAAC;IAC3F,IAAIC,SAAS,GAAGR,GAAG,CAACS,QAAQ,CAAC,EAAE,CAAC;IAChC,IAAID,SAAS,CAACE,MAAM,GAAG,CAAC,KAAK,CAAC,EAAEF,SAAS,GAAI,IAAGA,SAAU,EAAC;IAC3D,OAAON,OAAA,CAAOC,IAAI,CAACK,SAAS,EAAE,KAAK,CAAC;EACtC;EACA,IAAI,OAAOR,GAAG,KAAK,QAAQ,EAAE;IAC3B,OAAOE,OAAA,CAAOC,IAAI,CAACH,GAAG,CAAC;EACzB;EACA,MAAM,IAAIH,sBAAsB,CAAC,CAAC;AACpC"}
@@ -9,11 +9,15 @@ import { Encoded, Encoding } from './encoder';
9
9
  export declare function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress;
10
10
  /**
11
11
  * Check if address is valid
12
- * @param address - Address
13
- * @param prefix - Transaction prefix. Default: 'ak'
14
- * @returns is valid
12
+ * @param maybeAddress - Address to check
15
13
  */
16
- export declare function isAddressValid(address: string, prefix?: Encoding): boolean;
14
+ export declare function isAddressValid(maybeAddress: string): maybeAddress is Encoded.AccountAddress;
15
+ /**
16
+ * Check if data is encoded in one of provided encodings
17
+ * @param maybeEncoded - Data to check
18
+ * @param encodings - Rest parameters with encodings to check against
19
+ */
20
+ export declare function isAddressValid<E extends Encoding>(maybeEncoded: string, ...encodings: E[]): maybeEncoded is Encoded.Generic<E>;
17
21
  /**
18
22
  * Generate a random salt (positive integer)
19
23
  * @returns random salt
@@ -13,7 +13,7 @@ import _varuintBitcoin from 'varuint-bitcoin';
13
13
  const {
14
14
  encode: varuintEncode
15
15
  } = _varuintBitcoin;
16
- import { concatBuffers } from "./other.mjs";
16
+ import { concatBuffers, isItemOfArray } from "./other.mjs";
17
17
  import { decode, encode, Encoding } from "./encoder.mjs";
18
18
  import { ArgumentError } from "./errors.mjs";
19
19
  /**
@@ -29,20 +29,25 @@ export function getAddressFromPriv(secret) {
29
29
 
30
30
  /**
31
31
  * Check if address is valid
32
- * @param address - Address
33
- * @param prefix - Transaction prefix. Default: 'ak'
34
- * @returns is valid
32
+ * @param maybeAddress - Address to check
35
33
  */
36
- export function isAddressValid(address) {
37
- let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Encoding.AccountAddress;
34
+
35
+ /**
36
+ * Check if data is encoded in one of provided encodings
37
+ * @param maybeEncoded - Data to check
38
+ * @param encodings - Rest parameters with encodings to check against
39
+ */
40
+
41
+ export function isAddressValid(maybeEncoded, ...encodings) {
42
+ if (encodings.length === 0) encodings = [Encoding.AccountAddress];
38
43
  try {
39
- decode(address);
40
- const actualPrefix = address.split('_')[0];
41
- if (actualPrefix !== prefix) {
42
- throw new ArgumentError('Encoded string type', prefix, actualPrefix);
44
+ decode(maybeEncoded);
45
+ const encoding = maybeEncoded.split('_')[0];
46
+ if (!isItemOfArray(encoding, encodings)) {
47
+ throw new ArgumentError('Encoded string type', encodings.length > 1 ? `one of ${encodings.join(', ')}` : encodings[0], encoding);
43
48
  }
44
49
  return true;
45
- } catch (e) {
50
+ } catch (error) {
46
51
  return false;
47
52
  }
48
53
  }
@@ -108,8 +113,7 @@ export function generateKeyPairFromSecret(secret) {
108
113
  * @returns Key pair
109
114
  */
110
115
 
111
- export function generateKeyPair() {
112
- let raw = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
116
+ export function generateKeyPair(raw = false) {
113
117
  const keyPair = nacl.sign.keyPair();
114
118
  const publicBuffer = _Buffer.from(keyPair.publicKey);
115
119
  const secretBuffer = _Buffer.from(keyPair.secretKey);
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.mjs","names":["nacl","_blakejsBlake2bJs","blake2b","_varuintBitcoin","encode","varuintEncode","concatBuffers","decode","Encoding","ArgumentError","getAddressFromPriv","secret","secretBuffer","_Buffer","from","keys","sign","keyPair","fromSecretKey","publicKey","AccountAddress","isAddressValid","address","prefix","arguments","length","undefined","actualPrefix","split","e","genSalt","random","BigUint64Array","randomBytes","buffer","Number","BigInt","MAX_SAFE_INTEGER","encodeUnsigned","value","binary","allocUnsafe","writeUInt32BE","slice","findIndex","i","hash","input","encodeContractAddress","owner","nonce","ContractAddress","generateKeyPairFromSecret","generateKeyPair","raw","publicBuffer","secretKey","toString","data","privateKey","detached","verify","signature","messagePrefix","messagePrefixLength","messageToHash","message","msg","signMessage","verifyMessage","isValidKeypair","publicKeyBuffer"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import nacl, { SignKeyPair } from 'tweetnacl';\n// js extension is required for mjs build, not importing the whole package to reduce bundle size\n// eslint-disable-next-line import/extensions\nimport { blake2b } from 'blakejs/blake2b.js';\nimport { encode as varuintEncode } from 'varuint-bitcoin';\n\nimport { concatBuffers } from './other';\nimport {\n decode, encode, Encoded, Encoding,\n} from './encoder';\nimport { ArgumentError } from './errors';\n\n/**\n * Generate address from secret key\n * @param secret - Private key as hex string\n * @returns Public key encoded as address\n */\nexport function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress {\n const secretBuffer = typeof secret === 'string' ? Buffer.from(secret, 'hex') : secret;\n const keys = nacl.sign.keyPair.fromSecretKey(secretBuffer);\n return encode(keys.publicKey, Encoding.AccountAddress);\n}\n\n/**\n * Check if address is valid\n * @param address - Address\n * @param prefix - Transaction prefix. Default: 'ak'\n * @returns is valid\n */\nexport function isAddressValid(\n address: string,\n prefix: Encoding = Encoding.AccountAddress,\n): boolean {\n try {\n decode(address as Encoded.Generic<typeof prefix>);\n const actualPrefix = address.split('_')[0];\n if (actualPrefix !== prefix) {\n throw new ArgumentError('Encoded string type', prefix, actualPrefix);\n }\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Generate a random salt (positive integer)\n * @returns random salt\n */\nexport function genSalt(): number {\n const [random] = new BigUint64Array(nacl.randomBytes(8).buffer);\n return Number(random % BigInt(Number.MAX_SAFE_INTEGER));\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @param value - Value to encode\n * @returns Encoded number\n */\nexport function encodeUnsigned(value: number): Buffer {\n const binary = Buffer.allocUnsafe(4);\n binary.writeUInt32BE(value);\n return binary.slice(binary.findIndex((i) => i !== 0));\n}\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @param input - Data to hash\n * @returns Hash\n */\nexport function hash(input: string | Uint8Array): Buffer {\n return Buffer.from(blake2b(input, undefined, 32)); // 256 bits\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @category contract\n * @param owner - Address of contract owner\n * @param nonce - Round when contract was created\n * @returns Contract address\n */\nexport function encodeContractAddress(\n owner: Encoded.AccountAddress,\n nonce: number,\n): Encoded.ContractAddress {\n const publicKey = decode(owner);\n const binary = concatBuffers([publicKey, encodeUnsigned(nonce)]);\n return encode(hash(binary), Encoding.ContractAddress);\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @param secret - secret key\n * @returns Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret(secret: Uint8Array): SignKeyPair {\n return nacl.sign.keyPair.fromSecretKey(secret);\n}\n\n/**\n * Generate a random ED25519 keypair\n * @param raw - Whether to return raw (binary) keys\n * @returns Key pair\n */\nexport function generateKeyPair(raw: true): { publicKey: Buffer; secretKey: Buffer };\nexport function generateKeyPair(raw?: false): {\n publicKey: Encoded.AccountAddress; secretKey: string;\n};\nexport function generateKeyPair(raw = false): {\n publicKey: Encoded.AccountAddress | Buffer;\n secretKey: string | Buffer;\n} {\n const keyPair = nacl.sign.keyPair();\n const publicBuffer = Buffer.from(keyPair.publicKey);\n const secretBuffer = Buffer.from(keyPair.secretKey);\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer,\n };\n }\n return {\n publicKey: encode(publicBuffer, Encoding.AccountAddress),\n secretKey: secretBuffer.toString('hex'),\n };\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @param data - Data to sign\n * @param privateKey - Key to sign with\n * @returns Signature\n */\nexport function sign(data: string | Uint8Array, privateKey: string | Uint8Array): Uint8Array {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey));\n}\n\n/**\n * Verify that signature was signed by public key\n * @param data - Data that was signed\n * @param signature - Signature of data\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\nexport function verify(\n data: Uint8Array,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return nacl.sign.detached.verify(data, signature, decode(address));\n}\n\nconst messagePrefix = Buffer.from('aeternity Signed Message:\\n', 'utf8');\nexport const messagePrefixLength = varuintEncode(messagePrefix.length);\n\n// TODO: consider rename to hashMessage\nexport function messageToHash(message: string): Buffer {\n const msg = Buffer.from(message, 'utf8');\n return hash(concatBuffers([messagePrefixLength, messagePrefix, varuintEncode(msg.length), msg]));\n}\n\nexport function signMessage(message: string, privateKey: string | Buffer): Uint8Array {\n return sign(messageToHash(message), privateKey);\n}\n\n/**\n * Verify that message was signed by address\n * @param message - Message that was signed\n * @param signature - Signature of message\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\n// TODO: deprecate in favour of `verify(messageToHash(message), ...`, also the name is confusing\n// it should contain \"signature\"\nexport function verifyMessage(\n message: string,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return verify(messageToHash(message), signature, address);\n}\n\n/**\n * Check key pair for validity\n *\n * Signs a message, and then verifies that signature\n * @param privateKey - Private key to verify\n * @param publicKey - Public key to verify as hex string\n * @returns Valid?\n */\nexport function isValidKeypair(\n privateKey: string | Uint8Array,\n publicKey: string | Uint8Array,\n): boolean {\n const message = Buffer.from('TheMessage');\n const signature = sign(message, privateKey);\n const publicKeyBuffer = typeof publicKey === 'string' ? Buffer.from(publicKey, 'hex') : publicKey;\n return verify(message, signature, encode(publicKeyBuffer, Encoding.AccountAddress));\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"crypto.mjs","names":["nacl","_blakejsBlake2bJs","blake2b","_varuintBitcoin","encode","varuintEncode","concatBuffers","isItemOfArray","decode","Encoding","ArgumentError","getAddressFromPriv","secret","secretBuffer","_Buffer","from","keys","sign","keyPair","fromSecretKey","publicKey","AccountAddress","isAddressValid","maybeEncoded","encodings","length","encoding","split","join","error","genSalt","random","BigUint64Array","randomBytes","buffer","Number","BigInt","MAX_SAFE_INTEGER","encodeUnsigned","value","binary","allocUnsafe","writeUInt32BE","slice","findIndex","i","hash","input","undefined","encodeContractAddress","owner","nonce","ContractAddress","generateKeyPairFromSecret","generateKeyPair","raw","publicBuffer","secretKey","toString","data","privateKey","detached","verify","signature","address","messagePrefix","messagePrefixLength","messageToHash","message","msg","signMessage","verifyMessage","isValidKeypair","publicKeyBuffer"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import nacl, { SignKeyPair } from 'tweetnacl';\n// js extension is required for mjs build, not importing the whole package to reduce bundle size\n// eslint-disable-next-line import/extensions\nimport { blake2b } from 'blakejs/blake2b.js';\nimport { encode as varuintEncode } from 'varuint-bitcoin';\n\nimport { concatBuffers, isItemOfArray } from './other';\nimport {\n decode, encode, Encoded, Encoding,\n} from './encoder';\nimport { ArgumentError } from './errors';\n\n/**\n * Generate address from secret key\n * @param secret - Private key as hex string\n * @returns Public key encoded as address\n */\nexport function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress {\n const secretBuffer = typeof secret === 'string' ? Buffer.from(secret, 'hex') : secret;\n const keys = nacl.sign.keyPair.fromSecretKey(secretBuffer);\n return encode(keys.publicKey, Encoding.AccountAddress);\n}\n\n/**\n * Check if address is valid\n * @param maybeAddress - Address to check\n */\nexport function isAddressValid(maybeAddress: string): maybeAddress is Encoded.AccountAddress;\n/**\n * Check if data is encoded in one of provided encodings\n * @param maybeEncoded - Data to check\n * @param encodings - Rest parameters with encodings to check against\n */\nexport function isAddressValid<E extends Encoding>(\n maybeEncoded: string,\n ...encodings: E[]\n): maybeEncoded is Encoded.Generic<E>;\nexport function isAddressValid(maybeEncoded: string, ...encodings: Encoding[]): boolean {\n if (encodings.length === 0) encodings = [Encoding.AccountAddress];\n try {\n decode(maybeEncoded as Encoded.Any);\n const encoding = maybeEncoded.split('_')[0];\n if (!isItemOfArray(encoding, encodings)) {\n throw new ArgumentError(\n 'Encoded string type',\n encodings.length > 1 ? `one of ${encodings.join(', ')}` : encodings[0],\n encoding,\n );\n }\n return true;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Generate a random salt (positive integer)\n * @returns random salt\n */\nexport function genSalt(): number {\n const [random] = new BigUint64Array(nacl.randomBytes(8).buffer);\n return Number(random % BigInt(Number.MAX_SAFE_INTEGER));\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @param value - Value to encode\n * @returns Encoded number\n */\nexport function encodeUnsigned(value: number): Buffer {\n const binary = Buffer.allocUnsafe(4);\n binary.writeUInt32BE(value);\n return binary.slice(binary.findIndex((i) => i !== 0));\n}\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @param input - Data to hash\n * @returns Hash\n */\nexport function hash(input: string | Uint8Array): Buffer {\n return Buffer.from(blake2b(input, undefined, 32)); // 256 bits\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @category contract\n * @param owner - Address of contract owner\n * @param nonce - Round when contract was created\n * @returns Contract address\n */\nexport function encodeContractAddress(\n owner: Encoded.AccountAddress,\n nonce: number,\n): Encoded.ContractAddress {\n const publicKey = decode(owner);\n const binary = concatBuffers([publicKey, encodeUnsigned(nonce)]);\n return encode(hash(binary), Encoding.ContractAddress);\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @param secret - secret key\n * @returns Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret(secret: Uint8Array): SignKeyPair {\n return nacl.sign.keyPair.fromSecretKey(secret);\n}\n\n/**\n * Generate a random ED25519 keypair\n * @param raw - Whether to return raw (binary) keys\n * @returns Key pair\n */\nexport function generateKeyPair(raw: true): { publicKey: Buffer; secretKey: Buffer };\nexport function generateKeyPair(raw?: false): {\n publicKey: Encoded.AccountAddress; secretKey: string;\n};\nexport function generateKeyPair(raw = false): {\n publicKey: Encoded.AccountAddress | Buffer;\n secretKey: string | Buffer;\n} {\n const keyPair = nacl.sign.keyPair();\n const publicBuffer = Buffer.from(keyPair.publicKey);\n const secretBuffer = Buffer.from(keyPair.secretKey);\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer,\n };\n }\n return {\n publicKey: encode(publicBuffer, Encoding.AccountAddress),\n secretKey: secretBuffer.toString('hex'),\n };\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @param data - Data to sign\n * @param privateKey - Key to sign with\n * @returns Signature\n */\nexport function sign(data: string | Uint8Array, privateKey: string | Uint8Array): Uint8Array {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey));\n}\n\n/**\n * Verify that signature was signed by public key\n * @param data - Data that was signed\n * @param signature - Signature of data\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\nexport function verify(\n data: Uint8Array,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return nacl.sign.detached.verify(data, signature, decode(address));\n}\n\nconst messagePrefix = Buffer.from('aeternity Signed Message:\\n', 'utf8');\nexport const messagePrefixLength = varuintEncode(messagePrefix.length);\n\n// TODO: consider rename to hashMessage\nexport function messageToHash(message: string): Buffer {\n const msg = Buffer.from(message, 'utf8');\n return hash(concatBuffers([messagePrefixLength, messagePrefix, varuintEncode(msg.length), msg]));\n}\n\nexport function signMessage(message: string, privateKey: string | Buffer): Uint8Array {\n return sign(messageToHash(message), privateKey);\n}\n\n/**\n * Verify that message was signed by address\n * @param message - Message that was signed\n * @param signature - Signature of message\n * @param address - Address to verify against\n * @returns is data was signed by address\n */\n// TODO: deprecate in favour of `verify(messageToHash(message), ...`, also the name is confusing\n// it should contain \"signature\"\nexport function verifyMessage(\n message: string,\n signature: Uint8Array,\n address: Encoded.AccountAddress,\n): boolean {\n return verify(messageToHash(message), signature, address);\n}\n\n/**\n * Check key pair for validity\n *\n * Signs a message, and then verifies that signature\n * @param privateKey - Private key to verify\n * @param publicKey - Public key to verify as hex string\n * @returns Valid?\n */\nexport function isValidKeypair(\n privateKey: string | Uint8Array,\n publicKey: string | Uint8Array,\n): boolean {\n const message = Buffer.from('TheMessage');\n const signature = sign(message, privateKey);\n const publicKeyBuffer = typeof publicKey === 'string' ? Buffer.from(publicKey, 'hex') : publicKey;\n return verify(message, signature, encode(publicKeyBuffer, Encoding.AccountAddress));\n}\n"],"mappings":"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"}
@@ -146,6 +146,12 @@ export declare class NotImplementedError extends BaseError {
146
146
  export declare class UnsupportedVersionError extends BaseError {
147
147
  constructor(dependency: string, version: string, geVersion: string, ltVersion: string);
148
148
  }
149
+ /**
150
+ * @category exception
151
+ */
152
+ export declare class LogicError extends BaseError {
153
+ constructor(message: string);
154
+ }
149
155
  /**
150
156
  * @category exception
151
157
  */
@@ -241,6 +241,16 @@ export class UnsupportedVersionError extends BaseError {
241
241
  }
242
242
  }
243
243
 
244
+ /**
245
+ * @category exception
246
+ */
247
+ export class LogicError extends BaseError {
248
+ constructor(message) {
249
+ super(message);
250
+ this.name = 'LogicError';
251
+ }
252
+ }
253
+
244
254
  /**
245
255
  * @category exception
246
256
  */
@@ -255,8 +265,7 @@ export class InternalError extends BaseError {
255
265
  * @category exception
256
266
  */
257
267
  export class UnexpectedTsError extends InternalError {
258
- constructor() {
259
- let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'Expected to not happen, required for TS';
268
+ constructor(message = 'Expected to not happen, required for TS') {
260
269
  super(message);
261
270
  this.name = 'UnexpectedTsError';
262
271
  }
@@ -540,10 +549,7 @@ export class MissingEventDefinitionError extends ContractError {
540
549
  */
541
550
  export class AmbiguousEventDefinitionError extends ContractError {
542
551
  constructor(eventAddress, matchedEvents) {
543
- super(`Found multiple definitions of "${matchedEvents[0][1]}" event with different types emitted by` + ` ${eventAddress} in ${matchedEvents.map(_ref => {
544
- let [name] = _ref;
545
- return `"${name}"`;
546
- }).join(', ')} contracts` + ' (use contractAddressToName option to specify contract name corresponding to address)');
552
+ super(`Found multiple definitions of "${matchedEvents[0][1]}" event with different types emitted by` + ` ${eventAddress} in ${matchedEvents.map(([name]) => `"${name}"`).join(', ')} contracts` + ' (use contractAddressToName option to specify contract name corresponding to address)');
547
553
  this.name = 'AmbiguousEventDefinitionError';
548
554
  }
549
555
  }