@aeternity/aepp-sdk 13.0.0-alpha.0 → 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 (481) 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 +5595 -2249
  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.d.ts +3 -3
  11. package/es/AeSdkBase.mjs +4 -0
  12. package/es/AeSdkBase.mjs.map +1 -1
  13. package/es/AeSdkMethods.d.ts +12 -14
  14. package/es/AeSdkMethods.mjs +6 -8
  15. package/es/AeSdkMethods.mjs.map +1 -1
  16. package/es/AeSdkWallet.mjs +1 -1
  17. package/es/AeSdkWallet.mjs.map +1 -1
  18. package/es/Node.d.ts +9 -4
  19. package/es/Node.mjs +12 -6
  20. package/es/Node.mjs.map +1 -1
  21. package/es/account/Base.d.ts +13 -8
  22. package/es/account/Base.mjs +0 -17
  23. package/es/account/Base.mjs.map +1 -1
  24. package/es/account/Generalized.mjs +14 -25
  25. package/es/account/Generalized.mjs.map +1 -1
  26. package/es/account/Ledger.mjs +2 -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 +11 -22
  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 +22 -32
  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.d.ts +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +19 -20
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -1
  41. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +0 -16
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -1
  43. package/es/aepp-wallet-communication/connection-proxy.mjs +0 -17
  44. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -1
  45. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +5 -6
  46. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -1
  47. package/es/aepp-wallet-communication/rpc/types.d.ts +6 -2
  48. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -1
  49. package/es/aepp-wallet-communication/schema.mjs.map +1 -1
  50. package/es/aepp-wallet-communication/wallet-detector.mjs +0 -16
  51. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -1
  52. package/es/apis/compiler/compiler.d.ts +1 -1
  53. package/es/apis/compiler/compiler.mjs +4 -20
  54. package/es/apis/compiler/compiler.mjs.map +1 -1
  55. package/es/apis/compiler/models/index.d.ts +3 -2
  56. package/es/apis/compiler/models/index.mjs.map +1 -1
  57. package/es/apis/compiler/models/mappers.d.ts +1 -1
  58. package/es/apis/compiler/models/mappers.mjs +19 -2
  59. package/es/apis/compiler/models/mappers.mjs.map +1 -1
  60. package/es/apis/node/models/index.d.ts +15 -15
  61. package/es/apis/node/models/index.mjs.map +1 -1
  62. package/es/apis/node/models/mappers.d.ts +1 -1
  63. package/es/apis/node/models/mappers.mjs +2 -1
  64. package/es/apis/node/models/mappers.mjs.map +1 -1
  65. package/es/apis/node/models/parameters.d.ts +2 -2
  66. package/es/apis/node/models/parameters.mjs +2 -2
  67. package/es/apis/node/models/parameters.mjs.map +1 -1
  68. package/es/apis/node/node.mjs +3 -19
  69. package/es/apis/node/node.mjs.map +1 -1
  70. package/es/chain.d.ts +17 -9
  71. package/es/chain.mjs +23 -23
  72. package/es/chain.mjs.map +1 -1
  73. package/es/channel/Base.d.ts +27 -9
  74. package/es/channel/Base.mjs +27 -27
  75. package/es/channel/Base.mjs.map +1 -1
  76. package/es/channel/Contract.d.ts +8 -7
  77. package/es/channel/Contract.mjs +8 -21
  78. package/es/channel/Contract.mjs.map +1 -1
  79. package/es/channel/Spend.d.ts +5 -1
  80. package/es/channel/Spend.mjs +4 -18
  81. package/es/channel/Spend.mjs.map +1 -1
  82. package/es/channel/handlers.mjs +16 -26
  83. package/es/channel/handlers.mjs.map +1 -1
  84. package/es/channel/internal.d.ts +19 -2
  85. package/es/channel/internal.mjs +22 -20
  86. package/es/channel/internal.mjs.map +1 -1
  87. package/es/contract/Contract.d.ts +43 -123
  88. package/es/contract/Contract.mjs +230 -250
  89. package/es/contract/Contract.mjs.map +1 -1
  90. package/es/contract/compiler/Base.d.ts +74 -0
  91. package/es/contract/compiler/Base.mjs +5 -0
  92. package/es/contract/compiler/Base.mjs.map +1 -0
  93. package/es/contract/compiler/Cli.d.ts +23 -0
  94. package/es/contract/compiler/Cli.mjs +149 -0
  95. package/es/contract/compiler/Cli.mjs.map +1 -0
  96. package/es/contract/compiler/Http.d.ts +32 -0
  97. package/es/contract/compiler/Http.mjs +94 -0
  98. package/es/contract/compiler/Http.mjs.map +1 -0
  99. package/es/contract/compiler/HttpNode.d.ts +17 -0
  100. package/es/contract/compiler/HttpNode.mjs +26 -0
  101. package/es/contract/compiler/HttpNode.mjs.map +1 -0
  102. package/es/contract/compiler/getFileSystem.d.ts +6 -0
  103. package/es/contract/compiler/getFileSystem.mjs +40 -0
  104. package/es/contract/compiler/getFileSystem.mjs.map +1 -0
  105. package/es/contract/delegation-signature.d.ts +43 -0
  106. package/es/contract/delegation-signature.mjs +45 -0
  107. package/es/contract/delegation-signature.mjs.map +1 -0
  108. package/es/contract/ga.d.ts +27 -10
  109. package/es/contract/ga.mjs +63 -29
  110. package/es/contract/ga.mjs.map +1 -1
  111. package/es/index-browser.d.ts +40 -0
  112. package/es/index-browser.mjs +41 -0
  113. package/es/index-browser.mjs.map +1 -0
  114. package/es/index.d.ts +4 -38
  115. package/es/index.mjs +4 -53
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +12 -17
  118. package/es/oracle.mjs +29 -49
  119. package/es/oracle.mjs.map +1 -1
  120. package/es/spend.d.ts +19 -27
  121. package/es/spend.mjs +21 -46
  122. package/es/spend.mjs.map +1 -1
  123. package/es/tx/builder/SchemaTypes.d.ts +37 -0
  124. package/es/tx/builder/SchemaTypes.mjs +2 -0
  125. package/es/tx/builder/SchemaTypes.mjs.map +1 -0
  126. package/es/tx/builder/constants.d.ts +31 -2
  127. package/es/tx/builder/constants.mjs +34 -3
  128. package/es/tx/builder/constants.mjs.map +1 -1
  129. package/es/tx/builder/field-types/abi-version.d.ts +19 -0
  130. package/es/tx/builder/field-types/abi-version.mjs +40 -0
  131. package/es/tx/builder/field-types/abi-version.mjs.map +1 -0
  132. package/es/tx/builder/field-types/address.d.ts +5 -6
  133. package/es/tx/builder/field-types/address.mjs +17 -8
  134. package/es/tx/builder/field-types/address.mjs.map +1 -1
  135. package/es/tx/builder/field-types/array.d.ts +7 -0
  136. package/es/tx/builder/field-types/array.mjs +11 -0
  137. package/es/tx/builder/field-types/array.mjs.map +1 -0
  138. package/es/tx/builder/field-types/boolean.d.ts +6 -0
  139. package/es/tx/builder/field-types/boolean.mjs +13 -0
  140. package/es/tx/builder/field-types/boolean.mjs.map +1 -0
  141. package/es/tx/builder/field-types/coin-amount.d.ts +4 -5
  142. package/es/tx/builder/field-types/coin-amount.mjs +4 -5
  143. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -1
  144. package/es/tx/builder/field-types/ct-version.d.ts +49 -0
  145. package/es/tx/builder/field-types/ct-version.mjs +76 -0
  146. package/es/tx/builder/field-types/ct-version.mjs.map +1 -0
  147. package/es/tx/builder/field-types/deposit.d.ts +3 -2
  148. package/es/tx/builder/field-types/deposit.mjs +3 -2
  149. package/es/tx/builder/field-types/deposit.mjs.map +1 -1
  150. package/es/tx/builder/field-types/encoded.d.ts +6 -0
  151. package/es/tx/builder/field-types/encoded.mjs +21 -0
  152. package/es/tx/builder/field-types/encoded.mjs.map +1 -0
  153. package/es/tx/builder/field-types/entry.d.ts +11 -0
  154. package/es/tx/builder/field-types/entry.mjs +34 -0
  155. package/es/tx/builder/field-types/entry.mjs.map +1 -0
  156. package/es/tx/builder/field-types/enumeration.d.ts +5 -3
  157. package/es/tx/builder/field-types/enumeration.mjs +11 -2
  158. package/es/tx/builder/field-types/enumeration.mjs.map +1 -1
  159. package/es/tx/builder/field-types/fee.d.ts +12 -7
  160. package/es/tx/builder/field-types/fee.mjs +28 -20
  161. package/es/tx/builder/field-types/fee.mjs.map +1 -1
  162. package/es/tx/builder/field-types/field.mjs.map +1 -1
  163. package/es/tx/builder/field-types/gas-limit.d.ts +7 -3
  164. package/es/tx/builder/field-types/gas-limit.mjs +13 -8
  165. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -1
  166. package/es/tx/builder/field-types/gas-price.d.ts +3 -1
  167. package/es/tx/builder/field-types/gas-price.mjs.map +1 -1
  168. package/es/tx/builder/field-types/index.d.ts +107 -30
  169. package/es/tx/builder/field-types/index.mjs +38 -12
  170. package/es/tx/builder/field-types/index.mjs.map +1 -1
  171. package/es/tx/builder/field-types/map.d.ts +13 -0
  172. package/es/tx/builder/field-types/map.mjs +49 -0
  173. package/es/tx/builder/field-types/map.mjs.map +1 -0
  174. package/es/tx/builder/field-types/mptree.d.ts +42 -0
  175. package/es/tx/builder/field-types/mptree.mjs +266 -0
  176. package/es/tx/builder/field-types/mptree.mjs.map +1 -0
  177. package/es/tx/builder/field-types/name-fee.d.ts +2 -3
  178. package/es/tx/builder/field-types/name-fee.mjs +2 -2
  179. package/es/tx/builder/field-types/name-fee.mjs.map +1 -1
  180. package/es/tx/builder/field-types/name-id.mjs +2 -1
  181. package/es/tx/builder/field-types/name-id.mjs.map +1 -1
  182. package/es/tx/builder/field-types/name.mjs.map +1 -1
  183. package/es/tx/builder/field-types/nonce.d.ts +14 -0
  184. package/es/tx/builder/field-types/nonce.mjs +29 -0
  185. package/es/tx/builder/field-types/nonce.mjs.map +1 -0
  186. package/es/tx/builder/field-types/pointers.mjs +2 -2
  187. package/es/tx/builder/field-types/pointers.mjs.map +1 -1
  188. package/es/tx/builder/field-types/raw.d.ts +6 -0
  189. package/es/tx/builder/field-types/raw.mjs +13 -0
  190. package/es/tx/builder/field-types/raw.mjs.map +1 -0
  191. package/es/tx/builder/field-types/short-u-int-const.d.ts +7 -0
  192. package/es/tx/builder/field-types/short-u-int-const.mjs +20 -0
  193. package/es/tx/builder/field-types/short-u-int-const.mjs.map +1 -0
  194. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -1
  195. package/es/tx/builder/field-types/string.d.ts +6 -0
  196. package/es/tx/builder/field-types/string.mjs +10 -0
  197. package/es/tx/builder/field-types/string.mjs.map +1 -0
  198. package/es/tx/builder/field-types/ttl.d.ts +11 -0
  199. package/es/tx/builder/field-types/ttl.mjs +21 -0
  200. package/es/tx/builder/field-types/ttl.mjs.map +1 -0
  201. package/es/tx/builder/field-types/u-int.d.ts +1 -2
  202. package/es/tx/builder/field-types/u-int.mjs.map +1 -1
  203. package/es/tx/builder/field-types/wrapped.d.ts +14 -0
  204. package/es/tx/builder/field-types/wrapped.mjs +22 -0
  205. package/es/tx/builder/field-types/wrapped.mjs.map +1 -0
  206. package/es/tx/builder/helpers.mjs.map +1 -1
  207. package/es/tx/builder/index.d.ts +18 -36
  208. package/es/tx/builder/index.mjs +65 -236
  209. package/es/tx/builder/index.mjs.map +1 -1
  210. package/es/tx/builder/schema.d.ts +2734 -1324
  211. package/es/tx/builder/schema.generated.d.ts +2011 -0
  212. package/es/tx/builder/schema.generated.mjs +2 -0
  213. package/es/tx/builder/schema.generated.mjs.map +1 -0
  214. package/es/tx/builder/schema.mjs +459 -223
  215. package/es/tx/builder/schema.mjs.map +1 -1
  216. package/es/tx/execution-cost.d.ts +35 -0
  217. package/es/tx/execution-cost.mjs +123 -0
  218. package/es/tx/execution-cost.mjs.map +1 -0
  219. package/es/tx/transaction-signer.d.ts +6 -0
  220. package/es/tx/transaction-signer.mjs +27 -0
  221. package/es/tx/transaction-signer.mjs.map +1 -0
  222. package/es/tx/validator.d.ts +3 -5
  223. package/es/tx/validator.mjs +91 -153
  224. package/es/tx/validator.mjs.map +1 -1
  225. package/es/utils/amount-formatter.mjs +0 -16
  226. package/es/utils/amount-formatter.mjs.map +1 -1
  227. package/es/utils/autorest.d.ts +3 -2
  228. package/es/utils/autorest.mjs +43 -11
  229. package/es/utils/autorest.mjs.map +1 -1
  230. package/es/utils/bytes.mjs +1 -17
  231. package/es/utils/bytes.mjs.map +1 -1
  232. package/es/utils/crypto.mjs +0 -16
  233. package/es/utils/crypto.mjs.map +1 -1
  234. package/es/utils/encoder.mjs.map +1 -1
  235. package/es/utils/errors.d.ts +16 -38
  236. package/es/utils/errors.mjs +3 -43
  237. package/es/utils/errors.mjs.map +1 -1
  238. package/es/utils/hd-wallet.mjs.map +1 -1
  239. package/es/utils/json-big.mjs.map +1 -1
  240. package/es/utils/keystore.mjs.map +1 -1
  241. package/es/utils/other.mjs.map +1 -1
  242. package/es/utils/semver-satisfies.mjs.map +1 -1
  243. package/es/utils/string.mjs +0 -17
  244. package/es/utils/string.mjs.map +1 -1
  245. package/package.json +52 -40
  246. package/src/AeSdkBase.ts +6 -3
  247. package/src/AeSdkMethods.ts +12 -18
  248. package/src/AeSdkWallet.ts +1 -1
  249. package/src/Node.ts +23 -9
  250. package/src/account/Base.ts +13 -24
  251. package/src/account/Generalized.ts +9 -24
  252. package/src/account/Ledger.ts +1 -1
  253. package/src/account/Memory.ts +15 -22
  254. package/src/aens.ts +34 -49
  255. package/src/aepp-wallet-communication/connection/Browser.ts +0 -17
  256. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +18 -24
  257. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +0 -17
  258. package/src/aepp-wallet-communication/connection-proxy.ts +0 -17
  259. package/src/aepp-wallet-communication/rpc/RpcClient.ts +2 -2
  260. package/src/aepp-wallet-communication/rpc/types.ts +6 -2
  261. package/src/aepp-wallet-communication/wallet-detector.ts +0 -17
  262. package/src/apis/compiler/compiler.ts +3 -27
  263. package/src/apis/compiler/models/index.ts +3 -2
  264. package/src/apis/compiler/models/mappers.ts +15 -2
  265. package/src/apis/node/models/index.ts +16 -15
  266. package/src/apis/node/models/mappers.ts +2 -1
  267. package/src/apis/node/models/parameters.ts +2 -2
  268. package/src/apis/node/node.ts +3 -27
  269. package/src/chain.ts +33 -30
  270. package/src/channel/Base.ts +39 -31
  271. package/src/channel/Contract.ts +18 -32
  272. package/src/channel/Spend.ts +8 -18
  273. package/src/channel/handlers.ts +14 -26
  274. package/src/channel/internal.ts +41 -23
  275. package/src/contract/Contract.ts +188 -228
  276. package/src/contract/compiler/Base.ts +87 -0
  277. package/src/contract/compiler/Cli.ts +128 -0
  278. package/src/contract/compiler/Http.ts +105 -0
  279. package/src/contract/compiler/HttpNode.ts +26 -0
  280. package/src/contract/compiler/getFileSystem.ts +42 -0
  281. package/src/contract/delegation-signature.ts +56 -0
  282. package/src/contract/ga.ts +61 -37
  283. package/src/index-browser.ts +50 -0
  284. package/src/index.ts +4 -56
  285. package/src/oracle.ts +47 -57
  286. package/src/spend.ts +34 -68
  287. package/src/tx/builder/SchemaTypes.ts +79 -0
  288. package/src/tx/builder/constants.ts +34 -3
  289. package/src/tx/builder/field-types/abi-version.ts +44 -0
  290. package/src/tx/builder/field-types/address.ts +23 -13
  291. package/src/tx/builder/field-types/array.ts +19 -0
  292. package/src/tx/builder/field-types/boolean.ts +9 -0
  293. package/src/tx/builder/field-types/coin-amount.ts +8 -5
  294. package/src/tx/builder/field-types/ct-version.ts +83 -0
  295. package/src/tx/builder/field-types/deposit.ts +4 -2
  296. package/src/tx/builder/field-types/encoded.ts +27 -0
  297. package/src/tx/builder/field-types/entry.ts +36 -0
  298. package/src/tx/builder/field-types/enumeration.ts +15 -4
  299. package/src/tx/builder/field-types/fee.ts +41 -19
  300. package/src/tx/builder/field-types/gas-limit.ts +13 -8
  301. package/src/tx/builder/field-types/index.ts +60 -17
  302. package/src/tx/builder/field-types/map.ts +45 -0
  303. package/src/tx/builder/field-types/mptree.ts +243 -0
  304. package/src/tx/builder/field-types/name-fee.ts +3 -3
  305. package/src/tx/builder/field-types/name-id.ts +1 -1
  306. package/src/tx/builder/field-types/nonce.ts +40 -0
  307. package/src/tx/builder/field-types/pointers.ts +2 -2
  308. package/src/tx/builder/field-types/raw.ts +9 -0
  309. package/src/tx/builder/field-types/short-u-int-const.ts +30 -0
  310. package/src/tx/builder/field-types/string.ts +11 -0
  311. package/src/tx/builder/field-types/ttl.ts +24 -0
  312. package/src/tx/builder/field-types/u-int.ts +1 -3
  313. package/src/tx/builder/field-types/wrapped.ts +32 -0
  314. package/src/tx/builder/index.ts +82 -280
  315. package/src/tx/builder/schema.generated.ts +2013 -0
  316. package/src/tx/builder/schema.ts +536 -666
  317. package/src/tx/execution-cost.ts +146 -0
  318. package/src/tx/transaction-signer.ts +27 -0
  319. package/src/tx/validator.ts +100 -154
  320. package/src/utils/amount-formatter.ts +0 -16
  321. package/src/utils/autorest.ts +52 -11
  322. package/src/utils/bytes.ts +1 -17
  323. package/src/utils/crypto.ts +0 -16
  324. package/src/utils/errors.ts +18 -56
  325. package/src/utils/string.ts +0 -17
  326. package/types-legacy/ts4.2/AeSdkBase.d.ts +3 -3
  327. package/types-legacy/ts4.2/AeSdkMethods.d.ts +12 -14
  328. package/types-legacy/ts4.2/Node.d.ts +8 -4
  329. package/types-legacy/ts4.2/account/Base.d.ts +13 -8
  330. package/types-legacy/ts4.2/account/Memory.d.ts +2 -1
  331. package/types-legacy/ts4.2/aens.d.ts +12 -14
  332. package/types-legacy/ts4.2/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  333. package/types-legacy/ts4.2/aepp-wallet-communication/rpc/types.d.ts +6 -2
  334. package/types-legacy/ts4.2/apis/compiler/compiler.d.ts +1 -1
  335. package/types-legacy/ts4.2/apis/compiler/models/index.d.ts +3 -2
  336. package/types-legacy/ts4.2/apis/compiler/models/mappers.d.ts +1 -1
  337. package/types-legacy/ts4.2/apis/node/models/index.d.ts +15 -15
  338. package/types-legacy/ts4.2/apis/node/models/mappers.d.ts +1 -1
  339. package/types-legacy/ts4.2/apis/node/models/parameters.d.ts +2 -2
  340. package/types-legacy/ts4.2/chain.d.ts +17 -9
  341. package/types-legacy/ts4.2/channel/Base.d.ts +27 -9
  342. package/types-legacy/ts4.2/channel/Contract.d.ts +8 -7
  343. package/types-legacy/ts4.2/channel/Spend.d.ts +5 -1
  344. package/types-legacy/ts4.2/channel/internal.d.ts +22 -2
  345. package/types-legacy/ts4.2/contract/Contract.d.ts +42 -122
  346. package/types-legacy/ts4.2/contract/compiler/Base.d.ts +74 -0
  347. package/types-legacy/ts4.2/contract/compiler/Cli.d.ts +23 -0
  348. package/types-legacy/ts4.2/contract/compiler/Http.d.ts +32 -0
  349. package/types-legacy/ts4.2/contract/compiler/HttpNode.d.ts +17 -0
  350. package/types-legacy/ts4.2/contract/compiler/getFileSystem.d.ts +6 -0
  351. package/types-legacy/ts4.2/contract/delegation-signature.d.ts +43 -0
  352. package/types-legacy/ts4.2/contract/ga.d.ts +27 -10
  353. package/types-legacy/ts4.2/index-browser.d.ts +40 -0
  354. package/types-legacy/ts4.2/index.d.ts +4 -38
  355. package/types-legacy/ts4.2/oracle.d.ts +12 -17
  356. package/types-legacy/ts4.2/spend.d.ts +19 -27
  357. package/types-legacy/ts4.2/tx/builder/SchemaTypes.d.ts +37 -0
  358. package/types-legacy/ts4.2/tx/builder/constants.d.ts +31 -2
  359. package/types-legacy/ts4.2/tx/builder/field-types/abi-version.d.ts +19 -0
  360. package/types-legacy/ts4.2/tx/builder/field-types/address.d.ts +11 -12
  361. package/types-legacy/ts4.2/tx/builder/field-types/array.d.ts +7 -0
  362. package/types-legacy/ts4.2/tx/builder/field-types/boolean.d.ts +6 -0
  363. package/types-legacy/ts4.2/tx/builder/field-types/coin-amount.d.ts +4 -5
  364. package/types-legacy/ts4.2/tx/builder/field-types/ct-version.d.ts +72 -0
  365. package/types-legacy/ts4.2/tx/builder/field-types/deposit.d.ts +3 -2
  366. package/types-legacy/ts4.2/tx/builder/field-types/encoded.d.ts +6 -0
  367. package/types-legacy/ts4.2/tx/builder/field-types/entry.d.ts +11 -0
  368. package/types-legacy/ts4.2/tx/builder/field-types/enumeration.d.ts +5 -3
  369. package/types-legacy/ts4.2/tx/builder/field-types/fee.d.ts +12 -7
  370. package/types-legacy/ts4.2/tx/builder/field-types/gas-limit.d.ts +7 -3
  371. package/types-legacy/ts4.2/tx/builder/field-types/gas-price.d.ts +3 -1
  372. package/types-legacy/ts4.2/tx/builder/field-types/index.d.ts +113 -30
  373. package/types-legacy/ts4.2/tx/builder/field-types/map.d.ts +13 -0
  374. package/types-legacy/ts4.2/tx/builder/field-types/mptree.d.ts +48 -0
  375. package/types-legacy/ts4.2/tx/builder/field-types/name-fee.d.ts +2 -3
  376. package/types-legacy/ts4.2/tx/builder/field-types/nonce.d.ts +14 -0
  377. package/types-legacy/ts4.2/tx/builder/field-types/raw.d.ts +6 -0
  378. package/types-legacy/ts4.2/tx/builder/field-types/short-u-int-const.d.ts +7 -0
  379. package/types-legacy/ts4.2/tx/builder/field-types/string.d.ts +6 -0
  380. package/types-legacy/ts4.2/tx/builder/field-types/ttl.d.ts +11 -0
  381. package/types-legacy/ts4.2/tx/builder/field-types/u-int.d.ts +1 -2
  382. package/types-legacy/ts4.2/tx/builder/field-types/wrapped.d.ts +14 -0
  383. package/types-legacy/ts4.2/tx/builder/index.d.ts +21 -36
  384. package/types-legacy/ts4.2/tx/builder/schema.d.ts +2971 -2926
  385. package/types-legacy/ts4.2/tx/builder/schema.generated.d.ts +2011 -0
  386. package/types-legacy/ts4.2/tx/execution-cost.d.ts +35 -0
  387. package/types-legacy/ts4.2/tx/transaction-signer.d.ts +6 -0
  388. package/types-legacy/ts4.2/tx/validator.d.ts +3 -5
  389. package/types-legacy/ts4.2/utils/autorest.d.ts +3 -2
  390. package/types-legacy/ts4.2/utils/errors.d.ts +16 -38
  391. package/types-legacy/ts4.5/AeSdkBase.d.ts +3 -3
  392. package/types-legacy/ts4.5/AeSdkMethods.d.ts +12 -14
  393. package/types-legacy/ts4.5/Node.d.ts +8 -4
  394. package/types-legacy/ts4.5/account/Base.d.ts +13 -8
  395. package/types-legacy/ts4.5/account/Memory.d.ts +2 -1
  396. package/types-legacy/ts4.5/aens.d.ts +12 -14
  397. package/types-legacy/ts4.5/aepp-wallet-communication/connection/BrowserRuntime.d.ts +1 -0
  398. package/types-legacy/ts4.5/aepp-wallet-communication/rpc/types.d.ts +6 -2
  399. package/types-legacy/ts4.5/apis/compiler/compiler.d.ts +1 -1
  400. package/types-legacy/ts4.5/apis/compiler/models/index.d.ts +3 -2
  401. package/types-legacy/ts4.5/apis/compiler/models/mappers.d.ts +1 -1
  402. package/types-legacy/ts4.5/apis/node/models/index.d.ts +15 -15
  403. package/types-legacy/ts4.5/apis/node/models/mappers.d.ts +1 -1
  404. package/types-legacy/ts4.5/apis/node/models/parameters.d.ts +2 -2
  405. package/types-legacy/ts4.5/chain.d.ts +17 -9
  406. package/types-legacy/ts4.5/channel/Base.d.ts +27 -9
  407. package/types-legacy/ts4.5/channel/Contract.d.ts +8 -7
  408. package/types-legacy/ts4.5/channel/Spend.d.ts +5 -1
  409. package/types-legacy/ts4.5/channel/internal.d.ts +22 -2
  410. package/types-legacy/ts4.5/contract/Contract.d.ts +42 -122
  411. package/types-legacy/ts4.5/contract/compiler/Base.d.ts +74 -0
  412. package/types-legacy/ts4.5/contract/compiler/Cli.d.ts +23 -0
  413. package/types-legacy/ts4.5/contract/compiler/Http.d.ts +32 -0
  414. package/types-legacy/ts4.5/contract/compiler/HttpNode.d.ts +17 -0
  415. package/types-legacy/ts4.5/contract/compiler/getFileSystem.d.ts +6 -0
  416. package/types-legacy/ts4.5/contract/delegation-signature.d.ts +43 -0
  417. package/types-legacy/ts4.5/contract/ga.d.ts +27 -10
  418. package/types-legacy/ts4.5/index-browser.d.ts +40 -0
  419. package/types-legacy/ts4.5/index.d.ts +4 -38
  420. package/types-legacy/ts4.5/oracle.d.ts +12 -17
  421. package/types-legacy/ts4.5/spend.d.ts +19 -27
  422. package/types-legacy/ts4.5/tx/builder/SchemaTypes.d.ts +37 -0
  423. package/types-legacy/ts4.5/tx/builder/constants.d.ts +31 -2
  424. package/types-legacy/ts4.5/tx/builder/field-types/abi-version.d.ts +19 -0
  425. package/types-legacy/ts4.5/tx/builder/field-types/address.d.ts +11 -12
  426. package/types-legacy/ts4.5/tx/builder/field-types/array.d.ts +7 -0
  427. package/types-legacy/ts4.5/tx/builder/field-types/boolean.d.ts +6 -0
  428. package/types-legacy/ts4.5/tx/builder/field-types/coin-amount.d.ts +4 -5
  429. package/types-legacy/ts4.5/tx/builder/field-types/ct-version.d.ts +72 -0
  430. package/types-legacy/ts4.5/tx/builder/field-types/deposit.d.ts +3 -2
  431. package/types-legacy/ts4.5/tx/builder/field-types/encoded.d.ts +6 -0
  432. package/types-legacy/ts4.5/tx/builder/field-types/entry.d.ts +11 -0
  433. package/types-legacy/ts4.5/tx/builder/field-types/enumeration.d.ts +5 -3
  434. package/types-legacy/ts4.5/tx/builder/field-types/fee.d.ts +12 -7
  435. package/types-legacy/ts4.5/tx/builder/field-types/gas-limit.d.ts +7 -3
  436. package/types-legacy/ts4.5/tx/builder/field-types/gas-price.d.ts +3 -1
  437. package/types-legacy/ts4.5/tx/builder/field-types/index.d.ts +113 -30
  438. package/types-legacy/ts4.5/tx/builder/field-types/map.d.ts +13 -0
  439. package/types-legacy/ts4.5/tx/builder/field-types/mptree.d.ts +48 -0
  440. package/types-legacy/ts4.5/tx/builder/field-types/name-fee.d.ts +2 -3
  441. package/types-legacy/ts4.5/tx/builder/field-types/nonce.d.ts +14 -0
  442. package/types-legacy/ts4.5/tx/builder/field-types/raw.d.ts +6 -0
  443. package/types-legacy/ts4.5/tx/builder/field-types/short-u-int-const.d.ts +7 -0
  444. package/types-legacy/ts4.5/tx/builder/field-types/string.d.ts +6 -0
  445. package/types-legacy/ts4.5/tx/builder/field-types/ttl.d.ts +11 -0
  446. package/types-legacy/ts4.5/tx/builder/field-types/u-int.d.ts +1 -2
  447. package/types-legacy/ts4.5/tx/builder/field-types/wrapped.d.ts +14 -0
  448. package/types-legacy/ts4.5/tx/builder/index.d.ts +21 -36
  449. package/types-legacy/ts4.5/tx/builder/schema.d.ts +2971 -2926
  450. package/types-legacy/ts4.5/tx/builder/schema.generated.d.ts +2011 -0
  451. package/types-legacy/ts4.5/tx/execution-cost.d.ts +35 -0
  452. package/types-legacy/ts4.5/tx/transaction-signer.d.ts +6 -0
  453. package/types-legacy/ts4.5/tx/validator.d.ts +3 -5
  454. package/types-legacy/ts4.5/utils/autorest.d.ts +3 -2
  455. package/types-legacy/ts4.5/utils/errors.d.ts +16 -38
  456. package/es/contract/CompilerHttp.d.ts +0 -18
  457. package/es/contract/CompilerHttp.mjs +0 -63
  458. package/es/contract/CompilerHttp.mjs.map +0 -1
  459. package/es/tx/builder/field-types/addresses.d.ts +0 -6
  460. package/es/tx/builder/field-types/addresses.mjs +0 -13
  461. package/es/tx/builder/field-types/addresses.mjs.map +0 -1
  462. package/es/tx/index.d.ts +0 -34
  463. package/es/tx/index.mjs +0 -172
  464. package/es/tx/index.mjs.map +0 -1
  465. package/es/utils/mptree.d.ts +0 -26
  466. package/es/utils/mptree.mjs +0 -143
  467. package/es/utils/mptree.mjs.map +0 -1
  468. package/src/apis/compiler/code-model-v4.yaml +0 -2442
  469. package/src/apis/node/code-model-v4.yaml +0 -10080
  470. package/src/contract/CompilerHttp.ts +0 -67
  471. package/src/tx/builder/field-types/addresses.ts +0 -18
  472. package/src/tx/index.ts +0 -196
  473. package/src/utils/mptree.ts +0 -145
  474. package/types-legacy/ts4.2/contract/CompilerHttp.d.ts +0 -18
  475. package/types-legacy/ts4.2/tx/builder/field-types/addresses.d.ts +0 -6
  476. package/types-legacy/ts4.2/tx/index.d.ts +0 -34
  477. package/types-legacy/ts4.2/utils/mptree.d.ts +0 -32
  478. package/types-legacy/ts4.5/contract/CompilerHttp.d.ts +0 -18
  479. package/types-legacy/ts4.5/tx/builder/field-types/addresses.d.ts +0 -6
  480. package/types-legacy/ts4.5/tx/index.d.ts +0 -34
  481. package/types-legacy/ts4.5/utils/mptree.d.ts +0 -32
