@aeternity/aepp-sdk 10.0.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +15 -14
  3. package/dist/aepp-sdk.browser-script.js +1 -1
  4. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +13 -40
  5. package/dist/aepp-sdk.browser-script.js.map +1 -1
  6. package/dist/aepp-sdk.browser.js +1 -1
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +1 -1
  9. package/dist/aepp-sdk.js.map +1 -1
  10. package/es/AeSdk.d.ts +37 -0
  11. package/es/AeSdk.mjs +81 -0
  12. package/es/AeSdk.mjs.map +1 -0
  13. package/es/AeSdkAepp.d.ts +69 -0
  14. package/es/AeSdkAepp.mjs +175 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +212 -0
  17. package/es/AeSdkBase.mjs +310 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +103 -0
  20. package/es/AeSdkWallet.mjs +322 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +44 -0
  23. package/es/Node.mjs +141 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +65 -0
  26. package/es/account/Base.mjs +123 -0
  27. package/es/account/Base.mjs.map +1 -0
  28. package/es/account/Memory.d.ts +25 -0
  29. package/es/account/Memory.mjs +81 -0
  30. package/es/account/Memory.mjs.map +1 -0
  31. package/es/account/Rpc.d.ts +27 -0
  32. package/es/account/Rpc.mjs +79 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +209 -0
  35. package/es/aens.mjs +332 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  51. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  52. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  54. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  55. package/es/aepp-wallet-communication/schema.d.ts +118 -0
  56. package/es/aepp-wallet-communication/schema.mjs +214 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  60. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  61. package/es/apis/compiler/compiler.d.ts +92 -0
  62. package/es/apis/compiler/compiler.mjs +576 -0
  63. package/es/apis/compiler/compiler.mjs.map +1 -0
  64. package/es/apis/compiler/index.d.ts +2 -0
  65. package/es/apis/compiler/index.mjs +3 -0
  66. package/es/apis/compiler/index.mjs.map +1 -0
  67. package/es/apis/compiler/models/index.d.ts +248 -0
  68. package/es/apis/compiler/models/index.mjs +48 -0
  69. package/es/apis/compiler/models/index.mjs.map +1 -0
  70. package/es/apis/compiler/models/mappers.d.ts +23 -0
  71. package/es/apis/compiler/models/mappers.mjs +585 -0
  72. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  73. package/es/apis/compiler/models/parameters.d.ts +13 -0
  74. package/es/apis/compiler/models/parameters.mjs +71 -0
  75. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  76. package/es/apis/node/index.d.ts +2 -0
  77. package/es/apis/node/index.mjs +3 -0
  78. package/es/apis/node/index.mjs.map +1 -0
  79. package/es/apis/node/models/index.d.ts +1061 -0
  80. package/es/apis/node/models/index.mjs +2 -0
  81. package/es/apis/node/models/index.mjs.map +1 -0
  82. package/es/apis/node/models/mappers.d.ts +95 -0
  83. package/es/apis/node/models/mappers.mjs +4164 -0
  84. package/es/apis/node/models/mappers.mjs.map +1 -0
  85. package/es/apis/node/models/parameters.d.ts +17 -0
  86. package/es/apis/node/models/parameters.mjs +165 -0
  87. package/es/apis/node/models/parameters.mjs.map +1 -0
  88. package/es/apis/node/node.d.ts +215 -0
  89. package/es/apis/node/node.mjs +1165 -0
  90. package/es/apis/node/node.mjs.map +1 -0
  91. package/es/chain.d.ts +220 -0
  92. package/es/chain.mjs +524 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/{handlers.js → handlers.mjs} +163 -130
  96. package/es/channel/handlers.mjs.map +1 -0
  97. package/es/channel/index.d.ts +634 -0
  98. package/es/channel/index.mjs +978 -0
  99. package/es/channel/index.mjs.map +1 -0
  100. package/es/channel/internal.d.ts +100 -0
  101. package/es/channel/internal.mjs +328 -0
  102. package/es/channel/internal.mjs.map +1 -0
  103. package/es/contract/Compiler.d.ts +17 -0
  104. package/es/contract/Compiler.mjs +67 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +125 -0
  107. package/es/contract/aci.mjs +496 -0
  108. package/es/contract/aci.mjs.map +1 -0
  109. package/es/contract/ga.d.ts +68 -0
  110. package/es/contract/ga.mjs +190 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +68 -0
  113. package/es/contract/methods.mjs +101 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/index.d.ts +32 -0
  116. package/es/index.mjs +49 -0
  117. package/es/index.mjs.map +1 -0
  118. package/es/oracle.d.ts +154 -0
  119. package/es/oracle.mjs +288 -0
  120. package/es/oracle.mjs.map +1 -0
  121. package/es/spend.d.ts +61 -0
  122. package/es/spend.mjs +122 -0
  123. package/es/spend.mjs.map +1 -0
  124. package/es/tx/builder/constants.d.ts +41 -0
  125. package/es/tx/builder/constants.mjs +100 -0
  126. package/es/tx/builder/constants.mjs.map +1 -0
  127. package/es/tx/builder/field-types.d.ts +62 -0
  128. package/es/tx/builder/field-types.mjs +126 -0
  129. package/es/tx/builder/field-types.mjs.map +1 -0
  130. package/es/tx/builder/helpers.d.ts +131 -0
  131. package/es/tx/builder/helpers.mjs +223 -0
  132. package/es/tx/builder/helpers.mjs.map +1 -0
  133. package/es/tx/builder/index.d.ts +75 -0
  134. package/es/tx/builder/index.mjs +424 -0
  135. package/es/tx/builder/index.mjs.map +1 -0
  136. package/es/tx/builder/schema.d.ts +350 -0
  137. package/es/tx/builder/schema.mjs +320 -0
  138. package/es/tx/builder/schema.mjs.map +1 -0
  139. package/es/tx/index.d.ts +63 -0
  140. package/es/tx/index.mjs +209 -0
  141. package/es/tx/index.mjs.map +1 -0
  142. package/es/tx/min-fee.d.ts +20 -0
  143. package/es/tx/min-fee.mjs +148 -0
  144. package/es/tx/min-fee.mjs.map +1 -0
  145. package/es/tx/validator.d.ts +19 -0
  146. package/es/tx/validator.mjs +240 -0
  147. package/es/tx/validator.mjs.map +1 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  149. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  151. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  152. package/es/typings/bip32-path/index.d.mjs +2 -0
  153. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  154. package/es/typings/blakejs/index.d.mjs +2 -0
  155. package/es/typings/blakejs/index.d.mjs.map +1 -0
  156. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  157. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  158. package/es/utils/amount-formatter.d.ts +42 -0
  159. package/es/utils/{amount-formatter.js → amount-formatter.mjs} +38 -44
  160. package/es/utils/amount-formatter.mjs.map +1 -0
  161. package/es/utils/autorest.d.ts +6 -0
  162. package/es/utils/autorest.mjs +97 -0
  163. package/es/utils/autorest.mjs.map +1 -0
  164. package/es/utils/bignumber.d.ts +13 -0
  165. package/es/utils/bignumber.mjs +23 -0
  166. package/es/utils/bignumber.mjs.map +1 -0
  167. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  168. package/es/utils/{bytes.js → bytes.mjs} +26 -22
  169. package/es/utils/bytes.mjs.map +1 -0
  170. package/es/utils/crypto.d.ts +103 -0
  171. package/es/utils/crypto.mjs +221 -0
  172. package/es/utils/crypto.mjs.map +1 -0
  173. package/es/utils/encoder.d.ts +26 -0
  174. package/es/utils/encoder.mjs +102 -0
  175. package/es/utils/encoder.mjs.map +1 -0
  176. package/es/utils/errors.d.ts +481 -0
  177. package/es/utils/errors.mjs +882 -0
  178. package/es/utils/errors.mjs.map +1 -0
  179. package/es/utils/hd-wallet.d.ts +34 -0
  180. package/es/utils/hd-wallet.mjs +122 -0
  181. package/es/utils/hd-wallet.mjs.map +1 -0
  182. package/es/utils/json-big.d.ts +5 -0
  183. package/es/utils/json-big.mjs +41 -0
  184. package/es/utils/json-big.mjs.map +1 -0
  185. package/es/utils/keystore.d.ts +51 -0
  186. package/es/utils/keystore.mjs +145 -0
  187. package/es/utils/keystore.mjs.map +1 -0
  188. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  189. package/es/utils/{mptree.js → mptree.mjs} +33 -25
  190. package/es/utils/mptree.mjs.map +1 -0
  191. package/es/utils/other.d.ts +14 -0
  192. package/es/utils/other.mjs +28 -0
  193. package/es/utils/other.mjs.map +1 -0
  194. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  195. package/es/utils/{semver-satisfies.js → semver-satisfies.mjs} +1 -1
  196. package/es/utils/semver-satisfies.mjs.map +1 -0
  197. package/es/utils/string.d.ts +24 -0
  198. package/es/utils/{string.js → string.mjs} +9 -11
  199. package/es/utils/string.mjs.map +1 -0
  200. package/package.json +67 -64
  201. package/src/AeSdk.ts +65 -0
  202. package/src/AeSdkAepp.ts +167 -0
  203. package/src/AeSdkBase.ts +320 -0
  204. package/src/AeSdkWallet.ts +332 -0
  205. package/src/Node.ts +167 -0
  206. package/src/account/Base.ts +114 -0
  207. package/src/account/Memory.ts +83 -0
  208. package/src/account/Rpc.ts +67 -0
  209. package/src/aens.ts +391 -0
  210. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  211. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  212. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  213. package/{es/utils/crypto-ts.js → src/aepp-wallet-communication/connection-proxy.ts} +16 -9
  214. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  215. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  216. package/src/aepp-wallet-communication/schema.ts +181 -0
  217. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  218. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  219. package/src/apis/compiler/compiler.ts +585 -0
  220. package/src/apis/compiler/index.ts +2 -0
  221. package/src/apis/compiler/models/index.ts +301 -0
  222. package/src/apis/compiler/models/mappers.ts +583 -0
  223. package/src/apis/compiler/models/parameters.ts +93 -0
  224. package/src/apis/node/code-model-v4.yaml +10046 -0
  225. package/src/apis/node/index.ts +2 -0
  226. package/src/apis/node/models/index.ts +1253 -0
  227. package/src/apis/node/models/mappers.ts +4278 -0
  228. package/src/apis/node/models/parameters.ts +188 -0
  229. package/src/apis/node/node.ts +1299 -0
  230. package/src/chain.ts +444 -0
  231. package/src/channel/{handlers.js → handlers.ts} +238 -143
  232. package/src/channel/index.ts +991 -0
  233. package/src/channel/internal.ts +345 -0
  234. package/src/contract/Compiler.ts +66 -0
  235. package/src/contract/aci.ts +529 -0
  236. package/src/contract/ga.ts +178 -0
  237. package/src/contract/methods.ts +118 -0
  238. package/src/index.ts +51 -0
  239. package/src/oracle.ts +342 -0
  240. package/src/spend.ts +152 -0
  241. package/src/tx/builder/constants.ts +96 -0
  242. package/src/tx/builder/field-types.ts +111 -0
  243. package/src/tx/builder/helpers.ts +253 -0
  244. package/src/tx/builder/index.ts +394 -0
  245. package/src/tx/builder/schema.ts +771 -0
  246. package/src/tx/index.ts +199 -0
  247. package/src/tx/min-fee.ts +136 -0
  248. package/src/tx/validator.ts +226 -0
  249. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  250. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  251. package/src/typings/bip32-path/index.d.ts +33 -0
  252. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  253. package/src/utils/amount-formatter.ts +29 -41
  254. package/src/utils/autorest.ts +90 -0
  255. package/src/utils/bignumber.ts +9 -19
  256. package/src/utils/bytes.ts +15 -16
  257. package/src/utils/crypto.ts +217 -0
  258. package/src/utils/encoder.ts +98 -0
  259. package/src/utils/errors.ts +817 -0
  260. package/src/utils/hd-wallet.ts +134 -0
  261. package/src/utils/json-big.ts +26 -0
  262. package/src/utils/keystore.ts +179 -0
  263. package/src/utils/mptree.ts +26 -20
  264. package/src/utils/other.ts +28 -43
  265. package/src/utils/string.ts +8 -10
  266. package/CHANGELOG.md +0 -1603
  267. package/es/account/base.js +0 -169
  268. package/es/account/base.js.map +0 -1
  269. package/es/account/memory.js +0 -84
  270. package/es/account/memory.js.map +0 -1
  271. package/es/account/multiple.js +0 -178
  272. package/es/account/multiple.js.map +0 -1
  273. package/es/ae/aens.js +0 -408
  274. package/es/ae/aens.js.map +0 -1
  275. package/es/ae/aepp.js +0 -45
  276. package/es/ae/aepp.js.map +0 -1
  277. package/es/ae/contract.js +0 -312
  278. package/es/ae/contract.js.map +0 -1
  279. package/es/ae/index.js +0 -206
  280. package/es/ae/index.js.map +0 -1
  281. package/es/ae/oracle.js +0 -322
  282. package/es/ae/oracle.js.map +0 -1
  283. package/es/ae/universal.js +0 -45
  284. package/es/ae/universal.js.map +0 -1
  285. package/es/ae/wallet.js +0 -50
  286. package/es/ae/wallet.js.map +0 -1
  287. package/es/amount-formatter.d.ts +0 -58
  288. package/es/bignumber.d.ts +0 -24
  289. package/es/chain/index.js +0 -256
  290. package/es/chain/index.js.map +0 -1
  291. package/es/chain/node.js +0 -394
  292. package/es/chain/node.js.map +0 -1
  293. package/es/channel/handlers.js.map +0 -1
  294. package/es/channel/index.js +0 -980
  295. package/es/channel/index.js.map +0 -1
  296. package/es/channel/internal.js +0 -266
  297. package/es/channel/internal.js.map +0 -1
  298. package/es/contract/aci/helpers.js +0 -298
  299. package/es/contract/aci/helpers.js.map +0 -1
  300. package/es/contract/aci/index.js +0 -361
  301. package/es/contract/aci/index.js.map +0 -1
  302. package/es/contract/aci/transformation.js +0 -66
  303. package/es/contract/aci/transformation.js.map +0 -1
  304. package/es/contract/compiler.js +0 -244
  305. package/es/contract/compiler.js.map +0 -1
  306. package/es/contract/ga/helpers.js +0 -22
  307. package/es/contract/ga/helpers.js.map +0 -1
  308. package/es/contract/ga/index.js +0 -170
  309. package/es/contract/ga/index.js.map +0 -1
  310. package/es/contract/index.js +0 -162
  311. package/es/contract/index.js.map +0 -1
  312. package/es/crypto-ts.d.ts +0 -9
  313. package/es/index.js +0 -57
  314. package/es/index.js.map +0 -1
  315. package/es/node-pool/index.js +0 -187
  316. package/es/node-pool/index.js.map +0 -1
  317. package/es/node.js +0 -132
  318. package/es/node.js.map +0 -1
  319. package/es/other.d.ts +0 -31
  320. package/es/string.d.ts +0 -26
  321. package/es/tx/builder/helpers.js +0 -305
  322. package/es/tx/builder/helpers.js.map +0 -1
  323. package/es/tx/builder/index.js +0 -595
  324. package/es/tx/builder/index.js.map +0 -1
  325. package/es/tx/builder/schema.js +0 -814
  326. package/es/tx/builder/schema.js.map +0 -1
  327. package/es/tx/index.js +0 -300
  328. package/es/tx/index.js.map +0 -1
  329. package/es/tx/tx-object.js +0 -276
  330. package/es/tx/tx-object.js.map +0 -1
  331. package/es/tx/tx.js +0 -937
  332. package/es/tx/tx.js.map +0 -1
  333. package/es/tx/validator.js +0 -208
  334. package/es/tx/validator.js.map +0 -1
  335. package/es/typings/blakejs/index.d.js +0 -2
  336. package/es/typings/blakejs/index.d.js.map +0 -1
  337. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -131
  338. package/es/utils/aepp-wallet-communication/connection/browser-runtime.js.map +0 -1
  339. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -184
  340. package/es/utils/aepp-wallet-communication/connection/browser-window-message.js.map +0 -1
  341. package/es/utils/aepp-wallet-communication/connection/index.js +0 -84
  342. package/es/utils/aepp-wallet-communication/connection/index.js.map +0 -1
  343. package/es/utils/aepp-wallet-communication/content-script-bridge.js +0 -97
  344. package/es/utils/aepp-wallet-communication/content-script-bridge.js.map +0 -1
  345. package/es/utils/aepp-wallet-communication/helpers.js +0 -103
  346. package/es/utils/aepp-wallet-communication/helpers.js.map +0 -1
  347. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -329
  348. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.js.map +0 -1
  349. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -270
  350. package/es/utils/aepp-wallet-communication/rpc/rpc-client.js.map +0 -1
  351. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -533
  352. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.js.map +0 -1
  353. package/es/utils/aepp-wallet-communication/schema.js +0 -107
  354. package/es/utils/aepp-wallet-communication/schema.js.map +0 -1
  355. package/es/utils/aepp-wallet-communication/wallet-detector.js +0 -109
  356. package/es/utils/aepp-wallet-communication/wallet-detector.js.map +0 -1
  357. package/es/utils/amount-formatter.js.map +0 -1
  358. package/es/utils/async-init.js +0 -67
  359. package/es/utils/async-init.js.map +0 -1
  360. package/es/utils/bignumber.js +0 -28
  361. package/es/utils/bignumber.js.map +0 -1
  362. package/es/utils/bytes.js.map +0 -1
  363. package/es/utils/crypto-ts.js.map +0 -1
  364. package/es/utils/crypto.js +0 -304
  365. package/es/utils/crypto.js.map +0 -1
  366. package/es/utils/hd-wallet.js +0 -112
  367. package/es/utils/hd-wallet.js.map +0 -1
  368. package/es/utils/json-big.js +0 -45
  369. package/es/utils/json-big.js.map +0 -1
  370. package/es/utils/keystore.js +0 -228
  371. package/es/utils/keystore.js.map +0 -1
  372. package/es/utils/mptree.js.map +0 -1
  373. package/es/utils/other.js +0 -43
  374. package/es/utils/other.js.map +0 -1
  375. package/es/utils/semver-satisfies.js.map +0 -1
  376. package/es/utils/string.js.map +0 -1
  377. package/es/utils/swagger.js +0 -132
  378. package/es/utils/swagger.js.map +0 -1
  379. package/src/account/base.js +0 -153
  380. package/src/account/memory.js +0 -78
  381. package/src/account/multiple.js +0 -154
  382. package/src/ae/aens.js +0 -366
  383. package/src/ae/aepp.js +0 -45
  384. package/src/ae/contract.js +0 -285
  385. package/src/ae/index.js +0 -167
  386. package/src/ae/oracle.js +0 -296
  387. package/src/ae/universal.js +0 -47
  388. package/src/ae/wallet.js +0 -50
  389. package/src/chain/index.js +0 -250
  390. package/src/chain/node.js +0 -293
  391. package/src/channel/index.js +0 -898
  392. package/src/channel/internal.js +0 -231
  393. package/src/contract/aci/index.js +0 -317
  394. package/src/contract/aci/transformation.js +0 -72
  395. package/src/contract/compiler.js +0 -195
  396. package/src/contract/ga/helpers.js +0 -17
  397. package/src/contract/ga/index.js +0 -147
  398. package/src/contract/index.js +0 -163
  399. package/src/index.js +0 -90
  400. package/src/node-pool/index.js +0 -171
  401. package/src/node.js +0 -118
  402. package/src/tx/builder/helpers.js +0 -325
  403. package/src/tx/builder/index.js +0 -460
  404. package/src/tx/builder/schema.js +0 -1211
  405. package/src/tx/index.js +0 -301
  406. package/src/tx/tx-object.js +0 -186
  407. package/src/tx/tx.js +0 -622
  408. package/src/tx/validator.js +0 -161
  409. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -114
  410. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -161
  411. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  412. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -85
  413. package/src/utils/aepp-wallet-communication/helpers.js +0 -70
  414. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -268
  415. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -223
  416. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -390
  417. package/src/utils/aepp-wallet-communication/schema.js +0 -108
  418. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -91
  419. package/src/utils/async-init.js +0 -41
  420. package/src/utils/crypto.js +0 -312
  421. package/src/utils/hd-wallet.js +0 -115
  422. package/src/utils/json-big.js +0 -26
  423. package/src/utils/keystore.js +0 -223
  424. package/src/utils/swagger.js +0 -133
