@aeternity/aepp-sdk 13.0.0-alpha.1 → 13.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (388) hide show
  1. package/bin/aesophia_cli +0 -0
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.map +1 -1
  4. package/dist/aepp-sdk.browser.js +1 -1
  5. package/dist/aepp-sdk.browser.js.map +1 -1
  6. package/dist/aepp-sdk.js +1792 -1525
  7. package/dist/aepp-sdk.js.map +1 -1
  8. package/es/AeSdk.mjs.map +1 -1
  9. package/es/AeSdkAepp.mjs.map +1 -1
  10. package/es/AeSdkBase.mjs.map +1 -1
  11. package/es/AeSdkMethods.d.ts +11 -12
  12. package/es/AeSdkMethods.mjs +6 -8
  13. package/es/AeSdkMethods.mjs.map +1 -1
  14. package/es/AeSdkWallet.mjs +1 -1
  15. package/es/AeSdkWallet.mjs.map +1 -1
  16. package/es/Node.d.ts +5 -1
  17. package/es/Node.mjs +11 -5
  18. package/es/Node.mjs.map +1 -1
  19. package/es/account/Base.d.ts +11 -6
  20. package/es/account/Base.mjs +0 -17
  21. package/es/account/Base.mjs.map +1 -1
  22. package/es/account/Generalized.mjs +11 -24
  23. package/es/account/Generalized.mjs.map +1 -1
  24. package/es/account/Ledger.mjs.map +1 -1
  25. package/es/account/LedgerFactory.mjs.map +1 -1
  26. package/es/account/Memory.d.ts +2 -1
  27. package/es/account/Memory.mjs +9 -21
  28. package/es/account/Memory.mjs.map +1 -1
  29. package/es/account/Rpc.mjs.map +1 -1
  30. package/es/aens.d.ts +12 -14
  31. package/es/aens.mjs +17 -31
  32. package/es/aens.mjs.map +1 -1
  33. package/es/aepp-wallet-communication/connection/Browser.mjs +0 -16
  34. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -1
  35. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +0 -16
  36. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  37. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -16
  38. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  39. package/es/aepp-wallet-communication/connection-proxy.mjs +0 -17
  40. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +4 -5
  42. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  43. package/es/aepp-wallet-communication/rpc/types.d.ts +6 -2
  44. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  45. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  46. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -16
  47. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  48. package/es/apis/compiler/compiler.d.ts +1 -1
  49. package/es/apis/compiler/compiler.mjs +4 -20
  50. package/es/apis/compiler/compiler.mjs.map +1 -1
  51. package/es/apis/compiler/models/index.d.ts +3 -2
  52. package/es/apis/compiler/models/index.mjs.map +1 -1
  53. package/es/apis/compiler/models/mappers.d.ts +1 -1
  54. package/es/apis/compiler/models/mappers.mjs +19 -2
  55. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  56. package/es/apis/node/models/index.d.ts +15 -15
  57. package/es/apis/node/models/index.mjs.map +1 -1
  58. package/es/apis/node/models/mappers.d.ts +1 -1
  59. package/es/apis/node/models/mappers.mjs +2 -1
  60. package/es/apis/node/models/mappers.mjs.map +1 -1
  61. package/es/apis/node/models/parameters.d.ts +2 -2
  62. package/es/apis/node/models/parameters.mjs +2 -2
  63. package/es/apis/node/models/parameters.mjs.map +1 -1
  64. package/es/apis/node/node.mjs +3 -19
  65. package/es/apis/node/node.mjs.map +1 -1
  66. package/es/chain.d.ts +8 -8
  67. package/es/chain.mjs +19 -22
  68. package/es/chain.mjs.map +1 -1
  69. package/es/channel/Base.d.ts +25 -12
  70. package/es/channel/Base.mjs +23 -26
  71. package/es/channel/Base.mjs.map +1 -1
  72. package/es/channel/Contract.mjs +8 -21
  73. package/es/channel/Contract.mjs.map +1 -1
  74. package/es/channel/Spend.d.ts +4 -2
  75. package/es/channel/Spend.mjs +0 -16
  76. package/es/channel/Spend.mjs.map +1 -1
  77. package/es/channel/handlers.mjs +6 -18
  78. package/es/channel/handlers.mjs.map +1 -1
  79. package/es/channel/internal.d.ts +19 -2
  80. package/es/channel/internal.mjs +19 -19
  81. package/es/channel/internal.mjs.map +1 -1
  82. package/es/contract/Contract.d.ts +30 -85
  83. package/es/contract/Contract.mjs +174 -211
  84. package/es/contract/Contract.mjs.map +1 -1
  85. package/es/contract/compiler/Base.d.ts +7 -14
  86. package/es/contract/compiler/Base.mjs.map +1 -1
  87. package/es/contract/compiler/Cli.mjs +5 -11
  88. package/es/contract/compiler/Cli.mjs.map +1 -1
  89. package/es/contract/compiler/Http.mjs +6 -30
  90. package/es/contract/compiler/Http.mjs.map +1 -1
  91. package/es/contract/compiler/HttpNode.mjs.map +1 -1
  92. package/es/contract/compiler/getFileSystem.mjs.map +1 -1
  93. package/es/contract/delegation-signature.d.ts +43 -0
  94. package/es/contract/delegation-signature.mjs +45 -0
  95. package/es/contract/delegation-signature.mjs.map +1 -0
  96. package/es/contract/ga.d.ts +23 -7
  97. package/es/contract/ga.mjs +52 -27
  98. package/es/contract/ga.mjs.map +1 -1
  99. package/es/index-browser.d.ts +4 -3
  100. package/es/index-browser.mjs +6 -20
  101. package/es/index-browser.mjs.map +1 -1
  102. package/es/oracle.d.ts +12 -17
  103. package/es/oracle.mjs +28 -48
  104. package/es/oracle.mjs.map +1 -1
  105. package/es/spend.d.ts +19 -27
  106. package/es/spend.mjs +20 -43
  107. package/es/spend.mjs.map +1 -1
  108. package/es/tx/builder/SchemaTypes.d.ts +37 -0
  109. package/es/tx/builder/SchemaTypes.mjs +2 -0
  110. package/es/tx/builder/SchemaTypes.mjs.map +1 -0
  111. package/es/tx/builder/constants.d.ts +4 -2
  112. package/es/tx/builder/constants.mjs +2 -0
  113. package/es/tx/builder/constants.mjs.map +1 -1
  114. package/es/tx/builder/field-types/abi-version.d.ts +11 -2
  115. package/es/tx/builder/field-types/abi-version.mjs +24 -4
  116. package/es/tx/builder/field-types/abi-version.mjs.map +1 -1
  117. package/es/tx/builder/field-types/address.mjs.map +1 -1
  118. package/es/tx/builder/field-types/array.d.ts +1 -1
  119. package/es/tx/builder/field-types/array.mjs.map +1 -1
  120. package/es/tx/builder/field-types/boolean.mjs.map +1 -1
  121. package/es/tx/builder/field-types/coin-amount.d.ts +3 -4
  122. package/es/tx/builder/field-types/coin-amount.mjs +4 -5
  123. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  124. package/es/tx/builder/field-types/ct-version.d.ts +22 -3
  125. package/es/tx/builder/field-types/ct-version.mjs +32 -4
  126. package/es/tx/builder/field-types/ct-version.mjs.map +1 -1
  127. package/es/tx/builder/field-types/deposit.d.ts +2 -1
  128. package/es/tx/builder/field-types/deposit.mjs +3 -2
  129. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  130. package/es/tx/builder/field-types/encoded.d.ts +1 -1
  131. package/es/tx/builder/field-types/encoded.mjs.map +1 -1
  132. package/es/tx/builder/field-types/entry.mjs +3 -0
  133. package/es/tx/builder/field-types/entry.mjs.map +1 -1
  134. package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
  135. package/es/tx/builder/field-types/fee.d.ts +3 -1
  136. package/es/tx/builder/field-types/fee.mjs +5 -1
  137. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  138. package/es/tx/builder/field-types/field.mjs.map +1 -1
  139. package/es/tx/builder/field-types/gas-limit.d.ts +3 -2
  140. package/es/tx/builder/field-types/gas-limit.mjs +4 -2
  141. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  142. package/es/tx/builder/field-types/gas-price.d.ts +3 -1
  143. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  144. package/es/tx/builder/field-types/index.d.ts +52 -13
  145. package/es/tx/builder/field-types/index.mjs +10 -2
  146. package/es/tx/builder/field-types/index.mjs.map +1 -1
  147. package/es/tx/builder/field-types/map.d.ts +13 -0
  148. package/es/tx/builder/field-types/map.mjs +49 -0
  149. package/es/tx/builder/field-types/map.mjs.map +1 -0
  150. package/es/tx/builder/field-types/mptree.d.ts +7 -2
  151. package/es/tx/builder/field-types/mptree.mjs +5 -7
  152. package/es/tx/builder/field-types/mptree.mjs.map +1 -1
  153. package/es/tx/builder/field-types/name-fee.d.ts +1 -1
  154. package/es/tx/builder/field-types/name-fee.mjs +2 -2
  155. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  156. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  157. package/es/tx/builder/field-types/name.mjs.map +1 -1
  158. package/es/tx/builder/field-types/nonce.d.ts +14 -0
  159. package/es/tx/builder/field-types/nonce.mjs +29 -0
  160. package/es/tx/builder/field-types/nonce.mjs.map +1 -0
  161. package/es/tx/builder/field-types/pointers.mjs.map +1 -1
  162. package/es/tx/builder/field-types/raw.mjs.map +1 -1
  163. package/es/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  164. package/es/tx/builder/field-types/short-u-int-const.mjs +12 -8
  165. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -1
  166. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  167. package/es/tx/builder/field-types/string.mjs.map +1 -1
  168. package/es/tx/builder/field-types/ttl.d.ts +11 -0
  169. package/es/tx/builder/field-types/ttl.mjs +21 -0
  170. package/es/tx/builder/field-types/ttl.mjs.map +1 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  172. package/es/tx/builder/field-types/wrapped.d.ts +14 -0
  173. package/es/tx/builder/field-types/wrapped.mjs +22 -0
  174. package/es/tx/builder/field-types/wrapped.mjs.map +1 -0
  175. package/es/tx/builder/helpers.mjs.map +1 -1
  176. package/es/tx/builder/index.d.ts +20 -20
  177. package/es/tx/builder/index.mjs +54 -64
  178. package/es/tx/builder/index.mjs.map +1 -1
  179. package/es/tx/builder/schema.d.ts +2735 -2865
  180. package/es/tx/builder/schema.generated.d.ts +2011 -0
  181. package/es/tx/builder/schema.generated.mjs +2 -0
  182. package/es/tx/builder/schema.generated.mjs.map +1 -0
  183. package/es/tx/builder/schema.mjs +459 -155
  184. package/es/tx/builder/schema.mjs.map +1 -1
  185. package/es/tx/execution-cost.d.ts +35 -0
  186. package/es/tx/execution-cost.mjs +123 -0
  187. package/es/tx/execution-cost.mjs.map +1 -0
  188. package/es/tx/transaction-signer.d.ts +6 -0
  189. package/es/tx/transaction-signer.mjs +27 -0
  190. package/es/tx/transaction-signer.mjs.map +1 -0
  191. package/es/tx/validator.mjs +60 -109
  192. package/es/tx/validator.mjs.map +1 -1
  193. package/es/utils/amount-formatter.mjs +0 -16
  194. package/es/utils/amount-formatter.mjs.map +1 -1
  195. package/es/utils/autorest.d.ts +3 -2
  196. package/es/utils/autorest.mjs +43 -11
  197. package/es/utils/autorest.mjs.map +1 -1
  198. package/es/utils/bytes.mjs +0 -16
  199. package/es/utils/bytes.mjs.map +1 -1
  200. package/es/utils/crypto.mjs +0 -16
  201. package/es/utils/crypto.mjs.map +1 -1
  202. package/es/utils/encoder.mjs.map +1 -1
  203. package/es/utils/errors.d.ts +14 -31
  204. package/es/utils/errors.mjs +2 -32
  205. package/es/utils/errors.mjs.map +1 -1
  206. package/es/utils/hd-wallet.mjs.map +1 -1
  207. package/es/utils/json-big.mjs.map +1 -1
  208. package/es/utils/keystore.mjs.map +1 -1
  209. package/es/utils/other.d.ts +1 -1
  210. package/es/utils/other.mjs.map +1 -1
  211. package/es/utils/semver-satisfies.mjs.map +1 -1
  212. package/es/utils/string.mjs +0 -17
  213. package/es/utils/string.mjs.map +1 -1
  214. package/package.json +34 -30
  215. package/src/AeSdkMethods.ts +11 -16
  216. package/src/AeSdkWallet.ts +1 -1
  217. package/src/Node.ts +17 -6
  218. package/src/account/Base.ts +11 -22
  219. package/src/account/Generalized.ts +8 -23
  220. package/src/account/Memory.ts +14 -21
  221. package/src/aens.ts +31 -47
  222. package/src/aepp-wallet-communication/connection/Browser.ts +0 -17
  223. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +0 -17
  224. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +0 -17
  225. package/src/aepp-wallet-communication/connection-proxy.ts +0 -17
  226. package/src/aepp-wallet-communication/rpc/types.ts +6 -2
  227. package/src/aepp-wallet-communication/wallet-detector.ts +0 -17
  228. package/src/apis/compiler/compiler.ts +3 -27
  229. package/src/apis/compiler/models/index.ts +3 -2
  230. package/src/apis/compiler/models/mappers.ts +15 -2
  231. package/src/apis/node/models/index.ts +16 -15
  232. package/src/apis/node/models/mappers.ts +2 -1
  233. package/src/apis/node/models/parameters.ts +2 -2
  234. package/src/apis/node/node.ts +3 -27
  235. package/src/chain.ts +28 -27
  236. package/src/channel/Base.ts +33 -33
  237. package/src/channel/Contract.ts +8 -23
  238. package/src/channel/Spend.ts +2 -17
  239. package/src/channel/handlers.ts +5 -18
  240. package/src/channel/internal.ts +40 -22
  241. package/src/contract/Contract.ts +133 -163
  242. package/src/contract/compiler/Base.ts +7 -14
  243. package/src/contract/compiler/Cli.ts +5 -11
  244. package/src/contract/compiler/Http.ts +6 -25
  245. package/src/contract/delegation-signature.ts +56 -0
  246. package/src/contract/ga.ts +53 -32
  247. package/src/index-browser.ts +12 -20
  248. package/src/oracle.ts +46 -56
  249. package/src/spend.ts +33 -67
  250. package/src/tx/builder/SchemaTypes.ts +79 -0
  251. package/src/tx/builder/constants.ts +2 -0
  252. package/src/tx/builder/field-types/abi-version.ts +29 -6
  253. package/src/tx/builder/field-types/array.ts +1 -1
  254. package/src/tx/builder/field-types/coin-amount.ts +6 -4
  255. package/src/tx/builder/field-types/ct-version.ts +37 -4
  256. package/src/tx/builder/field-types/deposit.ts +3 -1
  257. package/src/tx/builder/field-types/encoded.ts +1 -1
  258. package/src/tx/builder/field-types/entry.ts +8 -3
  259. package/src/tx/builder/field-types/fee.ts +6 -4
  260. package/src/tx/builder/field-types/gas-limit.ts +2 -2
  261. package/src/tx/builder/field-types/index.ts +15 -1
  262. package/src/tx/builder/field-types/map.ts +45 -0
  263. package/src/tx/builder/field-types/mptree.ts +4 -3
  264. package/src/tx/builder/field-types/name-fee.ts +2 -1
  265. package/src/tx/builder/field-types/nonce.ts +40 -0
  266. package/src/tx/builder/field-types/short-u-int-const.ts +18 -8
  267. package/src/tx/builder/field-types/ttl.ts +24 -0
  268. package/src/tx/builder/field-types/wrapped.ts +32 -0
  269. package/src/tx/builder/index.ts +57 -71
  270. package/src/tx/builder/schema.generated.ts +2013 -0
  271. package/src/tx/builder/schema.ts +544 -624
  272. package/src/tx/execution-cost.ts +146 -0
  273. package/src/tx/transaction-signer.ts +27 -0
  274. package/src/tx/validator.ts +60 -91
  275. package/src/utils/amount-formatter.ts +0 -16
  276. package/src/utils/autorest.ts +52 -11
  277. package/src/utils/bytes.ts +0 -16
  278. package/src/utils/crypto.ts +0 -16
  279. package/src/utils/errors.ts +15 -44
  280. package/src/utils/string.ts +0 -17
  281. package/types-legacy/ts4.2/AeSdkMethods.d.ts +11 -12
  282. package/types-legacy/ts4.2/Node.d.ts +5 -1
  283. package/types-legacy/ts4.2/account/Base.d.ts +11 -6
  284. package/types-legacy/ts4.2/account/Memory.d.ts +2 -1
  285. package/types-legacy/ts4.2/aens.d.ts +12 -14
  286. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +6 -2
  287. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +1 -1
  288. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +3 -2
  289. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +1 -1
  290. package/types-legacy/ts4.2/apis/node/models/index.d.ts +15 -15
  291. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +1 -1
  292. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
  293. package/types-legacy/ts4.2/chain.d.ts +8 -8
  294. package/types-legacy/ts4.2/channel/Base.d.ts +25 -12
  295. package/types-legacy/ts4.2/channel/Spend.d.ts +4 -2
  296. package/types-legacy/ts4.2/channel/internal.d.ts +22 -2
  297. package/types-legacy/ts4.2/contract/Contract.d.ts +29 -84
  298. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +7 -14
  299. package/types-legacy/ts4.2/contract/delegation-signature.d.ts +43 -0
  300. package/types-legacy/ts4.2/contract/ga.d.ts +23 -7
  301. package/types-legacy/ts4.2/index-browser.d.ts +4 -3
  302. package/types-legacy/ts4.2/oracle.d.ts +12 -17
  303. package/types-legacy/ts4.2/spend.d.ts +19 -27
  304. package/types-legacy/ts4.2/tx/builder/SchemaTypes.d.ts +37 -0
  305. package/types-legacy/ts4.2/tx/builder/constants.d.ts +4 -2
  306. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +11 -2
  307. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +1 -1
  308. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +3 -4
  309. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +33 -3
  310. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +2 -1
  311. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +1 -1
  312. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +3 -1
  313. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +3 -2
  314. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +3 -1
  315. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +52 -13
  316. package/types-legacy/ts4.2/tx/builder/field-types/map.d.ts +13 -0
  317. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +7 -2
  318. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +1 -1
  319. package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +14 -0
  320. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  321. package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +11 -0
  322. package/types-legacy/ts4.2/tx/builder/field-types/wrapped.d.ts +14 -0
  323. package/types-legacy/ts4.2/tx/builder/index.d.ts +23 -20
  324. package/types-legacy/ts4.2/tx/builder/schema.d.ts +2962 -4629
  325. package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +2011 -0
  326. package/types-legacy/ts4.2/tx/execution-cost.d.ts +35 -0
  327. package/types-legacy/ts4.2/tx/transaction-signer.d.ts +6 -0
  328. package/types-legacy/ts4.2/utils/autorest.d.ts +3 -2
  329. package/types-legacy/ts4.2/utils/errors.d.ts +14 -31
  330. package/types-legacy/ts4.2/utils/other.d.ts +1 -1
  331. package/types-legacy/ts4.5/AeSdkMethods.d.ts +11 -12
  332. package/types-legacy/ts4.5/Node.d.ts +5 -1
  333. package/types-legacy/ts4.5/account/Base.d.ts +11 -6
  334. package/types-legacy/ts4.5/account/Memory.d.ts +2 -1
  335. package/types-legacy/ts4.5/aens.d.ts +12 -14
  336. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +6 -2
  337. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +1 -1
  338. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +3 -2
  339. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +1 -1
  340. package/types-legacy/ts4.5/apis/node/models/index.d.ts +15 -15
  341. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +1 -1
  342. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
  343. package/types-legacy/ts4.5/chain.d.ts +8 -8
  344. package/types-legacy/ts4.5/channel/Base.d.ts +25 -12
  345. package/types-legacy/ts4.5/channel/Spend.d.ts +4 -2
  346. package/types-legacy/ts4.5/channel/internal.d.ts +22 -2
  347. package/types-legacy/ts4.5/contract/Contract.d.ts +29 -84
  348. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +7 -14
  349. package/types-legacy/ts4.5/contract/delegation-signature.d.ts +43 -0
  350. package/types-legacy/ts4.5/contract/ga.d.ts +23 -7
  351. package/types-legacy/ts4.5/index-browser.d.ts +4 -3
  352. package/types-legacy/ts4.5/oracle.d.ts +12 -17
  353. package/types-legacy/ts4.5/spend.d.ts +19 -27
  354. package/types-legacy/ts4.5/tx/builder/SchemaTypes.d.ts +37 -0
  355. package/types-legacy/ts4.5/tx/builder/constants.d.ts +4 -2
  356. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +11 -2
  357. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +1 -1
  358. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +3 -4
  359. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +33 -3
  360. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +2 -1
  361. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +1 -1
  362. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +3 -1
  363. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +3 -2
  364. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +3 -1
  365. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +52 -13
  366. package/types-legacy/ts4.5/tx/builder/field-types/map.d.ts +13 -0
  367. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +7 -2
  368. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +1 -1
  369. package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +14 -0
  370. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +4 -2
  371. package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +11 -0
  372. package/types-legacy/ts4.5/tx/builder/field-types/wrapped.d.ts +14 -0
  373. package/types-legacy/ts4.5/tx/builder/index.d.ts +23 -20
  374. package/types-legacy/ts4.5/tx/builder/schema.d.ts +2962 -4629
  375. package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +2011 -0
  376. package/types-legacy/ts4.5/tx/execution-cost.d.ts +35 -0
  377. package/types-legacy/ts4.5/tx/transaction-signer.d.ts +6 -0
  378. package/types-legacy/ts4.5/utils/autorest.d.ts +3 -2
  379. package/types-legacy/ts4.5/utils/errors.d.ts +14 -31
  380. package/types-legacy/ts4.5/utils/other.d.ts +1 -1
  381. package/es/tx/index.d.ts +0 -19
  382. package/es/tx/index.mjs +0 -115
  383. package/es/tx/index.mjs.map +0 -1
  384. package/src/apis/compiler/code-model-v4.yaml +0 -2442
  385. package/src/apis/node/code-model-v4.yaml +0 -10080
  386. package/src/tx/index.ts +0 -129
  387. package/types-legacy/ts4.2/tx/index.d.ts +0 -19
  388. package/types-legacy/ts4.5/tx/index.d.ts +0 -19