@@ -1,314 +1,116 @@
1
- import { decode as rlpDecode, encode as rlpEncode, NestedUint8Array } from 'rlp';
1
+ import { decode as rlpDecode, encode as rlpEncode } from 'rlp';
2
2
  import {
3
3
  decode, encode, Encoded, Encoding,
4
4
  } from '../../utils/encoder';
5
- import { AE_AMOUNT_FORMATS } from '../../utils/amount-formatter';
6
5
  import { hash } from '../../utils/crypto';
7
- import { Field } from './field-types';
8
- import {
9
- FIELD_TYPES,
10
- RawTxObject,
11
- TX_SCHEMA,
12
- TxField,
13
- TxParamsCommon,
14
- TxSchema,
15
- TxTypeSchemas,
16
- } from './schema';
6
+ import { BinaryData, Field } from './field-types';
7
+ import { txSchema } from './schema';
8
+ import { TxUnpacked, TxParams, TxParamsAsync } from './schema.generated';
17
9
  import { Tag } from './constants';
18
10
  import { buildContractId, readInt } from './helpers';
19
- import { toBytes } from '../../utils/bytes';
20
- import MPTree, { MPTreeBinary } from '../../utils/mptree';
21
- import {
22
- ArgumentError,
23
- DecodeError,
24
- InvalidTxParamsError,
25
- SchemaNotFoundError,
26
- } from '../../utils/errors';
27
- import { isKeyOfObject } from '../../utils/other';
11
+ import { ArgumentError, DecodeError, SchemaNotFoundError } from '../../utils/errors';
28
12
 
