@aeternity/aepp-sdk 13.0.0-alpha.1 → 13.0.0-beta.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 (388) hide show
  1. package/bin/aesophia_cli +0 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +1792 -1525
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/AeSdk.mjs.map +1 -1
  9. package/es/AeSdkAepp.mjs.map +1 -1
  10. package/es/AeSdkBase.mjs.map +1 -1
  11. package/es/AeSdkMethods.d.ts +11 -12
  12. package/es/AeSdkMethods.mjs +6 -8
  13. package/es/AeSdkMethods.mjs.map +1 -1
  14. package/es/AeSdkWallet.mjs +1 -1
  15. package/es/AeSdkWallet.mjs.map +1 -1
  16. package/es/Node.d.ts +5 -1
  17. package/es/Node.mjs +11 -5
  18. package/es/Node.mjs.map +1 -1
  19. package/es/account/Base.d.ts +11 -6
  20. package/es/account/Base.mjs +0 -17
  21. package/es/account/Base.mjs.map +1 -1
  22. package/es/account/Generalized.mjs +11 -24
  23. package/es/account/Generalized.mjs.map +1 -1
  24. package/es/account/Ledger.mjs.map +1 -1
  25. package/es/account/LedgerFactory.mjs.map +1 -1
  26. package/es/account/Memory.d.ts +2 -1
  27. package/es/account/Memory.mjs +9 -21
  28. package/es/account/Memory.mjs.map +1 -1
  29. package/es/account/Rpc.mjs.map +1 -1
  30. package/es/aens.d.ts +12 -14
  31. package/es/aens.mjs +17 -31
  32. package/es/aens.mjs.map +1 -1
  33. package/es/aepp-wallet-communication/connection/Browser.mjs +0 -16
  34. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  35. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +0 -16
  36. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  37. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -16
  38. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  39. package/es/aepp-wallet-communication/connection-proxy.mjs +0 -17
  40. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -5
  42. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  43. package/es/aepp-wallet-communication/rpc/types.d.ts +6 -2
  44. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  45. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  46. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -16
  47. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  48. package/es/apis/compiler/compiler.d.ts +1 -1
  49. package/es/apis/compiler/compiler.mjs +4 -20
  50. package/es/apis/compiler/compiler.mjs.map +1 -1
  51. package/es/apis/compiler/models/index.d.ts +3 -2
  52. package/es/apis/compiler/models/index.mjs.map +1 -1
  53. package/es/apis/compiler/models/mappers.d.ts +1 -1
  54. package/es/apis/compiler/models/mappers.mjs +19 -2
  55. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  56. package/es/apis/node/models/index.d.ts +15 -15
  57. package/es/apis/node/models/index.mjs.map +1 -1
  58. package/es/apis/node/models/mappers.d.ts +1 -1
  59. package/es/apis/node/models/mappers.mjs +2 -1
  60. package/es/apis/node/models/mappers.mjs.map +1 -1
  61. package/es/apis/node/models/parameters.d.ts +2 -2
  62. package/es/apis/node/models/parameters.mjs +2 -2
  63. package/es/apis/node/models/parameters.mjs.map +1 -1
  64. package/es/apis/node/node.mjs +3 -19
  65. package/es/apis/node/node.mjs.map +1 -1
  66. package/es/chain.d.ts +8 -8
  67. package/es/chain.mjs +19 -22
  68. package/es/chain.mjs.map +1 -1
  69. package/es/channel/Base.d.ts +25 -12
  70. package/es/channel/Base.mjs +23 -26
  71. package/es/channel/Base.mjs.map +1 -1
  72. package/es/channel/Contract.mjs +8 -21
  73. package/es/channel/Contract.mjs.map +1 -1
  74. package/es/channel/Spend.d.ts +4 -2
  75. package/es/channel/Spend.mjs +0 -16
  76. package/es/channel/Spend.mjs.map +1 -1
  77. package/es/channel/handlers.mjs +6 -18
  78. package/es/channel/handlers.mjs.map +1 -1
  79. package/es/channel/internal.d.ts +19 -2
  80. package/es/channel/internal.mjs +19 -19
  81. package/es/channel/internal.mjs.map +1 -1
  82. package/es/contract/Contract.d.ts +30 -85
  83. package/es/contract/Contract.mjs +174 -211
  84. package/es/contract/Contract.mjs.map +1 -1
  85. package/es/contract/compiler/Base.d.ts +7 -14
  86. package/es/contract/compiler/Base.mjs.map +1 -1
  87. package/es/contract/compiler/Cli.mjs +5 -11
  88. package/es/contract/compiler/Cli.mjs.map +1 -1
  89. package/es/contract/compiler/Http.mjs +6 -30
  90. package/es/contract/compiler/Http.mjs.map +1 -1
  91. package/es/contract/compiler/HttpNode.mjs.map +1 -1
  92. package/es/contract/compiler/getFileSystem.mjs.map +1 -1
  93. package/es/contract/delegation-signature.d.ts +43 -0
  94. package/es/contract/delegation-signature.mjs +45 -0
  95. package/es/contract/delegation-signature.mjs.map +1 -0
  96. package/es/contract/ga.d.ts +23 -7
  97. package/es/contract/ga.mjs +52 -27
  98. package/es/contract/ga.mjs.map +1 -1
  99. package/es/index-browser.d.ts +4 -3
  100. package/es/index-browser.mjs +6 -20
  101. package/es/index-browser.mjs.map +1 -1
  102. package/es/oracle.d.ts +12 -17
  103. package/es/oracle.mjs +28 -48
  104. package/es/oracle.mjs.map +1 -1
  105. package/es/spend.d.ts +19 -27
  106. package/es/spend.mjs +20 -43
  107. package/es/spend.mjs.map +1 -1
  108. package/es/tx/builder/SchemaTypes.d.ts +37 -0
  109. package/es/tx/builder/SchemaTypes.mjs +2 -0
  110. package/es/tx/builder/SchemaTypes.mjs.map +1 -0
  111. package/es/tx/builder/constants.d.ts +4 -2
  112. package/es/tx/builder/constants.mjs +2 -0
  113. package/es/tx/builder/constants.mjs.map +1 -1
  114. package/es/tx/builder/field-types/abi-version.d.ts +11 -2
  115. package/es/tx/builder/field-types/abi-version.mjs +24 -4
  116. package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
  117. package/es/tx/builder/field-types/address.mjs.map +1 -1
  118. package/es/tx/builder/field-types/array.d.ts +1 -1
  119. package/es/tx/builder/field-types/array.mjs.map +1 -1
  120. package/es/tx/builder/field-types/boolean.mjs.map +1 -1
  121. package/es/tx/builder/field-types/coin-amount.d.ts +3 -4
  122. package/es/tx/builder/field-types/coin-amount.mjs +4 -5
  123. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  124. package/es/tx/builder/field-types/ct-version.d.ts +22 -3
  125. package/es/tx/builder/field-types/ct-version.mjs +32 -4
  126. package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
  127. package/es/tx/builder/field-types/deposit.d.ts +2 -1
  128. package/es/tx/builder/field-types/deposit.mjs +3 -2
  129. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  130. package/es/tx/builder/field-types/encoded.d.ts +1 -1
  131. package/es/tx/builder/field-types/encoded.mjs.map +1 -1
  132. package/es/tx/builder/field-types/entry.mjs +3 -0
  133. package/es/tx/builder/field-types/entry.mjs.map +1 -1
  134. package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
  135. package/es/tx/builder/field-types/fee.d.ts +3 -1
  136. package/es/tx/builder/field-types/fee.mjs +5 -1
  137. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  138. package/es/tx/builder/field-types/field.mjs.map +1 -1
  139. package/es/tx/builder/field-types/gas-limit.d.ts +3 -2
  140. package/es/tx/builder/field-types/gas-limit.mjs +4 -2
  141. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  142. package/es/tx/builder/field-types/gas-price.d.ts +3 -1
  143. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  144. package/es/tx/builder/field-types/index.d.ts +52 -13
  145. package/es/tx/builder/field-types/index.mjs +10 -2
  146. package/es/tx/builder/field-types/index.mjs.map +1 -1
  147. package/es/tx/builder/field-types/map.d.ts +13 -0
  148. package/es/tx/builder/field-types/map.mjs +49 -0
  149. package/es/tx/builder/field-types/map.mjs.map +1 -0
  150. package/es/tx/builder/field-types/mptree.d.ts +7 -2
  151. package/es/tx/builder/field-types/mptree.mjs +5 -7
  152. package/es/tx/builder/field-types/mptree.mjs.map +1 -1
  153. package/es/tx/builder/field-types/name-fee.d.ts +1 -1
  154. package/es/tx/builder/field-types/name-fee.mjs +2 -2
  155. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  156. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  157. package/es/tx/builder/field-types/name.mjs.map +1 -1
  158. package/es/tx/builder/field-types/nonce.d.ts +14 -0
  159. package/es/tx/builder/field-types/nonce.mjs +29 -0
  160. package/es/tx/builder/field-types/nonce.mjs.map +1 -0
  161. package/es/tx/builder/field-types/pointers.mjs.map +1 -1
  162. package/es/tx/builder/field-types/raw.mjs.map +1 -1
  163. package/es/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  164. package/es/tx/builder/field-types/short-u-int-const.mjs +12 -8
  165. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -1
  166. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  167. package/es/tx/builder/field-types/string.mjs.map +1 -1
  168. package/es/tx/builder/field-types/ttl.d.ts +11 -0
  169. package/es/tx/builder/field-types/ttl.mjs +21 -0
  170. package/es/tx/builder/field-types/ttl.mjs.map +1 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  172. package/es/tx/builder/field-types/wrapped.d.ts +14 -0
  173. package/es/tx/builder/field-types/wrapped.mjs +22 -0
  174. package/es/tx/builder/field-types/wrapped.mjs.map +1 -0
  175. package/es/tx/builder/helpers.mjs.map +1 -1
  176. package/es/tx/builder/index.d.ts +20 -20
  177. package/es/tx/builder/index.mjs +54 -64
  178. package/es/tx/builder/index.mjs.map +1 -1
  179. package/es/tx/builder/schema.d.ts +2735 -2865
  180. package/es/tx/builder/schema.generated.d.ts +2011 -0
  181. package/es/tx/builder/schema.generated.mjs +2 -0
  182. package/es/tx/builder/schema.generated.mjs.map +1 -0
  183. package/es/tx/builder/schema.mjs +459 -155
  184. package/es/tx/builder/schema.mjs.map +1 -1
  185. package/es/tx/execution-cost.d.ts +35 -0
  186. package/es/tx/execution-cost.mjs +123 -0
  187. package/es/tx/execution-cost.mjs.map +1 -0
  188. package/es/tx/transaction-signer.d.ts +6 -0
  189. package/es/tx/transaction-signer.mjs +27 -0
  190. package/es/tx/transaction-signer.mjs.map +1 -0
  191. package/es/tx/validator.mjs +60 -109
  192. package/es/tx/validator.mjs.map +1 -1
  193. package/es/utils/amount-formatter.mjs +0 -16
  194. package/es/utils/amount-formatter.mjs.map +1 -1
  195. package/es/utils/autorest.d.ts +3 -2
  196. package/es/utils/autorest.mjs +43 -11
  197. package/es/utils/autorest.mjs.map +1 -1
  198. package/es/utils/bytes.mjs +0 -16
  199. package/es/utils/bytes.mjs.map +1 -1
  200. package/es/utils/crypto.mjs +0 -16
  201. package/es/utils/crypto.mjs.map +1 -1
  202. package/es/utils/encoder.mjs.map +1 -1
  203. package/es/utils/errors.d.ts +14 -31
  204. package/es/utils/errors.mjs +2 -32
  205. package/es/utils/errors.mjs.map +1 -1
  206. package/es/utils/hd-wallet.mjs.map +1 -1
  207. package/es/utils/json-big.mjs.map +1 -1
  208. package/es/utils/keystore.mjs.map +1 -1
  209. package/es/utils/other.d.ts +1 -1
  210. package/es/utils/other.mjs.map +1 -1
  211. package/es/utils/semver-satisfies.mjs.map +1 -1
  212. package/es/utils/string.mjs +0 -17
  213. package/es/utils/string.mjs.map +1 -1
  214. package/package.json +34 -30
  215. package/src/AeSdkMethods.ts +11 -16
  216. package/src/AeSdkWallet.ts +1 -1
  217. package/src/Node.ts +17 -6
  218. package/src/account/Base.ts +11 -22
  219. package/src/account/Generalized.ts +8 -23
  220. package/src/account/Memory.ts +14 -21
  221. package/src/aens.ts +31 -47
  222. package/src/aepp-wallet-communication/connection/Browser.ts +0 -17
  223. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +0 -17
  224. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +0 -17
  225. package/src/aepp-wallet-communication/connection-proxy.ts +0 -17
  226. package/src/aepp-wallet-communication/rpc/types.ts +6 -2
  227. package/src/aepp-wallet-communication/wallet-detector.ts +0 -17
  228. package/src/apis/compiler/compiler.ts +3 -27
  229. package/src/apis/compiler/models/index.ts +3 -2
  230. package/src/apis/compiler/models/mappers.ts +15 -2
  231. package/src/apis/node/models/index.ts +16 -15
  232. package/src/apis/node/models/mappers.ts +2 -1
  233. package/src/apis/node/models/parameters.ts +2 -2
  234. package/src/apis/node/node.ts +3 -27
  235. package/src/chain.ts +28 -27
  236. package/src/channel/Base.ts +33 -33
  237. package/src/channel/Contract.ts +8 -23
  238. package/src/channel/Spend.ts +2 -17
  239. package/src/channel/handlers.ts +5 -18
  240. package/src/channel/internal.ts +40 -22
  241. package/src/contract/Contract.ts +133 -163
  242. package/src/contract/compiler/Base.ts +7 -14
  243. package/src/contract/compiler/Cli.ts +5 -11
  244. package/src/contract/compiler/Http.ts +6 -25
  245. package/src/contract/delegation-signature.ts +56 -0
  246. package/src/contract/ga.ts +53 -32
  247. package/src/index-browser.ts +12 -20
  248. package/src/oracle.ts +46 -56
  249. package/src/spend.ts +33 -67
  250. package/src/tx/builder/SchemaTypes.ts +79 -0
  251. package/src/tx/builder/constants.ts +2 -0
  252. package/src/tx/builder/field-types/abi-version.ts +29 -6
  253. package/src/tx/builder/field-types/array.ts +1 -1
  254. package/src/tx/builder/field-types/coin-amount.ts +6 -4
  255. package/src/tx/builder/field-types/ct-version.ts +37 -4
  256. package/src/tx/builder/field-types/deposit.ts +3 -1
  257. package/src/tx/builder/field-types/encoded.ts +1 -1
  258. package/src/tx/builder/field-types/entry.ts +8 -3
  259. package/src/tx/builder/field-types/fee.ts +6 -4
  260. package/src/tx/builder/field-types/gas-limit.ts +2 -2
  261. package/src/tx/builder/field-types/index.ts +15 -1
  262. package/src/tx/builder/field-types/map.ts +45 -0
  263. package/src/tx/builder/field-types/mptree.ts +4 -3
  264. package/src/tx/builder/field-types/name-fee.ts +2 -1
  265. package/src/tx/builder/field-types/nonce.ts +40 -0
  266. package/src/tx/builder/field-types/short-u-int-const.ts +18 -8
  267. package/src/tx/builder/field-types/ttl.ts +24 -0
  268. package/src/tx/builder/field-types/wrapped.ts +32 -0
  269. package/src/tx/builder/index.ts +57 -71
  270. package/src/tx/builder/schema.generated.ts +2013 -0
  271. package/src/tx/builder/schema.ts +544 -624
  272. package/src/tx/execution-cost.ts +146 -0
  273. package/src/tx/transaction-signer.ts +27 -0
  274. package/src/tx/validator.ts +60 -91
  275. package/src/utils/amount-formatter.ts +0 -16
  276. package/src/utils/autorest.ts +52 -11
  277. package/src/utils/bytes.ts +0 -16
  278. package/src/utils/crypto.ts +0 -16
  279. package/src/utils/errors.ts +15 -44
  280. package/src/utils/string.ts +0 -17
  281. package/types-legacy/ts4.2/AeSdkMethods.d.ts +11 -12
  282. package/types-legacy/ts4.2/Node.d.ts +5 -1
  283. package/types-legacy/ts4.2/account/Base.d.ts +11 -6
  284. package/types-legacy/ts4.2/account/Memory.d.ts +2 -1
  285. package/types-legacy/ts4.2/aens.d.ts +12 -14
  286. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +6 -2
  287. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +1 -1
  288. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +3 -2
  289. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +1 -1
  290. package/types-legacy/ts4.2/apis/node/models/index.d.ts +15 -15
  291. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +1 -1
  292. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
  293. package/types-legacy/ts4.2/chain.d.ts +8 -8
  294. package/types-legacy/ts4.2/channel/Base.d.ts +25 -12
  295. package/types-legacy/ts4.2/channel/Spend.d.ts +4 -2
  296. package/types-legacy/ts4.2/channel/internal.d.ts +22 -2
  297. package/types-legacy/ts4.2/contract/Contract.d.ts +29 -84
  298. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +7 -14
  299. package/types-legacy/ts4.2/contract/delegation-signature.d.ts +43 -0
  300. package/types-legacy/ts4.2/contract/ga.d.ts +23 -7
  301. package/types-legacy/ts4.2/index-browser.d.ts +4 -3
  302. package/types-legacy/ts4.2/oracle.d.ts +12 -17
  303. package/types-legacy/ts4.2/spend.d.ts +19 -27
  304. package/types-legacy/ts4.2/tx/builder/SchemaTypes.d.ts +37 -0
  305. package/types-legacy/ts4.2/tx/builder/constants.d.ts +4 -2
  306. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +11 -2
  307. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +1 -1
  308. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +3 -4
  309. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +33 -3
  310. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +2 -1
  311. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +1 -1
  312. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +3 -1
  313. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +3 -2
  314. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +3 -1
  315. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +52 -13
  316. package/types-legacy/ts4.2/tx/builder/field-types/map.d.ts +13 -0
  317. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +7 -2
  318. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -1
  319. package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +14 -0
  320. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  321. package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +11 -0
  322. package/types-legacy/ts4.2/tx/builder/field-types/wrapped.d.ts +14 -0
  323. package/types-legacy/ts4.2/tx/builder/index.d.ts +23 -20
  324. package/types-legacy/ts4.2/tx/builder/schema.d.ts +2962 -4629
  325. package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +2011 -0
  326. package/types-legacy/ts4.2/tx/execution-cost.d.ts +35 -0
  327. package/types-legacy/ts4.2/tx/transaction-signer.d.ts +6 -0
  328. package/types-legacy/ts4.2/utils/autorest.d.ts +3 -2
  329. package/types-legacy/ts4.2/utils/errors.d.ts +14 -31
  330. package/types-legacy/ts4.2/utils/other.d.ts +1 -1
  331. package/types-legacy/ts4.5/AeSdkMethods.d.ts +11 -12
  332. package/types-legacy/ts4.5/Node.d.ts +5 -1
  333. package/types-legacy/ts4.5/account/Base.d.ts +11 -6
  334. package/types-legacy/ts4.5/account/Memory.d.ts +2 -1
  335. package/types-legacy/ts4.5/aens.d.ts +12 -14
  336. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +6 -2
  337. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +1 -1
  338. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +3 -2
  339. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +1 -1
  340. package/types-legacy/ts4.5/apis/node/models/index.d.ts +15 -15
  341. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +1 -1
  342. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
  343. package/types-legacy/ts4.5/chain.d.ts +8 -8
  344. package/types-legacy/ts4.5/channel/Base.d.ts +25 -12
  345. package/types-legacy/ts4.5/channel/Spend.d.ts +4 -2
  346. package/types-legacy/ts4.5/channel/internal.d.ts +22 -2
  347. package/types-legacy/ts4.5/contract/Contract.d.ts +29 -84
  348. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +7 -14
  349. package/types-legacy/ts4.5/contract/delegation-signature.d.ts +43 -0
  350. package/types-legacy/ts4.5/contract/ga.d.ts +23 -7
  351. package/types-legacy/ts4.5/index-browser.d.ts +4 -3
  352. package/types-legacy/ts4.5/oracle.d.ts +12 -17
  353. package/types-legacy/ts4.5/spend.d.ts +19 -27
  354. package/types-legacy/ts4.5/tx/builder/SchemaTypes.d.ts +37 -0
  355. package/types-legacy/ts4.5/tx/builder/constants.d.ts +4 -2
  356. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +11 -2
  357. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +1 -1
  358. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +3 -4
  359. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +33 -3
  360. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +2 -1
  361. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +1 -1
  362. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +3 -1
  363. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +3 -2
  364. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +3 -1
  365. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +52 -13
  366. package/types-legacy/ts4.5/tx/builder/field-types/map.d.ts +13 -0
  367. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +7 -2
  368. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -1
  369. package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +14 -0
  370. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  371. package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +11 -0
  372. package/types-legacy/ts4.5/tx/builder/field-types/wrapped.d.ts +14 -0
  373. package/types-legacy/ts4.5/tx/builder/index.d.ts +23 -20
  374. package/types-legacy/ts4.5/tx/builder/schema.d.ts +2962 -4629
  375. package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +2011 -0
  376. package/types-legacy/ts4.5/tx/execution-cost.d.ts +35 -0
  377. package/types-legacy/ts4.5/tx/transaction-signer.d.ts +6 -0
  378. package/types-legacy/ts4.5/utils/autorest.d.ts +3 -2
  379. package/types-legacy/ts4.5/utils/errors.d.ts +14 -31
  380. package/types-legacy/ts4.5/utils/other.d.ts +1 -1
  381. package/es/tx/index.d.ts +0 -19
  382. package/es/tx/index.mjs +0 -115
  383. package/es/tx/index.mjs.map +0 -1
  384. package/src/apis/compiler/code-model-v4.yaml +0 -2442
  385. package/src/apis/node/code-model-v4.yaml +0 -10080
  386. package/src/tx/index.ts +0 -129
  387. package/types-legacy/ts4.2/tx/index.d.ts +0 -19
  388. package/types-legacy/ts4.5/tx/index.d.ts +0 -19
