@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
@@ -0,0 +1,22 @@
1
+ import { encode, Encoding, decode } from "../../../utils/encoder.mjs";
2
+ export default function genWrappedField(tag) {
3
+ return {
4
+ serialize(payload, _ref) {
5
+ let {
6
+ buildTx
7
+ } = _ref;
8
+ return decode(buildTx({
9
+ tag,
10
+ payload
11
+ }));
12
+ },
13
+ deserialize(buffer, _ref2) {
14
+ let {
15
+ unpackTx
16
+ } = _ref2;
17
+ return unpackTx(encode(buffer, Encoding.Transaction), tag).payload;
18
+ },
19
+ recursiveType: true
20
+ };
21
+ }
22
+ //# sourceMappingURL=wrapped.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapped.mjs","names":["encode","Encoding","decode","genWrappedField","tag","serialize","payload","_ref","buildTx","deserialize","buffer","_ref2","unpackTx","Transaction","recursiveType"],"sources":["../../../../src/tx/builder/field-types/wrapped.ts"],"sourcesContent":["import { Tag } from '../constants';\nimport { encode, Encoding, decode } from '../../../utils/encoder';\nimport type { unpackTx as unpackTxType, buildTx as buildTxType } from '../index';\n\ntype TagWrapping = Tag.AccountsMtree | Tag.CallsMtree | Tag.ChannelsMtree | Tag.ContractsMtree\n| Tag.NameserviceMtree | Tag.OraclesMtree;\n\nexport default function genWrappedField<T extends TagWrapping>(tag: T): {\n serialize: (\n // TODO: replace with `(TxParams & { tag: T })['payload']`,\n // but fix TS2502 value is referenced directly or indirectly in its own type annotation\n value: any, options: { buildTx: typeof buildTxType }\n ) => Buffer;\n deserialize: (\n value: Buffer, options: { unpackTx: typeof unpackTxType },\n // TODO: replace with `(TxUnpacked & { tag: T })['payload']`,\n // TS2577 Return type annotation circularly references itself\n ) => any;\n recursiveType: true;\n} {\n return {\n serialize(payload, { buildTx }) {\n return decode(buildTx({ tag, payload }));\n },\n\n deserialize(buffer, { unpackTx }) {\n return unpackTx<TagWrapping>(encode(buffer, Encoding.Transaction), tag).payload;\n },\n\n recursiveType: true,\n };\n}\n"],"mappings":"SACSA,MAAM,EAAEC,QAAQ,EAAEC,MAAM;AAMjC,eAAe,SAASC,eAAeA,CAAwBC,GAAM,EAYnE;EACA,OAAO;IACLC,SAASA,CAACC,OAAO,EAAAC,IAAA,EAAe;MAAA,IAAb;QAAEC;MAAQ,CAAC,GAAAD,IAAA;MAC5B,OAAOL,MAAM,CAACM,OAAO,CAAC;QAAEJ,GAAG;QAAEE;MAAQ,CAAC,CAAC,CAAC;IAC1C,CAAC;IAEDG,WAAWA,CAACC,MAAM,EAAAC,KAAA,EAAgB;MAAA,IAAd;QAAEC;MAAS,CAAC,GAAAD,KAAA;MAC9B,OAAOC,QAAQ,CAAcZ,MAAM,CAACU,MAAM,EAAET,QAAQ,CAACY,WAAW,CAAC,EAAET,GAAG,CAAC,CAACE,OAAO;IACjF,CAAC;IAEDQ,aAAa,EAAE;EACjB,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","names":["BigNumber","genSalt","hash","decode","encode","Encoding","toBytes","concatBuffers","NAME_BID_RANGES","NAME_BID_TIMEOUT_BLOCKS","NAME_FEE_BID_INCREMENT","NAME_MAX_LENGTH_FEE","ceil","ArgumentError","IllegalBidFeeError","buildContractId","ownerId","nonce","ownerIdAndNonce","from","b2bHash","ContractAddress","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","OracleQueryId","produceNameId","name","toLowerCase","Name","commitmentHash","salt","toString","padStart","Commitment","readInt","buf","AENS_SUFFIX","isNameValid","endsWith","encodingToPointerKey","AccountAddress","OracleAddress","Channel","getDefaultPointerKey","identifier","encoding","substring","result","find","e","map","join","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { genSalt, hash } from '../../utils/crypto';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { toBytes } from '../../utils/bytes';\nimport { concatBuffers } from '../../utils/other';\nimport {\n AensName,\n NAME_BID_RANGES,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_FEE_BID_INCREMENT,\n NAME_MAX_LENGTH_FEE,\n} from './constants';\nimport { ceil } from '../../utils/bignumber';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors';\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\n/**\n * Build a contract public key\n * @category contract\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId(\n ownerId: Encoded.AccountAddress,\n nonce: number | BigNumber,\n): Encoded.ContractAddress {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);\n const b2bHash = hash(ownerIdAndNonce);\n return encode(b2bHash, Encoding.ContractAddress);\n}\n\n/**\n * Build a oracle query id\n * @category oracle\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId(\n senderId: Encoded.AccountAddress,\n nonce: number | BigNumber | string,\n oracleId: Encoded.OracleAddress,\n): Encoded.OracleQueryId {\n function _int32(val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true);\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);\n }\n\n const b2bHash = hash(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),\n );\n return encode(b2bHash, Encoding.OracleQueryId);\n}\n\n/**\n * Encode an AENS name\n * @category AENS\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId(name: AensName): Encoded.Name {\n return encode(hash(name.toLowerCase()), Encoding.Name);\n}\n\n/**\n * Generate the commitment hash by hashing the salt and\n * name, base 58 encoding the result and prepending 'cm_'\n * @category transaction builder\n * @param name - Name to be registered\n * @param salt - Random number\n * @returns Commitment hash\n */\nexport function commitmentHash(\n name: AensName,\n salt: number = genSalt(),\n): Encoded.Commitment {\n return encode(\n hash(concatBuffers([\n Buffer.from(name.toLowerCase()),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\n ])),\n Encoding.Commitment,\n );\n}\n\n/**\n * Utility function to convert bytes to int\n * @category transaction builder\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt(buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);\n}\n\nconst AENS_SUFFIX = '.chain';\n\n/**\n * Is AENS name valid\n * @category AENS\n * @param name - AENS name\n */\nexport function isNameValid(name: string): name is AensName {\n // TODO: probably there are stronger requirements\n return name.endsWith(AENS_SUFFIX);\n}\n\nconst encodingToPointerKey = [\n [Encoding.AccountAddress, 'account_pubkey'],\n [Encoding.OracleAddress, 'oracle_pubkey'],\n [Encoding.ContractAddress, 'contract_pubkey'],\n [Encoding.Channel, 'channel'],\n] as const;\n\n/**\n * @category AENS\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey(\n identifier: Encoded.Generic<typeof encodingToPointerKey[number][0]>,\n): typeof encodingToPointerKey[number][1] {\n decode(identifier);\n const encoding = identifier.substring(0, 2);\n const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];\n if (result != null) return result;\n throw new ArgumentError(\n 'identifier',\n `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,\n identifier,\n );\n}\n\n/**\n * Get the minimum AENS name fee\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee(name: AensName): BigNumber {\n const nameLength = name.length - AENS_SUFFIX.length;\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];\n}\n\n/**\n * Compute bid fee for AENS auction\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee(\n name: AensName,\n { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),\n );\n}\n\n/**\n * Compute auction end height\n * @category AENS\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock(name: AensName, claimHeight: number): number {\n const length = name.length - AENS_SUFFIX.length;\n const h = (length <= 4 ? 62 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 8 ? 31 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 12 ? NAME_BID_TIMEOUT_BLOCKS : null)\n ?? 0;\n return h + claimHeight;\n}\n\n/**\n * Is name accept going to auction\n * @category AENS\n */\nexport function isAuctionName(name: AensName): boolean {\n return name.length < 13 + AENS_SUFFIX.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.mjs","names":["BigNumber","genSalt","hash","decode","encode","Encoding","toBytes","concatBuffers","NAME_BID_RANGES","NAME_BID_TIMEOUT_BLOCKS","NAME_FEE_BID_INCREMENT","NAME_MAX_LENGTH_FEE","ceil","ArgumentError","IllegalBidFeeError","buildContractId","ownerId","nonce","ownerIdAndNonce","_Buffer","from","b2bHash","ContractAddress","oracleQueryId","senderId","oracleId","_int32","val","nonceBE","alloc","length","OracleQueryId","produceNameId","name","toLowerCase","Name","commitmentHash","salt","arguments","undefined","toString","padStart","Commitment","readInt","buf","AENS_SUFFIX","isNameValid","endsWith","encodingToPointerKey","AccountAddress","OracleAddress","Channel","getDefaultPointerKey","identifier","_encodingToPointerKey","encoding","substring","result","find","_ref","e","map","_ref2","join","getMinimumNameFee","nameLength","Math","min","computeBidFee","startFee","increment","Number","times","plus","computeAuctionEndBlock","claimHeight","_ref3","_ref4","_ref5","h","isAuctionName"],"sources":["../../../src/tx/builder/helpers.ts"],"sourcesContent":["import BigNumber from 'bignumber.js';\nimport { genSalt, hash } from '../../utils/crypto';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { toBytes } from '../../utils/bytes';\nimport { concatBuffers } from '../../utils/other';\nimport {\n AensName,\n NAME_BID_RANGES,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_FEE_BID_INCREMENT,\n NAME_MAX_LENGTH_FEE,\n} from './constants';\nimport { ceil } from '../../utils/bignumber';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors';\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\n/**\n * Build a contract public key\n * @category contract\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId(\n ownerId: Encoded.AccountAddress,\n nonce: number | BigNumber,\n): Encoded.ContractAddress {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);\n const b2bHash = hash(ownerIdAndNonce);\n return encode(b2bHash, Encoding.ContractAddress);\n}\n\n/**\n * Build a oracle query id\n * @category oracle\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId(\n senderId: Encoded.AccountAddress,\n nonce: number | BigNumber | string,\n oracleId: Encoded.OracleAddress,\n): Encoded.OracleQueryId {\n function _int32(val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true);\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);\n }\n\n const b2bHash = hash(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),\n );\n return encode(b2bHash, Encoding.OracleQueryId);\n}\n\n/**\n * Encode an AENS name\n * @category AENS\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId(name: AensName): Encoded.Name {\n return encode(hash(name.toLowerCase()), Encoding.Name);\n}\n\n/**\n * Generate the commitment hash by hashing the salt and\n * name, base 58 encoding the result and prepending 'cm_'\n * @category transaction builder\n * @param name - Name to be registered\n * @param salt - Random number\n * @returns Commitment hash\n */\nexport function commitmentHash(\n name: AensName,\n salt: number = genSalt(),\n): Encoded.Commitment {\n return encode(\n hash(concatBuffers([\n Buffer.from(name.toLowerCase()),\n Buffer.from(salt.toString(16).padStart(64, '0'), 'hex'),\n ])),\n Encoding.Commitment,\n );\n}\n\n/**\n * Utility function to convert bytes to int\n * @category transaction builder\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt(buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);\n}\n\nconst AENS_SUFFIX = '.chain';\n\n/**\n * Is AENS name valid\n * @category AENS\n * @param name - AENS name\n */\nexport function isNameValid(name: string): name is AensName {\n // TODO: probably there are stronger requirements\n return name.endsWith(AENS_SUFFIX);\n}\n\nconst encodingToPointerKey = [\n [Encoding.AccountAddress, 'account_pubkey'],\n [Encoding.OracleAddress, 'oracle_pubkey'],\n [Encoding.ContractAddress, 'contract_pubkey'],\n [Encoding.Channel, 'channel'],\n] as const;\n\n/**\n * @category AENS\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey(\n identifier: Encoded.Generic<typeof encodingToPointerKey[number][0]>,\n): typeof encodingToPointerKey[number][1] {\n decode(identifier);\n const encoding = identifier.substring(0, 2);\n const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];\n if (result != null) return result;\n throw new ArgumentError(\n 'identifier',\n `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,\n identifier,\n );\n}\n\n/**\n * Get the minimum AENS name fee\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee(name: AensName): BigNumber {\n const nameLength = name.length - AENS_SUFFIX.length;\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];\n}\n\n/**\n * Compute bid fee for AENS auction\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee(\n name: AensName,\n { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),\n );\n}\n\n/**\n * Compute auction end height\n * @category AENS\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock(name: AensName, claimHeight: number): number {\n const length = name.length - AENS_SUFFIX.length;\n const h = (length <= 4 ? 62 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 8 ? 31 * NAME_BID_TIMEOUT_BLOCKS : null)\n ?? (length <= 12 ? NAME_BID_TIMEOUT_BLOCKS : null)\n ?? 0;\n return h + claimHeight;\n}\n\n/**\n * Is name accept going to auction\n * @category AENS\n */\nexport function isAuctionName(name: AensName): boolean {\n return name.length < 13 + AENS_SUFFIX.length;\n}\n"],"mappings":"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"}
@@ -1,57 +1,39 @@
1
1
  import { Encoded, Encoding } from '../../utils/encoder';
