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

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