@@ -0,0 +1,146 @@
1
+ import { Encoded } from '../utils/encoder';
2
+ import { buildTx, buildTxHash, unpackTx } from './builder';
3
+ import { Tag } from './builder/constants';
4
+ import { verify } from '../utils/crypto';
5
+ import { getBufferToSign } from '../account/Memory';
6
+ import { IllegalArgumentError, InternalError, TransactionError } from '../utils/errors';
7
+ import Node from '../Node';
8
+ import getTransactionSignerAddress from './transaction-signer';
9
+
10
+ /**
11
+ * Calculates the cost of transaction execution
12
+ * Provides an upper cost of contract-call-related transactions because of `gasLimit`.
13
+ * Also assumes that oracle query fee is 0 unless it is provided in options.
14
+ * @param transaction - Transaction to calculate the cost of
15
+ * @param innerTx - Should be provided if transaction wrapped with Tag.PayingForTx
16
+ * @param gasUsed - Amount of gas actually used to make calculation more accurate
17
+ * @param queryFee - Oracle query fee
18
+ * @param isInitiator - Is transaction signer an initiator of state channel
19
+ */
20
+ export function getExecutionCost(
21
+ transaction: Encoded.Transaction,
22
+ {
23
+ innerTx, gasUsed, queryFee, isInitiator,
24
+ }: {
25
+ innerTx?: 'fee-payer' | 'freeloader';
26
+ gasUsed?: number;
27
+ queryFee?: string;
28
+ isInitiator?: boolean;
29
+ } = {},
30
+ ): bigint {
31
+ const params = unpackTx(transaction);
32
+ if (params.tag === Tag.SignedTx) {
33
+ throw new IllegalArgumentError('Transaction shouldn\'t be a SignedTx, use `getExecutionCostBySignedTx` instead');
34
+ }
35
+
36
+ let res = 0n;
37
+ if ('fee' in params && innerTx !== 'freeloader') {
38
+ res += BigInt(params.fee);
39
+ }
40
+ if (params.tag === Tag.NameClaimTx) {
41
+ res += BigInt(params.nameFee);
42
+ }
43
+ if (params.tag === Tag.OracleQueryTx) {
44
+ res += BigInt(params.queryFee);
45
+ }
46
+ if (params.tag === Tag.OracleResponseTx) {
47
+ res -= BigInt(queryFee ?? 0);
48
+ }
49
+ if (params.tag === Tag.ChannelSettleTx) {
50
+ if (isInitiator === true) res -= BigInt(params.initiatorAmountFinal);
51
+ if (isInitiator === false) res -= BigInt(params.responderAmountFinal);
52
+ }
53
+ if (
54
+ ((params.tag === Tag.SpendTx && params.senderId !== params.recipientId)
55
+ || params.tag === Tag.ContractCreateTx || params.tag === Tag.ContractCallTx
56
+ || params.tag === Tag.ChannelDepositTx) && innerTx !== 'fee-payer'
57
+ ) {
58
+ res += BigInt(params.amount);
59
+ }
60
+ if (params.tag === Tag.ContractCreateTx) res += BigInt(params.deposit);
61
+ if (
62
+ (params.tag === Tag.ContractCreateTx || params.tag === Tag.ContractCallTx
63
+ || params.tag === Tag.GaAttachTx || params.tag === Tag.GaMetaTx)
64
+ && innerTx !== 'freeloader'
65
+ ) {
66
+ res += BigInt(params.gasPrice) * BigInt(gasUsed ?? params.gasLimit);
67
+ }
68
+ if (params.tag === Tag.GaMetaTx || params.tag === Tag.PayingForTx) {
69
+ res += getExecutionCost(
70
+ buildTx(params.tx.encodedTx),
71
+ params.tag === Tag.PayingForTx ? { innerTx: 'fee-payer' } : {},
72
+ );
73
+ }
74
+ return res;
75
+ }
76
+
77
+ /**
78
+ * Calculates the cost of signed transaction execution
79
+ * @param transaction - Transaction to calculate the cost of
80
+ * @param networkId - Network id used to sign the transaction
81
+ * @param options - Options
82
+ */
83
+ export function getExecutionCostBySignedTx(
84
+ transaction: Encoded.Transaction,
85
+ networkId: string,
86
+ options?: Omit<Parameters<typeof getExecutionCost>[1], 'innerTx'>,
87
+ ): bigint {
88
+ const params = unpackTx(transaction, Tag.SignedTx);
89
+ if (params.encodedTx.tag === Tag.GaMetaTx) {
90
+ return getExecutionCost(buildTx(params.encodedTx), options);
91
+ }
92
+
93
+ const tx = buildTx(params.encodedTx);
94
+ const address = getTransactionSignerAddress(tx);
95
+ const [isInnerTx, isNotInnerTx] = [true, false]
96
+ .map((f) => verify(getBufferToSign(tx, networkId, f), params.signatures[0], address));
97
+ if (!isInnerTx && !isNotInnerTx) throw new TransactionError('Can\'t verify signature');
98
+ return getExecutionCost(
99
+ buildTx(params.encodedTx),
100
+ { ...isInnerTx && { innerTx: 'freeloader' }, ...options },
101
+ );
102
+ }
103
+
104
+ /**
105
+ * Calculates the cost of signed and not signed transaction execution using node
106
+ * @param transaction - Transaction to calculate the cost of
107
+ * @param node - Node to use
108
+ * @param isMined - Is transaction already mined or not
109
+ * @param options - Options
110
+ */
111
+ export async function getExecutionCostUsingNode(
112
+ transaction: Encoded.Transaction,
113
+ node: Node,
114
+ { isMined, ...options }: { isMined?: boolean } & Parameters<typeof getExecutionCost>[1] = {},
115
+ ): Promise<bigint> {
116
+ let params = unpackTx(transaction);
117
+ const isSignedTx = params.tag === Tag.SignedTx;
118
+ const txHash = isSignedTx && isMined === true && buildTxHash(transaction);
119
+ if (params.tag === Tag.SignedTx) params = params.encodedTx;
120
+
121
+ // TODO: set gasUsed for PayingForTx after solving https://github.com/aeternity/aeternity/issues/4087
122
+ if (
123
+ options.gasUsed == null && txHash !== false
124
+ && [Tag.ContractCreateTx, Tag.ContractCallTx, Tag.GaAttachTx, Tag.GaMetaTx].includes(params.tag)
125
+ ) {
126
+ const { callInfo, gaInfo } = await node.getTransactionInfoByHash(txHash);
127
+ const combinedInfo = callInfo ?? gaInfo;
128
+ if (combinedInfo == null) {
129
+ throw new InternalError(`callInfo and gaInfo is not available for transaction ${txHash}`);
130
+ }
131
+ options.gasUsed = combinedInfo.gasUsed;
132
+ }
133
+
134
+ if (options.queryFee == null && Tag.OracleResponseTx === params.tag) {
135
+ options.queryFee = (await node.getOracleByPubkey(params.oracleId)).queryFee.toString();
136
+ }
137
+
138
+ if (options.isInitiator == null && Tag.ChannelSettleTx === params.tag && isMined !== true) {
139
+ const { initiatorId } = await node.getChannelByPubkey(params.channelId);
140
+ options.isInitiator = params.fromId === initiatorId;
141
+ }
142
+
143
+ return isSignedTx
144
+ ? getExecutionCostBySignedTx(transaction, await node.getNetworkId(), options)
145
+ : getExecutionCost(transaction, options);
146
+ }
@@ -0,0 +1,27 @@
1
+ import { Encoded } from '../utils/encoder';
2
+ import { buildTx, getSchema, unpackTx } from './builder';
3
+ import { Tag } from './builder/constants';
4
+ import { TransactionError, UnexpectedTsError } from '../utils/errors';
5
+
6
+ /**
7
+ * Returns account address that signed a transaction
8
+ * @param transaction - transaction to get a signer of
9
+ */
10
+ export default function getTransactionSignerAddress(
11
+ transaction: Encoded.Transaction,
12
+ ): Encoded.AccountAddress {
13
+ const params = unpackTx(transaction);
14
+ switch (params.tag) {
15
+ case Tag.SignedTx:
16
+ return getTransactionSignerAddress(buildTx(params.encodedTx));
17
+ case Tag.GaMetaTx:
18
+ return params.gaId;
19
+ default:
20
+ }
21
+
22
+ const nonce = getSchema(params.tag, params.version).find(([name]) => name === 'nonce')?.[1];
23
+ if (nonce == null) throw new TransactionError(`Transaction doesn't have nonce: ${Tag[params.tag]}`);
24
+ if (!('senderKey' in nonce)) throw new UnexpectedTsError();
25
+ const address = params[nonce.senderKey as keyof typeof params] as unknown as string;
26
+ return address.replace(/^ok_/, 'ak_') as Encoded.AccountAddress;
27
+ }
@@ -1,7 +1,6 @@
1
- import BigNumber from 'bignumber.js';
2
1
  import { hash, verify } from '../utils/crypto';