2
- import { AE_AMOUNT_FORMATS } from '../../utils/amount-formatter';
3
- import { RawTxObject, TxSchema, TxTypeSchemas } from './schema';
2
+ import { Field } from './field-types';
3
+ import { TxUnpacked, TxParams, TxParamsAsync } from './schema.generated';
4
4
  import { Tag } from './constants';
5
5
  /**
6
- * @category transaction builder
6
+ * JavaScript-based Transaction builder
7
7
  */
8
- export interface BuiltTx<Tx extends TxSchema, Prefix extends Encoding> {
9
- tx: Encoded.Generic<Prefix>;
10
- rlpEncoded: Uint8Array;
11
- binary: Uint8Array;
12
- txObject: RawTxObject<Tx>;
13
- }
8
+ export declare function getSchema(tag: Tag, version?: number): Array<[string, Field]>;
14
9
  /**
15
10
  * Build transaction hash
16
11
  * @category transaction builder
17
- * @param _params - Object with tx params
18
- * @param type - Transaction type
12
+ * @param params - Object with tx params
19
13
  * @param options - options
20
- * @param options.excludeKeys - Array of keys to exclude for validation and build
21
- * @param options.denomination - Denomination of amounts
22
14
  * @param options.prefix - Prefix of transaction
23
- * @throws {@link InvalidTxParamsError}
24
- * @returns object
25
- * @returns object.tx Base64Check transaction hash with 'tx_' prefix
26
- * @returns object.rlpEncoded rlp encoded transaction
27
- * @returns object.binary binary transaction
15
+ * @returns object Base64Check transaction hash with 'tx_' prefix
28
16
  */
