@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,44 @@
1
+ import { Tag, ConsensusProtocolVersion, AbiVersion } from '../constants';
2
+ import { getProtocolDetails } from './ct-version';
3
+ import Node from '../../../Node';
4
+
5
+ export default {
6
+ _getProtocolDetails(c: ConsensusProtocolVersion, tag: Tag): AbiVersion {
7
+ const kind = Tag.ContractCallTx === tag || Tag.GaMetaTx === tag
8
+ ? 'contract-call' : 'oracle-call';
9
+ return getProtocolDetails(c, kind).abiVersion;
10
+ },
11
+
12
+ serialize(
13
+ value: AbiVersion | undefined,
14
+ { tag }: { tag: Tag },
15
+ { consensusProtocolVersion = ConsensusProtocolVersion.Iris }:
16
+ { consensusProtocolVersion?: ConsensusProtocolVersion },
17
+ ): Buffer {
18
+ const result = value ?? this._getProtocolDetails(consensusProtocolVersion, tag);
19
+
20
+ return Buffer.from([result]);
21
+ },
22
+
23
+ async prepare(
24
+ value: AbiVersion | undefined,
25
+ { tag }: { tag: Tag },
26
+ // TODO: { consensusProtocolVersion: ConsensusProtocolVersion } | { onNode: Node } | {}
27
+ options: { consensusProtocolVersion?: ConsensusProtocolVersion; onNode?: Node },
28
+ ): Promise<AbiVersion | undefined> {
29
+ if (value != null) return value;
30
+ if (options.consensusProtocolVersion != null) return undefined;
31
+ if (Object.keys(ConsensusProtocolVersion).length === 2) return undefined;
32
+ if (options.onNode != null) {
33
+ return this._getProtocolDetails(
34
+ (await options.onNode.getNodeInfo()).consensusProtocolVersion,
35
+ tag,
36
+ );
37
+ }
38
+ return undefined;
39
+ },
40
+
41
+ deserialize(buffer: Buffer): AbiVersion {
42
+ return buffer[0];
43
+ },
44
+ };
@@ -1,6 +1,8 @@
1
- import { PrefixNotFoundError, TagNotFoundError } from '../../../utils/errors';
1
+ import { ArgumentError, PrefixNotFoundError, TagNotFoundError } from '../../../utils/errors';
2
2
  import { toBytes } from '../../../utils/bytes';
3
- import { decode, encode, Encoding } from '../../../utils/encoder';
3
+ import {
4
+ decode, encode, Encoded, Encoding,
5
+ } from '../../../utils/encoder';
4
6
  import { isItemOfArray } from '../../../utils/other';
5
7
 
6
8
  /**
@@ -9,7 +11,7 @@ import { isItemOfArray } from '../../../utils/other';
9
11
  * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_id.erl#L97-L102}
10
12
  * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L163-L168}
11
13
  */