29
13
  /**
30
14
  * JavaScript-based Transaction builder
31
15
  */
32
16
 
33
- // SERIALIZE AND DESERIALIZE PART
34
- function deserializeField(
35
- value: any,
36
- type: FIELD_TYPES | Field,
37
- prefix?: Encoding | Encoding[],
38
- ): any {
39
- if (value == null) return '';
40
- switch (type) {
41
- case FIELD_TYPES.ctVersion: {
42
- const [vm, , abi] = value;
43
- return {
44
- vmVersion: readInt(Buffer.from([vm])),
45
- abiVersion: readInt(Buffer.from([abi])),
46
- };
47
- }
48
- case FIELD_TYPES.bool:
49
- return value[0] === 1;
50
- case FIELD_TYPES.binary:
51
- return encode(value, prefix as Encoding);
52
- case FIELD_TYPES.stateTree:
53
- return encode(value, Encoding.StateTrees);
54
- case FIELD_TYPES.string:
55
- return value.toString();
56
- case FIELD_TYPES.payload:
57
- return encode(value, Encoding.Bytearray);
58
- case FIELD_TYPES.rlpBinary:
59
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
60
- return unpackTx(encode(value, Encoding.Transaction));
61
- case FIELD_TYPES.rlpBinaries:
62
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
63
- return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));
64
- case FIELD_TYPES.rawBinary:
65
- return value;
66
- case FIELD_TYPES.hex:
67
- return value.toString('hex');
68
- case FIELD_TYPES.offChainUpdates:
69
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
70
- return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));
71
- case FIELD_TYPES.callStack:
72
- // TODO: fix this
73
- return [readInt(value)];
74
- case FIELD_TYPES.mptrees:
75
- return value.map((t: MPTreeBinary) => new MPTree(t));
76
- case FIELD_TYPES.sophiaCodeTypeInfo:
77
- return value.reduce(
78
- (acc: object, [funHash, fnName, argType, outType]: [
79
- funHash: Buffer,
80
- fnName: string,
81
- argType: string,
82
- outType: string,
83
- ]) => ({
84
- ...acc,
85
- [fnName.toString()]: { funHash, argType, outType },
86
- }),
87
- {},
88
- );
89
- default:
90
- if (typeof type === 'number') return value;
91
- return type.deserialize(value);
92
- }
93
- }
94
-
95
- function serializeField(value: any, type: FIELD_TYPES | Field, params: any): any {
96
- switch (type) {
97
- case FIELD_TYPES.bool:
98
- return Buffer.from([(value === true) ? 1 : 0]);
99
- case FIELD_TYPES.binary:
100
- return decode(value);
101
- case FIELD_TYPES.stateTree:
102
- return decode(value);
103
- case FIELD_TYPES.hex:
104
- return Buffer.from(value, 'hex');
105
- case FIELD_TYPES.signatures:
106
- return value.map(Buffer.from);
107
- case FIELD_TYPES.payload:
108
- return typeof value === 'string' && value.split('_')[0] === 'ba'
109
- ? decode(value as Encoded.Bytearray)
110
- : toBytes(value);
111
- case FIELD_TYPES.string:
112
- return toBytes(value);
113
- case FIELD_TYPES.rlpBinary:
114
- return value.rlpEncoded ?? value;
115
- case FIELD_TYPES.mptrees:
116
- return value.map((t: MPTree) => t.serialize());
117
- case FIELD_TYPES.ctVersion:
118
- return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)]);
119
- default:
120
- if (typeof type === 'number') return value;
121
- return type.serialize(value, params);
122
- }
123
- }
124
-
125
- function validateField(
126
- value: any,
127
- type: FIELD_TYPES | Field,
128
- ): string | undefined {
129
- // All fields are required
130
- if (value == null) return 'Field is required';
131
-
132
- // Validate type of value
133
- switch (type) {
134
- case FIELD_TYPES.ctVersion:
135
- if (!(Boolean(value.abiVersion) && Boolean(value.vmVersion))) {
136
- return 'Value must be an object with "vmVersion" and "abiVersion" fields';
137
- }
138
- return undefined;
139
- default:
140
- return undefined;
141
- }
142
- }
143
-
144
- /**
145
- * Validate transaction params
146
- * @category transaction builder
147
- * @param params - Object with tx params
148
- * @param schema - Transaction schema
149
- * @param excludeKeys - Array of keys to exclude for validation
150
- * @returns Object with validation errors
151
- */
152
- function validateParams(
153
- params: any,
154
- schema: TxField[],
155
- { excludeKeys = [] }: { excludeKeys: string[] },
156
- ): object {
157
- const optionalFields = ['payload', 'nameFee', 'deposit', 'gasPrice', 'fee', 'gasLimit', 'amount'];
158
- return Object.fromEntries(
159
- schema
160
- // TODO: allow optional keys in schema
161
- .filter(([key]) => !excludeKeys.includes(key) && !optionalFields.includes(key))
162
- .map(([key, type]) => [key, validateField(params[key], type)])
163
- .filter(([, message]) => message),
164
- );
165
- }
166
-
167
- /**
168
- * Unpack binary transaction
169
- * @category transaction builder
170
- * @param binary - Array with binary transaction field's
171
- * @param schema - Transaction schema
172
- * @returns Object with transaction field's
173
- */
174
- function unpackRawTx<Tx extends TxSchema>(
175
- binary: Uint8Array | NestedUint8Array,
176
- schema: TxField[],
177
- ): RawTxObject<Tx> {
178
- return schema
179
- .reduce<any>(
180
- (
181
- acc,
182
- [key, fieldType, prefix],
183
- index,
184
- ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),
185
- {},
186
- );
187
- }
188
-
189
- /**
190
- * @category transaction builder
191
- */
192
- export interface BuiltTx<Tx extends TxSchema, Prefix extends Encoding> {
193
- tx: Encoded.Generic<Prefix>;
194
- rlpEncoded: Uint8Array;
195
- binary: Uint8Array;
196
- txObject: RawTxObject<Tx>;
17
+ export function getSchema(tag: Tag, version?: number): Array<[string, Field]> {
18
+ const schemas = txSchema.filter((s) => s.tag.constValue === tag);
19
+ if (schemas.length === 0) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, 0);
20
+ version ??= Math.max(...schemas.map((schema) => schema.version.constValue));
21
+ const schema = schemas.find((s) => s.version.constValue === version);
22
+ if (schema == null) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, version);
23
+ return Object.entries(schema);
197
24
  }
