@aeternity/aepp-sdk 12.1.3 → 13.0.0-alpha.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 (565) hide show
  1. package/bin/aesophia_cli +0 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +12031 -11231
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/AeSdk.d.ts +7 -3
  9. package/es/AeSdk.mjs +17 -22
  10. package/es/AeSdk.mjs.map +1 -1
  11. package/es/AeSdkAepp.d.ts +6 -5
  12. package/es/AeSdkAepp.mjs +7 -30
  13. package/es/AeSdkAepp.mjs.map +1 -1
  14. package/es/AeSdkBase.d.ts +18 -140
  15. package/es/AeSdkBase.mjs +30 -184
  16. package/es/AeSdkBase.mjs.map +1 -1
  17. package/es/AeSdkMethods.d.ts +123 -0
  18. package/es/AeSdkMethods.mjs +122 -0
  19. package/es/AeSdkMethods.mjs.map +1 -0
  20. package/es/AeSdkWallet.d.ts +7 -21
  21. package/es/AeSdkWallet.mjs +38 -86
  22. package/es/AeSdkWallet.mjs.map +1 -1
  23. package/es/Node.d.ts +11 -15
  24. package/es/Node.mjs +35 -48
  25. package/es/Node.mjs.map +1 -1
  26. package/es/account/Base.d.ts +24 -40
  27. package/es/account/Base.mjs +1 -101
  28. package/es/account/Base.mjs.map +1 -1
  29. package/es/account/Generalized.d.ts +16 -0
  30. package/es/account/Generalized.mjs +113 -0
  31. package/es/account/Generalized.mjs.map +1 -0
  32. package/es/account/Ledger.d.ts +28 -0
  33. package/es/account/Ledger.mjs +102 -0
  34. package/es/account/Ledger.mjs.map +1 -0
  35. package/es/account/LedgerFactory.d.ts +39 -0
  36. package/es/account/LedgerFactory.mjs +81 -0
  37. package/es/account/LedgerFactory.mjs.map +1 -0
  38. package/es/account/Memory.d.ts +13 -17
  39. package/es/account/Memory.mjs +43 -64
  40. package/es/account/Memory.mjs.map +1 -1
  41. package/es/account/Rpc.d.ts +6 -8
  42. package/es/account/Rpc.mjs +14 -32
  43. package/es/account/Rpc.mjs.map +1 -1
  44. package/es/aens.d.ts +4 -4
  45. package/es/aens.mjs +46 -41
  46. package/es/aens.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/connection/Browser.mjs +9 -13
  48. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  49. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  50. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +22 -11
  51. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  52. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +1 -1
  53. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -31
  54. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  55. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  56. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +3 -3
  57. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -42
  58. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  59. package/es/aepp-wallet-communication/rpc/types.d.ts +7 -1
  60. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  61. package/es/aepp-wallet-communication/schema.mjs +14 -68
  62. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  63. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -3
  64. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  65. package/es/apis/compiler/compiler.d.ts +23 -29
  66. package/es/apis/compiler/compiler.mjs +128 -189
  67. package/es/apis/compiler/compiler.mjs.map +1 -1
  68. package/es/apis/compiler/index.mjs.map +1 -1
  69. package/es/apis/compiler/models/index.d.ts +82 -135
  70. package/es/apis/compiler/models/index.mjs +1 -47
  71. package/es/apis/compiler/models/index.mjs.map +1 -1
  72. package/es/apis/compiler/models/mappers.d.ts +8 -8
  73. package/es/apis/compiler/models/mappers.mjs +165 -183
  74. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  75. package/es/apis/compiler/models/parameters.d.ts +0 -1
  76. package/es/apis/compiler/models/parameters.mjs +5 -9
  77. package/es/apis/compiler/models/parameters.mjs.map +1 -1
  78. package/es/apis/node/index.mjs.map +1 -1
  79. package/es/apis/node/models/index.d.ts +48 -48
  80. package/es/apis/node/models/mappers.mjs +12 -6
  81. package/es/apis/node/models/mappers.mjs.map +1 -1
  82. package/es/apis/node/models/parameters.mjs.map +1 -1
  83. package/es/apis/node/node.mjs +43 -84
  84. package/es/apis/node/node.mjs.map +1 -1
  85. package/es/chain.d.ts +10 -2
  86. package/es/chain.mjs +37 -59
  87. package/es/chain.mjs.map +1 -1
  88. package/es/channel/Base.d.ts +200 -0
  89. package/es/channel/Base.mjs +293 -0
  90. package/es/channel/Base.mjs.map +1 -0
  91. package/es/channel/Contract.d.ts +248 -0
  92. package/es/channel/Contract.mjs +420 -0
  93. package/es/channel/Contract.mjs.map +1 -0
  94. package/es/channel/Spend.d.ts +219 -0
  95. package/es/channel/Spend.mjs +385 -0
  96. package/es/channel/Spend.mjs.map +1 -0
  97. package/es/channel/handlers.d.ts +8 -21
  98. package/es/channel/handlers.mjs +151 -899
  99. package/es/channel/handlers.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +27 -21
  101. package/es/channel/internal.mjs +101 -191
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Contract.d.ts +210 -0
  104. package/es/contract/Contract.mjs +551 -0
  105. package/es/contract/Contract.mjs.map +1 -0
  106. package/es/contract/compiler/Base.d.ts +81 -0
  107. package/es/contract/compiler/Base.mjs +5 -0
  108. package/es/contract/compiler/Base.mjs.map +1 -0
  109. package/es/contract/compiler/Cli.d.ts +23 -0
  110. package/es/contract/compiler/Cli.mjs +155 -0
  111. package/es/contract/compiler/Cli.mjs.map +1 -0
  112. package/es/contract/compiler/Http.d.ts +32 -0
  113. package/es/contract/compiler/Http.mjs +118 -0
  114. package/es/contract/compiler/Http.mjs.map +1 -0
  115. package/es/contract/compiler/HttpNode.d.ts +17 -0
  116. package/es/contract/compiler/HttpNode.mjs +26 -0
  117. package/es/contract/compiler/HttpNode.mjs.map +1 -0
  118. package/es/contract/compiler/getFileSystem.d.ts +6 -0
  119. package/es/contract/compiler/getFileSystem.mjs +40 -0
  120. package/es/contract/compiler/getFileSystem.mjs.map +1 -0
  121. package/es/contract/ga.d.ts +9 -34
  122. package/es/contract/ga.mjs +29 -112
  123. package/es/contract/ga.mjs.map +1 -1
  124. package/es/index-browser.d.ts +39 -0
  125. package/es/index-browser.mjs +55 -0
  126. package/es/index-browser.mjs.map +1 -0
  127. package/es/index.d.ts +4 -35
  128. package/es/index.mjs +4 -51
  129. package/es/index.mjs.map +1 -1
  130. package/es/oracle.d.ts +5 -5
  131. package/es/oracle.mjs +34 -40
  132. package/es/oracle.mjs.map +1 -1
  133. package/es/spend.d.ts +3 -3
  134. package/es/spend.mjs +18 -23
  135. package/es/spend.mjs.map +1 -1
  136. package/es/tx/builder/constants.d.ts +30 -2
  137. package/es/tx/builder/constants.mjs +43 -14
  138. package/es/tx/builder/constants.mjs.map +1 -1
  139. package/es/tx/builder/field-types/abi-version.d.ts +10 -0
  140. package/es/tx/builder/field-types/abi-version.mjs +20 -0
  141. package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
  142. package/es/tx/builder/field-types/address.d.ts +14 -0
  143. package/es/tx/builder/field-types/address.mjs +51 -0
  144. package/es/tx/builder/field-types/address.mjs.map +1 -0
  145. package/es/tx/builder/field-types/array.d.ts +7 -0
  146. package/es/tx/builder/field-types/array.mjs +11 -0
  147. package/es/tx/builder/field-types/array.mjs.map +1 -0
  148. package/es/tx/builder/field-types/boolean.d.ts +6 -0
  149. package/es/tx/builder/field-types/boolean.mjs +13 -0
  150. package/es/tx/builder/field-types/boolean.mjs.map +1 -0
  151. package/es/tx/builder/field-types/coin-amount.d.ts +2 -3
  152. package/es/tx/builder/field-types/coin-amount.mjs +4 -12
  153. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  154. package/es/tx/builder/field-types/ct-version.d.ts +30 -0
  155. package/es/tx/builder/field-types/ct-version.mjs +48 -0
  156. package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
  157. package/es/tx/builder/field-types/deposit.d.ts +1 -2
  158. package/es/tx/builder/field-types/deposit.mjs +2 -4
  159. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  160. package/es/tx/builder/field-types/encoded.d.ts +6 -0
  161. package/es/tx/builder/field-types/encoded.mjs +21 -0
  162. package/es/tx/builder/field-types/encoded.mjs.map +1 -0
  163. package/es/tx/builder/field-types/entry.d.ts +11 -0
  164. package/es/tx/builder/field-types/entry.mjs +31 -0
  165. package/es/tx/builder/field-types/entry.mjs.map +1 -0
  166. package/es/tx/builder/field-types/enumeration.d.ts +7 -0
  167. package/es/tx/builder/field-types/enumeration.mjs +30 -0
  168. package/es/tx/builder/field-types/enumeration.mjs.map +1 -0
  169. package/es/tx/builder/field-types/fee.d.ts +10 -15
  170. package/es/tx/builder/field-types/fee.mjs +31 -43
  171. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  172. package/es/tx/builder/field-types/field.mjs +0 -2
  173. package/es/tx/builder/field-types/field.mjs.map +1 -1
  174. package/es/tx/builder/field-types/gas-limit.d.ts +5 -2
  175. package/es/tx/builder/field-types/gas-limit.mjs +12 -14
  176. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  177. package/es/tx/builder/field-types/gas-price.d.ts +1 -2
  178. package/es/tx/builder/field-types/gas-price.mjs +3 -7
  179. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  180. package/es/tx/builder/field-types/index.d.ts +80 -30
  181. package/es/tx/builder/field-types/index.mjs +34 -9
  182. package/es/tx/builder/field-types/index.mjs.map +1 -1
  183. package/es/tx/builder/field-types/mptree.d.ts +37 -0
  184. package/es/tx/builder/field-types/mptree.mjs +268 -0
  185. package/es/tx/builder/field-types/mptree.mjs.map +1 -0
  186. package/es/tx/builder/field-types/name-fee.d.ts +1 -3
  187. package/es/tx/builder/field-types/name-fee.mjs +3 -5
  188. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  189. package/es/tx/builder/field-types/name-id.d.ts +1 -4
  190. package/es/tx/builder/field-types/name-id.mjs +5 -10
  191. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  192. package/es/tx/builder/field-types/name.mjs +0 -2
  193. package/es/tx/builder/field-types/name.mjs.map +1 -1
  194. package/es/tx/builder/field-types/pointers.d.ts +23 -0
  195. package/es/tx/builder/field-types/pointers.mjs +36 -0
  196. package/es/tx/builder/field-types/pointers.mjs.map +1 -0
  197. package/es/tx/builder/field-types/raw.d.ts +6 -0
  198. package/es/tx/builder/field-types/raw.mjs +13 -0
  199. package/es/tx/builder/field-types/raw.mjs.map +1 -0
  200. package/es/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  201. package/es/tx/builder/field-types/short-u-int-const.mjs +16 -0
  202. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -0
  203. package/es/tx/builder/field-types/short-u-int.mjs +0 -2
  204. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  205. package/es/tx/builder/field-types/string.d.ts +6 -0
  206. package/es/tx/builder/field-types/string.mjs +10 -0
  207. package/es/tx/builder/field-types/string.mjs.map +1 -0
  208. package/es/tx/builder/field-types/u-int.d.ts +1 -2
  209. package/es/tx/builder/field-types/u-int.mjs +3 -4
  210. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  211. package/es/tx/builder/helpers.d.ts +2 -32
  212. package/es/tx/builder/helpers.mjs +19 -71
  213. package/es/tx/builder/helpers.mjs.map +1 -1
  214. package/es/tx/builder/index.d.ts +11 -49
  215. package/es/tx/builder/index.mjs +57 -337
  216. package/es/tx/builder/index.mjs.map +1 -1
  217. package/es/tx/builder/schema.d.ts +2367 -667
  218. package/es/tx/builder/schema.mjs +70 -145
  219. package/es/tx/builder/schema.mjs.map +1 -1
  220. package/es/tx/index.d.ts +4 -49
  221. package/es/tx/index.mjs +38 -112
  222. package/es/tx/index.mjs.map +1 -1
  223. package/es/tx/validator.d.ts +4 -6
  224. package/es/tx/validator.mjs +104 -90
  225. package/es/tx/validator.mjs.map +1 -1
  226. package/es/typings/{@aeternity__argon2-browser → @aeternity__aepp-calldata}/index.d.mjs +0 -0
  227. package/es/typings/@aeternity__aepp-calldata/index.d.mjs.map +1 -0
  228. package/es/utils/amount-formatter.mjs +4 -10
  229. package/es/utils/amount-formatter.mjs.map +1 -1
  230. package/es/utils/autorest.d.ts +1 -0
  231. package/es/utils/autorest.mjs +17 -19
  232. package/es/utils/autorest.mjs.map +1 -1
  233. package/es/utils/bignumber.mjs +4 -7
  234. package/es/utils/bignumber.mjs.map +1 -1
  235. package/es/utils/bytes.d.ts +0 -17
  236. package/es/utils/bytes.mjs +6 -35
  237. package/es/utils/bytes.mjs.map +1 -1
  238. package/es/utils/crypto.d.ts +15 -8
  239. package/es/utils/crypto.mjs +40 -40
  240. package/es/utils/crypto.mjs.map +1 -1
  241. package/es/utils/encoder-types.d.ts +28 -28
  242. package/es/utils/encoder-types.mjs +0 -1
  243. package/es/utils/encoder-types.mjs.map +1 -1
  244. package/es/utils/encoder.d.ts +0 -1
  245. package/es/utils/encoder.mjs +7 -15
  246. package/es/utils/encoder.mjs.map +1 -1
  247. package/es/utils/errors.d.ts +15 -14
  248. package/es/utils/errors.mjs +86 -172
  249. package/es/utils/errors.mjs.map +1 -1
  250. package/es/utils/hd-wallet.d.ts +27 -19
  251. package/es/utils/hd-wallet.mjs +42 -26
  252. package/es/utils/hd-wallet.mjs.map +1 -1
  253. package/es/utils/json-big.mjs +0 -8
  254. package/es/utils/json-big.mjs.map +1 -1
  255. package/es/utils/keystore.d.ts +2 -0
  256. package/es/utils/keystore.mjs +37 -36
  257. package/es/utils/keystore.mjs.map +1 -1
  258. package/es/utils/other.d.ts +4 -2
  259. package/es/utils/other.mjs +11 -7
  260. package/es/utils/other.mjs.map +1 -1
  261. package/es/utils/semver-satisfies.mjs +0 -3
  262. package/es/utils/semver-satisfies.mjs.map +1 -1
  263. package/es/utils/string.d.ts +0 -12
  264. package/es/utils/string.mjs +1 -21
  265. package/es/utils/string.mjs.map +1 -1
  266. package/package.json +98 -51
  267. package/src/AeSdk.ts +15 -11
  268. package/src/AeSdkAepp.ts +9 -7
  269. package/src/AeSdkBase.ts +31 -202
  270. package/src/AeSdkMethods.ts +169 -0
  271. package/src/AeSdkWallet.ts +16 -47
  272. package/src/Node.ts +17 -18
  273. package/src/account/Base.ts +29 -75
  274. package/src/account/Generalized.ts +98 -0
  275. package/src/account/Ledger.ts +131 -0
  276. package/src/account/LedgerFactory.ts +86 -0
  277. package/src/account/Memory.ts +46 -60
  278. package/src/account/Rpc.ts +17 -26
  279. package/src/aens.ts +13 -11
  280. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +21 -9
  281. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +3 -3
  282. package/src/aepp-wallet-communication/rpc/RpcClient.ts +4 -4
  283. package/src/aepp-wallet-communication/rpc/types.ts +11 -1
  284. package/src/aepp-wallet-communication/schema.ts +18 -18
  285. package/src/apis/compiler/code-model-v4.yaml +681 -888
  286. package/src/apis/compiler/compiler.ts +113 -154
  287. package/src/apis/compiler/models/index.ts +80 -140
  288. package/src/apis/compiler/models/mappers.ts +165 -183
  289. package/src/apis/compiler/models/parameters.ts +6 -12
  290. package/src/chain.ts +11 -6
  291. package/src/channel/Base.ts +335 -0
  292. package/src/channel/Contract.ts +488 -0
  293. package/src/channel/Spend.ts +408 -0
  294. package/src/channel/handlers.ts +164 -582
  295. package/src/channel/internal.ts +114 -143
  296. package/src/contract/Contract.ts +610 -0
  297. package/src/contract/compiler/Base.ts +94 -0
  298. package/src/contract/compiler/Cli.ts +134 -0
  299. package/src/contract/compiler/Http.ts +124 -0
  300. package/src/contract/compiler/HttpNode.ts +26 -0
  301. package/src/contract/compiler/getFileSystem.ts +42 -0
  302. package/src/contract/ga.ts +23 -106
  303. package/src/index-browser.ts +58 -0
  304. package/src/index.ts +4 -55
  305. package/src/oracle.ts +8 -8
  306. package/src/spend.ts +6 -14
  307. package/src/tx/builder/constants.ts +33 -3
  308. package/src/tx/builder/field-types/abi-version.ts +21 -0
  309. package/src/tx/builder/field-types/address.ts +62 -0
  310. package/src/tx/builder/field-types/array.ts +19 -0
  311. package/src/tx/builder/field-types/boolean.ts +9 -0
  312. package/src/tx/builder/field-types/coin-amount.ts +4 -9
  313. package/src/tx/builder/field-types/ct-version.ts +50 -0
  314. package/src/tx/builder/field-types/deposit.ts +1 -1
  315. package/src/tx/builder/field-types/encoded.ts +27 -0
  316. package/src/tx/builder/field-types/entry.ts +31 -0
  317. package/src/tx/builder/field-types/enumeration.ts +32 -0
  318. package/src/tx/builder/field-types/fee.ts +39 -21
  319. package/src/tx/builder/field-types/gas-limit.ts +13 -8
  320. package/src/tx/builder/field-types/gas-price.ts +0 -2
  321. package/src/tx/builder/field-types/index.ts +54 -15
  322. package/src/tx/builder/field-types/mptree.ts +242 -0
  323. package/src/tx/builder/field-types/name-fee.ts +2 -3
  324. package/src/tx/builder/field-types/name-id.ts +7 -10
  325. package/src/tx/builder/field-types/pointers.ts +41 -0
  326. package/src/tx/builder/field-types/raw.ts +9 -0
  327. package/src/tx/builder/field-types/short-u-int-const.ts +20 -0
  328. package/src/tx/builder/field-types/string.ts +11 -0
  329. package/src/tx/builder/field-types/u-int.ts +4 -5
  330. package/src/tx/builder/helpers.ts +10 -60
  331. package/src/tx/builder/index.ts +65 -308
  332. package/src/tx/builder/schema.ts +280 -341
  333. package/src/tx/index.ts +40 -103
  334. package/src/tx/validator.ts +91 -96
  335. package/src/typings/@aeternity__aepp-calldata/index.d.ts +20 -0
  336. package/src/utils/autorest.ts +16 -1
  337. package/src/utils/bytes.ts +6 -34
  338. package/src/utils/crypto.ts +23 -16
  339. package/src/utils/encoder.ts +0 -1
  340. package/src/utils/errors.ts +22 -25
  341. package/src/utils/hd-wallet.ts +30 -9
  342. package/src/utils/keystore.ts +24 -21
  343. package/src/utils/other.ts +16 -1
  344. package/src/utils/string.ts +0 -20
  345. package/types-legacy/ts4.2/AeSdk.d.ts +41 -0
  346. package/types-legacy/ts4.2/AeSdkAepp.d.ts +71 -0
  347. package/types-legacy/ts4.2/AeSdkBase.d.ts +91 -0
  348. package/types-legacy/ts4.2/AeSdkMethods.d.ts +140 -0
  349. package/types-legacy/ts4.2/AeSdkWallet.d.ts +90 -0
  350. package/types-legacy/ts4.2/Node.d.ts +78 -0
  351. package/types-legacy/ts4.2/account/Base.d.ts +52 -0
  352. package/types-legacy/ts4.2/account/Generalized.d.ts +16 -0
  353. package/types-legacy/ts4.2/account/Ledger.d.ts +28 -0
  354. package/types-legacy/ts4.2/account/LedgerFactory.d.ts +39 -0
  355. package/types-legacy/ts4.2/account/Memory.d.ts +22 -0
  356. package/types-legacy/ts4.2/account/Rpc.d.ts +25 -0
  357. package/types-legacy/ts4.2/aens.d.ts +222 -0
  358. package/types-legacy/ts4.2/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  359. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +19 -0
  360. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  361. package/types-legacy/ts4.2/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  362. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  363. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +83 -0
  364. package/types-legacy/ts4.2/aepp-wallet-communication/schema.d.ts +133 -0
  365. package/types-legacy/ts4.2/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  366. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +86 -0
  367. package/types-legacy/ts4.2/apis/compiler/index.d.ts +2 -0
  368. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +195 -0
  369. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +23 -0
  370. package/types-legacy/ts4.2/apis/compiler/models/parameters.d.ts +12 -0
  371. package/types-legacy/ts4.2/apis/node/index.d.ts +2 -0
  372. package/types-legacy/ts4.2/apis/node/models/index.d.ts +1065 -0
  373. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +95 -0
  374. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +17 -0
  375. package/types-legacy/ts4.2/apis/node/node.d.ts +215 -0
  376. package/types-legacy/ts4.2/chain.d.ts +256 -0
  377. package/types-legacy/ts4.2/channel/Base.d.ts +199 -0
  378. package/types-legacy/ts4.2/channel/Contract.d.ts +248 -0
  379. package/types-legacy/ts4.2/channel/Spend.d.ts +219 -0
  380. package/types-legacy/ts4.2/channel/handlers.d.ts +21 -0
  381. package/types-legacy/ts4.2/channel/internal.d.ts +107 -0
  382. package/types-legacy/ts4.2/contract/Contract.d.ts +212 -0
  383. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +81 -0
  384. package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
  385. package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
  386. package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
  387. package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
  388. package/types-legacy/ts4.2/contract/ga.d.ts +44 -0
  389. package/types-legacy/ts4.2/globals.d.ts +16 -0
  390. package/types-legacy/ts4.2/index-browser.d.ts +39 -0
  391. package/types-legacy/ts4.2/index.d.ts +5 -0
  392. package/types-legacy/ts4.2/oracle.d.ts +161 -0
  393. package/types-legacy/ts4.2/spend.d.ts +62 -0
  394. package/types-legacy/ts4.2/tx/builder/constants.d.ts +98 -0
  395. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +10 -0
  396. package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +21 -0
  397. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
  398. package/types-legacy/ts4.2/tx/builder/field-types/boolean.d.ts +6 -0
  399. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +12 -0
  400. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +42 -0
  401. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +14 -0
  402. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
  403. package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
  404. package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +7 -0
  405. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +20 -0
  406. package/types-legacy/ts4.2/tx/builder/field-types/field.d.ts +6 -0
  407. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +15 -0
  408. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +7 -0
  409. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +129 -0
  410. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +43 -0
  411. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +18 -0
  412. package/types-legacy/ts4.2/tx/builder/field-types/name-id.d.ts +11 -0
  413. package/types-legacy/ts4.2/tx/builder/field-types/name.d.ts +13 -0
  414. package/types-legacy/ts4.2/tx/builder/field-types/pointers.d.ts +26 -0
  415. package/types-legacy/ts4.2/tx/builder/field-types/raw.d.ts +6 -0
  416. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  417. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int.d.ts +6 -0
  418. package/types-legacy/ts4.2/tx/builder/field-types/string.d.ts +6 -0
  419. package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +7 -0
  420. package/types-legacy/ts4.2/tx/builder/helpers.d.ts +112 -0
  421. package/types-legacy/ts4.2/tx/builder/index.d.ts +50 -0
  422. package/types-legacy/ts4.2/tx/builder/schema.d.ts +4675 -0
  423. package/types-legacy/ts4.2/tx/index.d.ts +19 -0
  424. package/types-legacy/ts4.2/tx/validator.d.ts +18 -0
  425. package/types-legacy/ts4.2/utils/amount-formatter.d.ts +42 -0
  426. package/types-legacy/ts4.2/utils/autorest.d.ts +7 -0
  427. package/types-legacy/ts4.2/utils/bignumber.d.ts +13 -0
  428. package/types-legacy/ts4.2/utils/bytes.d.ts +9 -0
  429. package/types-legacy/ts4.2/utils/crypto.d.ts +95 -0
  430. package/types-legacy/ts4.2/utils/encoder-types.d.ts +61 -0
  431. package/types-legacy/ts4.2/utils/encoder.d.ts +24 -0
  432. package/types-legacy/ts4.2/utils/errors.d.ts +475 -0
  433. package/types-legacy/ts4.2/utils/hd-wallet.d.ts +65 -0
  434. package/types-legacy/ts4.2/utils/json-big.d.ts +5 -0
  435. package/types-legacy/ts4.2/utils/keystore.d.ts +53 -0
  436. package/types-legacy/ts4.2/utils/other.d.ts +31 -0
  437. package/types-legacy/ts4.2/utils/semver-satisfies.d.ts +1 -0
  438. package/types-legacy/ts4.2/utils/string.d.ts +12 -0
  439. package/types-legacy/ts4.5/AeSdk.d.ts +41 -0
  440. package/types-legacy/ts4.5/AeSdkAepp.d.ts +71 -0
  441. package/types-legacy/ts4.5/AeSdkBase.d.ts +91 -0
  442. package/types-legacy/ts4.5/AeSdkMethods.d.ts +140 -0
  443. package/types-legacy/ts4.5/AeSdkWallet.d.ts +90 -0
  444. package/types-legacy/ts4.5/Node.d.ts +78 -0
  445. package/types-legacy/ts4.5/account/Base.d.ts +52 -0
  446. package/types-legacy/ts4.5/account/Generalized.d.ts +16 -0
  447. package/types-legacy/ts4.5/account/Ledger.d.ts +28 -0
  448. package/types-legacy/ts4.5/account/LedgerFactory.d.ts +39 -0
  449. package/types-legacy/ts4.5/account/Memory.d.ts +22 -0
  450. package/types-legacy/ts4.5/account/Rpc.d.ts +25 -0
  451. package/types-legacy/ts4.5/aens.d.ts +222 -0
  452. package/types-legacy/ts4.5/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  453. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +19 -0
  454. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  455. package/types-legacy/ts4.5/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  456. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -0
  457. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +83 -0
  458. package/types-legacy/ts4.5/aepp-wallet-communication/schema.d.ts +133 -0
  459. package/types-legacy/ts4.5/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  460. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +86 -0
  461. package/types-legacy/ts4.5/apis/compiler/index.d.ts +2 -0
  462. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +195 -0
  463. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +23 -0
  464. package/types-legacy/ts4.5/apis/compiler/models/parameters.d.ts +12 -0
  465. package/types-legacy/ts4.5/apis/node/index.d.ts +2 -0
  466. package/types-legacy/ts4.5/apis/node/models/index.d.ts +1065 -0
  467. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +95 -0
  468. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +17 -0
  469. package/types-legacy/ts4.5/apis/node/node.d.ts +215 -0
  470. package/types-legacy/ts4.5/chain.d.ts +256 -0
  471. package/types-legacy/ts4.5/channel/Base.d.ts +199 -0
  472. package/types-legacy/ts4.5/channel/Contract.d.ts +248 -0
  473. package/types-legacy/ts4.5/channel/Spend.d.ts +219 -0
  474. package/types-legacy/ts4.5/channel/handlers.d.ts +21 -0
  475. package/types-legacy/ts4.5/channel/internal.d.ts +107 -0
  476. package/types-legacy/ts4.5/contract/Contract.d.ts +212 -0
  477. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +81 -0
  478. package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
  479. package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
  480. package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
  481. package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
  482. package/types-legacy/ts4.5/contract/ga.d.ts +44 -0
  483. package/types-legacy/ts4.5/index-browser.d.ts +39 -0
  484. package/types-legacy/ts4.5/index.d.ts +4 -0
  485. package/types-legacy/ts4.5/oracle.d.ts +161 -0
  486. package/types-legacy/ts4.5/spend.d.ts +62 -0
  487. package/types-legacy/ts4.5/tx/builder/constants.d.ts +98 -0
  488. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +10 -0
  489. package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +21 -0
  490. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
  491. package/types-legacy/ts4.5/tx/builder/field-types/boolean.d.ts +6 -0
  492. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +12 -0
  493. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +42 -0
  494. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +14 -0
  495. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
  496. package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
  497. package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +7 -0
  498. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +20 -0
  499. package/types-legacy/ts4.5/tx/builder/field-types/field.d.ts +6 -0
  500. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +15 -0
  501. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +7 -0
  502. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +129 -0
  503. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +43 -0
  504. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +18 -0
  505. package/types-legacy/ts4.5/tx/builder/field-types/name-id.d.ts +11 -0
  506. package/types-legacy/ts4.5/tx/builder/field-types/name.d.ts +13 -0
  507. package/types-legacy/ts4.5/tx/builder/field-types/pointers.d.ts +26 -0
  508. package/types-legacy/ts4.5/tx/builder/field-types/raw.d.ts +6 -0
  509. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +5 -0
  510. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int.d.ts +6 -0
  511. package/types-legacy/ts4.5/tx/builder/field-types/string.d.ts +6 -0
  512. package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +7 -0
  513. package/types-legacy/ts4.5/tx/builder/helpers.d.ts +112 -0
  514. package/types-legacy/ts4.5/tx/builder/index.d.ts +50 -0
  515. package/types-legacy/ts4.5/tx/builder/schema.d.ts +4675 -0
  516. package/types-legacy/ts4.5/tx/index.d.ts +19 -0
  517. package/types-legacy/ts4.5/tx/validator.d.ts +18 -0
  518. package/types-legacy/ts4.5/utils/amount-formatter.d.ts +42 -0
  519. package/types-legacy/ts4.5/utils/autorest.d.ts +7 -0
  520. package/types-legacy/ts4.5/utils/bignumber.d.ts +13 -0
  521. package/types-legacy/ts4.5/utils/bytes.d.ts +9 -0
  522. package/types-legacy/ts4.5/utils/crypto.d.ts +95 -0
  523. package/types-legacy/ts4.5/utils/encoder-types.d.ts +61 -0
  524. package/types-legacy/ts4.5/utils/encoder.d.ts +24 -0
  525. package/types-legacy/ts4.5/utils/errors.d.ts +475 -0
  526. package/types-legacy/ts4.5/utils/hd-wallet.d.ts +65 -0
  527. package/types-legacy/ts4.5/utils/json-big.d.ts +5 -0
  528. package/types-legacy/ts4.5/utils/keystore.d.ts +53 -0
  529. package/types-legacy/ts4.5/utils/other.d.ts +31 -0
  530. package/types-legacy/ts4.5/utils/semver-satisfies.d.ts +1 -0
  531. package/types-legacy/ts4.5/utils/string.d.ts +12 -0
  532. package/es/channel/index.d.ts +0 -625
  533. package/es/channel/index.mjs +0 -975
  534. package/es/channel/index.mjs.map +0 -1
  535. package/es/contract/Compiler.d.ts +0 -18
  536. package/es/contract/Compiler.mjs +0 -68
  537. package/es/contract/Compiler.mjs.map +0 -1
  538. package/es/contract/aci.d.ts +0 -127
  539. package/es/contract/aci.mjs +0 -508
  540. package/es/contract/aci.mjs.map +0 -1
  541. package/es/contract/methods.d.ts +0 -71
  542. package/es/contract/methods.mjs +0 -104
  543. package/es/contract/methods.mjs.map +0 -1
  544. package/es/deprecated/index.d.ts +0 -143
  545. package/es/deprecated/index.mjs +0 -162
  546. package/es/deprecated/index.mjs.map +0 -1
  547. package/es/deprecated/methods.d.ts +0 -18
  548. package/es/deprecated/methods.mjs +0 -26
  549. package/es/deprecated/methods.mjs.map +0 -1
  550. package/es/tx/builder/address.d.ts +0 -25
  551. package/es/tx/builder/address.mjs +0 -45
  552. package/es/tx/builder/address.mjs.map +0 -1
  553. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +0 -1
  554. package/es/utils/mptree.d.ts +0 -26
  555. package/es/utils/mptree.mjs +0 -165
  556. package/es/utils/mptree.mjs.map +0 -1
  557. package/src/channel/index.ts +0 -1025
  558. package/src/contract/Compiler.ts +0 -67
  559. package/src/contract/aci.ts +0 -537
  560. package/src/contract/methods.ts +0 -123
  561. package/src/deprecated/index.ts +0 -172
  562. package/src/deprecated/methods.ts +0 -25
  563. package/src/tx/builder/address.ts +0 -50
  564. package/src/typings/@aeternity__argon2-browser/index.d.ts +0 -3
  565. package/src/utils/mptree.ts +0 -145