@@ -0,0 +1,424 @@
1
+ import _buffer from "buffer";
2
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
3
+ const {
4
+ Buffer: _Buffer
5
+ } = _buffer;
6
+ import BigNumber from 'bignumber.js';
7
+ import _rlp from 'rlp';
8
+ const {
9
+ decode: rlpDecode,
10
+ encode: rlpEncode
11
+ } = _rlp;
12
+ import { AE_AMOUNT_FORMATS, formatAmount } from "../../utils/amount-formatter.mjs";
13
+ import { hash } from "../../utils/crypto.mjs";
14
+ import { FIELD_TYPES, TX_SCHEMA, TX_TYPE } from "./schema.mjs";
15
+ import { readInt, readId, readPointers, writeId, writeInt, buildPointers, encode, decode, buildContractId } from "./helpers.mjs";
16
+ import { toBytes } from "../../utils/bytes.mjs";
17
+ import MPTree from "../../utils/mptree.mjs";
18
+ import { ArgumentError, InvalidTxParamsError, SchemaNotFoundError, DecodeError } from "../../utils/errors.mjs";
19
+ import { isKeyOfObject } from "../../utils/other.mjs";
20
+ /**
21
+ * JavaScript-based Transaction builder
22
+ */
23
+ // SERIALIZE AND DESERIALIZE PART
24
+
25
+ function deserializeField(value, type, prefix) {
26
+ if (value == null) return '';
27
+
28
+ switch (type) {
29
+ case FIELD_TYPES.ctVersion:
30
+ {
31
+ const [vm,, abi] = value;
32
+ return {
33
+ vmVersion: readInt(_Buffer.from([vm])),
34
+ abiVersion: readInt(_Buffer.from([abi]))
35
+ };
36
+ }
37
+
38
+ case FIELD_TYPES.amount:
39
+ case FIELD_TYPES.int:
40
+ case FIELD_TYPES.abiVersion:
41
+ case FIELD_TYPES.ttlType:
42
+ return readInt(value);
43
+
44
+ case FIELD_TYPES.shortInt:
45
+ return +readInt(value);
46
+
47
+ case FIELD_TYPES.id:
48
+ return readId(value);
49
+
50
+ case FIELD_TYPES.ids:
51
+ return value.map(readId);
52
+
53
+ case FIELD_TYPES.bool:
54
+ return value[0] === 1;
55
+
56
+ case FIELD_TYPES.binary:
57
+ return encode(value, prefix);
58
+
59
+ case FIELD_TYPES.stateTree:
60
+ return encode(value, 'ss');
61
+
62
+ case FIELD_TYPES.string:
63
+ return value.toString();
64
+
65
+ case FIELD_TYPES.payload:
66
+ return encode(value, 'ba');
67
+
68
+ case FIELD_TYPES.pointers:
69
+ return readPointers(value);
70
+
71
+ case FIELD_TYPES.rlpBinary:
72
+ return unpackTx(encode(value, 'tx'));
73
+
74
+ case FIELD_TYPES.rlpBinaries:
75
+ return value.map(v => unpackTx(encode(v, 'tx')));
76
+
77
+ case FIELD_TYPES.rawBinary:
78
+ return value;
79
+
80
+ case FIELD_TYPES.hex:
81
+ return value.toString('hex');
82
+
83
+ case FIELD_TYPES.offChainUpdates:
84
+ return value.map(v => unpackTx(encode(v, 'tx')));
85
+
86
+ case FIELD_TYPES.callStack:
87
+ // TODO: fix this
88
+ return [readInt(value)];
89
+
90
+ case FIELD_TYPES.mptrees:
91
+ return value.map(t => new MPTree(t));
92
+
93
+ case FIELD_TYPES.callReturnType:
94
+ switch (readInt(value)) {
95
+ case '0':
96
+ return 'ok';
97
+
98
+ case '1':
99
+ return 'error';
100
+
101
+ case '2':
102
+ return 'revert';
103
+
104
+ default:
105
+ return value;
106
+ }
107
+
108
+ case FIELD_TYPES.sophiaCodeTypeInfo:
109
+ return value.reduce((acc, _ref) => {
110
+ let [funHash, fnName, argType, outType] = _ref;
111
+ return { ...acc,
112
+ [fnName.toString()]: {
113
+ funHash,
114
+ argType,
115
+ outType
116
+ }
117
+ };
118
+ }, {});
119
+
120
+ default:
121
+ if (type instanceof Object && 'deserialize' in type) return type.deserialize(value);
122
+ return value;
123
+ }
124
+ }
125
+
126
+ function serializeField(value, type, params) {
127
+ var _value$rlpEncoded;
128
+
129
+ switch (type) {
130
+ case FIELD_TYPES.amount:
131
+ case FIELD_TYPES.int:
132
+ case FIELD_TYPES.shortInt:
133
+ case FIELD_TYPES.abiVersion:
134
+ case FIELD_TYPES.ttlType:
135
+ return writeInt(value);
136
+
137
+ case FIELD_TYPES.id:
138
+ return writeId(value);
139
+
140
+ case FIELD_TYPES.ids:
141
+ return value.map(writeId);
142
+
143
+ case FIELD_TYPES.bool:
144
+ return _Buffer.from([value === true ? 1 : 0]);
145
+
146
+ case FIELD_TYPES.binary:
147
+ return decode(value);
148
+
149
+ case FIELD_TYPES.stateTree:
150
+ return decode(value);
151
+
152
+ case FIELD_TYPES.hex:
153
+ return _Buffer.from(value, 'hex');
154
+
155
+ case FIELD_TYPES.signatures:
156
+ return value.map(_Buffer.from);
157
+
158
+ case FIELD_TYPES.payload:
159
+ return typeof value === 'string' && value.split('_')[0] === 'ba' ? decode(value) : toBytes(value);
160
+
161
+ case FIELD_TYPES.string:
162
+ return toBytes(value);
163
+
164
+ case FIELD_TYPES.pointers:
165
+ return buildPointers(value);
166
+
167
+ case FIELD_TYPES.rlpBinary:
168
+ return (_value$rlpEncoded = value.rlpEncoded) !== null && _value$rlpEncoded !== void 0 ? _value$rlpEncoded : value;
169
+
170
+ case FIELD_TYPES.mptrees:
171
+ return value.map(t => t.serialize(''));
172
+
173
+ case FIELD_TYPES.ctVersion:
174
+ return _Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)]);
175
+
176
+ case FIELD_TYPES.callReturnType:
177
+ switch (value) {
178
+ case 'ok':
179
+ return writeInt(0);
180
+
181
+ case 'error':
182
+ return writeInt(1);
183
+
184
+ case 'revert':
185
+ return writeInt(2);
186
+
187
+ default:
188
+ return value;
189
+ }
190
+
191
+ default:
192
+ if (type instanceof Object && 'serialize' in type) return type.serialize(value, params);
193
+ return value;
194
+ }
195
+ }
196
+
197
+ function validateField(value, type, prefix) {
198
+ // All fields are required
199
+ if (value == null) return 'Field is required'; // Validate type of value
200
+
201
+ switch (type) {
202
+ case FIELD_TYPES.amount:
203
+ case FIELD_TYPES.int:
204
+ case FIELD_TYPES.shortInt:
205
+ {
206
+ if (isNaN(value) && !BigNumber.isBigNumber(value)) {
207
+ return `${String(value)} is not of type Number or BigNumber`;
208
+ }
209
+
210
+ if (new BigNumber(value).lt(0)) return `${String(value)} must be >= 0`;
211
+ return;
212
+ }
213
+
214
+ case FIELD_TYPES.id:
215
+ {
216
+ const prefixes = Array.isArray(prefix) ? prefix : [prefix];
217
+
218
+ if (!_includesInstanceProperty(prefixes).call(prefixes, value.split('_')[0])) {
219
+ if (prefix == null) {
220
+ return `'${String(value)}' prefix doesn't exist'`;
221
+ }
222
+
223
+ return `'${String(value)}' prefix doesn't match expected prefix '${prefix.toString()}'`;
224
+ }
225
+
226
+ return;
227
+ }
228
+
229
+ case FIELD_TYPES.ctVersion:
230
+ if (!(Boolean(value.abiVersion) && Boolean(value.vmVersion))) {
231
+ return 'Value must be an object with "vmVersion" and "abiVersion" fields';
232
+ }
233
+
234
+ return;
235
+
236
+ case FIELD_TYPES.pointers:
237
+ if (!Array.isArray(value)) return 'Value must be of type Array';
238
+
239
+ if (value.some(p => !(Boolean(p.key) && Boolean(p.id)))) {
240
+ return 'Value must contains only object\'s like \'{key: "account_pubkey", id: "ak_lkamsflkalsdalksdlasdlasdlamd"}\'';
241
+ }
242
+
243
+ if (value.length > 32) {
244
+ return `Expected 32 pointers or less, got ${value.length} instead`;
245
+ }
246
+
247
+ }
248
+ }
249
+
250
+ function transformParams(params, schema) {
251
+ let {
252
+ denomination
253
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
254
+ params = schema.filter(_ref2 => {
255
+ let [, t] = _ref2;
256
+ return t === FIELD_TYPES.amount;
257
+ }).reduce((params, _ref3) => {
258
+ let [key] = _ref3;
259
+ return { ...params,
260
+ [key]: formatAmount(params[key], {
261
+ denomination
262
+ })
263
+ };
264
+ }, params);
265
+ return params;
266
+ }
267
+ /**
268
+ * Validate transaction params
269
+ * @param params - Object with tx params
270
+ * @param schema - Transaction schema
271
+ * @param excludeKeys - Array of keys to exclude for validation
272
+ * @returns Object with validation errors
273
+ */
274
+
275
+
276
+ export function validateParams(params, schema, _ref4) {
277
+ let {
278
+ excludeKeys = []
279
+ } = _ref4;
280
+ return Object.fromEntries(schema // TODO: allow optional keys in schema
281
+ .filter(_ref5 => {
282
+ var _context;
283
+
284
+ let [key] = _ref5;
285
+ return !_includesInstanceProperty(excludeKeys).call(excludeKeys, key) && !_includesInstanceProperty(_context = ['payload', 'nameFee', 'deposit', 'gasPrice']).call(_context, key);
286
+ }).map(_ref6 => {
287
+ let [key, type, prefix] = _ref6;
288
+ return [key, validateField(params[key], type, prefix)];
289
+ }).filter(_ref7 => {
290
+ let [, message] = _ref7;
291
+ return message;
292
+ }));
293
+ }
294
+ /**
295
+ * Unpack binary transaction
296
+ * @param binary - Array with binary transaction field's
297
+ * @param schema - Transaction schema
298
+ * @returns Object with transaction field's
299
+ */
300
+
301
+ export function unpackRawTx(binary, schema) {
302
+ return schema.reduce((acc, _ref8, index) => {
303
+ let [key, fieldType, prefix] = _ref8;
304
+ return Object.assign(acc, {
305
+ [key]: deserializeField(binary[index], fieldType, prefix)
306
+ });
307
+ }, {});
308
+ }
309
+
310
+ /**
311
+ * Build transaction hash
312
+ * @param _params - Object with tx params
313
+ * @param type - Transaction type
314
+ * @param options - options
315
+ * @param options.excludeKeys - Array of keys to exclude for validation and build
316
+ * @param options.denomination - Denomination of amounts
317
+ * @param options.prefix - Prefix of transaction
318
+ * @throws {@link InvalidTxParamsError}
319
+ * @returns object
320
+ * @returns object.tx Base64Check transaction hash with 'tx_' prefix
321
+ * @returns object.rlpEncoded rlp encoded transaction
322
+ * @returns object.binary binary transaction
323
+ */
324
+ export function buildTx(_params, type) {
325
+ var _vsn;
326
+
327
+ let {
328
+ excludeKeys = [],
329
+ prefix = 'tx',
330
+ vsn,
331
+ denomination = AE_AMOUNT_FORMATS.AETTOS
332
+ } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
333
+ const schemas = TX_SCHEMA[type];
334
+ (_vsn = vsn) !== null && _vsn !== void 0 ? _vsn : vsn = Math.max(...Object.keys(schemas).map(a => +a));
335
+ if (!isKeyOfObject(vsn, schemas)) throw new SchemaNotFoundError('serialization', TX_TYPE[type], vsn);
336
+ const schema = schemas[vsn];
337
+ let params = _params;
338
+ params.VSN = vsn;
339
+ params.tag = type;
340
+ const filteredSchema = schema.filter(_ref9 => {
341
+ let [key] = _ref9;
342
+ return !_includesInstanceProperty(excludeKeys).call(excludeKeys, key);
343
+ }); // Transform `amount` type fields to `aettos`
344
+
345
+ params = transformParams(params, filteredSchema, {
346
+ denomination
347
+ }); // Validation
348
+
349
+ const valid = validateParams(params, schema, {
350
+ excludeKeys
351
+ });
352
+
353
+ if (Object.keys(valid).length > 0) {
354
+ throw new InvalidTxParamsError('Transaction build error. ' + JSON.stringify(valid));
355
+ }
356
+
357
+ const binary = filteredSchema.map(_ref10 => {
358
+ let [key, fieldType] = _ref10;
359
+ return serializeField(params[key], fieldType, params);
360
+ }).filter(e => e !== undefined);
361
+ const rlpEncoded = rlpEncode(binary);
362
+ const tx = encode(rlpEncoded, prefix);
363
+ return {
364
+ tx,
365
+ rlpEncoded,
366
+ binary,
367
+ txObject: unpackRawTx(binary, schema)
368
+ };
369
+ }
370
+
371
+ /**
372
+ * Unpack transaction hash
373
+ * @param encodedTx - Transaction to unpack
374
+ * @param txType - Expected transaction type
375
+ * @returns object
376
+ * @returns object.tx Object with transaction param's
377
+ * @returns object.txType Transaction type
378
+ */
379
+ export function unpackTx(encodedTx, txType) {
380
+ const rlpEncoded = decode(encodedTx);
381
+ const binary = rlpDecode(rlpEncoded);
382
+ const objId = +readInt(binary[0]);
383
+ if (!isKeyOfObject(objId, TX_SCHEMA)) throw new DecodeError(`Unknown transaction tag: ${objId}`);
384
+ if (txType != null && txType !== objId) throw new DecodeError(`Expected transaction to have ${TX_TYPE[txType]} tag, got ${TX_TYPE[objId]} instead`);
385
+ const vsn = +readInt(binary[1]);
386
+ if (!isKeyOfObject(vsn, TX_SCHEMA[objId])) throw new SchemaNotFoundError('deserialization', `tag ${objId}`, vsn);
387
+ const schema = TX_SCHEMA[objId][vsn];
388
+ return {
389
+ txType: objId,
390
+ tx: unpackRawTx(binary, schema),
391
+ rlpEncoded
392
+ };
393
+ }
394
+ /**
395
+ * Build a transaction hash
396
+ * @param rawTx - base64 or rlp encoded transaction
397
+ * @returns Transaction hash
398
+ */
399
+
400
+ export function buildTxHash(rawTx) {
401
+ const data = typeof rawTx === 'string' && rawTx.startsWith('tx_') ? decode(rawTx) : rawTx;
402
+ return encode(hash(data), 'th');
403
+ }
404
+ /**
405
+ * Build a contract public key by contractCreateTx or gaAttach
406
+ * @param contractTx - Transaction
407
+ * @returns Contract public key
408
+ */
409
+
410
+ export function buildContractIdByContractTx(contractTx) {
411
+ var _context2;
412
+
413
+ const {
414
+ txType,
415
+ tx
416
+ } = unpackTx(contractTx);
417
+
418
+ if (!_includesInstanceProperty(_context2 = [TX_TYPE.contractCreate, TX_TYPE.gaAttach]).call(_context2, txType)) {
419
+ throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);
420
+ }
421
+
422
+ return buildContractId(tx.ownerId, +tx.nonce);
423
+ }
424
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["BigNumber","AE_AMOUNT_FORMATS","formatAmount","hash","FIELD_TYPES","TX_SCHEMA","TX_TYPE","readInt","readId","readPointers","writeId","writeInt","buildPointers","encode","decode","buildContractId","toBytes","MPTree","ArgumentError","InvalidTxParamsError","SchemaNotFoundError","DecodeError","isKeyOfObject","deserializeField","value","type","prefix","ctVersion","vm","abi","vmVersion","from","abiVersion","amount","int","ttlType","shortInt","id","ids","map","bool","binary","stateTree","string","toString","payload","pointers","rlpBinary","unpackTx","rlpBinaries","v","rawBinary","hex","offChainUpdates","callStack","mptrees","t","callReturnType","sophiaCodeTypeInfo","reduce","acc","funHash","fnName","argType","outType","Object","deserialize","serializeField","params","signatures","split","rlpEncoded","serialize","validateField","isNaN","isBigNumber","String","lt","prefixes","Array","isArray","Boolean","some","p","key","length","transformParams","schema","denomination","filter","validateParams","excludeKeys","fromEntries","message","unpackRawTx","index","fieldType","assign","buildTx","_params","vsn","AETTOS","schemas","Math","max","keys","a","VSN","tag","filteredSchema","valid","JSON","stringify","e","undefined","rlpEncode","tx","txObject","encodedTx","txType","rlpDecode","objId","buildTxHash","rawTx","data","startsWith","buildContractIdByContractTx","contractTx","contractCreate","gaAttach","ownerId","nonce"],"sources":["../../../src/tx/builder/index.ts"],"sourcesContent":["import { EncodedData, EncodingType } from './../../utils/encoder'\nimport BigNumber from 'bignumber.js'\nimport { decode as rlpDecode, encode as rlpEncode, NestedUint8Array } from 'rlp'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../utils/amount-formatter'\nimport { hash } from '../../utils/crypto'\nimport { Field } from './field-types'\n\nimport {\n FIELD_TYPES,\n RawTxObject,\n TxField,\n TxTypeSchemas,\n TxParamsCommon,\n TX_SCHEMA,\n TX_TYPE,\n TxSchema\n} from './schema'\nimport {\n readInt,\n readId,\n readPointers,\n writeId,\n writeInt,\n buildPointers,\n encode,\n decode,\n Pointer,\n buildContractId\n} from './helpers'\nimport { toBytes } from '../../utils/bytes'\nimport MPTree, { MPTreeBinary } from '../../utils/mptree'\nimport { ArgumentError, InvalidTxParamsError, SchemaNotFoundError, DecodeError } 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 | typeof Field,\n prefix?: EncodingType | EncodingType[]\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.amount:\n case FIELD_TYPES.int:\n case FIELD_TYPES.abiVersion:\n case FIELD_TYPES.ttlType:\n return readInt(value)\n case FIELD_TYPES.shortInt:\n return +readInt(value)\n case FIELD_TYPES.id:\n return readId(value)\n case FIELD_TYPES.ids:\n return value.map(readId)\n case FIELD_TYPES.bool:\n return value[0] === 1\n case FIELD_TYPES.binary:\n return encode(value, prefix as EncodingType)\n case FIELD_TYPES.stateTree:\n return encode(value, 'ss')\n case FIELD_TYPES.string:\n return value.toString()\n case FIELD_TYPES.payload:\n return encode(value, 'ba')\n case FIELD_TYPES.pointers:\n return readPointers(value)\n case FIELD_TYPES.rlpBinary:\n return unpackTx(encode(value, 'tx'))\n case FIELD_TYPES.rlpBinaries:\n return value.map((v: Buffer) => unpackTx(encode(v, 'tx')))\n case FIELD_TYPES.rawBinary:\n return value\n case FIELD_TYPES.hex:\n return value.toString('hex')\n case FIELD_TYPES.offChainUpdates:\n return value.map((v: Buffer) => unpackTx(encode(v, 'tx')))\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.callReturnType:\n switch (readInt(value)) {\n case '0':\n return 'ok'\n case '1':\n return 'error'\n case '2':\n return 'revert'\n default:\n return value\n }\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 (type instanceof Object && 'deserialize' in type) return type.deserialize(value)\n return value\n }\n}\n\nfunction serializeField (\n value: any, type: FIELD_TYPES | typeof Field, params: any\n): any {\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\n case FIELD_TYPES.shortInt:\n case FIELD_TYPES.abiVersion:\n case FIELD_TYPES.ttlType:\n return writeInt(value)\n case FIELD_TYPES.id:\n return writeId(value)\n case FIELD_TYPES.ids:\n return value.map(writeId)\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 EncodedData<'ba'>)\n : toBytes(value)\n case FIELD_TYPES.string:\n return toBytes(value)\n case FIELD_TYPES.pointers:\n return buildPointers(value)\n case FIELD_TYPES.rlpBinary:\n return value.rlpEncoded ?? value\n case FIELD_TYPES.mptrees:\n return value.map((t: typeof Field) => t.serialize(''))\n case FIELD_TYPES.ctVersion:\n return Buffer.from([...toBytes(value.vmVersion), 0, ...toBytes(value.abiVersion)])\n case FIELD_TYPES.callReturnType:\n switch (value) {\n case 'ok': return writeInt(0)\n case 'error': return writeInt(1)\n case 'revert': return writeInt(2)\n default: return value\n }\n default:\n if (type instanceof Object && 'serialize' in type) return type.serialize(value, params)\n return value\n }\n}\n\nfunction validateField (\n value: any,\n type: FIELD_TYPES | typeof Field,\n prefix?: EncodingType | EncodingType[]\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.amount:\n case FIELD_TYPES.int:\n case FIELD_TYPES.shortInt: {\n if (isNaN(value) && !BigNumber.isBigNumber(value)) {\n return `${String(value)} is not of type Number or BigNumber`\n }\n if (new BigNumber(value).lt(0)) return `${String(value)} must be >= 0`\n return\n }\n case FIELD_TYPES.id: {\n const prefixes = Array.isArray(prefix) ? prefix : [prefix]\n if (!prefixes.includes(value.split('_')[0])) {\n if (prefix == null) { return `'${String(value)}' prefix doesn't exist'` }\n return `'${String(value)}' prefix doesn't match expected prefix '${prefix.toString()}'`\n }\n return\n }\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\n case FIELD_TYPES.pointers:\n if (!Array.isArray(value)) return 'Value must be of type Array'\n if (value.some((p: Pointer) => !(Boolean(p.key) && Boolean(p.id)))) {\n return 'Value must contains only object\\'s like \\'{key: \"account_pubkey\", id: \"ak_lkamsflkalsdalksdlasdlasdlamd\"}\\''\n }\n if (value.length > 32) {\n return `Expected 32 pointers or less, got ${value.length} instead`\n }\n }\n}\n\nfunction transformParams (\n params: TxParamsCommon,\n schema: TxField[],\n { denomination }: {denomination?: AE_AMOUNT_FORMATS} = {}\n): any {\n params = schema\n .filter(([, t]) => t === FIELD_TYPES.amount)\n .reduce(\n (params: TxParamsCommon, [key]) => ({\n ...params,\n [key]: formatAmount(params[key as keyof TxParamsCommon], { denomination })\n }),\n params\n )\n return params\n}\n\n/**\n * Validate transaction params\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 */\nexport function validateParams (\n params: any, schema: TxField[], { excludeKeys = [] }: { excludeKeys: string[] }\n): object {\n return Object.fromEntries(\n schema\n // TODO: allow optional keys in schema\n .filter(([key]) => !excludeKeys.includes(key) &&\n !['payload', 'nameFee', 'deposit', 'gasPrice'].includes(key))\n .map(([key, type, prefix]) => [key, validateField(params[key], type, prefix)])\n .filter(([, message]) => message)\n )\n}\n\n/**\n * Unpack binary transaction\n * @param binary - Array with binary transaction field's\n * @param schema - Transaction schema\n * @returns Object with transaction field's\n */\nexport function 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\nexport interface BuiltTx<Tx extends TxSchema, Prefix extends EncodingType> {\n tx: EncodedData<Prefix>\n rlpEncoded: Uint8Array\n binary: Uint8Array\n txObject: RawTxObject<Tx>\n}\n\n/**\n * Build transaction hash\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 TX_TYPE, Prefix> (\n _params: Omit<TxTypeSchemas[TxType], 'tag' | 'VSN'> & { VSN?: number },\n type: TxType,\n { excludeKeys = [], prefix = 'tx', vsn, denomination = AE_AMOUNT_FORMATS.AETTOS }: {\n excludeKeys?: string[]\n prefix?: EncodingType\n vsn?: number\n denomination?: AE_AMOUNT_FORMATS\n } = {}\n): BuiltTx<TxSchema, Prefix extends EncodingType ? Prefix : 'tx'> {\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', TX_TYPE[type], vsn)\n\n const schema = schemas[vsn] as unknown as TxField[]\n\n let params = _params as TxParamsCommon & { onNode: Node }\n params.VSN = vsn\n params.tag = type\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key))\n\n // Transform `amount` type fields to `aettos`\n params = transformParams(params, filteredSchema, { denomination })\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, EncodingType]) => serializeField(\n params[key], fieldType, params))\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[TX_TYPE]>(binary, schema)\n } as any\n}\n\nexport interface TxUnpacked<Tx extends TxSchema> {\n txType: TX_TYPE\n tx: RawTxObject<Tx>\n rlpEncoded: Uint8Array\n}\n/**\n * Unpack transaction hash\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 TX_TYPE> (\n encodedTx: EncodedData<'tx' | 'pi'>, 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 ${TX_TYPE[txType]} tag, got ${TX_TYPE[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 * @param rawTx - base64 or rlp encoded transaction\n * @returns Transaction hash\n */\nexport function buildTxHash (rawTx: EncodedData<'tx'> | Uint8Array): EncodedData<'th'> {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_')\n ? decode(rawTx)\n : rawTx\n return encode(hash(data), 'th')\n}\n\n/**\n * Build a contract public key by contractCreateTx or gaAttach\n * @param contractTx - Transaction\n * @returns Contract public key\n */\nexport function buildContractIdByContractTx (contractTx: EncodedData<'tx'>): EncodedData<'ct'> {\n const { txType, tx } = unpackTx<TX_TYPE.contractCreate | TX_TYPE.gaAttach>(contractTx)\n if (![TX_TYPE.contractCreate, TX_TYPE.gaAttach].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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"}