@@ -1,20 +1,3 @@
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
1
  /**
19
2
  * Contract module - routines to interact with the æternity contract
20
3
  *
@@ -25,9 +8,9 @@
25
8
  import { Encoder as Calldata } from '@aeternity/aepp-calldata';
26
9
  import { DRY_RUN_ACCOUNT } from '../tx/builder/schema';
27
10
  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';
11
+ import {
12
+ buildContractIdByContractTx, unpackTx, buildTxAsync, BuildTxOptions, buildTxHash,
13
+ } from '../tx/builder';
31
14
  import { decode, Encoded } from '../utils/encoder';
32
15
  import {
33
16
  MissingContractDefError,
@@ -47,28 +30,30 @@ import {
47
30
  UnexpectedTsError,
48
31
  InternalError,
49
32
  NoWalletConnectedError,
33
+ ContractError,
50
34
  } from '../utils/errors';
51
35
  import { hash as calcHash } from '../utils/crypto';
52
36
  import {
53
- ContractCallObject as NodeContractCallObject, ContractCallReturnType, Event as NodeEvent,
37
+ ContractCallObject as NodeContractCallObject, Event as NodeEvent,
54
38
  } from '../apis/node';
55
39
  import CompilerBase, { Aci } from './compiler/Base';
56
40
  import Node, { TransformNodeType } from '../Node';
57
41
  import {
58
- getAccount, getContract, getContractByteCode, resolveName, txDryRun,
42
+ getAccount, getContract, getContractByteCode, resolveName, txDryRun, sendTransaction,
43
+ SendTransactionOptions,
59
44
  } from '../chain';
60
45
  import AccountBase from '../account/Base';
61
- import { concatBuffers } from '../utils/other';
62
- import { isNameValid, produceNameId } from '../tx/builder/helpers';
46
+ import { TxUnpacked } from '../tx/builder/schema.generated';
63
47
 
64
- type FunctionAci = Aci['encodedAci']['contract']['functions'][0];
48
+ type ContractAci = NonNullable<Aci[0]['contract']>;
49
+ type FunctionAci = ContractAci['functions'][0];
65
50
 
66
51
  interface Event extends NodeEvent {
67
52
  address: Encoded.ContractAddress;
68
53
  data: Encoded.ContractBytearray;
69
54
  }
70
55
 
71
- export interface ContractCallObject extends NodeContractCallObject {
56
+ export interface ContractCallObject extends TransformNodeType<NodeContractCallObject> {
72
57
  returnValue: Encoded.ContractBytearray;
73
58
  log: Event[];
74
59
  }
@@ -82,12 +67,12 @@ interface DecodedEvent {
82
67
  };
83
68
  }
84
69
 
85
- type TxData = Awaited<ReturnType<typeof send>>;
70
+ type TxData = Awaited<ReturnType<typeof sendTransaction>>;
86
71
 
87
72
  interface SendAndProcessReturnType {
88
- result?: TransformNodeType<ContractCallObject>;
73
+ result?: ContractCallObject;
89
74
  hash: TxData['hash'];
90
- tx: Awaited<ReturnType<typeof unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>>>;
75
+ tx: TxUnpacked & { tag: Tag.ContractCallTx | Tag.ContractCreateTx };
91
76
  txData: TxData;
92
77
  rawTx: Encoded.Transaction;
93
78
  }
@@ -96,15 +81,12 @@ export interface ContractMethodsBase { [key: string]: (...args: any[]) => any }
96
81
 
97
82
  type MethodsToContractApi<M extends ContractMethodsBase> = {
98
83
  [Name in keyof M]:
99
- M[Name] extends (...args: infer Args) => infer Ret
84
+ M[Name] extends (...args: infer Args) => any
100
85
  ? (...args: [
101
86
  ...Args,
102
87
  ...[] | [Name extends 'init'
103
88
  ? Parameters<Contract<M>['$deploy']>[1] : Parameters<Contract<M>['$call']>[2]],
104
- ]) => Promise<
105
- Awaited<ReturnType<Contract<M>['$call']>> &
106
- { decodedResult?: Ret }
107
- >
89
+ ]) => ReturnType<Contract<M>['$call']>
108
90
  : never
109
91
  };
110
92
 
@@ -117,6 +99,15 @@ type MethodParameters<M extends ContractMethodsBase, Fn extends MethodNames<M>>
117
99
  ? M extends { init: any } ? Parameters<M['init']> : []
118
100
  : Parameters<M[Fn]>;
119
101
 
102
+ interface GetContractNameByEventOptions {
103
+ contractAddressToName?: { [key: Encoded.ContractAddress]: string };
104
+ }
105
+
106
+ interface GetCallResultByHashReturnType<M extends ContractMethodsBase, Fn extends MethodNames<M>> {
107
+ decodedResult: ReturnType<M[Fn]>;
108
+ decodedEvents?: ReturnType<Contract<M>['$decodeEvents']>;
109
+ }
110
+
120
111
  /**
121
112
  * Generate contract ACI object with predefined js methods for contract usage - can be used for
122
113
  * creating a reference to already deployed contracts
@@ -135,60 +126,6 @@ type MethodParameters<M extends ContractMethodsBase, Fn extends MethodNames<M>>
135
126
  * stateful or not
136
127
  */
