@aeternity/aepp-sdk 11.0.1 → 12.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -22
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +2 -1
  6. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +20765 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +70 -0
  14. package/es/AeSdkAepp.mjs +176 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +213 -0
  17. package/es/AeSdkBase.mjs +314 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +104 -0
  20. package/es/AeSdkWallet.mjs +326 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +41 -0
  23. package/es/Node.mjs +147 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +68 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +26 -0
  29. package/es/account/Memory.mjs +103 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +80 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +222 -0
  35. package/es/aens.mjs +338 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +105 -46
  56. package/es/aepp-wallet-communication/schema.mjs +251 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +62 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1065 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4166 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +248 -0
  92. package/es/chain.mjs +560 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/handlers.mjs +164 -131
  96. package/es/channel/handlers.mjs.map +1 -1
  97. package/es/channel/index.d.ts +625 -0
  98. package/es/channel/index.mjs +897 -902
  99. package/es/channel/index.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +101 -0
  101. package/es/channel/internal.mjs +136 -85
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Compiler.d.ts +18 -0
  104. package/es/contract/Compiler.mjs +68 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +127 -0
  107. package/es/contract/aci.mjs +225 -193
  108. package/es/contract/aci.mjs.map +1 -1
  109. package/es/contract/ga.d.ts +69 -0
  110. package/es/contract/ga.mjs +195 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +71 -0
  113. package/es/contract/methods.mjs +104 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/deprecated/index.d.ts +143 -0
  116. package/es/deprecated/index.mjs +162 -0
  117. package/es/deprecated/index.mjs.map +1 -0
  118. package/es/deprecated/methods.d.ts +18 -0
  119. package/es/deprecated/methods.mjs +26 -0
  120. package/es/deprecated/methods.mjs.map +1 -0
  121. package/es/index.d.ts +35 -0
  122. package/es/index.mjs +35 -40
  123. package/es/index.mjs.map +1 -1
  124. package/es/oracle.d.ts +161 -0
  125. package/es/oracle.mjs +306 -0
  126. package/es/oracle.mjs.map +1 -0
  127. package/es/spend.d.ts +62 -0
  128. package/es/spend.mjs +111 -0
  129. package/es/spend.mjs.map +1 -0
  130. package/es/tx/builder/address.d.ts +25 -0
  131. package/es/tx/builder/address.mjs +45 -0
  132. package/es/tx/builder/address.mjs.map +1 -0
  133. package/es/tx/builder/constants.d.ts +70 -0
  134. package/es/tx/builder/constants.mjs +61 -47
  135. package/es/tx/builder/constants.mjs.map +1 -1
  136. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  137. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  138. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  139. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  140. package/es/tx/builder/field-types/deposit.mjs +19 -0
  141. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  142. package/es/tx/builder/field-types/fee.d.ts +25 -0
  143. package/es/tx/builder/field-types/fee.mjs +150 -0
  144. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  145. package/es/tx/builder/field-types/field.d.ts +6 -0
  146. package/es/tx/builder/field-types/field.mjs +15 -0
  147. package/es/tx/builder/field-types/field.mjs.map +1 -0
  148. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  149. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  150. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  151. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  152. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  153. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  154. package/es/tx/builder/field-types/index.d.ts +70 -0
  155. package/es/tx/builder/field-types/index.mjs +25 -0
  156. package/es/tx/builder/field-types/index.mjs.map +1 -0
  157. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  158. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  159. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  160. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  161. package/es/tx/builder/field-types/name-id.mjs +19 -0
  162. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  163. package/es/tx/builder/field-types/name.d.ts +13 -0
  164. package/es/tx/builder/field-types/name.mjs +18 -0
  165. package/es/tx/builder/field-types/name.mjs.map +1 -0
  166. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  167. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  168. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  169. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  170. package/es/tx/builder/field-types/u-int.mjs +14 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  172. package/es/tx/builder/helpers.d.ts +125 -0
  173. package/es/tx/builder/helpers.mjs +94 -198
  174. package/es/tx/builder/helpers.mjs.map +1 -1
  175. package/es/tx/builder/index.d.ts +88 -0
  176. package/es/tx/builder/index.mjs +167 -358
  177. package/es/tx/builder/index.mjs.map +1 -1
  178. package/es/tx/builder/schema.d.ts +1201 -0
  179. package/es/tx/builder/schema.mjs +175 -561
  180. package/es/tx/builder/schema.mjs.map +1 -1
  181. package/es/tx/index.d.ts +64 -0
  182. package/es/tx/index.mjs +151 -265
  183. package/es/tx/index.mjs.map +1 -1
  184. package/es/tx/validator.d.ts +20 -0
  185. package/es/tx/validator.mjs +104 -124
  186. package/es/tx/validator.mjs.map +1 -1
  187. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  188. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  189. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  190. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  191. package/es/typings/bip32-path/index.d.mjs +2 -0
  192. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  193. package/es/typings/blakejs/index.d.mjs.map +1 -1
  194. package/es/typings/sha-js/index.d.mjs +2 -0
  195. package/es/typings/sha-js/index.d.mjs.map +1 -0
  196. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  197. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  198. package/es/utils/amount-formatter.d.ts +42 -0
  199. package/es/utils/amount-formatter.mjs +36 -49
  200. package/es/utils/amount-formatter.mjs.map +1 -1
  201. package/es/utils/autorest.d.ts +6 -0
  202. package/es/utils/autorest.mjs +97 -0
  203. package/es/utils/autorest.mjs.map +1 -0
  204. package/es/utils/bignumber.d.ts +13 -0
  205. package/es/utils/bignumber.mjs +11 -8
  206. package/es/utils/bignumber.mjs.map +1 -1
  207. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  208. package/es/utils/bytes.mjs +11 -15
  209. package/es/utils/bytes.mjs.map +1 -1
  210. package/es/utils/crypto.d.ts +88 -0
  211. package/es/utils/crypto.mjs +64 -98
  212. package/es/utils/crypto.mjs.map +1 -1
  213. package/es/utils/encoder-types.d.ts +61 -0
  214. package/es/utils/encoder-types.mjs +36 -0
  215. package/es/utils/encoder-types.mjs.map +1 -0
  216. package/es/utils/encoder.d.ts +25 -0
  217. package/es/utils/encoder.mjs +71 -59
  218. package/es/utils/encoder.mjs.map +1 -1
  219. package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
  220. package/es/utils/errors.mjs +313 -136
  221. package/es/utils/errors.mjs.map +1 -1
  222. package/es/utils/hd-wallet.d.ts +50 -0
  223. package/es/utils/hd-wallet.mjs +86 -45
  224. package/es/utils/hd-wallet.mjs.map +1 -1
  225. package/es/utils/json-big.d.ts +5 -0
  226. package/es/utils/json-big.mjs +12 -16
  227. package/es/utils/json-big.mjs.map +1 -1
  228. package/es/utils/keystore.d.ts +51 -0
  229. package/es/utils/keystore.mjs +101 -194
  230. package/es/utils/keystore.mjs.map +1 -1
  231. package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
  232. package/es/utils/mptree.mjs +22 -18
  233. package/es/utils/mptree.mjs.map +1 -1
  234. package/es/utils/other.d.ts +20 -0
  235. package/es/utils/other.mjs +32 -35
  236. package/es/utils/other.mjs.map +1 -1
  237. package/es/utils/semver-satisfies.d.ts +1 -0
  238. package/es/utils/semver-satisfies.mjs +2 -2
  239. package/es/utils/semver-satisfies.mjs.map +1 -1
  240. package/es/utils/string.d.ts +24 -0
  241. package/es/utils/string.mjs +8 -10
  242. package/es/utils/string.mjs.map +1 -1
  243. package/package.json +55 -43
  244. package/src/AeSdk.ts +68 -0
  245. package/src/AeSdkAepp.ts +176 -0
  246. package/src/AeSdkBase.ts +338 -0
  247. package/src/AeSdkWallet.ts +348 -0
  248. package/src/Node.ts +173 -0
  249. package/src/account/Base.ts +124 -0
  250. package/src/account/Memory.ts +98 -0
  251. package/src/account/Rpc.ts +69 -0
  252. package/src/aens.ts +407 -0
  253. package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
  254. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
  255. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
  256. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
  257. package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
  258. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  259. package/src/aepp-wallet-communication/schema.ts +224 -0
  260. package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
  261. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  262. package/src/apis/compiler/compiler.ts +585 -0
  263. package/src/apis/compiler/index.ts +2 -0
  264. package/src/apis/compiler/models/index.ts +301 -0
  265. package/src/apis/compiler/models/mappers.ts +583 -0
  266. package/src/apis/compiler/models/parameters.ts +93 -0
  267. package/src/apis/node/code-model-v4.yaml +10080 -0
  268. package/src/apis/node/index.ts +2 -0
  269. package/src/apis/node/models/index.ts +1257 -0
  270. package/src/apis/node/models/mappers.ts +4280 -0
  271. package/src/apis/node/models/parameters.ts +188 -0
  272. package/src/apis/node/node.ts +1299 -0
  273. package/src/chain.ts +502 -0
  274. package/src/channel/handlers.ts +817 -0
  275. package/src/channel/index.ts +1025 -0
  276. package/src/channel/internal.ts +361 -0
  277. package/src/contract/Compiler.ts +67 -0
  278. package/src/contract/aci.ts +538 -0
  279. package/src/contract/ga.ts +199 -0
  280. package/src/contract/methods.ts +123 -0
  281. package/src/deprecated/index.ts +172 -0
  282. package/src/deprecated/methods.ts +25 -0
  283. package/src/index.ts +56 -0
  284. package/src/oracle.ts +364 -0
  285. package/src/spend.ts +164 -0
  286. package/src/tx/builder/address.ts +50 -0
  287. package/src/tx/builder/constants.ts +126 -0
  288. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  289. package/src/tx/builder/field-types/deposit.ts +21 -0
  290. package/src/tx/builder/field-types/fee.ts +143 -0
  291. package/src/tx/builder/field-types/field.ts +9 -0
  292. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  293. package/src/tx/builder/field-types/gas-price.ts +16 -0
  294. package/src/tx/builder/field-types/index.ts +45 -0
  295. package/src/tx/builder/field-types/name-fee.ts +32 -0
  296. package/src/tx/builder/field-types/name-id.ts +20 -0
  297. package/src/tx/builder/field-types/name.ts +18 -0
  298. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  299. package/src/tx/builder/field-types/u-int.ts +16 -0
  300. package/src/tx/builder/helpers.ts +248 -0
  301. package/src/tx/builder/index.ts +400 -0
  302. package/src/tx/builder/schema.ts +727 -0
  303. package/src/tx/index.ts +192 -0
  304. package/src/tx/validator.ts +230 -0
  305. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  306. package/src/typings/@aeternity__uuid/index.d.ts +5 -0
  307. package/src/typings/bip32-path/index.d.ts +33 -0
  308. package/src/typings/blakejs/index.d.ts +4 -32
  309. package/src/typings/sha-js/index.d.ts +5 -0
  310. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  311. package/src/utils/amount-formatter.ts +56 -69
  312. package/src/utils/autorest.ts +93 -0
  313. package/src/utils/bignumber.ts +11 -12
  314. package/src/utils/bytes.ts +29 -31
  315. package/src/utils/crypto.ts +205 -0
  316. package/src/utils/encoder-types.ts +63 -0
  317. package/src/utils/encoder.ts +116 -71
  318. package/src/utils/errors.ts +482 -366
  319. package/src/utils/hd-wallet.ts +166 -0
  320. package/src/utils/json-big.ts +27 -0
  321. package/src/utils/keystore.ts +182 -0
  322. package/src/utils/mptree.ts +64 -61
  323. package/src/utils/other.ts +34 -41
  324. package/src/utils/semver-satisfies.ts +15 -11
  325. package/src/utils/string.ts +18 -20
  326. package/es/account/base.mjs +0 -179
  327. package/es/account/base.mjs.map +0 -1
  328. package/es/account/memory.mjs +0 -99
  329. package/es/account/memory.mjs.map +0 -1
  330. package/es/account/multiple.mjs +0 -179
  331. package/es/account/multiple.mjs.map +0 -1
  332. package/es/ae/aens.mjs +0 -404
  333. package/es/ae/aens.mjs.map +0 -1
  334. package/es/ae/aepp.mjs +0 -45
  335. package/es/ae/aepp.mjs.map +0 -1
  336. package/es/ae/contract.mjs +0 -159
  337. package/es/ae/contract.mjs.map +0 -1
  338. package/es/ae/index.mjs +0 -207
  339. package/es/ae/index.mjs.map +0 -1
  340. package/es/ae/oracle.mjs +0 -339
  341. package/es/ae/oracle.mjs.map +0 -1
  342. package/es/ae/universal.mjs +0 -45
  343. package/es/ae/universal.mjs.map +0 -1
  344. package/es/ae/wallet.mjs +0 -50
  345. package/es/ae/wallet.mjs.map +0 -1
  346. package/es/amount-formatter.d.ts +0 -58
  347. package/es/bignumber.d.ts +0 -18
  348. package/es/chain/index.mjs +0 -272
  349. package/es/chain/index.mjs.map +0 -1
  350. package/es/chain/node.mjs +0 -442
  351. package/es/chain/node.mjs.map +0 -1
  352. package/es/contract/compiler.mjs +0 -115
  353. package/es/contract/compiler.mjs.map +0 -1
  354. package/es/contract/ga/helpers.mjs +0 -30
  355. package/es/contract/ga/helpers.mjs.map +0 -1
  356. package/es/contract/ga/index.mjs +0 -178
  357. package/es/contract/ga/index.mjs.map +0 -1
  358. package/es/crypto-ts.d.ts +0 -9
  359. package/es/encoder.d.ts +0 -26
  360. package/es/node-pool/index.mjs +0 -188
  361. package/es/node-pool/index.mjs.map +0 -1
  362. package/es/node.mjs +0 -133
  363. package/es/node.mjs.map +0 -1
  364. package/es/other.d.ts +0 -31
  365. package/es/semver-satisfies.d.ts +0 -1
  366. package/es/string.d.ts +0 -26
  367. package/es/tx/builder/field-types.mjs +0 -74
  368. package/es/tx/builder/field-types.mjs.map +0 -1
  369. package/es/tx/tx-object.mjs +0 -283
  370. package/es/tx/tx-object.mjs.map +0 -1
  371. package/es/tx/tx.mjs +0 -938
  372. package/es/tx/tx.mjs.map +0 -1
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  374. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  376. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  378. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  380. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  381. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  382. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  384. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  386. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  388. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  389. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  390. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  392. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  393. package/es/utils/async-init.mjs +0 -64
  394. package/es/utils/async-init.mjs.map +0 -1
  395. package/es/utils/crypto-ts.mjs.map +0 -1
  396. package/es/utils/swagger.mjs +0 -164
  397. package/es/utils/swagger.mjs.map +0 -1
  398. package/src/account/base.js +0 -153
  399. package/src/account/memory.js +0 -83
  400. package/src/account/multiple.js +0 -162
  401. package/src/ae/aens.js +0 -361
  402. package/src/ae/aepp.js +0 -45
  403. package/src/ae/contract.js +0 -148
  404. package/src/ae/index.js +0 -168
  405. package/src/ae/oracle.js +0 -311
  406. package/src/ae/universal.js +0 -47
  407. package/src/ae/wallet.js +0 -50
  408. package/src/chain/index.js +0 -269
  409. package/src/chain/node.js +0 -320
  410. package/src/channel/handlers.js +0 -673
  411. package/src/channel/index.js +0 -903
  412. package/src/channel/internal.js +0 -236
  413. package/src/contract/aci.js +0 -376
  414. package/src/contract/compiler.js +0 -100
  415. package/src/contract/ga/helpers.js +0 -19
  416. package/src/contract/ga/index.js +0 -150
  417. package/src/index.js +0 -89
  418. package/src/node-pool/index.js +0 -172
  419. package/src/node.js +0 -116
  420. package/src/tx/builder/constants.js +0 -100
  421. package/src/tx/builder/field-types.js +0 -61
  422. package/src/tx/builder/helpers.js +0 -334
  423. package/src/tx/builder/index.js +0 -465
  424. package/src/tx/builder/schema.js +0 -1100
  425. package/src/tx/index.js +0 -301
  426. package/src/tx/tx-object.js +0 -187
  427. package/src/tx/tx.js +0 -631
  428. package/src/tx/validator.js +0 -181
  429. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  430. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  431. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  432. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  433. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  434. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  435. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  436. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  437. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  438. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  439. package/src/utils/async-init.js +0 -45
  440. package/src/utils/crypto.js +0 -219
  441. package/src/utils/hd-wallet.js +0 -100
  442. package/src/utils/json-big.js +0 -26
  443. package/src/utils/keystore.js +0 -219
  444. package/src/utils/swagger.js +0 -156
