@aeternity/aepp-sdk 10.0.0 → 12.0.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 (424) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +15 -14
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +13 -40
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -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 +69 -0
  14. package/es/AeSdkAepp.mjs +175 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +212 -0
  17. package/es/AeSdkBase.mjs +310 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +103 -0
  20. package/es/AeSdkWallet.mjs +322 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +44 -0
  23. package/es/Node.mjs +141 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +65 -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 +25 -0
  29. package/es/account/Memory.mjs +81 -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 +79 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +209 -0
  35. package/es/aens.mjs +332 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -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 +118 -0
  56. package/es/aepp-wallet-communication/schema.mjs +214 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -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 +1061 -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 +4164 -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 +220 -0
  92. package/es/chain.mjs +524 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/{handlers.js → handlers.mjs} +163 -130
  96. package/es/channel/handlers.mjs.map +1 -0
  97. package/es/channel/index.d.ts +634 -0
  98. package/es/channel/index.mjs +978 -0
  99. package/es/channel/index.mjs.map +1 -0
  100. package/es/channel/internal.d.ts +100 -0
  101. package/es/channel/internal.mjs +328 -0
  102. package/es/channel/internal.mjs.map +1 -0
  103. package/es/contract/Compiler.d.ts +17 -0
  104. package/es/contract/Compiler.mjs +67 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +125 -0
  107. package/es/contract/aci.mjs +496 -0
  108. package/es/contract/aci.mjs.map +1 -0
  109. package/es/contract/ga.d.ts +68 -0
  110. package/es/contract/ga.mjs +190 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +68 -0
  113. package/es/contract/methods.mjs +101 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/index.d.ts +32 -0
  116. package/es/index.mjs +49 -0
  117. package/es/index.mjs.map +1 -0
  118. package/es/oracle.d.ts +154 -0
  119. package/es/oracle.mjs +288 -0
  120. package/es/oracle.mjs.map +1 -0
  121. package/es/spend.d.ts +61 -0
  122. package/es/spend.mjs +122 -0
  123. package/es/spend.mjs.map +1 -0
  124. package/es/tx/builder/constants.d.ts +41 -0
  125. package/es/tx/builder/constants.mjs +100 -0
  126. package/es/tx/builder/constants.mjs.map +1 -0
  127. package/es/tx/builder/field-types.d.ts +62 -0
  128. package/es/tx/builder/field-types.mjs +126 -0
  129. package/es/tx/builder/field-types.mjs.map +1 -0
  130. package/es/tx/builder/helpers.d.ts +131 -0
  131. package/es/tx/builder/helpers.mjs +223 -0
  132. package/es/tx/builder/helpers.mjs.map +1 -0
  133. package/es/tx/builder/index.d.ts +75 -0
  134. package/es/tx/builder/index.mjs +424 -0
  135. package/es/tx/builder/index.mjs.map +1 -0
  136. package/es/tx/builder/schema.d.ts +350 -0
  137. package/es/tx/builder/schema.mjs +320 -0
  138. package/es/tx/builder/schema.mjs.map +1 -0
  139. package/es/tx/index.d.ts +63 -0
  140. package/es/tx/index.mjs +209 -0
  141. package/es/tx/index.mjs.map +1 -0
  142. package/es/tx/min-fee.d.ts +20 -0
  143. package/es/tx/min-fee.mjs +148 -0
  144. package/es/tx/min-fee.mjs.map +1 -0
  145. package/es/tx/validator.d.ts +19 -0
  146. package/es/tx/validator.mjs +240 -0
  147. package/es/tx/validator.mjs.map +1 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  149. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  151. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  152. package/es/typings/bip32-path/index.d.mjs +2 -0
  153. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  154. package/es/typings/blakejs/index.d.mjs +2 -0
  155. package/es/typings/blakejs/index.d.mjs.map +1 -0
  156. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  157. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  158. package/es/utils/amount-formatter.d.ts +42 -0
  159. package/es/utils/{amount-formatter.js → amount-formatter.mjs} +38 -44
  160. package/es/utils/amount-formatter.mjs.map +1 -0
  161. package/es/utils/autorest.d.ts +6 -0
  162. package/es/utils/autorest.mjs +97 -0
  163. package/es/utils/autorest.mjs.map +1 -0
  164. package/es/utils/bignumber.d.ts +13 -0
  165. package/es/utils/bignumber.mjs +23 -0
  166. package/es/utils/bignumber.mjs.map +1 -0
  167. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  168. package/es/utils/{bytes.js → bytes.mjs} +26 -22
  169. package/es/utils/bytes.mjs.map +1 -0
  170. package/es/utils/crypto.d.ts +103 -0
  171. package/es/utils/crypto.mjs +221 -0
  172. package/es/utils/crypto.mjs.map +1 -0
  173. package/es/utils/encoder.d.ts +26 -0
  174. package/es/utils/encoder.mjs +102 -0
  175. package/es/utils/encoder.mjs.map +1 -0
  176. package/es/utils/errors.d.ts +481 -0
  177. package/es/utils/errors.mjs +882 -0
  178. package/es/utils/errors.mjs.map +1 -0
  179. package/es/utils/hd-wallet.d.ts +34 -0
  180. package/es/utils/hd-wallet.mjs +122 -0
  181. package/es/utils/hd-wallet.mjs.map +1 -0
  182. package/es/utils/json-big.d.ts +5 -0
  183. package/es/utils/json-big.mjs +41 -0
  184. package/es/utils/json-big.mjs.map +1 -0
  185. package/es/utils/keystore.d.ts +51 -0
  186. package/es/utils/keystore.mjs +145 -0
  187. package/es/utils/keystore.mjs.map +1 -0
  188. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  189. package/es/utils/{mptree.js → mptree.mjs} +33 -25
  190. package/es/utils/mptree.mjs.map +1 -0
  191. package/es/utils/other.d.ts +14 -0
  192. package/es/utils/other.mjs +28 -0
  193. package/es/utils/other.mjs.map +1 -0
  194. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  195. package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
  196. package/es/utils/semver-satisfies.mjs.map +1 -0
  197. package/es/utils/string.d.ts +24 -0
  198. package/es/utils/{string.js → string.mjs} +9 -11
  199. package/es/utils/string.mjs.map +1 -0
  200. package/package.json +67 -64
  201. package/src/AeSdk.ts +65 -0
  202. package/src/AeSdkAepp.ts +167 -0
  203. package/src/AeSdkBase.ts +320 -0
  204. package/src/AeSdkWallet.ts +332 -0
  205. package/src/Node.ts +167 -0
  206. package/src/account/Base.ts +114 -0
  207. package/src/account/Memory.ts +83 -0
  208. package/src/account/Rpc.ts +67 -0
  209. package/src/aens.ts +391 -0
  210. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  211. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  212. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  213. package/{es/utils/crypto-ts.js → src/aepp-wallet-communication/connection-proxy.ts} +16 -9
  214. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  215. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  216. package/src/aepp-wallet-communication/schema.ts +181 -0
  217. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  218. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  219. package/src/apis/compiler/compiler.ts +585 -0
  220. package/src/apis/compiler/index.ts +2 -0
  221. package/src/apis/compiler/models/index.ts +301 -0
  222. package/src/apis/compiler/models/mappers.ts +583 -0
  223. package/src/apis/compiler/models/parameters.ts +93 -0
  224. package/src/apis/node/code-model-v4.yaml +10046 -0
  225. package/src/apis/node/index.ts +2 -0
  226. package/src/apis/node/models/index.ts +1253 -0
  227. package/src/apis/node/models/mappers.ts +4278 -0
  228. package/src/apis/node/models/parameters.ts +188 -0
  229. package/src/apis/node/node.ts +1299 -0
  230. package/src/chain.ts +444 -0
  231. package/src/channel/{handlers.js → handlers.ts} +238 -143
  232. package/src/channel/index.ts +991 -0
  233. package/src/channel/internal.ts +345 -0
  234. package/src/contract/Compiler.ts +66 -0
  235. package/src/contract/aci.ts +529 -0
  236. package/src/contract/ga.ts +178 -0
  237. package/src/contract/methods.ts +118 -0
  238. package/src/index.ts +51 -0
  239. package/src/oracle.ts +342 -0
  240. package/src/spend.ts +152 -0
  241. package/src/tx/builder/constants.ts +96 -0
  242. package/src/tx/builder/field-types.ts +111 -0
  243. package/src/tx/builder/helpers.ts +253 -0
  244. package/src/tx/builder/index.ts +394 -0
  245. package/src/tx/builder/schema.ts +771 -0
  246. package/src/tx/index.ts +199 -0
  247. package/src/tx/min-fee.ts +136 -0
  248. package/src/tx/validator.ts +226 -0
  249. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  250. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  251. package/src/typings/bip32-path/index.d.ts +33 -0
  252. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  253. package/src/utils/amount-formatter.ts +29 -41
  254. package/src/utils/autorest.ts +90 -0
  255. package/src/utils/bignumber.ts +9 -19
  256. package/src/utils/bytes.ts +15 -16
  257. package/src/utils/crypto.ts +217 -0
  258. package/src/utils/encoder.ts +98 -0
  259. package/src/utils/errors.ts +817 -0
  260. package/src/utils/hd-wallet.ts +134 -0
  261. package/src/utils/json-big.ts +26 -0
  262. package/src/utils/keystore.ts +179 -0
  263. package/src/utils/mptree.ts +26 -20
  264. package/src/utils/other.ts +28 -43
  265. package/src/utils/string.ts +8 -10
  266. package/CHANGELOG.md +0 -1603
  267. package/es/account/base.js +0 -169
  268. package/es/account/base.js.map +0 -1
  269. package/es/account/memory.js +0 -84
  270. package/es/account/memory.js.map +0 -1
  271. package/es/account/multiple.js +0 -178
  272. package/es/account/multiple.js.map +0 -1
  273. package/es/ae/aens.js +0 -408
  274. package/es/ae/aens.js.map +0 -1
  275. package/es/ae/aepp.js +0 -45
  276. package/es/ae/aepp.js.map +0 -1
  277. package/es/ae/contract.js +0 -312
  278. package/es/ae/contract.js.map +0 -1
  279. package/es/ae/index.js +0 -206
  280. package/es/ae/index.js.map +0 -1
  281. package/es/ae/oracle.js +0 -322
  282. package/es/ae/oracle.js.map +0 -1
  283. package/es/ae/universal.js +0 -45
  284. package/es/ae/universal.js.map +0 -1
  285. package/es/ae/wallet.js +0 -50
  286. package/es/ae/wallet.js.map +0 -1
  287. package/es/amount-formatter.d.ts +0 -58
  288. package/es/bignumber.d.ts +0 -24
  289. package/es/chain/index.js +0 -256
  290. package/es/chain/index.js.map +0 -1
  291. package/es/chain/node.js +0 -394
  292. package/es/chain/node.js.map +0 -1
  293. package/es/channel/handlers.js.map +0 -1
  294. package/es/channel/index.js +0 -980
  295. package/es/channel/index.js.map +0 -1
  296. package/es/channel/internal.js +0 -266
  297. package/es/channel/internal.js.map +0 -1
  298. package/es/contract/aci/helpers.js +0 -298
  299. package/es/contract/aci/helpers.js.map +0 -1
  300. package/es/contract/aci/index.js +0 -361
  301. package/es/contract/aci/index.js.map +0 -1
  302. package/es/contract/aci/transformation.js +0 -66
  303. package/es/contract/aci/transformation.js.map +0 -1
  304. package/es/contract/compiler.js +0 -244
  305. package/es/contract/compiler.js.map +0 -1
  306. package/es/contract/ga/helpers.js +0 -22
  307. package/es/contract/ga/helpers.js.map +0 -1
  308. package/es/contract/ga/index.js +0 -170
  309. package/es/contract/ga/index.js.map +0 -1
  310. package/es/contract/index.js +0 -162
  311. package/es/contract/index.js.map +0 -1
  312. package/es/crypto-ts.d.ts +0 -9
  313. package/es/index.js +0 -57
  314. package/es/index.js.map +0 -1
  315. package/es/node-pool/index.js +0 -187
  316. package/es/node-pool/index.js.map +0 -1
  317. package/es/node.js +0 -132
  318. package/es/node.js.map +0 -1
  319. package/es/other.d.ts +0 -31
  320. package/es/string.d.ts +0 -26
  321. package/es/tx/builder/helpers.js +0 -305
  322. package/es/tx/builder/helpers.js.map +0 -1
  323. package/es/tx/builder/index.js +0 -595
  324. package/es/tx/builder/index.js.map +0 -1
  325. package/es/tx/builder/schema.js +0 -814
  326. package/es/tx/builder/schema.js.map +0 -1
  327. package/es/tx/index.js +0 -300
  328. package/es/tx/index.js.map +0 -1
  329. package/es/tx/tx-object.js +0 -276
  330. package/es/tx/tx-object.js.map +0 -1
  331. package/es/tx/tx.js +0 -937
  332. package/es/tx/tx.js.map +0 -1
  333. package/es/tx/validator.js +0 -208
  334. package/es/tx/validator.js.map +0 -1
  335. package/es/typings/blakejs/index.d.js +0 -2
  336. package/es/typings/blakejs/index.d.js.map +0 -1
  337. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -131
  338. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  339. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -184
  340. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  341. package/es/utils/aepp-wallet-communication/connection/index.js +0 -84
  342. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  343. package/es/utils/aepp-wallet-communication/content-script-bridge.js +0 -97
  344. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  345. package/es/utils/aepp-wallet-communication/helpers.js +0 -103
  346. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  347. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -329
  348. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  349. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -270
  350. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  351. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -533
  352. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  353. package/es/utils/aepp-wallet-communication/schema.js +0 -107
  354. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  355. package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -109
  356. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  357. package/es/utils/amount-formatter.js.map +0 -1
  358. package/es/utils/async-init.js +0 -67
  359. package/es/utils/async-init.js.map +0 -1
  360. package/es/utils/bignumber.js +0 -28
  361. package/es/utils/bignumber.js.map +0 -1
  362. package/es/utils/bytes.js.map +0 -1
  363. package/es/utils/crypto-ts.js.map +0 -1
  364. package/es/utils/crypto.js +0 -304
  365. package/es/utils/crypto.js.map +0 -1
  366. package/es/utils/hd-wallet.js +0 -112
  367. package/es/utils/hd-wallet.js.map +0 -1
  368. package/es/utils/json-big.js +0 -45
  369. package/es/utils/json-big.js.map +0 -1
  370. package/es/utils/keystore.js +0 -228
  371. package/es/utils/keystore.js.map +0 -1
  372. package/es/utils/mptree.js.map +0 -1
  373. package/es/utils/other.js +0 -43
  374. package/es/utils/other.js.map +0 -1
  375. package/es/utils/semver-satisfies.js.map +0 -1
  376. package/es/utils/string.js.map +0 -1
  377. package/es/utils/swagger.js +0 -132
  378. package/es/utils/swagger.js.map +0 -1
  379. package/src/account/base.js +0 -153
  380. package/src/account/memory.js +0 -78
  381. package/src/account/multiple.js +0 -154
  382. package/src/ae/aens.js +0 -366
  383. package/src/ae/aepp.js +0 -45
  384. package/src/ae/contract.js +0 -285
  385. package/src/ae/index.js +0 -167
  386. package/src/ae/oracle.js +0 -296
  387. package/src/ae/universal.js +0 -47
  388. package/src/ae/wallet.js +0 -50
  389. package/src/chain/index.js +0 -250
  390. package/src/chain/node.js +0 -293
  391. package/src/channel/index.js +0 -898
  392. package/src/channel/internal.js +0 -231
  393. package/src/contract/aci/index.js +0 -317
  394. package/src/contract/aci/transformation.js +0 -72
  395. package/src/contract/compiler.js +0 -195
  396. package/src/contract/ga/helpers.js +0 -17
  397. package/src/contract/ga/index.js +0 -147
  398. package/src/contract/index.js +0 -163
  399. package/src/index.js +0 -90
  400. package/src/node-pool/index.js +0 -171
  401. package/src/node.js +0 -118
  402. package/src/tx/builder/helpers.js +0 -325
  403. package/src/tx/builder/index.js +0 -460
  404. package/src/tx/builder/schema.js +0 -1211
  405. package/src/tx/index.js +0 -301
  406. package/src/tx/tx-object.js +0 -186
  407. package/src/tx/tx.js +0 -622
  408. package/src/tx/validator.js +0 -161
  409. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -114
  410. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -161
  411. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  412. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -85
  413. package/src/utils/aepp-wallet-communication/helpers.js +0 -70
  414. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -268
  415. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -223
  416. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -390
  417. package/src/utils/aepp-wallet-communication/schema.js +0 -108
  418. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -91
  419. package/src/utils/async-init.js +0 -41
  420. package/src/utils/crypto.js +0 -312
  421. package/src/utils/hd-wallet.js +0 -115
  422. package/src/utils/json-big.js +0 -26
  423. package/src/utils/keystore.js +0 -223
  424. package/src/utils/swagger.js +0 -133