137
128
  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
129
  /**
193
130
  * Compile contract
194
131
  * @returns bytecode
@@ -203,16 +140,21 @@ class Contract<M extends ContractMethodsBase> {
203
140
  return this.$options.bytecode;
204
141
  }
205
142
 
206
- protected _handleCallError(
207
- { returnType, returnValue }: {
208
- returnType: ContractCallReturnType;
209
- returnValue: Encoded.ContractBytearray;
210
- },
211
- transaction: string,
212
- ): void {
143
+ #getCallResult<Fn extends MethodNames<M>>(
144
+ { returnType, returnValue, log }: ContractCallObject,
145
+ fnName: Fn,
146
+ transaction: Encoded.Transaction | undefined,
147
+ options: Parameters<Contract<M>['$decodeEvents']>[1],
148
+ ): GetCallResultByHashReturnType<M, Fn> {
213
149
  let message: string;
214
150
  switch (returnType) {
215
- case 'ok': return;
151
+ case 'ok': {
152
+ const fnAci = this.#getFunctionAci(fnName);
153
+ return {
154
+ decodedResult: this._calldata.decode(this._name, fnAci.name, returnValue),
155
+ decodedEvents: this.$decodeEvents(log, options),
156
+ };
157
+ }
216
158
  case 'revert':
217
159
  message = this._calldata.decodeFateString(returnValue);
218
160
  break;
@@ -225,29 +167,43 @@ class Contract<M extends ContractMethodsBase> {
225
167
  throw new NodeInvocationError(message, transaction);
226
168
  }
227
169
 
228
- protected async _sendAndProcess(
170
+ async #sendAndProcess<Fn extends MethodNames<M>>(
229
171
  tx: Encoded.Transaction,
230
- options: SendOptions,
231
- ): Promise<SendAndProcessReturnType> {
232
- const txData = await send(tx, { ...this.$options, ...options });
233
- const result = {
172
+ fnName: Fn,
173
+ options: SendTransactionOptions & Parameters<Contract<M>['$getCallResultByTxHash']>[2],
174
+ ): Promise<SendAndProcessReturnType & Partial<GetCallResultByHashReturnType<M, Fn>>> {
175
+ const txData = await sendTransaction(tx, { ...this.$options, ...options });
176
+ return {
234
177
  hash: txData.hash,
235
178
  tx: unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>(txData.rawTx),
236
179
  txData,
237
180
  rawTx: txData.rawTx,
181
+ ...txData.blockHeight != null && (
182
+ await this.$getCallResultByTxHash(txData.hash, fnName, options)
183
+ ),
184
+ };
185
+ }
186
+
187
+ async $getCallResultByTxHash<Fn extends MethodNames<M>>(
188
+ hash: Encoded.TxHash,
189
+ fnName: Fn,
190
+ options?: Parameters<Contract<M>['$decodeEvents']>[1],
191
+ ): Promise<GetCallResultByHashReturnType<M, Fn> & { result: ContractCallObject }> {
192
+ const { callInfo } = await this.$options.onNode.getTransactionInfoByHash(hash);
193
+ if (callInfo == null) {
194
+ throw new ContractError(`callInfo is not available for transaction ${hash}`);
195
+ }
196
+ const callInfoTyped = callInfo as ContractCallObject;
197
+ return {
198
+ ...this.#getCallResult(callInfoTyped, fnName, undefined, options),
199
+ result: callInfoTyped,
238
200
  };
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
201
  }
246
202
 
247
203
  async _estimateGas<Fn extends MethodNames<M>>(
248
204
  name: Fn,
249
205
  params: MethodParameters<M, Fn>,
250
- options: object = {},
206
+ options: Omit<Parameters<Contract<M>['$call']>[2], 'callStatic'> = {},
251
207
  ): Promise<number> {
252
208
  const { result } = await this.$call(name, params, { ...options, callStatic: true });
253
209
  if (result == null) throw new UnexpectedTsError();
@@ -280,15 +236,20 @@ class Contract<M extends ContractMethodsBase> {
280
236
  if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t deploy without account');
281
237
  const ownerId = opt.onAccount.address;
282
238
  if (this.$options.bytecode == null) throw new IllegalArgumentError('Can\'t deploy without bytecode');
283
- const tx = await _buildTx(Tag.ContractCreateTx, {
239
+ const tx = await buildTxAsync({
284
240
  ...opt,
241
+ tag: Tag.ContractCreateTx,
285
242
  gasLimit: opt.gasLimit ?? await this._estimateGas('init', params, opt),
286
243
  callData: this._calldata.encode(this._name, 'init', params),
287
244
  code: this.$options.bytecode,
288
245
  ownerId,
289
246
  });
290
247
  this.$options.address = buildContractIdByContractTx(tx);
291
- const { hash, ...other } = await this._sendAndProcess(tx, { ...opt, onAccount: opt.onAccount });
248
+ const { hash, ...other } = await this.#sendAndProcess(
249
+ tx,
250
+ 'init',
251
+ { ...opt, onAccount: opt.onAccount },
252
+ );
292
253
  return {
293
254
  ...other,
294
255
  ...other.result?.log != null && {
@@ -305,14 +266,18 @@ class Contract<M extends ContractMethodsBase> {
305
266
  * @param name - Function name
306
267
  * @returns function ACI
307
268
  */