@@ -0,0 +1,538 @@
1
+ /*
2
+ * ISC License (ISC)
3
+ * Copyright (c) 2022 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
+ // @ts-expect-error TODO remove
18
+ import { Encoder as Calldata } from '@aeternity/aepp-calldata';
19
+ import { DRY_RUN_ACCOUNT, AMOUNT } from '../tx/builder/schema';
20
+ import { Tag, AensName } from '../tx/builder/constants';
21
+ import { buildContractIdByContractTx, unpackTx } from '../tx/builder';
22
+ import { _buildTx } from '../tx';
23
+ import { send } from '../spend';
24
+ import { decode, Encoded } from '../utils/encoder';
25
+ import {
26
+ MissingContractDefError,
27
+ MissingContractAddressError,
28
+ InactiveContractError,
29
+ BytecodeMismatchError,
30
+ DuplicateContractError,
31
+ MissingFunctionNameError,
32
+ InvalidMethodInvocationError,
33
+ NotPayableFunctionError,
34
+ TypeError,
35
+ NodeInvocationError,
36
+ IllegalArgumentError,
37
+ NoSuchContractFunctionError,
38
+ MissingEventDefinitionError,
39
+ AmbiguousEventDefinitionError,
40
+ UnexpectedTsError,
41
+ InternalError,
42
+ } from '../utils/errors';
43
+ import { hash as calcHash } from '../utils/crypto';
44
+ import { Aci as BaseAci } from '../apis/compiler';
45
+ import { ContractCallReturnType } from '../apis/node';
46
+ import Compiler from './Compiler';
47
+ import Node from '../Node';
48
+ import {
49
+ getAccount, getContract, getContractByteCode, getKeyBlock, resolveName, txDryRun,
50
+ } from '../chain';
51
+ import AccountBase from '../account/Base';
52
+
53
+ interface FunctionACI {
54
+ arguments: any[];
55
+ name: string;
56
+ payable: boolean;
57
+ returns: string;
58
+ stateful: boolean;
59
+ }
60
+
61
+ interface Aci extends BaseAci {
62
+ encodedAci: {
63
+ contract: {
64
+ name: string;
65
+ event: any;
66
+ kind: string;
67
+ state: any;
68
+ type_defs: any[];
69
+ functions: FunctionACI[];
70
+ };
71
+ };
72
+ externalEncodedAci: any[];
73
+ }
74
+
75
+ interface Event {
76
+ address: Encoded.ContractAddress;
77
+ data: string;
78
+ topics: Array<string | number>;
79
+ }
80
+
81
+ interface DecodedEvent {
82
+ name: string;
83
+ args: unknown;
84
+ contract: {
85
+ name: string;
86
+ address: Encoded.ContractAddress;
87
+ };
88
+ }
89
+
90
+ type TxData = Awaited<ReturnType<typeof send>>;
91
+
92
+ export interface ContractInstance {
93
+ _aci: Aci;
94
+ _name: string;
95
+ calldata: any;
96
+ source?: string;
97
+ bytecode?: Encoded.ContractBytearray;
98
+ deployInfo: {
99
+ address?: Encoded.ContractAddress;
100
+ result?: {
101
+ callerId: string;
102
+ callerNonce: string;
103
+ contractId: string;
104
+ gasPrice: bigint;
105
+ gasUsed: number;
106
+ height: number;
107
+ log: any[];
108
+ returnType: ContractCallReturnType;
109
+ returnValue: string;
110
+ };
111
+ owner?: Encoded.AccountAddress;
112
+ transaction?: string;
113
+ rawTx?: string;
114
+ txData?: TxData;
115
+ };
116
+ options: any;
117
+ compile: (options?: {}) => Promise<Encoded.ContractBytearray>;
118
+ _estimateGas: (name: string, params: any[], options: object) => Promise<number>;
119
+ deploy: (params?: any[], options?: object) => Promise<any>;
120
+ call: (fn: string, params?: any[], options?: {}) => Promise<{
121
+ hash: string;
122
+ tx: any;
123
+ txData: TxData;
124
+ rawTx: string;
125
+ result: {
126
+ callerId: Encoded.AccountAddress;
127
+ callerNonce: number;
128
+ contractId: Encoded.ContractAddress;
129
+ gasPrice: number;
130
+ gasUsed: number;
131
+ height: number;
132
+ log: any[];
133
+ returnType: ContractCallReturnType;
134
+ returnValue: string;
135
+ };
136
+ decodedResult: any;
137
+ decodedEvents: DecodedEvent[];
138
+ }>;
139
+ decodeEvents: (
140
+ events: Event[], options?: { omitUnknown?: boolean; contractAddressToName?: any }
141
+ ) => DecodedEvent[];
142
+ methods: any;
143
+ }
144
+
145
+ /**
146
+ * Generate contract ACI object with predefined js methods for contract usage - can be used for
147
+ * creating a reference to already deployed contracts
148
+ * @category contract
149
+ * @param options - Options object
150
+ * @returns JS Contract API
151
+ * @example
152
+ * ```js
153
+ * const contractIns = await aeSdk.getContractInstance({ source })
154
+ * await contractIns.deploy([321]) or await contractIns.methods.init(321)
155
+ * const callResult = await contractIns.call('setState', [123]) or
156
+ * await contractIns.methods.setState.send(123, options)
157
+ * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or
158
+ * await contractIns.methods.setState.get(123, options)
159
+ * ```
160
+ * Also you can call contract like: `await contractIns.methods.setState(123, options)`
161
+ * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
162
+ * stateful or not
163
+ */
164
+ export default async function getContractInstance({
165
+ onAccount,
166
+ onCompiler,
167
+ onNode,
168
+ source,
169
+ bytecode,
170
+ aci: _aci,
171
+ contractAddress,
172
+ fileSystem = {},
173
+ validateBytecode,
174
+ ...otherOptions
175
+ }: {
176
+ onAccount?: AccountBase;
177
+ onCompiler: Compiler;
178
+ onNode: Node;
179
+ source?: string;
180
+ bytecode?: Encoded.ContractBytearray;
181
+ aci?: Aci;
182
+ contractAddress?: Encoded.ContractAddress | AensName;
183
+ fileSystem?: Record<string, string>;
184
+ validateBytecode?: boolean;
185
+ [key: string]: any;
186
+ }): Promise<ContractInstance> {
187
+ if (_aci == null && source != null) {
188
+ // TODO: should be fixed when the compiledAci interface gets updated
189
+ _aci = await onCompiler.generateACI({ code: source, options: { fileSystem } }) as Aci;
190
+ }
191
+ if (_aci == null) throw new MissingContractDefError();
192
+
193
+ if (contractAddress != null) {
194
+ contractAddress = await resolveName(
195
+ contractAddress,
196
+ 'contract_pubkey',
197
+ { resolveByNode: true, onNode },
198
+ ) as Encoded.ContractAddress;
199
+ }
200
+
201
+ if (contractAddress == null && source == null && bytecode == null) {
202
+ throw new MissingContractAddressError('Can\'t create instance by ACI without address');
203
+ }
204
+
205
+ if (contractAddress != null) {
206
+ const contract = await getContract(contractAddress, { onNode });
207
+ if (contract.active == null) throw new InactiveContractError(contractAddress);
208
+ }
209
+
210
+ const instance: ContractInstance = {
211
+ _aci,
212
+ _name: _aci.encodedAci.contract.name,
213
+ calldata: new Calldata([_aci.encodedAci, ..._aci.externalEncodedAci]),
214
+ source,
215
+ bytecode,
216
+ deployInfo: { address: contractAddress },
217
+ options: {
218
+ onAccount,
219
+ onCompiler,
220
+ onNode,
221
+ amount: AMOUNT,
222
+ callStatic: false,
223
+ fileSystem,
224
+ ...otherOptions,
225
+ },
226
+ /* eslint-disable @typescript-eslint/no-unused-vars */
227
+ /* eslint-disable @typescript-eslint/no-empty-function */
228
+ async compile(_options?: {}): Promise<any> {},
229
+ async _estimateGas(_name: string, _params: any[], _options: object): Promise<any> {},
230
+ async deploy(_params?: any[], _options?: any): Promise<any> {},
231
+ async call(_fn: string, _params?: any[], _options?: {}): Promise<any> {},
232
+ decodeEvents(_events: Event[], options?: { omitUnknown?: boolean }): any {},
233
+ /* eslint-enable @typescript-eslint/no-unused-vars */
234
+ /* eslint-enable @typescript-eslint/no-empty-function */
235
+ methods: undefined,
236
+ };
237
+
238
+ if (validateBytecode != null) {
239
+ if (contractAddress == null) throw new MissingContractAddressError('Can\'t validate bytecode without contract address');
240
+ const onChanBytecode = (await getContractByteCode(contractAddress, { onNode })).bytecode;
241
+ const isValid: boolean = source != null
242
+ ? await onCompiler.validateByteCode(
243
+ { bytecode: onChanBytecode, source, options: instance.options },
244
+ ).then(() => true, () => false)
245
+ : bytecode === onChanBytecode;
246
+ if (!isValid) throw new BytecodeMismatchError(source != null ? 'source' : 'bytecode');
247
+ }
248
+
249
+ /**
250
+ * Compile contract
251
+ * @returns bytecode
252
+ */
253
+ instance.compile = async (options = {}): Promise<Encoded.ContractBytearray> => {
254
+ if (instance.bytecode != null) throw new IllegalArgumentError('Contract already compiled');
255
+ if (instance.source == null) throw new IllegalArgumentError('Can\'t compile without source code');
256
+ instance.bytecode = (await onCompiler.compileContract({
257
+ code: instance.source, options: { ...instance.options, ...options },
258
+ })).bytecode as Encoded.ContractBytearray;
259
+ return instance.bytecode;
260
+ };
261
+
262
+ const handleCallError = (
263
+ { returnType, returnValue }: {
264
+ returnType: ContractCallReturnType;
265
+ returnValue: Encoded.ContractBytearray;
266
+ },
267
+ transaction: string,
268
+ ): void => {
269
+ let message: string;
270
+ switch (returnType) {
271
+ case 'ok': return;
272
+ case 'revert':
273
+ message = instance.calldata.decodeFateString(returnValue);
274
+ break;
275
+ case 'error':
276
+ message = decode(returnValue).toString();
277
+ break;
278
+ default:
279
+ throw new InternalError(`Unknown return type: ${returnType}`);
280
+ }
281
+ throw new NodeInvocationError(message, transaction);
282
+ };
283
+
284
+ const sendAndProcess = async (tx: Encoded.Transaction, options: any): Promise<{
285
+ result?: ContractInstance['deployInfo']['result'];
286
+ hash: TxData['hash'];
287
+ tx: Awaited<ReturnType<typeof unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>>>;
288
+ txData: TxData;
289
+ rawTx: Encoded.Transaction;
290
+ }> => {
291
+ options = { ...instance.options, ...options };
292
+ const txData = await send(tx, options);
293
+ const result = {
294
+ hash: txData.hash,
295
+ tx: unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>(txData.rawTx),
296
+ txData,
297
+ rawTx: txData.rawTx,
298
+ };
299
+ if (txData.blockHeight == null) return result;
300
+ const { callInfo } = await onNode.getTransactionInfoByHash(txData.hash);
301
+ Object.assign(result.txData, callInfo); // TODO: don't duplicate data in result
302
+ // @ts-expect-error TODO api should be updated to match types
303
+ handleCallError(callInfo, tx);
304
+ return { ...result, result: callInfo };
305
+ };
306
+
307
+ instance._estimateGas = async (name: string, params: any[], options: object): Promise<number> => {
308
+ const { result: { gasUsed } } = await instance
309
+ .call(name, params, { ...options, callStatic: true });
310
+ // taken from https://github.com/aeternity/aepp-sdk-js/issues/1286#issuecomment-977814771
311
+ return Math.floor(gasUsed * 1.25);
312
+ };
313
+
314
+ /**
315
+ * Deploy contract
316
+ * @param params - Contract init function arguments array
317
+ * @param options - Options
318
+ * @returns deploy info
319
+ */
320
+ instance.deploy = async (
321
+ params = [],
322
+ options?:
323
+ Parameters<typeof instance.compile>[0] &
324
+ Parameters<typeof instance.call>[2] &
325
+ Parameters<AccountBase['address']>[0] &
326
+ Parameters<typeof sendAndProcess>[1],
327
+ ): Promise<ContractInstance['deployInfo']> => {
328
+ const opt = { ...instance.options, ...options };
329
+ if (instance.bytecode == null) await instance.compile(opt);
330
+ // @ts-expect-error TODO: need to fix compatibility between return types of `deploy` and `call`
331
+ if (opt.callStatic === true) return instance.call('init', params, opt);
332
+ if (instance.deployInfo.address != null) throw new DuplicateContractError();
333
+
334
+ const ownerId = await opt.onAccount.address(options);
335
+ const tx = await _buildTx(Tag.ContractCreateTx, {
336
+ ...opt,
337
+ gasLimit: opt.gasLimit ?? await instance._estimateGas('init', params, opt),
338
+ callData: instance.calldata.encode(instance._name, 'init', params),
339
+ code: instance.bytecode,
340
+ ownerId,
341
+ onNode,
342
+ });
343
+ const contractId = buildContractIdByContractTx(tx);
344
+ const {
345
+ hash, rawTx, result, txData,
346
+ } = await sendAndProcess(tx, opt);
347
+ instance.deployInfo = Object.freeze({
348
+ result,
349
+ owner: ownerId,
350
+ transaction: hash,
351
+ rawTx,
352
+ txData,
353
+ address: contractId,
354
+ });
355
+ return instance.deployInfo;
356
+ };
357
+
358
+ /**
359
+ * Get function schema from contract ACI object
360
+ * @param name - Function name
361
+ * @returns function ACI
362
+ */
363
+ function getFunctionACI(name: string): Partial<FunctionACI> {
364
+ const fn = instance._aci.encodedAci.contract.functions.find(
365
+ (f: { name: string }) => f.name === name,
366
+ );
367
+ if (fn != null) {
368
+ return fn;
369
+ }
370
+ if (name === 'init') return { payable: false };
371
+ throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`);
372
+ }
373
+
374
+ /**
375
+ * Call contract function
376
+ * @param fn - Function name
377
+ * @param params - Array of function arguments
378
+ * @param options - Array of function arguments
379
+ * @returns CallResult
380
+ */
381
+ instance.call = async (fn: string, params: any[] = [], options: object = {}) => {
382
+ const opt = { ...instance.options, ...options };
383
+ const fnACI = getFunctionACI(fn);
384
+ const contractId = instance.deployInfo.address;
385
+
386
+ if (fn == null) throw new MissingFunctionNameError();
387
+ if (fn === 'init' && opt.callStatic === false) throw new InvalidMethodInvocationError('"init" can be called only via dryRun');
388
+ if (contractId == null && fn !== 'init') throw new InvalidMethodInvocationError('You need to deploy contract before calling!');
389
+ if (fn !== 'init' && opt.amount > 0 && fnACI.payable === false) throw new NotPayableFunctionError(opt.amount, fn);
390
+
391
+ const callerId = await Promise.resolve()
392
+ .then(() => opt.onAccount.address(opt))
393
+ .catch((error: any) => {
394
+ if (opt.callStatic === true) return DRY_RUN_ACCOUNT.pub;
395
+ throw error;
396
+ }) as Encoded.AccountAddress;
397
+ const callData = instance.calldata.encode(instance._name, fn, params);
398
+
399
+ let res: any;
400
+ if (opt.callStatic === true) {
401
+ if (typeof opt.top === 'number') {
402
+ opt.top = (await getKeyBlock(opt.top, { onNode })).hash;
403
+ }
404
+ const txOpt = { ...opt, onNode, callData };
405
+ if (opt.nonce == null && opt.top != null) {
406
+ opt.nonce = (await getAccount(callerId, { hash: opt.top, onNode })).nonce + 1;
407
+ }
408
+ const tx = await (fn === 'init'
409
+ ? _buildTx(Tag.ContractCreateTx, { ...txOpt, code: instance.bytecode, ownerId: callerId })
410
+ : _buildTx(Tag.ContractCallTx, { ...txOpt, callerId, contractId }));
411
+
412
+ const { callObj, ...dryRunOther } = await txDryRun(tx, callerId, { onNode, ...opt });
413
+ if (callObj == null) throw new UnexpectedTsError();
414
+ handleCallError({
415
+ returnType: callObj.returnType as ContractCallReturnType,
416
+ returnValue: callObj.returnValue as Encoded.ContractBytearray,
417
+ }, tx);
418
+ res = { ...dryRunOther, tx: unpackTx(tx), result: callObj };
419
+ } else {
420
+ const tx = await _buildTx(Tag.ContractCallTx, {
421
+ ...opt,
422
+ onNode,
423
+ gasLimit: opt.gasLimit ?? await instance._estimateGas(fn, params, opt),
424
+ callerId,
425
+ contractId,
426
+ callData,
427
+ });
428
+ res = await sendAndProcess(tx, opt);
429
+ }
430
+ if (opt.callStatic === true || res.txData.blockHeight != null) {
431
+ res.decodedResult = fnACI.returns != null && fnACI.returns !== 'unit' && fn !== 'init'
432
+ && instance.calldata.decode(instance._name, fn, res.result.returnValue);
433
+ res.decodedEvents = instance.decodeEvents(res.result.log, opt);
434
+ }
435
+ return res;
436
+ };
437
+
438
+ /**
439
+ * @param address - Contract address that emitted event
440
+ * @param nameHash - Hash of emitted event name
441
+ * @param options - Options
442
+ * @returns Contract name
443
+ * @throws {@link MissingEventDefinitionError}
444
+ * @throws {@link AmbiguousEventDefinitionError}
445
+ */
446
+ function getContractNameByEvent(
447
+ address: Encoded.ContractAddress,
448
+ nameHash: BigInt,
449
+ { contractAddressToName }: {
450
+ contractAddressToName?: { [key: Encoded.ContractAddress]: string };
451
+ },
452
+ ): string {
453
+ const addressToName = { ...instance.options.contractAddressToName, ...contractAddressToName };
454
+ if (addressToName[address] != null) return addressToName[address];
455
+
456
+ const matchedEvents = [
457
+ instance._aci.encodedAci,
458
+ ...instance._aci.externalEncodedAci,
459
+ ]
460
+ .filter(({ contract }) => contract?.event)
461
+ .map(({ contract }) => [contract.name, contract.event.variant])
462
+ .map(([name, events]) => events.map((event: {}) => [name, Object.keys(event)[0]]))
463
+ .flat()
464
+ .filter(([, eventName]) => BigInt(`0x${calcHash(eventName).toString('hex')}`) === nameHash);
465
+ switch (matchedEvents.length) {
466
+ case 0: throw new MissingEventDefinitionError(nameHash.toString(), address);
467
+ case 1: return matchedEvents[0][0];
468
+ default: throw new AmbiguousEventDefinitionError(address, matchedEvents);
469
+ }
470
+ }
471
+
472
+ /**
473
+ * Decode Events
474
+ * @param events - Array of encoded events (callRes.result.log)
475
+ * @param options - Options
476
+ * @returns DecodedEvents
477
+ */
478
+ instance.decodeEvents = (
479
+ events: Event[],
480
+ { omitUnknown, ...opt }: { omitUnknown?: boolean } = {},
481
+ ): DecodedEvent[] => events
482
+ .map((event) => {
483
+ const topics = event.topics.map((t: string | number) => BigInt(t));
484
+ let contractName;
485
+ try {
486
+ contractName = getContractNameByEvent(event.address, topics[0], opt);
487
+ } catch (error) {
488
+ if ((omitUnknown ?? false) && error instanceof MissingEventDefinitionError) return null;
489
+ throw error;
490
+ }
491
+ const decoded = instance.calldata.decodeEvent(contractName, event.data, topics);
492
+ const [name, args] = Object.entries(decoded)[0];
493
+ return {
494
+ name,
495
+ args,
496
+ contract: {
497
+ name: contractName,
498
+ address: event.address,
499
+ },
500
+ };
501
+ }).filter((e: DecodedEvent | null): e is DecodedEvent => e != null);
502
+
503
+ /**
504
+ * Generate proto function based on contract function using Contract ACI schema
505
+ * All function can be called like:
506
+ * ```js
507
+ * await contract.methods.testFunction()
508
+ * ```
509
+ * then sdk will decide to use dry-run or send tx
510
+ * on-chain base on if function stateful or not.
511
+ * Also, you can manually do that:
512
+ * ```js
513
+ * await contract.methods.testFunction.get() // use call-static (dry-run)
514
+ * await contract.methods.testFunction.send() // send tx on-chain
515
+ * ```
516
+ */
517
+ instance.methods = Object.fromEntries(instance._aci.encodedAci.contract.functions
518
+ .map(({ name, arguments: aciArgs, stateful }: FunctionACI) => {
519
+ const genHandler = (callStatic: boolean) => async (...args: any[]) => {
520
+ const options = args.length === aciArgs.length + 1 ? args.pop() : {};
521
+ if (typeof options !== 'object') throw new TypeError(`Options should be an object: ${options as string}`);
522
+ if (name === 'init') return instance.deploy(args, { callStatic, ...options });
523
+ return instance.call(name, args, { callStatic, ...options });
524
+ };
525
+ return [
526
+ name,
527
+ Object.assign(
528
+ genHandler(name === 'init' ? false : !stateful),
529
+ {
530
+ get: genHandler(true),
531
+ send: genHandler(false),
532
+ },
533
+ ),
534
+ ];
535
+ }));
536
+
537
+ return instance;
538
+ }