198
25
 
199
26
  /**
200
27
  * Build transaction hash
201
28
  * @category transaction builder
202
- * @param _params - Object with tx params
203
- * @param type - Transaction type
29
+ * @param params - Object with tx params
204
30
  * @param options - options
205
- * @param options.excludeKeys - Array of keys to exclude for validation and build
206
- * @param options.denomination - Denomination of amounts
207
31
  * @param options.prefix - Prefix of transaction
208
- * @throws {@link InvalidTxParamsError}
209
- * @returns object
210
- * @returns object.tx Base64Check transaction hash with 'tx_' prefix
211
- * @returns object.rlpEncoded rlp encoded transaction
212
- * @returns object.binary binary transaction
32
+ * @returns object Base64Check transaction hash with 'tx_' prefix
213
33
  */
214
- export function buildTx<TxType extends Tag, Prefix>(
215
- _params: Omit<TxTypeSchemas[TxType], 'tag' | 'VSN'> & { VSN?: number },
216
- type: TxType,
34
+ export function buildTx<
35
+ E extends Encoding = Encoding.Transaction,
36
+ >(
37
+ params: TxParams,
217
38
  {
218
- excludeKeys = [],
219
- prefix = Encoding.Transaction,
220
- vsn,
221
- denomination = AE_AMOUNT_FORMATS.AETTOS,
39
+ prefix,
222
40
  }: {
223
- excludeKeys?: string[];
224
- prefix?: Encoding;
225
- vsn?: number;
226
- denomination?: AE_AMOUNT_FORMATS;
41
+ prefix?: E;
227
42
  } = {},
228
- ): BuiltTx<TxSchema, Prefix extends Encoding ? Prefix : Encoding.Transaction> {
229
- const schemas = TX_SCHEMA[type];
230
-
231
- vsn ??= Math.max(...Object.keys(schemas).map((a) => +a));
232
- if (!isKeyOfObject(vsn, schemas)) throw new SchemaNotFoundError('serialization', Tag[type], vsn);
233
-
234
- const schema = schemas[vsn] as unknown as TxField[];
235
-
236
- const params = _params as TxParamsCommon & { onNode: Node; denomination?: AE_AMOUNT_FORMATS };
237
- params.VSN = vsn;
238
- params.tag = type;
239
- params.denomination = denomination;
240
- const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key));
241
-
242
- // Validation
243
- const valid = validateParams(params, schema, { excludeKeys });
244
- if (Object.keys(valid).length > 0) {
245
- throw new InvalidTxParamsError(`Transaction build error. ${JSON.stringify(valid)}`);
246
- }
247
-
248
- const binary = filteredSchema
249
- .map(([key, fieldType]: [keyof TxSchema, FIELD_TYPES, Encoding]) => (
250
- serializeField(
251
- params[key],
252
- fieldType,
253
- {
254
- ...params,
255
- txType: type,
256
- rebuildTx: (overrideParams: any) => buildTx(
257
- { ...params, ...overrideParams },
258
- type,
259
- {
260
- excludeKeys, prefix: Encoding.Transaction, vsn, denomination,
261
- },
262
- ),
263
- },
264
- )
265
- ))
266
- .filter((e) => e !== undefined);
267
-
268
- const rlpEncoded = rlpEncode(binary);
269
- const tx = encode(rlpEncoded, prefix);
270
- return {
271
- tx,
272
- rlpEncoded,
273
- binary,
274
- txObject: unpackRawTx<TxTypeSchemas[Tag]>(binary, schema),
275
- } as any;
43
+ ): Encoded.Generic<E> {
44
+ const schema = getSchema(params.tag, params.version);
45
+
46
+ const binary = schema.map(([key, field]) => (
47
+ field.serialize(
48
+ // @ts-expect-error the type of `params[key]` can't be determined accurately
49
+ params[key],
50
+ {
51
+ ...params,
52
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
53
+ unpackTx,
54
+ buildTx,
55
+ rebuildTx: (overrideParams: any) => buildTx(
56
+ { ...params, ...overrideParams },
57
+ ),
58
+ },
59
+ params,
60
+ )
61
+ ));
62
+
63
+ // @ts-expect-error looks like a TypeScript edge case
64
+ return encode(rlpEncode(binary), prefix ?? Encoding.Transaction);
276
65
  }