308
- protected _getFunctionACI(name: string): Partial<FunctionAci> {
309
- const fn = this._aci.encodedAci.contract.functions.find(
269
+ #getFunctionAci(name: string): FunctionAci {
270
+ const fn = this.#aciContract.functions.find(
310
271
  (f: { name: string }) => f.name === name,
311
272
  );
312
273
  if (fn != null) {
313
274
  return fn;
314
275
  }
315
- if (name === 'init') return { payable: false };
276
+ if (name === 'init') {
277
+ return {
278
+ arguments: [], name: 'init', payable: false, returns: 'unit', stateful: true,
279
+ };
280
+ }
316
281
  throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`);
317
282
  }
318
283
 
@@ -328,21 +293,18 @@ class Contract<M extends ContractMethodsBase> {
328
293
  params: MethodParameters<M, Fn>,
329
294
  options: Partial<BuildTxOptions<Tag.ContractCallTx, 'callerId' | 'contractId' | 'callData'>>
330
295
  & Parameters<Contract<M>['$decodeEvents']>[1]
331
- & Omit<Parameters<Contract<M>['_sendAndProcess']>[1], 'onAccount' | 'onNode'>
296
+ & Omit<SendTransactionOptions, 'onAccount' | 'onNode'>
332
297
  & Omit<Parameters<typeof txDryRun>[2], 'onNode'>
333
298
  & { onAccount?: AccountBase; onNode?: Node; callStatic?: boolean } = {},
334
- ): Promise<{
335
- decodedResult?: any;
336
- decodedEvents?: ReturnType<Contract<M>['$decodeEvents']>;
337
- } & SendAndProcessReturnType> {
299
+ ): Promise<SendAndProcessReturnType & Partial<GetCallResultByHashReturnType<M, Fn>>> {
338
300
  const { callStatic, top, ...opt } = { ...this.$options, ...options };
339
- const fnACI = this._getFunctionACI(fn);
301
+ const fnAci = this.#getFunctionAci(fn);
340
302
  const contractId = this.$options.address;
341
303
  const { onNode } = opt;
342
304
 
343
305
  if (fn == null) throw new MissingFunctionNameError();
344
306
  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) {
307
+ if (fn !== 'init' && opt.amount != null && opt.amount > 0 && !fnAci.payable) {
346
308
  throw new NotPayableFunctionError(opt.amount, fn);
347
309
  }
348
310
 
@@ -360,7 +322,6 @@ class Contract<M extends ContractMethodsBase> {
360
322
  }
361
323
  const callData = this._calldata.encode(this._name, fn, params);
362
324
 
363
- let res: any;
364
325
  if (callStatic === true) {
365
326
  if (opt.nonce == null && top != null) {
366
327
  const topKey = typeof top === 'number' ? 'height' : 'hash';
@@ -370,41 +331,44 @@ class Contract<M extends ContractMethodsBase> {
370
331
  let tx;
371
332
  if (fn === 'init') {
372
333
  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
- );
334
+ tx = await buildTxAsync({
335
+ ...txOpt, tag: Tag.ContractCreateTx, code: this.$options.bytecode, ownerId: callerId,
336
+ });
377
337
  } else {
378
338
  if (contractId == null) throw new MissingContractAddressError('Can\'t dry-run contract without address');
379
- tx = await _buildTx(Tag.ContractCallTx, { ...txOpt, callerId, contractId });
339
+ tx = await buildTxAsync({
340
+ ...txOpt, tag: Tag.ContractCallTx, callerId, contractId,
341
+ });
380
342
  }
381
343
 
382
344
  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);
345
+ if (callObj == null) {
346
+ throw new InternalError(`callObj is not available for transaction ${tx}`);
347
+ }
348
+ const callInfoTyped = callObj as ContractCallObject;
349
+ return {
350
+ ...dryRunOther,
351
+ ...this.#getCallResult(callInfoTyped, fn, tx, opt),
352
+ tx: unpackTx(tx),
353
+ result: callInfoTyped,
354
+ rawTx: tx,
355
+ hash: buildTxHash(tx),
356
+ txData: undefined as any,
357
+ };
406
358
  }
407
- return res;
359
+
360
+ if (top != null) throw new IllegalArgumentError('Can\'t handle `top` option in on-chain contract call');
361
+ if (contractId == null) throw new MissingContractAddressError('Can\'t call contract without address');
362
+ const tx = await buildTxAsync({
363
+ ...opt,
364
+ tag: Tag.ContractCallTx,
365
+ gasLimit: opt.gasLimit ?? await this._estimateGas(fn, params, opt),
366
+ callerId,
367
+ contractId,
368
+ callData,
369
+ });
370
+ if (opt.onAccount == null) throw new IllegalArgumentError('Can\'t call contract on chain without account');
371
+ return this.#sendAndProcess(tx, fn, { ...opt, onAccount: opt.onAccount });
408
372
  }
409
373
 
410
374
  /**
@@ -415,12 +379,10 @@ class Contract<M extends ContractMethodsBase> {
415
379
  * @throws {@link MissingEventDefinitionError}
416
380
  * @throws {@link AmbiguousEventDefinitionError}
417
381
  */
418
- protected _getContractNameByEvent(
382
+ #getContractNameByEvent(
419
383
  ctAddress: Encoded.ContractAddress,
420
384
  nameHash: BigInt,
421
- { contractAddressToName }: {
422
- contractAddressToName?: { [key: Encoded.ContractAddress]: string };
423
- },
385
+ { contractAddressToName }: GetContractNameByEventOptions,
424
386
  ): string {
425
387
  const addressToName = { ...this.$options.contractAddressToName, ...contractAddressToName };
426
388
  if (addressToName[ctAddress] != null) return addressToName[ctAddress];
@@ -428,9 +390,11 @@ class Contract<M extends ContractMethodsBase> {
428
390
  // TODO: consider using a third-party library
429
391
  const isEqual = (a: any, b: any): boolean => JSON.stringify(a) === JSON.stringify(b);
430
392
 
431
- const matchedEvents = [this._aci.encodedAci, ...this._aci.externalEncodedAci]
432
- .filter(({ contract }) => contract?.event)
433
- .map(({ contract }) => [contract.name, contract.event.variant])
393
+ const contracts = this._aci
394
+ .map(({ contract }) => contract)
395
+ .filter((contract) => contract?.event) as ContractAci[];
396
+ const matchedEvents = contracts
397
+ .map((contract) => [contract.name, contract.event.variant])
434
398
  .map(([name, events]) => events.map((event: {}) => (
435
399
  [name, Object.keys(event)[0], Object.values(event)[0]]
436
400
  )))
@@ -452,15 +416,14 @@ class Contract<M extends ContractMethodsBase> {
452
416
  */
453
417
  $decodeEvents(
454
418
  events: Event[],
455
- { omitUnknown, ...opt }: { omitUnknown?: boolean } &
456
- Parameters<Contract<M>['_getContractNameByEvent']>[2] = {},
419
+ { omitUnknown, ...opt }: { omitUnknown?: boolean } & GetContractNameByEventOptions = {},
457
420
  ): DecodedEvent[] {
458
421
  return events
459
422
  .map((event) => {
460
423
  const topics = event.topics.map((t: string | number) => BigInt(t));
461
424
  let contractName;
462
425
  try {
463
- contractName = this._getContractNameByEvent(event.address, topics[0], opt);
426
+ contractName = this.#getContractNameByEvent(event.address, topics[0], opt);
464
427
  } catch (error) {
465
428
  if ((omitUnknown ?? false) && error instanceof MissingEventDefinitionError) return null;
466
429
  throw error;
@@ -543,6 +506,8 @@ class Contract<M extends ContractMethodsBase> {
543
506
 
544
507
  _aci: Aci;
545
508
 
509
+ #aciContract: ContractAci;
510
+
546
511
  _name: string;
547
512
 
548
513
  _calldata: Calldata;
@@ -560,8 +525,13 @@ class Contract<M extends ContractMethodsBase> {
560
525
  fileSystem?: Parameters<CompilerBase['compileBySourceCode']>[1];
561
526
  } & Parameters<Contract<M>['$deploy']>[1]) {
562
527
  this._aci = aci;
563
- this._name = aci.encodedAci.contract.name;
564
- this._calldata = new Calldata([aci.encodedAci, ...aci.externalEncodedAci]);
528
+ const aciLast = aci[aci.length - 1];
529
+ if (aciLast.contract == null) {
530
+ throw new IllegalArgumentError(`The last 'aci' item should have 'contract' key, got ${Object.keys(aciLast)} keys instead`);
531
+ }
532
+ this.#aciContract = aciLast.contract;
533
+ this._name = this.#aciContract.name;
534
+ this._calldata = new Calldata(aci);
565
535
  this.$options = otherOptions;
566
536
 
567
537
  /**
@@ -580,7 +550,7 @@ class Contract<M extends ContractMethodsBase> {
580
550
  */
581
551
  Object.assign(
582
552
  this,
583
- Object.fromEntries(this._aci.encodedAci.contract.functions
553
+ Object.fromEntries(this.#aciContract.functions
584
554
  .map(({ name, arguments: aciArgs, stateful }: FunctionAci) => {
585
555
  const callStatic = name !== 'init' && !stateful;
586
556
  return [
@@ -1,27 +1,20 @@
1
1
  import { Encoded } from '../../utils/encoder';
2
- import { Aci as BaseAci } from '../../apis/compiler';
3
2
 
4
3
  interface FunctionAci {
5
4
  arguments: any[];
6
5
  name: string;
7
6
  payable: boolean;
8
- returns: string;
7
+ returns: any;
9
8
  stateful: boolean;
10
9
  }
11
10
 
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
- };
11
+ export type Aci = Array<{
12
+ contract?: {
13
+ name: string;
14
+ event?: any;
15
+ functions: FunctionAci[];
22
16
  };
23
- externalEncodedAci: any[];
24
- }
17
+ }>;
25
18
 
26
19
  /**
27
20
  * A base class for all compiler implementations
@@ -71,24 +71,18 @@ export default class CompilerCli extends CompilerBase {
71
71
  aci: Aci;
72
72
  }> {
73
73
  await this.#ensureCompatibleVersion;
74
- let bytecode;
75
- let aciCli;
76
74
  try {
77
- [bytecode, aciCli] = await Promise.all([
75
+ const [bytecode, aci] = await Promise.all([
78
76
  this.#run(path),
79
77
  this.#run('--create_json_aci', path).then((res) => JSON.parse(res)),
80
78
  ]);
79
+ return {
80
+ bytecode: bytecode.trimEnd() as Encoded.ContractBytearray,
81
+ aci: aci as Aci,
82
+ };
81
83
  } catch (error) {
82
84
  throw new CompilerError(error.message);
83
85
  }
84
- const aci = {
85
- encodedAci: aciCli[0],
86
- externalEncodedAci: aciCli.slice(1),
87
- };
88
- return {
89
- bytecode: bytecode.trimEnd() as Encoded.ContractBytearray,
90
- aci: aci as Aci,
91
- };
92
86
  }
93
87
 
94
88
  async compileBySourceCode(sourceCode: string, fileSystem?: Record<string, string>): Promise<{
@@ -1,19 +1,3 @@
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
1
  import { RestError } from '@azure/core-rest-pipeline';
18
2
  import {
19
3
  Compiler as CompilerApi,
@@ -60,7 +44,7 @@ export default class CompilerHttp extends CompilerBase {
60
44
  }
61
45
  if (Array.isArray(body)) {
62
46
  message += `\n${body
63
- .map((e) => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`)
47
+ .map((e) => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? ` (${e.context})` : ''}`)
64
48
  .join('\n')}`;
65
49
  }
66
50
  return message;
@@ -68,9 +52,10 @@ export default class CompilerHttp extends CompilerBase {
68
52
  ],
69
53
  });
70
54
  if (ignoreVersion !== true) {
71
- const versionPromise = this.api.apiVersion().then(({ apiVersion }) => apiVersion);
55
+ const versionPromise = this.api.apiVersion()
56
+ .then(({ apiVersion }) => apiVersion, (error) => error);
72
57
  this.api.pipeline.addPolicy(
73
- genVersionCheckPolicy('compiler', '/api-version', versionPromise, '7.0.1', '8.0.0'),
58
+ genVersionCheckPolicy('compiler', '/api-version', versionPromise, '7.1.1', '8.0.0'),
74
59
  );
75
60
  }
76
61
  }
@@ -80,13 +65,9 @@ export default class CompilerHttp extends CompilerBase {
80
65
  fileSystem?: Record<string, string>,
81
66
  ): Promise<{ bytecode: Encoded.ContractBytearray; aci: Aci }> {
82
67
  try {
83
- const [bytecode, aci] = await Promise.all([
84
- this.api.compileContract({ code: sourceCode, options: { fileSystem } })
85
- .then((res) => res.bytecode as Encoded.ContractBytearray),
86
- this.api.generateACI({ code: sourceCode, options: { fileSystem } }),
87
- ]);
68
+ const res = await this.api.compileContract({ code: sourceCode, options: { fileSystem } });
88
69
  // TODO: should be fixed when the compiledAci interface gets updated
89
- return { bytecode, aci: aci as Aci };
70
+ return res as { bytecode: Encoded.ContractBytearray; aci: Aci };
90
71
  } catch (error) {
91
72
  if (error instanceof RestError && error.statusCode === 400) {
92
73
  throw new CompilerError(error.message.replace(/^aci error:/, 'compile error:'));