@@ -0,0 +1,67 @@
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
+ import { Compiler as CompilerApi } from "../apis/compiler/index.mjs";
18
+ import { genErrorFormatterPolicy, genVersionCheckPolicy } from "../utils/autorest.mjs";
19
+
20
+ /**
21
+ * Contract Compiler
22
+ *
23
+ * This class include api call's related to contract compiler functionality.
24
+ * @example Compiler('COMPILER_URL')
25
+ */
26
+ export default class Compiler extends CompilerApi {
27
+ /**
28
+ * @param compilerUrl - Url for compiler API
29
+ * @param options - Options
30
+ * @param options.ignoreVersion - Don't check compiler version
31
+ */
32
+ constructor(compilerUrl) {
33
+ let {
34
+ ignoreVersion
35
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
36
+ super(compilerUrl, {
37
+ allowInsecureConnection: true,
38
+ additionalPolicies: [genErrorFormatterPolicy(body => {
39
+ let message = '';
40
+
41
+ if ('reason' in body) {
42
+ message += ' ' + body.reason + (body.parameter != null ? ` in ${body.parameter}` : '') + ( // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78
43
+ body.info != null ? ` (${JSON.stringify(body.info)})` : '');
44
+ }
45
+
46
+ if (Array.isArray(body)) {
47
+ message += '\n' + body.map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`).map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80
48
+ .join('\n');
49
+ }
50
+
51
+ return message;
52
+ })]
53
+ });
54
+
55
+ if (ignoreVersion !== true) {
56
+ const versionPromise = this.aPIVersion().then(_ref => {
57
+ let {
58
+ apiVersion
59
+ } = _ref;
60
+ return apiVersion;
61
+ });
62
+ this.pipeline.addPolicy(genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0'));
63
+ }
64
+ }
65
+
66
+ }
67
+ //# sourceMappingURL=Compiler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Compiler.mjs","names":["Compiler","CompilerApi","genErrorFormatterPolicy","genVersionCheckPolicy","constructor","compilerUrl","ignoreVersion","allowInsecureConnection","additionalPolicies","body","message","reason","parameter","info","JSON","stringify","Array","isArray","map","e","type","pos","line","col","context","trim","join","versionPromise","aPIVersion","then","apiVersion","pipeline","addPolicy"],"sources":["../../src/contract/Compiler.ts"],"sourcesContent":["/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { Compiler as CompilerApi, ErrorModel, CompilerError } from '../apis/compiler'\nimport { genErrorFormatterPolicy, genVersionCheckPolicy } from '../utils/autorest'\n\ntype GeneralCompilerError = ErrorModel & {\n info?: object\n parameter?: string\n}\n\n/**\n * Contract Compiler\n *\n * This class include api call's related to contract compiler functionality.\n * @example Compiler('COMPILER_URL')\n */\nexport default class Compiler extends CompilerApi {\n /**\n * @param compilerUrl - Url for compiler API\n * @param options - Options\n * @param options.ignoreVersion - Don't check compiler version\n */\n constructor (compilerUrl: string, { ignoreVersion }: { ignoreVersion?: boolean } = {}) {\n super(compilerUrl, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genErrorFormatterPolicy((body: GeneralCompilerError | CompilerError[]) => {\n let message = ''\n if ('reason' in body) {\n message += ' ' + body.reason +\n (body.parameter != null ? ` in ${body.parameter}` : '') +\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n (body.info != null ? ` (${JSON.stringify(body.info)})` : '')\n }\n if (Array.isArray(body)) {\n message += '\\n' + body\n .map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`)\n .map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')\n }\n return message\n })\n ]\n })\n if (ignoreVersion !== true) {\n const versionPromise = this.aPIVersion().then(({ apiVersion }) => apiVersion)\n this.pipeline.addPolicy(\n genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0')\n )\n }\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;SACSA,QAAQ,IAAIC,W;SACZC,uB,EAAyBC,qB;;AAOlC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMH,QAAN,SAAuBC,WAAvB,CAAmC;EAChD;AACF;AACA;AACA;AACA;EACEG,WAAW,CAAEC,WAAF,EAA4E;IAAA,IAArD;MAAEC;IAAF,CAAqD,uEAAJ,EAAI;IACrF,MAAMD,WAAN,EAAmB;MACjBE,uBAAuB,EAAE,IADR;MAEjBC,kBAAkB,EAAE,CAClBN,uBAAuB,CAAEO,IAAD,IAAkD;QACxE,IAAIC,OAAO,GAAG,EAAd;;QACA,IAAI,YAAYD,IAAhB,EAAsB;UACpBC,OAAO,IAAI,MAAMD,IAAI,CAACE,MAAX,IACRF,IAAI,CAACG,SAAL,IAAkB,IAAlB,GAA0B,OAAMH,IAAI,CAACG,SAAU,EAA/C,GAAmD,EAD3C,MAET;UACCH,IAAI,CAACI,IAAL,IAAa,IAAb,GAAqB,KAAIC,IAAI,CAACC,SAAL,CAAeN,IAAI,CAACI,IAApB,CAA0B,GAAnD,GAAwD,EAHhD,CAAX;QAID;;QACD,IAAIG,KAAK,CAACC,OAAN,CAAcR,IAAd,CAAJ,EAAyB;UACvBC,OAAO,IAAI,OAAOD,IAAI,CACnBS,GADe,CACXC,CAAC,IAAK,GAAEA,CAAC,CAACC,IAAK,IAAGD,CAAC,CAACE,GAAF,CAAMC,IAAK,IAAGH,CAAC,CAACE,GAAF,CAAME,GAAI,KAAIJ,CAAC,CAACT,OAAQ,GAAES,CAAC,CAACK,OAAF,IAAa,IAAb,GAAqB,IAAGL,CAAC,CAACK,OAAQ,GAAlC,GAAuC,EAAG,EADzF,EAEfN,GAFe,CAEXC,CAAC,IAAIA,CAAC,CAACM,IAAF,EAFM,EAEI;UAFJ,CAGfC,IAHe,CAGV,IAHU,CAAlB;QAID;;QACD,OAAOhB,OAAP;MACD,CAfsB,CADL;IAFH,CAAnB;;IAqBA,IAAIJ,aAAa,KAAK,IAAtB,EAA4B;MAC1B,MAAMqB,cAAc,GAAG,KAAKC,UAAL,GAAkBC,IAAlB,CAAuB;QAAA,IAAC;UAAEC;QAAF,CAAD;QAAA,OAAoBA,UAApB;MAAA,CAAvB,CAAvB;MACA,KAAKC,QAAL,CAAcC,SAAd,CACE7B,qBAAqB,CAAC,UAAD,EAAa,cAAb,EAA6BwB,cAA7B,EAA6C,OAA7C,EAAsD,OAAtD,CADvB;IAGD;EACF;;AAlC+C"}
@@ -0,0 +1,125 @@
1
+ import { AensName } from '../tx/builder/schema';
2
+ import { send } from '../spend';
3
+ import { EncodedData } from '../utils/encoder';
4
+ import { Aci as BaseAci } from '../apis/compiler';
5
+ import Compiler from './Compiler';
6
+ import Node from '../Node';
7
+ import AccountBase from '../account/Base';
8
+ interface FunctionACI {
9
+ arguments: any[];
10
+ name: string;
11
+ payable: boolean;
12
+ returns: string;
13
+ stateful: boolean;
14
+ }
15
+ interface Aci extends BaseAci {
16
+ encodedAci: {
17
+ contract: {
18
+ name: string;
19
+ event: any;
20
+ kind: string;
21
+ state: any;
22
+ type_defs: any[];
23
+ functions: FunctionACI[];
24
+ };
25
+ };
26
+ externalEncodedAci: any[];
27
+ }
28
+ interface Event {
29
+ address: EncodedData<'ct'>;
30
+ data: string;
31
+ topics: Array<string | number>;
32
+ }
33
+ interface DecodedEvent {
34
+ name: string;
35
+ args: unknown;
36
+ contract: {
37
+ name: string;
38
+ address: EncodedData<'ct'>;
39
+ };
40
+ }
41
+ declare type TxData = Awaited<ReturnType<typeof send>>;
42
+ export interface ContractInstance {
43
+ _aci: Aci;
44
+ _name: string;
45
+ calldata: any;
46
+ source?: string;
47
+ bytecode?: EncodedData<'cb'>;
48
+ deployInfo: {
49
+ address?: EncodedData<'ct'>;
50
+ result?: {
51
+ callerId: string;
52
+ callerNonce: string;
53
+ contractId: string;
54
+ gasPrice: bigint;
55
+ gasUsed: number;
56
+ height: number;
57
+ log: any[];
58
+ returnType: string;
59
+ returnValue: string;
60
+ };
61
+ owner?: EncodedData<'ak'>;
62
+ transaction?: string;
63
+ rawTx?: string;
64
+ txData?: TxData;
65
+ };
66
+ options: any;
67
+ compile: (options?: {}) => Promise<EncodedData<'cb'>>;
68
+ _estimateGas: (name: string, params: any[], options: object) => Promise<number>;
69
+ deploy: (params?: any[], options?: object) => Promise<any>;
70
+ call: (fn: string, params?: any[], options?: {}) => Promise<{
71
+ hash: string;
72
+ tx: any;
73
+ txData: TxData;
74
+ rawTx: string;
75
+ result: {
76
+ callerId: EncodedData<'ak'>;
77
+ callerNonce: number;
78
+ contractId: EncodedData<'ct'>;
79
+ gasPrice: number;
80
+ gasUsed: number;
81
+ height: number;
82
+ log: any[];
83
+ returnType: string;
84
+ returnValue: string;
85
+ };
86
+ decodedResult: any;
87
+ decodedEvents: DecodedEvent[];
88
+ }>;
89
+ decodeEvents: (events: Event[], options?: {
90
+ omitUnknown?: boolean;
91
+ contractAddressToName?: any;
92
+ }) => DecodedEvent[];
93
+ methods: any;
94
+ }
95
+ /**
96
+ * Generate contract ACI object with predefined js methods for contract usage - can be used for
97
+ * creating a reference to already deployed contracts
98
+ * @param options - Options object
99
+ * @returns JS Contract API
100
+ * @example
101
+ * ```js
102
+ * const contractIns = await aeSdk.getContractInstance({ source })
103
+ * await contractIns.deploy([321]) or await contractIns.methods.init(321)
104
+ * const callResult = await contractIns.call('setState', [123]) or
105
+ * await contractIns.methods.setState.send(123, options)
106
+ * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or
107
+ * await contractIns.methods.setState.get(123, options)
108
+ * ```
109
+ * Also you can call contract like: `await contractIns.methods.setState(123, options)`
110
+ * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
111
+ * stateful or not
112
+ */
113
+ export default function getContractInstance({ onAccount, onCompiler, onNode, source, bytecode, aci: _aci, contractAddress, fileSystem, validateBytecode, ...otherOptions }: {
114
+ onAccount: AccountBase;
115
+ onCompiler: Compiler;
116
+ onNode: Node;
117
+ source?: string;
118
+ bytecode?: EncodedData<'cb'>;
119
+ aci?: Aci;
120
+ contractAddress?: EncodedData<'ct'> | AensName;
121
+ fileSystem?: Record<string, string>;
122
+ validateBytecode?: boolean;
123
+ [key: string]: any;
124
+ }): Promise<ContractInstance>;
125
+ export {};
@@ -0,0 +1,496 @@
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 _aeternityAeppCalldata from '@aeternity/aepp-calldata';
19
+ const {
20
+ Encoder: Calldata
21
+ } = _aeternityAeppCalldata;
22
+ import { DRY_RUN_ACCOUNT, GAS_MAX, TX_TYPE, AMOUNT } from "../tx/builder/schema.mjs";
23
+ import { buildContractIdByContractTx, unpackTx } from "../tx/builder/index.mjs";
24
+ import { _buildTx } from "../tx/index.mjs";
25
+ import { send } from "../spend.mjs";
26
+ import { decode } from "../utils/encoder.mjs";
27
+ import { MissingContractDefError, MissingContractAddressError, InactiveContractError, BytecodeMismatchError, DuplicateContractError, MissingFunctionNameError, InvalidMethodInvocationError, NotPayableFunctionError, TypeError, NodeInvocationError, IllegalArgumentError, NoSuchContractFunctionError, MissingEventDefinitionError, AmbiguousEventDefinitionError, UnexpectedTsError } from "../utils/errors.mjs";
28
+ import { hash } from "../utils/crypto.mjs";
29
+ import { getAccount, getContract, getContractByteCode, getKeyBlock, resolveName, txDryRun } from "../chain.mjs";
30
+
31
+ /**
32
+ * Generate contract ACI object with predefined js methods for contract usage - can be used for
33
+ * creating a reference to already deployed contracts
34
+ * @param options - Options object
35
+ * @returns JS Contract API
36
+ * @example
37
+ * ```js
38
+ * const contractIns = await aeSdk.getContractInstance({ source })
39
+ * await contractIns.deploy([321]) or await contractIns.methods.init(321)
40
+ * const callResult = await contractIns.call('setState', [123]) or
41
+ * await contractIns.methods.setState.send(123, options)
42
+ * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or
43
+ * await contractIns.methods.setState.get(123, options)
44
+ * ```
45
+ * Also you can call contract like: `await contractIns.methods.setState(123, options)`
46
+ * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
47
+ * stateful or not
48
+ */
49
+ export default async function getContractInstance(_ref) {
50
+ let {
51
+ onAccount,
52
+ onCompiler,
53
+ onNode,
54
+ source,
55
+ bytecode,
56
+ aci: _aci,
57
+ contractAddress,
58
+ fileSystem = {},
59
+ validateBytecode,
60
+ ...otherOptions
61
+ } = _ref;
62
+
63
+ if (_aci == null && source != null) {
64
+ // TODO: should be fixed when the compiledAci interface gets updated
65
+ _aci = await onCompiler.generateACI({
66
+ code: source,
67
+ options: {
68
+ fileSystem
69
+ }
70
+ });
71
+ }
72
+
73
+ if (_aci == null) throw new MissingContractDefError();
74
+
75
+ if (contractAddress != null) {
76
+ contractAddress = await resolveName(contractAddress, 'contract_pubkey', {
77
+ resolveByNode: true,
78
+ onNode
79
+ });
80
+ }
81
+
82
+ if (contractAddress == null && source == null && bytecode == null) {
83
+ throw new MissingContractAddressError('Can\'t create instance by ACI without address');
84
+ }
85
+
86
+ if (contractAddress != null) {
87
+ const contract = await getContract(contractAddress, {
88
+ onNode
89
+ });
90
+ if (contract.active == null) throw new InactiveContractError(contractAddress);
91
+ }
92
+
93
+ const instance = {
94
+ _aci,
95
+ _name: _aci.encodedAci.contract.name,
96
+ calldata: new Calldata([_aci.encodedAci, ..._aci.externalEncodedAci]),
97
+ source,
98
+ bytecode,
99
+ deployInfo: {
100
+ address: contractAddress
101
+ },
102
+ options: {
103
+ onAccount,
104
+ onCompiler,
105
+ onNode,
106
+ amount: AMOUNT,
107
+ callStatic: false,
108
+ fileSystem,
109
+ ...otherOptions
110
+ },
111
+ compile: async function (_options) {},
112
+ _estimateGas: async function (_name, _params, _options) {},
113
+ deploy: async function (_params, _options) {},
114
+ call: async function (_fn, _params, _options) {},
115
+
116
+ decodeEvents(_events, options) {},
117
+
118
+ methods: undefined
119
+ };
120
+
121
+ if (validateBytecode != null) {
122
+ if (contractAddress == null) throw new MissingContractAddressError('Can\'t validate bytecode without contract address');
123
+ const onChanBytecode = (await getContractByteCode(contractAddress, {
124
+ onNode
125
+ })).bytecode;
126
+ const isValid = source != null ? await onCompiler.validateByteCode({
127
+ bytecode: onChanBytecode,
128
+ source,
129
+ options: instance.options
130
+ }).then(() => true, () => false) : bytecode === onChanBytecode;
131
+ if (!isValid) throw new BytecodeMismatchError(source != null ? 'source' : 'bytecode');
132
+ }
133
+ /**
134
+ * Compile contract
135
+ * @returns bytecode
136
+ */
137
+
138
+
139
+ instance.compile = async function () {
140
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
141
+ if (instance.bytecode != null) throw new IllegalArgumentError('Contract already compiled');
142
+ if (instance.source == null) throw new IllegalArgumentError('Can\'t compile without source code');
143
+ instance.bytecode = (await onCompiler.compileContract({
144
+ code: instance.source,
145
+ options: { ...instance.options,
146
+ ...options
147
+ }
148
+ })).bytecode;
149
+ return instance.bytecode;
150
+ };
151
+
152
+ const sendAndProcess = async (tx, options) => {
153
+ options = { ...instance.options,
154
+ ...options
155
+ };
156
+ const txData = await send(tx, options);
157
+ const result = {
158
+ hash: txData.hash,
159
+ tx: unpackTx(txData.rawTx),
160
+ txData,
161
+ rawTx: txData.rawTx
162
+ };
163
+ if (txData.blockHeight == null) return result;
164
+ const {
165
+ callInfo
166
+ } = await onNode.getTransactionInfoByHash(txData.hash);
167
+ Object.assign(result.txData, callInfo); // TODO: don't duplicate data in result
168
+ // @ts-expect-error TODO api should be updated to match types
169
+
170
+ handleCallError(callInfo, tx);
171
+ return { ...result,
172
+ result: callInfo
173
+ };
174
+ };
175
+
176
+ const handleCallError = (_ref2, transaction) => {
177
+ let {
178
+ returnType,
179
+ returnValue
180
+ } = _ref2;
181
+ let message;
182
+
183
+ switch (returnType) {
184
+ case 'ok':
185
+ return;
186
+
187
+ case 'revert':
188
+ message = instance.calldata.decodeFateString(returnValue);
189
+ break;
190
+
191
+ case 'error':
192
+ message = decode(returnValue).toString();
193
+ break;
194
+ }
195
+
196
+ throw new NodeInvocationError(message, transaction);
197
+ };
198
+
199
+ instance._estimateGas = async (name, params, options) => {
200
+ const {
201
+ result: {
202
+ gasUsed
203
+ }
204
+ } = await instance.call(name, params, { ...options,
205
+ callStatic: true
206
+ }); // taken from https://github.com/aeternity/aepp-sdk-js/issues/1286#issuecomment-977814771
207
+
208
+ return Math.floor(gasUsed * 1.25);
209
+ };
210
+ /**
211
+ * Deploy contract
212
+ * @param params - Contract init function arguments array
213
+ * @param options - Options
214
+ * @returns deploy info
215
+ */
216
+
217
+
218
+ instance.deploy = async function () {
219
+ var _opt$gasLimit;
220
+
221
+ let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
222
+ let options = arguments.length > 1 ? arguments[1] : undefined;
223
+ const opt = { ...instance.options,
224
+ ...options
225
+ };
226
+ if (instance.bytecode == null) await instance.compile(opt); // @ts-expect-error
227
+
228
+ if (opt.callStatic === true) return await instance.call('init', params, opt);
229
+ if (instance.deployInfo.address != null) throw new DuplicateContractError();
230
+ const ownerId = await opt.onAccount.address(options);
231
+ const tx = await _buildTx(TX_TYPE.contractCreate, { ...opt,
232
+ gasLimit: (_opt$gasLimit = opt.gasLimit) !== null && _opt$gasLimit !== void 0 ? _opt$gasLimit : await instance._estimateGas('init', params, opt),
233
+ callData: instance.calldata.encode(instance._name, 'init', params),
234
+ code: instance.bytecode,
235
+ ownerId,
236
+ onNode
237
+ });
238
+ const contractId = buildContractIdByContractTx(tx);
239
+ const {
240
+ hash,
241
+ rawTx,
242
+ result,
243
+ txData
244
+ } = await sendAndProcess(tx, opt);
245
+ instance.deployInfo = Object.freeze({
246
+ result,
247
+ owner: ownerId,
248
+ transaction: hash,
249
+ rawTx,
250
+ txData,
251
+ address: contractId
252
+ });
253
+ return instance.deployInfo;
254
+ };
255
+ /**
256
+ * Get function schema from contract ACI object
257
+ * @param name - Function name
258
+ * @returns function ACI
259
+ */
260
+
261
+
262
+ function getFunctionACI(name) {
263
+ const fn = instance._aci.encodedAci.contract.functions.find(f => f.name === name);
264
+
265
+ if (fn != null) {
266
+ return fn;
267
+ }
268
+
269
+ if (name === 'init') return {
270
+ payable: false
271
+ };
272
+ throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`);
273
+ }
274
+ /**
275
+ * Call contract function
276
+ * @param fn - Function name
277
+ * @param params - Array of function arguments
278
+ * @param options - Array of function arguments
279
+ * @returns CallResult
280
+ */
281
+
282
+
283
+ instance.call = async function (fn) {
284
+ let params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
285
+ let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
286
+ const opt = { ...instance.options,
287
+ ...options
288
+ };
289
+ const fnACI = getFunctionACI(fn);
290
+ const contractId = instance.deployInfo.address;
291
+ if (fn == null) throw new MissingFunctionNameError();
292
+ if (fn === 'init' && opt.callStatic === false) throw new InvalidMethodInvocationError('"init" can be called only via dryRun');
293
+ if (contractId == null && fn !== 'init') throw new InvalidMethodInvocationError('You need to deploy contract before calling!');
294
+ if (fn !== 'init' && opt.amount > 0 && fnACI.payable === false) throw new NotPayableFunctionError(opt.amount, fn);
295
+ const callerId = await Promise.resolve().then(() => opt.onAccount.address(opt)).catch(error => {
296
+ if (opt.callStatic === true) return DRY_RUN_ACCOUNT.pub;else throw error;
297
+ });
298
+ const callData = instance.calldata.encode(instance._name, fn, params);
299
+ let res;
300
+
301
+ if (opt.callStatic === true) {
302
+ var _opt$gasLimit2;
303
+
304
+ if (typeof opt.top === 'number') {
305
+ opt.top = (await getKeyBlock(opt.top, {
306
+ onNode
307
+ })).hash;
308
+ }
309
+
310
+ const txOpt = { ...opt,
311
+ onNode,
312
+ gasLimit: (_opt$gasLimit2 = opt.gasLimit) !== null && _opt$gasLimit2 !== void 0 ? _opt$gasLimit2 : GAS_MAX,
313
+ callData
314
+ };
315
+
316
+ if (opt.nonce == null && opt.top != null) {
317
+ opt.nonce = (await getAccount(callerId, {
318
+ hash: opt.top,
319
+ onNode
320
+ })).nonce + 1;
321
+ }
322
+
323
+ const tx = await (fn === 'init' ? _buildTx(TX_TYPE.contractCreate, { ...txOpt,
324
+ code: instance.bytecode,
325
+ ownerId: callerId
326
+ }) : _buildTx(TX_TYPE.contractCall, { ...txOpt,
327
+ callerId,
328
+ contractId
329
+ }));
330
+ const {
331
+ callObj,
332
+ ...dryRunOther
333
+ } = await txDryRun(tx, callerId, {
334
+ onNode,
335
+ ...opt
336
+ });
337
+ if (callObj == null) throw new UnexpectedTsError();
338
+ handleCallError({
339
+ returnType: callObj.returnType,
340
+ returnValue: callObj.returnValue
341
+ }, tx);
342
+ res = { ...dryRunOther,
343
+ tx: unpackTx(tx),
344
+ result: callObj
345
+ };
346
+ } else {
347
+ var _opt$gasLimit3;
348
+
349
+ const tx = await _buildTx(TX_TYPE.contractCall, { ...opt,
350
+ onNode,
351
+ gasLimit: (_opt$gasLimit3 = opt.gasLimit) !== null && _opt$gasLimit3 !== void 0 ? _opt$gasLimit3 : await instance._estimateGas(fn, params, opt),
352
+ callerId,
353
+ contractId,
354
+ callData
355
+ });
356
+ res = await sendAndProcess(tx, opt);
357
+ }
358
+
359
+ if (opt.callStatic === true || res.txData.blockHeight != null) {
360
+ res.decodedResult = fnACI.returns != null && fnACI.returns !== 'unit' && fn !== 'init' && instance.calldata.decode(instance._name, fn, res.result.returnValue);
361
+ res.decodedEvents = instance.decodeEvents(res.result.log, opt);
362
+ }
363
+
364
+ return res;
365
+ };
366
+ /**
367
+ * @param address - Contract address that emitted event
368
+ * @param nameHash - Hash of emitted event name
369
+ * @param options - Options
370
+ * @returns Contract name
371
+ * @throws {@link MissingEventDefinitionError}
372
+ * @throws {@link AmbiguousEventDefinitionError}
373
+ */
374
+
375
+
376
+ function getContractNameByEvent(address, nameHash, _ref3) {
377
+ let {
378
+ contractAddressToName
379
+ } = _ref3;
380
+ const addressToName = { ...instance.options.contractAddressToName,
381
+ ...contractAddressToName
382
+ };
383
+ if (addressToName[address] != null) return addressToName[address];
384
+ const matchedEvents = [instance._aci.encodedAci, ...instance._aci.externalEncodedAci].filter(_ref4 => {
385
+ let {
386
+ contract
387
+ } = _ref4;
388
+ return contract === null || contract === void 0 ? void 0 : contract.event;
389
+ }).map(_ref5 => {
390
+ let {
391
+ contract
392
+ } = _ref5;
393
+ return [contract.name, contract.event.variant];
394
+ }).map(_ref6 => {
395
+ let [name, events] = _ref6;
396
+ return events.map(event => [name, Object.keys(event)[0]]);
397
+ }).flat().filter(_ref7 => {
398
+ let [, eventName] = _ref7;
399
+ return BigInt('0x' + hash(eventName).toString('hex')) === nameHash;
400
+ });
401
+
402
+ switch (matchedEvents.length) {
403
+ case 0:
404
+ throw new MissingEventDefinitionError(nameHash.toString(), address);
405
+
406
+ case 1:
407
+ return matchedEvents[0][0];
408
+
409
+ default:
410
+ throw new AmbiguousEventDefinitionError(address, matchedEvents);
411
+ }
412
+ }
413
+ /**
414
+ * Decode Events
415
+ * @param events - Array of encoded events (callRes.result.log)
416
+ * @param options - Options
417
+ * @returns DecodedEvents
418
+ */
419
+
420
+
421
+ instance.decodeEvents = function (events) {
422
+ let {
423
+ omitUnknown,
424
+ ...opt
425
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
426
+ return events.map(event => {
427
+ const topics = event.topics.map(t => BigInt(t));
428
+ let contractName;
429
+
430
+ try {
431
+ contractName = getContractNameByEvent(event.address, topics[0], opt);
432
+ } catch (error) {
433
+ if ((omitUnknown !== null && omitUnknown !== void 0 ? omitUnknown : false) && error instanceof MissingEventDefinitionError) return null;
434
+ throw error;
435
+ }
436
+
437
+ const decoded = instance.calldata.decodeEvent(contractName, event.data, topics);
438
+ const [name, args] = Object.entries(decoded)[0];
439
+ return {
440
+ name,
441
+ args,
442
+ contract: {
443
+ name: contractName,
444
+ address: event.address
445
+ }
446
+ };
447
+ }).filter(e => e != null);
448
+ };
449
+ /**
450
+ * Generate proto function based on contract function using Contract ACI schema
451
+ * All function can be called like:
452
+ * ```js
453
+ * await contract.methods.testFunction()
454
+ * ```
455
+ * then sdk will decide to use dry-run or send tx
456
+ * on-chain base on if function stateful or not.
457
+ * Also, you can manually do that:
458
+ * ```js
459
+ * await contract.methods.testFunction.get() // use call-static (dry-run)
460
+ * await contract.methods.testFunction.send() // send tx on-chain
461
+ * ```
462
+ */
463
+
464
+
465
+ instance.methods = Object.fromEntries(instance._aci.encodedAci.contract.functions.map(_ref8 => {
466
+ let {
467
+ name,
468
+ arguments: aciArgs,
469
+ stateful
470
+ } = _ref8;
471
+
472
+ const genHandler = callStatic => async function () {
473
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
474
+ args[_key] = arguments[_key];
475
+ }
476
+
477
+ const options = args.length === aciArgs.length + 1 ? args.pop() : {};
478
+ if (typeof options !== 'object') throw new TypeError(`Options should be an object: ${options}`);
479
+ if (name === 'init') return await instance.deploy(args, {
480
+ callStatic,
481
+ ...options
482
+ });
483
+ return await instance.call(name, args, {
484
+ callStatic,
485
+ ...options
486
+ });
487
+ };
488
+
489
+ return [name, Object.assign(genHandler(name === 'init' ? false : !stateful), {
490
+ get: genHandler(true),
491
+ send: genHandler(false)
492
+ })];
493
+ }));
494
+ return instance;
495
+ }
496
+ //# sourceMappingURL=aci.mjs.map