12
- const idTagToEncoding = [
14
+ export const idTagToEncoding = [
13
15
  Encoding.AccountAddress,
14
16
  Encoding.Name,
15
17
  Encoding.Commitment,
@@ -20,10 +22,12 @@ const idTagToEncoding = [
20
22
 
21
23
  export type AddressEncodings = typeof idTagToEncoding[number];
22
24
 
23
- export default function genAddressField<Encoding extends AddressEncodings>(): {
24
- serialize: (value: `${Encoding}_${string}`) => Buffer;
25
- deserialize: (value: Buffer) => `${Encoding}_${string}`;
26
- } {
25
+ export default function genAddressField<Encoding extends AddressEncodings>(
26
+ ...encodings: Encoding[]
27
+ ): {
28
+ serialize: (value: Encoded.Generic<Encoding>) => Buffer;
29
+ deserialize: (value: Buffer) => Encoded.Generic<Encoding>;
30
+ } {
27
31
  return {
28
32
  /**
29
33
  * Utility function to create and _id type
@@ -31,9 +35,12 @@ export default function genAddressField<Encoding extends AddressEncodings>(): {
31
35
  * @returns Buffer Buffer with ID tag and decoded HASh
32
36
  */
33
37
  serialize(hashId) {
34
- const encoding = hashId.slice(0, 2);
35
- if (!isItemOfArray(encoding, idTagToEncoding)) throw new TagNotFoundError(encoding);
36
- const idTag = idTagToEncoding.indexOf(encoding) + 1;
38
+ const enc = hashId.slice(0, 2);
39
+ if (!isItemOfArray(enc, idTagToEncoding)) throw new TagNotFoundError(enc);
40
+ if (!isItemOfArray(enc, encodings)) {
41
+ throw new ArgumentError('Address encoding', encodings.join(', '), enc);
42
+ }
43
+ const idTag = idTagToEncoding.indexOf(enc) + 1;
37
44
  return Buffer.from([...toBytes(idTag), ...decode(hashId)]);
38
45
  },
39
46
 
@@ -44,9 +51,12 @@ export default function genAddressField<Encoding extends AddressEncodings>(): {
44
51
  */
45
52
  deserialize(buf) {
46
53
  const idTag = Buffer.from(buf).readUIntBE(0, 1);
47
- const encoding = idTagToEncoding[idTag - 1];
48
- if (encoding == null) throw new PrefixNotFoundError(idTag);
49
- return encode(buf.subarray(1), encoding) as `${Encoding}_${string}`;
54
+ const enc = idTagToEncoding[idTag - 1];
55
+ if (enc == null) throw new PrefixNotFoundError(idTag);
56
+ if (!isItemOfArray(enc, encodings)) {
57
+ throw new ArgumentError('Address encoding', encodings.join(', '), enc);
58
+ }
59
+ return encode(buf.subarray(1), enc) as Encoded.Generic<Encoding>;
50
60
  },
51
61
  };
52
62
  }
@@ -0,0 +1,19 @@
1
+ export default function genArrayField<Input, Output, Binary>(
2
+ itemHandler: {
3
+ serialize: (value: Input, params: unknown) => Binary;
4
+ deserialize: (value: Binary, params: unknown) => Output;
5
+ },
6
+ ): {
7
+ serialize: (value: readonly Input[], params: unknown) => Binary[];
8
+ deserialize: (value: Binary[], params: unknown) => Output[];
9
+ } {
10
+ return {
11
+ serialize(items, params) {
12
+ return items.map((item) => itemHandler.serialize(item, params));
13
+ },
14
+
15
+ deserialize(buffers, params) {
16
+ return buffers.map((buffer) => itemHandler.deserialize(buffer, params));
17
+ },
18
+ };
19
+ }
@@ -0,0 +1,9 @@
1
+ export default {
2
+ serialize(value: boolean): Buffer {
3
+ return Buffer.from([value ? 1 : 0]);
4
+ },
5
+
6
+ deserialize(buffer: Buffer): boolean {
7
+ return buffer[0] === 1;
8
+ },
9
+ };
@@ -1,8 +1,7 @@
1
- import uInt, { Int } from './u-int';
1
+ import uInt from './u-int';
2
+ import { Int } from '../constants';
2
3
  import { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';
3
4
 
4
- export interface Options { denomination?: AE_AMOUNT_FORMATS }
5
-
6
5
  export default {
7
6
  ...uInt,
8
7
 
@@ -10,11 +9,15 @@ export default {
10
9
  return value ?? '0';
11
10
  },
12
11
 
13
- serialize(value: Int | undefined, { denomination, ...options }: Options): Buffer {
12
+ serialize(
13
+ value: Int | undefined,
14
+ params: {},
15
+ { denomination = AE_AMOUNT_FORMATS.AETTOS }: { denomination?: AE_AMOUNT_FORMATS },
16
+ ): Buffer {
14
17
  return uInt.serialize(
15
18
  this.serializeAettos(
16
19
  value != null ? formatAmount(value, { denomination }) : value,
17
- options,
20
+ params,
18
21
  ),
19
22
  );
20
23
  },
@@ -0,0 +1,83 @@
1
+ import { ConsensusProtocolVersion, VmVersion, AbiVersion } from '../constants';
2
+ import Node from '../../../Node';
3
+
4
+ /*
5
+ * First abi/vm by default
6
+ * @see {@link https://github.com/aeternity/protocol/blob/71cf111/contracts/contract_vms.md#virtual-machines-on-the-æternity-blockchain}
7
+ */
8
+ export const ProtocolToVmAbi = {
9
+ [ConsensusProtocolVersion.Iris]: {
10
+ 'contract-create': {
11
+ vmVersion: [VmVersion.Fate2], abiVersion: [AbiVersion.Fate],
12
+ },
13
+ 'contract-call': {
14
+ vmVersion: [], abiVersion: [AbiVersion.Fate, AbiVersion.Sophia],
15
+ },
16
+ 'oracle-call': {
17
+ vmVersion: [], abiVersion: [AbiVersion.NoAbi, AbiVersion.Fate],
18
+ },
19
+ },
20
+ [ConsensusProtocolVersion.Ceres]: {
21
+ 'contract-create': {
22
+ vmVersion: [VmVersion.Fate2], abiVersion: [AbiVersion.Fate],
23
+ },
24
+ 'contract-call': {
25
+ vmVersion: [], abiVersion: [AbiVersion.Fate],
26
+ },
27
+ 'oracle-call': {
28
+ vmVersion: [], abiVersion: [AbiVersion.NoAbi, AbiVersion.Fate],
29
+ },
30
+ },
31
+ } as const;
32
+
33
+ export interface CtVersion {
34
+ vmVersion: VmVersion;
35
+ abiVersion: AbiVersion;
36
+ }
37
+
38
+ export function getProtocolDetails(
39
+ protocolVersion: ConsensusProtocolVersion,
40
+ type: 'contract-create' | 'contract-call' | 'oracle-call',
41
+ ): CtVersion {
42
+ const protocol = ProtocolToVmAbi[protocolVersion][type];
43
+ return {
44
+ vmVersion: protocol.vmVersion[0] ?? VmVersion.Fate2,
45
+ abiVersion: protocol.abiVersion[0],
46
+ };
47
+ }
48
+
49
+ export default {
50
+ serialize(
51
+ value: CtVersion | undefined,
52
+ params: {},
53
+ { consensusProtocolVersion = ConsensusProtocolVersion.Iris }:
54
+ { consensusProtocolVersion?: ConsensusProtocolVersion },
55
+ ): Buffer {
56
+ value ??= getProtocolDetails(consensusProtocolVersion, 'contract-create');
57
+
58
+ return Buffer.from([value.vmVersion, 0, value.abiVersion]);
59
+ },
60
+
61
+ async prepare(
62
+ value: CtVersion | undefined,
63
+ params: {},
64
+ // TODO: { consensusProtocolVersion: ConsensusProtocolVersion } | { onNode: Node } | {}
65
+ options: { consensusProtocolVersion?: ConsensusProtocolVersion; onNode?: Node },
66
+ ): Promise<CtVersion | undefined> {
67
+ if (value != null) return value;
68
+ if (options.consensusProtocolVersion != null) return undefined;
69
+ if (Object.keys(ConsensusProtocolVersion).length === 2) return undefined;
70
+ if (options.onNode != null) {
71
+ return getProtocolDetails(
72
+ (await options.onNode.getNodeInfo()).consensusProtocolVersion,
73
+ 'contract-create',
74
+ );
75
+ }
76
+ return undefined;
77
+ },
78
+
79
+ deserialize(buffer: Buffer): CtVersion {
80
+ const [vm, , abi] = buffer;
81
+ return { vmVersion: +vm, abiVersion: +abi };
82
+ },
83
+ };
@@ -1,5 +1,5 @@
1
1
  import coinAmount from './coin-amount';
2
- import { Int } from './u-int';
2
+ import { Int } from '../constants';
3
3
  import { IllegalArgumentError } from '../../../utils/errors';
4
4
 
5
5
  export default {
@@ -8,14 +8,16 @@ export default {
8
8
  /**
9
9
  * @param value - Deposit value in string format. Should be equal to '0'.
10
10
  * @param options - Options
11
+ * @param parameters - Parameters
11
12
  * @returns Deposit value Buffer.
12
13
  */
13
14
  serialize(
14
15
  value: Int | undefined,
15
16
  options: Parameters<typeof coinAmount['serialize']>[1],
17
+ parameters: Parameters<typeof coinAmount['serialize']>[2],
16
18
  ): Buffer {
17
19
  value ??= 0;
18
20
  if (+value !== 0) throw new IllegalArgumentError(`Contract deposit is not refundable, so it should be equal 0, got ${value.toString()} instead`);
19
- return coinAmount.serialize(value, options);
21
+ return coinAmount.serialize(value, options, parameters);
20
22
  },
21
23
  };
@@ -0,0 +1,27 @@
1
+ import {
2
+ decode, encode, Encoded, Encoding,
3
+ } from '../../../utils/encoder';
4
+ import { ArgumentError } from '../../../utils/errors';
5
+
6
+ export default function genEncodedField<E extends Encoding, Optional extends boolean = false>(
7
+ encoding: E,
8
+ optional?: Optional,
9
+ ): {
10
+ serialize: Optional extends true
11
+ ? (value?: Encoded.Generic<E>) => Buffer : (value: Encoded.Generic<E>) => Buffer;
12
+ deserialize: (value: Buffer) => Encoded.Generic<E>;
13
+ } {
14
+ return {
15
+ serialize(encodedData?: Encoded.Generic<E>) {
16
+ if (encodedData == null) {
17
+ if (optional === true) return Buffer.from([]);
18
+ throw new ArgumentError('Encoded data', 'provided', encodedData);
19
+ }
20
+ return decode(encodedData);
21
+ },
22
+
23
+ deserialize(buffer) {
24
+ return encode(buffer, encoding);
25
+ },
26
+ };
27
+ }
@@ -0,0 +1,36 @@
1
+ import {
2
+ decode, encode, Encoded, Encoding,
3
+ } from '../../../utils/encoder';
4
+ import { Tag } from '../constants';
5
+ import { ArgumentError } from '../../../utils/errors';
6
+ import type { unpackTx as unpackTxType, buildTx as buildTxType } from '../index';
7
+
8
+ export default function genEntryField<T extends Tag = Tag>(tag?: T): {
9
+ serialize: (
10
+ // TODO: replace with `TxParams & { tag: T }`,
11
+ // but fix TS2502 value is referenced directly or indirectly in its own type annotation
12
+ value: any,
13
+ options: { buildTx: typeof buildTxType },
14
+ ) => Buffer;
15
+ deserialize: (
16
+ value: Buffer, options: { unpackTx: typeof unpackTxType },
17
+ // TODO: replace with `TxUnpacked & { tag: T }`,
18
+ // TS2577 Return type annotation circularly references itself
19
+ ) => any;
20
+ } {
21
+ return {
22
+ serialize(txParams, { buildTx }) {
23
+ if (ArrayBuffer.isView(txParams)) return Buffer.from(txParams as any);
24
+ if (typeof txParams === 'string' && txParams.startsWith('tx_')) {
25
+ return decode(txParams as Encoded.Transaction);
26
+ }
27
+ return decode(buildTx({ ...txParams, ...tag != null && { tag } }));
28
+ },
29
+
30
+ deserialize(buf, { unpackTx }) {
31
+ const tx = unpackTx(encode(buf, Encoding.Transaction));
32
+ if (tag != null && tx.tag !== tag) throw new ArgumentError('Tag', tag, tx.tag);
33
+ return tx;
34
+ },
35
+ };
36
+ }
@@ -1,13 +1,20 @@
1
1
  import { ArgumentError } from '../../../utils/errors';
2
+ import { isItemOfArray } from '../../../utils/other';
2
3
 
3
- export default function genEnumerationField<Enum extends number>(): {
4
- serialize: (value: Enum) => Buffer;
5
- deserialize: (value: Buffer) => Enum;
4
+ export default function genEnumerationField<
5
+ Enum extends { [key: string]: number | string },
6
+ >(enm: Enum): {
7
+ serialize: (value: Enum[keyof Enum]) => Buffer;
8
+ deserialize: (value: Buffer) => Enum[keyof Enum];
6
9
  } {
10
+ const values = Object.values(enm).filter((v) => typeof v === 'number');
7
11
  return {
8
12
  serialize(value) {
9
13
  if (typeof value !== 'number') throw new ArgumentError('value', 'to be a number', value);
10
14
  if (value > 0xff) throw new ArgumentError('value', 'to be less than 256', value);
15
+ if (!isItemOfArray(value, values)) {
16
+ throw new ArgumentError('value', 'to be a value of Enum', value);
17
+ }
11
18
  return Buffer.from([value]);
12
19
  },
13
20
 
@@ -15,7 +22,11 @@ export default function genEnumerationField<Enum extends number>(): {
15
22
  if (buffer.length !== 1) {
16
23
  throw new ArgumentError('buffer', 'to have single element', buffer.length);
17
24
  }
18
- return buffer[0] as Enum;
25
+ const value = buffer[0];
26
+ if (!isItemOfArray(value, values)) {
27
+ throw new ArgumentError('value', 'to be a value of Enum', value);
28
+ }
29
+ return value as Enum[keyof Enum];
19
30
  },
20
31
  };
21
32
  }
@@ -3,6 +3,8 @@ import { IllegalArgumentError } from '../../../utils/errors';
3
3
  import { MIN_GAS_PRICE, Tag } from '../constants';
4
4
  import coinAmount from './coin-amount';
5
5
  import { isKeyOfObject } from '../../../utils/other';
6
+ import { decode, Encoded } from '../../../utils/encoder';
7
+ import type { unpackTx as unpackTxType, buildTx as buildTxType } from '../index';
6
8
 
7
9
  const BASE_GAS = 15000;
8
10
  const GAS_PER_BYTE = 20;
@@ -75,7 +77,7 @@ const TX_FEE_OTHER_GAS = (
75
77
  }
76
78
  };
77
79
 
78
- function getOracleRelativeTtl(params: any, txType: Tag): number {
80
+ function getOracleRelativeTtl(params: any): number {
79
81
  const ttlKeys = {
80
82
  [Tag.OracleRegisterTx]: 'oracleTtlValue',
81
83
  [Tag.OracleExtendTx]: 'oracleTtlValue',
@@ -83,22 +85,30 @@ function getOracleRelativeTtl(params: any, txType: Tag): number {
83
85
  [Tag.OracleResponseTx]: 'responseTtlValue',
84
86
  } as const;
85
87
 
86
- if (!isKeyOfObject(txType, ttlKeys)) return 1;
87
- return params[ttlKeys[txType]];
88
+ const { tag } = params;
89
+ if (!isKeyOfObject(tag, ttlKeys)) return 1;
90
+ return params[ttlKeys[tag]];
88
91
  }
89
92
 
90
93
  /**
91
94
  * Calculate fee based on tx type and params
92
95
  */
93
- export function buildFee(txType: Tag, buildTx: any): BigNumber {
94
- const { rlpEncoded: { length }, txObject } = buildTx;
96
+ export function buildFee(
97
+ builtTx: Encoded.Transaction,
98
+ unpackTx: typeof unpackTxType,
99
+ buildTx: typeof buildTxType,
100
+ ): BigNumber {
101
+ const { length } = decode(builtTx);
102
+ const txObject = unpackTx(builtTx);
103
+
104
+ let innerTxSize = 0;
105
+ if (txObject.tag === Tag.GaMetaTx || txObject.tag === Tag.PayingForTx) {
106
+ innerTxSize = decode(buildTx(txObject.tx.encodedTx)).length;
107
+ }
95
108
 
96
- return TX_FEE_BASE_GAS(txType)
97
- .plus(TX_FEE_OTHER_GAS(txType, length, {
98
- relativeTtl: getOracleRelativeTtl(txObject, txType),
99
- innerTxSize: [Tag.GaMetaTx, Tag.PayingForTx].includes(txType)
100
- ? txObject.tx.tx.encodedTx.rlpEncoded.length
101
- : 0,
109
+ return TX_FEE_BASE_GAS(txObject.tag)
110
+ .plus(TX_FEE_OTHER_GAS(txObject.tag, length, {
111
+ relativeTtl: getOracleRelativeTtl(txObject), innerTxSize,
102
112
  }))
103
113
  .times(MIN_GAS_PRICE);
104
114
  }
@@ -106,18 +116,18 @@ export function buildFee(txType: Tag, buildTx: any): BigNumber {
106
116
  /**
107
117
  * Calculate min fee
108
118
  * @category transaction builder
109
- * @param txType - Transaction type
110
119
  * @param rebuildTx - Callback to get built transaction with specific fee
111
120
  */
112
121
  function calculateMinFee(
113
- txType: Tag,
114
- rebuildTx: (value: BigNumber) => any,
122
+ rebuildTx: (value: BigNumber) => Encoded.Transaction,
123
+ unpackTx: typeof unpackTxType,
124
+ buildTx: typeof buildTxType,
115
125
  ): BigNumber {
116
126
  let fee = new BigNumber(0);
117
127
  let previousFee;
118
128
  do {
119
129
  previousFee = fee;
120
- fee = buildFee(txType, rebuildTx(fee));
130
+ fee = buildFee(rebuildTx(fee), unpackTx, buildTx);
121
131
  } while (!fee.eq(previousFee));
122
132
  return fee;
123
133
  }
@@ -127,13 +137,25 @@ export default {
127
137
 
128
138
  serializeAettos(
129
139
  _value: string | undefined,
130
- { txType, rebuildTx, _computingMinFee }:
131
- { txType: Tag; rebuildTx: (params: any) => any; _computingMinFee?: string },
140
+ {
141
+ rebuildTx, unpackTx, buildTx, _computingMinFee, _pickBiggerFee,
142
+ }: {
143
+ rebuildTx: (params: any) => Encoded.Transaction;
144
+ unpackTx: typeof unpackTxType;
145
+ buildTx: typeof buildTxType;
146
+ _computingMinFee?: BigNumber;
147
+ _pickBiggerFee?: boolean;
148
+ },
132
149
  ): string {
133
- if (_computingMinFee != null) return _computingMinFee;
134
- const minFee = calculateMinFee(txType, (fee) => rebuildTx({ _computingMinFee: fee }));
150
+ if (_computingMinFee != null) return _computingMinFee.toFixed();
151
+ const minFee = calculateMinFee(
152
+ (fee) => rebuildTx({ _computingMinFee: fee }),
153
+ unpackTx,
154
+ buildTx,
155
+ );
135
156
  const value = new BigNumber(_value ?? minFee);
136
157
  if (minFee.gt(value)) {
158
+ if (_pickBiggerFee === true) return minFee.toFixed();
137
159
  throw new IllegalArgumentError(`Fee ${value.toString()} must be bigger then ${minFee}`);
138
160
  }
139
161
  return value.toFixed();
@@ -2,13 +2,15 @@ import { IllegalArgumentError } from '../../../utils/errors';
2
2
  import { MIN_GAS_PRICE, Tag, MAX_AUTH_FUN_GAS } from '../constants';
3
3
  import shortUInt from './short-u-int';
4
4
  import { buildFee } from './fee';
5
+ import type { unpackTx as unpackTxType, buildTx as buildTxType } from '../index';
5
6
 
6
7
  function calculateGasLimitMax(
7
- txType: Tag,
8
8
  gasMax: number,
9
9
  rebuildTx: (value: number) => any,
10
+ unpackTx: typeof unpackTxType,
11
+ buildTx: typeof buildTxType,
10
12
  ): number {
11
- return gasMax - +buildFee(txType, rebuildTx(gasMax)).dividedBy(MIN_GAS_PRICE);
13
+ return gasMax - +buildFee(rebuildTx(gasMax), unpackTx, buildTx).dividedBy(MIN_GAS_PRICE);
12
14
  }
13
15
 
14
16
  export default {
@@ -17,20 +19,23 @@ export default {
17
19
  serialize(
18
20
  _value: number | undefined,
19
21
  {
20
- txType, rebuildTx, gasMax = 6e6, _computingGasLimit,
22
+ tag, rebuildTx, unpackTx, buildTx, _computingGasLimit,
21
23
  }: {
22
- txType: Tag;
24
+ tag: Tag;
23
25
  rebuildTx: (params: any) => any;
24
- gasMax: number;
26
+ unpackTx: typeof unpackTxType;
27
+ buildTx: typeof buildTxType;
25
28
  _computingGasLimit?: number;
26
29
  },
30
+ { gasMax = 6e6 }: { gasMax?: number },
27
31
  ): Buffer {
28
32
  if (_computingGasLimit != null) return shortUInt.serialize(_computingGasLimit);
29
33
 
30
- const gasLimitMax = txType === Tag.GaMetaTx ? MAX_AUTH_FUN_GAS : calculateGasLimitMax(
31
- txType,
34
+ const gasLimitMax = tag === Tag.GaMetaTx ? MAX_AUTH_FUN_GAS : calculateGasLimitMax(
32
35
  gasMax,
33
- (gasLimit) => rebuildTx({ _computingGasLimit: gasLimit }),
36
+ (gasLimit) => rebuildTx({ _computingGasLimit: gasLimit, _pickBiggerFee: true }),
37
+ unpackTx,
38
+ buildTx,
34
39
  );
35
40
  const value = _value ?? gasLimitMax;
36
41
  if (value > gasLimitMax) {
@@ -1,55 +1,98 @@
1
- import _field from './field';
2
- import _uInt from './u-int';
3
- import _shortUInt from './short-u-int';
4
- import _coinAmount from './coin-amount';
1
+ import _abiVersion from './abi-version';
5
2
  import _address from './address';
6
- import _addresses from './addresses';
3
+ import _array from './array';
4
+ import _boolean from './boolean';
5
+ import _coinAmount from './coin-amount';
6
+ import _ctVersion from './ct-version';
7
7
  import _deposit from './deposit';
8
+ import _encoded from './encoded';
9
+ import _entry from './entry';
8
10
  import _enumeration from './enumeration';
9
11
  import _fee from './fee';
12
+ import _field from './field';
10
13
  import _gasLimit from './gas-limit';
11
14
  import _gasPrice from './gas-price';
15
+ import _map from './map';
16
+ import _mptree from './mptree';
12
17
  import _name from './name';
13
18
  import _nameFee from './name-fee';
14
19
  import _nameId from './name-id';
20
+ import _nonce from './nonce';
15
21
  import _pointers from './pointers';
22
+ import _raw from './raw';
23
+ import _shortUInt from './short-u-int';
24
+ import _shortUIntConst from './short-u-int-const';
25
+ import _string from './string';
26
+ import _ttl from './ttl';
27
+ import _uInt from './u-int';
28
+ import _wrapped from './wrapped';
16
29
 
17
30
  // TODO: remove after fixing https://github.com/Gerrit0/typedoc-plugin-missing-exports/issues/15
18
- const field = _field;
19
- const uInt = _uInt;
20
- const shortUInt = _shortUInt;
21
- const coinAmount = _coinAmount;
31
+ const abiVersion = _abiVersion;
22
32
  const address = _address;
23
- const addresses = _addresses;
33
+ const array = _array;
34
+ const boolean = _boolean;
35
+ const coinAmount = _coinAmount;
36
+ const ctVersion = _ctVersion;
24
37
  const deposit = _deposit;
38
+ const encoded = _encoded;
39
+ const entry = _entry;
25
40
  const enumeration = _enumeration;
26
41
  const fee = _fee;
42
+ const field = _field;
27
43
  const gasLimit = _gasLimit;
28
44
  const gasPrice = _gasPrice;
45
+ const map = _map;
46
+ const mptree = _mptree;
29
47
  const name = _name;
30
48
  const nameFee = _nameFee;
31
49
  const nameId = _nameId;
50
+ const nonce = _nonce;
32
51
  const pointers = _pointers;
52
+ const raw = _raw;
53
+ const shortUInt = _shortUInt;
54
+ const shortUIntConst = _shortUIntConst;
55
+ const string = _string;
56
+ const ttl = _ttl;
57
+ const uInt = _uInt;
58
+ const wrapped = _wrapped;
33
59
 
60
+ export type BinaryData = Buffer | Buffer[] | Buffer[][]
61
+ | Array<[Buffer, Array<[Buffer, Buffer[]]>]>;
34
62
  export interface Field {
35
- serialize: (value: any, options: any) => Buffer | Buffer[] | Buffer[][];
36
- deserialize: (value: Buffer | Buffer[] | Buffer[][]) => any;
63
+ serialize: (value: any, options: any, parameters: any) => BinaryData;
64
+ prepare?: (value: any, options: any, parameters: any) => Promise<any>;
65
+ deserialize: (value: BinaryData, options: any) => any;
66
+ recursiveType?: boolean;
37
67
  }
38
68
 
39
69
  export {
40
- field,
41
- uInt,
42
- shortUInt,
43
- coinAmount,
70
+ abiVersion,
44
71
  address,
45
- addresses,
72
+ array,
73
+ boolean,
74
+ coinAmount,
75
+ ctVersion,
46
76
  deposit,
77
+ encoded,
78
+ entry,
47
79
  enumeration,
48
80
  fee,
81
+ field,
49
82
  gasLimit,
50
83
  gasPrice,
84
+ map,
85
+ mptree,
51
86
  name,
52
87
  nameFee,
53
88
  nameId,
89
+ nonce,
54
90
  pointers,
91
+ raw,
92
+ shortUInt,
93
+ shortUIntConst,
94
+ string,
95
+ ttl,
96
+ uInt,
97
+ wrapped,
55
98
  };