29
- export declare function buildTx<TxType extends Tag, Prefix>(_params: Omit<TxTypeSchemas[TxType], 'tag' | 'VSN'> & {
30
- VSN?: number;
31
- }, type: TxType, { excludeKeys, prefix, vsn, denomination, }?: {
32
- excludeKeys?: string[];
33
- prefix?: Encoding;
34
- vsn?: number;
35
- denomination?: AE_AMOUNT_FORMATS;
36
- }): BuiltTx<TxSchema, Prefix extends Encoding ? Prefix : Encoding.Transaction>;
17
+ export declare function buildTx<E extends Encoding = Encoding.Transaction>(params: TxParams, { prefix, }?: {
18
+ prefix?: E;
19
+ }): Encoded.Generic<E>;
20
+ export type BuildTxOptions<TxType extends Tag, OmitFields extends string> = Omit<TxParamsAsync & {
21
+ tag: TxType;
22
+ }, 'tag' | OmitFields>;
37
23
  /**
38
24
  * @category transaction builder
39
25
  */
40
- export interface TxUnpacked<Tx extends TxSchema> {
41
- txType: Tag;
42
- tx: RawTxObject<Tx>;
43
- rlpEncoded: Uint8Array;
44
- }
26
+ export declare function buildTxAsync(params: TxParamsAsync): Promise<Encoded.Transaction>;
45
27
  /**
46
- * Unpack transaction hash
28
+ * Unpack transaction encoded as string
47
29
  * @category transaction builder
48
30
  * @param encodedTx - Transaction to unpack
49
31
  * @param txType - Expected transaction type
50
- * @returns object
51
- * @returns object.tx Object with transaction param's
52
- * @returns object.txType Transaction type
32
+ * @returns Object with transaction param's
53
33
  */
54
- export declare function unpackTx<TxType extends Tag>(encodedTx: Encoded.Transaction | Encoded.Poi, txType?: TxType): TxUnpacked<TxTypeSchemas[TxType]>;
34
+ export declare function unpackTx<TxType extends Tag>(encodedTx: Encoded.Transaction | Encoded.Poi | Encoded.StateTrees | Encoded.CallStateTree, txType?: TxType): TxUnpacked & {
35
+ tag: TxType;
36
+ };
55
37
  /**
56
38
  * Build a transaction hash
57
39
  * @category transaction builder
@@ -1,269 +1,101 @@
1
- import _buffer from "buffer";
2
- const {
3
- Buffer: _Buffer
4
- } = _buffer;
5
1
  import _rlp from 'rlp';
6
2
  const {
7
3
  decode: rlpDecode,
8
4
  encode: rlpEncode
9
5
  } = _rlp;
10
6
  import { decode, encode, Encoding } from "../../utils/encoder.mjs";
11
- import { AE_AMOUNT_FORMATS } from "../../utils/amount-formatter.mjs";
12
7
  import { hash } from "../../utils/crypto.mjs";
13
- import { FIELD_TYPES, TX_SCHEMA } from "./schema.mjs";
8
+ import { txSchema } from "./schema.mjs";
14
9
  import { Tag } from "./constants.mjs";
15
10
  import { buildContractId, readInt } from "./helpers.mjs";
16
- import { toBytes } from "../../utils/bytes.mjs";
17
- import MPTree from "../../utils/mptree.mjs";
18
- import { ArgumentError, DecodeError, InvalidTxParamsError, SchemaNotFoundError } from "../../utils/errors.mjs";
19
- import { isKeyOfObject } from "../../utils/other.mjs";
11
+ import { ArgumentError, DecodeError, SchemaNotFoundError } from "../../utils/errors.mjs";
20
12
  /**
21
13
  * JavaScript-based Transaction builder
22
14
  */