@@ -0,0 +1,610 @@
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
+
18
+ /**
19
+ * Contract module - routines to interact with the æternity contract
20
+ *
21
+ * High level documentation of the contracts are available at
22
+ * https://github.com/aeternity/protocol/tree/master/contracts and
23
+ */
24
+
25
+ import { Encoder as Calldata } from '@aeternity/aepp-calldata';
26
+ import { DRY_RUN_ACCOUNT } from '../tx/builder/schema';
27
+ import { Tag, AensName } from '../tx/builder/constants';
28
+ import { buildContractIdByContractTx, unpackTx } from '../tx/builder';
29
+ import { _buildTx, BuildTxOptions } from '../tx';
30
+ import { send, SendOptions } from '../spend';
31
+ import { decode, Encoded } from '../utils/encoder';
32
+ import {
33
+ MissingContractDefError,
34
+ MissingContractAddressError,
35
+ InactiveContractError,
36
+ BytecodeMismatchError,
37
+ DuplicateContractError,
38
+ MissingFunctionNameError,
39
+ InvalidMethodInvocationError,
40
+ NotPayableFunctionError,
41
+ TypeError,
42
+ NodeInvocationError,
43
+ IllegalArgumentError,
44
+ NoSuchContractFunctionError,
45
+ MissingEventDefinitionError,
46
+ AmbiguousEventDefinitionError,
47
+ UnexpectedTsError,
48
+ InternalError,
49
+ NoWalletConnectedError,
50
+ } from '../utils/errors';
51
+ import { hash as calcHash } from '../utils/crypto';
52
+ import {
53
+ ContractCallObject as NodeContractCallObject, ContractCallReturnType, Event as NodeEvent,
54
+ } from '../apis/node';
55
+ import CompilerBase, { Aci } from './compiler/Base';
56
+ import Node, { TransformNodeType } from '../Node';
57
+ import {
58
+ getAccount, getContract, getContractByteCode, resolveName, txDryRun,
59
+ } from '../chain';
60
+ import AccountBase from '../account/Base';
61
+ import { concatBuffers } from '../utils/other';
62
+ import { isNameValid, produceNameId } from '../tx/builder/helpers';
63
+
64
+ type FunctionAci = Aci['encodedAci']['contract']['functions'][0];
65
+
66
+ interface Event extends NodeEvent {
67
+ address: Encoded.ContractAddress;
68
+ data: Encoded.ContractBytearray;
69
+ }
70
+
71
+ export interface ContractCallObject extends NodeContractCallObject {
72
+ returnValue: Encoded.ContractBytearray;
73
+ log: Event[];
74
+ }
75
+
76
+ interface DecodedEvent {
77
+ name: string;
78
+ args: unknown[];
79
+ contract: {
80
+ name: string;
81
+ address: Encoded.ContractAddress;
82
+ };
83
+ }
84
+
85
+ type TxData = Awaited<ReturnType<typeof send>>;
86
+
87
+ interface SendAndProcessReturnType {
88
+ result?: TransformNodeType<ContractCallObject>;
89
+ hash: TxData['hash'];
90
+ tx: Awaited<ReturnType<typeof unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>>>;
91
+ txData: TxData;
92
+ rawTx: Encoded.Transaction;
93
+ }
94
+
95
+ export interface ContractMethodsBase { [key: string]: (...args: any[]) => any }
96
+
97
+ type MethodsToContractApi<M extends ContractMethodsBase> = {
98
+ [Name in keyof M]:
99
+ M[Name] extends (...args: infer Args) => infer Ret
100
+ ? (...args: [
101
+ ...Args,
102
+ ...[] | [Name extends 'init'
103
+ ? Parameters<Contract<M>['$deploy']>[1] : Parameters<Contract<M>['$call']>[2]],
104
+ ]) => Promise<
105
+ Awaited<ReturnType<Contract<M>['$call']>> &
106
+ { decodedResult?: Ret }
107
+ >
108
+ : never
109
+ };
110
+
111
+ type ContractWithMethods<M extends ContractMethodsBase> = Contract<M> & MethodsToContractApi<M>;
112
+
113
+ type MethodNames<M extends ContractMethodsBase> = keyof M & string | 'init';
114
+
115
+ type MethodParameters<M extends ContractMethodsBase, Fn extends MethodNames<M>> =
116
+ Fn extends 'init'
117
+ ? M extends { init: any } ? Parameters<M['init']> : []
118
+ : Parameters<M[Fn]>;
119
+
120
+ /**
121
+ * Generate contract ACI object with predefined js methods for contract usage - can be used for
122
+ * creating a reference to already deployed contracts
123
+ * @category contract
124
+ * @param options - Options object
125
+ * @returns JS Contract API
126
+ * @example
127
+ * ```js
128
+ * const contractIns = await aeSdk.initializeContract({ sourceCode })
129
+ * await contractIns.$deploy([321]) or await contractIns.init(321)
130
+ * const callResult = await contractIns.$call('setState', [123])
131
+ * const staticCallResult = await contractIns.$call('setState', [123], { callStatic: true })
132
+ * ```
133
+ * Also you can call contract like: `await contractIns.setState(123, options)`
134
+ * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is
135
+ * stateful or not
136
+ */
137
+ class Contract<M extends ContractMethodsBase> {
138
+ /**
139
+ * Helper to generate a signature to delegate
140
+ * - pre-claim/claim/transfer/revoke of a name to a contract.
141
+ * - register/extend/respond of an Oracle to a contract.
142
+ * @category contract
143
+ * @param ids - The list of id's to prepend
144
+ * @param _options - Options
145
+ * @param _options.omitAddress - Prepend delegation signature with an account address
146
+ * @param _options.onAccount - Account to use
147
+ * @returns Signature
148
+ * @example
149
+ * ```js
150
+ * const aeSdk = new AeSdk({ ... })
151
+ * const contract = await aeSdk.initializeContract({ address: 'ct_asd2ks...' })
152
+ * const aensName = 'example.chain'
153
+ * const onAccount = new MemoryAccount(...) // Sign with a specific account
154
+ * // Preclaim signature
155
+ * const preclaimSig = await contract.$createDelegationSignature([], { onAccount })
156
+ * // Claim, transfer and revoke signature
157
+ * const aensDelegationSig = await contract
158
+ * .$createDelegationSignature([aensName], { onAccount })
159
+ * ```
160
+ * @example
161
+ * ```js
162
+ * const aeSdk = new AeSdk({ ... })
163
+ * const contract = await aeSdk.initializeContract({ address: 'ct_asd2ks...' })
164
+ * const oracleQueryId = 'oq_...'
165
+ * const onAccount = new MemoryAccount(...) // Sign with a specific account
166
+ * // Oracle register and extend signature
167
+ * const oracleDelegationSig = await contract.$createDelegationSignature([], { onAccount })
168
+ * // Oracle respond signature
169
+ * const respondSig = await contract
170
+ * .$createDelegationSignature([oracleQueryId], { onAccount, omitAddress: true })
171
+ * ```
172
+ */
173
+ async $createDelegationSignature(
174
+ ids: Array<Encoded.Any | AensName> = [],
175
+ _options?: { omitAddress?: boolean; onAccount?: AccountBase },
176
+ ): Promise<Uint8Array> {
177
+ const options = { ...this.$options, ..._options };
178
+ const contractId = this.$options.address;
179
+ if (options.onAccount == null) throw new IllegalArgumentError('Can\'t create delegation signature without account');
180
+ if (contractId == null) throw new MissingContractAddressError('Can\'t create delegation signature without address');
181
+ return options.onAccount.sign(
182
+ concatBuffers([
183
+ Buffer.from(await options.onNode.getNetworkId()),
184
+ ...options.omitAddress === true ? [] : [decode(options.onAccount.address)],
185
+ ...ids.map((e) => (isNameValid(e) ? produceNameId(e) : e)).map((e) => decode(e)),
186
+ decode(contractId),
187
+ ]),
188
+ options,
189
+ );
190
+ }
191
+
192
+ /**
193
+ * Compile contract
194
+ * @returns bytecode
195
+ */
196
+ async $compile(): Promise<Encoded.ContractBytearray> {
197
+ if (this.$options.bytecode != null) return this.$options.bytecode;
198
+ if (this.$options.sourceCode == null) throw new IllegalArgumentError('Can\'t compile without source code');
199
+ if (this.$options.onCompiler == null) throw new IllegalArgumentError('Can\'t compile without compiler');
200
+ this.$options.bytecode = (await this.$options.onCompiler
201
+ .compileBySourceCode(this.$options.sourceCode, this.$options.fileSystem)
202
+ ).bytecode;
203
+ return this.$options.bytecode;
204
+ }
205
+
206
+ protected _handleCallError(
207
+ { returnType, returnValue }: {
208
+ returnType: ContractCallReturnType;
209
+ returnValue: Encoded.ContractBytearray;
210
+ },
211
+ transaction: string,
212
+ ): void {
213
+ let message: string;
214
+ switch (returnType) {
215
+ case 'ok': return;
216
+ case 'revert':
217
+ message = this._calldata.decodeFateString(returnValue);
218
+ break;
219
+ case 'error':
220
+ message = decode(returnValue).toString();
221
+ break;
222
+ default:
223
+ throw new InternalError(`Unknown return type: ${returnType}`);
224
+ }
225
+ throw new NodeInvocationError(message, transaction);
226
+ }
227
+
228
+ protected async _sendAndProcess(
229
+ tx: Encoded.Transaction,
230
+ options: SendOptions,
231
+ ): Promise<SendAndProcessReturnType> {
232
+ const txData = await send(tx, { ...this.$options, ...options });
233
+ const result = {
234
+ hash: txData.hash,
235
+ tx: unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>(txData.rawTx),
236
+ txData,
237
+ rawTx: txData.rawTx,
238
+ };
239
+ if (txData.blockHeight == null) return result;
240
+ const { callInfo } = await this.$options.onNode.getTransactionInfoByHash(txData.hash);
241
+ Object.assign(result.txData, callInfo); // TODO: don't duplicate data in result
242
+ // @ts-expect-error TODO api should be updated to match types
243
+ this._handleCallError(callInfo, tx);
244
+ return { ...result, result: callInfo as TransformNodeType<ContractCallObject> };
245
+ }
246
+
247
+ async _estimateGas<Fn extends MethodNames<M>>(
248
+ name: Fn,
249
+ params: MethodParameters<M, Fn>,
250
+ options: object = {},
251
+ ): Promise<number> {
252
+ const { result } = await this.$call(name, params, { ...options, callStatic: true });
253
+ if (result == null) throw new UnexpectedTsError();
254
+ const { gasUsed } = result;
255
+ // taken from https://github.com/aeternity/aepp-sdk-js/issues/1286#issuecomment-977814771
256
+ return Math.floor(gasUsed * 1.25);
257
+ }
258
+
259
+ /**
260
+ * Deploy contract
261
+ * @param params - Contract init function arguments array
262
+ * @param options - Options
263
+ * @returns deploy info
264
+ */
265
+ async $deploy(
266
+ params: MethodParameters<M, 'init'>,
267
+ options?: Parameters<Contract<M>['$call']>[2]
268
+ & Partial<BuildTxOptions<Tag.ContractCreateTx, 'ownerId' | 'code' | 'callData'>>,
269
+ ): Promise<Omit<SendAndProcessReturnType, 'hash'> & {
270
+ transaction?: Encoded.TxHash;
271
+ owner?: Encoded.AccountAddress;
272
+ address?: Encoded.ContractAddress;
273
+ decodedEvents?: ReturnType<Contract<M>['$decodeEvents']>;
274
+ }> {
275
+ const { callStatic, ...opt } = { ...this.$options, ...options };
276
+ if (this.$options.bytecode == null) await this.$compile();
277
+ if (callStatic === true) return this.$call('init', params, { ...opt, callStatic });
278
+ if (this.$options.address != null) throw new DuplicateContractError();
279
+
280
+ if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t deploy without account');
281
+ const ownerId = opt.onAccount.address;
282
+ if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t deploy without bytecode');
283
+ const tx = await _buildTx(Tag.ContractCreateTx, {
284
+ ...opt,
285
+ gasLimit: opt.gasLimit ?? await this._estimateGas('init', params, opt),
286
+ callData: this._calldata.encode(this._name, 'init', params),
287
+ code: this.$options.bytecode,
288
+ ownerId,
289
+ });
290
+ this.$options.address = buildContractIdByContractTx(tx);
291
+ const { hash, ...other } = await this._sendAndProcess(tx, { ...opt, onAccount: opt.onAccount });
292
+ return {
293
+ ...other,
294
+ ...other.result?.log != null && {
295
+ decodedEvents: this.$decodeEvents(other.result.log, opt),
296
+ },
297
+ owner: ownerId,
298
+ transaction: hash,
299
+ address: this.$options.address,
300
+ };
301
+ }
302
+
303
+ /**
304
+ * Get function schema from contract ACI object
305
+ * @param name - Function name
306
+ * @returns function ACI
307
+ */
308
+ protected _getFunctionACI(name: string): Partial<FunctionAci> {
309
+ const fn = this._aci.encodedAci.contract.functions.find(
310
+ (f: { name: string }) => f.name === name,
311
+ );
312
+ if (fn != null) {
313
+ return fn;
314
+ }
315
+ if (name === 'init') return { payable: false };
316
+ throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`);
317
+ }
318
+
319
+ /**
320
+ * Call contract function
321
+ * @param fn - Function name
322
+ * @param params - Array of function arguments
323
+ * @param options - Array of function arguments
324
+ * @returns CallResult
325
+ */
326
+ async $call<Fn extends MethodNames<M>>(
327
+ fn: Fn,
328
+ params: MethodParameters<M, Fn>,
329
+ options: Partial<BuildTxOptions<Tag.ContractCallTx, 'callerId' | 'contractId' | 'callData'>>
330
+ & Parameters<Contract<M>['$decodeEvents']>[1]
331
+ & Omit<Parameters<Contract<M>['_sendAndProcess']>[1], 'onAccount' | 'onNode'>
332
+ & Omit<Parameters<typeof txDryRun>[2], 'onNode'>
333
+ & { onAccount?: AccountBase; onNode?: Node; callStatic?: boolean } = {},
334
+ ): Promise<{
335
+ decodedResult?: any;
336
+ decodedEvents?: ReturnType<Contract<M>['$decodeEvents']>;
337
+ } & SendAndProcessReturnType> {
338
+ const { callStatic, top, ...opt } = { ...this.$options, ...options };
339
+ const fnACI = this._getFunctionACI(fn);
340
+ const contractId = this.$options.address;
341
+ const { onNode } = opt;
342
+
343
+ if (fn == null) throw new MissingFunctionNameError();
344
+ if (fn === 'init' && callStatic !== true) throw new InvalidMethodInvocationError('"init" can be called only via dryRun');
345
+ if (fn !== 'init' && opt.amount != null && opt.amount > 0 && fnACI.payable === false) {
346
+ throw new NotPayableFunctionError(opt.amount, fn);
347
+ }
348
+
349
+ let callerId;
350
+ try {
351
+ if (opt.onAccount == null) throw new InternalError('Use fallback account');
352
+ callerId = opt.onAccount.address;
353
+ } catch (error) {
354
+ const useFallbackAccount = callStatic === true && (
355
+ (error instanceof TypeError && error.message === 'Account should be an address (ak-prefixed string), or instance of AccountBase, got undefined instead')
356
+ || (error instanceof NoWalletConnectedError)
357
+ );
358
+ if (!useFallbackAccount) throw error;
359
+ callerId = DRY_RUN_ACCOUNT.pub;
360
+ }
361
+ const callData = this._calldata.encode(this._name, fn, params);
362
+
363
+ let res: any;
364
+ if (callStatic === true) {
365
+ if (opt.nonce == null && top != null) {
366
+ const topKey = typeof top === 'number' ? 'height' : 'hash';
367
+ opt.nonce = (await getAccount(callerId, { [topKey]: top, onNode })).nonce + 1;
368
+ }
369
+ const txOpt = { ...opt, onNode, callData };
370
+ let tx;
371
+ if (fn === 'init') {
372
+ if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t dry-run "init" without bytecode');
373
+ tx = await _buildTx(
374
+ Tag.ContractCreateTx,
375
+ { ...txOpt, code: this.$options.bytecode, ownerId: callerId },
376
+ );
377
+ } else {
378
+ if (contractId == null) throw new MissingContractAddressError('Can\'t dry-run contract without address');
379
+ tx = await _buildTx(Tag.ContractCallTx, { ...txOpt, callerId, contractId });
380
+ }
381
+
382
+ const { callObj, ...dryRunOther } = await txDryRun(tx, callerId, { ...opt, top });
383
+ if (callObj == null) throw new UnexpectedTsError();
384
+ this._handleCallError({
385
+ returnType: callObj.returnType as ContractCallReturnType,
386
+ returnValue: callObj.returnValue as Encoded.ContractBytearray,
387
+ }, tx);
388
+ res = { ...dryRunOther, tx: unpackTx(tx), result: callObj };
389
+ } else {
390
+ if (top != null) throw new IllegalArgumentError('Can\'t handle `top` option in on-chain contract call');
391
+ if (contractId == null) throw new MissingContractAddressError('Can\'t call contract without address');
392
+ const tx = await _buildTx(Tag.ContractCallTx, {
393
+ ...opt,
394
+ gasLimit: opt.gasLimit ?? await this._estimateGas(fn, params, opt),
395
+ callerId,
396
+ contractId,
397
+ callData,
398
+ });
399
+ if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t call contract on chain without account');
400
+ res = await this._sendAndProcess(tx, { ...opt, onAccount: opt.onAccount });
401
+ }
402
+ if (callStatic === true || res.txData.blockHeight != null) {
403
+ res.decodedResult = fnACI.returns != null && fnACI.returns !== 'unit' && fn !== 'init'
404
+ && this._calldata.decode(this._name, fn, res.result.returnValue);
405
+ res.decodedEvents = this.$decodeEvents(res.result.log, opt);
406
+ }
407
+ return res;
408
+ }
409
+
410
+ /**
411
+ * @param ctAddress - Contract address that emitted event
412
+ * @param nameHash - Hash of emitted event name
413
+ * @param options - Options
414
+ * @returns Contract name
415
+ * @throws {@link MissingEventDefinitionError}
416
+ * @throws {@link AmbiguousEventDefinitionError}
417
+ */
418
+ protected _getContractNameByEvent(
419
+ ctAddress: Encoded.ContractAddress,
420
+ nameHash: BigInt,
421
+ { contractAddressToName }: {
422
+ contractAddressToName?: { [key: Encoded.ContractAddress]: string };
423
+ },
424
+ ): string {
425
+ const addressToName = { ...this.$options.contractAddressToName, ...contractAddressToName };
426
+ if (addressToName[ctAddress] != null) return addressToName[ctAddress];
427
+
428
+ // TODO: consider using a third-party library
429
+ const isEqual = (a: any, b: any): boolean => JSON.stringify(a) === JSON.stringify(b);
430
+
431
+ const matchedEvents = [this._aci.encodedAci, ...this._aci.externalEncodedAci]
432
+ .filter(({ contract }) => contract?.event)
433
+ .map(({ contract }) => [contract.name, contract.event.variant])
434
+ .map(([name, events]) => events.map((event: {}) => (
435
+ [name, Object.keys(event)[0], Object.values(event)[0]]
436
+ )))
437
+ .flat()
438
+ .filter(([, eventName]) => BigInt(`0x${calcHash(eventName).toString('hex')}`) === nameHash)
439
+ .filter(([, , type], idx, arr) => !arr.slice(0, idx).some((el) => isEqual(el[2], type)));
440
+ switch (matchedEvents.length) {
441
+ case 0: throw new MissingEventDefinitionError(nameHash.toString(), ctAddress);
442
+ case 1: return matchedEvents[0][0];
443
+ default: throw new AmbiguousEventDefinitionError(ctAddress, matchedEvents);
444
+ }
445
+ }
446
+
447
+ /**
448
+ * Decode Events
449
+ * @param events - Array of encoded events (callRes.result.log)
450
+ * @param options - Options
451
+ * @returns DecodedEvents
452
+ */
453
+ $decodeEvents(
454
+ events: Event[],
455
+ { omitUnknown, ...opt }: { omitUnknown?: boolean } &
456
+ Parameters<Contract<M>['_getContractNameByEvent']>[2] = {},
457
+ ): DecodedEvent[] {
458
+ return events
459
+ .map((event) => {
460
+ const topics = event.topics.map((t: string | number) => BigInt(t));
461
+ let contractName;
462
+ try {
463
+ contractName = this._getContractNameByEvent(event.address, topics[0], opt);
464
+ } catch (error) {
465
+ if ((omitUnknown ?? false) && error instanceof MissingEventDefinitionError) return null;
466
+ throw error;
467
+ }
468
+ const decoded = this._calldata.decodeEvent(contractName, event.data, topics);
469
+ const [name, args] = Object.entries(decoded)[0];
470
+ return {
471
+ name,
472
+ args,
473
+ contract: {
474
+ name: contractName,
475
+ address: event.address,
476
+ },
477
+ };
478
+ }).filter((e: DecodedEvent | null): e is DecodedEvent => e != null);
479
+ }
480
+
481
+ static async initialize<M extends ContractMethodsBase>(
482
+ {
483
+ onCompiler,
484
+ onNode,
485
+ bytecode,
486
+ aci,
487
+ address,
488
+ sourceCodePath,
489
+ sourceCode,
490
+ fileSystem,
491
+ validateBytecode,
492
+ ...otherOptions
493
+ }: Omit<ConstructorParameters<typeof Contract>[0], 'aci' | 'address'> & {
494
+ validateBytecode?: boolean;
495
+ aci?: Aci;
496
+ address?: Encoded.ContractAddress | AensName;
497
+ },
498
+ ): Promise<ContractWithMethods<M>> {
499
+ if (aci == null && onCompiler != null) {
500
+ let res;
501
+ if (sourceCodePath != null) res = await onCompiler.compile(sourceCodePath);
502
+ if (sourceCode != null) res = await onCompiler.compileBySourceCode(sourceCode, fileSystem);
503
+ if (res != null) {
504
+ aci = res.aci;
505
+ bytecode ??= res.bytecode;
506
+ }
507
+ }
508
+ if (aci == null) throw new MissingContractDefError();
509
+
510
+ if (address != null) {
511
+ address = await resolveName(
512
+ address,
513
+ 'contract_pubkey',
514
+ { resolveByNode: true, onNode },
515
+ ) as Encoded.ContractAddress;
516
+ }
517
+
518
+ if (address == null && sourceCode == null && bytecode == null) {
519
+ throw new MissingContractAddressError('Can\'t create instance by ACI without address');
520
+ }
521
+
522
+ if (address != null) {
523
+ const contract = await getContract(address, { onNode });
524
+ if (contract.active == null) throw new InactiveContractError(address);
525
+ }
526
+
527
+ if (validateBytecode === true) {
528
+ if (address == null) throw new MissingContractAddressError('Can\'t validate bytecode without contract address');
529
+ const onChanBytecode = (await getContractByteCode(address, { onNode })).bytecode;
530
+ let isValid = false;
531
+ if (bytecode != null) isValid = bytecode === onChanBytecode;
532
+ else if (sourceCode != null) {
533
+ if (onCompiler == null) throw new IllegalArgumentError('Can\'t validate bytecode without compiler');
534
+ isValid = await onCompiler.validateBySourceCode(onChanBytecode, sourceCode, fileSystem);
535
+ }
536
+ if (!isValid) throw new BytecodeMismatchError(sourceCode != null ? 'source code' : 'bytecode');
537
+ }
538
+
539
+ return new ContractWithMethods<M>({
540
+ onCompiler, onNode, sourceCode, bytecode, aci, address, fileSystem, ...otherOptions,
541
+ });
542
+ }
543
+
544
+ _aci: Aci;
545
+
546
+ _name: string;
547
+
548
+ _calldata: Calldata;
549
+
550
+ $options: Omit<ConstructorParameters<typeof Contract>[0], 'aci'>;
551
+
552
+ constructor({ aci, ...otherOptions }: {
553
+ onCompiler?: CompilerBase;
554
+ onNode: Node;
555
+ bytecode?: Encoded.ContractBytearray;
556
+ aci: Aci;
557
+ address?: Encoded.ContractAddress;
558
+ sourceCodePath?: Parameters<CompilerBase['compile']>[0];
559
+ sourceCode?: Parameters<CompilerBase['compileBySourceCode']>[0];
560
+ fileSystem?: Parameters<CompilerBase['compileBySourceCode']>[1];
561
+ } & Parameters<Contract<M>['$deploy']>[1]) {
562
+ this._aci = aci;
563
+ this._name = aci.encodedAci.contract.name;
564
+ this._calldata = new Calldata([aci.encodedAci, ...aci.externalEncodedAci]);
565
+ this.$options = otherOptions;
566
+
567
+ /**
568
+ * Generate proto function based on contract function using Contract ACI schema
569
+ * All function can be called like:
570
+ * ```js
571
+ * await contract.testFunction()
572
+ * ```
573
+ * then sdk will decide to use dry-run or send tx
574
+ * on-chain base on if function stateful or not.
575
+ * Also, you can manually do that:
576
+ * ```js
577
+ * await contract.testFunction({ callStatic: true }) // use call-static (dry-run)
578
+ * await contract.testFunction({ callStatic: false }) // send tx on-chain
579
+ * ```
580
+ */
581
+ Object.assign(
582
+ this,
583
+ Object.fromEntries(this._aci.encodedAci.contract.functions
584
+ .map(({ name, arguments: aciArgs, stateful }: FunctionAci) => {
585
+ const callStatic = name !== 'init' && !stateful;
586
+ return [
587
+ name,
588
+ async (...args: any) => {
589
+ const options = args.length === aciArgs.length + 1 ? args.pop() : {};
590
+ if (typeof options !== 'object') throw new TypeError(`Options should be an object: ${options}`);
591
+ if (name === 'init') return this.$deploy(args, { callStatic, ...options });
592
+ return this.$call(name, args, { callStatic, ...options });
593
+ },
594
+ ];
595
+ })),
596
+ );
597
+ }
598
+ }
599
+
600
+ interface ContractWithMethodsClass {
601
+ new <M extends ContractMethodsBase>(
602
+ options: ConstructorParameters<typeof Contract>[0],
603
+ ): ContractWithMethods<M>;
604
+ initialize: typeof Contract['initialize'];
605
+ }
606
+
607
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
608
+ const ContractWithMethods: ContractWithMethodsClass = Contract as any;
609
+
610
+ export default ContractWithMethods;
@@ -0,0 +1,94 @@
1
+ import { Encoded } from '../../utils/encoder';
2
+ import { Aci as BaseAci } from '../../apis/compiler';
3
+
4
+ interface FunctionAci {
5
+ arguments: any[];
6
+ name: string;
7
+ payable: boolean;
8
+ returns: string;
9
+ stateful: boolean;
10
+ }
11
+
12
+ export interface Aci extends BaseAci {
13
+ encodedAci: {
14
+ contract: {
15
+ name: string;
16
+ event: any;
17
+ kind: string;
18
+ state: any;
19
+ type_defs: any[];
20
+ functions: FunctionAci[];
21
+ };
22
+ };
23
+ externalEncodedAci: any[];
24
+ }
25
+
26
+ /**
27
+ * A base class for all compiler implementations
28
+ */
29
+ export default abstract class CompilerBase {
30
+ /**
31
+ * Compile contract by contract's path
32
+ * Available only in Node.js
33
+ * @param path - Path to contract source code
34
+ * @returns ACI and bytecode
35
+ */
36
+ abstract compile(path: string): Promise<{
37
+ bytecode: Encoded.ContractBytearray;
38
+ aci: Aci;
39
+ }>;
40
+
41
+ /**
42
+ * Compile contract by contract's source code
43
+ * @param sourceCode - Contract source code as string
44
+ * @param fileSystem - A map of contract filename to the corresponding contract source code to
45
+ * include into the main contract
46
+ * @example
47
+ * ```js
48
+ * {
49
+ * 'library.aes': 'namespace TestLib =\n function sum(x: int, y: int) : int = x + y'
50
+ * }
51
+ * ```
52
+ * @returns ACI and bytecode
53
+ */
54
+ abstract compileBySourceCode(
55
+ sourceCode: string,
56
+ fileSystem?: Record<string, string>,
57
+ ): Promise<{
58
+ bytecode: Encoded.ContractBytearray;
59
+ aci: Aci;
60
+ }>;
61
+
62
+ /**
63
+ * Verify that a contract bytecode is the result of compiling the given source code
64
+ * Available only in Node.js
65
+ * @param bytecode - Contract bytecode to verify
66
+ * @param path - Path to contract source code
67
+ * @returns ACI and bytecode
68
+ */
69
+ abstract validate(bytecode: Encoded.ContractBytearray, path: string): Promise<boolean>;
70
+
71
+ /**
72
+ * Verify that a contract bytecode is the result of compiling the given source code
73
+ * @param bytecode - Contract bytecode to verify
74
+ * @param sourceCode - Contract source code as string
75
+ * @param fileSystem - A map of contract filename to the corresponding contract source code to
76
+ * include into the main contract
77
+ * @example
78
+ * ```js
79
+ * {
80
+ * 'library.aes': 'namespace TestLib =\n function sum(x: int, y: int) : int = x + y'
81
+ * }
82
+ * ```
83
+ */
84
+ abstract validateBySourceCode(
85
+ bytecode: Encoded.ContractBytearray,
86
+ sourceCode: string,
87
+ fileSystem?: Record<string, string>,
88
+ ): Promise<boolean>;
89
+
90
+ /**
91
+ * @returns Compiler version
92
+ */
93
+ abstract version(): Promise<string>;
94
+ }