277
66
 
67
+ export type BuildTxOptions <TxType extends Tag, OmitFields extends string> =
68
+ Omit<TxParamsAsync & { tag: TxType }, 'tag' | OmitFields>;
69
+
278
70
  /**
279
71
  * @category transaction builder
280
72
  */
281
- export interface TxUnpacked<Tx extends TxSchema> {
282
- txType: Tag;
283
- tx: RawTxObject<Tx>;
284
- rlpEncoded: Uint8Array;
73
+ export async function buildTxAsync(params: TxParamsAsync): Promise<Encoded.Transaction> {
74
+ await Promise.all(
75
+ getSchema(params.tag, params.version)
76
+ .map(async ([key, field]) => {
77
+ if (field.prepare == null) return;
78
+ // @ts-expect-error the type of `params[key]` can't be determined accurately
79
+ params[key] = await field.prepare(params[key], params, params);
80
+ }),
81
+ );
82
+
83
+ // @ts-expect-error after preparation properties should be compatible with sync tx builder
84
+ return buildTx(params);
285
85
  }
86
+
286
87
  /**
287
- * Unpack transaction hash
88
+ * Unpack transaction encoded as string
288
89
  * @category transaction builder
289
90
  * @param encodedTx - Transaction to unpack
290
91
  * @param txType - Expected transaction type
291
- * @returns object
292
- * @returns object.tx Object with transaction param's
293
- * @returns object.txType Transaction type
92
+ * @returns Object with transaction param's
294
93
  */
295
94
  export function unpackTx<TxType extends Tag>(
296
- encodedTx: Encoded.Transaction | Encoded.Poi,
95
+ encodedTx: Encoded.Transaction | Encoded.Poi | Encoded.StateTrees | Encoded.CallStateTree,
297
96
  txType?: TxType,
298
- ): TxUnpacked<TxTypeSchemas[TxType]> {
299
- const rlpEncoded = decode(encodedTx);
300
- const binary = rlpDecode(rlpEncoded);
301
- const objId = +readInt(binary[0] as Buffer);
302
- if (!isKeyOfObject(objId, TX_SCHEMA)) throw new DecodeError(`Unknown transaction tag: ${objId}`);
303
- if (txType != null && txType !== objId) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[objId]} instead`);
304
- const vsn = +readInt(binary[1] as Buffer);
305
- if (!isKeyOfObject(vsn, TX_SCHEMA[objId])) throw new SchemaNotFoundError('deserialization', `tag ${objId}`, vsn);
306
- const schema = TX_SCHEMA[objId][vsn];
307
- return {
308
- txType: objId,
309
- tx: unpackRawTx<TxTypeSchemas[TxType]>(binary, schema),
310
- rlpEncoded,
311
- };
97
+ ): TxUnpacked & { tag: TxType } {
98
+ const binary = rlpDecode(decode(encodedTx));
99
+ const tag = +readInt(binary[0] as Buffer);
100
+ const version = +readInt(binary[1] as Buffer);
101
+ const schema = getSchema(tag, version);
102
+ if (txType != null && txType !== tag) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[tag]} instead`);
103
+ if (binary.length !== schema.length) {
104
+ throw new ArgumentError('Transaction RLP length', schema.length, binary.length);
105
+ }
106
+ return schema.reduce<any>(
107
+ (acc, [name, field], index) => {
108
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
109
+ const deserialized = field.deserialize(binary[index] as BinaryData, { unpackTx });
110
+ return { ...acc, [name]: deserialized };
111
+ },
112
+ {},
113
+ ) as any;
312
114
  }
313
115
 
314
116
  /**
@@ -333,9 +135,9 @@ export function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): Encoded.Tx
333
135
  export function buildContractIdByContractTx(
334
136
  contractTx: Encoded.Transaction,
335
137
  ): Encoded.ContractAddress {
336
- const { txType, tx } = unpackTx<Tag.ContractCreateTx | Tag.GaAttachTx>(contractTx);
337
- if (![Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {
338
- throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);
138
+ const params = unpackTx(contractTx);
139
+ if (Tag.ContractCreateTx !== params.tag && Tag.GaAttachTx !== params.tag) {
140
+ throw new ArgumentError('contractTx', 'a contractCreateTx or gaAttach', params.tag);
339
141
  }
340
- return buildContractId(tx.ownerId, +tx.nonce);
142
+ return buildContractId(params.ownerId, params.nonce);
341
143
  }