23
- // SERIALIZE AND DESERIALIZE PART
24
- function deserializeField(value, type, prefix) {
25
- if (value == null) return '';
26
- switch (type) {
27
- case FIELD_TYPES.ctVersion:
28
- {
29
- const [vm,, abi] = value;
30
- return {
31
- vmVersion: readInt(_Buffer.from([vm])),
32
- abiVersion: readInt(_Buffer.from([abi]))
33
- };
34
- }
35
- case FIELD_TYPES.bool:
36
- return value[0] === 1;
37
- case FIELD_TYPES.binary:
38
- return encode(value, prefix);
39
- case FIELD_TYPES.stateTree:
40
- return encode(value, Encoding.StateTrees);
41
- case FIELD_TYPES.string:
42
- return value.toString();
43
- case FIELD_TYPES.payload:
44
- return encode(value, Encoding.Bytearray);
45
- case FIELD_TYPES.rlpBinary:
46
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
47
- return unpackTx(encode(value, Encoding.Transaction));
48
- case FIELD_TYPES.rlpBinaries:
49
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
50
- return value.map(v => unpackTx(encode(v, Encoding.Transaction)));
51
- case FIELD_TYPES.rawBinary:
52
- return value;
53
- case FIELD_TYPES.hex:
54
- return value.toString('hex');
55
- case FIELD_TYPES.offChainUpdates:
56
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
57
- return value.map(v => unpackTx(encode(v, Encoding.Transaction)));
58
- case FIELD_TYPES.callStack:
59
- // TODO: fix this
60
- return [readInt(value)];
61
- case FIELD_TYPES.mptrees:
62
- return value.map(t => new MPTree(t));
63
- case FIELD_TYPES.sophiaCodeTypeInfo:
64
- return value.reduce((acc, _ref) => {
65
- let [funHash, fnName, argType, outType] = _ref;
66
- return {
67
- ...acc,
68
- [fnName.toString()]: {
69
- funHash,
70
- argType,
71
- outType
72
- }
73
- };
74
- }, {});
75
- default:
76
- if (typeof type === 'number') return value;
77
- return type.deserialize(value);
78
- }
79
- }
80
- function serializeField(value, type, params) {
81
- var _value$rlpEncoded;
82
- switch (type) {
83
- case FIELD_TYPES.bool:
84
- return _Buffer.from([value === true ? 1 : 0]);
85
- case FIELD_TYPES.binary:
86
- return decode(value);
87
- case FIELD_TYPES.stateTree:
88
- return decode(value);
89
- case FIELD_TYPES.hex:
90
- return _Buffer.from(value, 'hex');
91
- case FIELD_TYPES.signatures:
92
- return value.map(_Buffer.from);
93
- case FIELD_TYPES.payload:
94
- return typeof value === 'string' && value.split('_')[0] === 'ba' ? decode(value) : toBytes(value);
95
- case FIELD_TYPES.string:
96
- return toBytes(value);
97
- case FIELD_TYPES.rlpBinary:
98
- return (_value$rlpEncoded = value.rlpEncoded) !== null && _value$rlpEncoded !== void 0 ? _value$rlpEncoded : value;
99
- case FIELD_TYPES.mptrees:
100
- return value.map(t => t.serialize());
101
- case FIELD_TYPES.ctVersion:
102
- return _Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)]);
103
- default:
104
- if (typeof type === 'number') return value;
105
- return type.serialize(value, params);
106
- }
107
- }
108
- function validateField(value, type) {
109
- // All fields are required
110
- if (value == null) return 'Field is required';
111
-
112
- // Validate type of value
113
- switch (type) {
114
- case FIELD_TYPES.ctVersion:
115
- if (!(Boolean(value.abiVersion) && Boolean(value.vmVersion))) {
116
- return 'Value must be an object with "vmVersion" and "abiVersion" fields';
117
- }
118
- return undefined;
119
- default:
120
- return undefined;
121
- }
15
+ export function getSchema(tag, version) {
16
+ var _version;
17
+ const schemas = txSchema.filter(s => s.tag.constValue === tag);
18
+ if (schemas.length === 0) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, 0);
19
+ (_version = version) !== null && _version !== void 0 ? _version : version = Math.max(...schemas.map(schema => schema.version.constValue));
20
+ const schema = schemas.find(s => s.version.constValue === version);
21
+ if (schema == null) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, version);
22
+ return Object.entries(schema);
122
23
  }
123
24
 
124
- /**
125
- * Validate transaction params
126
- * @category transaction builder
127
- * @param params - Object with tx params
128
- * @param schema - Transaction schema
129
- * @param excludeKeys - Array of keys to exclude for validation
130
- * @returns Object with validation errors
131
- */
132
- function validateParams(params, schema, _ref2) {
133
- let {
134
- excludeKeys = []
135
- } = _ref2;
136
- const optionalFields = ['payload', 'nameFee', 'deposit', 'gasPrice', 'fee', 'gasLimit', 'amount'];
137
- return Object.fromEntries(schema
138
- // TODO: allow optional keys in schema
139
- .filter(_ref3 => {
140
- let [key] = _ref3;
141
- return !excludeKeys.includes(key) && !optionalFields.includes(key);
142
- }).map(_ref4 => {
143
- let [key, type] = _ref4;
144
- return [key, validateField(params[key], type)];
145
- }).filter(_ref5 => {
146
- let [, message] = _ref5;
147
- return message;
148
- }));
149
- }
150
-
151
- /**
152
- * Unpack binary transaction
153
- * @category transaction builder
154
- * @param binary - Array with binary transaction field's
155
- * @param schema - Transaction schema
156
- * @returns Object with transaction field's
157
- */
158
- function unpackRawTx(binary, schema) {
159
- return schema.reduce((acc, _ref6, index) => {
160
- let [key, fieldType, prefix] = _ref6;
161
- return Object.assign(acc, {
162
- [key]: deserializeField(binary[index], fieldType, prefix)
163
- });
164
- }, {});
165
- }
166
-
167
- /**
168
- * @category transaction builder
169
- */
170
-
171
25
  /**
172
26
  * Build transaction hash
173
27
  * @category transaction builder
174
- * @param _params - Object with tx params
175
- * @param type - Transaction type
28
+ * @param params - Object with tx params
176
29
  * @param options - options
177
- * @param options.excludeKeys - Array of keys to exclude for validation and build
178
- * @param options.denomination - Denomination of amounts
179
30
  * @param options.prefix - Prefix of transaction
180
- * @throws {@link InvalidTxParamsError}
181
- * @returns object
182
- * @returns object.tx Base64Check transaction hash with 'tx_' prefix
183
- * @returns object.rlpEncoded rlp encoded transaction
184
- * @returns object.binary binary transaction
31
+ * @returns object Base64Check transaction hash with 'tx_' prefix
185
32
  */