3
- import { RawTxObject, TxParamsCommon, TxSchema } from './builder/schema';
4
- import { ProtocolToVmAbi } from './builder/field-types/ct-version';
2
+ import { TxUnpacked } from './builder/schema.generated';
3
+ import { CtVersion, ProtocolToVmAbi } from './builder/field-types/ct-version';
5
4
  import { Tag, ConsensusProtocolVersion } from './builder/constants';
6
5
  import { buildTx, unpackTx } from './builder';
7
6
  import { concatBuffers, isAccountNotFoundError } from '../utils/other';
@@ -9,6 +8,9 @@ import { Encoded, decode } from '../utils/encoder';
9
8
  import Node, { TransformNodeType } from '../Node';
10
9
  import { Account } from '../apis/node';
11
10
  import { genAggressiveCacheGetResponsesPolicy } from '../utils/autorest';
11
+ import { UnexpectedTsError } from '../utils/errors';
12
+ import getTransactionSignerAddress from './transaction-signer';
13
+ import { getExecutionCostUsingNode } from './execution-cost';
12
14
 
13
15
  export interface ValidatorResult {
14
16
  message: string;
@@ -16,13 +18,11 @@ export interface ValidatorResult {
16
18
  checkedKeys: string[];
17
19
  }
18
20
 
19
- type UnpackedTx = ReturnType<typeof unpackTx>['tx'];
20
-
21
21
  type Validator = (
22
- tx: UnpackedTx,
22
+ tx: TxUnpacked,
23
23
  options: {
24
24
  // TODO: remove after fixing node types
25
- account?: TransformNodeType<Account> & { id: Encoded.AccountAddress };
25
+ account: TransformNodeType<Account> & { id: Encoded.AccountAddress };
26
26
  nodeNetworkId: string;
27
27
  parentTxTypes: Tag[];
28
28
  node: Node;
@@ -33,39 +33,26 @@ type Validator = (
33
33
 
34
34
  const validators: Validator[] = [];
35
35
 
36
- const getSenderAddress = (
37
- tx: TxParamsCommon | RawTxObject<TxSchema>,
38
- ): Encoded.AccountAddress | undefined => [
39
- 'senderId', 'accountId', 'ownerId', 'callerId',
40
- 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId',
41
- ]
42
- .map((key: keyof TxSchema) => tx[key])
43
- .filter((a) => a)
44
- .map((a) => a?.toString().replace(/^ok_/, 'ak_'))[0] as Encoded.AccountAddress | undefined;
45
-
46
36
  async function verifyTransactionInternal(
47
- tx: UnpackedTx,
37
+ tx: TxUnpacked,
48
38
  node: Node,
49
39
  parentTxTypes: Tag[],
50
40
  ): Promise<ValidatorResult[]> {
51
- const address = getSenderAddress(tx)
52
- ?? (tx.tag === Tag.SignedTx ? getSenderAddress(tx.encodedTx) : undefined);
41
+ const address = getTransactionSignerAddress(buildTx(tx));
53
42
  const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([
54
- address == null
55
- ? undefined
56
- : node.getAccountByPubkey(address)
57
- .catch((error) => {
58
- if (!isAccountNotFoundError(error)) throw error;
59
- return { id: address, balance: 0n, nonce: 0 };
60
- })
61
- // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537
62
- .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),
43
+ node.getAccountByPubkey(address)
44
+ .catch((error) => {
45
+ if (!isAccountNotFoundError(error)) throw error;
46
+ return { id: address, balance: 0n, nonce: 0 };
47
+ })
48
+ // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537
49
+ .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),
63
50
  node.getCurrentKeyBlockHeight(),
64
51
  node.getNodeInfo(),
65
52
  ]);
66
53
 
67
54
  return (await Promise.all(
68
- validators.map((v) => v(
55
+ validators.map(async (v) => v(
69
56
  tx,
70
57
  {
71
58
  node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,
@@ -88,15 +75,19 @@ export default async function verifyTransaction(
88
75
  transaction: Parameters<typeof unpackTx>[0],
89
76
  nodeNotCached: Node,
90
77
  ): Promise<ValidatorResult[]> {
91
- const node = new Node(nodeNotCached.$host, { ignoreVersion: true });
92
- node.pipeline.addPolicy(genAggressiveCacheGetResponsesPolicy());
78
+ const node = new Node(nodeNotCached.$host, {
79
+ ignoreVersion: true,
80
+ pipeline: nodeNotCached.pipeline.clone(),
81
+ additionalPolicies: [genAggressiveCacheGetResponsesPolicy()],
82
+ });
93
83
  return verifyTransactionInternal(unpackTx(transaction), node, []);
94
84
  }
95
85
 
96
86
  validators.push(
97
- ({ encodedTx, signatures }, { account, nodeNetworkId, parentTxTypes }) => {
87
+ (tx, { account, nodeNetworkId, parentTxTypes }) => {
88
+ if (tx.tag !== Tag.SignedTx) return [];
89
+ const { encodedTx, signatures } = tx;
98
90
  if ((encodedTx ?? signatures) == null) return [];
99
- if (account == null) return [];
100
91
  if (signatures.length !== 1) return []; // TODO: Support multisignature like in state channels
101
92
  const prefix = Buffer.from([
102
93
  nodeNetworkId,
@@ -114,82 +105,61 @@ validators.push(
114
105
  checkedKeys: ['encodedTx', 'signatures'],
115
106
  }];
116
107
  },
117
- async ({ encodedTx, tx, tag }, { node, parentTxTypes }) => {
118
- if ((encodedTx ?? tx) == null) return [];
119
- return verifyTransactionInternal(encodedTx ?? tx, node, [...parentTxTypes, tag]);
108
+ async (tx, { node, parentTxTypes }) => {
109
+ let nestedTx;
110
+ if ('encodedTx' in tx) nestedTx = tx.encodedTx;
111
+ if ('tx' in tx) nestedTx = tx.tx;
112
+ if (nestedTx == null) return [];
113
+ return verifyTransactionInternal(nestedTx, node, [...parentTxTypes, tx.tag]);
120
114
  },
121
- ({ ttl }, { height }) => {
122
- if (ttl == null) return [];
123
- ttl = +ttl;
124
- if (ttl === 0 || ttl >= height) return [];
115
+ (tx, { height }) => {
116
+ if (!('ttl' in tx)) return [];
117
+ if (tx.ttl === 0 || tx.ttl >= height) return [];
125
118
  return [{
126
- message: `TTL ${ttl} is already expired, current height is ${height}`,
119
+ message: `TTL ${tx.ttl} is already expired, current height is ${height}`,
127
120
  key: 'ExpiredTTL',
128
121
  checkedKeys: ['ttl'],
129
122
  }];
130
123
  },
131
- ({
132
- amount, fee, nameFee, tx, tag,
133
- }, { account, parentTxTypes }) => {
134
- if (account == null) return [];
135
- if ((amount ?? fee ?? nameFee) == null) return [];
136
- fee ??= 0;
137
- const cost = new BigNumber(fee).plus(nameFee ?? 0).plus(amount ?? 0)
138
- .plus(tag === Tag.PayingForTx ? tx.encodedTx.fee : 0)
139
- .minus(parentTxTypes.includes(Tag.PayingForTx) ? fee : 0);
140
- if (cost.lte(account.balance.toString())) return [];
124
+ async (tx, { account, parentTxTypes, node }) => {
125
+ if (parentTxTypes.length !== 0) return [];
126
+ const cost = await getExecutionCostUsingNode(buildTx(tx), node).catch(() => 0n);
127
+ if (cost <= account.balance) return [];
141
128
  return [{
142
- message: `Account balance ${account.balance.toString()} is not enough to execute the transaction that costs ${cost.toFixed()}`,
129
+ message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost}`,
143
130
  key: 'InsufficientBalance',
144
- checkedKeys: ['amount', 'fee', 'nameFee'],
131
+ checkedKeys: ['amount', 'fee', 'nameFee', 'gasLimit', 'gasPrice'],
145
132
  }];
146
133
  },
147
- ({ signatures, tag }, { account }) => {
148
- if (account == null) return [];
134
+ (tx, { account }) => {
149
135
  let message;
150
- if (tag === Tag.SignedTx && account.kind === 'generalized' && signatures.length !== 0) {
136
+ if (tx.tag === Tag.SignedTx && account.kind === 'generalized' && tx.signatures.length !== 0) {
151
137
  message = 'Generalized account can\'t be used to generate SignedTx with signatures';
152
138
  }
153
- if (tag === Tag.GaMetaTx && account.kind === 'basic') {
139
+ if (tx.tag === Tag.GaMetaTx && account.kind === 'basic') {
154
140
  message = 'Basic account can\'t be used to generate GaMetaTx';
155
141
  }
156
142
  if (message == null) return [];
157
143
  return [{ message, key: 'InvalidAccountType', checkedKeys: ['tag'] }];
158
144
  },
159
- ({ nonce }, { account, parentTxTypes }) => {
160
- if (nonce == null || account == null || parentTxTypes.includes(Tag.GaMetaTx)) return [];
161
- nonce = +nonce;
162
- const validNonce = account.nonce + 1;
163
- if (nonce === validNonce) return [];
164
- return [{
165
- ...nonce < validNonce
166
- ? {
167
- message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,
168
- key: 'NonceAlreadyUsed',
169
- }
170
- : {
171
- message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,
172
- key: 'NonceHigh',
173
- },
174
- checkedKeys: ['nonce'],
175
- }];
176
- },
177
- ({ ctVersion, abiVersion, tag }, { consensusProtocolVersion }) => {
178
- const oracleCall = Tag.Oracle === tag || Tag.OracleRegisterTx === tag;
179
- const contractCreate = Tag.ContractCreateTx === tag || Tag.GaAttachTx === tag;
180
- const contractCall = Tag.ContractCallTx === tag || Tag.GaMetaTx === tag;
145
+ // TODO: revert nonce check
146
+ (tx, { consensusProtocolVersion }) => {
147
+ const oracleCall = Tag.Oracle === tx.tag || Tag.OracleRegisterTx === tx.tag;
148
+ const contractCreate = Tag.ContractCreateTx === tx.tag || Tag.GaAttachTx === tx.tag;
149
+ const contractCall = Tag.ContractCallTx === tx.tag || Tag.GaMetaTx === tx.tag;
181
150
  const type = (oracleCall ? 'oracle-call' : null)
182
151
  ?? (contractCreate ? 'contract-create' : null)
183
152
  ?? (contractCall ? 'contract-call' : null);
184
153
  if (type == null) return [];
185
- // TODO: remove assertion after fixing buildTx types
186
- const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as unknown as {
187
- abiVersion: any[];
188
- vmVersion: any[];
154
+ const protocol = ProtocolToVmAbi[consensusProtocolVersion][type] as {
155
+ abiVersion: readonly any[];
156
+ vmVersion: readonly any[];
189
157
  };
190
158
 
191
- // If not contract create tx
192
- if (ctVersion == null) ctVersion = { abiVersion };
159
+ let ctVersion: Partial<CtVersion> | undefined;
160
+ if ('abiVersion' in tx) ctVersion = { abiVersion: tx.abiVersion };
161
+ if ('ctVersion' in tx) ctVersion = tx.ctVersion;
162
+ if (ctVersion == null) throw new UnexpectedTsError();
193
163
  if (
194
164
  !protocol.abiVersion.includes(ctVersion.abiVersion)
195
165
  || (contractCreate && !protocol.vmVersion.includes(ctVersion.vmVersion))
@@ -202,14 +172,13 @@ validators.push(
202
172
  }
203
173
  return [];
204
174
  },
205
- async ({ contractId, tag }, { node }) => {
206
- if (Tag.ContractCallTx !== tag) return [];
207
- contractId = contractId as Encoded.ContractAddress;
175
+ async (tx, { node }) => {
176
+ if (Tag.ContractCallTx !== tx.tag) return [];
208
177
  try {
209
- const { active } = await node.getContract(contractId);
178
+ const { active } = await node.getContract(tx.contractId);
210
179
  if (active) return [];
211
180
  return [{
212
- message: `Contract ${contractId} is not active`,
181
+ message: `Contract ${tx.contractId} is not active`,
213
182
  key: 'ContractNotActive',
214
183
  checkedKeys: ['contractId'],
215
184
  }];
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright (c) 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  import BigNumber from 'bignumber.js';
18
2
  import { isBigNumber } from './bignumber';
19
3
  import { ArgumentError } from './errors';
@@ -2,7 +2,7 @@ import { RestError, PipelineResponse, PipelinePolicy } from '@azure/core-rest-pi
2
2
  import { AdditionalPolicyConfig } from '@azure/core-client';
3
3
  import { pause } from './other';
4
4
  import semverSatisfies from './semver-satisfies';
5
- import { UnsupportedVersionError } from './errors';
5
+ import { UnexpectedTsError, UnsupportedVersionError } from './errors';
6
6
 
7
7
  export const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {
8
8
  const requestQueues = new Map<string, Promise<unknown>>();
@@ -48,18 +48,21 @@ export const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {
48
48
  };
49
49
  };
50
50
 
51
- export const genAggressiveCacheGetResponsesPolicy = (): PipelinePolicy => {
51
+ export const genAggressiveCacheGetResponsesPolicy = (): AdditionalPolicyConfig => {
52
52
  const getRequests = new Map<string, Promise<PipelineResponse>>();
53
53
 
54
54
  return {
55
- name: 'aggressive-cache-get-responses',
56
- async sendRequest(request, next) {
57
- if (request.method !== 'GET') return next(request);
58
- const key = JSON.stringify([request.url, request.body]);
59
- const response = getRequests.get(key) ?? next(request);
60
- getRequests.set(key, response);
61
- return response;
55
+ policy: {
56
+ name: 'aggressive-cache-get-responses',
57
+ async sendRequest(request, next) {
58
+ if (request.method !== 'GET') return next(request);
59
+ const key = JSON.stringify([request.url, request.body]);
60
+ const response = getRequests.get(key) ?? next(request);
61
+ getRequests.set(key, response);
62
+ return response;
63
+ },
62
64
  },
65
+ position: 'perCall',
63
66
  };
64
67
  };
65
68
 
@@ -94,15 +97,53 @@ export const genErrorFormatterPolicy = (
94
97
  export const genVersionCheckPolicy = (
95
98
  name: string,
96
99
  ignorePath: string,
97
- versionPromise: Promise<string>,
100
+ versionPromise: Promise<string | Error>,
98
101
  geVersion: string,
99
102
  ltVersion: string,
100
103
  ): PipelinePolicy => ({
101
104
  name: 'version-check',
102
105
  async sendRequest(request, next) {
103
106
  if (new URL(request.url).pathname === ignorePath) return next(request);
104
- const args = [await versionPromise, geVersion, ltVersion] as const;
107
+ const version = await versionPromise;
108
+ if (version instanceof Error) throw version;
109
+ const args = [version, geVersion, ltVersion] as const;
105
110
  if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);
106
111
  return next(request);
107
112
  },
108
113
  });
114
+
115
+ export const genRetryOnFailurePolicy = (
116
+ retryCount: number,
117
+ retryOverallDelay: number,
118
+ ): AdditionalPolicyConfig => ({
119
+ policy: {
120
+ name: 'retry-on-failure',
121
+ async sendRequest(request, next) {
122
+ const statusesToNotRetry = [200, 400, 403];
123
+
124
+ const intervals = new Array(retryCount).fill(0)
125
+ .map((_, idx) => ((idx + 1) / retryCount) ** 2);
126
+ const intervalSum = intervals.reduce((a, b) => a + b);
127
+ const intervalsInMs = intervals.map((el) => (el / intervalSum) * retryOverallDelay);
128
+
129
+ let error: Error | undefined;
130
+ for (let attempt = 0; attempt <= retryCount; attempt += 1) {
131
+ if (error != null) {
132
+ if (
133
+ !(error instanceof RestError)
134
+ || statusesToNotRetry.includes(error.response?.status ?? 0)
135
+ ) throw error;
136
+ await pause(intervalsInMs[attempt - 1]);
137
+ }
138
+ try {
139
+ return await next(request);
140
+ } catch (e) {
141
+ error = e;
142
+ }
143
+ }
144
+ if (error == null) throw new UnexpectedTsError();
145
+ throw error;
146
+ },
147
+ },
148
+ position: 'perCall',
149
+ });
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  import BigNumber from 'bignumber.js';
18
2
  import { NoSerializerFoundError, TypeError } from './errors';
19
3
 
@@ -1,19 +1,3 @@
1
- /*
2
- * ISC License (ISC)
3
- * Copyright 2018 aeternity developers
4
- *
5
- * Permission to use, copy, modify, and/or distribute this software for any
6
- * purpose with or without fee is hereby granted, provided that the above
7
- * copyright notice and this permission notice appear in all copies.
8
- *
9
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
- * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
11
- * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
- * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13
- * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14
- * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15
- * PERFORMANCE OF THIS SOFTWARE.
16
- */
17
1
  import nacl, { SignKeyPair } from 'tweetnacl';
18
2
  // js extension is required for mjs build, not importing the whole package to reduce bundle size
19
3
  // eslint-disable-next-line import/extensions