186
- export function buildTx(_params, type) {
187
- var _vsn;
33
+ export function buildTx(params) {
188
34
  let {
189
- excludeKeys = [],
190
- prefix = Encoding.Transaction,
191
- vsn,
192
- denomination = AE_AMOUNT_FORMATS.AETTOS
193
- } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
194
- const schemas = TX_SCHEMA[type];
195
- (_vsn = vsn) !== null && _vsn !== void 0 ? _vsn : vsn = Math.max(...Object.keys(schemas).map(a => +a));
196
- if (!isKeyOfObject(vsn, schemas)) throw new SchemaNotFoundError('serialization', Tag[type], vsn);
197
- const schema = schemas[vsn];
198
- const params = _params;
199
- params.VSN = vsn;
200
- params.tag = type;
201
- params.denomination = denomination;
202
- const filteredSchema = schema.filter(_ref7 => {
203
- let [key] = _ref7;
204
- return !excludeKeys.includes(key);
205
- });
206
-
207
- // Validation
208
- const valid = validateParams(params, schema, {
209
- excludeKeys
210
- });
211
- if (Object.keys(valid).length > 0) {
212
- throw new InvalidTxParamsError(`Transaction build error. ${JSON.stringify(valid)}`);
213
- }
214
- const binary = filteredSchema.map(_ref8 => {
215
- let [key, fieldType] = _ref8;
216
- return serializeField(params[key], fieldType, {
35
+ prefix
36
+ } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
37
+ const schema = getSchema(params.tag, params.version);
38
+ const binary = schema.map(_ref => {
39
+ let [key, field] = _ref;
40
+ return field.serialize(
41
+ // @ts-expect-error the type of `params[key]` can't be determined accurately
42
+ params[key], {
217
43
  ...params,
218
- txType: type,
44
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
45
+ unpackTx,
46
+ buildTx,
219
47
  rebuildTx: overrideParams => buildTx({
220
48
  ...params,
221
49
  ...overrideParams
222
- }, type, {
223
- excludeKeys,
224
- prefix: Encoding.Transaction,
225
- vsn,
226
- denomination
227
50
  })
228
- });
229
- }).filter(e => e !== undefined);
230
- const rlpEncoded = rlpEncode(binary);
231
- const tx = encode(rlpEncoded, prefix);
232
- return {
233
- tx,
234
- rlpEncoded,
235
- binary,
236
- txObject: unpackRawTx(binary, schema)
237
- };
238
- }
51
+ }, params);
52
+ });
239
53
 
54
+ // @ts-expect-error looks like a TypeScript edge case
55
+ return encode(rlpEncode(binary), prefix !== null && prefix !== void 0 ? prefix : Encoding.Transaction);
56
+ }
240
57
  /**
241
58
  * @category transaction builder
242
59
  */
60
+ export async function buildTxAsync(params) {
61
+ await Promise.all(getSchema(params.tag, params.version).map(async _ref2 => {
62
+ let [key, field] = _ref2;
63
+ if (field.prepare == null) return;
64
+ // @ts-expect-error the type of `params[key]` can't be determined accurately
65
+ params[key] = await field.prepare(params[key], params, params);
66
+ }));
67
+
68
+ // @ts-expect-error after preparation properties should be compatible with sync tx builder
69
+ return buildTx(params);
70
+ }
243
71
 
244
72
  /**
245
- * Unpack transaction hash
73
+ * Unpack transaction encoded as string
246
74
  * @category transaction builder
247
75
  * @param encodedTx - Transaction to unpack
248
76
  * @param txType - Expected transaction type
249
- * @returns object
250
- * @returns object.tx Object with transaction param's
251
- * @returns object.txType Transaction type
77
+ * @returns Object with transaction param's
252
78
  */
253
79
  export function unpackTx(encodedTx, txType) {
254
- const rlpEncoded = decode(encodedTx);
255
- const binary = rlpDecode(rlpEncoded);
256
- const objId = +readInt(binary[0]);
257
- if (!isKeyOfObject(objId, TX_SCHEMA)) throw new DecodeError(`Unknown transaction tag: ${objId}`);
258
- if (txType != null && txType !== objId) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[objId]} instead`);
259
- const vsn = +readInt(binary[1]);
260
- if (!isKeyOfObject(vsn, TX_SCHEMA[objId])) throw new SchemaNotFoundError('deserialization', `tag ${objId}`, vsn);
261
- const schema = TX_SCHEMA[objId][vsn];
262
- return {
263
- txType: objId,
264
- tx: unpackRawTx(binary, schema),
265
- rlpEncoded
266
- };
80
+ const binary = rlpDecode(decode(encodedTx));
81
+ const tag = +readInt(binary[0]);
82
+ const version = +readInt(binary[1]);
83
+ const schema = getSchema(tag, version);
84
+ if (txType != null && txType !== tag) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[tag]} instead`);
85
+ if (binary.length !== schema.length) {
86
+ throw new ArgumentError('Transaction RLP length', schema.length, binary.length);
87
+ }
88
+ return schema.reduce((acc, _ref3, index) => {
89
+ let [name, field] = _ref3;
90
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
91
+ const deserialized = field.deserialize(binary[index], {
92
+ unpackTx
93
+ });
94
+ return {
95
+ ...acc,
96
+ [name]: deserialized
97
+ };
98
+ }, {});
267
99
  }
268
100
 
269
101
  /**
@@ -284,13 +116,10 @@ export function buildTxHash(rawTx) {
284
116
  * @returns Contract public key
285
117
  */
286
118
  export function buildContractIdByContractTx(contractTx) {
287
- const {
288
- txType,
289
- tx
290
- } = unpackTx(contractTx);
291
- if (![Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {
292
- throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);
119
+ const params = unpackTx(contractTx);
120
+ if (Tag.ContractCreateTx !== params.tag && Tag.GaAttachTx !== params.tag) {
121
+ throw new ArgumentError('contractTx', 'a contractCreateTx or gaAttach', params.tag);
293
122
  }
294
- return buildContractId(tx.ownerId, +tx.nonce);
123
+ return buildContractId(params.ownerId, params.nonce);
295
124
  }
296
125
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["decode","encode","Encoding","AE_AMOUNT_FORMATS","hash","FIELD_TYPES","TX_SCHEMA","Tag","buildContractId","readInt","toBytes","MPTree","ArgumentError","DecodeError","InvalidTxParamsError","SchemaNotFoundError","isKeyOfObject","deserializeField","value","type","prefix","ctVersion","vm","abi","vmVersion","from","abiVersion","bool","binary","stateTree","StateTrees","string","toString","payload","Bytearray","rlpBinary","unpackTx","Transaction","rlpBinaries","map","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","sophiaCodeTypeInfo","reduce","acc","funHash","fnName","argType","outType","deserialize","serializeField","params","signatures","split","rlpEncoded","serialize","validateField","Boolean","undefined","validateParams","schema","excludeKeys","optionalFields","Object","fromEntries","filter","key","includes","message","unpackRawTx","index","fieldType","assign","buildTx","_params","vsn","denomination","AETTOS","schemas","Math","max","keys","a","VSN","tag","filteredSchema","valid","length","JSON","stringify","txType","rebuildTx","overrideParams","e","rlpEncode","tx","txObject","encodedTx","rlpDecode","objId","buildTxHash","rawTx","data","startsWith","TxHash","buildContractIdByContractTx","contractTx","ContractCreateTx","GaAttachTx","ownerId","nonce"],"sources":["../../../src/tx/builder/index.ts"],"sourcesContent":["import { decode as rlpDecode, encode as rlpEncode, NestedUint8Array } from 'rlp';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { AE_AMOUNT_FORMATS } from '../../utils/amount-formatter';\nimport { hash } from '../../utils/crypto';\nimport { Field } from './field-types';\nimport {\n FIELD_TYPES,\n RawTxObject,\n TX_SCHEMA,\n TxField,\n TxParamsCommon,\n TxSchema,\n TxTypeSchemas,\n} from './schema';\nimport { Tag } from './constants';\nimport { buildContractId, readInt } from './helpers';\nimport { toBytes } from '../../utils/bytes';\nimport MPTree, { MPTreeBinary } from '../../utils/mptree';\nimport {\n ArgumentError,\n DecodeError,\n InvalidTxParamsError,\n SchemaNotFoundError,\n} from '../../utils/errors';\nimport { isKeyOfObject } from '../../utils/other';\n\n/**\n * JavaScript-based Transaction builder\n */\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField(\n value: any,\n type: FIELD_TYPES | Field,\n prefix?: Encoding | Encoding[],\n): any {\n if (value == null) return '';\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value;\n return {\n vmVersion: readInt(Buffer.from([vm])),\n abiVersion: readInt(Buffer.from([abi])),\n };\n }\n case FIELD_TYPES.bool:\n return value[0] === 1;\n case FIELD_TYPES.binary:\n return encode(value, prefix as Encoding);\n case FIELD_TYPES.stateTree:\n return encode(value, Encoding.StateTrees);\n case FIELD_TYPES.string:\n return value.toString();\n case FIELD_TYPES.payload:\n return encode(value, Encoding.Bytearray);\n case FIELD_TYPES.rlpBinary:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return unpackTx(encode(value, Encoding.Transaction));\n case FIELD_TYPES.rlpBinaries:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.rawBinary:\n return value;\n case FIELD_TYPES.hex:\n return value.toString('hex');\n case FIELD_TYPES.offChainUpdates:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)];\n case FIELD_TYPES.mptrees:\n return value.map((t: MPTreeBinary) => new MPTree(t));\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value.reduce(\n (acc: object, [funHash, fnName, argType, outType]: [\n funHash: Buffer,\n fnName: string,\n argType: string,\n outType: string,\n ]) => ({\n ...acc,\n [fnName.toString()]: { funHash, argType, outType },\n }),\n {},\n );\n default:\n if (typeof type === 'number') return value;\n return type.deserialize(value);\n }\n}\n\nfunction serializeField(value: any, type: FIELD_TYPES | Field, params: any): any {\n switch (type) {\n case FIELD_TYPES.bool:\n return Buffer.from([(value === true) ? 1 : 0]);\n case FIELD_TYPES.binary:\n return decode(value);\n case FIELD_TYPES.stateTree:\n return decode(value);\n case FIELD_TYPES.hex:\n return Buffer.from(value, 'hex');\n case FIELD_TYPES.signatures:\n return value.map(Buffer.from);\n case FIELD_TYPES.payload:\n return typeof value === 'string' && value.split('_')[0] === 'ba'\n ? decode(value as Encoded.Bytearray)\n : toBytes(value);\n case FIELD_TYPES.string:\n return toBytes(value);\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value;\n case FIELD_TYPES.mptrees:\n return value.map((t: MPTree) => t.serialize());\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)]);\n default:\n if (typeof type === 'number') return value;\n return type.serialize(value, params);\n }\n}\n\nfunction validateField(\n value: any,\n type: FIELD_TYPES | Field,\n): string | undefined {\n // All fields are required\n if (value == null) return 'Field is required';\n\n // Validate type of value\n switch (type) {\n case FIELD_TYPES.ctVersion:\n if (!(Boolean(value.abiVersion) && Boolean(value.vmVersion))) {\n return 'Value must be an object with \"vmVersion\" and \"abiVersion\" fields';\n }\n return undefined;\n default:\n return undefined;\n }\n}\n\n/**\n * Validate transaction params\n * @category transaction builder\n * @param params - Object with tx params\n * @param schema - Transaction schema\n * @param excludeKeys - Array of keys to exclude for validation\n * @returns Object with validation errors\n */\nfunction validateParams(\n params: any,\n schema: TxField[],\n { excludeKeys = [] }: { excludeKeys: string[] },\n): object {\n const optionalFields = ['payload', 'nameFee', 'deposit', 'gasPrice', 'fee', 'gasLimit', 'amount'];\n return Object.fromEntries(\n schema\n // TODO: allow optional keys in schema\n .filter(([key]) => !excludeKeys.includes(key) && !optionalFields.includes(key))\n .map(([key, type]) => [key, validateField(params[key], type)])\n .filter(([, message]) => message),\n );\n}\n\n/**\n * Unpack binary transaction\n * @category transaction builder\n * @param binary - Array with binary transaction field's\n * @param schema - Transaction schema\n * @returns Object with transaction field's\n */\nfunction unpackRawTx<Tx extends TxSchema>(\n binary: Uint8Array | NestedUint8Array,\n schema: TxField[],\n): RawTxObject<Tx> {\n return schema\n .reduce<any>(\n (\n acc,\n [key, fieldType, prefix],\n index,\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {},\n );\n}\n\n/**\n * @category transaction builder\n */\nexport interface BuiltTx<Tx extends TxSchema, Prefix extends Encoding> {\n tx: Encoded.Generic<Prefix>;\n rlpEncoded: Uint8Array;\n binary: Uint8Array;\n txObject: RawTxObject<Tx>;\n}\n\n/**\n * Build transaction hash\n * @category transaction builder\n * @param _params - Object with tx params\n * @param type - Transaction type\n * @param options - options\n * @param options.excludeKeys - Array of keys to exclude for validation and build\n * @param options.denomination - Denomination of amounts\n * @param options.prefix - Prefix of transaction\n * @throws {@link InvalidTxParamsError}\n * @returns object\n * @returns object.tx Base64Check transaction hash with 'tx_' prefix\n * @returns object.rlpEncoded rlp encoded transaction\n * @returns object.binary binary transaction\n */\nexport function buildTx<TxType extends Tag, Prefix>(\n _params: Omit<TxTypeSchemas[TxType], 'tag' | 'VSN'> & { VSN?: number },\n type: TxType,\n {\n excludeKeys = [],\n prefix = Encoding.Transaction,\n vsn,\n denomination = AE_AMOUNT_FORMATS.AETTOS,\n }: {\n excludeKeys?: string[];\n prefix?: Encoding;\n vsn?: number;\n denomination?: AE_AMOUNT_FORMATS;\n } = {},\n): BuiltTx<TxSchema, Prefix extends Encoding ? Prefix : Encoding.Transaction> {\n const schemas = TX_SCHEMA[type];\n\n vsn ??= Math.max(...Object.keys(schemas).map((a) => +a));\n if (!isKeyOfObject(vsn, schemas)) throw new SchemaNotFoundError('serialization', Tag[type], vsn);\n\n const schema = schemas[vsn] as unknown as TxField[];\n\n const params = _params as TxParamsCommon & { onNode: Node; denomination?: AE_AMOUNT_FORMATS };\n params.VSN = vsn;\n params.tag = type;\n params.denomination = denomination;\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key));\n\n // Validation\n const valid = validateParams(params, schema, { excludeKeys });\n if (Object.keys(valid).length > 0) {\n throw new InvalidTxParamsError(`Transaction build error. ${JSON.stringify(valid)}`);\n }\n\n const binary = filteredSchema\n .map(([key, fieldType]: [keyof TxSchema, FIELD_TYPES, Encoding]) => (\n serializeField(\n params[key],\n fieldType,\n {\n ...params,\n txType: type,\n rebuildTx: (overrideParams: any) => buildTx(\n { ...params, ...overrideParams },\n type,\n {\n excludeKeys, prefix: Encoding.Transaction, vsn, denomination,\n },\n ),\n },\n )\n ))\n .filter((e) => e !== undefined);\n\n const rlpEncoded = rlpEncode(binary);\n const tx = encode(rlpEncoded, prefix);\n return {\n tx,\n rlpEncoded,\n binary,\n txObject: unpackRawTx<TxTypeSchemas[Tag]>(binary, schema),\n } as any;\n}\n\n/**\n * @category transaction builder\n */\nexport interface TxUnpacked<Tx extends TxSchema> {\n txType: Tag;\n tx: RawTxObject<Tx>;\n rlpEncoded: Uint8Array;\n}\n/**\n * Unpack transaction hash\n * @category transaction builder\n * @param encodedTx - Transaction to unpack\n * @param txType - Expected transaction type\n * @returns object\n * @returns object.tx Object with transaction param's\n * @returns object.txType Transaction type\n */\nexport function unpackTx<TxType extends Tag>(\n encodedTx: Encoded.Transaction | Encoded.Poi,\n txType?: TxType,\n): TxUnpacked<TxTypeSchemas[TxType]> {\n const rlpEncoded = decode(encodedTx);\n const binary = rlpDecode(rlpEncoded);\n const objId = +readInt(binary[0] as Buffer);\n if (!isKeyOfObject(objId, TX_SCHEMA)) throw new DecodeError(`Unknown transaction tag: ${objId}`);\n if (txType != null && txType !== objId) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[objId]} instead`);\n const vsn = +readInt(binary[1] as Buffer);\n if (!isKeyOfObject(vsn, TX_SCHEMA[objId])) throw new SchemaNotFoundError('deserialization', `tag ${objId}`, vsn);\n const schema = TX_SCHEMA[objId][vsn];\n return {\n txType: objId,\n tx: unpackRawTx<TxTypeSchemas[TxType]>(binary, schema),\n rlpEncoded,\n };\n}\n\n/**\n * Build a transaction hash\n * @category transaction builder\n * @param rawTx - base64 or rlp encoded transaction\n * @returns Transaction hash\n */\nexport function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): Encoded.TxHash {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_')\n ? decode(rawTx)\n : rawTx;\n return encode(hash(data), Encoding.TxHash);\n}\n\n/**\n * Build a contract public key by contractCreateTx or gaAttach\n * @category contract\n * @param contractTx - Transaction\n * @returns Contract public key\n */\nexport function buildContractIdByContractTx(\n contractTx: Encoded.Transaction,\n): Encoded.ContractAddress {\n const { txType, tx } = unpackTx<Tag.ContractCreateTx | Tag.GaAttachTx>(contractTx);\n if (![Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {\n throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);\n }\n return buildContractId(tx.ownerId, +tx.nonce);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["_rlp","decode","rlpDecode","encode","rlpEncode","Encoding","hash","txSchema","Tag","buildContractId","readInt","ArgumentError","DecodeError","SchemaNotFoundError","getSchema","tag","version","_version","schemas","filter","s","constValue","length","Math","max","map","schema","find","Object","entries","buildTx","params","prefix","arguments","undefined","binary","_ref","key","field","serialize","unpackTx","rebuildTx","overrideParams","Transaction","buildTxAsync","Promise","all","_ref2","prepare","encodedTx","txType","reduce","acc","_ref3","index","name","deserialized","deserialize","buildTxHash","rawTx","data","startsWith","TxHash","buildContractIdByContractTx","contractTx","ContractCreateTx","GaAttachTx","ownerId","nonce"],"sources":["../../../src/tx/builder/index.ts"],"sourcesContent":["import { decode as rlpDecode, encode as rlpEncode } from 'rlp';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { hash } from '../../utils/crypto';\nimport { BinaryData, Field } from './field-types';\nimport { txSchema } from './schema';\nimport { TxUnpacked, TxParams, TxParamsAsync } from './schema.generated';\nimport { Tag } from './constants';\nimport { buildContractId, readInt } from './helpers';\nimport { ArgumentError, DecodeError, SchemaNotFoundError } from '../../utils/errors';\n\n/**\n * JavaScript-based Transaction builder\n */\n\nexport function getSchema(tag: Tag, version?: number): Array<[string, Field]> {\n const schemas = txSchema.filter((s) => s.tag.constValue === tag);\n if (schemas.length === 0) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, 0);\n version ??= Math.max(...schemas.map((schema) => schema.version.constValue));\n const schema = schemas.find((s) => s.version.constValue === version);\n if (schema == null) throw new SchemaNotFoundError(`${Tag[tag]} (${tag})`, version);\n return Object.entries(schema);\n}\n\n/**\n * Build transaction hash\n * @category transaction builder\n * @param params - Object with tx params\n * @param options - options\n * @param options.prefix - Prefix of transaction\n * @returns object Base64Check transaction hash with 'tx_' prefix\n */\nexport function buildTx<\n E extends Encoding = Encoding.Transaction,\n>(\n params: TxParams,\n {\n prefix,\n }: {\n prefix?: E;\n } = {},\n): Encoded.Generic<E> {\n const schema = getSchema(params.tag, params.version);\n\n const binary = schema.map(([key, field]) => (\n field.serialize(\n // @ts-expect-error the type of `params[key]` can't be determined accurately\n params[key],\n {\n ...params,\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n unpackTx,\n buildTx,\n rebuildTx: (overrideParams: any) => buildTx(\n { ...params, ...overrideParams },\n ),\n },\n params,\n )\n ));\n\n // @ts-expect-error looks like a TypeScript edge case\n return encode(rlpEncode(binary), prefix ?? Encoding.Transaction);\n}\n\nexport type BuildTxOptions <TxType extends Tag, OmitFields extends string> =\n Omit<TxParamsAsync & { tag: TxType }, 'tag' | OmitFields>;\n\n/**\n * @category transaction builder\n */\nexport async function buildTxAsync(params: TxParamsAsync): Promise<Encoded.Transaction> {\n await Promise.all(\n getSchema(params.tag, params.version)\n .map(async ([key, field]) => {\n if (field.prepare == null) return;\n // @ts-expect-error the type of `params[key]` can't be determined accurately\n params[key] = await field.prepare(params[key], params, params);\n }),\n );\n\n // @ts-expect-error after preparation properties should be compatible with sync tx builder\n return buildTx(params);\n}\n\n/**\n * Unpack transaction encoded as string\n * @category transaction builder\n * @param encodedTx - Transaction to unpack\n * @param txType - Expected transaction type\n * @returns Object with transaction param's\n */\nexport function unpackTx<TxType extends Tag>(\n encodedTx: Encoded.Transaction | Encoded.Poi | Encoded.StateTrees | Encoded.CallStateTree,\n txType?: TxType,\n): TxUnpacked & { tag: TxType } {\n const binary = rlpDecode(decode(encodedTx));\n const tag = +readInt(binary[0] as Buffer);\n const version = +readInt(binary[1] as Buffer);\n const schema = getSchema(tag, version);\n if (txType != null && txType !== tag) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[tag]} instead`);\n if (binary.length !== schema.length) {\n throw new ArgumentError('Transaction RLP length', schema.length, binary.length);\n }\n return schema.reduce<any>(\n (acc, [name, field], index) => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const deserialized = field.deserialize(binary[index] as BinaryData, { unpackTx });\n return { ...acc, [name]: deserialized };\n },\n {},\n ) as any;\n}\n\n/**\n * Build a transaction hash\n * @category transaction builder\n * @param rawTx - base64 or rlp encoded transaction\n * @returns Transaction hash\n */\nexport function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): Encoded.TxHash {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_')\n ? decode(rawTx)\n : rawTx;\n return encode(hash(data), Encoding.TxHash);\n}\n\n/**\n * Build a contract public key by contractCreateTx or gaAttach\n * @category contract\n * @param contractTx - Transaction\n * @returns Contract public key\n */\nexport function buildContractIdByContractTx(\n contractTx: Encoded.Transaction,\n): Encoded.ContractAddress {\n const params = unpackTx(contractTx);\n if (Tag.ContractCreateTx !== params.tag && Tag.GaAttachTx !== params.tag) {\n throw new ArgumentError('contractTx', 'a contractCreateTx or gaAttach', params.tag);\n }\n return buildContractId(params.ownerId, params.nonce);\n}\n"],"mappings":"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"}