@aeternity/aepp-sdk 11.0.1 → 12.1.1

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 (444) hide show
  1. package/LICENSE +1 -1
  2. package/dist/aepp-sdk.browser-script.js +1 -1
  3. package/dist/aepp-sdk.browser-script.js.LICENSE.txt +0 -22
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +2 -1
  6. package/dist/aepp-sdk.browser.js.LICENSE.txt +1 -0
  7. package/dist/aepp-sdk.browser.js.map +1 -1
  8. package/dist/aepp-sdk.js +20765 -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 +70 -0
  14. package/es/AeSdkAepp.mjs +176 -0
  15. package/es/AeSdkAepp.mjs.map +1 -0
  16. package/es/AeSdkBase.d.ts +213 -0
  17. package/es/AeSdkBase.mjs +314 -0
  18. package/es/AeSdkBase.mjs.map +1 -0
  19. package/es/AeSdkWallet.d.ts +104 -0
  20. package/es/AeSdkWallet.mjs +326 -0
  21. package/es/AeSdkWallet.mjs.map +1 -0
  22. package/es/Node.d.ts +41 -0
  23. package/es/Node.mjs +147 -0
  24. package/es/Node.mjs.map +1 -0
  25. package/es/account/Base.d.ts +68 -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 +26 -0
  29. package/es/account/Memory.mjs +103 -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 +80 -0
  33. package/es/account/Rpc.mjs.map +1 -0
  34. package/es/aens.d.ts +222 -0
  35. package/es/aens.mjs +338 -0
  36. package/es/aens.mjs.map +1 -0
  37. package/es/aepp-wallet-communication/connection/Browser.d.ts +33 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs +73 -0
  39. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +18 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +58 -0
  42. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +36 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +146 -0
  45. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  46. package/es/aepp-wallet-communication/connection-proxy.d.ts +11 -0
  47. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +16 -11
  48. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +34 -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 +105 -46
  56. package/es/aepp-wallet-communication/schema.mjs +251 -0
  57. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  58. package/es/aepp-wallet-communication/wallet-detector.d.ts +25 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs +62 -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 +1065 -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 +4166 -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 +248 -0
  92. package/es/chain.mjs +560 -0
  93. package/es/chain.mjs.map +1 -0
  94. package/es/channel/handlers.d.ts +34 -0
  95. package/es/channel/handlers.mjs +164 -131
  96. package/es/channel/handlers.mjs.map +1 -1
  97. package/es/channel/index.d.ts +625 -0
  98. package/es/channel/index.mjs +897 -902
  99. package/es/channel/index.mjs.map +1 -1
  100. package/es/channel/internal.d.ts +101 -0
  101. package/es/channel/internal.mjs +136 -85
  102. package/es/channel/internal.mjs.map +1 -1
  103. package/es/contract/Compiler.d.ts +18 -0
  104. package/es/contract/Compiler.mjs +68 -0
  105. package/es/contract/Compiler.mjs.map +1 -0
  106. package/es/contract/aci.d.ts +127 -0
  107. package/es/contract/aci.mjs +225 -193
  108. package/es/contract/aci.mjs.map +1 -1
  109. package/es/contract/ga.d.ts +69 -0
  110. package/es/contract/ga.mjs +195 -0
  111. package/es/contract/ga.mjs.map +1 -0
  112. package/es/contract/methods.d.ts +71 -0
  113. package/es/contract/methods.mjs +104 -0
  114. package/es/contract/methods.mjs.map +1 -0
  115. package/es/deprecated/index.d.ts +143 -0
  116. package/es/deprecated/index.mjs +162 -0
  117. package/es/deprecated/index.mjs.map +1 -0
  118. package/es/deprecated/methods.d.ts +18 -0
  119. package/es/deprecated/methods.mjs +26 -0
  120. package/es/deprecated/methods.mjs.map +1 -0
  121. package/es/index.d.ts +35 -0
  122. package/es/index.mjs +35 -40
  123. package/es/index.mjs.map +1 -1
  124. package/es/oracle.d.ts +161 -0
  125. package/es/oracle.mjs +306 -0
  126. package/es/oracle.mjs.map +1 -0
  127. package/es/spend.d.ts +62 -0
  128. package/es/spend.mjs +111 -0
  129. package/es/spend.mjs.map +1 -0
  130. package/es/tx/builder/address.d.ts +25 -0
  131. package/es/tx/builder/address.mjs +45 -0
  132. package/es/tx/builder/address.mjs.map +1 -0
  133. package/es/tx/builder/constants.d.ts +70 -0
  134. package/es/tx/builder/constants.mjs +61 -47
  135. package/es/tx/builder/constants.mjs.map +1 -1
  136. package/es/tx/builder/field-types/coin-amount.d.ts +13 -0
  137. package/es/tx/builder/field-types/coin-amount.mjs +26 -0
  138. package/es/tx/builder/field-types/coin-amount.mjs.map +1 -0
  139. package/es/tx/builder/field-types/deposit.d.ts +15 -0
  140. package/es/tx/builder/field-types/deposit.mjs +19 -0
  141. package/es/tx/builder/field-types/deposit.mjs.map +1 -0
  142. package/es/tx/builder/field-types/fee.d.ts +25 -0
  143. package/es/tx/builder/field-types/fee.mjs +150 -0
  144. package/es/tx/builder/field-types/fee.mjs.map +1 -0
  145. package/es/tx/builder/field-types/field.d.ts +6 -0
  146. package/es/tx/builder/field-types/field.mjs +15 -0
  147. package/es/tx/builder/field-types/field.mjs.map +1 -0
  148. package/es/tx/builder/field-types/gas-limit.d.ts +12 -0
  149. package/es/tx/builder/field-types/gas-limit.mjs +33 -0
  150. package/es/tx/builder/field-types/gas-limit.mjs.map +1 -0
  151. package/es/tx/builder/field-types/gas-price.d.ts +8 -0
  152. package/es/tx/builder/field-types/gas-price.mjs +18 -0
  153. package/es/tx/builder/field-types/gas-price.mjs.map +1 -0
  154. package/es/tx/builder/field-types/index.d.ts +70 -0
  155. package/es/tx/builder/field-types/index.mjs +25 -0
  156. package/es/tx/builder/field-types/index.mjs.map +1 -0
  157. package/es/tx/builder/field-types/name-fee.d.ts +20 -0
  158. package/es/tx/builder/field-types/name-fee.mjs +24 -0
  159. package/es/tx/builder/field-types/name-fee.mjs.map +1 -0
  160. package/es/tx/builder/field-types/name-id.d.ts +14 -0
  161. package/es/tx/builder/field-types/name-id.mjs +19 -0
  162. package/es/tx/builder/field-types/name-id.mjs.map +1 -0
  163. package/es/tx/builder/field-types/name.d.ts +13 -0
  164. package/es/tx/builder/field-types/name.mjs +18 -0
  165. package/es/tx/builder/field-types/name.mjs.map +1 -0
  166. package/es/tx/builder/field-types/short-u-int.d.ts +6 -0
  167. package/es/tx/builder/field-types/short-u-int.mjs +12 -0
  168. package/es/tx/builder/field-types/short-u-int.mjs.map +1 -0
  169. package/es/tx/builder/field-types/u-int.d.ts +8 -0
  170. package/es/tx/builder/field-types/u-int.mjs +14 -0
  171. package/es/tx/builder/field-types/u-int.mjs.map +1 -0
  172. package/es/tx/builder/helpers.d.ts +125 -0
  173. package/es/tx/builder/helpers.mjs +94 -198
  174. package/es/tx/builder/helpers.mjs.map +1 -1
  175. package/es/tx/builder/index.d.ts +88 -0
  176. package/es/tx/builder/index.mjs +167 -358
  177. package/es/tx/builder/index.mjs.map +1 -1
  178. package/es/tx/builder/schema.d.ts +1201 -0
  179. package/es/tx/builder/schema.mjs +175 -561
  180. package/es/tx/builder/schema.mjs.map +1 -1
  181. package/es/tx/index.d.ts +64 -0
  182. package/es/tx/index.mjs +151 -265
  183. package/es/tx/index.mjs.map +1 -1
  184. package/es/tx/validator.d.ts +20 -0
  185. package/es/tx/validator.mjs +104 -124
  186. package/es/tx/validator.mjs.map +1 -1
  187. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  188. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  189. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  190. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  191. package/es/typings/bip32-path/index.d.mjs +2 -0
  192. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  193. package/es/typings/blakejs/index.d.mjs.map +1 -1
  194. package/es/typings/sha-js/index.d.mjs +2 -0
  195. package/es/typings/sha-js/index.d.mjs.map +1 -0
  196. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  197. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  198. package/es/utils/amount-formatter.d.ts +42 -0
  199. package/es/utils/amount-formatter.mjs +36 -49
  200. package/es/utils/amount-formatter.mjs.map +1 -1
  201. package/es/utils/autorest.d.ts +6 -0
  202. package/es/utils/autorest.mjs +97 -0
  203. package/es/utils/autorest.mjs.map +1 -0
  204. package/es/utils/bignumber.d.ts +13 -0
  205. package/es/utils/bignumber.mjs +11 -8
  206. package/es/utils/bignumber.mjs.map +1 -1
  207. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  208. package/es/utils/bytes.mjs +11 -15
  209. package/es/utils/bytes.mjs.map +1 -1
  210. package/es/utils/crypto.d.ts +88 -0
  211. package/es/utils/crypto.mjs +64 -98
  212. package/es/utils/crypto.mjs.map +1 -1
  213. package/es/utils/encoder-types.d.ts +61 -0
  214. package/es/utils/encoder-types.mjs +36 -0
  215. package/es/utils/encoder-types.mjs.map +1 -0
  216. package/es/utils/encoder.d.ts +25 -0
  217. package/es/utils/encoder.mjs +71 -59
  218. package/es/utils/encoder.mjs.map +1 -1
  219. package/es/{errors.d.ts → utils/errors.d.ts} +246 -59
  220. package/es/utils/errors.mjs +313 -136
  221. package/es/utils/errors.mjs.map +1 -1
  222. package/es/utils/hd-wallet.d.ts +50 -0
  223. package/es/utils/hd-wallet.mjs +86 -45
  224. package/es/utils/hd-wallet.mjs.map +1 -1
  225. package/es/utils/json-big.d.ts +5 -0
  226. package/es/utils/json-big.mjs +12 -16
  227. package/es/utils/json-big.mjs.map +1 -1
  228. package/es/utils/keystore.d.ts +51 -0
  229. package/es/utils/keystore.mjs +101 -194
  230. package/es/utils/keystore.mjs.map +1 -1
  231. package/es/{mptree.d.ts → utils/mptree.d.ts} +6 -9
  232. package/es/utils/mptree.mjs +22 -18
  233. package/es/utils/mptree.mjs.map +1 -1
  234. package/es/utils/other.d.ts +20 -0
  235. package/es/utils/other.mjs +32 -35
  236. package/es/utils/other.mjs.map +1 -1
  237. package/es/utils/semver-satisfies.d.ts +1 -0
  238. package/es/utils/semver-satisfies.mjs +2 -2
  239. package/es/utils/semver-satisfies.mjs.map +1 -1
  240. package/es/utils/string.d.ts +24 -0
  241. package/es/utils/string.mjs +8 -10
  242. package/es/utils/string.mjs.map +1 -1
  243. package/package.json +55 -43
  244. package/src/AeSdk.ts +68 -0
  245. package/src/AeSdkAepp.ts +176 -0
  246. package/src/AeSdkBase.ts +338 -0
  247. package/src/AeSdkWallet.ts +348 -0
  248. package/src/Node.ts +173 -0
  249. package/src/account/Base.ts +124 -0
  250. package/src/account/Memory.ts +98 -0
  251. package/src/account/Rpc.ts +69 -0
  252. package/src/aens.ts +407 -0
  253. package/src/aepp-wallet-communication/connection/Browser.ts +71 -0
  254. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +59 -0
  255. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +122 -0
  256. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +18 -18
  257. package/src/aepp-wallet-communication/rpc/RpcClient.ts +143 -0
  258. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  259. package/src/aepp-wallet-communication/schema.ts +224 -0
  260. package/src/aepp-wallet-communication/wallet-detector.ts +72 -0
  261. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  262. package/src/apis/compiler/compiler.ts +585 -0
  263. package/src/apis/compiler/index.ts +2 -0
  264. package/src/apis/compiler/models/index.ts +301 -0
  265. package/src/apis/compiler/models/mappers.ts +583 -0
  266. package/src/apis/compiler/models/parameters.ts +93 -0
  267. package/src/apis/node/code-model-v4.yaml +10080 -0
  268. package/src/apis/node/index.ts +2 -0
  269. package/src/apis/node/models/index.ts +1257 -0
  270. package/src/apis/node/models/mappers.ts +4280 -0
  271. package/src/apis/node/models/parameters.ts +188 -0
  272. package/src/apis/node/node.ts +1299 -0
  273. package/src/chain.ts +502 -0
  274. package/src/channel/handlers.ts +817 -0
  275. package/src/channel/index.ts +1025 -0
  276. package/src/channel/internal.ts +361 -0
  277. package/src/contract/Compiler.ts +67 -0
  278. package/src/contract/aci.ts +538 -0
  279. package/src/contract/ga.ts +199 -0
  280. package/src/contract/methods.ts +123 -0
  281. package/src/deprecated/index.ts +172 -0
  282. package/src/deprecated/methods.ts +25 -0
  283. package/src/index.ts +56 -0
  284. package/src/oracle.ts +364 -0
  285. package/src/spend.ts +164 -0
  286. package/src/tx/builder/address.ts +50 -0
  287. package/src/tx/builder/constants.ts +126 -0
  288. package/src/tx/builder/field-types/coin-amount.ts +27 -0
  289. package/src/tx/builder/field-types/deposit.ts +21 -0
  290. package/src/tx/builder/field-types/fee.ts +143 -0
  291. package/src/tx/builder/field-types/field.ts +9 -0
  292. package/src/tx/builder/field-types/gas-limit.ts +41 -0
  293. package/src/tx/builder/field-types/gas-price.ts +16 -0
  294. package/src/tx/builder/field-types/index.ts +45 -0
  295. package/src/tx/builder/field-types/name-fee.ts +32 -0
  296. package/src/tx/builder/field-types/name-id.ts +20 -0
  297. package/src/tx/builder/field-types/name.ts +18 -0
  298. package/src/tx/builder/field-types/short-u-int.ts +11 -0
  299. package/src/tx/builder/field-types/u-int.ts +16 -0
  300. package/src/tx/builder/helpers.ts +248 -0
  301. package/src/tx/builder/index.ts +400 -0
  302. package/src/tx/builder/schema.ts +727 -0
  303. package/src/tx/index.ts +192 -0
  304. package/src/tx/validator.ts +230 -0
  305. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  306. package/src/typings/@aeternity__uuid/index.d.ts +5 -0
  307. package/src/typings/bip32-path/index.d.ts +33 -0
  308. package/src/typings/blakejs/index.d.ts +4 -32
  309. package/src/typings/sha-js/index.d.ts +5 -0
  310. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  311. package/src/utils/amount-formatter.ts +56 -69
  312. package/src/utils/autorest.ts +93 -0
  313. package/src/utils/bignumber.ts +11 -12
  314. package/src/utils/bytes.ts +29 -31
  315. package/src/utils/crypto.ts +205 -0
  316. package/src/utils/encoder-types.ts +63 -0
  317. package/src/utils/encoder.ts +116 -71
  318. package/src/utils/errors.ts +482 -366
  319. package/src/utils/hd-wallet.ts +166 -0
  320. package/src/utils/json-big.ts +27 -0
  321. package/src/utils/keystore.ts +182 -0
  322. package/src/utils/mptree.ts +64 -61
  323. package/src/utils/other.ts +34 -41
  324. package/src/utils/semver-satisfies.ts +15 -11
  325. package/src/utils/string.ts +18 -20
  326. package/es/account/base.mjs +0 -179
  327. package/es/account/base.mjs.map +0 -1
  328. package/es/account/memory.mjs +0 -99
  329. package/es/account/memory.mjs.map +0 -1
  330. package/es/account/multiple.mjs +0 -179
  331. package/es/account/multiple.mjs.map +0 -1
  332. package/es/ae/aens.mjs +0 -404
  333. package/es/ae/aens.mjs.map +0 -1
  334. package/es/ae/aepp.mjs +0 -45
  335. package/es/ae/aepp.mjs.map +0 -1
  336. package/es/ae/contract.mjs +0 -159
  337. package/es/ae/contract.mjs.map +0 -1
  338. package/es/ae/index.mjs +0 -207
  339. package/es/ae/index.mjs.map +0 -1
  340. package/es/ae/oracle.mjs +0 -339
  341. package/es/ae/oracle.mjs.map +0 -1
  342. package/es/ae/universal.mjs +0 -45
  343. package/es/ae/universal.mjs.map +0 -1
  344. package/es/ae/wallet.mjs +0 -50
  345. package/es/ae/wallet.mjs.map +0 -1
  346. package/es/amount-formatter.d.ts +0 -58
  347. package/es/bignumber.d.ts +0 -18
  348. package/es/chain/index.mjs +0 -272
  349. package/es/chain/index.mjs.map +0 -1
  350. package/es/chain/node.mjs +0 -442
  351. package/es/chain/node.mjs.map +0 -1
  352. package/es/contract/compiler.mjs +0 -115
  353. package/es/contract/compiler.mjs.map +0 -1
  354. package/es/contract/ga/helpers.mjs +0 -30
  355. package/es/contract/ga/helpers.mjs.map +0 -1
  356. package/es/contract/ga/index.mjs +0 -178
  357. package/es/contract/ga/index.mjs.map +0 -1
  358. package/es/crypto-ts.d.ts +0 -9
  359. package/es/encoder.d.ts +0 -26
  360. package/es/node-pool/index.mjs +0 -188
  361. package/es/node-pool/index.mjs.map +0 -1
  362. package/es/node.mjs +0 -133
  363. package/es/node.mjs.map +0 -1
  364. package/es/other.d.ts +0 -31
  365. package/es/semver-satisfies.d.ts +0 -1
  366. package/es/string.d.ts +0 -26
  367. package/es/tx/builder/field-types.mjs +0 -74
  368. package/es/tx/builder/field-types.mjs.map +0 -1
  369. package/es/tx/tx-object.mjs +0 -283
  370. package/es/tx/tx-object.mjs.map +0 -1
  371. package/es/tx/tx.mjs +0 -938
  372. package/es/tx/tx.mjs.map +0 -1
  373. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  374. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  375. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  376. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  377. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  378. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  379. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  380. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  381. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  382. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  383. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  384. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  385. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  386. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  387. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  388. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  389. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  390. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  391. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  392. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  393. package/es/utils/async-init.mjs +0 -64
  394. package/es/utils/async-init.mjs.map +0 -1
  395. package/es/utils/crypto-ts.mjs.map +0 -1
  396. package/es/utils/swagger.mjs +0 -164
  397. package/es/utils/swagger.mjs.map +0 -1
  398. package/src/account/base.js +0 -153
  399. package/src/account/memory.js +0 -83
  400. package/src/account/multiple.js +0 -162
  401. package/src/ae/aens.js +0 -361
  402. package/src/ae/aepp.js +0 -45
  403. package/src/ae/contract.js +0 -148
  404. package/src/ae/index.js +0 -168
  405. package/src/ae/oracle.js +0 -311
  406. package/src/ae/universal.js +0 -47
  407. package/src/ae/wallet.js +0 -50
  408. package/src/chain/index.js +0 -269
  409. package/src/chain/node.js +0 -320
  410. package/src/channel/handlers.js +0 -673
  411. package/src/channel/index.js +0 -903
  412. package/src/channel/internal.js +0 -236
  413. package/src/contract/aci.js +0 -376
  414. package/src/contract/compiler.js +0 -100
  415. package/src/contract/ga/helpers.js +0 -19
  416. package/src/contract/ga/index.js +0 -150
  417. package/src/index.js +0 -89
  418. package/src/node-pool/index.js +0 -172
  419. package/src/node.js +0 -116
  420. package/src/tx/builder/constants.js +0 -100
  421. package/src/tx/builder/field-types.js +0 -61
  422. package/src/tx/builder/helpers.js +0 -334
  423. package/src/tx/builder/index.js +0 -465
  424. package/src/tx/builder/schema.js +0 -1100
  425. package/src/tx/index.js +0 -301
  426. package/src/tx/tx-object.js +0 -187
  427. package/src/tx/tx.js +0 -631
  428. package/src/tx/validator.js +0 -181
  429. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  430. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  431. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  432. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  433. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  434. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  435. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  436. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  437. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  438. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  439. package/src/utils/async-init.js +0 -45
  440. package/src/utils/crypto.js +0 -219
  441. package/src/utils/hd-wallet.js +0 -100
  442. package/src/utils/json-big.js +0 -26
  443. package/src/utils/keystore.js +0 -219
  444. package/src/utils/swagger.js +0 -156
@@ -1 +1 @@
1
- {"version":3,"file":"aepp-sdk.js","mappings":"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","sources":["webpack://Ae/webpack/universalModuleDefinition","webpack://Ae/external umd \"@aeternity/aepp-calldata\"","webpack://Ae/external umd \"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"","webpack://Ae/external umd \"@aeternity/blakejs\"","webpack://Ae/external umd \"@aeternity/json-bigint\"","webpack://Ae/external umd \"@aeternity/uuid\"","webpack://Ae/external umd \"@stamp/it\"","webpack://Ae/external umd \"@stamp/required\"","webpack://Ae/external umd \"aes-js\"","webpack://Ae/external umd \"bignumber.js\"","webpack://Ae/external umd \"bip32-path\"","webpack://Ae/external umd \"bs58\"","webpack://Ae/external umd \"cross-fetch\"","webpack://Ae/external umd \"events\"","webpack://Ae/external umd \"rlp\"","webpack://Ae/external umd \"sha.js\"","webpack://Ae/external umd \"swagger-client\"","webpack://Ae/external umd \"tweetnacl\"","webpack://Ae/external umd \"tweetnacl-auth\"","webpack://Ae/external umd \"websocket\"","webpack://Ae/webpack/bootstrap","webpack://Ae/webpack/runtime/compat get default export","webpack://Ae/webpack/runtime/define property getters","webpack://Ae/webpack/runtime/hasOwnProperty shorthand","webpack://Ae/webpack/runtime/make namespace object","webpack://Ae/./src/utils/errors.ts","webpack://Ae/./src/utils/string.ts","webpack://Ae/./src/utils/bytes.ts","webpack://Ae/./src/utils/encoder.ts","webpack://Ae/./src/utils/crypto-ts.ts","webpack://Ae/./src/utils/crypto.js","webpack://Ae/./src/utils/keystore.js","webpack://Ae/./src/utils/bignumber.ts","webpack://Ae/./src/utils/amount-formatter.ts","webpack://Ae/./src/utils/other.ts","webpack://Ae/./src/tx/builder/constants.js","webpack://Ae/./src/tx/builder/helpers.js","webpack://Ae/./src/tx/builder/field-types.js","webpack://Ae/./src/tx/builder/schema.js","webpack://Ae/./src/utils/mptree.ts","webpack://Ae/./src/tx/builder/index.js","webpack://Ae/./src/utils/hd-wallet.js","webpack://Ae/./src/tx/index.js","webpack://Ae/./src/chain/index.js","webpack://Ae/./src/utils/async-init.js","webpack://Ae/./src/utils/json-big.js","webpack://Ae/./src/utils/swagger.js","webpack://Ae/./src/utils/semver-satisfies.ts","webpack://Ae/./src/node.js","webpack://Ae/./src/account/base.js","webpack://Ae/./src/ae/index.js","webpack://Ae/./src/tx/validator.js","webpack://Ae/./src/node-pool/index.js","webpack://Ae/./src/chain/node.js","webpack://Ae/./src/tx/tx-object.js","webpack://Ae/./src/tx/tx.js","webpack://Ae/./src/account/memory.js","webpack://Ae/./src/account/multiple.js","webpack://Ae/./src/ae/aens.js","webpack://Ae/./src/contract/compiler.js","webpack://Ae/./src/ae/contract.js","webpack://Ae/./src/contract/aci.js","webpack://Ae/./src/contract/ga/helpers.js","webpack://Ae/./src/contract/ga/index.js","webpack://Ae/./src/utils/aepp-wallet-communication/schema.ts","webpack://Ae/./src/utils/aepp-wallet-communication/helpers.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/rpc-client.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/aepp-rpc.js","webpack://Ae/./src/ae/oracle.js","webpack://Ae/./src/ae/aepp.js","webpack://Ae/./src/utils/aepp-wallet-communication/rpc/wallet-rpc.js","webpack://Ae/./src/ae/wallet.js","webpack://Ae/./src/channel/internal.js","webpack://Ae/./src/channel/handlers.js","webpack://Ae/./src/channel/index.js","webpack://Ae/./src/ae/universal.js","webpack://Ae/./src/utils/aepp-wallet-communication/content-script-bridge.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/index.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/browser-window-message.js","webpack://Ae/./src/utils/aepp-wallet-communication/wallet-detector.js","webpack://Ae/./src/utils/aepp-wallet-communication/connection/browser-runtime.js","webpack://Ae/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@stamp/it\"), require(\"@aeternity/uuid\"), require(\"@stamp/required\"), require(\"bignumber.js\"), require(\"bs58\"), require(\"tweetnacl\"), require(\"aes-js\"), require(\"@aeternity/blakejs\"), require(\"sha.js\"), require(\"rlp\"), require(\"swagger-client\"), require(\"cross-fetch\"), require(\"@aeternity/json-bigint\"), require(\"@aeternity/aepp-calldata\"), require(\"websocket\"), require(\"events\"), require(\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"@stamp/it\", \"@aeternity/uuid\", \"@stamp/required\", \"bignumber.js\", \"bs58\", \"tweetnacl\", \"aes-js\", \"@aeternity/blakejs\", \"sha.js\", \"rlp\", \"swagger-client\", \"cross-fetch\", \"@aeternity/json-bigint\", \"@aeternity/aepp-calldata\", \"websocket\", \"events\", \"@aeternity/argon2-browser/dist/argon2-bundled.min.js\", \"tweetnacl-auth\", \"bip32-path\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Ae\"] = factory(require(\"@stamp/it\"), require(\"@aeternity/uuid\"), require(\"@stamp/required\"), require(\"bignumber.js\"), require(\"bs58\"), require(\"tweetnacl\"), require(\"aes-js\"), require(\"@aeternity/blakejs\"), require(\"sha.js\"), require(\"rlp\"), require(\"swagger-client\"), require(\"cross-fetch\"), require(\"@aeternity/json-bigint\"), require(\"@aeternity/aepp-calldata\"), require(\"websocket\"), require(\"events\"), require(\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"));\n\telse\n\t\troot[\"Ae\"] = factory(root[\"@stamp/it\"], root[\"@aeternity/uuid\"], root[\"@stamp/required\"], root[\"bignumber.js\"], root[\"bs58\"], root[\"tweetnacl\"], root[\"aes-js\"], root[\"@aeternity/blakejs\"], root[\"sha.js\"], root[\"rlp\"], root[\"swagger-client\"], root[\"cross-fetch\"], root[\"@aeternity/json-bigint\"], root[\"@aeternity/aepp-calldata\"], root[\"websocket\"], root[\"events\"], root[\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"], root[\"tweetnacl-auth\"], root[\"bip32-path\"]);\n})(global, function(__WEBPACK_EXTERNAL_MODULE__910__, __WEBPACK_EXTERNAL_MODULE__983__, __WEBPACK_EXTERNAL_MODULE__180__, __WEBPACK_EXTERNAL_MODULE__192__, __WEBPACK_EXTERNAL_MODULE__783__, __WEBPACK_EXTERNAL_MODULE__79__, __WEBPACK_EXTERNAL_MODULE__236__, __WEBPACK_EXTERNAL_MODULE__343__, __WEBPACK_EXTERNAL_MODULE__433__, __WEBPACK_EXTERNAL_MODULE__485__, __WEBPACK_EXTERNAL_MODULE__659__, __WEBPACK_EXTERNAL_MODULE__503__, __WEBPACK_EXTERNAL_MODULE__911__, __WEBPACK_EXTERNAL_MODULE__946__, __WEBPACK_EXTERNAL_MODULE__397__, __WEBPACK_EXTERNAL_MODULE__735__, __WEBPACK_EXTERNAL_MODULE__289__, __WEBPACK_EXTERNAL_MODULE__882__, __WEBPACK_EXTERNAL_MODULE__986__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__946__;","module.exports = __WEBPACK_EXTERNAL_MODULE__289__;","module.exports = __WEBPACK_EXTERNAL_MODULE__343__;","module.exports = __WEBPACK_EXTERNAL_MODULE__911__;","module.exports = __WEBPACK_EXTERNAL_MODULE__983__;","module.exports = __WEBPACK_EXTERNAL_MODULE__910__;","module.exports = __WEBPACK_EXTERNAL_MODULE__180__;","module.exports = __WEBPACK_EXTERNAL_MODULE__236__;","module.exports = __WEBPACK_EXTERNAL_MODULE__192__;","module.exports = __WEBPACK_EXTERNAL_MODULE__986__;","module.exports = __WEBPACK_EXTERNAL_MODULE__783__;","module.exports = __WEBPACK_EXTERNAL_MODULE__503__;","module.exports = __WEBPACK_EXTERNAL_MODULE__735__;","module.exports = __WEBPACK_EXTERNAL_MODULE__485__;","module.exports = __WEBPACK_EXTERNAL_MODULE__433__;","module.exports = __WEBPACK_EXTERNAL_MODULE__659__;","module.exports = __WEBPACK_EXTERNAL_MODULE__79__;","module.exports = __WEBPACK_EXTERNAL_MODULE__882__;","module.exports = __WEBPACK_EXTERNAL_MODULE__397__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Error module\n * @module @aeternity/aepp-sdk/es/utils/errors\n * @example import { BytecodeMismatchError } from '@aeternity/aepp-sdk'\n */\n\n/**\n * aepp-sdk originated error\n */\nexport abstract class BaseError extends Error {\n constructor (message: string) {\n super(message)\n this.name = 'BaseError'\n }\n}\n\nexport class AccountError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'AccountError'\n }\n}\n\nexport class AensError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'AensError'\n }\n}\n\nexport class AeppError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'AeppError'\n }\n}\n\nexport class ChannelError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'ChannelError'\n }\n}\n\nexport class CompilerError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'CompilerError'\n }\n}\n\nexport class ContractError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'ContractError'\n }\n}\n\nexport class CryptographyError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'CryptographyError'\n }\n}\n\nexport class NodeError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'NodeError'\n }\n}\n\nexport class TransactionError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'TransactionError'\n }\n}\n\nexport class WalletError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'WalletError'\n }\n}\n\n/* Common error patterns */\nexport class ArgumentError extends BaseError {\n constructor (argumentName: string, requirement: string, argumentValue: any) {\n super(`${argumentName} should be ${requirement}, got ${argumentValue} instead`)\n this.name = 'ArgumentError'\n }\n}\n\nexport class IllegalArgumentError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'IllegalArgumentError'\n }\n}\n\nexport class ArgumentCountMismatchError extends BaseError {\n constructor (functionName: string, requiredCount: number, providedCount: number) {\n super(`${functionName} expects ${requiredCount} arguments, got ${providedCount} instead`)\n this.name = 'ArgumentCountMismatchError'\n }\n}\n\nexport class InsufficientBalanceError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InsufficientBalanceError'\n }\n}\n\nexport class InvalidDenominationError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidDenominationError'\n }\n}\n\nexport class InvalidNameError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidNameError'\n }\n}\n\nexport class MissingParamError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'MissingParamError'\n }\n}\n\nexport class NoBrowserFoundError extends BaseError {\n constructor () {\n super('Browser is not detected')\n this.name = 'NoBrowserFoundError'\n }\n}\n\nexport class NoSerializerFoundError extends BaseError {\n constructor () {\n super('Byte serialization not supported')\n this.name = 'NoSerializerFoundError'\n }\n}\n\nexport class RequestTimedOutError extends BaseError {\n constructor (requestTime: number);\n constructor (requestTime: number, currentHeight?: number, height?: number) {\n if (currentHeight !== undefined && height !== undefined) {\n super(`Giving up after ${requestTime}ms, current height: ${currentHeight}, desired height: ${height}`)\n } else {\n super(`Giving up after ${requestTime} ms`)\n }\n this.name = 'RequestTimedOutError'\n }\n}\n\nexport class TxTimedOutError extends BaseError {\n constructor (blocks: number, th: string, status?: string) {\n super([\n `Giving up after ${blocks} blocks mined`,\n `transaction hash: ${th}`,\n ...status ? [`status: ${status}`] : []\n ].join(', '))\n this.name = 'TxTimedOutError'\n }\n}\n\nexport class TypeError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'TypeError'\n }\n}\n\nexport class UnsupportedPlatformError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedPlatformError'\n }\n}\n\nexport class UnsupportedProtocolError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedProtocolError'\n }\n}\n\nexport class NotImplementedError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'NotImplementedError'\n }\n}\n\nexport class UnsupportedVersionError extends BaseError {\n constructor (dependency: string, version: string, geVersion: string, ltVersion: string) {\n super(`Unsupported ${dependency} version ${version}. Supported: >= ${geVersion} < ${ltVersion}`)\n this.name = 'UnsupportedVersionError'\n }\n}\n\nexport class InternalError extends BaseError {\n constructor (message: string) {\n super(message)\n this.name = 'InternalError'\n }\n}\n\n/* keypair an account related errors */\nexport class InvalidKeypairError extends AccountError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidKeypairError'\n }\n}\n\nexport class UnavailableAccountError extends AccountError {\n constructor (address: string) {\n super(`Account for ${address} not available`)\n this.name = 'UnavailableAccountError'\n }\n}\n\n/* errors originating from AENS operation */\nexport class AensPointerContextError extends AensError {\n constructor (nameOrId: string, prefix: string) {\n super(`Name ${nameOrId} don't have pointers for ${prefix}`)\n this.name = 'AensPointerContextError'\n }\n}\n\nexport class InsufficientNameFeeError extends AensError {\n constructor (nameFee: number, minNameFee: number) {\n super(`the provided fee ${nameFee} is not enough to execute the claim, required: ${minNameFee}`)\n this.name = 'InsufficientNameFeeError'\n }\n}\n\nexport class InvalidAensNameError extends AensError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidAensNameError'\n }\n}\n\n/* Aepp Errors */\nexport class DuplicateCallbackError extends AeppError {\n constructor () {\n super('Callback Already exist')\n this.name = 'DuplicateCallbackError'\n }\n}\n\nexport class InvalidRpcMessageError extends AeppError {\n constructor (message: string) {\n super(`Received invalid message: ${message}`)\n this.name = 'InvalidRpcMessageError'\n }\n}\n\nexport class MissingCallbackError extends AeppError {\n constructor (id: string) {\n super(`Can't find callback for this messageId ${id}`)\n this.name = 'MissingCallbackError'\n }\n}\n\nexport class UnAuthorizedAccountError extends AeppError {\n constructor (onAccount: string) {\n super(`You do not have access to account ${onAccount}`)\n this.name = 'UnAuthorizedAccountError'\n }\n}\n\nexport class UnknownRpcClientError extends AeppError {\n constructor (id: string) {\n super(`RpcClient with id ${id} do not exist`)\n this.name = 'UnknownRpcClientError'\n }\n}\n\nexport class UnsubscribedAccountError extends AeppError {\n constructor () {\n super('You are not subscribed for an account.')\n this.name = 'UnsubscribedAccountError'\n }\n}\n\n/* Channel originated errors */\nexport class ChannelCallError extends ChannelError {\n constructor (message: string) {\n super(message)\n this.name = 'ChannelCallError'\n }\n}\n\nexport class ChannelConnectionError extends ChannelError {\n constructor (message: string) {\n super(message)\n this.name = 'ChannelConnectionError'\n }\n}\n\nexport class ChannelPingTimedOutError extends ChannelError {\n constructor () {\n super('Server pong timed out')\n this.name = 'ChannelPingTimedOutError'\n }\n}\n\nexport class UnexpectedChannelMessageError extends ChannelError {\n constructor (message: string) {\n super(message)\n this.name = 'UnexpectedChannelMessageError'\n }\n}\n\nexport class UnknownChannelStateError extends ChannelError {\n constructor () {\n super('State Channels FSM entered unknown state')\n this.name = 'UnknownChannelStateError'\n }\n}\n\n/* compiler issued errors */\n/* errors from option validations */\nexport class InvalidAuthDataError extends CompilerError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidAuthDataError'\n }\n}\n\n/* contract invocation errors */\nexport class BytecodeMismatchError extends ContractError {\n constructor (source: string) {\n super(`Contract ${source} do not correspond to the bytecode deployed on the chain`)\n this.name = 'BytecodeMismatchError'\n }\n}\n\nexport class DuplicateContractError extends ContractError {\n constructor () {\n super('Contract already deployed')\n this.name = 'DuplicateContractError'\n }\n}\n\nexport class InactiveContractError extends ContractError {\n constructor (contractAddress: string) {\n super(`Contract with address ${contractAddress} not active`)\n this.name = 'InactiveContractError'\n }\n}\n\nexport class InvalidMethodInvocationError extends ContractError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidMethodInvocationError'\n }\n}\n\nexport class MissingContractAddressError extends ContractError {\n constructor (message: string) {\n super(message)\n this.name = 'MissingContractAddressError'\n }\n}\n\nexport class MissingContractDefError extends ContractError {\n constructor () {\n super('Either ACI or source code is required')\n this.name = 'MissingContractDefError'\n }\n}\n\nexport class MissingFunctionNameError extends ContractError {\n constructor () {\n super('Function name is required')\n this.name = 'MissingFunctionNameError'\n }\n}\n\nexport class NodeInvocationError extends ContractError {\n constructor (message?: string) {\n message = message ?? ''\n super(`Invocation failed${message === '' ? '' : `: \"${message}\"`}`)\n this.name = 'NodeInvocationError'\n }\n}\n\nexport class NoSuchContractFunctionError extends ContractError {\n constructor (name: string) {\n super(`Function ${name} doesn't exist in contract`)\n this.name = 'NoSuchContractFunctionError'\n }\n}\n\nexport class NotPayableFunctionError extends ContractError {\n constructor (amount: string, fn: string) {\n super(\n `You try to pay \"${amount}\" to function \"${fn}\" which is not payable. ` +\n 'Only payable function can accept tokens')\n this.name = 'NotPayableFunctionError'\n }\n}\n\nexport class MissingEventDefinitionError extends ContractError {\n constructor (eventNameHash: string, eventAddress: string) {\n super(\n `Can't find definition of ${eventNameHash} event emitted by ${eventAddress}` +\n ' (use omitUnknown option to ignore events like this)'\n )\n this.name = 'MissingEventDefinitionError'\n }\n}\n\nexport class AmbiguousEventDefinitionError extends ContractError {\n constructor (eventAddress: string, matchedEvents: [string, string][]) {\n super(\n `Found multiple definitions of \"${matchedEvents[0][1]}\" event emitted by ${eventAddress}` +\n ` in ${matchedEvents.map(([name]) => `\"${name}\"`).join(', ')} contracts` +\n ' (use contractAddressToName option to specify contract name corresponding to address)'\n )\n this.name = 'AmbiguousEventDefinitionError'\n }\n}\n\n/* cryptography errors */\nexport class InvalidChecksumError extends CryptographyError {\n constructor () {\n super('Invalid checksum')\n this.name = 'InvalidChecksumError'\n }\n}\n\nexport class InvalidDerivationPathError extends CryptographyError {\n constructor () {\n super('Invalid path')\n this.name = 'InvalidDerivationPathError'\n }\n}\n\nexport class InvalidKeyError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidKeyError'\n }\n}\n\nexport class InvalidPasswordError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidPasswordError'\n }\n}\n\nexport class MerkleTreeHashMismatchError extends CryptographyError {\n constructor () {\n super('Node hash is not equal to provided one')\n this.name = 'MerkleTreeHashMismatchError'\n }\n}\n\nexport class MissingNodeInTreeError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'MissingNodeInTreeError'\n }\n}\n\nexport class UnsupportedAlgorithmError extends CryptographyError {\n constructor (algo: string) {\n super(algo + ' is not available')\n this.name = 'UnsupportedAlgorithmError'\n }\n}\n\nexport class NotHardenedSegmentError extends CryptographyError {\n constructor (message: string) {\n super(message)\n this.name = 'NotHardenedSegmentError'\n }\n}\n\nexport class UnknownNodeLengthError extends CryptographyError {\n constructor (nodeLength: number) {\n super(`Unknown node length: ${nodeLength}`)\n this.name = 'UnknownNodeLengthError'\n }\n}\n\nexport class UnknownPathNibbleError extends CryptographyError {\n constructor (nibble: number) {\n super(`Unknown path nibble: ${nibble}`)\n this.name = 'UnknownPathNibbleError'\n }\n}\n\nexport class UnsupportedChildIndexError extends CryptographyError {\n constructor (index: string) {\n super(`Child index #${index} is not supported`)\n this.name = 'UnsupportedChildIndexError'\n }\n}\n\n/* Node errors */\nexport class DisconnectedError extends NodeError {\n constructor () {\n super('Can not get node info. Node is not connected')\n this.name = 'DisconnectedError'\n }\n}\n\nexport class DuplicateNodeError extends NodeError {\n constructor (name: string) {\n super(`Node with name ${name} already exist`)\n this.name = 'DuplicateNodeError'\n }\n}\n\nexport class NodeNotFoundError extends NodeError {\n constructor (message: string) {\n super(message)\n this.name = 'NodeNotFoundError'\n }\n}\n\n/* transaction related errors */\nexport class DecodeError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'DecodeError'\n }\n}\n\nexport class EncodeError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'EncodeError'\n }\n}\n\nexport class PayloadLengthError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'PayloadLengthError'\n }\n}\n\nexport class DryRunError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'DryRunError'\n }\n}\n\nexport class IllegalBidFeeError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'IllegalBidFeeError'\n }\n}\n\nexport class InvalidSignatureError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidSignatureError'\n }\n}\n\nexport class InvalidTxError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidTxError'\n }\n}\n\nexport class InvalidTxParamsError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'InvalidTxParamsError'\n }\n}\n\nexport class NoDefaultAensPointerError extends TransactionError {\n constructor (prefix: string) {\n super(`Default AENS pointer key is not defined for ${prefix} prefix`)\n this.name = 'NoDefaultAensPointerError'\n }\n}\n\nexport class PrefixMismatchError extends TransactionError {\n constructor (prefix: string, requiredPrefix: string) {\n super(`Encoded string have a wrong type: ${prefix} (expected: ${requiredPrefix})`)\n this.name = 'PrefixMismatchError'\n }\n}\n\nexport class PrefixNotFoundError extends TransactionError {\n constructor (tag: string) {\n super(`Prefix for id-tag ${tag} not found.`)\n this.name = 'PrefixNotFoundError'\n }\n}\n\nexport class SchemaNotFoundError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'SchemaNotFoundError'\n }\n}\n\nexport class TagNotFoundError extends TransactionError {\n constructor (prefix: string) {\n super(`Id tag for prefix ${prefix} not found.`)\n this.name = 'DecodeError'\n }\n}\n\nexport class TxNotInChainError extends TransactionError {\n constructor (txHash: string) {\n super(`Transaction ${txHash} is removed from chain`)\n this.name = 'TxNotInChainError'\n }\n}\n\nexport class UnknownTxError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'UnknownTxError'\n }\n}\n\nexport class UnsupportedABIversionError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedABIversionError'\n }\n}\n\nexport class UnsupportedVMversionError extends TransactionError {\n constructor (message: string) {\n super(message)\n this.name = 'UnsupportedVMversionError'\n }\n}\n\n/* Wallet Errors */\nexport class AlreadyConnectedError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'AlreadyConnectedError'\n }\n}\n\nexport class MessageDirectionError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'MessageDirectionError'\n }\n}\n\nexport class NoWalletConnectedError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'NoWalletConnectedError'\n }\n}\n\nexport class RpcConnectionError extends WalletError {\n constructor (message: string) {\n super(message)\n this.name = 'RpcConnectionError'\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Convert string from snake_case to PascalCase\n * @rtype (s: String) => String\n * @param {String} s - String to convert\n * @return {String} Converted string\n */\nexport function snakeToPascal (s: string): string {\n return s.replace(/_./g, match => match[1].toUpperCase())\n}\n\n/**\n * Convert string from PascalCase to snake_case\n * @rtype (s: String) => String\n * @param {String} s - String to convert\n * @return {String} Converted string\n */\nexport function pascalToSnake (s: string): string {\n return s.replace(/[A-Z]/g, match => `_${match.toLowerCase()}`)\n}\n\n/**\n * Check whether a string is valid hex.\n * @param {string} str String to validate.\n * @return {boolean} True if the string is valid hex, false otherwise.\n */\nexport function isHex (str: string): boolean {\n return str.length % 2 === 0 && /^[0-9a-f]+$/i.test(str)\n}\n\n/**\n * Check whether a string is valid base-64.\n * @param {string} str String to validate.\n * @return {boolean} True if the string is valid base-64, false otherwise.\n */\nexport function isBase64 (str: string): boolean {\n if (str.length % 4 > 0 || /[^0-9a-z+/=]/i.test(str)) return false\n const index = str.indexOf('=')\n return index === -1 || /={1,2}/.test(str.slice(index))\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js'\nimport { NoSerializerFoundError, TypeError } from './errors'\nimport { isBase64, isHex } from './string'\n\n/**\n * Bytes module\n * @module @aeternity/aepp-sdk/es/utils/bytes\n * @example import { Crypto } from '@aeternity/aepp-sdk'\n */\n\n/**\n * Convert bignumber to byte array\n * @param {BigNumber} x bignumber instance\n * @return Buffer\n */\nexport function bigNumberToByteArray (x: BigNumber): Buffer {\n if (!x.isInteger()) throw new TypeError(`Unexpected not integer value: ${x.toFixed()}`)\n let hexString = x.toString(16)\n if (hexString.length % 2 === 1) hexString = '0' + hexString\n return Buffer.from(hexString, 'hex')\n}\n\n/**\n * Convert string, number, or BigNumber to byte array\n * @param {null|string|number|BigNumber} val\n * @param {boolean} big enables force conversion to BigNumber\n * @return Buffer\n */\nexport function toBytes (val?: null | string | number | BigNumber, big: boolean = false): Buffer {\n // Encode a value to bytes.\n // If the value is an int it will be encoded as bytes big endian\n // Raises ValueError if the input is not an int or string\n\n if (val === undefined || val === null) return Buffer.from([])\n if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val)\n return bigNumberToByteArray(val)\n }\n if (typeof val === 'string') {\n return Buffer.from(val)\n }\n throw new NoSerializerFoundError()\n}\n\n/**\n * Convert a string to a Buffer. If encoding is not specified, hex-encoding\n * will be used if the input is valid hex. If the input is valid base64 but\n * not valid hex, base64 will be used. Otherwise, utf8 will be used.\n * @param {string} str String to be converted.\n * @param {string} [enc] Encoding of the input string.\n * @return {buffer} Buffer containing the input data.\n */\nexport function str2buf (str: string, enc?: BufferEncoding): Buffer {\n return Buffer.from(\n str,\n enc ?? (isHex(str) ? 'hex' : undefined) ?? (isBase64(str) ? 'base64' : undefined)\n )\n}\n","import * as bs58 from 'bs58'\nimport { sha256 } from 'sha.js'\nimport {\n DecodeError,\n EncodeError,\n InvalidChecksumError,\n PayloadLengthError,\n PrefixMismatchError\n} from './errors'\n\n/**\n * Calculate SHA256 hash of `input`\n * @rtype (input: String) => hash: String\n * @param {Buffer|String} input - Data to hash\n * @return {String} Hash\n */\nexport function sha256hash (input: Buffer | string) {\n return new sha256().update(input).digest()\n}\n\n// based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md\nconst base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx']\nconst base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']\n// TODO: add all types with a fixed length\nconst typesLength: { [name: string]: number } = {\n ak: 32,\n ct: 32,\n ok: 32\n} as const\n\nfunction ensureValidLength (data: Buffer | string, type: string) {\n if (!typesLength[type]) return\n if (data.length === typesLength[type]) return\n throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`)\n}\n\nconst getChecksum = (payload: Buffer | string) => sha256hash(sha256hash(payload)).slice(0, 4)\n\nconst addChecksum = (input: Buffer | string) => {\n const payload = Buffer.from(input)\n return Buffer.concat([payload, getChecksum(payload)])\n}\n\nfunction getPayload (buffer: Buffer) {\n const payload = buffer.slice(0, -4)\n if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError()\n return payload\n}\n\nconst base64 = {\n encode: (buffer: Buffer | string) => addChecksum(buffer).toString('base64'),\n decode: (string: string) => getPayload(Buffer.from(string, 'base64'))\n}\n\nconst base58 = {\n encode: (buffer: Buffer | string) => bs58.encode(addChecksum(buffer)),\n decode: (string: string) => getPayload(bs58.decode(string))\n}\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} data An Base58/64check encoded and prefixed string (ex tx_..., sg_..., ak_....)\n * @param {string} [requiredPrefix] Ensure that data have this prefix\n * @return {Buffer} Decoded data\n */\nexport function decode (data: string, requiredPrefix?: string) {\n const [prefix, encodedPayload, extra] = data.split('_')\n if (!encodedPayload) throw new DecodeError(`Encoded string missing payload: ${data}`)\n if (extra) throw new DecodeError(`Encoded string have extra parts: ${data}`)\n if (requiredPrefix && requiredPrefix !== prefix) {\n throw new PrefixMismatchError(prefix, requiredPrefix)\n }\n const decoder = (base64Types.includes(prefix) && base64.decode) ||\n (base58Types.includes(prefix) && base58.decode)\n if (!decoder) {\n throw new DecodeError(`Encoded string have unknown type: ${prefix}`)\n }\n const payload = decoder(encodedPayload)\n ensureValidLength(payload, prefix)\n return payload\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer|String} data An decoded data\n * @param {string} type Prefix of Transaction\n * @return {String} Encoded string Base58check or Base64check data\n */\nexport function encode (data: Buffer | string, type: string) {\n const encoder = (base64Types.includes(type) && base64.encode) ||\n (base58Types.includes(type) && base58.encode)\n if (!encoder) {\n throw new EncodeError(`Unknown type: ${type}`)\n }\n ensureValidLength(data, type)\n return `${type}_${encoder(data)}`\n}\n","/*\n * ISC License (ISC)\n * Copyright 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { blake2b } from '@aeternity/blakejs'\nimport type { Data } from 'blakejs'\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @rtype (input: String) => hash: String\n * @param {Data} input - Data to hash\n * @return {Buffer} Hash\n */\nexport function hash (input: Data): Buffer {\n return Buffer.from(blake2b(input, undefined, 32)) // 256 bits\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Crypto module\n * @module @aeternity/aepp-sdk/es/utils/crypto\n * @example import { Crypto } from '@aeternity/aepp-sdk'\n */\n\nimport nacl from 'tweetnacl'\nimport aesjs from 'aes-js'\n\nimport { str2buf } from './bytes'\nimport { encode, decode, sha256hash } from './encoder'\nimport { hash } from './crypto-ts'\nimport { NotImplementedError } from './errors'\n\nexport * from './crypto-ts'\nexport { sha256hash }\n\nconst Ecb = aesjs.ModeOfOperation.ecb\n\n/**\n * Generate address from secret key\n * @rtype (secret: String) => tx: Promise[String]\n * @param {String} secret - Private key\n * @return {String} Public key\n */\nexport function getAddressFromPriv (secret) {\n const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))\n const publicBuffer = Buffer.from(keys.publicKey)\n return encode(publicBuffer, 'ak')\n}\n\n/**\n * Check if address is valid\n * @rtype (input: String) => valid: Boolean\n * @param {String} address - Address\n * @param {String} prefix Transaction prefix. Default: 'ak'\n * @return {Boolean} valid\n */\nexport function isAddressValid (address, prefix = 'ak') {\n try {\n decode(address, prefix)\n return true\n } catch (e) {\n return false\n }\n}\n\n/**\n * Generate a random salt (positive integer)\n * @rtype () => salt: Number\n * @return {Number} random salt\n */\nexport function salt () {\n return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER))\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @rtype (value: Number) => Buffer\n * @param {Number} value - Value to encode\n * @return {Buffer} - Encoded data\n */\nexport function encodeUnsigned (value) {\n const binary = Buffer.allocUnsafe(4)\n binary.writeUInt32BE(value)\n return binary.slice(binary.findIndex(i => i !== 0))\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @rtype (owner: String, nonce: Number) => String\n * @param {String} owner - Address of contract owner\n * @param {Number} nonce - Round when contract was created\n * @return {String} - Contract address\n */\nexport function encodeContractAddress (owner, nonce) {\n const publicKey = decode(owner, 'ak')\n const binary = Buffer.concat([publicKey, encodeUnsigned(nonce)])\n return encode(hash(binary), 'ct')\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @rtype (secret: Uint8Array) => KeyPair\n * @param {Uint8Array} secret - secret key\n * @return {Object} - Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret (secret) {\n return nacl.sign.keyPair.fromSecretKey(secret)\n}\n\n/**\n * Generate a random ED25519 keypair\n * @rtype (raw: Boolean) => {publicKey: String | Buffer, secretKey: String | Buffer}\n * @param {Boolean} raw - Whether to return raw (binary) keys\n * @return {Object} Key pair\n */\nexport function generateKeyPair (raw = false) {\n // <node>/apps/aens/test/aens_test_utils.erl\n const keyPair = nacl.sign.keyPair()\n\n const publicBuffer = Buffer.from(keyPair.publicKey)\n const secretBuffer = Buffer.from(keyPair.secretKey)\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer\n }\n } else {\n return {\n publicKey: encode(publicBuffer, 'ak'),\n secretKey: secretBuffer.toString('hex')\n }\n }\n}\n\n/**\n * Encrypt given data using `password`\n * @rtype (password: String, binaryData: Buffer) => Uint8Array\n * @param {String} password - Password to encrypt with\n * @param {Buffer} binaryData - Data to encrypt\n * @return {Uint8Array} Encrypted data\n */\nexport function encryptKey (password, binaryData) {\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return aesEcb.encrypt(binaryData)\n}\n\n/**\n * Decrypt given data using `password`\n * @rtype (password: String, encrypted: String) => Uint8Array\n * @param {String} password - Password to decrypt with\n * @param {String} encrypted - Data to decrypt\n * @return {Buffer} Decrypted data\n */\nexport function decryptKey (password, encrypted) {\n const encryptedBytes = Buffer.from(encrypted)\n const hashedPasswordBytes = sha256hash(password)\n const aesEcb = new Ecb(hashedPasswordBytes)\n return Buffer.from(aesEcb.decrypt(encryptedBytes))\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @rtype (data: String|Buffer, privateKey: Buffer) => Buffer\n * @param {String|Buffer} data - Data to sign\n * @param {String|Buffer} privateKey - Key to sign with\n * @return {Buffer|Uint8Array} Signature\n */\nexport function sign (data, privateKey) {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey))\n}\n\n/**\n * Verify that signature was signed by public key\n * @rtype (str: String, signature: Buffer, publicKey: Buffer) => Boolean\n * @param {String|Buffer} str - Data to verify\n * @param {Buffer} signature - Signature to verify\n * @param {Buffer} publicKey - Key to verify against\n * @return {Boolean} Valid?\n */\nexport function verify (str, signature, publicKey) {\n return nacl.sign.detached.verify(new Uint8Array(str), signature, publicKey)\n}\n\nexport function messageToHash (message) {\n const p = Buffer.from('aeternity Signed Message:\\n', 'utf8')\n const msg = Buffer.from(message, 'utf8')\n if (msg.length >= 0xFD) throw new NotImplementedError('Message too long')\n return hash(Buffer.concat([Buffer.from([p.length]), p, Buffer.from([msg.length]), msg]))\n}\n\nexport function signMessage (message, privateKey) {\n return sign(messageToHash(message), privateKey)\n}\n\nexport function verifyMessage (str, signature, publicKey) {\n return verify(messageToHash(str), signature, publicKey)\n}\n\n/**\n * Check key pair for validity\n *\n * Sign a message, and then verifying that signature\n * @rtype (privateKey: Buffer, publicKey: Buffer) => Boolean\n * @param {Buffer} privateKey - Private key to verify\n * @param {Buffer} publicKey - Public key to verify\n * @return {Boolean} Valid?\n */\nexport function isValidKeypair (privateKey, publicKey) {\n const message = Buffer.from('TheMessage')\n const signature = sign(message, privateKey)\n return verify(message, signature, publicKey)\n}\n","import nacl from 'tweetnacl'\nimport { v4 as uuid } from '@aeternity/uuid'\nimport { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js'\nimport { encode } from '../tx/builder/helpers'\nimport { str2buf } from './bytes'\nimport {\n ArgumentError, InvalidKeyError, UnsupportedAlgorithmError, InvalidPasswordError\n} from './errors'\n\n/**\n * KeyStore module\n * @module @aeternity/aepp-sdk/es/utils/keystore\n * @example import { Keystore } from '@aeternity/aepp-sdk'\n * @example const { Keystore } = require('@aeternity/aepp-sdk')\n */\n\nconst DEFAULTS = {\n crypto: {\n secret_type: 'ed25519',\n symmetric_alg: 'xsalsa20-poly1305',\n kdf: 'argon2id',\n kdf_params: {\n memlimit_kib: 65536,\n opslimit: 3,\n parallelism: 1\n }\n }\n}\n\n// DERIVED KEY PART\nconst DERIVED_KEY_FUNCTIONS = {\n argon2id: deriveKeyUsingArgon2id\n}\n\nexport async function deriveKeyUsingArgon2id (pass, salt, options) {\n const { memlimit_kib: mem, opslimit: time } = options.kdf_params\n\n const result = (await hash({\n hashLen: 32,\n pass,\n salt,\n time,\n mem,\n type: ArgonType.Argon2id\n })).hash\n return Buffer.from(result)\n}\n\n// CRYPTO PART\nconst CRYPTO_FUNCTIONS = {\n 'xsalsa20-poly1305': { encrypt: encryptXsalsa20Poly1305, decrypt: decryptXsalsa20Poly1305 }\n}\n\nfunction encryptXsalsa20Poly1305 ({ plaintext, key, nonce }) {\n return nacl.secretbox(plaintext, nonce, key)\n}\n\nfunction decryptXsalsa20Poly1305 ({ ciphertext, key, nonce }) {\n const res = nacl.secretbox.open(ciphertext, nonce, key)\n if (!res) throw new InvalidPasswordError('Invalid password or nonce')\n return res\n}\n\n/**\n * Symmetric private key encryption using secret (derived) key.\n * @param {Buffer|string} plaintext Data to be encrypted.\n * @param {Buffer|string} key Secret key.\n * @param {Buffer|string} nonce Randomly generated nonce.\n * @param {string=} algo Encryption algorithm (default: DEFAULTS.crypto.symmetric_alg).\n * @return {Buffer} Encrypted data.\n */\nfunction encrypt (plaintext, key, nonce, algo = DEFAULTS.crypto.symmetric_alg) {\n if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)\n return CRYPTO_FUNCTIONS[algo].encrypt({ plaintext, nonce, key })\n}\n\n/**\n * Symmetric private key decryption using secret (derived) key.\n * @param {Buffer|Uint8Array} ciphertext Data to be decrypted.\n * @param {Buffer|Uint8Array} key Secret key.\n * @param {Buffer|Uint8Array} nonce Nonce from key-object.\n * @param {string=} algo Encryption algorithm.\n * @return {Buffer} Decrypted data.\n */\nfunction decrypt (ciphertext, key, nonce, algo) {\n if (!CRYPTO_FUNCTIONS[algo]) throw new UnsupportedAlgorithmError(algo)\n return CRYPTO_FUNCTIONS[algo].decrypt({ ciphertext, nonce, key })\n}\n\n/**\n * Derive secret key from password with key derivation function.\n * @param {string} password User-supplied password.\n * @param {Buffer|Uint8Array} nonce Randomly generated nonce.\n * @param {Object=} options Encryption parameters.\n * @param {string=} options.kdf Key derivation function (default: DEFAULTS.crypto.kdf).\n * @param {Object=} options.kdf_params KDF parameters (default: DEFAULTS.crypto.kdf_params).\n * @return {Buffer} Secret key derived from password.\n */\nasync function deriveKey (password, nonce, options = {\n kdf_params: DEFAULTS.crypto.kdf_params,\n kdf: DEFAULTS.crypto.kdf\n}) {\n if (!nonce) throw new ArgumentError('nonce', 'provided', nonce)\n if (password == null) throw new ArgumentError('password', 'provided', password)\n\n if (!Object.prototype.hasOwnProperty.call(DERIVED_KEY_FUNCTIONS, options.kdf)) {\n throw new UnsupportedAlgorithmError(options.kdf)\n }\n\n return DERIVED_KEY_FUNCTIONS[options.kdf](password, nonce, options)\n}\n\n/**\n * Assemble key data object in secret-storage format.\n * @param {Buffer} name Key name.\n * @param {Buffer} derivedKey Password-derived secret key.\n * @param {Buffer} privateKey Private key.\n * @param {Buffer} nonce Randomly generated 24byte nonce.\n * @param {Buffer} salt Randomly generated 16byte salt.\n * @param {Object=} options Encryption parameters.\n * @param {string=} options.kdf Key derivation function (default: argon2id).\n * @param {string=} options.cipher Symmetric cipher (default: constants.cipher).\n * @param {Object=} options.kdf_params KDF parameters (default: constants.<kdf>).\n * @return {Object}\n */\nfunction marshal (name, derivedKey, privateKey, nonce, salt, options = {}) {\n const opt = Object.assign({}, DEFAULTS.crypto, options)\n return Object.assign(\n { name, version: 1, public_key: getAddressFromPriv(privateKey), id: uuid() },\n {\n crypto: Object.assign(\n {\n secret_type: opt.secret_type,\n symmetric_alg: opt.symmetric_alg,\n ciphertext: Buffer.from(encrypt(Buffer.from(privateKey), derivedKey, nonce, opt.symmetric_alg)).toString('hex'),\n cipher_params: { nonce: Buffer.from(nonce).toString('hex') }\n },\n { kdf: opt.kdf, kdf_params: { ...opt.kdf_params, salt: Buffer.from(salt).toString('hex') } }\n )\n }\n )\n}\n\nexport function getAddressFromPriv (secret) {\n const keys = nacl.sign.keyPair.fromSecretKey(str2buf(secret))\n const publicBuffer = Buffer.from(keys.publicKey)\n return encode(publicBuffer, 'ak')\n}\n\n/**\n * Recover plaintext private key from secret-storage key object.\n * @param {String} password Keystore object password.\n * @param {Object} keyObject Keystore object.\n * @return {Buffer} Plaintext private key.\n */\nexport async function recover (password, keyObject) {\n validateKeyObj(keyObject)\n const nonce = Uint8Array.from(str2buf(keyObject.crypto.cipher_params.nonce))\n const salt = Uint8Array.from(str2buf(keyObject.crypto.kdf_params.salt))\n const kdfParams = keyObject.crypto.kdf_params\n const kdf = keyObject.crypto.kdf\n\n const key = await decrypt(\n Uint8Array.from(str2buf(keyObject.crypto.ciphertext)),\n await deriveKey(password, salt, { kdf, kdf_params: kdfParams }),\n nonce,\n keyObject.crypto.symmetric_alg\n )\n if (!key) throw new InvalidPasswordError('Invalid password')\n\n if (Buffer.from(key).length === 64) return Buffer.from(key).toString('hex')\n return Buffer.from(key).toString('utf-8')\n}\n\n/**\n * Export private key to keystore secret-storage format.\n * @param {String} name Key name.\n * @param {String} password User-supplied password.\n * @param {String|Buffer} privateKey Private key as hex-string or a Buffer.\n * @param {Buffer} nonce Randomly generated 24byte nonce.\n * @param {Buffer} salt Randomly generated 16byte salt.\n * @param {Object=} options Encryption parameters.\n * @param {String=} options.kdf Key derivation function (default: pbkdf2).\n * @param {String=} options.cipher Symmetric cipher (default: constants.cipher).\n * @param {Object=} options.kdfparams KDF parameters (default: constants.<kdf>).\n * @return {Object}\n */\nexport async function dump (\n name,\n password,\n privateKey,\n nonce = nacl.randomBytes(24),\n salt = nacl.randomBytes(16),\n options = {}\n) {\n const opt = Object.assign({}, DEFAULTS.crypto, options)\n return marshal(\n name,\n await deriveKey(password, salt, opt),\n typeof privateKey === 'string' ? Buffer.from(privateKey, 'hex') : privateKey,\n nonce,\n salt,\n opt\n )\n}\n\nexport function validateKeyObj (obj) {\n const root = ['crypto', 'id', 'version', 'public_key']\n const cryptoKeys = ['cipher_params', 'ciphertext', 'symmetric_alg', 'kdf', 'kdf_params']\n\n const missingRootKeys = root.filter(key => !Object.prototype.hasOwnProperty.call(obj, key))\n if (missingRootKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingRootKeys}`)\n\n const missingCryptoKeys = cryptoKeys\n .filter(key => !Object.prototype.hasOwnProperty.call(obj.crypto, key))\n if (missingCryptoKeys.length) throw new InvalidKeyError(`Invalid key file format. Require properties: ${missingCryptoKeys}`)\n\n return true\n}\n","/**\n * Big Number Helpers\n * @module @aeternity/aepp-sdk/es/utils/bignumber\n * @example import { isBigNumber, ceil } from '@aeternity/aepp-sdk/es/utils/bignumber'\n */\nimport BigNumber from 'bignumber.js'\n\n/**\n * Check if value is BigNumber, Number or number string representation\n * @param {String|Number|BigNumber} number number to convert\n * @return {Boolean}\n */\nexport const isBigNumber = (number: string | number | BigNumber): boolean =>\n ['number', 'object', 'string', 'bigint'].includes(typeof number) &&\n (!isNaN(number as number) || Number.isInteger(number) || BigNumber.isBigNumber(number))\n\n/**\n * BigNumber ceil operation\n * @param {BigNumber} bigNumber\n * @return {BigNumber}\n */\nexport const ceil = (bigNumber: BigNumber): BigNumber => bigNumber.integerValue(BigNumber.ROUND_CEIL)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Amount Formatter\n * @module @aeternity/aepp-sdk/es/utils/amount-formatter\n * @example import { AmountFormatter } from '@aeternity/aepp-sdk'\n */\nimport BigNumber from 'bignumber.js'\nimport { isBigNumber } from './bignumber'\nimport { ArgumentError, InvalidDenominationError } from './errors'\n\n/**\n * AE amount formats\n */\nexport const AE_AMOUNT_FORMATS = {\n AE: 'ae',\n MILI_AE: 'miliAE',\n MICRO_AE: 'microAE',\n NANO_AE: 'nanoAE',\n PICO_AE: 'picoAE',\n FEMTO_AE: 'femtoAE',\n AETTOS: 'aettos'\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nexport const DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18\n}\n\n/**\n * Convert amount to AE\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE })\n\n/**\n * Convert amount to aettos\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='ae'] denomination of amount, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE } = {}\n): string => formatAmount(value, { denomination })\n\n/**\n * Convert amount from one to other denomination\n * @param {String|Number|BigNumber} value amount to convert\n * @param {Object} [options={}] options\n * @param {String} [options.denomination='aettos'] denomination of amount, can be ['ae', 'aettos']\n * @param {String} [options.targetDenomination='aettos'] target denomination, can be ['ae', 'aettos']\n * @return {String}\n */\nexport const formatAmount = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n): string => {\n const denominations = Object.values(AE_AMOUNT_FORMATS)\n if (!denominations.includes(denomination)) throw new InvalidDenominationError(`Invalid denomination: ${denomination}`)\n if (!denominations.includes(targetDenomination)) throw new InvalidDenominationError(`Invalid target denomination: ${targetDenomination}`)\n if (!isBigNumber(value)) throw new ArgumentError('value', `a number`, value)\n\n return new BigNumber(value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed()\n}\n\ninterface Prefix {\n name: string\n magnitude: number\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 }\n]\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p))\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find(p => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1]\n\nexport default (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue)\n\n const exp = value.e ?? 0\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp)\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed()\n return `${v}${name !== '' ? ' ' : ''}${name}`\n}\n","import { snakeToPascal, pascalToSnake } from './string'\n\nexport const pause = async (duration: number): Promise<void> =>\n await new Promise(resolve => setTimeout(resolve, duration))\n\nexport const mapObject = (\n object: object,\n fn: (value: [string, any], index: number, array: Array<[string, any]>) => Array<[string, any]>\n): object => Object.fromEntries(Object.entries(object).map(fn))\n\nexport const filterObject = (\n object: object,\n fn: (value: [string, any], index: number, array: Array<[string, any]>) => boolean\n): object => Object.fromEntries(Object.entries(object).filter(fn))\n\n/**\n * Key traversal metafunction\n * @static\n * @function\n * @rtype (fn: (s: String) => String) => (o: Object) => Object\n * @param {Function} fn - Key transformation function\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n */\nexport const traverseKeys = (fn: Function, object: any): any => {\n if (typeof object !== 'object' || object === null) return object\n if (Array.isArray(object)) return object.map(i => traverseKeys(fn, i))\n return mapObject(object, ([key, value]: [string, any]) => [\n fn(key), traverseKeys(fn, value)\n ])\n}\n\n/**\n * snake_case key traversal\n * @static\n * @rtype (o: Object) => Object\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n * @see pascalToSnake\n */\nexport const snakizeKeys = traverseKeys.bind(null, pascalToSnake)\n\n/**\n * PascalCase key traversal\n * @static\n * @rtype (o: Object) => Object\n * @param {Object} object - Object to traverse\n * @return {Object} Transformed object\n * @see snakeToPascal\n */\nexport const pascalizeKeys = traverseKeys.bind(null, snakeToPascal)\n","import BigNumber from 'bignumber.js'\nimport { mapObject } from '../../utils/other'\n\n// # AENS\nexport const NAME_TTL = 180000\n// # max number of block into the future that the name is going to be available\n// # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update\n// # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry\nexport const NAME_MAX_TTL = 36000\nexport const NAME_MAX_CLIENT_TTL = 84600\nexport const CLIENT_TTL = NAME_MAX_CLIENT_TTL\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67\nexport const NAME_FEE_MULTIPLIER = 1e14 // 100000000000000\nexport const NAME_FEE_BID_INCREMENT = 0.05 // # the increment is in percentage\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272\nexport const NAME_BID_TIMEOUT_BLOCKS = 480 // # ~1 day\n// # this is the max length for a domain that requires a base fee to be paid\nexport const NAME_MAX_LENGTH_FEE = 31\nexport const NAME_BID_MAX_LENGTH = 12 // # this is the max length for a domain to be part of a bid\nexport const POINTER_KEY_BY_PREFIX = {\n ak: 'account_pubkey',\n ok: 'oracle_pubkey',\n ct: 'contract_pubkey',\n ch: 'channel'\n}\n// # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290\n// # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times\n// # bid ranges:\nexport const NAME_BID_RANGES = mapObject({\n 31: 3,\n 30: 5,\n 29: 8,\n 28: 13,\n 27: 21,\n 26: 34,\n 25: 55,\n 24: 89,\n 23: 144,\n 22: 233,\n 21: 377,\n 20: 610,\n 19: 987,\n 18: 1597,\n 17: 2584,\n 16: 4181,\n 15: 6765,\n 14: 10946,\n 13: 17711,\n 12: 28657,\n 11: 46368,\n 10: 75025,\n 9: 121393,\n 8: 196418,\n 7: 317811,\n 6: 514229,\n 5: 832040,\n 4: 1346269,\n 3: 2178309,\n 2: 3524578,\n 1: 5702887\n}, ([key, value]) => [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)])\n\n// # ref: https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273\n// # name bid timeouts\nexport const NAME_BID_TIMEOUTS = {\n 13: BigNumber(0),\n 12: BigNumber(NAME_BID_TIMEOUT_BLOCKS), // # 480 blocks\n 8: BigNumber(31).times(NAME_BID_TIMEOUT_BLOCKS), // # 14880 blocks\n 4: BigNumber(62).times(NAME_BID_TIMEOUT_BLOCKS) // # 29760 blocks\n}\n\n// # Tag constant for ids (type uint8)\n// # see https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type\n// # <<Tag:1/unsigned-integer-unit:8, Hash:32/binary-unit:8>>\nconst ID_TAG_ACCOUNT = 1\nconst ID_TAG_NAME = 2\nconst ID_TAG_COMMITMENT = 3\nconst ID_TAG_ORACLE = 4\nconst ID_TAG_CONTRACT = 5\nconst ID_TAG_CHANNEL = 6\n\nexport const ID_TAG = {\n account: ID_TAG_ACCOUNT,\n name: ID_TAG_NAME,\n commitment: ID_TAG_COMMITMENT,\n oracle: ID_TAG_ORACLE,\n contract: ID_TAG_CONTRACT,\n channel: ID_TAG_CHANNEL\n}\n\nexport const PREFIX_ID_TAG = {\n ak: ID_TAG.account,\n nm: ID_TAG.name,\n cm: ID_TAG.commitment,\n ok: ID_TAG.oracle,\n ct: ID_TAG.contract,\n ch: ID_TAG.channel\n}\n\nexport const ID_TAG_PREFIX = mapObject(PREFIX_ID_TAG, ([key, value]) => [value, key])\n","import BigNumber from 'bignumber.js'\nimport { encode as bs58Encode, decode as bs58Decode } from 'bs58'\nimport { hash, salt } from '../../utils/crypto'\nimport { encode, decode } from '../../utils/encoder'\nimport { toBytes } from '../../utils/bytes'\nimport {\n ID_TAG_PREFIX,\n PREFIX_ID_TAG,\n NAME_BID_RANGES,\n NAME_FEE_BID_INCREMENT,\n NAME_BID_TIMEOUTS,\n NAME_MAX_LENGTH_FEE,\n POINTER_KEY_BY_PREFIX\n} from './constants'\nimport { ceil } from '../../utils/bignumber'\nimport {\n TagNotFoundError,\n PrefixNotFoundError,\n InvalidNameError,\n IllegalBidFeeError,\n NoDefaultAensPointerError,\n ArgumentError\n} from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder helper function's\n * @module @aeternity/aepp-sdk/es/tx/builder/helpers\n * @export TxBuilderHelper\n * @example import { TxBuilderHelper } from '@aeternity/aepp-sdk'\n */\n\nexport const createSalt = salt\n\nexport { encode, decode }\n\n/**\n * Build a contract public key\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} ownerId The public key of the owner account\n * @param {number} nonce the nonce of the transaction\n * @return {string} Contract public key\n */\nexport function buildContractId (ownerId, nonce) {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId, 'ak'), ...toBytes(nonce)])\n const b2bHash = hash(ownerIdAndNonce)\n return encode(b2bHash, 'ct')\n}\n\n/**\n * Build a oracle query id\n * @function\n * @function* @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} senderId The public key of the sender account\n * @param {Number} nonce the nonce of the transaction\n * @param {Number} oracleId The oracle public key\n * @return {string} Contract public key\n */\nexport function oracleQueryId (senderId, nonce, oracleId) {\n function _int32 (val) {\n const nonceBE = toBytes(val, true)\n return Buffer.concat([Buffer.alloc(32 - nonceBE.length), nonceBE])\n }\n\n const b2bHash = hash(Buffer.from([...decode(senderId, 'ak'), ..._int32(nonce), ...decode(oracleId, 'ok')]))\n return encode(b2bHash, 'oq')\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {number} salt\n * @return {string} Zero-padded hex string of salt\n */\nexport function formatSalt (salt) {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex')\n}\n\n/**\n * Encode an AENS name\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name Name to encode\n * @return {String} `nm_` prefixed encoded AENS name\n */\nexport function produceNameId (name) {\n ensureNameValid(name)\n return encode(hash(name.toLowerCase()), 'nm')\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n *\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @function commitmentHash\n * @category async\n * @rtype (name: String, salt?: String) => hash: Promise[String]\n * @param {String} name - Name to be registered\n * @param {Number} salt Random salt\n * @return {String} Commitment hash\n */\nexport function commitmentHash (name, salt = createSalt()) {\n ensureNameValid(name)\n return encode(hash(Buffer.concat([Buffer.from(name.toLowerCase()), formatSalt(salt)])), 'cm')\n}\n\n// based on https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md\nconst base64Types = ['ba', 'cb', 'or', 'ov', 'pi', 'ss', 'cs', 'ck', 'cv', 'st', 'tx']\nconst base58Types = ['ak', 'bf', 'bs', 'bx', 'ch', 'cm', 'ct', 'kh', 'mh', 'nm', 'ok', 'oq', 'pp', 'sg', 'th']\n// TODO: add all types with a fixed length\nconst typesLength = {\n ak: 32,\n ct: 32,\n ok: 32\n}\n\nfunction ensureValidLength (data, type) {\n if (!typesLength[type]) return\n if (data.length === typesLength[type]) return\n throw new PayloadLengthError(`Payload should be ${typesLength[type]} bytes, got ${data.length} instead`)\n}\n\nconst getChecksum = payload => sha256hash(sha256hash(payload)).slice(0, 4)\n\nconst addChecksum = (input) => {\n const payload = Buffer.from(input)\n return Buffer.concat([payload, getChecksum(payload)])\n}\n\nfunction getPayload (buffer) {\n const payload = buffer.slice(0, -4)\n if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError()\n return payload\n}\n\nconst base64 = {\n encode: buffer => addChecksum(buffer).toString('base64'),\n decode: string => getPayload(Buffer.from(string, 'base64'))\n}\n\nconst base58 = {\n encode: buffer => bs58.encode(addChecksum(buffer)),\n decode: string => getPayload(bs58.decode(string))\n}\n\n/**\n * Utility function to create and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} hashId Encoded hash\n * @return {Buffer} Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId (hashId) {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId)\n const prefix = hashId.slice(0, 2)\n const idTag = PREFIX_ID_TAG[prefix]\n if (!idTag) throw new TagNotFoundError(prefix)\n return Buffer.from([...toBytes(idTag), ...decode(hashId, prefix)])\n}\n\n/**\n * Utility function to read and _id type\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Data\n * @return {String} Encoided hash string with prefix\n */\nexport function readId (buf) {\n const tag = Buffer.from(buf).readUIntBE(0, 1)\n const prefix = ID_TAG_PREFIX[tag]\n if (!prefix) throw new PrefixNotFoundError(tag)\n return encode(buf.slice(1, buf.length), prefix)\n}\n\n/**\n * Utility function to convert int to bytes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Number|String|BigNumber} val Value\n * @return {Buffer} Buffer Buffer from number(BigEndian)\n */\nexport function writeInt (val) {\n return toBytes(val, true)\n}\n\n/**\n * Utility function to convert bytes to int\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Buffer} buf Value\n * @return {String} Buffer Buffer from number(BigEndian)\n */\nexport function readInt (buf = Buffer.from([])) {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10)\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Serialized pointers array\n */\nexport function buildPointers (pointers) {\n return pointers.map(\n p => [\n toBytes(p.key),\n writeId(p.id)\n ]\n )\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {Array} pointers - Array of pointers\n * ([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])\n * @return {Array} Deserialize pointer array\n */\nexport function readPointers (pointers) {\n return pointers.map(\n ([key, id]) => Object.assign({\n key: key.toString(),\n id: readId(id)\n })\n )\n}\n\nconst AENS_SUFFIX = '.chain'\n\n/**\n * Ensure that AENS name is valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return void\n * @throws Error\n */\nexport function ensureNameValid (name) {\n if (!name || typeof name !== 'string') throw new InvalidNameError('Name must be a string')\n if (!name.endsWith(AENS_SUFFIX)) throw new InvalidNameError(`Name should end with ${AENS_SUFFIX}: ${name}`)\n}\n\n/**\n * Is AENS name valid\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {string} name\n * @return Boolean\n */\nexport function isNameValid (name) {\n try {\n ensureNameValid(name)\n return true\n } catch (error) {\n return false\n }\n}\n\n/**\n * @param identifier - account/oracle/contract address, or channel\n * @returns {String} default AENS pointer key\n * @throws exception when default key not defined\n */\nexport function getDefaultPointerKey (identifier) {\n decode(identifier)\n const prefix = identifier.substr(0, 2)\n return POINTER_KEY_BY_PREFIX[prefix] ||\n (() => { throw new NoDefaultAensPointerError(prefix) })()\n}\n\n/**\n * Get the minimum AENS name fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @return {String} the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee (name) {\n ensureNameValid(name)\n const nameLength = name.length - AENS_SUFFIX.length\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)]\n}\n\n/**\n * Compute bid fee for AENS auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name the AENS name to get the fee for\n * @param {Number|String} startFee Auction start fee\n * @param {Number} [increment=0.5] Bid multiplier(In percentage, must be between 0 and 1)\n * @return {String} Bid fee\n */\nexport function computeBidFee (name, startFee, increment = NAME_FEE_BID_INCREMENT) {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`)\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`)\n return ceil(\n BigNumber(startFee ?? getMinimumNameFee(name)).times(BigNumber(NAME_FEE_BID_INCREMENT).plus(1))\n )\n}\n\n/**\n * Compute auction end height\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @param {Number|String} claimHeight Auction starting height\n * @return {String} Auction end height\n */\nexport function computeAuctionEndBlock (name, claimHeight) {\n ensureNameValid(name)\n const length = name.length - AENS_SUFFIX.length\n const h = (length <= 4 && NAME_BID_TIMEOUTS[4]) ||\n (length <= 8 && NAME_BID_TIMEOUTS[8]) ||\n (length <= 12 && NAME_BID_TIMEOUTS[12]) ||\n NAME_BID_TIMEOUTS[13]\n return h.plus(claimHeight).toString(10)\n}\n\n/**\n * Is name accept going to auction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/helpers\n * @param {String} name\n * @return {Boolean}\n */\nexport function isAuctionName (name) {\n ensureNameValid(name)\n return name.length < 13 + AENS_SUFFIX.length\n}\n","import {\n writeId, readId, isNameValid, produceNameId, ensureNameValid, getMinimumNameFee, readInt, writeInt\n} from './helpers'\nimport { InsufficientNameFeeError, IllegalArgumentError } from '../../utils/errors'\n\nexport class Field {\n static serialize (value) {\n return value\n }\n\n static deserialize (value) {\n return value\n }\n}\n\nexport class Name extends Field {\n static serialize (value) {\n ensureNameValid(value)\n return Buffer.from(value)\n }\n\n static deserialize (value) {\n return value.toString()\n }\n}\n\nexport class NameId extends Field {\n static serialize (value) {\n return writeId(isNameValid(value) ? produceNameId(value) : value)\n }\n\n static deserialize (value) {\n return readId(value)\n }\n}\n\nexport class NameFee extends Field {\n static serialize (value, { name }) {\n const minNameFee = getMinimumNameFee(name)\n value ??= minNameFee\n if (minNameFee.gt(value)) {\n throw new InsufficientNameFeeError(value, minNameFee)\n }\n return writeInt(value)\n }\n\n static deserialize (value) {\n return readInt(value)\n }\n}\n\nexport class Deposit extends Field {\n static serialize (value, { name }) {\n if (+value) throw new IllegalArgumentError(`Contract deposit is not refundable, so it should be equal 0, got ${value} instead`)\n return writeInt(0)\n }\n\n static deserialize (value) {\n return readInt(value)\n }\n}\n","/**\n * Transaction Schema for TxBuilder\n * @module @aeternity/aepp-sdk/es/tx/builder/schema\n * @export TxSchema\n * @example import { SCHEMA } from '@aeternity/aepp-sdk'\n */\n// # RLP version number\n// # https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization\n\nimport BigNumber from 'bignumber.js'\nimport { Name, NameId, NameFee, Deposit } from './field-types'\n\nexport * from './constants'\nexport const VSN = 1\nexport const VSN_2 = 2\n\n// # TRANSACTION DEFAULT TTL\nexport const TX_TTL = 0\n// # ORACLE\nexport const QUERY_FEE = 30000\nexport const ORACLE_TTL = { type: 'delta', value: 500 }\nexport const QUERY_TTL = { type: 'delta', value: 10 }\nexport const RESPONSE_TTL = { type: 'delta', value: 10 }\n// # CONTRACT\nexport const AMOUNT = 0\nexport const GAS_MAX = 1600000 - 21000\nexport const MIN_GAS_PRICE = 1e9\nexport const MAX_AUTH_FUN_GAS = 50000\nexport const DRY_RUN_ACCOUNT = { pub: 'ak_11111111111111111111111111111111273Yts', amount: '100000000000000000000000000000000000' }\n\n// # OBJECT tags\n// # see https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization\nconst OBJECT_TAG_ACCOUNT = 10\nexport const OBJECT_TAG_SIGNED_TRANSACTION = 11\nconst OBJECT_TAG_SPEND_TRANSACTION = 12\nconst OBJECT_TAG_ORACLE_REGISTER_TRANSACTION = 22\nconst OBJECT_TAG_ORACLE_QUERY_TRANSACTION = 23\nconst OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION = 24\nconst OBJECT_TAG_ORACLE_EXTEND_TRANSACTION = 25\nconst OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION = 32\nconst OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION = 33\nconst OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION = 34\nconst OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION = 35\nconst OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION = 36\nconst OBJECT_TAG_CONTRACT = 40\nconst OBJECT_TAG_CONTRACT_CALL = 41\nconst OBJECT_TAG_CONTRACT_CREATE_TRANSACTION = 42\nconst OBJECT_TAG_CONTRACT_CALL_TRANSACTION = 43\nconst OBJECT_TAG_CHANNEL_CREATE_TX = 50\nconst OBJECT_TAG_CHANNEL_DEPOSIT_TX = 51\nconst OBJECT_TAG_CHANNEL_WITHRAW_TX = 52\nconst OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX = 53\nconst OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX = 54\nconst OBJECT_TAG_CHANNEL_SLASH_TX = 55\nconst OBJECT_TAG_CHANNEL_SETTLE_TX = 56\nconst OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX = 521\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_TX = 57\nconst OBJECT_TAG_CHANNEL = 58\nconst OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX = 59\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX = 570\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX = 571\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX = 572\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX = 573\nconst OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX = 574\nconst OBJECT_TAG_CHANNEL_RECONNECT_TX = 575\nconst OBJECT_TAG_PROOF_OF_INCLUSION = 60\nconst OBJECT_TAG_STATE_TREES = 62\nconst OBJECT_TAG_MERKLE_PATRICIA_TREE = 63\nconst OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE = 64\nconst OBJECT_TAG_CONTRACTS_TREE = 621\nconst OBJECT_TAG_CONTRACT_CALLS_TREE = 622\nconst OBJECT_TAG_CHANNELS_TREE = 623\nconst OBJECT_TAG_NAMESERVICE_TREE = 624\nconst OBJECT_TAG_ORACLES_TREE = 625\nconst OBJECT_TAG_ACCOUNTS_TREE = 626\nconst OBJECT_TAG_GA_ATTACH = 80\nconst OBJECT_TAG_GA_META = 81\nconst OBJECT_TAG_PAYING_FOR = 82\nconst OBJECT_TAG_SOPHIA_BYTE_CODE = 70\n\nconst TX_FIELD = (name, type, prefix) => [name, type, prefix]\nconst TX_SCHEMA_FIELD = (schema, objectId) => [schema, objectId]\n\n/**\n * @constant\n * @description Object with transaction types\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/schema\n * @property {String} signed\n * @property {String} spend\n * @property {String} nameClaim\n * @property {String} namePreClaim\n * @property {String} nameUpdate\n * @property {String} nameRevoke\n * @property {String} nameTransfer\n * @property {String} contractCreate\n * @property {String} contractCall\n * @property {String} oracleRegister\n * @property {String} oracleExtend\n * @property {String} oracleQuery\n * @property {String} oracleResponse\n */\nexport const TX_TYPE = {\n account: 'account',\n signed: 'signedTx',\n spend: 'spendTx',\n // AENS\n nameClaim: 'nameClaimTx',\n namePreClaim: 'namePreClaimTx',\n nameUpdate: 'nameUpdateTx',\n nameRevoke: 'nameRevokeTx',\n nameTransfer: 'nameTransfer',\n // CONTRACT\n contract: 'contract',\n contractCreate: 'contractCreateTx',\n contractCall: 'contractCallTx',\n contractCallResult: 'contractCallResult',\n // ORACLE\n oracleRegister: 'oracleRegister',\n oracleExtend: 'oracleExtend',\n oracleQuery: 'oracleQuery',\n oracleResponse: 'oracleResponse',\n // STATE CHANNEL\n channelCreate: 'channelCreate',\n channelCloseMutual: 'channelCloseMutual',\n channelCloseSolo: 'channelCloseSolo',\n channelSlash: 'channelSlash',\n channelDeposit: 'channelDeposit',\n channelWithdraw: 'channelWithdraw',\n channelSettle: 'channelSettle',\n channelOffChain: 'channelOffChain',\n channelForceProgress: 'channelForceProgress',\n channel: 'channel',\n channelSnapshotSolo: 'channelSnapshotSolo',\n channelOffChainUpdateTransfer: 'channelOffChainUpdateTransfer',\n channelOffChainUpdateDeposit: 'channelOffChainUpdateDeposit',\n channelOffChainUpdateWithdrawal: 'channelOffChainUpdateWithdrawal',\n channelOffChainCreateContract: 'channelOffChainCreateContract',\n channelOffChainCallContract: 'channelOffChainCallContract',\n channelReconnect: 'channelReconnect',\n proofOfInclusion: 'proofOfInclusion',\n stateTrees: 'stateTrees',\n merklePatriciaTree: 'merklePatriciaTree',\n merklePatriciaTreeValue: 'merklePatriciaTreeValue',\n contractsTree: 'contractsTree',\n contractCallsTree: 'contractCallsTree',\n channelsTree: 'channelsTree',\n nameserviceTree: 'nameserviceTree',\n oraclesTree: 'oraclesTree',\n accountsTree: 'accountsTree',\n gaAttach: 'gaAttach',\n gaMeta: 'gaMeta',\n payingFor: 'payingFor',\n sophiaByteCode: 'sophiaByteCode'\n}\n\n// # see https://github.com/aeternity/protocol/blob/minerva/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain\nexport const VM_VERSIONS = {\n NO_VM: 0,\n SOPHIA: 1,\n SOPHIA_IMPROVEMENTS_MINERVA: 3,\n SOPHIA_IMPROVEMENTS_FORTUNA: 4,\n FATE: 5,\n SOPHIA_IMPROVEMENTS_LIMA: 6,\n FATE_2: 7\n}\n// # see https://github.com/aeternity/protocol/blob/minerva/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain\nexport const ABI_VERSIONS = {\n NO_ABI: 0,\n SOPHIA: 1,\n FATE: 3\n}\n\nexport const PROTOCOL_VERSIONS = {\n IRIS: 5\n}\n\n// First abi/vm by default\nexport const PROTOCOL_VM_ABI = {\n [PROTOCOL_VERSIONS.IRIS]: {\n [TX_TYPE.contractCreate]: {\n vmVersion: [VM_VERSIONS.FATE_2], abiVersion: [ABI_VERSIONS.FATE]\n },\n // TODO: Ensure that AEVM is still available here\n [TX_TYPE.contractCall]: {\n vmVersion: [\n VM_VERSIONS.FATE_2,\n VM_VERSIONS.FATE,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_LIMA,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_FORTUNA,\n VM_VERSIONS.SOPHIA,\n VM_VERSIONS.SOPHIA_IMPROVEMENTS_MINERVA\n ],\n abiVersion: [ABI_VERSIONS.FATE, ABI_VERSIONS.SOPHIA]\n },\n [TX_TYPE.oracleRegister]: {\n vmVersion: [], abiVersion: [ABI_VERSIONS.NO_ABI, ABI_VERSIONS.SOPHIA]\n }\n }\n}\n\nexport const OBJECT_ID_TX_TYPE = {\n [OBJECT_TAG_ACCOUNT]: TX_TYPE.account,\n [OBJECT_TAG_SIGNED_TRANSACTION]: TX_TYPE.signed,\n [OBJECT_TAG_SPEND_TRANSACTION]: TX_TYPE.spend,\n // AENS\n [OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION]: TX_TYPE.nameClaim,\n [OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION]: TX_TYPE.namePreClaim,\n [OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION]: TX_TYPE.nameUpdate,\n [OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION]: TX_TYPE.nameRevoke,\n [OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION]: TX_TYPE.nameTransfer,\n // CONTRACT\n [OBJECT_TAG_CONTRACT]: TX_TYPE.contract,\n [OBJECT_TAG_CONTRACT_CREATE_TRANSACTION]: TX_TYPE.contractCreate,\n [OBJECT_TAG_CONTRACT_CALL_TRANSACTION]: TX_TYPE.contractCall,\n [OBJECT_TAG_CONTRACT_CALL]: TX_TYPE.contractCallResult,\n // ORACLE\n [OBJECT_TAG_ORACLE_REGISTER_TRANSACTION]: TX_TYPE.oracleRegister,\n [OBJECT_TAG_ORACLE_EXTEND_TRANSACTION]: TX_TYPE.oracleExtend,\n [OBJECT_TAG_ORACLE_QUERY_TRANSACTION]: TX_TYPE.oracleQuery,\n [OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION]: TX_TYPE.oracleResponse,\n // STATE CHANNEL\n [OBJECT_TAG_CHANNEL_CREATE_TX]: TX_TYPE.channelCreate,\n [OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX]: TX_TYPE.channelCloseMutual,\n [OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX]: TX_TYPE.channelCloseSolo,\n [OBJECT_TAG_CHANNEL_SLASH_TX]: TX_TYPE.channelSlash,\n [OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX]: TX_TYPE.channelForceProgress,\n [OBJECT_TAG_CHANNEL_DEPOSIT_TX]: TX_TYPE.channelDeposit,\n [OBJECT_TAG_CHANNEL_WITHRAW_TX]: TX_TYPE.channelWithdraw,\n [OBJECT_TAG_CHANNEL_SETTLE_TX]: TX_TYPE.channelSettle,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_TX]: TX_TYPE.channelOffChain,\n [OBJECT_TAG_CHANNEL]: TX_TYPE.channel,\n [OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX]: TX_TYPE.channelSnapshotSolo,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX]: TX_TYPE.channelOffChainUpdateTransfer,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX]: TX_TYPE.channelOffChainUpdateDeposit,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX]: TX_TYPE.channelOffChainUpdateWithdrawal,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX]: TX_TYPE.channelOffChainCreateContract,\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX]: TX_TYPE.channelOffChainCallContract,\n [OBJECT_TAG_CHANNEL_RECONNECT_TX]: TX_TYPE.channelReconnect,\n [OBJECT_TAG_PROOF_OF_INCLUSION]: TX_TYPE.proofOfInclusion,\n [OBJECT_TAG_STATE_TREES]: TX_TYPE.stateTrees,\n [OBJECT_TAG_MERKLE_PATRICIA_TREE]: TX_TYPE.merklePatriciaTree,\n [OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE]: TX_TYPE.merklePatriciaTreeValue,\n [OBJECT_TAG_CONTRACTS_TREE]: TX_TYPE.contractsTree,\n [OBJECT_TAG_CONTRACT_CALLS_TREE]: TX_TYPE.contractCallsTree,\n [OBJECT_TAG_CHANNELS_TREE]: TX_TYPE.channelsTree,\n [OBJECT_TAG_NAMESERVICE_TREE]: TX_TYPE.nameserviceTree,\n [OBJECT_TAG_ORACLES_TREE]: TX_TYPE.oraclesTree,\n [OBJECT_TAG_ACCOUNTS_TREE]: TX_TYPE.accountsTree,\n [OBJECT_TAG_GA_ATTACH]: TX_TYPE.gaAttach,\n [OBJECT_TAG_GA_META]: TX_TYPE.gaMeta,\n [OBJECT_TAG_PAYING_FOR]: TX_TYPE.payingFor,\n [OBJECT_TAG_SOPHIA_BYTE_CODE]: TX_TYPE.sophiaByteCode\n}\n\nexport const FIELD_TYPES = {\n int: 'int',\n amount: 'amount',\n id: 'id',\n ids: 'ids',\n string: 'string',\n binary: 'binary',\n rlpBinary: 'rlpBinary',\n rlpBinaries: 'rlpBinaries',\n rawBinary: 'rawBinary',\n bool: 'bool',\n hex: 'hex',\n signatures: 'signatures',\n pointers: 'pointers',\n offChainUpdates: 'offChainUpdates',\n callStack: 'callStack',\n proofOfInclusion: 'proofOfInclusion',\n mptrees: 'mptrees',\n callReturnType: 'callReturnType',\n ctVersion: 'ctVersion',\n sophiaCodeTypeInfo: 'sophiaCodeTypeInfo',\n payload: 'payload',\n any: 'any',\n stateTree: 'stateTree'\n}\n\n// FEE CALCULATION\nexport const BASE_GAS = 15000\nexport const GAS_PER_BYTE = 20\nexport const DEFAULT_FEE = 20000\nexport const KEY_BLOCK_INTERVAL = 3\n\n// MAP WITH FEE CALCULATION https://github.com/aeternity/protocol/blob/master/consensus/consensus.md#gas\nexport const TX_FEE_BASE_GAS = (txType) => {\n const factor = ({\n [TX_TYPE.channelForceProgress]: 30,\n [TX_TYPE.channelOffChain]: 0,\n [TX_TYPE.channelOffChainCallContract]: 0,\n [TX_TYPE.channelOffChainCreateContract]: 0,\n [TX_TYPE.channelOffChainUpdateDeposit]: 0,\n [TX_TYPE.channelOffChainUpdateWithdrawal]: 0,\n [TX_TYPE.channelOffChainUpdateTransfer]: 0,\n [TX_TYPE.contractCreate]: 5,\n [TX_TYPE.contractCall]: 12,\n [TX_TYPE.gaAttach]: 5,\n [TX_TYPE.gaMeta]: 5,\n [TX_TYPE.payingFor]: 1 / 5\n })[txType] || 1\n return new BigNumber(factor * BASE_GAS)\n}\n\nexport const TX_FEE_OTHER_GAS = (txType, txSize, { relativeTtl, innerTxSize }) => {\n switch (txType) {\n case TX_TYPE.oracleRegister:\n case TX_TYPE.oracleExtend:\n case TX_TYPE.oracleQuery:\n case TX_TYPE.oracleResponse:\n return new BigNumber(txSize)\n .times(GAS_PER_BYTE)\n .plus(\n Math.ceil(32000 * relativeTtl / Math.floor(60 * 24 * 365 / KEY_BLOCK_INTERVAL))\n )\n case TX_TYPE.gaMeta:\n case TX_TYPE.payingFor:\n return new BigNumber(txSize).minus(innerTxSize).times(GAS_PER_BYTE)\n default:\n return new BigNumber(txSize).times(GAS_PER_BYTE)\n }\n}\n\nconst BASE_TX = [\n TX_FIELD('tag', FIELD_TYPES.int),\n TX_FIELD('VSN', FIELD_TYPES.int)\n]\n\nexport const CONTRACT_BYTE_CODE_LIMA = [\n ...BASE_TX,\n TX_FIELD('sourceCodeHash', FIELD_TYPES.rawBinary),\n TX_FIELD('typeInfo', FIELD_TYPES.sophiaCodeTypeInfo),\n TX_FIELD('byteCode', FIELD_TYPES.rawBinary),\n TX_FIELD('compilerVersion', FIELD_TYPES.string),\n TX_FIELD('payable', FIELD_TYPES.bool)\n]\n\nconst ACCOUNT_TX_2 = [\n ...BASE_TX,\n TX_FIELD('flags', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('balance', FIELD_TYPES.int),\n TX_FIELD('gaContract', FIELD_TYPES.id, ['ct', 'nm']),\n TX_FIELD('gaAuthFun', FIELD_TYPES.binary, 'cb')\n]\n\nconst SPEND_TX = [\n ...BASE_TX,\n TX_FIELD('senderId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('recipientId', FIELD_TYPES.id, ['ak', 'nm']),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('payload', FIELD_TYPES.payload)\n]\n\nconst SIGNED_TX = [\n ...BASE_TX,\n TX_FIELD('signatures', FIELD_TYPES.signatures),\n TX_FIELD('encodedTx', FIELD_TYPES.rlpBinary)\n]\n\nconst NAME_PRE_CLAIM_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('commitmentId', FIELD_TYPES.id, 'cm'),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_CLAIM_TX_2 = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('name', Name),\n TX_FIELD('nameSalt', FIELD_TYPES.int),\n TX_FIELD('nameFee', NameFee),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_UPDATE_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', NameId),\n TX_FIELD('nameTtl', FIELD_TYPES.int),\n TX_FIELD('pointers', FIELD_TYPES.pointers),\n TX_FIELD('clientTtl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_TRANSFER_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', NameId),\n TX_FIELD('recipientId', FIELD_TYPES.id, ['ak', 'nm']),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst NAME_REVOKE_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('nameId', NameId),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('owner', FIELD_TYPES.id, 'ak'),\n TX_FIELD('ctVersion', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('log', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('active', FIELD_TYPES.bool),\n TX_FIELD('referers', FIELD_TYPES.ids, 'ak'),\n TX_FIELD('deposit', Deposit)\n]\n\nconst GA_ATTACH_TX = [\n ...BASE_TX,\n TX_FIELD('ownerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('authFun', FIELD_TYPES.rawBinary),\n TX_FIELD('ctVersion', FIELD_TYPES.ctVersion),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst GA_META_TX_2 = [\n ...BASE_TX,\n TX_FIELD('gaId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('authData', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('tx', FIELD_TYPES.rlpBinary)\n]\n\nconst PAYING_FOR_TX = [\n ...BASE_TX,\n TX_FIELD('payerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('tx', FIELD_TYPES.rlpBinary)\n]\n\nconst CONTRACT_CREATE_TX = [\n ...BASE_TX,\n TX_FIELD('ownerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('ctVersion', FIELD_TYPES.ctVersion),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('deposit', Deposit),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CONTRACT_CALL_TX = [\n ...BASE_TX,\n TX_FIELD('callerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('contractId', FIELD_TYPES.id, ['ct', 'nm']),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('amount', FIELD_TYPES.amount),\n TX_FIELD('gas', FIELD_TYPES.int),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CONTRACT_CALL_RESULT_TX = [\n ...BASE_TX,\n TX_FIELD('callerId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('callerNonce', FIELD_TYPES.int),\n TX_FIELD('height', FIELD_TYPES.int),\n TX_FIELD('contractId', FIELD_TYPES.id, 'ct'),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('gasUsed', FIELD_TYPES.int),\n TX_FIELD('returnValue', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('returnType', FIELD_TYPES.callReturnType),\n // TODO: add serialization for\n // <log> :: [ { <address> :: id, [ <topics> :: binary() ], <data> :: binary() } ]\n TX_FIELD('log', FIELD_TYPES.rawBinary)\n]\n\nconst ORACLE_REGISTER_TX = [\n ...BASE_TX,\n TX_FIELD('accountId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('queryFormat', FIELD_TYPES.string),\n TX_FIELD('responseFormat', FIELD_TYPES.string),\n TX_FIELD('queryFee', FIELD_TYPES.amount),\n TX_FIELD('oracleTtlType', FIELD_TYPES.int),\n TX_FIELD('oracleTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('abiVersion', FIELD_TYPES.int)\n]\n\nconst ORACLE_EXTEND_TX = [\n ...BASE_TX,\n TX_FIELD('oracleId', FIELD_TYPES.id, ['ok', 'nm']),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('oracleTtlType', FIELD_TYPES.int),\n TX_FIELD('oracleTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst ORACLE_QUERY_TX = [\n ...BASE_TX,\n TX_FIELD('senderId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('oracleId', FIELD_TYPES.id, ['ok', 'nm']),\n TX_FIELD('query', FIELD_TYPES.string),\n TX_FIELD('queryFee', FIELD_TYPES.amount),\n TX_FIELD('queryTtlType', FIELD_TYPES.int),\n TX_FIELD('queryTtlValue', FIELD_TYPES.int),\n TX_FIELD('responseTtlType', FIELD_TYPES.int),\n TX_FIELD('responseTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\nconst ORACLE_RESPOND_TX = [\n ...BASE_TX,\n TX_FIELD('oracleId', FIELD_TYPES.id, 'ok'),\n TX_FIELD('nonce', FIELD_TYPES.int),\n TX_FIELD('queryId', FIELD_TYPES.binary, 'oq'),\n TX_FIELD('response', FIELD_TYPES.string),\n TX_FIELD('responseTtlType', FIELD_TYPES.int),\n TX_FIELD('responseTtlValue', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CREATE_TX_2 = [\n ...BASE_TX,\n TX_FIELD('initiator', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmount', FIELD_TYPES.int),\n TX_FIELD('responder', FIELD_TYPES.id, 'ak'),\n TX_FIELD('responderAmount', FIELD_TYPES.int),\n TX_FIELD('channelReserve', FIELD_TYPES.int),\n TX_FIELD('lockPeriod', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('initiatorDelegateIds', FIELD_TYPES.string),\n TX_FIELD('responderDelegateIds', FIELD_TYPES.string),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_DEPOSIT_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_WITHDRAW_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('toId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CLOSE_MUTUAL_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmountFinal', FIELD_TYPES.int),\n TX_FIELD('responderAmountFinal', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_CLOSE_SOLO_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('poi', FIELD_TYPES.binary, 'pi'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_SLASH_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('poi', FIELD_TYPES.binary, 'pi'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_SETTLE_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('initiatorAmountFinal', FIELD_TYPES.int),\n TX_FIELD('responderAmountFinal', FIELD_TYPES.int),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_FORCE_PROGRESS_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('update', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st'),\n TX_FIELD('offChainTrees', FIELD_TYPES.stateTree),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_TX_2 = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('stateHash', FIELD_TYPES.binary, 'st')\n]\n\nconst CHANNEL_TX_3 = [\n ...BASE_TX,\n TX_FIELD('initiator', FIELD_TYPES.id, 'ak'),\n TX_FIELD('responder', FIELD_TYPES.id, 'ak'),\n TX_FIELD('channelAmount', FIELD_TYPES.int),\n TX_FIELD('initiatorAmount', FIELD_TYPES.int),\n TX_FIELD('responderAmount', FIELD_TYPES.int),\n TX_FIELD('channelReserve', FIELD_TYPES.int),\n TX_FIELD('initiatorDelegateIds', FIELD_TYPES.ids),\n TX_FIELD('responderDelegateIds', FIELD_TYPES.ids),\n TX_FIELD('stateHash', FIELD_TYPES.hex),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('soloRound', FIELD_TYPES.int),\n TX_FIELD('lockPeriod', FIELD_TYPES.int),\n TX_FIELD('lockedUntil', FIELD_TYPES.int),\n TX_FIELD('initiatorAuth', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('responderAuth', FIELD_TYPES.binary, 'cb')\n]\n\nconst CHANNEL_SNAPSHOT_SOLO_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('fromId', FIELD_TYPES.id, 'ak'),\n TX_FIELD('payload', FIELD_TYPES.binary, 'tx'),\n TX_FIELD('ttl', FIELD_TYPES.int),\n TX_FIELD('fee', FIELD_TYPES.int),\n TX_FIELD('nonce', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('owner', FIELD_TYPES.id, 'ak'),\n TX_FIELD('ctVersion', FIELD_TYPES.int),\n TX_FIELD('code', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('deposit', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb')\n]\n\nconst CHANNEL_OFFCHAIN_CALL_CONTRACT_TX = [\n ...BASE_TX,\n TX_FIELD('caller', FIELD_TYPES.id, 'ak'),\n TX_FIELD('contract', FIELD_TYPES.id, 'ct'),\n TX_FIELD('abiVersion', FIELD_TYPES.int),\n TX_FIELD('amount', FIELD_TYPES.int),\n TX_FIELD('callData', FIELD_TYPES.binary, 'cb'),\n TX_FIELD('callStack', FIELD_TYPES.callStack),\n TX_FIELD('gasPrice', FIELD_TYPES.int),\n TX_FIELD('gasLimit', FIELD_TYPES.int)\n]\n\nconst CHANNEL_RECONNECT_TX = [\n ...BASE_TX,\n TX_FIELD('channelId', FIELD_TYPES.id, 'ch'),\n TX_FIELD('round', FIELD_TYPES.int),\n TX_FIELD('role', FIELD_TYPES.string),\n TX_FIELD('pubkey', FIELD_TYPES.id, 'ak')\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('to', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX = [\n ...BASE_TX,\n TX_FIELD('from', FIELD_TYPES.id, 'ak'),\n TX_FIELD('amount', FIELD_TYPES.int)\n]\n\nconst PROOF_OF_INCLUSION_TX = [\n ...BASE_TX,\n TX_FIELD('accounts', FIELD_TYPES.mptrees),\n TX_FIELD('calls', FIELD_TYPES.mptrees),\n TX_FIELD('channels', FIELD_TYPES.mptrees),\n TX_FIELD('contracts', FIELD_TYPES.mptrees),\n TX_FIELD('ns', FIELD_TYPES.mptrees),\n TX_FIELD('oracles', FIELD_TYPES.mptrees)\n]\n\nconst STATE_TREES_TX = [\n ...BASE_TX,\n TX_FIELD('contracts', FIELD_TYPES.rlpBinary),\n TX_FIELD('calls', FIELD_TYPES.rlpBinary),\n TX_FIELD('channels', FIELD_TYPES.rlpBinary),\n TX_FIELD('ns', FIELD_TYPES.rlpBinary),\n TX_FIELD('oracles', FIELD_TYPES.rlpBinary),\n TX_FIELD('accounts', FIELD_TYPES.rlpBinary)\n]\n\nconst MERKLE_PATRICIA_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('values', FIELD_TYPES.rlpBinaries)\n]\n\nconst MERKLE_PATRICIA_TREE_VALUE_TX = [\n ...BASE_TX,\n TX_FIELD('key', FIELD_TYPES.hex),\n TX_FIELD('value', FIELD_TYPES.rawBinary)\n]\n\nconst CONTRACTS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('contracts', FIELD_TYPES.rlpBinary)\n]\n\nconst CONTRACT_CALLS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('calls', FIELD_TYPES.rlpBinary)\n]\n\nconst CHANNELS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('channels', FIELD_TYPES.rlpBinary)\n]\n\nconst NAMESERVICE_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('mtree', FIELD_TYPES.rlpBinary)\n]\n\nconst ORACLES_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('otree', FIELD_TYPES.rlpBinary)\n]\n\nconst ACCOUNTS_TREE_TX = [\n ...BASE_TX,\n TX_FIELD('accounts', FIELD_TYPES.rlpBinary)\n]\n\nexport const TX_SERIALIZATION_SCHEMA = {\n [TX_TYPE.account]: {\n 2: TX_SCHEMA_FIELD(ACCOUNT_TX_2, OBJECT_TAG_ACCOUNT)\n },\n [TX_TYPE.signed]: {\n 1: TX_SCHEMA_FIELD(SIGNED_TX, OBJECT_TAG_SIGNED_TRANSACTION)\n },\n [TX_TYPE.spend]: {\n 1: TX_SCHEMA_FIELD(SPEND_TX, OBJECT_TAG_SPEND_TRANSACTION)\n },\n [TX_TYPE.namePreClaim]: {\n 1: TX_SCHEMA_FIELD(NAME_PRE_CLAIM_TX, OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION)\n },\n [TX_TYPE.nameClaim]: {\n 2: TX_SCHEMA_FIELD(NAME_CLAIM_TX_2, OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION)\n },\n [TX_TYPE.nameUpdate]: {\n 1: TX_SCHEMA_FIELD(NAME_UPDATE_TX, OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION)\n },\n [TX_TYPE.nameTransfer]: {\n 1: TX_SCHEMA_FIELD(NAME_TRANSFER_TX, OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION)\n },\n [TX_TYPE.nameRevoke]: {\n 1: TX_SCHEMA_FIELD(NAME_REVOKE_TX, OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION)\n },\n [TX_TYPE.contract]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_TX, OBJECT_TAG_CONTRACT)\n },\n [TX_TYPE.contractCreate]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CREATE_TX, OBJECT_TAG_CONTRACT_CREATE_TRANSACTION)\n },\n [TX_TYPE.contractCall]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_TX, OBJECT_TAG_CONTRACT_CALL_TRANSACTION)\n },\n [TX_TYPE.contractCallResult]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_RESULT_TX, OBJECT_TAG_CONTRACT_CALL)\n },\n [TX_TYPE.oracleRegister]: {\n 1: TX_SCHEMA_FIELD(ORACLE_REGISTER_TX, OBJECT_TAG_ORACLE_REGISTER_TRANSACTION)\n },\n [TX_TYPE.oracleExtend]: {\n 1: TX_SCHEMA_FIELD(ORACLE_EXTEND_TX, OBJECT_TAG_ORACLE_EXTEND_TRANSACTION)\n },\n [TX_TYPE.oracleQuery]: {\n 1: TX_SCHEMA_FIELD(ORACLE_QUERY_TX, OBJECT_TAG_ORACLE_QUERY_TRANSACTION)\n },\n [TX_TYPE.oracleResponse]: {\n 1: TX_SCHEMA_FIELD(ORACLE_RESPOND_TX, OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION)\n },\n [TX_TYPE.channelCreate]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_CREATE_TX_2, OBJECT_TAG_CHANNEL_CREATE_TX)\n },\n [TX_TYPE.channelCloseMutual]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_MUTUAL_TX, OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX)\n },\n [TX_TYPE.channelCloseSolo]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_SOLO_TX, OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX)\n },\n [TX_TYPE.channelSlash]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SLASH_TX, OBJECT_TAG_CHANNEL_SLASH_TX)\n },\n [TX_TYPE.channelDeposit]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_DEPOSIT_TX, OBJECT_TAG_CHANNEL_DEPOSIT_TX)\n },\n [TX_TYPE.channelWithdraw]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_WITHDRAW_TX, OBJECT_TAG_CHANNEL_WITHRAW_TX)\n },\n [TX_TYPE.channelSettle]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SETTLE_TX, OBJECT_TAG_CHANNEL_SETTLE_TX)\n },\n [TX_TYPE.channelForceProgress]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_FORCE_PROGRESS_TX, OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX)\n },\n [TX_TYPE.channelOffChain]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_TX_2, OBJECT_TAG_CHANNEL_OFFCHAIN_TX)\n },\n [TX_TYPE.channel]: {\n 3: TX_SCHEMA_FIELD(CHANNEL_TX_3, OBJECT_TAG_CHANNEL)\n },\n [TX_TYPE.channelSnapshotSolo]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SNAPSHOT_SOLO_TX, OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX)\n },\n [TX_TYPE.channelOffChainUpdateTransfer]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX\n )\n },\n [TX_TYPE.channelOffChainUpdateDeposit]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX\n )\n },\n [TX_TYPE.channelOffChainUpdateWithdrawal]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX\n )\n },\n [TX_TYPE.channelOffChainCreateContract]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX\n )\n },\n [TX_TYPE.channelOffChainCallContract]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CALL_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX\n )\n },\n [TX_TYPE.channelReconnect]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_RECONNECT_TX, OBJECT_TAG_CHANNEL_RECONNECT_TX)\n },\n [TX_TYPE.proofOfInclusion]: {\n 1: TX_SCHEMA_FIELD(PROOF_OF_INCLUSION_TX, OBJECT_TAG_PROOF_OF_INCLUSION)\n },\n [TX_TYPE.stateTrees]: {\n 1: TX_SCHEMA_FIELD(STATE_TREES_TX, OBJECT_TAG_STATE_TREES)\n },\n [TX_TYPE.merklePatriciaTree]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE)\n },\n [TX_TYPE.merklePatriciaTreeValue]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_VALUE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE)\n },\n [TX_TYPE.contractsTree]: {\n 1: TX_SCHEMA_FIELD(CONTRACTS_TREE_TX, OBJECT_TAG_CONTRACTS_TREE)\n },\n [TX_TYPE.contractCallsTree]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALLS_TREE_TX, OBJECT_TAG_CONTRACT_CALLS_TREE)\n },\n [TX_TYPE.channelsTree]: {\n 1: TX_SCHEMA_FIELD(CHANNELS_TREE_TX, OBJECT_TAG_CHANNELS_TREE)\n },\n [TX_TYPE.nameserviceTree]: {\n 1: TX_SCHEMA_FIELD(NAMESERVICE_TREE_TX, OBJECT_TAG_NAMESERVICE_TREE)\n },\n [TX_TYPE.oraclesTree]: {\n 1: TX_SCHEMA_FIELD(ORACLES_TREE_TX, OBJECT_TAG_ORACLES_TREE)\n },\n [TX_TYPE.accountsTree]: {\n 1: TX_SCHEMA_FIELD(ACCOUNTS_TREE_TX, OBJECT_TAG_ACCOUNTS_TREE)\n },\n [TX_TYPE.gaAttach]: {\n 1: TX_SCHEMA_FIELD(GA_ATTACH_TX, OBJECT_TAG_GA_ATTACH)\n },\n [TX_TYPE.gaMeta]: {\n 2: TX_SCHEMA_FIELD(GA_META_TX_2, OBJECT_TAG_GA_META)\n },\n [TX_TYPE.payingFor]: {\n 1: TX_SCHEMA_FIELD(PAYING_FOR_TX, OBJECT_TAG_PAYING_FOR)\n }\n}\n\nexport const TX_DESERIALIZATION_SCHEMA = {\n [OBJECT_TAG_ACCOUNT]: {\n 2: TX_SCHEMA_FIELD(ACCOUNT_TX_2, OBJECT_TAG_ACCOUNT)\n },\n [OBJECT_TAG_SIGNED_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(SIGNED_TX, OBJECT_TAG_SIGNED_TRANSACTION)\n },\n [OBJECT_TAG_SPEND_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(SPEND_TX, OBJECT_TAG_SPEND_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_PRE_CLAIM_TX, OBJECT_TAG_NAME_SERVICE_PRECLAIM_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION]: {\n 2: TX_SCHEMA_FIELD(NAME_CLAIM_TX_2, OBJECT_TAG_NAME_SERVICE_CLAIM_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_UPDATE_TX, OBJECT_TAG_NAME_SERVICE_UPDATE_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_TRANSFER_TX, OBJECT_TAG_NAME_SERVICE_TRANSFER_TRANSACTION)\n },\n [OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(NAME_REVOKE_TX, OBJECT_TAG_NAME_SERVICE_REVOKE_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_TX, OBJECT_TAG_CONTRACT)\n },\n [OBJECT_TAG_CONTRACT_CREATE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CREATE_TX, OBJECT_TAG_CONTRACT_CREATE_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT_CALL_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_TX, OBJECT_TAG_CONTRACT_CALL_TRANSACTION)\n },\n [OBJECT_TAG_CONTRACT_CALL]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALL_RESULT_TX, OBJECT_TAG_CONTRACT_CALL)\n },\n [OBJECT_TAG_ORACLE_REGISTER_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_REGISTER_TX, OBJECT_TAG_ORACLE_REGISTER_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_EXTEND_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_EXTEND_TX, OBJECT_TAG_ORACLE_EXTEND_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_QUERY_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_QUERY_TX, OBJECT_TAG_ORACLE_QUERY_TRANSACTION)\n },\n [OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION]: {\n 1: TX_SCHEMA_FIELD(ORACLE_RESPOND_TX, OBJECT_TAG_ORACLE_RESPONSE_TRANSACTION)\n },\n [OBJECT_TAG_CHANNEL_CREATE_TX]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_CREATE_TX_2, OBJECT_TAG_CHANNEL_CREATE_TX)\n },\n [OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_MUTUAL_TX, OBJECT_TAG_CHANNEL_CLOSE_MUTUAL_TX)\n },\n [OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_CLOSE_SOLO_TX, OBJECT_TAG_CHANNEL_CLOSE_SOLO_TX)\n },\n [OBJECT_TAG_CHANNEL_SLASH_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SLASH_TX, OBJECT_TAG_CHANNEL_SLASH_TX)\n },\n [OBJECT_TAG_CHANNEL_DEPOSIT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_DEPOSIT_TX, OBJECT_TAG_CHANNEL_DEPOSIT_TX)\n },\n [OBJECT_TAG_CHANNEL_WITHRAW_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_WITHDRAW_TX, OBJECT_TAG_CHANNEL_WITHRAW_TX)\n },\n [OBJECT_TAG_CHANNEL_SETTLE_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SETTLE_TX, OBJECT_TAG_CHANNEL_SETTLE_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_TX]: {\n 2: TX_SCHEMA_FIELD(CHANNEL_OFFCHAIN_TX_2, OBJECT_TAG_CHANNEL_OFFCHAIN_TX)\n },\n [OBJECT_TAG_CHANNEL]: {\n 3: TX_SCHEMA_FIELD(CHANNEL_TX_3, OBJECT_TAG_CHANNEL)\n },\n [OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_SNAPSHOT_SOLO_TX, OBJECT_TAG_CHANNEL_SNAPSHOT_SOLO_TX)\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX\n )\n },\n [OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX]: {\n 1: TX_SCHEMA_FIELD(\n CHANNEL_OFFCHAIN_CALL_CONTRACT_TX, OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX\n )\n },\n [OBJECT_TAG_CHANNEL_RECONNECT_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_RECONNECT_TX, OBJECT_TAG_CHANNEL_RECONNECT_TX)\n },\n [OBJECT_TAG_PROOF_OF_INCLUSION]: {\n 1: TX_SCHEMA_FIELD(PROOF_OF_INCLUSION_TX, OBJECT_TAG_PROOF_OF_INCLUSION)\n },\n [OBJECT_TAG_STATE_TREES]: {\n 1: TX_SCHEMA_FIELD(STATE_TREES_TX, OBJECT_TAG_STATE_TREES)\n },\n [OBJECT_TAG_MERKLE_PATRICIA_TREE]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE)\n },\n [OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE]: {\n 1: TX_SCHEMA_FIELD(MERKLE_PATRICIA_TREE_VALUE_TX, OBJECT_TAG_MERKLE_PATRICIA_TREE_VALUE)\n },\n [OBJECT_TAG_CONTRACTS_TREE]: {\n 1: TX_SCHEMA_FIELD(CONTRACTS_TREE_TX, OBJECT_TAG_CONTRACTS_TREE)\n },\n [OBJECT_TAG_CONTRACT_CALLS_TREE]: {\n 1: TX_SCHEMA_FIELD(CONTRACT_CALLS_TREE_TX, OBJECT_TAG_CONTRACT_CALLS_TREE)\n },\n [OBJECT_TAG_CHANNELS_TREE]: {\n 1: TX_SCHEMA_FIELD(CHANNELS_TREE_TX, OBJECT_TAG_CHANNELS_TREE)\n },\n [OBJECT_TAG_NAMESERVICE_TREE]: {\n 1: TX_SCHEMA_FIELD(NAMESERVICE_TREE_TX, OBJECT_TAG_NAMESERVICE_TREE)\n },\n [OBJECT_TAG_ORACLES_TREE]: {\n 1: TX_SCHEMA_FIELD(ORACLES_TREE_TX, OBJECT_TAG_ORACLES_TREE)\n },\n [OBJECT_TAG_ACCOUNTS_TREE]: {\n 1: TX_SCHEMA_FIELD(ACCOUNTS_TREE_TX, OBJECT_TAG_ACCOUNTS_TREE)\n },\n [OBJECT_TAG_GA_ATTACH]: {\n 1: TX_SCHEMA_FIELD(GA_ATTACH_TX, OBJECT_TAG_GA_ATTACH)\n },\n [OBJECT_TAG_GA_META]: {\n 2: TX_SCHEMA_FIELD(GA_META_TX_2, OBJECT_TAG_GA_META)\n },\n [OBJECT_TAG_PAYING_FOR]: {\n 1: TX_SCHEMA_FIELD(PAYING_FOR_TX, OBJECT_TAG_PAYING_FOR)\n },\n [OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX]: {\n 1: TX_SCHEMA_FIELD(CHANNEL_FORCE_PROGRESS_TX, OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX)\n },\n [OBJECT_TAG_SOPHIA_BYTE_CODE]: {\n 3: TX_SCHEMA_FIELD(CONTRACT_BYTE_CODE_LIMA, OBJECT_TAG_SOPHIA_BYTE_CODE)\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { encode as rlpEncode } from 'rlp'\nimport type { Input } from 'rlp'\nimport { hash } from './crypto-ts'\nimport {\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownPathNibbleError,\n UnknownNodeLengthError\n} from './errors'\n\nenum NodeType {\n Branch,\n Extension,\n Leaf\n}\n\nexport type MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>]\n\nexport default class MPTree {\n private readonly rootHash: string\n private readonly nodes: { [key: string]: Buffer[] }\n\n private static nodeHash (node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex')\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @rtype (binary: Array) => MPTree\n * @param {Array} binary - Binary\n * @return {MPTree} Merkle Patricia Tree\n */\n constructor (binary: MPTreeBinary) {\n this.rootHash = binary[0].toString('hex')\n this.nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]])\n )\n\n if (this.nodes[this.rootHash] === undefined) throw new MissingNodeInTreeError('Can\\'t find a node by root hash')\n Object.entries(this.nodes).forEach(([key, node]) => {\n if (MPTree.nodeHash(node) !== key) throw new MerkleTreeHashMismatchError()\n const { type, payload } = MPTree.parseNode(node)\n switch (type) {\n case NodeType.Branch:\n payload\n .slice(0, 16)\n .filter(n => n.length)\n .forEach((n) => {\n if (this.nodes[n.toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in branch node')\n }\n })\n break\n case NodeType.Extension:\n if (this.nodes[payload[0].toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in extension node')\n }\n }\n })\n }\n\n isEqual (tree: MPTree): boolean {\n return this.rootHash === tree.rootHash\n }\n\n private static parseNode (node: Buffer[]): { type: NodeType, payload: Buffer[], path: string | null } {\n switch (node.length) {\n case 17:\n return { type: NodeType.Branch, payload: node, path: null }\n case 2: {\n const path = node[0].toString('hex')\n const nibble = parseInt(path[0], 16)\n if (nibble > 3) throw new UnknownPathNibbleError(nibble)\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf\n const slice = [0, 2].includes(nibble) ? 2 : 1\n return { type, payload: [node[1]], path: path.slice(slice) }\n }\n default:\n throw new UnknownNodeLengthError(node.length)\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @rtype () => Array\n * @return {Array} Binary\n */\n serialize (): MPTreeBinary {\n return [\n Buffer.from(this.rootHash, 'hex'),\n Object.entries(this.nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value\n ]))\n ]\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @rtype (key: String) => Buffer\n * @param {String} key - The key of the element to retrieve\n * @return {Buffer} Value associated to the specified key\n */\n get (key: string): Buffer | undefined {\n let searchFrom = this.rootHash\n while (true) {\n const { type, payload, path } = MPTree.parseNode(this.nodes[searchFrom])\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return payload[16]\n searchFrom = payload[parseInt(key[0], 16)].toString('hex')\n key = key.substr(1)\n break\n case NodeType.Extension:\n if (key.substr(0, path?.length) !== path) return undefined\n searchFrom = payload[0].toString('hex')\n key = key.substr(path.length)\n break\n case NodeType.Leaf:\n if (path !== key) return undefined\n return payload[0]\n }\n }\n }\n}\n","import BigNumber from 'bignumber.js'\nimport { decode as rlpDecode, encode as rlpEncode } from 'rlp'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../utils/amount-formatter'\nimport { hash } from '../../utils/crypto'\nimport { Field } from './field-types'\n\nimport {\n DEFAULT_FEE,\n FIELD_TYPES,\n OBJECT_ID_TX_TYPE,\n TX_DESERIALIZATION_SCHEMA,\n TX_FEE_BASE_GAS,\n TX_FEE_OTHER_GAS,\n TX_SERIALIZATION_SCHEMA,\n TX_TYPE,\n VSN\n} from './schema'\nimport {\n readInt,\n readId,\n readPointers,\n writeId,\n writeInt,\n buildPointers,\n encode,\n decode\n} from './helpers'\nimport { toBytes } from '../../utils/bytes'\nimport MPTree from '../../utils/mptree'\nimport { InvalidTxParamsError, SchemaNotFoundError } from '../../utils/errors'\n\n/**\n * JavaScript-based Transaction builder\n * @module @aeternity/aepp-sdk/es/tx/builder\n * @export TxBuilder\n * @example import { TxBuilder } from '@aeternity/aepp-sdk'\n */\n\nconst ORACLE_TTL_TYPES = {\n delta: 'delta',\n block: 'block'\n}\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField (value, type, prefix) {\n if (!value) return ''\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value\n return { vmVersion: readInt(Buffer.from([vm])), abiVersion: readInt(Buffer.from([abi])) }\n }\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\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)\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(value, true)\n case FIELD_TYPES.rlpBinaries:\n return value.map(v => unpackTx(v, true))\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 => unpackTx(v, true))\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)]\n case FIELD_TYPES.mptrees:\n return value.map(t => new MPTree(t))\n case FIELD_TYPES.callReturnType:\n switch (readInt(value)) {\n case '0': return 'ok'\n case '1': return 'error'\n case '2': return 'revert'\n default: return value\n }\n case FIELD_TYPES.sophiaCodeTypeInfo:\n return value\n .reduce(\n (acc, [funHash, fnName, argType, outType]) =>\n ({ ...acc, [fnName.toString()]: { funHash, argType, outType } }),\n {}\n )\n default:\n if (type.prototype instanceof Field) return type.deserialize(value)\n return value\n }\n}\n\nfunction serializeField (value, type, prefix, params) {\n switch (type) {\n case FIELD_TYPES.amount:\n case FIELD_TYPES.int:\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 ? 1 : 0])\n case FIELD_TYPES.binary:\n return decode(value, prefix)\n case FIELD_TYPES.stateTree:\n return decode(value, 'ss')\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, '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 => 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.prototype instanceof Field) return type.serialize(value, params)\n return value\n }\n}\n\nfunction validateField (value, type, prefix) {\n // All fields are required\n if (value === undefined || 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 if (isNaN(value) && !BigNumber.isBigNumber(value)) {\n return `${value} is not of type Number or BigNumber`\n }\n if (new BigNumber(value).lt(0)) return `${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 return `'${value}' prefix doesn't match expected prefix '${prefix}'`\n }\n return\n }\n case FIELD_TYPES.ctVersion:\n if (!value?.abiVersion || !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 => !p?.key || !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 (params, schema, { denomination } = {}) {\n params = schema\n .filter(([_, t]) => t === FIELD_TYPES.amount)\n .reduce(\n (acc, [key]) => ({ ...params, [key]: formatAmount(params[key], { denomination }) }),\n params\n )\n const schemaKeys = schema.map(([k]) => k)\n return Object\n .entries(params)\n .reduce(\n (acc, [key, value]) => {\n if (schemaKeys.includes(key)) acc[key] = value\n if (['oracleTtl', 'queryTtl', 'responseTtl'].includes(key)) {\n acc[`${key}Type`] = value.type === ORACLE_TTL_TYPES.delta ? 0 : 1\n acc[`${key}Value`] = value.value\n }\n return acc\n },\n {}\n )\n}\n\n// INTERFACE\n\nfunction getOracleRelativeTtl (params, txType) {\n const ttlKey = {\n [TX_TYPE.oracleRegister]: 'oracleTtl',\n [TX_TYPE.oracleExtend]: 'oracleTtl',\n [TX_TYPE.oracleQuery]: 'queryTtl',\n [TX_TYPE.oracleResponse]: 'responseTtl'\n }[txType]\n\n if (params[ttlKey] || params[`${ttlKey}Value`]) {\n return params[`${ttlKey}Value`] || params[ttlKey].value\n }\n return 1\n}\n\n/**\n * Calculate min fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder/index\n * @rtype (txType, { gas = 0, params }) => String\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateMinFee('spendTx', { gas, params })\n */\nexport function calculateMinFee (txType, { gas = 0, params, vsn }) {\n const multiplier = BigNumber(1e9) // 10^9 GAS_PRICE\n if (!params) return BigNumber(DEFAULT_FEE).times(multiplier).toString(10)\n\n let actualFee = buildFee(txType, { params: { ...params, fee: 0 }, multiplier, gas, vsn })\n let expected = BigNumber(0)\n\n while (!actualFee.eq(expected)) {\n actualFee = buildFee(txType, { params: { ...params, fee: actualFee }, multiplier, gas, vsn })\n expected = actualFee\n }\n return expected.toString(10)\n}\n\n/**\n * Calculate fee based on tx type and params\n * @param txType\n * @param params\n * @param gas\n * @param multiplier\n * @param vsn\n * @return {BigNumber}\n */\nfunction buildFee (txType, { params, gas = 0, multiplier, vsn }) {\n const { rlpEncoded: txWithOutFee } = buildTx({ ...params }, txType, { vsn })\n const txSize = txWithOutFee.length\n return TX_FEE_BASE_GAS(txType)\n .plus(TX_FEE_OTHER_GAS(txType, txSize, {\n relativeTtl: getOracleRelativeTtl(params, txType),\n innerTxSize: [TX_TYPE.gaMeta, TX_TYPE.payingFor].includes(txType)\n ? params.tx.tx.encodedTx.rlpEncoded.length\n : 0\n }))\n .times(multiplier)\n}\n\n/**\n * Calculate fee\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @rtype (fee, txType, gas = 0) => String\n * @param {String|Number} fee - fee\n * @param {String} txType - Transaction type\n * @param {Options} options - Options object\n * @param {String|Number} options.gas - Gas amount\n * @param {Object} options.params - Tx params\n * @return {String|Number}\n * @example calculateFee(null, 'spendTx', { gas, params })\n */\nexport function calculateFee (fee = 0, txType, { gas = 0, params, showWarning = true, vsn } = {}) {\n if (!params && showWarning) console.warn(`Can't build transaction fee, we will use DEFAULT_FEE(${DEFAULT_FEE})`)\n\n return fee || calculateMinFee(txType, { params, gas, vsn })\n}\n\n/**\n * Validate transaction params\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Array} excludeKeys Array of keys to exclude for validation\n * @return {Object} Object with validation errors\n */\nexport function validateParams (params, schema, { excludeKeys = [] }) {\n return Object.fromEntries(\n schema\n // TODO: allow optional keys in schema\n .filter(([key]) => !excludeKeys.includes(key) &&\n !['payload', 'nameFee', 'deposit'].includes(key))\n .map(([key, type, prefix]) => [key, validateField(params[key], type, prefix)])\n .filter(([, message]) => message)\n )\n}\n\n/**\n * Build binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {Array} schema Transaction schema\n * @param {Object} [options={}] options\n * @param {String[]} [options.excludeKeys=[]] Array of keys to exclude for validation and build\n * @param {String} [options.denomination='aettos'] Denomination of amounts\n * @throws {Error} Validation error\n * @return {Array} Array with binary fields of transaction\n */\nexport function buildRawTx (\n params,\n schema,\n { excludeKeys = [], denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n) {\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) {\n throw new InvalidTxParamsError('Transaction build error. ' + JSON.stringify(valid))\n }\n\n return filteredSchema\n .map(([key, fieldType, prefix]) => serializeField(params[key], fieldType, prefix, params))\n}\n\n/**\n * Unpack binary transaction\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Array} binary Array with binary transaction field's\n * @param {Array} schema Transaction schema\n * @return {Object} Object with transaction field's\n */\nexport function unpackRawTx (binary, schema) {\n return schema\n .reduce(\n (\n acc,\n [key, fieldType, prefix],\n index\n ) => Object.assign(acc, { [key]: deserializeField(binary[index], fieldType, prefix) }),\n {}\n )\n}\n\n/**\n * Get transaction serialization/deserialization schema\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {{ vsn: String, objId: Number, type: String }}\n * @throws {Error} Schema not found error\n * @return {Object} Schema\n */\nconst getSchema = ({ vsn, objId, type }) => {\n const isDeserialize = !!objId\n const firstKey = isDeserialize ? objId : type\n const schema = isDeserialize ? TX_DESERIALIZATION_SCHEMA : TX_SERIALIZATION_SCHEMA\n\n if (!schema[firstKey]) {\n throw new SchemaNotFoundError(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type}`)\n }\n if (!schema[firstKey][vsn]) {\n throw new SchemaNotFoundError(`Transaction ${isDeserialize ? 'deserialization' : 'serialization'} not implemented for ${isDeserialize ? 'tag ' + objId : type} version ${vsn}`)\n }\n return schema[firstKey][vsn]\n}\n\n/**\n * Build transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {Object} params Object with tx params\n * @param {String} type Transaction type\n * @param {Object} [options={}] options\n * @param {String[]} [options.excludeKeys] Array of keys to exclude for validation and build\n * @param {String} [options.prefix] Prefix of transaction\n * @throws {Error} Validation error\n * @returns {Object} object\n * @returns {String} object.tx Base64Check transaction hash with 'tx_' prefix\n * @returns {Buffer} object.rlpEncoded rlp encoded transaction\n * @returns {Array<Buffer>} object.binary binary transaction\n */\nexport function buildTx (\n params,\n type,\n { excludeKeys = [], prefix = 'tx', vsn = VSN, denomination = AE_AMOUNT_FORMATS.AETTOS } = {}\n) {\n const [schema, tag] = getSchema({ type, vsn })\n const binary = buildRawTx(\n { ...params, VSN: vsn, tag },\n schema,\n { excludeKeys, denomination: params.denomination || denomination }\n ).filter(e => e !== undefined)\n\n const rlpEncoded = rlpEncode(binary)\n const tx = encode(rlpEncoded, prefix)\n\n return { tx, rlpEncoded, binary, txObject: unpackRawTx(binary, schema) }\n}\n\n/**\n * Unpack transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String|Buffer} encodedTx String or RLP encoded transaction array\n * (if fromRlpBinary flag is true)\n * @param {Boolean} fromRlpBinary Unpack from RLP encoded transaction (default: false)\n * @param {String} prefix - Prefix of data\n * @returns {Object} object\n * @returns {Object} object.tx Object with transaction param's\n * @returns {Buffer} object.rlpEncoded rlp encoded transaction\n * @returns {Array<Buffer>} object.binary binary transaction\n */\nexport function unpackTx (encodedTx, fromRlpBinary = false, prefix = 'tx') {\n const rlpEncoded = fromRlpBinary ? encodedTx : decode(encodedTx, prefix)\n const binary = rlpDecode(rlpEncoded)\n\n const objId = readInt(binary[0])\n const vsn = readInt(binary[1])\n const [schema] = getSchema({ objId, vsn })\n\n return { txType: OBJECT_ID_TX_TYPE[objId], tx: unpackRawTx(binary, schema), rlpEncoded, binary }\n}\n\n/**\n * Build a transaction hash\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/builder\n * @param {String | Buffer} rawTx base64 or rlp encoded transaction\n * @return {String} Transaction hash\n */\nexport function buildTxHash (rawTx) {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_') ? decode(rawTx, 'tx') : rawTx\n return encode(hash(data), 'th')\n}\n\nexport default {\n calculateMinFee,\n calculateFee,\n unpackTx,\n unpackRawTx,\n buildTx,\n buildRawTx,\n validateParams,\n buildTxHash\n}\n","import nacl from 'tweetnacl'\nimport { full as hmac } from 'tweetnacl-auth'\nimport { fromString } from 'bip32-path'\nimport { decryptKey, encryptKey } from './crypto'\nimport { encode } from '../tx/builder/helpers'\nimport {\n InvalidDerivationPathError, NotHardenedSegmentError, UnsupportedChildIndexError\n} from './errors'\n\nconst ED25519_CURVE = Buffer.from('ed25519 seed')\nconst HARDENED_OFFSET = 0x80000000\n\nconst toHex = (buffer) => Buffer.from(buffer).toString('hex')\n\nexport function derivePathFromKey (path, key) {\n const segments = path === '' ? [] : fromString(path).toPathArray()\n segments.forEach((segment, i) => {\n if (segment < HARDENED_OFFSET) {\n throw new NotHardenedSegmentError(`Segment #${i + 1} is not hardened`)\n }\n })\n\n return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key)\n}\n\nexport function derivePathFromSeed (path, seed) {\n if (!['m', 'm/'].includes(path.slice(0, 2))) {\n throw new InvalidDerivationPathError()\n }\n const masterKey = getMasterKeyFromSeed(seed)\n return derivePathFromKey(path.slice(2), masterKey)\n}\n\nfunction formatAccount (keys) {\n const { secretKey, publicKey } = keys\n return {\n secretKey: toHex(secretKey),\n publicKey: encode(publicKey, 'ak')\n }\n}\n\nexport function getKeyPair (secretKey) {\n return nacl.sign.keyPair.fromSeed(secretKey)\n}\n\nexport function getMasterKeyFromSeed (seed) {\n const I = hmac(seed, ED25519_CURVE)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function deriveChild ({ secretKey, chainCode }, index) {\n if (index < HARDENED_OFFSET) {\n throw new UnsupportedChildIndexError(index)\n }\n const indexBuffer = Buffer.allocUnsafe(4)\n indexBuffer.writeUInt32BE(index, 0)\n\n const data = Buffer.concat([Buffer.alloc(1, 0), Buffer.from(secretKey), Buffer.from(indexBuffer)])\n\n const I = hmac(data, chainCode)\n const IL = I.slice(0, 32)\n const IR = I.slice(32)\n return {\n secretKey: IL,\n chainCode: IR\n }\n}\n\nexport function generateSaveHDWalletFromSeed (seed, password) {\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n return {\n secretKey: toHex(encryptKey(password, walletKey.secretKey)),\n chainCode: toHex(encryptKey(password, walletKey.chainCode))\n }\n}\n\nexport function getSaveHDWalletAccounts (saveHDWallet, password, accountCount) {\n const walletKey = {\n secretKey: decryptKey(password, Buffer.from(saveHDWallet.secretKey, 'hex')),\n chainCode: decryptKey(password, Buffer.from(saveHDWallet.chainCode, 'hex'))\n }\n return (new Array(accountCount)).fill()\n .map((_, idx) =>\n formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)))\n}\n\nexport const getHdWalletAccountFromSeed = (seed, accountIdx) => {\n const walletKey = derivePathFromSeed('m/44h/457h', seed)\n const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey)\n const keyPair = getKeyPair(derived.secretKey)\n return {\n ...formatAccount(keyPair),\n idx: accountIdx\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Tx module\n * @module @aeternity/aepp-sdk/es/tx\n * @export Tx\n * @example import { Tx } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Tx Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Tx is one of the three basic building blocks of an\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} client and provides methods to\n * create aeternity transactions.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Tx instance\n * @example Tx()\n */\nconst Tx = stampit(required({\n methods: {\n spendTx: required,\n namePreclaimTx: required,\n nameClaimTx: required,\n nameTransferTx: required,\n nameUpdateTx: required,\n nameRevokeTx: required,\n contractCreateTx: required,\n contractCallTx: required,\n oracleRegisterTx: required,\n oracleExtendTx: required,\n oraclePostQueryTx: required,\n oracleRespondTx: required,\n getAccountNonce: required,\n channelCloseSoloTx: required,\n channelSlashTx: required,\n channelSettleTx: required,\n channelSnapshotSoloTx: required,\n gaAttachTx: required,\n getVmVersion: required,\n prepareTxParams: required\n }\n}))\n\n/**\n * Create a `spend_tx` transaction\n * @function spendTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * sender?: String,\n * recipientId: String,\n * amount: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number,\n * payload?: String\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `spend_tx` transaction\n */\n\n/**\n * Create a `name_preclaim_tx` transaction\n * @function namePreclaimTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String, commitment: String, fee?: Number, ttl?: Number, nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_preclaim_tx` transaction\n */\n\n/**\n * Create a `name_claim_tx` transaction\n * @function nameClaimTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String, name: String, nameSalt: String, fee?: Number, ttl?: Number, nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_claim_tx` transaction\n */\n\n/**\n * Create a `name_transfer_tx` transaction\n * @function nameTransferTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String,\n * nameId: String,\n * recipientId: String,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_transfer_tx` transaction\n */\n\n/**\n * Create a `name_update_tx` transaction\n * @function nameUpdateTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String,\n * nameId: String,\n * pointers: Object,\n * nameTtl: Number,\n * clientTtl: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_update_tx` transaction\n */\n\n/**\n * Create a `name_revoke_tx` transaction\n * @function nameRevokeTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * account?: String, nameId: String, fee?: Number, ttl?: Number, nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `name_revoke_tx` transaction\n */\n\n/**\n * Create a `contract_create_tx` transaction\n * @function contractCreateTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * owner: String,\n * code: String,\n * callData: String,\n * vmVersion: Number,\n * deposit: Number,\n * amount: Number,\n * gas: Number,\n * gasPrice: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `contract_create_tx` transaction\n */\n\n/**\n * Create a `contract_call_tx` transaction\n * @function contractCallTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * callerId: String,\n * contract: String,\n * callData: String,\n * vmVersion: Number,\n * amount: Number,\n * gas: Number,\n * gasPrice: Number,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `contract_call_tx` transaction\n */\n\n/**\n * Create a `oracle_register_tx` transaction\n * @function oracleRegisterTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * accountId: String,\n * queryFormat: String,\n * responseFormat: String,\n * queryFee: String|Number,\n * oracleTtl: Object,\n * vmVersion: Number = ORACLE_VM_VERSION,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_register_tx` transaction\n */\n\n/**\n * Create a `oracle_extend_tx` transaction\n * @function oracleExtendTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * oracleId: String,\n * callerId: String,\n * oracleTtl: Object,\n * fee?: Number,\n * ttl: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_extend_tx` transaction\n */\n\n/**\n * Create a `oracle_post_query_tx` transaction\n * @function oraclePostQuery\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * oracleId: String,\n * responseTtl: Object,\n * query: String,\n * queryTtl: Object,\n * queryFee: String|Number,\n * senderId: String,\n * fee?: Number,\n * ttl: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_post_query_tx` transaction\n */\n\n/**\n * Create a `oracle_respond_tx` transaction\n * @function oracleRespondTx\n * @instance\n * @abstract\n * @category async\n * @rtype ({\n * oracleId: String,\n * callerId: String,\n * responseTtl: Object,\n * queryId: String,\n * response: String,\n * fee?: Number,\n * ttl?: Number,\n * nonce?: Number\n * }) => tx: Promise[String]\n * @param {Object} options - The object to extract properties from\n * @return {String} `oracle_respond_tx` transaction\n */\n\n/**\n * Get Account Nonce\n * @function getAccountNonce\n * @instance\n * @abstract\n * @category async\n * @rtype (address) => result: Number\n * @param {String} address - Account public key\n * @return {Number} Result\n */\n\nexport default Tx\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Chain module\n * @module @aeternity/aepp-sdk/es/chain\n * @export Chain\n * @example import { Chain } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\n\n/**\n * Basic Chain Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/chain\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Chain instance\n */\nconst Chain = stampit({\n deepProps: {\n Ae: {\n defaults: {\n waitMined: true,\n verify: true,\n _expectedMineRate: 180000,\n _microBlockCycle: 3000,\n _maxPollInterval: 5000\n }\n }\n },\n methods: {\n _getPollInterval (type) {\n const base = {\n block: this.Ae.defaults._expectedMineRate,\n microblock: this.Ae.defaults._microBlockCycle\n }[type]\n if (!base) throw new Error(`Unknown poll type: ${type}`)\n return Math.min(base / 3, this.Ae.defaults._maxPollInterval)\n }\n }\n}, required({\n methods: {\n sendTransaction: required,\n height: required,\n awaitHeight: required,\n poll: required,\n balance: required,\n getBalance: required,\n tx: required,\n getTxInfo: required,\n mempool: required,\n txDryRun: required,\n getAccount: required\n }\n}))\n\n/**\n * Submit a signed transaction for mining\n * @function sendTransaction\n * @instance\n * @abstract\n * @category async\n * @rtype (tx: String, options?: Object) => tx: Promise[Object]|txHash: Promise[String]\n * @param {String} tx - Transaction to submit\n * @param {String} [options={}] - Options to pass to the implementation\n * @param {String} [options.verify=true] - Verify transaction before broadcast.\n * @return {Object} Transaction\n */\n\n/**\n * Obtain current height of the chain\n * @function height\n * @instance\n * @abstract\n * @category async\n * @rtype () => height: Number\n * @return {Number} Current chain height\n */\n\n/**\n * Wait for the chain to reach a specific height\n * @function awaitHeight\n * @instance\n * @abstract\n * @category async\n * @rtype (height: Number, options?: Object) => height: Number\n * @param {Object} [options={}] - Options\n * @param {Number} options.interval - Interval (in ms) at which to poll the chain\n * @param {Number} options.attempts - Number of polling attempts after which to fail\n * @return {Number} Current chain height\n */\n\n/**\n * Wait for a transaction to be mined\n * @function poll\n * @instance\n * @abstract\n * @category async\n * @rtype (th: String, options?: Object) => tx: Object\n * @param {Object} [options={}] - Options\n * @param {Number} options.interval - Interval (in ms) at which to poll the chain\n * @param {Number} options.blocks - Number of blocks mined after which to fail\n * @return {Object} The transaction as it was mined\n */\n\n/**\n * Request the balance of specified account\n * @function balance\n * @instance\n * @abstract\n * @category async\n * @rtype (address: String, options?: Object) => balance: Number\n * @param {String} address - The public account address to obtain the balance for\n * @param {Object} [options={}] - Options\n * @param {Number} options.height - The chain height at which to obtain the balance for (default:\n * top of chain)\n * @param {String} options.hash - The block hash on which to obtain the balance for (default: top\n * of chain)\n * @return {Object} The transaction as it was mined\n */\n\n/**\n * Obtain a transaction based on its hash\n * @function tx\n * @instance\n * @abstract\n * @category async\n * @rtype (hash: String, info = false) => tx: Object\n * @param {String} hash - Transaction hash\n * @param {Boolean} info - Retrieve additional transaction date. Works only for (ContractCreate and\n * ContractCall transaction's)\n * @return {Object} Transaction\n */\n\n/**\n * Obtain a transaction info based on its hash\n * @function getTxInfo\n * @instance\n * @abstract\n * @category async\n * @rtype (hash: String) => tx: Object\n * @param {String} hash - Transaction hash\n * @return {Object} Transaction\n */\n\n/**\n * Obtain transaction's from mempool\n * @function mempool\n * @instance\n * @abstract\n * @category async\n * @rtype () => txs: [...Object]\n * @return {Object[]} Transactions\n */\n\n/**\n * Obtain current generation\n * @function getCurrentGeneration\n * @instance\n * @abstract\n * @category async\n * @rtype () => generation: Object\n * @return {Object} Current Generation\n */\n\n/**\n * Get generation by hash or height\n * @function getGeneration\n * @instance\n * @abstract\n * @category async\n * @rtype (hashOrHeight) => generation: Object\n * @param {String|Number} hashOrHeight - Generation hash or height\n * @return {Object} Generation\n */\n\n/**\n * Wait for transaction confirmation\n * @function waitForTxConfirm\n * @instance\n * @abstract\n * @category async\n * @rtype (txHash: String, { confirm: Number | Boolean } = { confirm: 3 }) => Promise<Number>\n * @param {String} txHash - Transaction hash\n * @param {Object} [options] - options\n * @param {Number} [options.confirm=3] - Number of blocks to wait for transaction confirmation\n * @return {Promise<Number>} Current Height\n */\n\n/**\n * Get micro block transactions\n * @function getMicroBlockTransactions\n * @instance\n * @abstract\n * @category async\n * @rtype (hash) => txs: [...Object]\n * @return {Object[]} Transactions\n */\n\n/**\n * Get key block\n * @function getKeyBlock\n * @instance\n * @abstract\n * @category async\n * @rtype (hashOrHeight) => keyBlock: Object\n * @return {Object} Key Block\n */\n\n/**\n * Get micro block header\n * @function getMicroBlockHeader\n * @instance\n * @abstract\n * @category async\n * @rtype (hash) => header: Object\n * @return {Object} Micro block header\n */\n\n/**\n * Get account by account public key\n * @function getAccount\n * @instance\n * @abstract\n * @category async\n * @rtype (address, { hash, height }) => account: Object\n * @param {String} address - Account public key\n * @param {Object} [options={}] - Options\n * @param {Number} [options.height] - Get account on specific block by block height\n * @param {String} [options.hash] - Get account on specific block by block hash\n * @return {Object} Account\n */\n\n/**\n * Transaction dry-run\n * @function txDryRun\n * @instance\n * @abstract\n * @category async\n * @rtype (tx, accountAddress, options) => result: Object\n * @param {String} tx - transaction to execute\n * @param {String} accountAddress - address that will be used to execute transaction\n * @param {String|Number} [options.top] - hash of block on which to make dry-run\n * @param {Boolean} [options.txEvents] - collect and return on-chain tx events that would result\n * from the call\n * @return {Object} Result\n */\n\nexport default Chain\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport stampit from '@stamp/it'\n\nfunction asyncInit (options = {}, { stamp, args, instance }) {\n return stamp.compose.deepConfiguration.AsyncInit.initializers.reduce(async (instance, init) => {\n instance = await Promise.resolve(instance)\n if (typeof init === 'function') {\n const ret = await Promise.resolve(init.call(instance, options, { stamp, args, instance }))\n return ret === undefined ? instance : ret\n }\n return instance\n }, instance)\n}\n\nexport default stampit({\n deepConf: { AsyncInit: { initializers: [] } },\n composers ({ stamp, composables }) {\n const conf = stamp.compose.deepConfiguration.AsyncInit\n conf.initializers = composables\n .map(c =>\n c?.compose?.deepConfiguration?.AsyncInit?.initializers ||\n (c.compose || c).initializers ||\n [])\n .flat(Infinity)\n .filter((f, idx, arr) => !arr.slice(0, idx).includes(f))\n .filter(f => f !== asyncInit)\n stamp.compose.initializers = [asyncInit]\n }\n})\n","import JsonBig from '@aeternity/json-bigint'\nimport BigNumber from 'bignumber.js'\n\nconst jsonBig = JsonBig({ storeAsString: true })\n\nconst convertValuesToBigNumbers = value => {\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n return Object.entries(value)\n .map(([key, value]) => [key, convertValuesToBigNumbers(value)])\n .reduce((p, [k, v]) => ({ ...p, [k]: v }), {})\n }\n if (Array.isArray(value)) {\n return value.map(item => convertValuesToBigNumbers(item))\n }\n if (typeof value === 'string' && BigNumber(value).toString(10) === value) {\n const bn = BigNumber(value)\n bn.toJSON = () => bn.toString(10)\n return bn\n }\n return value\n}\n\nexport default {\n stringify: (object, ...args) => jsonBig.stringify(convertValuesToBigNumbers(object), ...args),\n parse: jsonBig.parse\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Generator of Swagger client module\n * @module @aeternity/aepp-sdk/es/utils/swagger\n * @export genSwaggerClient\n */\n\nimport SwaggerClient from 'swagger-client'\nimport fetch from 'cross-fetch'\nimport JsonBig from './json-big'\nimport { snakizeKeys, pascalizeKeys, mapObject, filterObject } from './other'\nimport { ArgumentCountMismatchError } from './errors'\nimport { snakeToPascal } from './string'\n\nlet warnedAboutInternalApiUsage = false\n\n/**\n * Generator of Swagger client\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/swagger\n * @rtype Object\n * @param {String} specUrl - Swagger specification URL on external node host\n * @param {Object} options\n * @param {String} [options.spec] - Override OpenAPI definition\n * @param {String} [options.internalUrl] - Node internal URL\n * @param {Boolean} [options.disableBigNumbers]\n * @param {Boolean} [options.disableCaseConversion]\n * @param {Function} [options.responseInterceptor]\n * @return {Object} Swagger client\n * @example (await genSwaggerClient('https://mainnet.aeternity.io/api')).getAccountByPubkey('ak_jupBUgZNbcC4krDLR3tAkw1iBZoBbkNeShAq4atBtpFWmz36r')\n */\nexport default async (\n specUrl,\n { spec, internalUrl, disableBigNumbers, disableCaseConversion, responseInterceptor } = {}\n) => {\n spec = spec || await (await fetch(specUrl)).json()\n const jsonImp = disableBigNumbers ? JSON : JsonBig\n\n const [external, internal] = await Promise.all([specUrl, internalUrl].map((url) => {\n if (!url) return null\n const pendingGetRequests = {}\n return SwaggerClient({\n url,\n spec,\n requestInterceptor: request => {\n if (request.method !== 'GET') return\n return {\n ...request,\n userFetch: async (url, request) => {\n const key = JSON.stringify({ ...request, url })\n pendingGetRequests[key] ??= fetch(url, request)\n try {\n return (await pendingGetRequests[key]).clone()\n } finally {\n delete pendingGetRequests[key]\n }\n }\n }\n },\n responseInterceptor: response => {\n if (response.text === '' || response.text?.size === 0) return response\n const body = jsonImp.parse(response.text)\n Object.assign(response, {\n body: disableCaseConversion ? body : pascalizeKeys(body)\n })\n return (responseInterceptor && responseInterceptor(response)) || response\n }\n })\n }))\n\n const combinedApi = Object.assign(\n {},\n ...external.apis.external ? [external.apis.external] : Object.values(external.apis),\n mapObject(internal?.apis.internal || {}, ([key, handler]) => [key, (...args) => {\n if (!warnedAboutInternalApiUsage) {\n console.warn(\n 'SDK\\'s wrapper of aeternity node internal API is deprecated, please use external ' +\n 'equivalent (for example, \"sdk.api.protectedDryRunTxs\" instead of \"sdk.api.dryRunTxs\") ' +\n 'or create a wrapper of internal API by yourself (using \"genSwaggerClient\")'\n )\n warnedAboutInternalApiUsage = true\n }\n return handler(...args)\n }])\n )\n\n const opSpecs = Object.values(spec.paths)\n .map(paths => Object.values(paths))\n .flat()\n .reduce((acc, n) => ({ ...acc, [n.operationId]: n }), {})\n\n const requestQueues = {}\n const api = mapObject(combinedApi, ([opId, handler]) => {\n const functionName = opId.slice(0, 1).toLowerCase() + snakeToPascal(opId.slice(1))\n return [\n functionName,\n async (...args) => {\n const opSpec = opSpecs[opId]\n const parameters = [\n ...opSpec.parameters,\n ...opSpec.requestBody\n ? [{\n required: opSpec.requestBody.required,\n schema: Object.values(opSpec.requestBody.content)[0].schema,\n name: '__requestBody'\n }]\n : []\n ]\n const required = parameters.filter(param => param.required).map(p => p.name)\n if (![0, 1].includes(args.length - required.length)) {\n throw new ArgumentCountMismatchError(functionName, required.length, args.length)\n }\n const values = required.reduce(\n (acc, req, idx) => ({ ...acc, [req]: args[idx] }),\n args[required.length] || {}\n )\n const { __requestBody, __queue, ...stringified } = mapObject(values, ([param, value]) => {\n if (typeof value !== 'object') return [param, value]\n const rootKeys = Object.keys(parameters.find(p => p.name === param).schema.properties)\n const filteredValue = filterObject(\n disableCaseConversion ? value : snakizeKeys(value),\n ([key]) => rootKeys.includes(key)\n )\n return [param, jsonImp.stringify(filteredValue)]\n })\n\n const request = async () => (await handler(stringified, { requestBody: __requestBody }))\n .body\n if (!__queue) return request()\n const res = (requestQueues[__queue] ?? Promise.resolve()).then(request, request)\n // TODO: remove after fixing https://github.com/aeternity/aeternity/issues/3803\n // gap to ensure that node won't reject the nonce\n requestQueues[__queue] = res.then(() => new Promise(resolve => setTimeout(resolve, 750)))\n return res\n }\n ]\n })\n\n return Object.assign(external, { api })\n}\n","export default function (version: string, geVersion: string, ltVersion: string): boolean {\n const getComponents = (v: string): number[] => v\n .split(/[-+]/)[0].split('.').map(i => +i)\n\n const versionComponents = getComponents(version)\n const geComponents = getComponents(geVersion)\n const ltComponents = getComponents(ltVersion)\n\n const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * Math.pow(base, idx), 0)\n\n const vNumber = componentsToNumber(versionComponents)\n const geNumber = componentsToNumber(geComponents)\n const ltNumber = componentsToNumber(ltComponents)\n return vNumber >= geNumber && vNumber < ltNumber\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Node module\n * @module @aeternity/aepp-sdk/es/node\n * @export Node\n * @example import { Node } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from './utils/async-init'\nimport genSwaggerClient from './utils/swagger'\nimport semverSatisfies from './utils/semver-satisfies'\nimport { MissingParamError, UnsupportedVersionError } from './utils/errors'\n\n/**\n * Obtain networkId from account or node\n * @instance\n * @category async\n * @rtype () => networkId: String\n * @return {String} NetworkId\n */\nexport function getNetworkId ({ networkId, force = false } = {}) {\n const res = networkId || this.networkId || this.selectedNode?.networkId\n if (!force && !res) throw new MissingParamError('networkId is not provided')\n if (force && !res) return null\n return res\n}\n\n/**\n * {@link genSwaggerClient} based Node remote API Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node\n * @rtype Stamp\n * @param {Object} [options={}] - Options\n * @param {String} options.url - Base URL for Node\n * @param {String} options.internalUrl - Base URL for internal requests\n * @param {Object} options.axiosConfig - Object with axios configuration\n * @param {Object} options.axiosConfig.config\n * @param {Function} options.axiosConfig.errorHandler - (err) => throw err\n * @return {Object} Node client\n * @example Node({url: 'https://testnet.aeternity.io'})\n */\nconst Node = AsyncInit.compose({\n async init ({ url, internalUrl, ignoreVersion }) {\n if (!url) throw new MissingParamError('\"url\" required')\n this.url = url.replace(/\\/$/, '')\n this.internalUrl = internalUrl?.replace(/\\/$/, '')\n const client = await genSwaggerClient(`${this.url}/api?oas3`, {\n internalUrl: this.internalUrl,\n responseInterceptor: response => {\n if (response.ok) return\n return Object.assign(response, {\n statusText: `${new URL(response.url).pathname.slice(1)} error: ` + response.body.reason\n })\n }\n })\n this.version = client.spec.info.version\n if (\n !semverSatisfies(this.version, NODE_GE_VERSION, NODE_LT_VERSION) &&\n !ignoreVersion\n ) {\n throw new UnsupportedVersionError('node', this.version, NODE_GE_VERSION, NODE_LT_VERSION)\n }\n this.api = client.api\n\n const {\n nodeRevision: revision, genesisKeyBlockHash: genesisHash, networkId,\n protocols, topBlockHeight\n } = await this.api.getStatus()\n this.consensusProtocolVersion = protocols\n .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)\n .reduce(\n (acc, p) => p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc,\n { effectiveAtHeight: -1, version: 0 }\n )\n .version\n this.nodeNetworkId = networkId\n return Object.assign(this, { revision, genesisHash })\n },\n methods: {\n getNodeInfo () {\n return {\n url: this.url,\n internalUrl: this.internalUrl,\n nodeNetworkId: this.nodeNetworkId,\n version: this.version,\n consensusProtocolVersion: this.consensusProtocolVersion\n }\n }\n },\n props: {\n version: null,\n consensusProtocolVersion: null,\n nodeNetworkId: null\n }\n})\n\nconst NODE_GE_VERSION = '6.2.0'\nconst NODE_LT_VERSION = '7.0.0'\n\nexport default Node\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountBase module\n * @module @aeternity/aepp-sdk/es/account/base\n * @export AccountBase\n * @export isAccountBase\n */\n\nimport stampit from '@stamp/it'\nimport { required } from '@stamp/required'\nimport { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto'\nimport { buildTx } from '../tx/builder'\nimport { decode } from '../tx/builder/helpers'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport { getNetworkId } from '../node'\n\n/**\n * Check is provided object looks like an instance of AccountBase\n * @rtype (Object) => Boolean\n * @param {Object} acc - Object to check\n * @return {Boolean}\n */\nexport const isAccountBase = (acc) => !['sign', 'address'].find(f => typeof acc[f] !== 'function')\n\n/**\n * Sign encoded transaction\n * @instance\n * @category async\n * @rtype (tx: String) => tx: Promise[String], throws: Error\n * @param {String} tx - Transaction to sign\n * @param {Object} opt - Options\n * @param {Object} [opt.innerTx] - Sign as inner transaction for PayingFor\n * @return {String} Signed transaction\n */\nasync function signTransaction (tx, opt = {}) {\n const prefixes = [this.getNetworkId(opt)]\n if (opt.innerTx) prefixes.push('inner_tx')\n const rlpBinaryTx = decode(tx, 'tx')\n const txWithNetworkId = Buffer.concat([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)])\n\n const signatures = [await this.sign(txWithNetworkId, opt)]\n return buildTx({ encodedTx: rlpBinaryTx, signatures }, TX_TYPE.signed).tx\n}\n\n/**\n * Get network Id\n * @instance\n * @function getNetworkId\n * @category async\n * @rtype () => networkId: String\n * @return {String} Network Id\n */\n\n/**\n * Sign message\n * @instance\n * @category async\n * @rtype (msg: String) => signature: Promise[String], throws: Error\n * @param {String} message - Message to sign\n * @param {Object} opt - Options\n * @return {String} Signature\n */\nasync function signMessage (message, opt = { returnHex: false }) {\n const sig = await this.sign(messageToHash(message), opt)\n return opt.returnHex ? Buffer.from(sig).toString('hex') : sig\n}\n\n/**\n * Verify message\n * @instance\n * @category async\n * @rtype (\n * msg: String, signature: String, publicKey: String\n * ) => signature: Promise[String], throws: Error\n * @param {String} message - Message to verify\n * @param {String} signature - Signature\n * @param {Object} opt - Options\n * @return {Boolean}\n */\nasync function verifyMessage (message, signature, opt = {}) {\n return verifyMessageCrypto(\n message,\n typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,\n decode(await this.address(opt))\n )\n}\n\n/**\n * AccountBase Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Account is one of the three basic building blocks of an\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} client and provides access to a\n * signing key pair.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} options.networkId - NETWORK_ID using for signing transaction's\n * @return {Object} Account instance\n */\nexport default stampit({\n init ({ networkId }) { // NETWORK_ID using for signing transaction's\n if (!this.networkId && networkId) {\n this.networkId = networkId\n }\n },\n methods: { signTransaction, getNetworkId, signMessage, verifyMessage }\n}, required({\n methods: {\n sign: required,\n address: required\n }\n}))\n\n/**\n * Sign data blob\n * @function sign\n * @instance\n * @abstract\n * @category async\n * @rtype (data: String) => data: Promise[String]\n * @param {String} data - Data blob to sign\n * @return {String} Signed data blob\n */\n\n/**\n * Obtain account address\n * @function address\n * @instance\n * @abstract\n * @category async\n * @rtype () => address: Promise[String]\n * @return {String} Public account address\n */\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Ae module\n * @module @aeternity/aepp-sdk/es/ae\n * @export Ae\n * @example import { Ae } from '@aeternity/aepp-sdk'\n */\n\nimport stampit from '@stamp/it'\nimport Tx from '../tx'\nimport Chain from '../chain'\nimport AccountBase from '../account/base'\nimport TxBuilder from '../tx/builder'\nimport BigNumber from 'bignumber.js'\nimport { AE_AMOUNT_FORMATS } from '../utils/amount-formatter'\nimport { ArgumentError } from '../utils/errors'\n\n/**\n * Sign and post a transaction to the chain\n * @instance\n * @category async\n * @rtype (tx: String, options: Object) => Promise[String]\n * @param {String} tx - Transaction\n * @param {Object} [options={}] options - Options\n * @param {Object} [options.verify=true] - Verify transaction before broadcast, throw error if not\n * valid\n * @return {Object} Transaction\n */\nasync function send (tx, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const { contractId, authFun } = options.innerTx\n ? { contractId: false }\n : await this.getAccount(await this.address(opt))\n const signed = contractId\n ? await this.signUsingGA(tx, { ...opt, authFun })\n : await this.signTransaction(tx, opt)\n return opt.innerTx\n ? { hash: TxBuilder.buildTxHash(signed), rawTx: signed }\n : this.sendTransaction(signed, opt)\n}\n\nasync function signUsingGA (tx, { authData, authFun, ...options } = {}) {\n return this.createMetaTx(tx, authData, authFun, options)\n}\n\n/**\n * Send tokens to another account\n * @instance\n * @category async\n * @rtype (amount: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} amount - Amount to spend\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function spend (amount, recipientIdOrName, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.spendTx({\n ...opt,\n senderId: await this.address(opt),\n recipientId: await this.resolveName(recipientIdOrName, 'account_pubkey', opt),\n amount\n }),\n opt\n )\n}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of token balance to another account\n * @instance\n * @category async\n * @rtype (fraction: Number|String, recipientIdOrName: String, options?: Object) => Promise[String]\n * @param {Number|String} fraction - Fraction of balance to spend (between 0 and 1)\n * @param {String} recipientIdOrName - Address or name of recipient account\n * @param {Object} [options] - Options\n * @return {Object} Transaction\n */\nasync function transferFunds (fraction, recipientIdOrName, options) {\n if (fraction < 0 || fraction > 1) {\n throw new ArgumentError('fraction', 'a number between 0 and 1', fraction)\n }\n const opt = { ...this.Ae.defaults, ...options }\n const recipientId = await this.resolveName(recipientIdOrName, 'account_pubkey', opt)\n const senderId = await this.address(opt)\n const balance = new BigNumber(await this.balance(senderId))\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP)\n const { tx: { fee } } = TxBuilder.unpackTx(\n await this.spendTx({ ...opt, senderId, recipientId, amount: desiredAmount })\n )\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount\n return this.send(await this.spendTx({ ...opt, senderId, recipientId, amount }), opt)\n}\n\n/**\n * Submit transaction of another account paying for it (fee and gas)\n * @instance\n * @category async\n * @rtype (transaction: String, options?: Object) => Promise[String]\n * @param {String} transaction - tx_<base64>-encoded transaction\n * @param {Object} [options]\n * @return {Object} Transaction\n */\nasync function payForTransaction (transaction, options) {\n const opt = { ...this.Ae.defaults, ...options }\n return this.send(\n await this.payingForTx({\n ...opt,\n payerId: await this.address(opt),\n tx: transaction\n }),\n opt\n )\n}\n\n/**\n * Remove all listeners for RPC\n * @instance\n * @return {void}\n */\nfunction destroyInstance () {\n const destroyMethods = ['destroyClient', 'destroyServer'] // Array with destroy function's\n destroyMethods.forEach(m => this[m] && typeof this[m] === 'function' && this[m]())\n}\n\n/**\n * Basic Ae Stamp\n *\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n *\n * Ae objects are the composition of three basic building blocks:\n * * {@link module:@aeternity/aepp-sdk/es/tx--Tx}\n * * {@link module:@aeternity/aepp-sdk/es/account--Account}\n * * {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * Only by providing the joint functionality of those three, most more advanced\n * operations, i.e. the ones with actual use value on the chain, become\n * available.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Ae instance\n */\nconst Ae = stampit(Tx, AccountBase, Chain, {\n methods: { send, spend, transferFunds, payForTransaction, destroyInstance, signUsingGA },\n deepProps: { Ae: { defaults: { denomination: AE_AMOUNT_FORMATS.AETTOS } } }\n})\n\nexport default Ae\n","import { verify, hash } from '../utils/crypto'\nimport { encode, decode } from './builder/helpers'\n\nimport BigNumber from 'bignumber.js'\nimport { MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE } from './builder/schema'\nimport { calculateFee, unpackTx } from './builder'\nimport { UnsupportedProtocolError } from '../utils/errors'\n\n/**\n * Transaction validator\n * @module @aeternity/aepp-sdk/es/tx/validator\n * @export verifyTransaction\n * @example import { verifyTransaction } from '@aeternity/aepp-sdk'\n */\n\nconst validators = [\n ({ encodedTx, signatures }, { account, node, parentTxTypes }) => {\n if ((encodedTx ?? signatures) === undefined) return []\n if (signatures.length !== 1) return [] // TODO: Support multisignature?\n const prefix = Buffer.from([\n node.nodeNetworkId,\n ...parentTxTypes.includes(TX_TYPE.payingFor) ? ['inner_tx'] : []\n ].join('-'))\n const txWithNetworkId = Buffer.concat([prefix, encodedTx.rlpEncoded])\n const txHashWithNetworkId = Buffer.concat([prefix, hash(encodedTx.rlpEncoded)])\n const decodedPub = decode(account.id, 'ak')\n if (verify(txWithNetworkId, signatures[0], decodedPub) ||\n verify(txHashWithNetworkId, signatures[0], decodedPub)) return []\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have' +\n ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures']\n }]\n },\n ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {\n if ((encodedTx ?? tx) === undefined) return []\n return verifyTransaction(\n encode((encodedTx ?? tx).rlpEncoded, 'tx'),\n node,\n [...parentTxTypes, txType]\n )\n },\n (tx, { txType }) => {\n if (tx.fee === undefined) return []\n const minFee = calculateFee(0, txType, {\n gas: +tx.gas || 0, params: tx, showWarning: false, vsn: tx.VSN\n })\n if (new BigNumber(minFee).lte(tx.fee)) return []\n return [{\n message: `Fee ${tx.fee} is too low, minimum fee for this transaction is ${minFee}`,\n key: 'InsufficientFee',\n checkedKeys: ['fee']\n }]\n },\n ({ ttl }, { height }) => {\n if (ttl === undefined) return []\n ttl = +ttl\n if (ttl === 0 || ttl >= height) return []\n return [{\n message: `TTL ${ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl']\n }]\n },\n ({ amount, fee, nameFee, tx }, { account, parentTxTypes, txType }) => {\n if ((amount ?? fee ?? nameFee) === undefined) return []\n const cost = new BigNumber(fee).plus(nameFee || 0).plus(amount || 0)\n .plus(txType === TX_TYPE.payingFor ? tx.tx.encodedTx.tx.fee : 0)\n .minus(parentTxTypes.includes(TX_TYPE.payingFor) ? fee : 0)\n if (cost.lte(account.balance)) return []\n return [{\n message: `Account balance ${account.balance} is not enough to execute the transaction that costs ${cost.toFixed()}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee']\n }]\n },\n ({ nonce }, { account, parentTxTypes }) => {\n if (nonce === undefined || parentTxTypes.includes(TX_TYPE.gaMeta)) return []\n nonce = +nonce\n const validNonce = account.nonce + 1\n if (nonce === validNonce) return []\n return [{\n ...nonce < validNonce\n ? {\n message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,\n key: 'NonceAlreadyUsed'\n }\n : {\n message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,\n key: 'NonceHigh'\n },\n checkedKeys: ['nonce']\n }]\n },\n ({ gasPrice }) => {\n if (gasPrice === undefined) return []\n if (gasPrice >= MIN_GAS_PRICE) return []\n return [{\n message: `Gas price ${gasPrice} must be bigger then ${MIN_GAS_PRICE}`,\n key: 'MinGasPrice',\n checkedKeys: ['gasPrice']\n }]\n },\n ({ ctVersion, abiVersion }, { txType, node }) => {\n const { consensusProtocolVersion } = node.getNodeInfo()\n const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!protocol) throw new UnsupportedProtocolError(`Unsupported protocol: ${consensusProtocolVersion}`)\n // If not contract create tx\n if (!ctVersion) ctVersion = { abiVersion }\n const txProtocol = protocol[txType]\n if (!txProtocol) return []\n if (Object.entries(ctVersion).some(([key, value]) => !txProtocol[key].includes(+value))) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion']\n }]\n }\n return []\n },\n async ({ contractId }, { txType, node }) => {\n if (TX_TYPE.contractCall !== txType) return []\n try {\n const { active } = await node.api.getContract(contractId)\n if (active) return []\n return [{\n message: `Contract ${contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId']\n }]\n } catch (error) {\n if (!error.response?.body?.reason) throw error\n return [{\n message: error.response.body.reason,\n key: 'ContractNotFound',\n checkedKeys: ['contractId']\n }]\n }\n }\n]\n\nconst getSenderAddress = tx => [\n 'senderId', 'accountId', 'ownerId', 'callerId',\n 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId'\n]\n .map(key => tx[key])\n .filter(a => a)\n .map(a => a.replace(/^ok_/, 'ak_'))[0]\n\n/**\n * Transaction Validator\n * This function validates some of transaction properties,\n * to make sure it can be posted it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/validator\n * @rtype (tx: String, node) => void\n * @param {String} transaction Base64Check-encoded transaction\n * @param {Object} node Node to validate transaction against\n * @param {String[]} [parentTxTypes] Types of parent transactions\n * @return {Promise<Object[]>} Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction (transaction, node, parentTxTypes = []) {\n const { tx, txType } = unpackTx(transaction)\n\n const address = getSenderAddress(tx) ??\n (txType === TX_TYPE.signed ? getSenderAddress(tx.encodedTx.tx) : null)\n const [account, { height }] = await Promise.all([\n address && node.api.getAccountByPubkey(address).catch(() => ({\n id: address,\n balance: new BigNumber(0),\n nonce: 0\n })),\n node.api.getCurrentKeyBlockHeight()\n ])\n\n return (await Promise.all(\n validators.map(v => v(tx, { txType, node, account, height, parentTxTypes })))\n ).flat()\n}\n","/**\n * NodePool module\n * @module @aeternity/aepp-sdk/es/node-pool\n * @export NodePool\n * @example import { NodePool } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\nimport { getNetworkId } from '../node'\nimport { DisconnectedError, DuplicateNodeError, NodeNotFoundError, TypeError } from '../utils/errors'\n\n/**\n * Node Pool Stamp\n * This stamp allow you to make basic manipulation(add, remove, select) on list of nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.nodes] - Array with Node instances\n * @return {Object} NodePool instance\n */\nexport default stampit({\n init ({ nodes = [] } = {}) {\n this.pool = new Map()\n this.validateNodes(nodes)\n\n nodes.forEach((node, i) => {\n const { name, instance } = node\n this.addNode(name, instance, i === 0)\n })\n if (nodes.length) this.selectNode(nodes[0].name)\n },\n propertyDescriptors: {\n api: {\n enumerable: true,\n configurable: false,\n get () {\n if (!this.selectedNode || !this.selectedNode.instance) {\n throw new NodeNotFoundError('You can\\'t use Node API. Node is not connected or not defined!')\n }\n return this.selectedNode.instance.api\n }\n }\n },\n methods: {\n /**\n * Add Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String, nodeInstance: Object, select: Boolean) => void\n * @param {String} name - Node name\n * @param {Object} node - Node instance\n * @param {Boolean} select - Select this node as current\n * @return {void}\n * @example\n * // add and select new node with name 'testNode'\n * nodePool.addNode('testNode', awaitNode({ url, internalUrl }), true)\n */\n addNode (name, node, select = false) {\n if (this.pool.has(name)) throw new DuplicateNodeError(name)\n\n this.validateNodes([{ name, instance: node }])\n\n this.pool.set(name, {\n name,\n instance: node,\n url: node.url,\n internalUrl: node.internalUrl,\n networkId: node.nodeNetworkId,\n version: node.version,\n consensusProtocolVersion: node.consensusProtocolVersion\n })\n if (select || !this.selectedNode) {\n this.selectNode(name)\n }\n },\n /**\n * Select Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype (name: String) => void\n * @param {String} name - Node name\n * @return {void}\n * @example\n * nodePool.selectNode('testNode')\n */\n selectNode (name) {\n if (!this.pool.has(name)) throw new NodeNotFoundError(`Node with name ${name} not in pool`)\n\n this.selectedNode = this.pool.get(name)\n },\n /**\n * Get NetworkId of current Node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => String\n * @return {String}\n * @example\n * nodePool.getNetworkId()\n */\n getNetworkId,\n /**\n * Check if you have selected node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Boolean\n * @return {Boolean}\n * @example\n * nodePool.isNodeConnected()\n */\n isNodeConnected () {\n return !!this.selectedNode.instance\n },\n /**\n * Get information about node\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object\n * @return {Object}\n * @example\n * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }\n */\n getNodeInfo () {\n if (!this.isNodeConnected()) throw new DisconnectedError()\n return {\n name: this.selectedNode.name,\n ...this.selectedNode.instance.getNodeInfo()\n }\n },\n /**\n * Get array of available nodes\n * @function\n * @alias module:@aeternity/aepp-sdk/es/node-pool\n * @rtype () => Object[]\n * @return {Object[]}\n * @example\n * nodePool.getNodesInPool()\n */\n getNodesInPool () {\n return Array.from(this.pool.entries()).map(([name, node]) => ({\n name,\n ...node.instance.getNodeInfo()\n }))\n },\n validateNodes (nodes) {\n // TODO: validate it on TypeScript level instead\n // (to speedup development, save runtime resources)\n if (!Array.isArray(nodes)) throw new TypeError('\"nodes\" should be an array')\n const notObject = nodes.map(n => typeof n).find(t => t !== 'object')\n if (notObject) throw new TypeError(`Each node should be an object, got ${notObject} instead`)\n const wrongFields = nodes.find(n => typeof n.name !== 'string' || typeof n.instance !== 'object')\n if (notObject) {\n throw new TypeError(\n 'Each node should have name (string), instance (object) ' +\n `fields, got ${JSON.stringify(wrongFields)} instead`\n )\n }\n const wrongInstanceFields = nodes\n .map(n => n.instance)\n .find(i => typeof i.api !== 'object' || typeof i.genesisHash !== 'string' ||\n typeof i.consensusProtocolVersion !== 'number')\n if (wrongInstanceFields) {\n throw new TypeError(\n 'Each node instance should have api (object), consensusProtocolVersion (number), ' +\n `genesisHash (string) fields, got ${JSON.stringify(wrongInstanceFields)} instead`\n )\n }\n }\n },\n props: {\n selectedNode: {}\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport Chain from './'\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../utils/amount-formatter'\nimport verifyTransaction from '../tx/validator'\nimport NodePool from '../node-pool'\nimport { pause } from '../utils/other'\nimport { isNameValid, produceNameId, decode } from '../tx/builder/helpers'\nimport { DRY_RUN_ACCOUNT } from '../tx/builder/schema'\nimport {\n AensPointerContextError,\n DryRunError,\n InvalidAensNameError,\n InvalidTxError,\n RequestTimedOutError,\n TxTimedOutError,\n TxNotInChainError,\n ArgumentError\n} from '../utils/errors'\n\n/**\n * ChainNode module\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/chain}.\n * @module @aeternity/aepp-sdk/es/chain/node\n * @export ChainNode\n * @example import { ChainNode } from '@aeternity/aepp-sdk'\n */\n\nasync function sendTransaction (tx, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n if (opt.verify) {\n const validation = await verifyTransaction(tx, this.selectedNode.instance)\n if (validation.length) {\n const message = 'Transaction verification errors: ' +\n validation.map(v => v.message).join(', ')\n throw Object.assign(new InvalidTxError(message), {\n code: 'TX_VERIFICATION_ERROR',\n validation,\n transaction: tx\n })\n }\n }\n\n try {\n const { txHash } = await this.api.postTransaction({ tx }, {\n __queue: `tx-${await this.address?.(options).catch(() => '')}`\n })\n\n if (opt.waitMined) {\n const txData = { ...await this.poll(txHash, options), rawTx: tx }\n // wait for transaction confirmation\n if (options.confirm) {\n return { ...txData, confirmationHeight: await this.waitForTxConfirm(txHash, options) }\n }\n return txData\n }\n return { hash: txHash, rawTx: tx }\n } catch (error) {\n throw Object.assign(error, {\n rawTx: tx,\n verifyTx: () => verifyTransaction(tx, this.selectedNode.instance)\n })\n }\n}\n\nasync function waitForTxConfirm (txHash, options = { confirm: 3 }) {\n options.confirm = options.confirm === true ? 3 : options.confirm\n const { blockHeight } = await this.api.getTransactionByHash(txHash)\n const height = await this.awaitHeight(blockHeight + options.confirm, options)\n const { blockHeight: newBlockHeight } = await this.api.getTransactionByHash(txHash)\n switch (newBlockHeight) {\n case -1:\n throw new TxNotInChainError(txHash)\n case blockHeight:\n return height\n default:\n return waitForTxConfirm(txHash, options)\n }\n}\n\nasync function getAccount (address, { height, hash } = {}) {\n if (height) return this.api.getAccountByPubkeyAndHeight(address, height)\n if (hash) return this.api.getAccountByPubkeyAndHash(address, hash)\n return this.api.getAccountByPubkey(address)\n}\n\n/**\n * @function\n * @deprecated\n */\nasync function balance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height })\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\nasync function getBalance (address, { height, hash, format = AE_AMOUNT_FORMATS.AETTOS } = {}) {\n const { balance } = await this.getAccount(address, { hash, height }).catch(_ => ({ balance: 0 }))\n\n return formatAmount(balance, { targetDenomination: format }).toString()\n}\n\n/**\n * @deprecated use `sdk.api.getTransactionByHash/getTransactionInfoByHash` instead\n */\nasync function tx (hash, info = true) {\n const tx = await this.api.getTransactionByHash(hash)\n if (['ContractCreateTx', 'ContractCallTx', 'ChannelForceProgressTx'].includes(tx.tx.type) && info && tx.blockHeight !== -1) {\n try {\n return { ...tx, ...await this.getTxInfo(hash) }\n } catch (e) {}\n }\n return tx\n}\n\nasync function height () {\n return (await this.api.getCurrentKeyBlockHeight()).height\n}\n\nasync function awaitHeight (\n height,\n { interval = this._getPollInterval('block'), attempts = 20 } = {}\n) {\n let currentHeight\n for (let i = 0; i < attempts; i++) {\n if (i) await pause(interval)\n currentHeight = await this.height()\n if (currentHeight >= height) return currentHeight\n }\n throw new RequestTimedOutError((attempts - 1) * interval, currentHeight, height)\n}\n\nasync function poll (th, { blocks = 10, interval = this._getPollInterval('microblock') } = {}) {\n const max = await this.height() + blocks\n do {\n const tx = await this.api.getTransactionByHash(th)\n if (tx.blockHeight !== -1) return tx\n await pause(interval)\n } while (await this.height() < max)\n const status = this.api.getCheckTxInPool && (await this.api.getCheckTxInPool(th)).status\n throw new TxTimedOutError(blocks, th, status)\n}\n\n/**\n * @deprecated use `sdk.api.getTransactionInfoByHash` instead\n */\nasync function getTxInfo (hash) {\n const result = await this.api.getTransactionInfoByHash(hash)\n return result.callInfo || result\n}\n\nasync function mempool () {\n return this.api.getPendingTransactions()\n}\n\nasync function getCurrentGeneration () {\n return this.api.getCurrentGeneration()\n}\n\nasync function getGeneration (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getGenerationByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getGenerationByHeight(hashOrHeight)\n throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight)\n}\n\nasync function getMicroBlockTransactions (hash) {\n return (await this.api.getMicroBlockTransactionsByHash(hash)).transactions\n}\n\nasync function getKeyBlock (hashOrHeight) {\n if (typeof hashOrHeight === 'string') return this.api.getKeyBlockByHash(hashOrHeight)\n if (typeof hashOrHeight === 'number') return this.api.getKeyBlockByHeight(hashOrHeight)\n throw new ArgumentError('hashOrHeight', 'a string or number', hashOrHeight)\n}\n\nasync function getMicroBlockHeader (hash) {\n return this.api.getMicroBlockHeaderByHash(hash)\n}\n\nasync function txDryRunHandler (key) {\n const rs = this._txDryRun[key]\n delete this._txDryRun[key]\n\n let dryRunRes\n try {\n dryRunRes = await this.api.protectedDryRunTxs({\n top: rs[0].top,\n txEvents: rs[0].txEvents,\n txs: rs.map(req => ({ tx: req.tx })),\n accounts: Array.from(new Set(rs.map(req => req.accountAddress)))\n .map(pubKey => ({ pubKey, amount: DRY_RUN_ACCOUNT.amount }))\n })\n } catch (error) {\n rs.forEach(({ reject }) => reject(error))\n return\n }\n\n const { results, txEvents } = dryRunRes\n results.forEach(({ result, reason, ...resultPayload }, idx) => {\n const { resolve, reject, tx, options, accountAddress } = rs[idx]\n if (result === 'ok') return resolve({ ...resultPayload, txEvents })\n reject(Object.assign(\n new DryRunError(reason), { tx, accountAddress, options }\n ))\n })\n}\n\nasync function txDryRun (tx, accountAddress, { top, txEvents, combine }) {\n const key = combine ? [top, txEvents].join() : 'immediate'\n this._txDryRun ??= {}\n this._txDryRun[key] ??= []\n return new Promise((resolve, reject) => {\n this._txDryRun[key].push({ tx, accountAddress, top, txEvents, resolve, reject })\n if (!combine) {\n txDryRunHandler.call(this, key)\n return\n }\n this._txDryRun[key].timeout ??= setTimeout(txDryRunHandler.bind(this, key))\n })\n}\n\nasync function getContractByteCode (contractId) {\n return this.api.getContractCode(contractId)\n}\n\nasync function getContract (contractId) {\n return this.api.getContract(contractId)\n}\n\nasync function getName (name) {\n return this.api.getNameEntryByName(name)\n}\n\n/**\n * Resolve AENS name and return name hash\n * @param {String} nameOrId\n * @param {String} key in AENS pointers record\n * @param {Object} [options]\n * @param {Boolean} [options.verify] To ensure that name exist and have a corresponding pointer\n * // TODO: avoid that to don't trust to current api gateway\n * @param {Boolean} [options.resolveByNode] Enables pointer resolving using node\n * @return {String} Address or AENS name hash\n */\nasync function resolveName (nameOrId, key, { verify, resolveByNode } = {}) {\n if (!nameOrId || typeof nameOrId !== 'string') {\n throw new InvalidAensNameError(`Name or address should be a string: ${nameOrId}`)\n }\n try {\n decode(nameOrId)\n return nameOrId\n } catch (error) {}\n if (isNameValid(nameOrId)) {\n if (verify || resolveByNode) {\n const name = await this.api.getNameEntryByName(nameOrId)\n const pointer = name.pointers.find(pointer => pointer.key === key)\n if (!pointer) {\n throw new AensPointerContextError(`Name ${nameOrId} don't have pointers for ${key}`)\n }\n if (resolveByNode) return pointer.id\n }\n return produceNameId(nameOrId)\n }\n throw new InvalidAensNameError(`Invalid name or address: ${nameOrId}`)\n}\n\n/**\n * ChainNode Stamp\n *\n * This is implementation of {@link module:@aeternity/aepp-sdk/es/chain--Chain}\n * composed with {@link module:@aeternity/aepp-sdk/es/contract/node--ContractNodeAPI} and\n * {@link module:@aeternity/aepp-sdk/es/oracle/node--OracleNodeAPI}\n * @function\n * @alias module:@aeternity/aepp-sdk/es/chain/node\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} ChainNode instance\n * @example ChainNode({url: 'https://testnet.aeternity.io/'})\n */\nconst ChainNode = Chain.compose(NodePool, {\n methods: {\n sendTransaction,\n balance,\n getBalance,\n getAccount,\n tx,\n height,\n awaitHeight,\n poll,\n getTxInfo,\n mempool,\n getCurrentGeneration,\n getGeneration,\n getMicroBlockHeader,\n getMicroBlockTransactions,\n getKeyBlock,\n txDryRun,\n getContractByteCode,\n getContract,\n getName,\n waitForTxConfirm,\n resolveName\n }\n})\n\nexport default ChainNode\n","/**\n * TxObject module\n * @module @aeternity/aepp-sdk/es/tx/tx-object\n * @export TxObject\n * @example import TxObject from '@aeternity/aepp-sdk/es/tx/tx-object'\n */\nimport stampit from '@stamp/it'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { TX_TYPE } from './builder/schema'\nimport { encode } from './builder/helpers'\nimport { isHex } from '../utils/string'\nimport { InvalidTxError, TypeError, UnknownTxError, InvalidSignatureError } from '../utils/errors'\n\n/**\n * Build transaction from object\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {String} type Transaction type\n * @param {Object} params Transaction params\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{\n * encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, params: Object, type: String\n * }}\n */\nconst buildTransaction = (type, params, options = {}) => {\n if (typeof params !== 'object') throw new TypeError('tx \"params\" should be an object')\n if (typeof type !== 'string' || !Object.values(TX_TYPE).includes(type)) throw new UnknownTxError(`Unknown transaction type ${type}`)\n const fee = calculateFee(params.fee, type, { gas: params.gas, params, vsn: params.vsn })\n const { rlpEncoded, binary, tx: encodedTx, txObject } = buildTx(\n { ...params, fee }, type, { vsn: params.vsn, ...options }\n )\n return { rlpEncoded, binary, encodedTx, params: txObject, type }\n}\n\n/**\n * Unpack transaction from RLP encoded binary or base64c string\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Uint8Array|String} tx RLP encoded binary or base64c(rlpBinary) string\n * @throws {Error} Arguments validation error's\n * @return {{\n * encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object\n * }}\n */\nconst unpackTransaction = (tx) => {\n if (!tx) throw new InvalidTxError(`Invalid transaction: ${tx}`)\n if (typeof tx === 'string') {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx)\n return { encodedTx: tx, type, params, rlpEncoded, binary }\n }\n if (tx instanceof Uint8Array) {\n const { txType: type, tx: params, rlpEncoded, binary } = unpackTx(tx, true)\n return { encodedTx: encode(tx, 'tx'), type, params, rlpEncoded, binary }\n }\n throw new InvalidTxError(`\"tx\" should be a string or Uint8Array, got ${tx} instead`)\n}\n\n/**\n * Helper which build or unpack transaction base on constructor arguments\n * Need to provide one of arguments: [tx] -> unpack flow or [params, type] -> build flow\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} [tx] Transaction rlp binary or vase64c string\n * @param {Object} params Transaction params\n * @param {String} type Transaction type\n * @param {Object} [options={}] Options\n * @throws {Error} Arguments validation error's\n * @return {{\n * encodedTx: String, binary: Array<Buffer>, rlpEncoded: Buffer, type: String, params: Object\n * }}\n */\nconst initTransaction = ({ tx, params, type, options = {} } = {}) => {\n if (params && type) return buildTransaction(type, params, options)\n if (tx) return unpackTransaction(tx)\n throw new InvalidTxError('Invalid TxObject arguments. Please provide one of { tx: \"tx_asdasd23...\" } or { type: \"spendTx\", params: {...} }')\n}\n\n/**\n * Transaction Validator Stamp\n * This stamp give us possibility to unpack and validate some of transaction properties,\n * to make sure we can post it to the chain\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Buffer|String} [options.tx] - Rlp binary or base64c transaction\n * @param {Object} [options.params] - Transaction params\n * @param {String} [options.type] - Transaction type\n * @param {Object} [options.options] - Build options\n * @return {Object} TxObject instance\n * @example TxObject({ params: {...}, type: 'spendTx' })\n */\nexport const TxObject = stampit({\n init ({ tx, params, type, options = {} } = {}) {\n this.options = options\n this.signatures = []\n Object.assign(this, initTransaction({ tx, params, type, options }))\n\n if (this.type === TX_TYPE.signed) {\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n }\n },\n statics: {\n /**\n * Create txObject from base64c RLP encoded transaction string with 'tx_' prefix\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {String} tx Transaction string (tx_23fsdgsdfg...)\n * @return {TxObject}\n */\n fromString: (tx) => TxObject({ tx }),\n /**\n * Create txObject from transaction RLP binary\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @static\n * @param {Buffer} tx Transaction RLP binary\n * @return {TxObject}\n */\n fromRlp: (tx) => TxObject({ tx })\n },\n methods: {\n /**\n * Rebuild transaction with new params and recalculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props Transaction properties for update\n * @param options\n * @return {TxObject}\n */\n setProp (props = {}, options = {}) {\n if (typeof props !== 'object') throw new TypeError('Props should be an object')\n this.isSigned = false\n this.signatures = []\n Object.assign(\n this,\n buildTransaction(\n this.type, { ...this.params, ...props, fee: null }, { ...this.options, ...options }\n )\n )\n return this\n },\n /**\n * Get signatures\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @return {Array} Array of signatures\n */\n getSignatures () {\n return this.signatures\n },\n /**\n * Add signature\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Buffer|String} signature Signature to add ( Can be: Buffer | Uint8Array | HexString )\n * @return {void}\n */\n addSignature (signature) {\n signature = isHex(signature) ? Buffer.from(signature, 'hex') : signature\n if (!Buffer.isBuffer(signature) && !(signature instanceof Uint8Array)) throw new InvalidSignatureError('Invalid signature, signature must be of type Buffer or Uint8Array')\n Object.assign(\n this,\n buildTransaction(\n TX_TYPE.signed,\n { encodedTx: this.rlpEncoded, signatures: [[...this.signatures, signature]] }\n )\n )\n\n const { signatures, encodedTx: { txType, tx } } = this.params\n this.signatures = signatures\n this.params = tx\n this.type = txType\n this.isSigned = true\n },\n /**\n * Calculate fee\n * @alias module:@aeternity/aepp-sdk/es/tx/tx-object\n * @param {Object} props\n * @return {String} fee\n */\n calculateMinFee (props = {}) {\n const params = { ...this.params, ...props }\n return calculateFee(0, this.type, { gas: params.gas, params, vsn: params.vsn })\n }\n }\n})\n\nexport default TxObject\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Transaction module\n * @module @aeternity/aepp-sdk/es/tx/tx\n * @export Transaction\n * @example import { Transaction } from '@aeternity/aepp-sdk'\n */\n\nimport ChainNode from '../chain/node'\nimport Tx from './'\nimport { buildTx, calculateFee, unpackTx } from './builder'\nimport { ABI_VERSIONS, MIN_GAS_PRICE, PROTOCOL_VM_ABI, TX_TYPE, TX_TTL } from './builder/schema'\nimport { buildContractId, encode } from './builder/helpers'\nimport { TxObject } from './tx-object'\nimport {\n ArgumentError,\n UnsupportedABIversionError,\n UnsupportedVMversionError,\n UnsupportedProtocolError,\n UnknownTxError\n} from '../utils/errors'\n\nasync function spendTx ({ senderId, recipientId, amount, payload = '' }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.spend, { senderId, ...arguments[0], payload }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n ...arguments[0],\n recipientId,\n senderId,\n nonce,\n ttl,\n payload\n },\n type: TX_TYPE.spend\n }).encodedTx\n }\n : await this.api.postSpend({\n ...arguments[0],\n amount: parseInt(amount),\n recipientId,\n senderId,\n nonce,\n ttl,\n fee: parseInt(fee),\n payload\n })\n\n return tx\n}\n\nasync function namePreclaimTx ({ accountId, commitmentId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.namePreClaim, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.namePreClaim\n }).encodedTx\n }\n : await this.api.postNamePreclaim({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function nameClaimTx ({ accountId, name, nameSalt, vsn = 2 }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameClaim, { senderId: accountId, ...arguments[0], vsn }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, vsn },\n type: TX_TYPE.nameClaim\n }).encodedTx\n }\n : await this.api.postNameClaim({\n ...arguments[0], nonce, ttl, fee: parseInt(fee), name: encode(name, 'nm')\n })\n\n return tx\n}\n\nasync function nameTransferTx ({ accountId, nameId, recipientId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameTransfer, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], recipientId, nonce, ttl, fee },\n type: TX_TYPE.nameTransfer\n }).encodedTx\n }\n : await this.api.postNameTransfer({\n ...arguments[0], recipientId, nonce, ttl, fee: parseInt(fee)\n })\n\n return tx\n}\n\nasync function nameUpdateTx ({ accountId, nameId, nameTtl, pointers, clientTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameUpdate, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.nameUpdate\n }).encodedTx\n }\n : await this.api.postNameUpdate({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function nameRevokeTx ({ accountId, nameId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.nameRevoke, { senderId: accountId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee },\n type: TX_TYPE.nameRevoke\n }).encodedTx\n }\n : await this.api.postNameRevoke({ ...arguments[0], nonce, ttl, fee: parseInt(fee) })\n\n return tx\n}\n\nasync function contractCreateTx ({\n ownerId, code, vmVersion, abiVersion, amount, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.contractCreate, { senderId: ownerId, ...arguments[0], ctVersion, gasPrice }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, ctVersion, gasPrice },\n type: TX_TYPE.contractCreate\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n : this.api.postContractCreate({\n ...arguments[0],\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n vmVersion: ctVersion.vmVersion,\n abiVersion: ctVersion.abiVersion\n })\n}\n\nasync function contractCallTx ({\n callerId, contractId, abiVersion, amount, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n const ctVersion = this.getVmVersion(TX_TYPE.contractCall, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.contractCall,\n { senderId: callerId, ...arguments[0], gasPrice, abiVersion: ctVersion.abiVersion }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, abiVersion: ctVersion.abiVersion, gasPrice },\n type: TX_TYPE.contractCall\n }).encodedTx\n }\n : await this.api.postContractCall({\n ...arguments[0],\n nonce,\n ttl,\n fee: parseInt(fee),\n gas: parseInt(gas),\n gasPrice,\n abiVersion: ctVersion.abiVersion\n })\n\n return tx\n}\n\nasync function oracleRegisterTx ({\n accountId, queryFormat, responseFormat, queryFee, oracleTtl, abiVersion = ABI_VERSIONS.NO_ABI\n}) {\n // const { abiVersion: abi } = this.getVmVersion(TX_TYPE.oracleRegister, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleRegister, { senderId: accountId, ...arguments[0], abiVersion }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: {\n accountId,\n queryFee,\n abiVersion,\n fee,\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n },\n type: TX_TYPE.oracleRegister\n }).encodedTx\n }\n : await this.api.postOracleRegister({\n accountId,\n queryFee,\n abiVersion,\n fee: parseInt(fee),\n oracleTtl,\n nonce,\n ttl,\n queryFormat,\n responseFormat\n })\n\n return tx\n}\n\nasync function oracleExtendTx ({ oracleId, callerId, oracleTtl }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleExtend, { senderId: callerId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, fee, oracleTtl, nonce, ttl },\n type: TX_TYPE.oracleExtend\n }).encodedTx\n }\n : await this.api.postOracleExtend({ oracleId, fee: parseInt(fee), oracleTtl, nonce, ttl })\n\n return tx\n}\n\nasync function oraclePostQueryTx ({ oracleId, responseTtl, query, queryTtl, queryFee, senderId }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleQuery, { senderId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, query, queryTtl, fee, queryFee, ttl, nonce, senderId },\n type: TX_TYPE.oracleQuery\n }).encodedTx\n }\n : await this.api.postOracleQuery({\n oracleId,\n responseTtl,\n query,\n queryTtl,\n fee: parseInt(fee),\n queryFee,\n ttl,\n nonce,\n senderId\n })\n\n return tx\n}\n\nasync function oracleRespondTx ({ oracleId, callerId, responseTtl, queryId, response }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.oracleResponse, { senderId: callerId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? {\n tx: TxObject({\n params: { oracleId, responseTtl, queryId, response, fee, ttl, nonce },\n type: TX_TYPE.oracleResponse\n }).encodedTx\n }\n : await this.api.postOracleRespond({\n oracleId, responseTtl, queryId, response, fee: parseInt(fee), ttl, nonce\n })\n return tx\n}\n\nasync function channelCloseSoloTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelCloseSolo, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelCloseSolo)\n : await this.api.postChannelCloseSolo({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSlashTx ({ channelId, fromId, payload, poi }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSlash, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSlash)\n : await this.api.postChannelSlash({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n poi,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSettleTx ({ channelId, fromId, initiatorAmountFinal, responderAmountFinal }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSettle, { senderId: fromId, ...arguments[0] }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n initiatorAmountFinal,\n responderAmountFinal,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSettle)\n : await this.api.postChannelSettle({\n ...arguments[0],\n channelId,\n fromId,\n initiatorAmountFinal: parseInt(initiatorAmountFinal),\n responderAmountFinal: parseInt(responderAmountFinal),\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function channelSnapshotSoloTx ({ channelId, fromId, payload }) {\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.channelSnapshotSolo, { senderId: fromId, ...arguments[0], payload }\n )\n\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n const { tx } = this.nativeMode\n ? buildTx({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n ttl,\n fee,\n nonce\n }, TX_TYPE.channelSnapshotSolo)\n : await this.api.postChannelSnapshotSolo({\n ...arguments[0],\n channelId,\n fromId,\n payload,\n ttl,\n fee: parseInt(fee),\n nonce\n })\n\n return tx\n}\n\nasync function gaAttachTx ({\n ownerId, code, vmVersion, abiVersion, authFun, gas, gasPrice = MIN_GAS_PRICE, callData\n}) {\n // Get VM_ABI version\n const ctVersion = this.getVmVersion(TX_TYPE.contractCreate, arguments[0])\n // Calculate fee, get absolute ttl (ttl + height), get account nonce\n const { fee, ttl, nonce } = await this.prepareTxParams(\n TX_TYPE.gaAttach, { senderId: ownerId, ...arguments[0], ctVersion, gasPrice }\n )\n // Build transaction using sdk (if nativeMode) or build on `AETERNITY NODE` side\n return {\n tx: TxObject({\n params: { ...arguments[0], nonce, ttl, fee, ctVersion, gasPrice },\n type: TX_TYPE.gaAttach\n }).encodedTx,\n contractId: buildContractId(ownerId, nonce)\n }\n}\n\nasync function payingForTx ({ tx, payerId, ...args }) {\n const params = { tx: unpackTx(tx), payerId }\n const { fee, nonce } = await this.prepareTxParams(TX_TYPE.payingFor, {\n ...params, ...args, senderId: payerId\n })\n return buildTx({ ...params, ...args, fee, nonce }, TX_TYPE.payingFor).tx\n}\n\n/**\n * Validated vm/abi version or get default based on transaction type and NODE version\n *\n * @param {string} txType Type of transaction\n * @param {object} vmAbi Object with vm and abi version fields\n * @return {object} Object with vm/abi version ({ vmVersion: number, abiVersion: number })\n */\nfunction getVmVersion (txType, { vmVersion, abiVersion } = {}) {\n const { consensusProtocolVersion } = this.getNodeInfo()\n const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion]\n if (!supportedProtocol) throw new UnsupportedProtocolError('Not supported consensus protocol version')\n const protocolForTX = supportedProtocol[txType]\n if (!protocolForTX) throw new UnknownTxError('Not supported tx type')\n\n abiVersion = abiVersion || protocolForTX.abiVersion[0]\n vmVersion = vmVersion || protocolForTX.vmVersion[0]\n if (!protocolForTX.vmVersion.includes(vmVersion)) {\n throw new UnsupportedVMversionError(`VM VERSION ${vmVersion} do not support by this node. Supported: [${protocolForTX.vmVersion}]`)\n }\n if (!protocolForTX.abiVersion.includes(abiVersion)) {\n throw new UnsupportedABIversionError(`ABI VERSION ${abiVersion} do not support by this node. Supported: [${protocolForTX.abiVersion}]`)\n }\n\n return { vmVersion, abiVersion }\n}\n\n/**\n * Compute the absolute ttl by adding the ttl to the current height of the chain\n *\n * @param {number} ttl\n * @param {boolean} relative ttl is absolute or relative(default: true(relative))\n * @return {number} Absolute Ttl\n */\nasync function calculateTtl (ttl = TX_TTL, relative = true) {\n if (ttl === 0) return 0\n if (ttl < 0) throw new ArgumentError('ttl', 'greater or equal to 0', ttl)\n\n if (relative) {\n const { height } = await this.api.getCurrentKeyBlock()\n return +(height) + ttl\n }\n return ttl\n}\n\n/**\n * Get the next nonce to be used for a transaction for an account\n *\n * @param {string} accountId\n * @param {number} nonce\n * @return {number} Next Nonce\n */\nasync function getAccountNonce (accountId, nonce) {\n if (nonce) return nonce\n const { nonce: accountNonce } = await this.api.getAccountByPubkey(accountId)\n .catch(() => ({ nonce: 0 }))\n return accountNonce + 1\n}\n\n/**\n * Calculate fee, get absolute ttl (ttl + height), get account nonce\n *\n * @param {String} txType Type of transaction\n * @param {Object} params Object which contains all tx data\n * @return {Object} { ttl, nonce, fee } Object with account nonce, absolute ttl and transaction fee\n */\nasync function prepareTxParams (\n txType,\n { senderId, nonce: n, ttl: t, fee: f, gas, absoluteTtl, vsn, strategy }\n) {\n n = n || (\n await this.api.getAccountNextNonce(senderId, { strategy }).catch(e => ({ nextNonce: 1 }))\n ).nextNonce\n const ttl = await calculateTtl.call(this, t, !absoluteTtl)\n const fee = calculateFee(\n f,\n txType,\n { showWarning: this.showWarning, gas, params: { ...arguments[1], nonce: n, ttl }, vsn }\n )\n return { fee, ttl, nonce: n }\n}\n\n/**\n * Transaction Stamp\n *\n * This is implementation of [Tx](api/tx.md) relays\n * the creation of transactions to {@link module:@aeternity/aepp-sdk/es/Node}.\n * This stamp provide ability to create native transaction's,\n * or transaction's using Node API.\n * As there is no built-in security between Node and client communication,\n * creating transaction using {@link module:@aeternity/aepp-sdk/es/Node} API\n * must never be used for production but can be very useful to verify other\n * implementations.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/tx/tx\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Boolean} [options.nativeMode=true] options.nativeMode - Use Native build of transaction's\n * @param {String} options.url - Node url\n * @param {String} options.internalUrl - Node internal url\n * @return {Object} Transaction instance\n * @example Transaction({url: 'https://testnet.aeternity.io/'})\n */\nconst Transaction = ChainNode.compose(Tx, {\n init ({ nativeMode = true, showWarning = false }) {\n this.nativeMode = nativeMode\n this.showWarning = showWarning\n },\n props: {\n nativeMode: true,\n showWarning: false\n },\n methods: {\n spendTx,\n namePreclaimTx,\n nameClaimTx,\n nameTransferTx,\n nameUpdateTx,\n nameRevokeTx,\n contractCreateTx,\n contractCallTx,\n prepareTxParams,\n oracleRegisterTx,\n oracleExtendTx,\n oraclePostQueryTx,\n oracleRespondTx,\n channelCloseSoloTx,\n channelSlashTx,\n channelSettleTx,\n channelSnapshotSoloTx,\n gaAttachTx,\n payingForTx,\n getAccountNonce,\n getVmVersion\n }\n})\n\nexport default Transaction\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Memory Account module\n * @module @aeternity/aepp-sdk/es/account/memory\n * @export MemoryAccount\n * @example import { MemoryAccount } from '@aeternity/aepp-sdk'\n */\n\nimport AccountBase from './base'\nimport { sign, isValidKeypair } from '../utils/crypto'\nimport { isHex } from '../utils/string'\nimport { decode } from '../tx/builder/helpers'\nimport { InvalidKeypairError } from '../utils/errors'\n\nconst secrets = new WeakMap()\n\n/**\n * In-memory account stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/account/memory\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Object} options.keypair - Key pair to use\n * @param {String} options.keypair.publicKey - Public key\n * @param {String} options.keypair.secretKey - Private key\n * @return {Account}\n */\nexport default AccountBase.compose({\n init ({ keypair, gaId }) {\n this.isGa = !!gaId\n if (gaId) {\n decode(gaId)\n secrets.set(this, { publicKey: gaId })\n return\n }\n\n if (!keypair || typeof keypair !== 'object') throw new InvalidKeypairError('KeyPair must be an object')\n if (!keypair.secretKey || !keypair.publicKey) {\n throw new InvalidKeypairError('KeyPair must must have \"secretKey\", \"publicKey\" properties')\n }\n if (typeof keypair.publicKey !== 'string' || keypair.publicKey.indexOf('ak_') === -1) {\n throw new InvalidKeypairError('Public Key must be a base58c string with \"ak_\" prefix')\n }\n if (\n !Buffer.isBuffer(keypair.secretKey) &&\n (typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey))\n ) throw new InvalidKeypairError('Secret key must be hex string or Buffer')\n\n const pubBuffer = Buffer.from(decode(keypair.publicKey, 'ak'))\n if (!isValidKeypair(Buffer.from(keypair.secretKey, 'hex'), pubBuffer)) throw new InvalidKeypairError('Invalid Key Pair')\n\n secrets.set(this, {\n secretKey: Buffer.isBuffer(keypair.secretKey) ? keypair.secretKey : Buffer.from(keypair.secretKey, 'hex'),\n publicKey: keypair.publicKey\n })\n },\n props: { isGa: false },\n methods: {\n sign (data) {\n if (this.isGa) throw new InvalidKeypairError('You are trying to sign data using generalized account without keypair')\n return Promise.resolve(sign(data, secrets.get(this).secretKey))\n },\n address () {\n return Promise.resolve(secrets.get(this).publicKey)\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * AccountMultiple module\n * @module @aeternity/aepp-sdk/es/accounts/multiple\n * @export AccountMultiple\n */\n\nimport AsyncInit from '../utils/async-init'\nimport MemoryAccount from './memory'\nimport { decode } from '../tx/builder/helpers'\nimport AccountBase, { isAccountBase } from './base'\nimport {\n UnavailableAccountError,\n TypeError\n} from '../utils/errors'\n\n/**\n * AccountMultiple stamp\n *\n * The purpose of this stamp is to wrap up implementations of\n * {@link module:@aeternity/aepp-sdk/es/account/base--AccountBase} objects and provide a\n * common interface to all of them. List are a substantial part of\n * {@link module:@aeternity/aepp-sdk/es/ae/wallet--Wallet}s.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {Array} [options.accounts] - Accounts array\n * @param {String} [options.address] - Address of account to select\n * @return {Object} AccountMultiple instance\n * @example\n * const accounts = await AccountMultiple({\n * accounts: [MemoryAccount({ keypair: 'keypair_object' })]\n * })\n * await accounts.addAccount(account, { select: true }) // Add account and make it selected\n * accounts.removeAccount(address) // Remove account\n * accounts.selectAccount(address) // Select account\n * accounts.addresses() // Get available accounts\n */\nexport default AccountBase.compose(AsyncInit, {\n async init ({ accounts = [], address }) {\n this.accounts = Object.fromEntries(await Promise.all(\n accounts.map(async a => [await a.address(), a])\n ))\n address = address || Object.keys(this.accounts)[0]\n if (address) this.selectAccount(address)\n },\n props: {\n accounts: {}\n },\n deepProps: {\n selectedAddress: null\n },\n methods: {\n async address ({ onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).address()\n },\n async sign (data, { onAccount = this.selectedAddress } = {}) {\n return this._resolveAccount(onAccount).sign(data)\n },\n /**\n * Get accounts addresses\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype () => String[]\n * @return {String[]}\n * @example addresses()\n */\n addresses () {\n return Object.keys(this.accounts)\n },\n /**\n * Add specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @category async\n * @rtype (account: Account, { select: Boolean }) => void\n * @param {Object} account - Account instance\n * @param {Object} [options={}] - Options\n * @param {Boolean} [options.select] - Select account\n * @return {void}\n * @example addAccount(account)\n */\n async addAccount (account, { select } = {}) {\n const address = await account.address()\n this.accounts[address] = account\n if (select) this.selectAccount(address)\n },\n /**\n * Remove specific account\n * @alias module:@aeternity/aepp-sdk/es/accounts/multiple\n * @function\n * @rtype (address: String) => void\n * @param {String} address - Address of account to remove\n * @return {void}\n * @example removeAccount(address)\n */\n removeAccount (address) {\n if (!this.accounts[address]) {\n console.warn(`removeAccount: Account for ${address} not available`)\n return\n }\n delete this.accounts[address]\n if (this.selectedAddress === address) this.selectedAddress = null\n },\n /**\n * Select specific account\n * @alias module:@aeternity/aepp-sdk/es/account/selector\n * @instance\n * @rtype (address: String) => void\n * @param {String} address - Address of account to select\n * @example selectAccount('ak_xxxxxxxx')\n */\n selectAccount (address) {\n decode(address, 'ak')\n if (!this.accounts[address]) throw new UnavailableAccountError(address)\n this.selectedAddress = address\n },\n /**\n * Resolves an account\n * @param account account address (should exist in sdk instance), MemoryAccount or keypair\n * @returns {AccountBase}\n * @private\n */\n _resolveAccount (account) {\n if (account === null) {\n throw new TypeError(\n 'Account should be an address (ak-prefixed string), ' +\n 'keypair, or instance of account base, got null instead')\n } else {\n switch (typeof account) {\n case 'string':\n decode(account, 'ak')\n if (!this.accounts[account]) throw new UnavailableAccountError(account)\n return this.accounts[account]\n case 'object':\n return isAccountBase(account) ? account : MemoryAccount({ keypair: account })\n default:\n throw new TypeError(\n 'Account should be an address (ak-prefixed string), ' +\n `keypair, or instance of account base, got ${account} instead`)\n }\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aens module - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n * @module @aeternity/aepp-sdk/es/ae/aens\n * @export Aens\n * @example import { Aens } from '@aeternity/aepp-sdk'\n */\n\nimport { salt } from '../utils/crypto'\nimport { commitmentHash, ensureNameValid, isAuctionName } from '../tx/builder/helpers'\nimport Ae from './'\nimport { CLIENT_TTL, NAME_TTL } from '../tx/builder/schema'\nimport { ArgumentError } from '../utils/errors'\n\n/**\n * Revoke a name\n * @instance\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @category async\n * @param {String} name Name hash\n * @param {Object} [options={}] options\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })\n * // or\n * await nameObject.revoke({ fee, ttl, nonce })\n */\nasync function revoke (name, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const nameRevokeTx = await this.nameRevokeTx({\n ...opt,\n nameId: name,\n accountId: await this.address(opt)\n })\n\n return this.send(nameRevokeTx, opt)\n}\n\n/**\n * Update a name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {Object.<string, string>} pointers Map of pointer keys to corresponding addresses\n * @param {Object} [options={}]\n * @param {Boolean} [options.extendPointers] Get the pointers from the node and merge with provided\n * ones. Pointers with the same type will be overwritten\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you\n * pass publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @param {Number|String|BigNumber} [options.nameTtl=50000] Name ttl represented in number of\n * blocks (Max value is 50000 blocks)\n * @param {Number|String|BigNumber} [options.clientTtl=84600] a suggestion as to how long any\n * clients should cache this information\n * @return {Promise<Object>}\n * @throws Invalid pointer array error\n * @example\n * const name = 'test.chain'\n * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n * // or\n * await nameObject.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })\n */\nasync function update (name, pointers = {}, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n const allPointers = {\n ...options.extendPointers && Object.fromEntries(\n (await this.getName(name)).pointers.map(({ key, id }) => [key, id])\n ),\n ...pointers\n }\n\n const nameUpdateTx = await this.nameUpdateTx({\n ...opt,\n nameId: name,\n accountId: await this.address(opt),\n pointers: Object.entries(allPointers).map(([key, id]) => ({ key, id }))\n })\n\n return this.send(nameUpdateTx, opt)\n}\n\n/**\n * Transfer a domain to another account\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name AENS name\n * @param {String} account Recipient account publick key\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const recipientPub = 'ak_asd23dasdas...'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })\n * // or\n * await nameObject.transfer(recipientPub, { ttl, fee, nonce })\n */\nasync function transfer (name, account, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const nameTransferTx = await this.nameTransferTx({\n ...opt,\n nameId: name,\n accountId: await this.address(opt),\n recipientId: account\n })\n\n return this.send(nameTransferTx, opt)\n}\n\n/**\n * Query the AENS name info from the node\n * and return the object with info and predefined functions for manipulating name\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} opt Options\n * @return {Promise<Object>}\n * @example\n * const nameObject = sdkInstance.aensQuery('test.chain')\n * console.log(nameObject)\n * {\n * id, // name hash\n * pointers, // array of pointers\n * update, // Update name function\n * extendTtl, // Extend Ttl name function\n * transfer, // Transfer name function\n * revoke // Revoke name function\n * }\n */\nasync function query (name, opt = {}) {\n ensureNameValid(name)\n const o = await this.getName(name)\n\n return Object.freeze(Object.assign(o, {\n pointers: o.pointers || [],\n update: async (pointers, options = {}) => {\n return {\n ...(await this.aensUpdate(name, pointers, { ...opt, ...options })),\n ...(await this.aensQuery(name))\n }\n },\n transfer: async (account, options = {}) => {\n return {\n ...(await this.aensTransfer(name, account, { ...opt, ...options })),\n ...(await this.aensQuery(name))\n }\n },\n revoke: async (options = {}) => this.aensRevoke(name, { ...opt, ...options }),\n extendTtl: async (nameTtl = NAME_TTL, options = {}) => {\n if (typeof nameTtl !== 'number' || nameTtl > NAME_TTL || nameTtl <= 0) {\n throw new ArgumentError('nameTtl', `a number between 1 and ${NAME_TTL} blocks`, nameTtl)\n }\n\n return {\n ...await this.aensUpdate(name, {}, { ...opt, ...options, nameTtl, extendPointers: true }),\n ...await this.aensQuery(name)\n }\n }\n }))\n}\n\n/**\n * Claim a previously preclaimed registration. This can only be done after the\n * preclaim step\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Number} salt Salt from pre-claim, or 0 if it's a bid\n * @param {Object} [options] options\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @param {Number|String} [options.nameFee] Name Fee (By default calculated by sdk)\n * @return {Promise<Object>} the result of the claim\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })\n */\nasync function claim (name, salt, options) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n\n const claimTx = await this.nameClaimTx({\n ...opt,\n accountId: await this.address(opt),\n nameSalt: salt,\n name\n })\n\n const result = await this.send(claimTx, opt)\n if (!isAuctionName(name)) {\n const nameInter = opt.waitMined ? await this.aensQuery(name, opt) : {}\n return Object.assign(result, nameInter)\n }\n return { ...result, nameFee: opt.nameFee }\n}\n\n/**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>}\n * @example\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })\n * {\n * ...transactionResult,\n * claim, // Claim function (options={}) => claimTransactionResult\n * salt,\n * commitmentId\n * }\n */\nasync function preclaim (name, options = {}) {\n ensureNameValid(name)\n const opt = { ...this.Ae.defaults, ...options }\n const _salt = salt()\n const height = await this.height()\n const commitmentId = commitmentHash(name, _salt)\n\n const preclaimTx = await this.namePreclaimTx({\n ...opt,\n accountId: await this.address(opt),\n commitmentId\n })\n\n const result = await this.send(preclaimTx, opt)\n\n return Object.freeze({\n ...result,\n height,\n claim: options => this.aensClaim(name, _salt, { ...options, onAccount: opt.onAccount }),\n salt: _salt,\n commitmentId\n })\n}\n\n/**\n * Bid to name auction\n * @instance\n * @function\n * @category async\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @param {String} name Domain name\n * @param {String|Number} nameFee Name fee (bid fee)\n * @param {Object} [options={}]\n * @param {String|Object} [options.onAccount] Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param {Number|String|BigNumber} [options.fee] fee\n * @param {Number|String|BigNumber} [options.ttl] ttl\n * @param {Number|String|BigNumber} [options.nonce] nonce\n * @return {Promise<Object>} Transaction result\n * @example\n * const name = 'test.chain'\n * const bidFee = computeBidFee(name, startFee, incrementPercentage)\n *\n * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })\n */\nasync function bid (name, nameFee, options = {}) {\n return this.aensClaim(name, 0, { ...options, nameFee, vsn: 2 })\n}\n\n/**\n * Aens Stamp\n *\n * Aens provides name-system related methods atop\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aens\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aens instance\n */\nconst Aens = Ae.compose({\n methods: {\n aensQuery: query,\n aensPreclaim: preclaim,\n aensClaim: claim,\n aensUpdate: update,\n aensTransfer: transfer,\n aensRevoke: revoke,\n aensBid: bid\n },\n deepProps: {\n Ae: {\n defaults: {\n clientTtl: CLIENT_TTL,\n nameTtl: NAME_TTL // aec_governance:name_claim_max_expiration() => 50000\n }\n }\n }\n})\n\nexport default Aens\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * ContractCompilerHttp module\n *\n * @module @aeternity/aepp-sdk/es/contract/compiler\n * @export ContractCompilerHttp\n * @example import { ContractCompilerHttp } from '@aeternity/aepp-sdk'\n */\n\nimport semverSatisfies from '../utils/semver-satisfies'\nimport AsyncInit from '../utils/async-init'\nimport genSwaggerClient from '../utils/swagger'\nimport { MissingParamError, UnsupportedVersionError } from '../utils/errors'\nimport { mapObject } from '../utils/other'\n\n/**\n * Contract Compiler Stamp\n *\n * This stamp include api call's related to contract compiler functionality.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/compiler\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} [options.compilerUrl] compilerUrl - Url for compiler API\n * @return {Object} Contract compiler instance\n * @example ContractCompilerHttp({ compilerUrl: 'COMPILER_URL' })\n */\nexport default AsyncInit.compose({\n async init ({ compilerUrl, ignoreVersion }) {\n if (!compilerUrl) return\n await this.setCompilerUrl(compilerUrl, { ignoreVersion })\n },\n methods: {\n async setCompilerUrl (compilerUrl, { ignoreVersion = false } = {}) {\n if (!compilerUrl) throw new MissingParamError('compilerUrl required')\n compilerUrl = compilerUrl.replace(/\\/$/, '')\n const client = await genSwaggerClient(`${compilerUrl}/api`, {\n disableBigNumbers: true,\n disableCaseConversion: true,\n responseInterceptor: response => {\n if (response.ok) return\n let message = `${new URL(response.url).pathname.slice(1)} error`\n if (response.body.reason) {\n message += ': ' + response.body.reason +\n (response.body.parameter ? ` in ${response.body.parameter}` : '') +\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n (response.body.info ? ` (${JSON.stringify(response.body.info)})` : '')\n }\n if (Array.isArray(response.body)) {\n message += ':\\n' + response.body\n .map(e => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context ? `(${e.context})` : ''}`)\n .map(e => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')\n }\n response.statusText = message\n return response\n }\n })\n this.compilerVersion = client.spec.info.version\n this.compilerApi = mapObject(\n client.api,\n ([key, fn]) => [\n key,\n ({ options: { filesystem, ...options } = {}, ...args } = {}) => fn({\n ...args, options: { ...options, file_system: filesystem }\n })\n ]\n )\n\n if (ignoreVersion) return\n if (!semverSatisfies(this.compilerVersion, COMPILER_GE_VERSION, COMPILER_LT_VERSION)) {\n throw new UnsupportedVersionError(\n 'compiler', this.compilerVersion, COMPILER_GE_VERSION, COMPILER_LT_VERSION\n )\n }\n }\n },\n props: {\n compilerVersion: null\n }\n})\n\nconst COMPILER_GE_VERSION = '6.1.0'\nconst COMPILER_LT_VERSION = '7.0.0'\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Contract module - routines to interact with the æternity contract\n *\n * High level documentation of the contracts are available at\n * https://github.com/aeternity/protocol/tree/master/contracts and\n *\n * @module @aeternity/aepp-sdk/es/ae/contract\n * @export Contract\n * @example import { Contract } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport ContractCompilerHttp from '../contract/compiler'\nimport getContractInstance from '../contract/aci'\nimport { AMOUNT, MIN_GAS_PRICE } from '../tx/builder/schema'\nimport { decode, produceNameId } from '../tx/builder/helpers'\n\n/**\n * Utility method to create a delegate signature for a contract\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String[]} ids The list of id's to prepend\n * @param {Object} [opt={}] options\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature in hex representation\n */\nasync function delegateSignatureCommon (ids = [], opt = {}) {\n const signature = await this.sign(\n Buffer.concat([\n Buffer.from(this.getNetworkId(opt)),\n ...ids.map(e => decode(e))\n ]),\n opt\n )\n return Buffer.from(signature).toString('hex')\n}\n\n/**\n * Helper to generate a signature to delegate pre-claim/claim/transfer/revoke of a name to\n * a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [name] The name\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const aeSdk = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const name = 'example.chain' // AENS name\n * const onAccount = await aeSdk.address() // Sign with a specific account\n * // Preclaim signature\n * const params = { contractId }\n * const preclaimSig = await aeSdk.createAensDelegationSignature(params, { onAccount: current })\n * // Claim, transfer and revoke signature\n * const params = { contractId, name }\n * const aensDelegationSig = await contract.createAensDelegationSignature(\n * params, name, { onAccount: current }\n * )\n */\nasync function createAensDelegationSignature ({ contractId, name }, opt = {}) {\n return this.delegateSignatureCommon(\n [await this.address(opt), ...name ? [produceNameId(name)] : [], contractId],\n opt\n )\n}\n\n/**\n * Helper to generate a signature to delegate register/extend/respond of a Oracle to a contract.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @category async\n * @param {String} contractId Contract Id\n * @param {String} [queryId] Oracle Query Id\n * @param {{ onAccount: String | Object }} [opt={}] opt Options\n * @return {Promise<String>} Signature for delegation\n * @example\n * const aeSdk = await Universal({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const queryId = 'oq_...' // Oracle Query Id\n * const onAccount = await aeSdk.address() // Sign with a specific account\n * // Oracle register and extend signature\n * const params = { contractId }\n * const oracleDelegationSig = await contract.createOracleDelegationSignature(params, { onAccount })\n * // Oracle respond signature\n * const params = { contractId, queryId }\n * const respondSig = await contract.createOracleDelegationSignature(params, queryId)\n */\nasync function createOracleDelegationSignature ({ contractId, queryId }, opt = {}) {\n return this.delegateSignatureCommon([queryId ?? await this.address(opt), contractId], opt)\n}\n\n/**\n * Contract Stamp\n *\n * Provide contract implementation\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/contract\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Contract instance\n * @example\n * import { Transaction, MemoryAccount, ChainNode } from '@aeternity/aepp-sdk\n *\n * const ContractWithAE = await Contract\n * .compose(Transaction, MemoryAccount, ChainNode) // AE implementation\n * const client = await ContractWithAe({ url, internalUrl, compilerUrl, keypair, ... })\n *\n */\nexport default Ae.compose(ContractCompilerHttp, {\n methods: {\n getContractInstance,\n // Delegation for contract\n delegateSignatureCommon,\n // AENS\n createAensDelegationSignature,\n // Oracle\n createOracleDelegationSignature\n },\n deepProps: {\n Ae: {\n defaults: {\n gasPrice: MIN_GAS_PRICE,\n amount: AMOUNT\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * ContractACI module\n *\n * @module @aeternity/aepp-sdk/es/contract/aci\n * @export getContractInstance\n */\n\nimport { Encoder as Calldata } from '@aeternity/aepp-calldata'\nimport { DRY_RUN_ACCOUNT, GAS_MAX } from '../tx/builder/schema'\nimport TxObject from '../tx/tx-object'\nimport { decode } from '../tx/builder/helpers'\nimport {\n MissingContractDefError,\n MissingContractAddressError,\n InactiveContractError,\n BytecodeMismatchError,\n InternalError,\n DuplicateContractError,\n MissingFunctionNameError,\n InvalidMethodInvocationError,\n NotPayableFunctionError,\n TypeError,\n NodeInvocationError,\n IllegalArgumentError,\n NoSuchContractFunctionError,\n MissingEventDefinitionError,\n AmbiguousEventDefinitionError\n} from '../utils/errors'\nimport { hash } from '../utils/crypto-ts'\n\n/**\n * Generate contract ACI object with predefined js methods for contract usage - can be used for\n * creating a reference to already deployed contracts\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @param {Object} [options={}] Options object\n * @param {String} [options.source] Contract source code\n * @param {String} [options.bytecode] Contract bytecode\n * @param {Object} [options.aci] Contract ACI\n * @param {String} [options.contractAddress] Contract address\n * @param {Object} [options.filesystem] Contact source external namespaces map\n * @param {Boolean} [options.validateBytecode] Compare source code with on-chain version\n * @return {ContractInstance} JS Contract API\n * @example\n * const contractIns = await aeSdk.getContractInstance({ source })\n * await contractIns.deploy([321]) or await contractIns.methods.init(321)\n * const callResult = await contractIns.call('setState', [123]) or\n * await contractIns.methods.setState.send(123, options)\n * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or\n * await contractIns.methods.setState.get(123, options)\n * Also you can call contract like: await contractIns.methods.setState(123, options)\n * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is\n * stateful or not\n */\nexport default async function getContractInstance ({\n source,\n bytecode,\n aci: _aci,\n contractAddress,\n filesystem = {},\n validateBytecode,\n ...otherOptions\n} = {}) {\n if (!_aci && source) {\n _aci = await this.compilerApi.generateACI({ code: source, options: { filesystem } })\n }\n if (!_aci) throw new MissingContractDefError()\n contractAddress = contractAddress && await this.resolveName(\n contractAddress, 'contract_pubkey', { resolveByNode: true }\n )\n if (!contractAddress && !source && !bytecode) {\n throw new MissingContractAddressError('Can\\'t create instance by ACI without address')\n }\n\n if (contractAddress) {\n const contract = await this.getContract(contractAddress)\n if (!contract.active) throw new InactiveContractError(contractAddress)\n }\n\n const instance = {\n _aci,\n _name: _aci.encoded_aci.contract.name,\n calldata: new Calldata([_aci.encoded_aci, ..._aci.external_encoded_aci]),\n source,\n bytecode,\n deployInfo: { address: contractAddress },\n options: {\n ...this.Ae.defaults,\n callStatic: false,\n filesystem,\n ...otherOptions\n },\n compilerVersion: this.compilerVersion\n }\n\n if (validateBytecode) {\n if (!contractAddress) throw new MissingContractAddressError('Can\\'t validate bytecode without contract address')\n const onChanBytecode = (await this.getContractByteCode(contractAddress)).bytecode\n const isValid = source\n ? await this.compilerApi.validateByteCode(\n { bytecode: onChanBytecode, source, options: instance.options }\n ).then((res) => Object.entries(res).length === 0, () => false)\n : bytecode === onChanBytecode\n if (!isValid) throw new BytecodeMismatchError(source ? 'source' : 'bytecode')\n }\n\n /**\n * Compile contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype () => ContractInstance: Object\n * @return {String} bytecode bytecode\n */\n instance.compile = async (options = {}) => {\n if (instance.bytecode) throw new IllegalArgumentError('Contract already compiled')\n if (!instance.source) throw new IllegalArgumentError('Can\\'t compile without source code')\n const { bytecode } = await this.compilerApi.compileContract({\n code: instance.source, options: { ...instance.options, ...options }\n })\n instance.bytecode = bytecode\n return instance.bytecode\n }\n\n const sendAndProcess = async (tx, options) => {\n const txData = await this.send(tx, options)\n const result = {\n hash: txData.hash, tx: TxObject({ tx: txData.rawTx }), txData, rawTx: txData.rawTx\n }\n if (options.waitMined === false) return result\n const { callInfo } = await this.api.getTransactionInfoByHash(txData.hash)\n Object.assign(result.txData, callInfo) // TODO: don't duplicate data in result\n await handleCallError(callInfo)\n return { ...result, result: callInfo }\n }\n\n const handleCallError = ({ returnType, returnValue }) => {\n let message\n // TODO: ensure that it works correctly https://github.com/aeternity/aepp-calldata-js/issues/88\n switch (returnType) {\n case 'ok': return\n case 'revert':\n message = instance.calldata.decodeFateString(returnValue)\n break\n case 'error':\n message = decode(returnValue).toString()\n break\n default: throw new InternalError(`Unknown returnType: ${returnType}`)\n }\n throw new NodeInvocationError(message)\n }\n\n instance._estimateGas = async (name, params, options) => {\n const { result: { gasUsed } } =\n await instance.call(name, params, { ...options, callStatic: true })\n // taken from https://github.com/aeternity/aepp-sdk-js/issues/1286#issuecomment-977814771\n return Math.floor(gasUsed * 1.25)\n }\n\n /**\n * Deploy contract\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object) => ContractInstance: Object\n * @param {Array} params Contract init function arguments array\n * @param {Object} [options] options\n * @return {Object} deploy info\n */\n instance.deploy = async (params = [], options) => {\n const opt = { ...instance.options, ...options }\n if (!instance.bytecode) await instance.compile(opt)\n if (opt.callStatic) return instance.call('init', params, opt)\n if (instance.deployInfo.address) throw new DuplicateContractError()\n\n const ownerId = await this.address(opt)\n const { tx, contractId } = await this.contractCreateTx({\n ...opt,\n gas: opt.gas ?? await instance._estimateGas('init', params, opt),\n callData: instance.calldata.encode(instance._name, 'init', params),\n code: instance.bytecode,\n ownerId\n })\n const { hash, rawTx, result, txData } = await sendAndProcess(tx, opt)\n instance.deployInfo = Object.freeze({\n result,\n owner: ownerId,\n transaction: hash,\n rawTx,\n txData,\n address: contractId\n })\n return instance.deployInfo\n }\n\n /**\n * Get function schema from contract ACI object\n * @param {String} name Function name\n * @return {Object} function ACI\n */\n function getFunctionACI (name) {\n const fn = instance._aci.encoded_aci.contract.functions.find(f => f.name === name)\n if (fn) return fn\n if (name === 'init') return { payable: false }\n throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`)\n }\n\n /**\n * Call contract function\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (init: Array, options: Object = { callStatic: false }) => CallResult: Object\n * @param {String} fn Function name\n * @param {Array} params Array of function arguments\n * @param {Object} [options={}] Array of function arguments\n * @param {Boolean} [options.callStatic=false] Static function call\n * @return {Object} CallResult\n */\n instance.call = async (fn, params = [], options = {}) => {\n const opt = { ...instance.options, ...options }\n const fnACI = getFunctionACI(fn)\n const contractId = instance.deployInfo.address\n\n if (!fn) throw new MissingFunctionNameError()\n if (fn === 'init' && !opt.callStatic) throw new InvalidMethodInvocationError('\"init\" can be called only via dryRun')\n if (!contractId && fn !== 'init') throw new InvalidMethodInvocationError('You need to deploy contract before calling!')\n if (fn !== 'init' && opt.amount > 0 && fnACI.payable === false) throw new NotPayableFunctionError(`You try to pay \"${opt.amount}\" to function \"${fn}\" which is not payable. Only payable function can accept coins`)\n\n const callerId = await this.address(opt).catch(error => {\n if (opt.callStatic) return DRY_RUN_ACCOUNT.pub\n else throw error\n })\n const callData = instance.calldata.encode(instance._name, fn, params)\n\n let res\n if (opt.callStatic) {\n if (typeof opt.top === 'number') {\n opt.top = (await this.getKeyBlock(opt.top)).hash\n }\n const txOpt = {\n ...opt,\n gas: opt.gas ?? GAS_MAX,\n callData,\n nonce: opt.nonce ??\n (opt.top && (await this.getAccount(callerId, { hash: opt.top })).nonce + 1)\n }\n const tx = fn === 'init'\n ? (await this.contractCreateTx({ ...txOpt, code: instance.bytecode, ownerId: callerId })).tx\n : await this.contractCallTx({ ...txOpt, callerId, contractId })\n\n const { callObj, ...dryRunOther } = await this.txDryRun(tx, callerId, opt)\n await handleCallError(callObj)\n res = { ...dryRunOther, tx: TxObject({ tx }), result: callObj }\n } else {\n const tx = await this.contractCallTx({\n ...opt,\n gas: opt.gas ?? await instance._estimateGas(fn, params, opt),\n callerId,\n contractId,\n callData\n })\n res = await sendAndProcess(tx, opt)\n }\n if (opt.waitMined || opt.callStatic) {\n res.decodedResult = fnACI.returns && fnACI.returns !== 'unit' && fn !== 'init' &&\n instance.calldata.decode(instance._name, fn, res.result.returnValue)\n res.decodedEvents = instance.decodeEvents(res.result.log, opt)\n }\n return res\n }\n\n /**\n * @param {String} address Contract address that emitted event\n * @param {BigInt} nameHash Hash of emitted event name\n * @param {Object} [options]\n * @param {Object} [options.contractAddressToName] Map of contract addresses to their names\n * @return {String} Contract name\n * @throws {MissingEventDefinitionError}\n * @throws {AmbiguousEventDefinitionError}\n */\n function getContractNameByEvent (address, nameHash, { contractAddressToName }) {\n const addressToName = { ...instance.options.contractAddressToName, ...contractAddressToName }\n if (addressToName[address]) return addressToName[address]\n\n const matchedEvents = [\n instance._aci.encoded_aci,\n ...instance._aci.external_encoded_aci\n ]\n .filter(({ contract }) => contract?.event)\n .map(({ contract }) => [contract.name, contract.event.variant])\n .map(([name, events]) => events.map(event => [name, Object.keys(event)[0]]))\n .flat()\n .filter(([, eventName]) => BigInt('0x' + hash(eventName).toString('hex')) === nameHash)\n switch (matchedEvents.length) {\n case 0: throw new MissingEventDefinitionError(nameHash, address)\n case 1: return matchedEvents[0][0]\n default: throw new AmbiguousEventDefinitionError(address, matchedEvents)\n }\n }\n\n /**\n * Decode Events\n * @alias module:@aeternity/aepp-sdk/es/contract/aci\n * @rtype (events: Array) => DecodedEvents: Array\n * @param {Array} events Array of encoded events (callRes.result.log)\n * @param {Object} [options]\n * @param {Boolean} [options.omitUnknown] Omit events that can't be decoded in case ACI is not\n * complete\n * @return {Object} DecodedEvents\n */\n instance.decodeEvents = (events, { omitUnknown, ...opt } = {}) => events\n .map(event => {\n const topics = event.topics.map(t => BigInt(t))\n let contractName\n try {\n contractName = getContractNameByEvent(event.address, topics[0], opt)\n } catch (error) {\n if (omitUnknown && error instanceof MissingEventDefinitionError) return null\n throw error\n }\n const decoded = instance.calldata.decodeEvent(contractName, event.data, topics)\n const [name, args] = Object.entries(decoded)[0]\n return {\n name,\n args,\n contract: {\n name: contractName,\n address: event.address\n }\n }\n })\n .filter(e => e)\n\n /**\n * Generate proto function based on contract function using Contract ACI schema\n * All function can be called like:\n * 'await contract.methods.testFunction()' -> then sdk will decide to use dry-run or send tx\n * on-chain base on if function stateful or not.\n * Also you can manually do that:\n * `await contract.methods.testFunction.get()` -> use call-static(dry-run)\n * `await contract.methods.testFunction.send()` -> send tx on-chain\n */\n instance.methods = Object.fromEntries(instance._aci.encoded_aci.contract.functions\n .map(({ name, arguments: aciArgs, stateful }) => {\n const genHandler = callStatic => (...args) => {\n const options = args.length === aciArgs.length + 1 ? args.pop() : {}\n if (typeof options !== 'object') throw new TypeError(`Options should be an object: ${options}`)\n if (name === 'init') return instance.deploy(args, { callStatic, ...options })\n return instance.call(name, args, { callStatic, ...options })\n }\n return [\n name,\n Object.assign(\n genHandler(name === 'init' ? false : !stateful),\n {\n get: genHandler(true),\n send: genHandler(false)\n }\n )\n ]\n })\n )\n\n return instance\n}\n","import BigNumber from 'bignumber.js'\nimport { MAX_AUTH_FUN_GAS } from '../../tx/builder/schema'\nimport { InvalidAuthDataError } from '../../utils/errors'\n\nexport const prepareGaParams = (ins) => async (authData, authFnName) => {\n if (typeof authData !== 'object') throw new InvalidAuthDataError('AuthData must be an object')\n if (authData.gas && BigNumber(authData.gas).gt(MAX_AUTH_FUN_GAS)) { throw new InvalidAuthDataError(`the maximum gas value for ga authFun is ${MAX_AUTH_FUN_GAS}, got ${authData.gas}`) }\n const gas = authData.gas || MAX_AUTH_FUN_GAS\n if (authData.callData) {\n if (authData.callData.split('_')[0] !== 'cb') throw new InvalidAuthDataError('Auth data must be a string with \"cb\" prefix.')\n return { authCallData: authData.callData, gas }\n }\n if (!authData.source || !authData.args) throw new InvalidAuthDataError('Auth data must contain source code and arguments.')\n const contract = await ins.getContractInstance({ source: authData.source })\n return {\n authCallData: contract.calldata.encode(contract._name, authFnName, authData.args),\n gas\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Generalized Account module - routines to use generalized account\n *\n * @module @aeternity/aepp-sdk/es/contract/ga\n * @export GeneralizedAccount\n * @example import { GeneralizedAccount } from '@aeternity/aepp-sdk'\n */\nimport Contract from '../../ae/contract'\nimport { TX_TYPE } from '../../tx/builder/schema'\nimport { buildTx, unpackTx } from '../../tx/builder'\nimport { prepareGaParams } from './helpers'\nimport { hash } from '../../utils/crypto'\nimport { IllegalArgumentError, MissingParamError } from '../../utils/errors'\n\n/**\n * GeneralizedAccount Stamp\n *\n * Provide Generalized Account implementation\n * {@link module:@aeternity/aepp-sdk/es/contract/ga} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} GeneralizedAccount instance\n * @example\n * const authContract = ``\n * await aeSdk.createGeneralizedAccount(authFnName, authContract, [...authFnArguments]\n * // Make spend using GA\n * const callData = 'cb_...' // encoded call data for auth contract\n * await aeSdk.spend(10000, receiverPub, { authData: { callData } })\n * // or\n * await aeSdk.spend(10000, receiverPub, {\n * authData: { source: authContract, args: [...authContractArgs] }\n * }) // sdk will prepare callData itself\n */\nexport const GeneralizedAccount = Contract.compose({\n methods: {\n createGeneralizedAccount,\n createMetaTx,\n isGA\n }\n})\nexport default GeneralizedAccount\n\n/**\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * Check if account is GA\n * @param {String} address - Account address\n * @return {Boolean}\n */\nasync function isGA (address) {\n const { contractId } = await this.getAccount(address)\n return !!contractId\n}\n\n/**\n * Convert current account to GA\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} authFnName - Authorization function name\n * @param {String} source - Auth contract source code\n * @param {Array} [args] - init arguments\n * @param {Object} [options] - Options\n * @return {Promise<Readonly<{\n * result: *, owner: *, address, rawTx: *, transaction: *\n * }>>}\n */\nasync function createGeneralizedAccount (authFnName, source, args = [], options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const ownerId = await this.address(opt)\n if (await this.isGA(ownerId)) throw new IllegalArgumentError(`Account ${ownerId} is already GA`)\n\n const contract = await this.getContractInstance({ source })\n await contract.compile()\n const { tx, contractId } = await this.gaAttachTx({\n ...opt,\n gas: opt.gas ?? await contract._estimateGas('init', args, opt),\n ownerId,\n code: contract.bytecode,\n callData: contract.calldata.encode(contract._name, 'init', args),\n authFun: hash(authFnName)\n })\n\n const { hash: transaction, rawTx } = await this.send(tx, opt)\n\n return Object.freeze({\n owner: ownerId,\n transaction,\n rawTx,\n gaContractId: contractId\n })\n}\n\nconst wrapInEmptySignedTx = (tx) => buildTx({ encodedTx: tx, signatures: [] }, TX_TYPE.signed)\n\n/**\n * Create a metaTx transaction\n * @alias module:@aeternity/aepp-sdk/es/contract/ga\n * @function\n * @param {String} rawTransaction Inner transaction\n * @param {Object} authData Object with gaMeta params\n * @param {String} authFnName - Authorization function name\n * @param {Object} options - Options\n * @return {String}\n */\nasync function createMetaTx (rawTransaction, authData, authFnName, options = {}) {\n if (!authData) throw new MissingParamError('authData is required')\n // Check if authData is callData or if it's an object prepare a callData from source and args\n const { authCallData, gas } = await prepareGaParams(this)(authData, authFnName)\n const opt = { ...this.Ae.defaults, ...options }\n const { abiVersion } = await this.getVmVersion(TX_TYPE.contractCall)\n const wrappedTx = wrapInEmptySignedTx(unpackTx(rawTransaction))\n const params = {\n ...opt,\n tx: {\n ...wrappedTx,\n tx: wrappedTx.txObject\n },\n gaId: await this.address(opt),\n abiVersion,\n authData: authCallData,\n gas,\n vsn: 2\n }\n const { fee } = await this.prepareTxParams(TX_TYPE.gaMeta, params)\n const { rlpEncoded: metaTxRlp } = buildTx(\n { ...params, fee: `${fee}` },\n TX_TYPE.gaMeta,\n { vsn: 2 }\n )\n return wrapInEmptySignedTx(metaTxRlp).tx\n}\n","export const VERSION = 1\n\nexport const enum MESSAGE_DIRECTION {\n to_waellet = 'to_waellet',\n to_aepp = 'to_aepp'\n}\n\nexport const enum WALLET_TYPE {\n window = 'window',\n extension = 'extension'\n}\n\nexport const enum SUBSCRIPTION_TYPES {\n subscribe = 'subscribe',\n unsubscribe = 'unsubscribe'\n}\n\nexport const enum METHODS {\n readyToConnect = 'connection.announcePresence',\n updateAddress = 'address.update',\n address = 'address.get',\n connect = 'connection.open',\n sign = 'transaction.sign',\n signMessage = 'message.sign',\n subscribeAddress = 'address.subscribe',\n updateNetwork = 'networkId.update',\n closeConnection = 'connection.close'\n}\n\nexport const enum RPC_STATUS {\n CONNECTED = 'CONNECTED',\n NODE_BINDED = 'NODE_BINDED',\n DISCONNECTED = 'DISCONNECTED',\n CONNECTION_REJECTED = 'CONNECTION_REJECTED',\n WAITING_FOR_CONNECTION_APPROVE = 'WAITING_FOR_CONNECTION_APPROVE',\n WAITING_FOR_CONNECTION_REQUEST = 'WAITING_FOR_CONNECTION_REQUEST'\n}\n\nexport const ERRORS = {\n broadcastFailed: (error = {}) => ({\n code: 3,\n data: error,\n message: 'Broadcast failed'\n }),\n invalidTransaction: (error = {}) => ({\n code: 2,\n data: error,\n message: 'Invalid transaction'\n }),\n rejectedByUser: (error = {}) => ({\n code: 4,\n data: error,\n message: 'Operation rejected by user'\n }),\n connectionDeny: (error = {}) => ({\n code: 9,\n data: error,\n message: 'Wallet deny your connection request'\n }),\n permissionDeny: (address: string) => ({\n code: 11,\n message: `You are not subscribed for account ${address}`\n }),\n internalError: (message: string) => ({\n code: 12,\n message\n }),\n notAuthorize: () => ({\n code: 10,\n message: 'You are not connected to the wallet'\n }),\n unsupportedProtocol: () => ({\n code: 5,\n message: 'Unsupported Protocol Version'\n }),\n unsupportedNetwork: () => ({\n code: 8,\n message: 'Unsupported Network'\n })\n}\n","/**\n * Browser helper functions\n */\nimport { NoBrowserFoundError } from '../errors'\n\nexport const getBrowserAPI = (force = false) => {\n const { chrome, browser } = window\n // Chrome, Opera support\n if (typeof chrome !== 'undefined' && chrome === Object(chrome)) return chrome\n // Firefox support\n if (typeof browser !== 'undefined' && browser === Object(browser)) return browser\n if (!force) throw new NoBrowserFoundError()\n return {}\n}\n\nexport const isInIframe = () => window !== window.parent\n\n/**\n * RPC helper functions\n */\nexport const sendMessage = (connection) => {\n let messageId = 0\n\n return ({ id, method, params, result, error }, isNotificationOrResponse = false) => {\n // Increment id for each request\n isNotificationOrResponse || (messageId += 1)\n id = isNotificationOrResponse ? (id || null) : messageId\n const msgData = params\n ? { params }\n : result\n ? { result }\n : { error }\n connection.sendMessage({\n jsonrpc: '2.0',\n ...id ? { id } : {},\n method,\n ...msgData\n })\n return id\n }\n}\n\nexport const getHandler = (schema, msg, { debug = false } = {}) => {\n const handler = schema[msg.method]\n if (!handler || typeof handler !== 'function') {\n debug && console.log(`Unknown message method ${msg.method}`)\n return () => async () => true\n }\n return handler\n}\n\nexport const message = (method, params = {}) => ({ method, params })\n\nexport const responseMessage = (id, method, { error, result } = {}) =>\n ({ id, method, ...(error ? { error } : { result }) })\n\nexport const sendResponseMessage = (client) => (id, method, data) =>\n client.sendMessage(responseMessage(id, method, data), true)\n\nexport const isValidAccounts = (accounts) => (['', 'connected', 'current'].filter(k => typeof (k ? accounts[k] : accounts) === 'object')).length === 3\n","/**\n * RpcClient module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @export { RpcClient, RpcClients }\n * @example\n * import RpcClient from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client'\n */\nimport stampit from '@stamp/it'\n\nimport { METHODS, RPC_STATUS, SUBSCRIPTION_TYPES } from '../schema'\nimport { sendMessage, message, isValidAccounts } from '../helpers'\nimport {\n InvalidRpcMessageError,\n TypeError,\n DuplicateCallbackError,\n MissingCallbackError\n} from '../../errors'\n\n/**\n * Contain functionality for using RPC conection\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/rpc-client\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String} param.name Client name\n * @param {Object} param.connection Connection object\n * @param {Function[]} param.handlers Array with two function for message handling\n * @param {Function} param.handlers[0] Message handler\n * @param {Function} param.handlers[1] Disconnect callback\n * @return {Object}\n */\nexport default stampit({\n init ({ id, name, networkId, icons, connection, handlers: [onMessage, onDisconnect] }) {\n this.id = id\n this.connection = connection\n this.info = { name, networkId, icons }\n // {\n // [msg.id]: { resolve, reject }\n // }\n this.callbacks = {}\n // ['connected', 'current']\n this.addressSubscription = []\n // {\n // connected: { [pub]: {...meta} },\n // current: { [pub]: {...meta} }\n // }\n this.accounts = {}\n\n this.sendMessage = sendMessage(this.connection)\n\n const handleMessage = (msg, origin) => {\n if (!msg || !msg.jsonrpc || msg.jsonrpc !== '2.0' || !msg.method) {\n throw new InvalidRpcMessageError(msg)\n }\n onMessage(msg, origin)\n }\n\n const disconnect = (aepp, connection) => {\n this.disconnect(true)\n typeof onDisconnect === 'function' && onDisconnect(connection, this)\n }\n\n connection.connect(handleMessage, disconnect)\n },\n propertyDescriptors: {\n currentAccount: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? Object.keys(this.accounts.current)[0]\n : undefined\n }\n },\n addresses: {\n enumerable: true,\n configurable: false,\n get () {\n return this.isHasAccounts()\n ? [...Object.keys(this.accounts.current), ...Object.keys(this.accounts.connected)]\n : []\n }\n },\n origin: {\n enumerable: true,\n configurable: false,\n get () {\n return this.connection\n }\n }\n },\n methods: {\n /**\n * Update info\n * @function updateInfo\n * @instance\n * @rtype (info: Object) => void\n * @param {Object} info Info to update (will be merged with current info object)\n * @return {void}\n */\n updateInfo (info) {\n Object.assign(this.info, info)\n },\n isHasAccounts () {\n return typeof this.accounts === 'object' &&\n typeof this.accounts.connected === 'object' &&\n typeof this.accounts.current === 'object'\n },\n isSubscribed () {\n return this.addressSubscription.length && this.isHasAccounts()\n },\n /**\n * Check if aepp has access to account\n * @function hasAccessToAccount\n * @instance\n * @rtype (address: String) => Boolean\n * @param {String} address Account address\n * @return {Boolean} is connected\n */\n hasAccessToAccount (address) {\n return !!address && this.addresses.find(a => a === address)\n },\n /**\n * Check if is connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} is connected\n */\n isConnected () {\n return this.connection.isConnected() &&\n (this.info.status === RPC_STATUS.CONNECTED || this.info.status === RPC_STATUS.NODE_BINDED)\n },\n /**\n * Get selected account\n * @function getCurrentAccount\n * @instance\n * @rtype ({ onAccount } = {}) => String\n * @param {Object} options Options\n * @return {String}\n */\n getCurrentAccount ({ onAccount } = {}) {\n return onAccount || Object.keys(this.accounts.current)[0]\n },\n /**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\n disconnect (forceConnectionClose = false) {\n this.info.status = RPC_STATUS.DISCONNECTED\n this.addressSubscription = []\n this.accounts = {}\n forceConnectionClose || this.connection.disconnect()\n },\n /**\n * Update accounts and sent `update.address` notification to AEPP\n * @param {{ current: Object, connected: Object }} accounts Current and connected accounts\n * @param {Object} [options]\n * @param {Boolean} [options.forceNotification] Don't sent update notification to AEPP\n */\n setAccounts (accounts, { forceNotification } = {}) {\n if (!isValidAccounts(accounts)) {\n throw new TypeError('Invalid accounts object. Should be object like: `{ connected: {}, selected: {} }`')\n }\n this.accounts = accounts\n if (!forceNotification) {\n // Sent notification about account updates\n this.sendMessage(message(METHODS.updateAddress, this.accounts), true)\n }\n },\n /**\n * Update subscription\n * @function updateSubscription\n * @instance\n * @rtype (type: String, value: String) => void\n * @param {String} type Subscription type\n * @param {String} value Subscription value\n * @return {String[]}\n */\n updateSubscription (type, value) {\n if (type === SUBSCRIPTION_TYPES.subscribe && !this.addressSubscription.includes(value)) {\n this.addressSubscription.push(value)\n }\n if (type === SUBSCRIPTION_TYPES.unsubscribe && this.addressSubscription.includes(value)) {\n this.addressSubscription = this.addressSubscription.filter(s => s !== value)\n }\n return this.addressSubscription\n },\n /**\n * Make a request\n * @function request\n * @instance\n * @rtype (name: String, params: Object) => Promise\n * @param {String} name Method name\n * @param {Object} params Method params\n * @return {Promise} Promise which will be resolved after receiving response message\n */\n request (name, params) {\n const msgId = this.sendMessage(message(name, params))\n if (Object.prototype.hasOwnProperty.call(this.callbacks, msgId)) {\n throw new DuplicateCallbackError()\n }\n return new Promise((resolve, reject) => {\n this.callbacks[msgId] = { resolve, reject }\n })\n },\n /**\n * Process response message\n * @function processResponse\n * @instance\n * @rtype (msg: Object, transformResult: Function) => void\n * @param {Object} msg Message object\n * @param {Function=} transformResult Optional parser function for message\n * @return {void}\n */\n processResponse ({ id, error, result }, transformResult) {\n if (!this.callbacks[id]) throw new MissingCallbackError(id)\n if (result) {\n this.callbacks[id].resolve(...typeof transformResult === 'function'\n ? transformResult({ id, result })\n : [result])\n } else {\n this.callbacks[id].reject(error)\n }\n delete this.callbacks[id]\n }\n }\n})\n","/**\n * RPC handler for AEPP side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @export AeppRpc\n * @example\n * import ContentScriptBridge\n * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc'\n */\nimport { v4 as uuid } from '@aeternity/uuid'\nimport Ae from '../../../ae'\nimport RpcClient from './rpc-client'\nimport { getHandler, message } from '../helpers'\nimport { METHODS, RPC_STATUS, VERSION } from '../schema'\nimport {\n AlreadyConnectedError,\n NoWalletConnectedError,\n UnsubscribedAccountError,\n UnAuthorizedAccountError,\n ArgumentError,\n RpcConnectionError\n} from '../../errors'\nimport Node from '../../../node'\n\nconst NOTIFICATIONS = {\n [METHODS.updateAddress]: (instance) =>\n ({ params }) => {\n instance.rpcClient.accounts = params\n instance.onAddressChange(params)\n },\n [METHODS.updateNetwork]: (instance) =>\n async ({ params }) => {\n const { networkId, node } = params\n instance.rpcClient.info.networkId = networkId\n node && instance.addNode(node.name, await Node(node), true)\n instance.onNetworkChange(params)\n },\n [METHODS.closeConnection]: (instance) =>\n (msg) => {\n instance.disconnectWallet()\n instance.onDisconnect(msg.params)\n }\n}\n\nconst RESPONSES = {\n [METHODS.address]: (instance) =>\n (msg) => instance.rpcClient.processResponse(msg),\n [METHODS.connect]: (instance) =>\n (msg) => {\n if (msg.result) instance.rpcClient.info.status = RPC_STATUS.CONNECTED\n instance.rpcClient.processResponse(msg)\n },\n [METHODS.subscribeAddress]: (instance) =>\n (msg) => {\n if (msg.result) {\n if (msg.result.address) {\n instance.rpcClient.accounts = msg.result.address\n }\n if (msg.result.subscription) {\n instance.rpcClient.addressSubscription = msg.result.subscription\n }\n }\n\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result])\n },\n [METHODS.sign]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(\n msg, ({ id, result }) => [result.signedTransaction || result.transactionHash]\n )\n },\n [METHODS.signMessage]: (instance) =>\n (msg) => {\n instance.rpcClient.processResponse(msg, ({ id, result }) => [result.signature])\n }\n}\n\nconst REQUESTS = {}\n\nconst handleMessage = (instance) => async (msg) => {\n if (!msg.id) {\n return getHandler(NOTIFICATIONS, msg, { debug: instance.debug })(instance)(msg)\n } else if (Object.prototype.hasOwnProperty.call(instance.rpcClient.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance)(msg)\n } else {\n return getHandler(REQUESTS, msg, { debug: instance.debug })(instance)(msg)\n }\n}\n\n/**\n * Contain functionality for wallet interaction and connect it to sdk\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/aepp-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Aepp name\n * @param {Function} onAddressChange Call-back function for update address event\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @param {Function} onNetworkChange Call-back function for update network event\n * @param {Object} connection Wallet connection object\n * @return {Object}\n */\nexport default Ae.compose({\n async init ({\n name,\n connection,\n debug = false,\n ...other\n }) {\n ['onAddressChange', 'onDisconnect', 'onNetworkChange'].forEach(event => {\n const handler = other[event] ?? (() => {})\n if (typeof handler !== 'function') throw new ArgumentError(event, 'a function', handler)\n this[event] = handler\n })\n\n this.connection = connection\n this.name = name\n this.debug = debug\n\n if (connection) {\n // Init RPCClient\n await this.connectToWallet(connection)\n }\n },\n deepProps: { Ae: { defaults: { walletBroadcast: true } } },\n methods: {\n sign () {\n },\n addresses () {\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n return [this.rpcClient.currentAccount, ...Object.keys(this.rpcClient.accounts.connected)]\n },\n /**\n * Connect to wallet\n * @function connectToWallet\n * @instance\n * @rtype (connection: Object) => void\n * @param {Object} connection Wallet connection object\n * @param {Object} [options={}]\n * @param {Boolean} [options.connectNode=true] - Request wallet to bind node\n * @param {String} [options.name=wallet-node] - Node name\n * @param {Boolean} [options.select=false] - Select this node as current\n * @return {Object}\n */\n async connectToWallet (connection, { connectNode = false, name = 'wallet-node', select = false } = {}) {\n if (this.rpcClient && this.rpcClient.isConnected()) throw new AlreadyConnectedError('You are already connected to wallet ' + this.rpcClient)\n this.rpcClient = RpcClient({\n connection,\n networkId: this.getNetworkId({ force: true }),\n ...connection.connectionInfo,\n id: uuid(),\n handlers: [handleMessage(this), this.onDisconnect]\n })\n const walletInfo = await this.sendConnectRequest(connectNode)\n if (connectNode && !Object.prototype.hasOwnProperty.call(walletInfo, 'node')) {\n throw new RpcConnectionError('Missing URLs of the Node')\n }\n connectNode && this.addNode(name, await Node(walletInfo.node), select)\n return walletInfo\n },\n /**\n * Disconnect from wallet\n * @function disconnectWallet\n * @instance\n * @rtype (force: Boolean = false) => void\n * @param {Boolean} sendDisconnect=false Force sending close connection message\n * @return {void}\n */\n async disconnectWallet (sendDisconnect = true) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n sendDisconnect && this.rpcClient.sendMessage(message(METHODS.closeConnection, { reason: 'bye' }), true)\n this.rpcClient.disconnect()\n this.rpcClient = null\n },\n async address ({ onAccount } = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n const current = this.rpcClient.currentAccount\n if (!current) throw new UnsubscribedAccountError()\n if (onAccount && !this.rpcClient.hasAccessToAccount(onAccount)) {\n throw new UnAuthorizedAccountError(onAccount)\n }\n return onAccount || current\n },\n /**\n * Ask address from wallet\n * @function askAddresses\n * @instance\n * @rtype () => Promise\n * @return {Promise} Address from wallet\n */\n async askAddresses () {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n return this.rpcClient.request(METHODS.address)\n },\n /**\n * Subscribe for addresses from wallet\n * @function subscribeAddress\n * @instance\n * @rtype (type: String, value: String) => Promise\n * @param {String} type Should be one of 'current' (the selected account), 'connected' (all)\n * @param {String} value Subscription action('subscribe'|'unsubscribe')\n * @return {Promise} Address from wallet\n */\n async subscribeAddress (type, value) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n return this.rpcClient.request(METHODS.subscribeAddress, { type, value })\n },\n /**\n * Overwriting of `signTransaction` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signTransaction\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signTransaction (tx, opt = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) {\n throw new UnAuthorizedAccountError(opt.onAccount)\n }\n return this.rpcClient.request(\n METHODS.sign,\n { ...opt, tx, returnSigned: true, networkId: this.getNetworkId() }\n )\n },\n /**\n * Overwriting of `signMessage` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * @function signMessage\n * @instance\n * @rtype (msg: String, options = {}) => Promise\n * @return {Promise<String>} Signed transaction\n */\n async signMessage (msg, opt = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n if (opt.onAccount && !this.rpcClient.hasAccessToAccount(opt.onAccount)) {\n throw new UnAuthorizedAccountError(opt.onAccount)\n }\n return this.rpcClient.request(METHODS.signMessage, { ...opt, message: msg })\n },\n /**\n * Send connection request to wallet\n * @function sendConnectRequest\n * @instance\n * @param {Boolean} connectNode - Request wallet to bind node\n * @rtype () => Promise\n * @return {Promise} Connection response\n */\n async sendConnectRequest (connectNode) {\n return this.rpcClient.request(\n METHODS.connect, {\n name: this.name,\n version: VERSION,\n networkId: this.getNetworkId({ force: true }),\n connectNode\n }\n )\n },\n /**\n * Overwriting of `send` AE method\n * All sdk API which use it will be send notification to wallet and wait for callBack\n * This method will sign, broadcast and wait until transaction will be accepted using rpc\n * communication with wallet\n * @function send\n * @instance\n * @rtype (tx: String, options = {}) => Promise\n * @param {String} tx\n * @param {Object} [options={}]\n * @param {Object} [options.walletBroadcast=true]\n * @return {Promise<Object>} Transaction broadcast result\n */\n async send (tx, options = {}) {\n if (!this.isConnected()) throw new NoWalletConnectedError('You are not connected to Wallet')\n if (!this.isSubscribedAccount()) throw new UnsubscribedAccountError()\n if (options.onAccount && !this.rpcClient.hasAccessToAccount(options.onAccount)) {\n throw new UnAuthorizedAccountError(options.onAccount)\n }\n const opt = { ...this.Ae.defaults, ...options }\n if (!opt.walletBroadcast) {\n const signed = await this.signTransaction(tx, { onAccount: opt.onAccount })\n return this.sendTransaction(signed, opt)\n }\n return this.rpcClient.request(\n METHODS.sign,\n { onAccount: opt.onAccount, tx, returnSigned: false, networkId: this.getNetworkId() }\n )\n },\n isConnected () { return (this.rpcClient && this.rpcClient.isConnected()) },\n isSubscribedAccount () { return typeof this.rpcClient.currentAccount !== 'undefined' }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Oracle module - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n * @module @aeternity/aepp-sdk/es/ae/oracle\n * @export Oracle\n * @example import { Oracle } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport { pause } from '../utils/other'\nimport { oracleQueryId, decode } from '../tx/builder/helpers'\nimport { unpackTx } from '../tx/builder'\nimport { ORACLE_TTL, QUERY_FEE, QUERY_TTL, RESPONSE_TTL } from '../tx/builder/schema'\nimport { RequestTimedOutError } from '../utils/errors'\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @return {Promise<Object>} Oracle object\n */\nasync function getOracleObject (oracleId) {\n const oracle = await this.api.getOracleByPubkey(oracleId)\n const { oracleQueries: queries } = await this.api.getOracleQueriesByPubkey(oracleId)\n return {\n ...oracle,\n queries,\n pollQueries: this.pollForQueries.bind(this, oracleId),\n postQuery: this.postQueryToOracle.bind(this, oracleId),\n respondToQuery: this.respondToQuery.bind(this, oracleId),\n extendOracle: this.extendOracleTtl.bind(this, oracleId),\n getQuery: this.getQueryObject.bind(this, oracleId)\n }\n}\n\n/**\n * Poll for oracle queries\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @param {String} oracleId Oracle public key\n * @param {Function} onQuery OnQuery callback\n * @param {Object} [options] Options object\n * @param {Number} [options.interval] Poll interval(default: 5000)\n * @return {Function} stopPolling - Stop polling function\n */\nfunction pollForQueries (\n oracleId,\n onQuery,\n { interval = this._getPollInterval('microblock') } = {}\n) {\n const knownQueryIds = new Set()\n const checkNewQueries = async () => {\n const queries = ((await this.api.getOracleQueriesByPubkey(oracleId)).oracleQueries || [])\n .filter(({ id }) => !knownQueryIds.has(id))\n queries.forEach(({ id }) => knownQueryIds.add(id))\n if (queries.length) onQuery(queries)\n }\n\n let stopped\n (async () => {\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error)\n await pause(interval)\n }\n })()\n return () => { stopped = true }\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle Query id\n * @return {Promise<Object>} OracleQuery object\n */\nasync function getQueryObject (oracleId, queryId) {\n const q = await this.api.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)\n return {\n ...q,\n decodedQuery: decode(q.query).toString(),\n decodedResponse: decode(q.response).toString(),\n respond: this.respondToQuery.bind(this, oracleId, queryId),\n pollForResponse: this.pollForQueryResponse.bind(this, oracleId, queryId),\n /**\n * @deprecated use TxBuilderHelper.decode instead\n * @param data\n * @returns {Buffer}\n */\n decode: (data) => decode(data)\n }\n}\n\n/**\n * Poll for oracle query response\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle Query id\n * @param {Object} [options] Options object\n * @param {Object} [options.attempts] Poll attempt's(default: 20)\n * @param {Object} [options.interval] Poll interval(default: 5000)\n * @return {Promise<Object>} OracleQuery object\n */\nexport async function pollForQueryResponse (\n oracleId,\n queryId,\n { attempts = 20, interval = this._getPollInterval('microblock') } = {}\n) {\n for (let i = 0; i < attempts; i++) {\n if (i) await pause(interval)\n const { response } = await this.api.getOracleQueryByPubkeyAndQueryId(oracleId, queryId)\n const responseBuffer = decode(response, 'or')\n if (responseBuffer.length) {\n return String(responseBuffer)\n }\n }\n throw new RequestTimedOutError((attempts - 1) * interval)\n}\n\n/**\n * Register oracle\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} queryFormat Format of query\n * @param {String} responseFormat Format of query response\n * @param {Object} [options={}] Options\n * @param {String|Number} [options.queryFee] Oracle query Fee\n * @param {Object} [options.oracleTtl] OracleTtl object {type: 'delta|block', value: 'number'}\n * @param {Number} [options.abiVersion] Always 0 (do not use virtual machine)\n * @param {Number|String} [options.fee] Transaction fee\n * @param {Number|String} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function registerOracle (queryFormat, responseFormat, options = {}) {\n const opt = { ...this.Ae.defaults, ...options } // Preset VmVersion for oracle\n const accountId = await this.address(opt)\n\n const oracleRegisterTx = await this.oracleRegisterTx({\n ...opt,\n accountId,\n queryFormat,\n responseFormat\n })\n return {\n ...await this.send(oracleRegisterTx, opt),\n ...await this.getOracleObject(`ok_${accountId.slice(3)}`)\n }\n}\n\n/**\n * Post query to oracle\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} query Oracle query object\n * @param {Object} [options={}]\n * @param {String|Number} [options.queryTtl] queryTtl Oracle query time to leave\n * @param {String|Number} [options.responseTtl] queryFee Oracle query response time to leave\n * @param {String|Number} [options.queryFee] queryFee Oracle query fee\n * @param {Number} [options.fee] fee Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Query object\n */\nasync function postQueryToOracle (oracleId, query, options = {}) {\n const queryFee = options.queryFee || (await this.api.getOracleByPubkey(oracleId)).queryFee\n const opt = { ...this.Ae.defaults, queryFee, ...options }\n const senderId = await this.address(opt)\n\n const oracleRegisterTx = await this.oraclePostQueryTx({\n ...opt,\n oracleId,\n senderId,\n query\n })\n const queryId = oracleQueryId(senderId, unpackTx(oracleRegisterTx).tx.nonce, oracleId)\n return {\n ...await this.send(oracleRegisterTx, opt),\n ...await this.getQueryObject(oracleId, queryId)\n }\n}\n\n/**\n * Extend oracle ttl\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} oracleTtl Oracle time to leave for extend\n * @param {Object} [options={}]\n * @param {Number} [options.fee] fee Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function extendOracleTtl (oracleId, oracleTtl, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const callerId = await this.address(opt)\n\n const oracleExtendTx = await this.oracleExtendTx({\n ...opt,\n oracleId,\n callerId,\n oracleTtl\n })\n return {\n ...await this.send(oracleExtendTx, opt),\n ...await this.getOracleObject(oracleId)\n }\n}\n\n/**\n * Extend oracle ttl\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @instance\n * @function\n * @category async\n * @param {String} oracleId Oracle public key\n * @param {String} queryId Oracle query id\n * @param {String} response Oracle query response\n * @param {Object} [options={}]\n * @param {Number} [options.responseTtl] responseTtl Query response time to leave\n * @param {Number} [options.fee] Transaction fee\n * @param {Number} [options.ttl] Transaction time to leave\n * @return {Promise<Object>} Oracle object\n */\nasync function respondToQuery (oracleId, queryId, response, options = {}) {\n const opt = { ...this.Ae.defaults, ...options }\n const callerId = await this.address(opt)\n\n const oracleRespondTx = await this.oracleRespondTx({\n ...opt,\n oracleId,\n queryId,\n callerId,\n response\n })\n return {\n ...await this.send(oracleRespondTx, opt),\n ...await this.getOracleObject(oracleId)\n }\n}\n\n/**\n * Oracle Stamp\n *\n * Oracle provides oracle-system related methods atop\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/oracle\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Oracle instance\n */\nconst Oracle = Ae.compose({\n methods: {\n registerOracle,\n respondToQuery,\n extendOracleTtl,\n postQueryToOracle,\n pollForQueryResponse,\n pollForQueries,\n getOracleObject,\n getQueryObject\n },\n deepProps: {\n Ae: {\n defaults: {\n queryFee: QUERY_FEE,\n oracleTtl: ORACLE_TTL,\n queryTtl: QUERY_TTL,\n responseTtl: RESPONSE_TTL\n }\n }\n }\n})\n\nexport default Oracle\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aepp module\n * @module @aeternity/aepp-sdk/es/ae/aepp\n * @export Aepp\n * @example import { RpcAepp } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Aens from './aens'\nimport Contract from './contract'\nimport AeppRpc from '../utils/aepp-wallet-communication/rpc/aepp-rpc'\nimport Chain from '../chain/node'\nimport Tx from '../tx/tx'\nimport Oracle from './oracle'\n\n/**\n * Aepp Stamp\n *\n * Aepp provides base functionality.\n * Expected to use this stamp with a Wallet.\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/aepp\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Aepp instance\n */\nexport default Ae.compose(Tx, Oracle, Contract, Aens, Chain, AeppRpc)\n","/**\n * RPC handler for WAELLET side\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @export WalletRpc\n * @example\n * import WalletRpc from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc'\n */\nimport { v4 as uuid } from '@aeternity/uuid'\nimport Ae from '../../../ae'\nimport verifyTransaction from '../../../tx/validator'\nimport AccountMultiple from '../../../account/multiple'\nimport TxObject from '../../../tx/tx-object'\nimport RpcClient from './rpc-client'\nimport { getBrowserAPI, getHandler, isValidAccounts, message, sendResponseMessage } from '../helpers'\nimport { ERRORS, METHODS, RPC_STATUS, VERSION, WALLET_TYPE } from '../schema'\nimport { ArgumentError, TypeError, UnknownRpcClientError } from '../../errors'\nimport { isAccountBase } from '../../../account/base'\n\nconst resolveOnAccount = (addresses, onAccount, opt = {}) => {\n if (!addresses.find(a => a === onAccount)) {\n if (typeof opt.onAccount !== 'object' || !isAccountBase(opt.onAccount)) throw new TypeError('Provided onAccount should be an AccountBase')\n onAccount = opt.onAccount\n }\n return onAccount\n}\n\nconst NOTIFICATIONS = {\n [METHODS.closeConnection]: (instance, { client }) =>\n async (msg) => {\n client.disconnect(true)\n instance.onDisconnect(msg.params, client)\n }\n}\n\nconst RESPONSES = {}\n\nconst REQUESTS = {\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect] (\n callInstance,\n instance,\n client,\n { name, networkId, version, icons, connectNode }) {\n // Check if protocol and network is compatible with wallet\n if (version !== VERSION) return { error: ERRORS.unsupportedProtocol() }\n // Store new AEPP and wait for connection approve\n client.updateInfo({\n status: RPC_STATUS.WAITING_FOR_CONNECTION_APPROVE,\n name,\n networkId,\n icons,\n version,\n origin: window.location.origin,\n connectNode\n })\n\n // Call onConnection callBack to notice Wallet about new AEPP\n return callInstance(\n 'onConnection',\n { name, networkId, version },\n ({ shareNode } = {}) => {\n client.updateInfo({ status: shareNode ? RPC_STATUS.NODE_BINDED : RPC_STATUS.CONNECTED })\n return {\n result: {\n ...instance.getWalletInfo(),\n ...(shareNode && { node: instance.selectedNode })\n }\n }\n },\n (error) => {\n client.updateInfo({ status: RPC_STATUS.CONNECTION_REJECTED })\n return { error: ERRORS.connectionDeny(error) }\n }\n )\n },\n [METHODS.subscribeAddress] (callInstance, instance, client, { type, value }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onSubscription',\n { type, value },\n async ({ accounts } = {}) => {\n try {\n const clientAccounts = accounts || instance.getAccounts()\n if (!isValidAccounts(clientAccounts)) {\n throw new TypeError('Invalid provided accounts object')\n }\n const subscription = client.updateSubscription(type, value)\n client.setAccounts(clientAccounts, { forceNotification: true })\n return {\n result: {\n subscription,\n address: clientAccounts\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError(e.message) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.address] (callInstance, instance, client) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n if (!client.isSubscribed()) return { error: ERRORS.notAuthorize() }\n\n return callInstance(\n 'onAskAccounts',\n {},\n ({ accounts } = {}) => ({\n result: accounts ||\n [...Object.keys(client.accounts.current), ...Object.keys(client.accounts.connected)]\n }),\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.sign] (callInstance, instance, client, options) {\n const { tx, onAccount, networkId, returnSigned = false } = options\n const address = onAccount || client.currentAccount\n // Update client with new networkId\n networkId && client.updateInfo({ networkId })\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n // Account permission check\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny(address) }\n }\n // NetworkId check\n if (!networkId || networkId !== instance.getNetworkId()) {\n return { error: ERRORS.unsupportedNetwork() }\n }\n\n return callInstance(\n 'onSign',\n { tx, returnSigned, onAccount: address, txObject: TxObject.fromString(tx) },\n async (rawTx, opt = {}) => {\n let onAcc\n try {\n onAcc = resolveOnAccount(instance.addresses(), address, opt)\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError(e.message) }\n }\n try {\n const t = rawTx || tx\n const result = returnSigned\n ? { signedTransaction: await instance.signTransaction(t, { onAccount: onAcc }) }\n : { transactionHash: await instance.send(t, { onAccount: onAcc, verify: false }) }\n return { result }\n } catch (e) {\n if (!returnSigned) {\n // Validate transaction\n const validation = await verifyTransaction(rawTx || tx, instance.selectedNode.instance)\n if (validation.length) return { error: ERRORS.invalidTransaction(validation) }\n // Send broadcast failed error to aepp\n return { error: ERRORS.broadcastFailed(e.message) }\n }\n throw e\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n },\n [METHODS.signMessage] (callInstance, instance, client, { message, onAccount }) {\n // Authorization check\n if (!client.isConnected()) return { error: ERRORS.notAuthorize() }\n const address = onAccount || client.currentAccount\n if (!client.hasAccessToAccount(address)) {\n return { error: ERRORS.permissionDeny(address) }\n }\n\n return callInstance(\n 'onMessageSign',\n { message, onAccount: address },\n async (opt = {}) => {\n try {\n const onAcc = resolveOnAccount(instance.addresses(), address, opt)\n return {\n result: {\n signature: await instance.signMessage(message, {\n onAccount: onAcc,\n returnHex: true\n })\n }\n }\n } catch (e) {\n if (instance.debug) console.error(e)\n return { error: ERRORS.internalError(e.message) }\n }\n },\n (error) => ({ error: ERRORS.rejectedByUser(error) })\n )\n }\n}\n\nconst handleMessage = (instance, id) => async (msg, origin) => {\n const client = instance.rpcClients[id]\n if (!msg.id) {\n return getHandler(\n NOTIFICATIONS, msg, { debug: instance.debug }\n )(instance, { client })(msg, origin)\n }\n if (Object.prototype.hasOwnProperty.call(client.callbacks, msg.id)) {\n return getHandler(RESPONSES, msg, { debug: instance.debug })(instance, { client })(msg, origin)\n } else {\n const { id, method } = msg\n const callInstance = (methodName, params, accept, deny) => () => new Promise(resolve => {\n instance[methodName](\n client,\n {\n id,\n method,\n params,\n accept: (...args) => resolve(accept(...args)),\n deny: (...args) => resolve(deny(...args))\n },\n origin\n )\n })\n // TODO make one structure for handler functions\n const errorObjectOrHandler = getHandler(REQUESTS, msg, { debug: instance.debug })(\n callInstance, instance, client, msg.params\n )\n const response = typeof errorObjectOrHandler === 'function' ? await errorObjectOrHandler() : errorObjectOrHandler\n sendResponseMessage(client)(id, method, response)\n }\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/rpc/wallet-rpc\n * @function\n * @rtype Stamp\n * @param {Object} param Init params object\n * @param {String=} [param.name] Wallet name\n * @param {Function} onConnection Call-back function for incoming AEPP connection\n * @param {Function} onSubscription Call-back function for incoming AEPP account subscription\n * @param {Function} onSign Call-back function for incoming AEPP sign request\n * @param {Function} onAskAccounts Call-back function for incoming AEPP get address request\n * @param {Function} onMessageSign Call-back function for incoming AEPP sign message request\n * Second argument of incoming call-backs contain function for accept/deny request\n * @param {Function} onDisconnect Call-back function for disconnect event\n * @return {Object}\n */\nexport default Ae.compose(AccountMultiple, {\n init ({\n name,\n debug = false,\n ...other\n } = {}) {\n [\n 'onConnection', 'onSubscription', 'onSign', 'onDisconnect', 'onAskAccounts', 'onMessageSign'\n ].forEach(event => {\n const handler = other[event]\n if (typeof handler !== 'function') throw new ArgumentError(event, 'a function', handler)\n this[event] = handler\n })\n\n this.debug = debug\n this.rpcClients = {}\n this.name = name\n this.id = uuid()\n\n const _selectAccount = this.selectAccount.bind(this)\n const _addAccount = this.addAccount.bind(this)\n const _selectNode = this.selectNode.bind(this)\n\n // Overwrite AE methods\n this.selectAccount = (address, { condition = () => true } = {}) => {\n _selectAccount(address)\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() &&\n client.hasAccessToAccount(address) && condition(client))\n .forEach(client => client.setAccounts({\n current: { [address]: {} },\n connected: {\n ...client.accounts.current,\n ...Object.entries(client.accounts.connected)\n .filter(([k, v]) => k !== address)\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {})\n }\n }))\n }\n this.addAccount = async (account, { select, meta = {}, condition = () => true } = {}) => {\n await _addAccount(account, { select })\n const address = await account.address()\n // Send notification 'update.address' to all Aepp which are subscribed for connected accounts\n Object.values(this.rpcClients)\n .filter(client => client.isConnected() && client.isSubscribed() && condition(client))\n .forEach(client => client.setAccounts({\n current: { ...select ? { [address]: meta } : client.accounts.current },\n connected: {\n ...select ? client.accounts.current : { [address]: meta },\n ...client.accounts.connected\n }\n }))\n }\n this.selectNode = (name) => {\n _selectNode(name)\n // Send notification 'update.network' to all Aepp which connected\n Object.values(this.rpcClients)\n .filter(client => client.isConnected())\n .forEach(client => {\n client.sendMessage(\n message(METHODS.updateNetwork, {\n networkId: this.getNetworkId(),\n ...(client.info.status === RPC_STATUS.NODE_BINDED && { node: this.selectedNode })\n }), true)\n })\n }\n },\n methods: {\n /**\n * Remove specific RpcClient by ID\n * @function removeRpcClient\n * @instance\n * @rtype (id: string) => void\n * @param {String} id Client ID\n * @param {Object} [opt = {}]\n * @return {void}\n */\n removeRpcClient (id, { forceConnectionClose = false } = {}) {\n const client = this.rpcClients[id]\n if (!client) throw new UnknownRpcClientError(id)\n client.disconnect(forceConnectionClose)\n delete this.rpcClients[id]\n },\n /**\n * Add new client by AEPP connection\n * @function addRpcClient\n * @instance\n * @rtype (clientConnection: Object) => Object\n * @param {Object} clientConnection AEPP connection object\n * @return {String} Client ID\n */\n addRpcClient (clientConnection) {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid()\n this.rpcClients[id] = RpcClient({\n id,\n info: { status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST },\n connection: clientConnection,\n handlers: [handleMessage(this, id), this.onDisconnect]\n })\n return id\n },\n /**\n * Share wallet info\n * Send shareWalletInfo message to notify AEPP about wallet\n * @function shareWalletInfo\n * @instance\n * @rtype (postFn: Function) => void\n * @param {Function} postFn Send message function like `(msg) => void`\n * @return {void}\n */\n shareWalletInfo (postFn) {\n postFn({\n jsonrpc: '2.0',\n ...message(METHODS.readyToConnect, this.getWalletInfo())\n })\n },\n /**\n * Get Wallet info object\n * @function getWalletInfo\n * @instance\n * @rtype () => Object\n * @return {Object} Object with wallet information(id, name, network, ...)\n */\n getWalletInfo () {\n const runtime = getBrowserAPI(true).runtime\n return {\n id: runtime && runtime.id ? runtime.id : this.id,\n name: this.name,\n networkId: this.getNetworkId(),\n origin: window.location.origin,\n type: runtime && runtime.id ? WALLET_TYPE.extension : WALLET_TYPE.window\n }\n },\n /**\n * Get Wallet accounts\n * @function getAccounts\n * @instance\n * @rtype () => Object\n * @return {Object} Object with accounts information({ connected: Object, current: Object })\n */\n getAccounts () {\n return {\n current: this.selectedAddress ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter(a => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {})\n }\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet module\n * @module @aeternity/aepp-sdk/es/ae/wallet\n * @export Wallet\n * @example import { RpcWallet } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Chain from '../chain/node'\nimport Tx from '../tx/tx'\nimport Contract from './contract'\nimport GeneralizedAccount from '../contract/ga'\nimport WalletRpc from '../utils/aepp-wallet-communication/rpc/wallet-rpc'\nimport Oracle from './oracle'\nimport Aens from './aens'\n\n/**\n * Wallet Stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/wallet\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @param {String} options.url - Node instance to connect to\n * @param {Account[]} [options.accounts] - Accounts to initialize with\n * @param {String} [options.account] - Public key of account to preselect\n * @return {Object} Wallet instance\n * @example Wallet({\n url: 'https://testnet.aeternity.io/',\n accounts: [MemoryAccount({keypair})],\n address: keypair.publicKey,\n})\n */\nexport default Ae.compose(WalletRpc, Tx, Contract, Oracle, Aens, GeneralizedAccount, Chain)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket'\nimport { EventEmitter } from 'events'\nimport JsonBig from '../utils/json-big'\nimport { pascalToSnake } from '../utils/string'\nimport { ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError } from '../utils/errors'\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000\n// Close connection if pong message is not received within 5 seconds\nconst PONG_TIMEOUT_MS = 5000\n\nexport const options = new WeakMap()\nexport const status = new WeakMap()\nexport const state = new WeakMap()\nconst fsm = new WeakMap()\nconst websockets = new WeakMap()\nexport const eventEmitters = new WeakMap()\nconst messageQueue = new WeakMap()\nconst messageQueueLocked = new WeakMap()\nconst actionQueue = new WeakMap()\nconst actionQueueLocked = new WeakMap()\nconst sequence = new WeakMap()\nexport const channelId = new WeakMap()\nconst rpcCallbacks = new WeakMap()\nconst pingTimeoutId = new WeakMap()\nconst pongTimeoutId = new WeakMap()\nexport const fsmId = new WeakMap()\n\nexport function emit (channel, ...args) {\n eventEmitters.get(channel).emit(...args)\n}\n\nfunction enterState (channel, nextState) {\n if (!nextState) {\n throw new UnknownChannelStateError()\n }\n fsm.set(channel, nextState)\n if (nextState.handler.enter) {\n nextState.handler.enter(channel)\n }\n dequeueAction(channel)\n}\n\nexport function changeStatus (channel, newStatus) {\n const prevStatus = status.get(channel)\n if (newStatus !== prevStatus) {\n status.set(channel, newStatus)\n emit(channel, 'statusChanged', newStatus)\n }\n}\n\nexport function changeState (channel, newState) {\n state.set(channel, newState)\n emit(channel, 'stateChanged', newState)\n}\n\nexport function send (channel, message) {\n const { debug = false } = options.get(channel)\n if (debug) console.log('Send message: ', message)\n websockets.get(channel).send(JsonBig.stringify(message))\n}\n\nexport function enqueueAction (channel, guard, action) {\n actionQueue.set(channel, [\n ...actionQueue.get(channel) || [],\n { guard, action }\n ])\n dequeueAction(channel)\n}\n\nasync function dequeueAction (channel) {\n const locked = actionQueueLocked.get(channel)\n const queue = actionQueue.get(channel) || []\n if (locked || !queue.length) {\n return\n }\n const state = fsm.get(channel)\n const index = queue.findIndex(item => item.guard(channel, state))\n if (index === -1) {\n return\n }\n actionQueue.set(channel, queue.filter((_, i) => index !== i))\n actionQueueLocked.set(channel, true)\n const nextState = await Promise.resolve(queue[index].action(channel, state))\n actionQueueLocked.set(channel, false)\n enterState(channel, nextState)\n}\n\nasync function handleMessage (channel, message) {\n const { handler, state } = fsm.get(channel)\n enterState(channel, await Promise.resolve(handler(channel, message, state)))\n}\n\nasync function dequeueMessage (channel) {\n if (messageQueueLocked.get(channel)) return\n const messages = messageQueue.get(channel)\n if (!messages.length) return\n messageQueueLocked.set(channel, true)\n while (messages.length) {\n const message = messages.shift()\n try {\n await handleMessage(channel, message)\n } catch (error) {\n console.error('Error handling incoming message:')\n console.error(message)\n console.error(error)\n }\n }\n messageQueueLocked.set(channel, false)\n}\n\nfunction ping (channel) {\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n pingTimeoutId.set(channel, setTimeout(() => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.system',\n params: {\n action: 'ping'\n }\n })\n pongTimeoutId.set(channel, setTimeout(() => {\n disconnect(channel)\n emit(channel, 'error', new ChannelPingTimedOutError())\n }, PONG_TIMEOUT_MS))\n }, PING_TIMEOUT_MS))\n}\n\nfunction onMessage (channel, data) {\n const message = JsonBig.parse(data)\n const { debug = false } = options.get(channel)\n if (debug) console.log('Receive message: ', message)\n if (message.id) {\n const callback = rpcCallbacks.get(channel).get(message.id)\n try {\n callback(message)\n } finally {\n rpcCallbacks.get(channel).delete(message.id)\n }\n return\n }\n if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message)\n return\n }\n if (message.method === 'channels.system.pong') {\n if (\n (message.params.channel_id === channelId.get(channel)) ||\n // Skip channelId check if channelId is not known yet\n (channelId.get(channel) == null)\n ) {\n ping(channel)\n }\n return\n }\n messageQueue.get(channel).push(message)\n dequeueMessage(channel)\n}\n\nexport function call (channel, method, params) {\n return new Promise((resolve, reject) => {\n const id = sequence.set(channel, sequence.get(channel) + 1).get(channel)\n rpcCallbacks.get(channel).set(id, (message) => {\n if (message.result) return resolve(message.result)\n if (message.error) {\n const [{ message: details } = {}] = message.error.data || []\n return reject(new ChannelCallError(message.error.message + (details ? `: ${details}` : '')))\n }\n })\n send(channel, { jsonrpc: '2.0', method, id, params })\n })\n}\n\nexport function disconnect (channel) {\n websockets.get(channel).close()\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n}\n\nexport async function initialize (\n channel, connectionHandler, openHandler, { url, ...channelOptions }\n) {\n options.set(channel, channelOptions)\n fsm.set(channel, { handler: connectionHandler })\n eventEmitters.set(channel, new EventEmitter())\n sequence.set(channel, 0)\n rpcCallbacks.set(channel, new Map())\n messageQueue.set(channel, [])\n\n const wsUrl = new URL(url)\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value))\n wsUrl.searchParams.set('protocol', 'json-rpc')\n changeStatus(channel, 'connecting')\n const ws = new W3CWebSocket(wsUrl.toString())\n await new Promise((resolve, reject) => Object.assign(ws, {\n onerror: reject,\n onopen: () => {\n resolve()\n changeStatus(channel, 'connected')\n if (channelOptions.reconnectTx) {\n enterState(channel, { handler: openHandler })\n setTimeout(async () => changeState(channel,\n (await call(channel, 'channels.get.offchain_state', {})).signed_tx\n ))\n }\n ping(channel)\n },\n onclose: () => {\n changeStatus(channel, 'disconnected')\n clearTimeout(pingTimeoutId.get(channel))\n clearTimeout(pongTimeoutId.get(channel))\n },\n onmessage: ({ data }) => onMessage(channel, data)\n }))\n websockets.set(channel, ws)\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { generateKeyPair, encodeContractAddress } from '../utils/crypto'\nimport {\n options,\n changeStatus,\n changeState,\n call,\n send,\n emit,\n channelId,\n disconnect,\n fsmId\n} from './internal'\nimport { unpackTx, buildTx } from '../tx/builder'\nimport { encode } from '../tx/builder/helpers'\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError\n} from '../utils/errors'\n\nasync function appendSignature (tx, signFn) {\n const { signatures, encodedTx } = unpackTx(tx).tx\n const result = await signFn(encode(encodedTx.rlpEncoded, 'tx'))\n if (typeof result === 'string') {\n const { tx: signedTx, txType } = unpackTx(result)\n return buildTx({\n signatures: signatures.concat(signedTx.signatures),\n encodedTx: signedTx.encodedTx.rlpEncoded\n }, txType).tx\n }\n return result\n}\n\nfunction handleUnexpectedMessage (channel, message, state) {\n if (state && state.reject) {\n state.reject(Object.assign(\n new UnexpectedChannelMessageError(`Unexpected message received:\\n\\n${JSON.stringify(message)}`),\n { wsMessage: message }\n ))\n }\n return { handler: channelOpen }\n}\n\nexport function awaitingConnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (['channel_accept', 'funding_created'].includes(message.params.data.event)) {\n changeStatus(channel, {\n channel_accept: 'accepted',\n funding_created: 'halfSigned'\n }[message.params.data.event])\n return { handler: awaitingChannelCreateTx }\n }\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation }\n }\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: awaitingConnection }\n }\n return { handler: awaitingConnection }\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message.payload.message))\n return { handler: channelClosed }\n }\n}\n\nexport async function awaitingReconnection (channel, message, state) {\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id)\n changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx)\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingChannelCreateTx (channel, message, state) {\n const tag = {\n initiator: 'initiator_sign',\n responder: 'responder_sign'\n }[options.get(channel).role]\n if (message.method === `channels.sign.${tag}`) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx, tx => options.get(channel).sign(tag, tx)\n )\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (\n message.params.data.info === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n if (\n message.params.data.info === 'funding_created' &&\n options.get(channel).role === 'responder'\n ) {\n return { handler: awaitingBlockInclusion }\n }\n }\n if (\n message.method === 'channels.info' &&\n message.params.data.event === 'funding_signed' &&\n options.get(channel).role === 'initiator'\n ) {\n channelId.set(channel, message.params.channel_id)\n changeStatus(channel, 'signed')\n return { handler: awaitingOnChainTx }\n }\n}\n\nexport function awaitingBlockInclusion (channel, message, state) {\n if (message.method === 'channels.info') {\n const handler = {\n funding_created: awaitingBlockInclusion,\n own_funding_locked: awaitingBlockInclusion,\n funding_locked: awaitingOpenConfirmation\n }[message.params.data.event]\n if (handler) {\n return { handler }\n }\n }\n if (message.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: awaitingBlockInclusion }\n }\n}\n\nexport function awaitingOpenConfirmation (channel, message, state) {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channelId.set(channel, message.params.channel_id)\n return { handler: awaitingInitialState }\n }\n}\n\nexport function awaitingInitialState (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n }\n}\n\nexport async function channelOpen (channel, message, state) {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest }\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, message.params.data.event)\n return { handler: channelOpen }\n case 'fsm_up':\n fsmId.set(channel, message.params.data.fsm_id)\n return { handler: channelOpen }\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen }\n case 'closing':\n changeStatus(channel, 'closing')\n return { handler: channelOpen }\n case 'closed_confirmed':\n changeStatus(channel, 'closed')\n return { handler: channelClosed }\n case 'died':\n changeStatus(channel, 'died')\n return { handler: channelClosed }\n case 'shutdown':\n return { handler: channelOpen }\n }\n break\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n return { handler: channelOpen }\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen }\n case 'channels.update':\n changeState(channel, message.params.data.state)\n return { handler: channelOpen }\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state)\n }\n}\nchannelOpen.enter = (channel) => {\n changeStatus(channel, 'open')\n}\n\nexport async function awaitingOffChainTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingOffChainUpdate, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingOffChainTx, state }\n }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message))\n return { handler: channelOpen }\n }\n if (message.error) {\n const { data = [] } = message.error\n if (data.find(i => i.code === 1001)) {\n state.reject(new InsufficientBalanceError('Insufficient balance'))\n } else if (data.find(i => i.code === 1002)) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'))\n } else {\n state.reject(new ChannelConnectionError(message.error.message))\n }\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingOffChainUpdate (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n if (message.error) {\n state.reject(new ChannelConnectionError(message.error.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingTxSignRequest (channel, message, state) {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) || []\n if (tag) {\n if (message.params.data.tx) {\n const signedTx = await options.get(channel).sign(tag, message.params.data.tx, {\n updates: message.params.data.updates\n })\n if (signedTx) {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } })\n return { handler: channelOpen }\n }\n } else {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n options.get(channel).sign(tag, tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } })\n return { handler: channelOpen }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { error: signedTx } })\n return { handler: awaitingUpdateConflict, state }\n }\n }\n // soft-reject via competing update\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: {\n from: generateKeyPair().publicKey,\n to: generateKeyPair().publicKey,\n amount: 1\n }\n })\n return { handler: awaitingUpdateConflict, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingUpdateConflict (channel, message, state) {\n if (message.error) {\n return { handler: awaitingUpdateConflict, state }\n }\n if (message.method === 'channels.conflict') {\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingShutdownTx (channel, message, state) {\n if (message.method === 'channels.sign.shutdown_sign') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingShutdownOnChainTx, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingShutdownOnChainTx (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingLeave (channel, message, state) {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state })\n disconnect(channel)\n return { handler: channelClosed }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message))\n return { handler: channelOpen }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingWithdrawTx (channel, message, state) {\n if (message.method === 'channels.sign.withdraw_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { error: signedTx } })\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingWithdrawCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {\n const callback = {\n own_withdraw_locked: state.onOwnWithdrawLocked,\n withdraw_locked: state.onWithdrawLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingWithdrawCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingDepositTx (channel, message, state) {\n if (message.method === 'channels.sign.deposit_tx') {\n const { sign } = state\n if (message.params.data.tx) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates })\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { error: signedTx } })\n return { handler: awaitingDepositCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingDepositCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data.tx)\n }\n return { handler: awaitingDepositCompletion, state }\n }\n if (message.method === 'channels.info') {\n if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {\n const callback = {\n own_deposit_locked: state.onOwnDepositLocked,\n deposit_locked: state.onDepositLocked\n }[message.params.data.event]\n if (callback) {\n callback()\n }\n return { handler: awaitingDepositCompletion, state }\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingNewContractTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(message.params.data.tx)\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n const signedTx = await appendSignature(message.params.data.signed_tx, tx => state.sign(tx))\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingNewContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingNewContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n const { round } = unpackTx(message.params.data.state).tx.encodedTx.tx\n const owner = options.get(channel)[{\n initiator: 'initiatorId',\n responder: 'responderId'\n }[options.get(channel).role]]\n changeState(channel, message.params.data.state)\n state.resolve({\n accepted: true,\n address: encodeContractAddress(owner, round),\n signedTx: message.params.data.state\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractUpdateTx (channel, message, state) {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx) {\n const signedTx = await state.sign(\n message.params.data.tx, { updates: message.params.data.updates }\n )\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n tx => state.sign(tx, { updates: message.params.data.updates })\n )\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } })\n return { handler: awaitingCallContractCompletion, state }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport async function awaitingCallContractForceProgressUpdate (channel, message, state) {\n if (message.method === 'channels.sign.force_progress_tx') {\n const signedTx = await appendSignature(message.params.data.signed_tx, tx =>\n state.sign(tx, { updates: message.params.data.updates })\n )\n send(channel, { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } })\n return { handler: awaitingForceProgressCompletion, state }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingForceProgressCompletion (channel, message, state) {\n if (message.method === 'channels.on_chain_tx') {\n if (state.onOnChainTx) {\n state.onOnChainTx(message.params.data)\n }\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type\n })\n state.resolve({ accepted: true, tx: message.params.data.tx })\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallContractCompletion (channel, message, state) {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state)\n state.resolve({ accepted: true, signedTx: message.params.data.state })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg\n })\n return { handler: channelOpen }\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false })\n return { handler: channelOpen }\n }\n }\n return handleUnexpectedMessage(channel, message, state)\n}\n\nexport function awaitingCallsPruned (channels, message, state) {\n if (message.method === 'channels.calls_pruned.reply') {\n state.resolve()\n return { handler: channelOpen }\n }\n state.reject(new UnexpectedChannelMessageError('Unexpected message received'))\n return { handler: channelClosed }\n}\n\nexport function channelClosed (channel, message, state) {\n if (!state) return { handler: channelClosed }\n if (message.params.data.event === 'closing') return { handler: channelClosed, state }\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx\n return { handler: channelClosed, state }\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx)\n return { handler: channelClosed }\n }\n return { handler: channelClosed, state }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Channel module\n * @module @aeternity/aepp-sdk/es/channel/index\n * @export Channel\n * @example import { Channel } from '@aeternity/aepp-sdk'\n */\n\nimport AsyncInit from '../utils/async-init'\nimport { snakeToPascal } from '../utils/string'\nimport { buildTx, unpackTx } from '../tx/builder'\nimport { TX_TYPE } from '../tx/builder/schema'\nimport * as handlers from './handlers'\nimport {\n eventEmitters,\n status as channelStatus,\n state as channelState,\n initialize,\n enqueueAction,\n send,\n channelId,\n call,\n disconnect as channelDisconnect,\n fsmId as channelFsmId\n} from './internal'\n\nfunction snakeToPascalObjKeys (obj) {\n return Object.entries(obj).reduce((result, [key, val]) => ({\n ...result,\n [snakeToPascal(key)]: val\n }), {})\n}\n\n/**\n * Register event listener function\n *\n * Possible events:\n *\n * - \"error\"\n * - \"onChainTx\"\n * - \"ownWithdrawLocked\"\n * - \"withdrawLocked\"\n * - \"ownDepositLocked\"\n * - \"depositLocked\"\n *\n * @param {String} event - Event name\n * @param {Function} callback - Callback function\n */\nfunction on (event, callback) {\n eventEmitters.get(this).on(event, callback)\n}\n\n/**\n * Remove event listener function\n *\n * @param {String} event - Event name\n * @param {Function} callback - Callback function\n */\nfunction off (event, callback) {\n eventEmitters.get(this).removeListener(event, callback)\n}\n\n/**\n * Close the connection\n */\nfunction disconnect () {\n return channelDisconnect(this)\n}\n\n/**\n * Get current status\n *\n * @return {String}\n */\nfunction status () {\n return channelStatus.get(this)\n}\n\n/**\n * Get current state\n *\n * @return {Promise<Object>}\n */\nasync function state () {\n return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}))\n}\n\n/**\n * Get current round\n *\n * If round cannot be determined (for example when channel has not been opened)\n * it will return `null`.\n *\n * @return {Number}\n */\nfunction round () {\n const state = channelState.get(this)\n if (!state) {\n return null\n }\n const { txType, tx } = unpackTx(channelState.get(this)).tx.encodedTx\n switch (txType) {\n case TX_TYPE.channelCreate:\n return 1\n case TX_TYPE.channelOffChain:\n case TX_TYPE.channelWithdraw:\n case TX_TYPE.channelDeposit:\n return parseInt(tx.round, 10)\n default:\n return null\n }\n}\n\n/**\n * Get channel id\n *\n * @return {String}\n */\nfunction id () {\n return channelId.get(this)\n}\n\n/**\n * Get channel's fsm id\n *\n * @return {String}\n */\nfunction fsmId () {\n return channelFsmId.get(this)\n}\n\n/**\n * Trigger a transfer update\n *\n * The transfer update is moving tokens from one channel account to another.\n * The update is a change to be applied on top of the latest state.\n *\n * Sender and receiver are the channel parties. Both the initiator and responder\n * can take those roles. Any public key outside of the channel is considered invalid.\n *\n * @param {String} from - Sender's public address\n * @param {String} to - Receiver's public address\n * @param {Number} amount - Transaction amount\n * @param {Function} sign - Function which verifies and signs offchain transaction\n * @param {Array<String>} metadata\n * @return {Promise<Object>}\n * @example channel.update(\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * 10,\n * async (tx) => await account.signTransaction(tx)\n * ).then(({ accepted, signedTx }) =>\n * if (accepted) {\n * console.log('Update has been accepted')\n * }\n * )\n */\nfunction update (from, to, amount, sign, metadata) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: { from, to, amount, meta: metadata }\n })\n return {\n handler: handlers.awaitingOffChainTx,\n state: {\n resolve,\n reject,\n sign\n }\n }\n }\n )\n })\n}\n\n/**\n * Get proof of inclusion\n *\n * If a certain address of an account or a contract is not found\n * in the state tree - the response is an error.\n *\n * @param {Object} addresses\n * @param {Array<String>} [addresses.accounts] - List of account addresses to include in poi\n * @param {Array<String>} [addresses.contracts] - List of contract addresses to include in poi\n * @return {Promise<String>}\n * @example channel.poi({\n * accounts: [\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * ],\n * contracts: ['ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA']\n * }).then(poi => console.log(poi))\n */\nasync function poi ({ accounts, contracts }) {\n return (await call(this, 'channels.get.poi', { accounts, contracts })).poi\n}\n\n/**\n * Get balances\n *\n * The accounts paramcontains a list of addresses to fetch balances of.\n * Those can be either account balances or a contract ones, encoded as an account addresses.\n *\n * If a certain account address had not being found in the state tree - it is simply\n * skipped in the response.\n *\n * @param {Array<String>} accounts - List of addresses to fetch balances from\n * @return {Promise<Object>}\n * @example channel.balances([\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * 'ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA'\n * ]).then(balances =>\n * console.log(balances['ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'])\n * )\n */\nasync function balances (accounts) {\n return Object.fromEntries(\n (await call(this, 'channels.get.balances', { accounts }))\n .map(item => [item.account, item.balance])\n )\n}\n\n/**\n * Leave channel\n *\n * It is possible to leave a channel and then later reestablish the channel\n * off-chain state and continue operation. When a leave method is called,\n * the channel fsm passes it on to the peer fsm, reports the current mutually\n * signed state and then terminates.\n *\n * The channel can be reestablished by instantiating another Channel instance\n * with two extra params: existingChannelId and offchainTx (returned from leave\n * method as channelId and signedTx respectively).\n *\n * @return {Promise<Object>}\n * @example channel.leave().then(({ channelId, signedTx }) => {\n * console.log(channelId)\n * console.log(signedTx)\n * })\n */\nfunction leave () {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.leave', params: {} })\n return {\n handler: handlers.awaitingLeave,\n state: { resolve, reject }\n }\n })\n })\n}\n\n/**\n * Trigger mutual close\n *\n * At any moment after the channel is opened, a closing procedure can be triggered.\n * This can be done by either of the parties. The process is similar to the off-chain updates.\n *\n * @param {Function} sign - Function which verifies and signs mutual close transaction\n * @return {Promise<String>}\n * @example channel.shutdown(\n * async (tx) => await account.signTransaction(tx)\n * ).then(tx => console.log('on_chain_tx', tx))\n */\nfunction shutdown (sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown', params: {} })\n return {\n handler: handlers.awaitingShutdownTx,\n state: {\n sign,\n resolve,\n reject\n }\n }\n }\n )\n })\n}\n\n/**\n * Withdraw tokens from the channel\n *\n * After the channel had been opened any of the participants can initiate a withdrawal.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_withdraw_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a withdrawal. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The withdrawal amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the withdraw transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnWithdrawLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onWithdrawLocked callback is called (without any arguments).\n *\n * @param {Number} amount - Amount of tokens to withdraw\n * @param {Function} sign - Function which verifies and signs withdraw transaction\n * @param {Object} [callbacks]\n * @param {Function} [callbacks.onOnChainTx] - Called when withdraw transaction has been posted\n * on chain\n * @param {Function} [callbacks.onOwnWithdrawLocked]\n * @param {Function} [callbacks.onWithdrawLocked]\n * @return {Promise<Object>}\n * @example channel.withdraw(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Withdrawal has been accepted')\n * } else {\n * console.log('Withdrawal has been rejected')\n * }\n * })\n */\nfunction withdraw (amount, sign, { onOnChainTx, onOwnWithdrawLocked, onWithdrawLocked } = {}) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw', params: { amount } })\n return {\n handler: handlers.awaitingWithdrawTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnWithdrawLocked,\n onWithdrawLocked\n }\n }\n }\n )\n })\n}\n\n/**\n * Deposit tokens into the channel\n *\n * After the channel had been opened any of the participants can initiate a deposit.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_deposit_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a deposit. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The deposit amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the deposit transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnDepositLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onDepositLocked callback is called (without any arguments).\n *\n * @param {Number} amount - Amount of tokens to deposit\n * @param {Function} sign - Function which verifies and signs deposit transaction\n * @param {Object} [callbacks]\n * @param {Function} [callbacks.onOnChainTx] - Called when deposit transaction has been posted\n * on chain\n * @param {Function} [callbacks.onOwnDepositLocked]\n * @param {Function} [callbacks.onDepositLocked]\n * @return {Promise<Object>}\n * @example channel.deposit(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, state }) => {\n * if (accepted) {\n * console.log('Deposit has been accepted')\n * console.log('The new state is:', state)\n * } else {\n * console.log('Deposit has been rejected')\n * }\n * })\n */\nfunction deposit (amount, sign, { onOnChainTx, onOwnDepositLocked, onDepositLocked } = {}) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit', params: { amount } })\n return {\n handler: handlers.awaitingDepositTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnDepositLocked,\n onDepositLocked\n }\n }\n }\n )\n })\n}\n\n/**\n * Trigger create contract update\n *\n * The create contract update is creating a contract inside the channel's internal state tree.\n * The update is a change to be applied on top of the latest state.\n *\n * That would create a contract with the poster being the owner of it. Poster commits initially\n * a deposit amount of tokens to the new contract.\n *\n * @param {Object} options\n * @param {String} options.code - Api encoded compiled AEVM byte code\n * @param {String} options.callData - Api encoded compiled AEVM call data for the code\n * @param {Number} options.deposit - Initial amount the owner of the contract commits to it\n * @param {Number} options.vmVersion - Version of the Virtual Machine\n * @param {Number} options.abiVersion - Version of the Application Binary Interface\n * @param {Function} sign - Function which verifies and signs create contract transaction\n * @return {Promise<Object>}\n * @example channel.createContract({\n * code: 'cb_HKtpipK4aCgYb17wZ...',\n * callData: 'cb_1111111111111111...',\n * deposit: 10,\n * vmVersion: 3,\n * abiVersion: 1\n * }).then(({ accepted, signedTx, address }) => {\n * if (accepted) {\n * console.log('New contract has been created')\n * console.log('Contract address:', address)\n * } else {\n * console.log('New contract has been rejected')\n * }\n * })\n */\nfunction createContract ({ code, callData, deposit, vmVersion, abiVersion }, sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new_contract',\n params: {\n code,\n call_data: callData,\n deposit,\n vm_version: vmVersion,\n abi_version: abiVersion\n }\n })\n return {\n handler: handlers.awaitingNewContractTx,\n state: {\n sign,\n resolve,\n reject\n }\n }\n }\n )\n })\n}\n\n/**\n * Trigger call a contract update\n *\n * The call contract update is calling a preexisting contract inside the channel's\n * internal state tree. The update is a change to be applied on top of the latest state.\n *\n * That would call a contract with the poster being the caller of it. Poster commits\n * an amount of tokens to the contract.\n *\n * The call would also create a call object inside the channel state tree. It contains\n * the result of the contract call.\n *\n * It is worth mentioning that the gas is not consumed, because this is an off-chain\n * contract call. It would be consumed if it were a on-chain one. This could happen\n * if a call with a similar computation amount is to be forced on-chain.\n *\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @param {Function} sign - Function which verifies and signs contract call transaction\n * @return {Promise<Object>}\n * @example channel.callContract({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract called succesfully')\n * } else {\n * console.log('Contract call has been rejected')\n * }\n * })\n */\nfunction callContract ({ amount, callData, contract, abiVersion }, sign) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.call_contract',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion\n }\n })\n return {\n handler: handlers.awaitingCallContractUpdateTx,\n state: { resolve, reject, sign }\n }\n }\n )\n })\n}\n\n/**\n * Trigger a force progress contract call\n * This call is going on-chain\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @param {Number} [options.gasPrice=1000000000] - Gas price\n * @param {Number} [options.gas=1000000] - Gas limit\n * @param {Function} sign - Function which verifies and signs contract force progress transaction\n * @param {{ onOnChainTxL: Function }} callbacks\n * @return {Promise<Object>}\n * @example channel.forceProgress({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1,\n * gasPrice: 1000005554\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract force progress call successful')\n * } else {\n * console.log('Contract force progress call has been rejected')\n * }\n * })\n */\nfunction forceProgress (\n { amount, callData, contract, abiVersion, gas = 1000000, gasPrice = 1000000000, nonce },\n sign,\n { onOnChainTx } = {}\n) {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.force_progress',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion,\n gas_price: gasPrice,\n gas\n }\n })\n return {\n handler: handlers.awaitingCallContractForceProgressUpdate,\n state: { resolve, reject, sign, onOnChainTx }\n }\n }\n )\n })\n}\n\n/**\n * Call contract using dry-run\n *\n * In order to get the result of a potential contract call, one might need to\n * dry-run a contract call. It takes the exact same arguments as a call would\n * and returns the call object.\n *\n * The call is executed in the channel's state but it does not impact the state\n * whatsoever. It uses as an environment the latest channel's state and the current\n * top of the blockchain as seen by the node.\n *\n * @param {Object} options\n * @param {String} [options.amount] - Amount the caller of the contract commits to it\n * @param {String} [options.callData] - ABI encoded compiled AEVM call data for the code\n * @param {Number} [options.contract] - Address of the contract to call\n * @param {Number} [options.abiVersion] - Version of the ABI\n * @return {Promise<Object>}\n * @example channel.callContractStatic({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ returnValue, gasUsed }) => {\n * console.log('Returned value:', returnValue)\n * console.log('Gas used:', gasUsed)\n * })\n */\nasync function callContractStatic ({ amount, callData, contract, abiVersion }) {\n return snakeToPascalObjKeys(await call(this, 'channels.dry_run.call_contract', {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion\n }))\n}\n\n/**\n * Get contract call result\n *\n * The combination of a caller, contract and a round of execution determines the\n * contract call. Providing an incorrect set of those results in an error response.\n *\n * @param {Object} options\n * @param {String} [options.caller] - Address of contract caller\n * @param {String} [options.contract] - Address of the contract\n * @param {Number} [options.round] - Round when contract was called\n * @return {Promise<Object>}\n * @example channel.getContractCall({\n * caller: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * round: 3\n * }).then(({ returnType, returnValue }) => {\n * if (returnType === 'ok') console.log(returnValue)\n * })\n */\nasync function getContractCall ({ caller, contract, round }) {\n return snakeToPascalObjKeys(\n await call(this, 'channels.get.contract_call', {\n caller_id: caller,\n contract_id: contract,\n round\n })\n )\n}\n\n/**\n * Get contract latest state\n *\n * @param {String} contract - Address of the contract\n * @return {Promise<Object>}\n * @example channel.getContractState(\n * 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa'\n * ).then(({ contract }) => {\n * console.log('deposit:', contract.deposit)\n * })\n */\nasync function getContractState (contract) {\n const result = await call(this, 'channels.get.contract', { pubkey: contract })\n return snakeToPascalObjKeys({\n ...result,\n contract: snakeToPascalObjKeys(result.contract)\n })\n}\n\n/**\n * Clean up all locally stored contract calls\n *\n * Contract calls are kept locally in order for the participant to be able to look them up.\n * They consume memory and in order for the participant to free it - one can prune all messages.\n * This cleans up all locally stored contract calls and those will no longer be available for\n * fetching and inspection.\n *\n * @return {Promise}\n */\nfunction cleanContractCalls () {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state.handler === handlers.channelOpen,\n (channel, state) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.clean_contract_calls',\n params: {}\n })\n return {\n handler: handlers.awaitingCallsPruned,\n state: { resolve, reject }\n }\n }\n )\n })\n}\n\n/**\n * Send generic message\n *\n * If message is an object it will be serialized into JSON string\n * before sending.\n *\n * If there is ongoing update that has not yet been finished the message\n * will be sent after that update is finalized.\n *\n * @param {String|Object} message\n * @param {String} recipient - Address of the recipient\n * @example channel.sendMessage(\n * 'hello world',\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'\n * )\n */\nfunction sendMessage (message, recipient) {\n let info = message\n if (typeof message === 'object') {\n info = JSON.stringify(message)\n }\n const doSend = (channel) => send(channel, {\n jsonrpc: '2.0',\n method: 'channels.message',\n params: { info, to: recipient }\n })\n if (this.status() === 'connecting') {\n const onStatusChanged = (status) => {\n if (status !== 'connecting') {\n // For some reason we can't immediately send a message when connection is\n // established. Thus we wait 500ms which seems to work.\n setTimeout(() => doSend(this), 500)\n this.off('statusChanged', onStatusChanged)\n }\n }\n this.on('statusChanged', onStatusChanged)\n } else {\n doSend(this)\n }\n}\n\nasync function reconnect (options, txParams) {\n const { sign } = options\n\n return Channel({\n ...options,\n reconnectTx: await sign('reconnect', buildTx(txParams, TX_TYPE.channelReconnect).tx)\n })\n}\n\n/**\n * Channel\n *\n * @function\n * @alias module:@aeternity/aepp-sdk/es/channel/index\n * @rtype Channel\n * @param {Object} options - Channel params\n * @param {String} options.url - Channel url (for example: \"ws://localhost:3001\")\n * @param {String} options.role - Participant role (\"initiator\" or \"responder\")\n * @param {String} options.initiatorId - Initiator's public key\n * @param {String} options.responderId - Responder's public key\n * @param {Number} options.pushAmount - Initial deposit in favour of the responder by the initiator\n * @param {Number} options.initiatorAmount - Amount of tokens the initiator has committed to\n * the channel\n * @param {Number} options.responderAmount - Amount of tokens the responder has committed to\n * the channel\n * @param {Number} options.channelReserve - The minimum amount both peers need to maintain\n * @param {Number} [options.ttl] - Minimum block height to include the channel_create_tx\n * @param {String} options.host - Host of the responder's node\n * @param {Number} options.port - The port of the responders node\n * @param {Number} options.lockPeriod - Amount of blocks for disputing a solo close\n * @param {Number} [options.existingChannelId] - Existing channel id (required if reestablishing a\n * channel)\n * @param {Number} [options.offchainTx] - Offchain transaction (required if reestablishing\n * a channel)\n * @param {Number} [options.timeoutIdle] - The time waiting for a new event to be initiated\n * (default: 600000)\n * @param {Number} [options.timeoutFundingCreate] - The time waiting for the initiator to produce\n * the create channel transaction after the noise session had been established (default: 120000)\n * @param {Number} [options.timeoutFundingSign] - The time frame the other client has to sign an\n * off-chain update after our client had initiated and signed it. This applies only for double\n * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.\n * (default: 120000)\n * @param {Number} [options.timeoutFundingLock] - The time frame the other client has to confirm an\n * on-chain transaction reaching maturity (passing minimum depth) after the local node has detected\n * this. This applies only for double signed on-chain intended updates: channel create transaction,\n * deposit, withdrawal and etc. (default: 360000)\n * @param {Number} [options.timeoutSign] - The time frame the client has to return a signed\n * off-chain update or to decline it. This applies for all off-chain updates (default: 500000)\n * @param {Number} [options.timeoutAccept] - The time frame the other client has to react to an\n * event. This applies for all off-chain updates that are not meant to land on-chain, as well as\n * some special cases: opening a noise connection, mutual closing acknowledgement and\n * reestablishing an existing channel (default: 120000)\n * @param {Number} [options.timeoutInitialized] - the time frame the responder has to accept an\n * incoming noise session. Applicable only for initiator (default: timeout_accept's value)\n * @param {Number} [options.timeoutAwaitingOpen] - The time frame the initiator has to start an\n * outgoing noise session to the responder's node. Applicable only for responder (default:\n * timeout_idle's value)\n * @param {Number} [options.debug=false] - Log websocket communication\n * @param {Function} options.sign - Function which verifies and signs transactions\n * @return {Promise<Object>} Channel instance\n * @example Channel({\n * url: 'ws://localhost:3001',\n * role: 'initiator'\n * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * initiatorAmount: 1e18,\n * responderAmount: 1e18,\n * pushAmount: 0,\n * channelReserve: 0,\n * ttl: 1000,\n * host: 'localhost',\n * port: 3002,\n * lockPeriod: 10,\n * async sign (tag, tx) => await account.signTransaction(tx)\n * })\n */\nconst Channel = AsyncInit.compose({\n async init (options) {\n await initialize(\n this,\n options.existingFsmId ? handlers.awaitingReconnection : handlers.awaitingConnection,\n handlers.channelOpen,\n options\n )\n },\n methods: {\n on,\n off,\n status,\n state,\n round,\n id,\n fsmId,\n update,\n poi,\n balances,\n leave,\n shutdown,\n sendMessage,\n withdraw,\n deposit,\n createContract,\n callContract,\n callContractStatic,\n getContractCall,\n getContractState,\n disconnect,\n cleanContractCalls,\n forceProgress\n },\n statics: {\n reconnect\n }\n})\n\nexport default Channel\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Universal module\n * @module @aeternity/aepp-sdk/es/ae/universal\n * @export Universal\n * @example import { Universal } from '@aeternity/aepp-sdk'\n */\n\nimport Ae from './'\nimport Chain from '../chain/node'\nimport Aens from './aens'\nimport Transaction from '../tx/tx'\nimport Oracle from './oracle'\nimport GeneralizedAccount from '../contract/ga'\nimport AccountMultiple from '../account/multiple'\nimport Contract from './contract'\n\n/**\n * Universal Stamp\n *\n * Universal provides Ae base functionality with Contract and Aens\n * {@link module:@aeternity/aepp-sdk/es/ae--Ae} clients.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/ae/universal\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} Universal instance\n */\nexport default Ae.compose(\n AccountMultiple, Chain, Transaction, Aens, Contract, Oracle, GeneralizedAccount\n)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Content Script Bridge module\n *\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @export ContentScriptBridge\n * @example\n * import ContentScriptBridge\n * from '@aeternity/aepp-sdk/es/utils/wallet-communication/content-script-bridge\n */\nimport stampit from '@stamp/it'\nimport { UnsupportedPlatformError, MissingParamError } from '../errors'\n\n/**\n * Start message proxy\n * @function run\n * @instance\n * @return {void}\n */\nfunction run () {\n const allowCrossOrigin = this.allowCrossOrigin\n // Connect to extension using runtime\n this.extConnection.connect((msg) => {\n this.pageConnection.sendMessage(msg)\n })\n // Connect to page using window.postMessage\n this.pageConnection.connect((msg, origin, source) => {\n if (!allowCrossOrigin && source !== window) return\n this.extConnection.sendMessage(msg)\n })\n}\n\n/**\n * Stop message proxy\n * @function stop\n * @instance\n * @return {void}\n */\nfunction stop () {\n this.extConnection.disconnect()\n this.pageConnection.disconnect()\n}\n\n/**\n * ContentScriptBridge stamp\n * Provide functionality to easly redirect messages from page to extension and from extension to\n * page through content script\n * Using Runtime(Extension) and WindowPostMessage(Web-Page) connections\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/content-script-bridge\n * @rtype Stamp\n * @param {Object} params - Initializer object\n * @param {Object} params.pageConnection - Page connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/\n * browser-window-message)\n * @param {Object} params.extConnection - Extension connection object\n * (@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime)\n * @return {Object}\n */\nexport default stampit({\n init ({ pageConnection, extConnection, allowCrossOrigin = false }) {\n if (!window) throw new UnsupportedPlatformError('Window object not found, you can run bridge only in browser')\n if (!pageConnection) throw new MissingParamError('pageConnection required')\n if (!extConnection) throw new MissingParamError('extConnection required')\n this.allowCrossOrigin = allowCrossOrigin\n this.pageConnection = pageConnection\n this.extConnection = extConnection\n },\n methods: { run, stop }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Connection base module\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @export WalletConnection\n * @example\n * import WalletConnection from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection'\n */\n\nimport { required } from '@stamp/required'\n\n/**\n * Basic Wallet Connection\n *\n * This stamp include interface for wallet connection functionality.\n * Attempting to create instances from the Stamp without overwriting all\n * abstract methods using composition will result in an exception.\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection\n * @rtype Stamp\n * @param {Object} [options={}] - Initializer object\n * @return {Object} WalletConnection instance\n */\nexport default required({\n methods: {\n connect: required,\n disconnect: required,\n sendMessage: required,\n isConnected: required\n }\n})\n\n/**\n * Connect\n * @function connect\n * @instance\n * @abstract\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @abstract\n * @rtype () => void\n * @return {void}\n */\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @abstract\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @abstract\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser window Post Message connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message\n * @export BrowserWindowMessageConnection\n * @example\n * import BrowserWindowMessageConnection\n * from '@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-window-message'\n */\nimport stampit from '@stamp/it'\nimport WalletConnection from '.'\nimport { v4 as uuid } from '@aeternity/uuid'\nimport { MESSAGE_DIRECTION } from '../schema'\nimport { getBrowserAPI, isInIframe } from '../helpers'\nimport {\n AlreadyConnectedError,\n NoWalletConnectedError,\n MessageDirectionError\n} from '../../errors'\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return this.listener\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function) => void\n * @param {Function} onMessage - Message handler\n * @return {void}\n */\nfunction connect (onMessage) {\n const origin = this.origin\n const receiveDirection = this.receiveDirection\n const debug = this.debug\n const forceOrigin = this.forceOrigin\n if (this.listener) throw new AlreadyConnectedError('You already connected')\n\n this.listener = (msg, source) => {\n if (!msg || typeof msg.data !== 'object') return\n if (!forceOrigin && origin && origin !== msg.origin) return\n if (debug) console.log('Receive message: ', msg)\n if (msg.data.type) {\n if (msg.data.type !== receiveDirection) return\n onMessage(msg.data.data, msg.origin, msg.source)\n } else {\n onMessage(msg.data, msg.origin, msg.source)\n }\n }\n this.subscribeFn(this.listener)\n}\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n if (!this.listener) throw new NoWalletConnectedError('You dont have connection. Please connect before')\n this.unsubscribeFn(this.listener)\n this.listener = null\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n const message = this.sendDirection ? { type: this.sendDirection, data: msg } : msg\n if (this.debug) console.log('Send message: ', message)\n this.postFn(message)\n}\n\nconst getTarget = () => {\n const isExtensionContext = typeof getBrowserAPI(true).extension === 'object'\n const isWeb = window && window.location && window.location.protocol.startsWith('http')\n const isContentScript = isExtensionContext && isWeb\n if (isContentScript) return window\n // When we is the main page we need to decide the target by our self\n // Probably can be implemented some algo for checking DOM for Iframes and somehow decide which\n // Iframe to talk\n return isInIframe() ? window.parent : undefined\n}\n\n/**\n * BrowserWindowMessageConnection\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication\\\n * /connection/browser-window-message\n * @rtype Stamp\n * @param {Object} [params={}] - Initializer object\n * @param {Object} [params.target=window.parent] - Target window for message\n * @param {Object} [params.self=window] - Host window for message\n * @param {Object} [params.origin] - Origin of receiver\n * @param {String} [params.sendDirection] Wrapping messages into additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {String} [params.receiveDirection='to_aepp'] Unwrapping messages from additional struct\n * ({ type: 'to_aepp' || 'to_waellet', data })\n * Used for handling messages between content script and page\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({\n connectionInfo = {},\n target = getTarget(),\n self = window,\n origin,\n sendDirection,\n receiveDirection = MESSAGE_DIRECTION.to_aepp,\n debug = false,\n forceOrigin = false\n } = {}) {\n if (sendDirection && !Object.keys(MESSAGE_DIRECTION).includes(sendDirection)) throw new MessageDirectionError(`sendDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n if (!Object.keys(MESSAGE_DIRECTION).includes(receiveDirection)) throw new MessageDirectionError(`receiveDirection must be one of [${Object.keys(MESSAGE_DIRECTION)}]`)\n this.connectionInfo = { id: uuid(), ...connectionInfo }\n\n const selfP = self\n const targetP = target\n this.origin = origin\n this.debug = debug\n this.forceOrigin = forceOrigin\n this.sendDirection = sendDirection\n this.receiveDirection = receiveDirection\n this.subscribeFn = (listener) => selfP.addEventListener('message', listener, false)\n this.unsubscribeFn = (listener) => selfP.removeEventListener('message', listener, false)\n this.postFn = (msg) => targetP.postMessage(msg, this.origin || '*')\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Wallet Detector\n *\n * This is the complement to {@link module:@aeternity/aepp-sdk/es/utils}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @export WalletDetector\n */\nimport stampit from '@stamp/it'\nimport BrowserWindowMessageConnection from './connection/browser-window-message'\nimport { MESSAGE_DIRECTION, METHODS } from './schema'\nimport { UnsupportedPlatformError } from '../errors'\n\n/**\n * WalletDetector stamp\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/wallet-detector\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {WalletConnection} params.connection - Connection for listening for wallets\n * @return {WalletDetector}\n */\nexport default stampit({\n init ({ connection } = {}) {\n if (!window) throw new UnsupportedPlatformError('Window object not found, you can run wallet detector only in browser')\n this.connection = connection || BrowserWindowMessageConnection({ connectionInfo: { id: 'spy' } })\n this.wallets = {}\n },\n methods: {\n /**\n * Start scanning\n * @function scan\n * @instance\n * @param {Function} onDetected Call-back function which trigger on new wallet\n * @return {void}\n */\n scan (onDetected) {\n const { wallets } = this\n this.connection.connect(({ method, params }, origin, source) => {\n if (\n !method || !params ||\n method !== METHODS.readyToConnect || wallets[params.id]\n ) return\n\n const wallet = {\n ...params,\n async getConnection () {\n // if detect extension wallet or page wallet\n const isExtension = this.type === 'extension'\n const origin = isExtension ? window.origin : this.origin\n return BrowserWindowMessageConnection({\n connectionInfo: this,\n sendDirection: isExtension ? MESSAGE_DIRECTION.to_waellet : undefined,\n receiveDirection: isExtension ? MESSAGE_DIRECTION.to_aepp : undefined,\n target: source,\n origin\n })\n }\n }\n wallets[wallet.id] = wallet\n onDetected({ wallets, newWallet: wallet })\n })\n if (Object.keys(wallets).length) onDetected({ wallets })\n },\n\n /**\n * Stop scanning\n * @function stopScan\n * @instance\n * @return {void}\n */\n stopScan () {\n this.connection.disconnect()\n }\n }\n})\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Browser runtime connector module\n *\n * This is the complement to\n * {@link module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection}.\n * @module @aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @export BrowserRuntimeConnection\n * @example import { BrowserRuntimeConnection } from '@aeternity/aepp-sdk'\n */\nimport stampit from '@stamp/it'\n\nimport WalletConnection from '.'\nimport { getBrowserAPI } from '../helpers'\nimport {\n RpcConnectionError,\n AlreadyConnectedError,\n NoWalletConnectedError\n} from '../../errors'\n\n/**\n * Disconnect\n * @function disconnect\n * @instance\n * @rtype () => void\n * @return {void}\n */\nfunction disconnect () {\n try {\n this.port.disconnect()\n } catch (e) {\n console.warning('From BrowserRuntimeConnection: ', e)\n }\n}\n\n/**\n * Connect\n * @function connect\n * @instance\n * @rtype (onMessage: Function, onDisconnect: Function) => void\n * @param {Function} onMessage - Message handler\n * @param {Function} onDisconnect - trigger when runtime connection in closed\n * @return {void}\n */\nfunction connect (onMessage, onDisconnect) {\n if (this.isConnected()) throw new AlreadyConnectedError('You already connected')\n this.handler = (msg, source) => {\n if (this.debug) console.log('Receive message: ', msg)\n onMessage(msg, source)\n }\n this.port.onMessage.addListener(this.handler)\n this.port.onDisconnect.addListener(() => {\n typeof onDisconnect === 'function' && onDisconnect({}, this)\n this.port.disconnect()\n })\n}\n\n/**\n * Send message\n * @function sendMessage\n * @instance\n * @rtype (msg: Object) => void\n * @param {Object} msg - Message\n * @return {void}\n */\nfunction sendMessage (msg) {\n if (!this.port) throw new NoWalletConnectedError('You dont have connection. Please connect before')\n if (this.debug) console.log('Send message: ', msg)\n this.port.postMessage(msg)\n}\n\n/**\n * Check if connected\n * @function isConnected\n * @instance\n * @rtype () => Boolean\n * @return {Boolean} Is connected\n */\nfunction isConnected () {\n return typeof this.port.onMessage.hasListeners === 'function' ? this.port.onMessage.hasListeners() : this.port.onMessage.hasListener(this.handler)\n}\n\n/**\n * BrowserRuntimeConnection stamp\n * Handle browser runtime communication\n * @function\n * @alias module:@aeternity/aepp-sdk/es/utils/aepp-wallet-communication/connection/browser-runtime\n * @rtype Stamp\n * @param {Object} params={} - Initializer object\n * @param {Object} params.port - Runtime `port` object\n * @param {Object} [params.connectionInfo={}] - Connection info object\n * @param {Boolean} [params.debug=false] - Debug flag\n * @return {Object}\n */\nexport default stampit({\n init ({ connectionInfo = {}, port, debug = false }) {\n if (!getBrowserAPI().runtime) throw new RpcConnectionError('Runtime is not accessible in your environment')\n this.debug = debug\n this.connectionInfo = connectionInfo\n this.port = port || getBrowserAPI().runtime.connect(...[connectionInfo.id || undefined])\n },\n methods: { connect, sendMessage, disconnect, isConnected }\n}, WalletConnection)\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport * as Crypto from './utils/crypto'\nimport * as Keystore from './utils/keystore'\nimport * as Bytes from './utils/bytes'\nimport * as TxBuilder from './tx/builder'\nimport * as TxBuilderHelper from './tx/builder/helpers'\nimport * as SCHEMA from './tx/builder/schema'\nimport * as AmountFormatter from './utils/amount-formatter'\nimport * as HdWallet from './utils/hd-wallet'\n\nimport Ae from './ae'\nimport Chain from './chain'\nimport ChainNode from './chain/node'\nimport Node from './node'\nimport NodePool from './node-pool'\nimport Tx from './tx'\nimport Transaction from './tx/tx'\nimport verifyTransaction from './tx/validator'\nimport AccountBase from './account/base'\nimport AccountMultiple from './account/multiple'\nimport MemoryAccount from './account/memory'\nimport Aens from './ae/aens'\nimport Contract from './ae/contract'\nimport GeneralizedAccount from './contract/ga'\nimport ContractCompilerHttp from './contract/compiler'\nimport RpcAepp from './ae/aepp'\nimport RpcWallet from './ae/wallet'\nimport Oracle from './ae/oracle'\nimport genSwaggerClient from './utils/swagger'\nimport Channel from './channel'\nimport Universal from './ae/universal'\n\nexport { default as ContentScriptBridge } from './utils/aepp-wallet-communication/content-script-bridge'\nexport * as AeppWalletHelpers from './utils/aepp-wallet-communication/helpers'\nexport * as AeppWalletSchema from './utils/aepp-wallet-communication/schema'\nexport { default as WalletDetector } from './utils/aepp-wallet-communication/wallet-detector'\nexport { default as BrowserRuntimeConnection } from './utils/aepp-wallet-communication/connection/browser-runtime'\nexport { default as BrowserWindowMessageConnection } from './utils/aepp-wallet-communication/connection/browser-window-message'\nexport * from './utils/errors'\n\nexport const getDefaultPointerKey = TxBuilderHelper.getDefaultPointerKey\n\nexport {\n AmountFormatter,\n AccountBase,\n AccountMultiple,\n Ae,\n Aens,\n Bytes,\n Contract,\n ContractCompilerHttp,\n ChainNode,\n RpcAepp,\n RpcWallet,\n Channel,\n Crypto,\n Keystore,\n Chain,\n GeneralizedAccount,\n HdWallet,\n MemoryAccount,\n Node,\n NodePool,\n Oracle,\n genSwaggerClient,\n Transaction,\n verifyTransaction,\n Tx,\n TxBuilder,\n TxBuilderHelper,\n Universal,\n SCHEMA\n}\n"],"names":["root","factory","exports","module","require","define","amd","global","__WEBPACK_EXTERNAL_MODULE__910__","__WEBPACK_EXTERNAL_MODULE__983__","__WEBPACK_EXTERNAL_MODULE__180__","__WEBPACK_EXTERNAL_MODULE__192__","__WEBPACK_EXTERNAL_MODULE__783__","__WEBPACK_EXTERNAL_MODULE__79__","__WEBPACK_EXTERNAL_MODULE__236__","__WEBPACK_EXTERNAL_MODULE__343__","__WEBPACK_EXTERNAL_MODULE__433__","__WEBPACK_EXTERNAL_MODULE__485__","__WEBPACK_EXTERNAL_MODULE__659__","__WEBPACK_EXTERNAL_MODULE__503__","__WEBPACK_EXTERNAL_MODULE__911__","__WEBPACK_EXTERNAL_MODULE__946__","__WEBPACK_EXTERNAL_MODULE__397__","__WEBPACK_EXTERNAL_MODULE__735__","__WEBPACK_EXTERNAL_MODULE__289__","__WEBPACK_EXTERNAL_MODULE__882__","__WEBPACK_EXTERNAL_MODULE__986__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","BaseError","Error","constructor","message","super","this","name","AccountError","AensError","AeppError","ChannelError","CompilerError","ContractError","CryptographyError","NodeError","TransactionError","WalletError","ArgumentError","argumentName","requirement","argumentValue","IllegalArgumentError","ArgumentCountMismatchError","functionName","requiredCount","providedCount","InsufficientBalanceError","InvalidDenominationError","InvalidNameError","MissingParamError","NoBrowserFoundError","NoSerializerFoundError","RequestTimedOutError","requestTime","currentHeight","height","TxTimedOutError","blocks","th","status","join","TypeError","UnsupportedPlatformError","UnsupportedProtocolError","NotImplementedError","UnsupportedVersionError","dependency","version","geVersion","ltVersion","InternalError","InvalidKeypairError","UnavailableAccountError","address","AensPointerContextError","nameOrId","prefix","InsufficientNameFeeError","nameFee","minNameFee","InvalidAensNameError","DuplicateCallbackError","InvalidRpcMessageError","MissingCallbackError","id","UnAuthorizedAccountError","onAccount","UnknownRpcClientError","UnsubscribedAccountError","ChannelCallError","ChannelConnectionError","ChannelPingTimedOutError","UnexpectedChannelMessageError","UnknownChannelStateError","InvalidAuthDataError","BytecodeMismatchError","source","DuplicateContractError","InactiveContractError","contractAddress","InvalidMethodInvocationError","MissingContractAddressError","MissingContractDefError","MissingFunctionNameError","NodeInvocationError","NoSuchContractFunctionError","NotPayableFunctionError","amount","fn","MissingEventDefinitionError","eventNameHash","eventAddress","AmbiguousEventDefinitionError","matchedEvents","map","InvalidChecksumError","InvalidDerivationPathError","InvalidKeyError","InvalidPasswordError","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnsupportedAlgorithmError","algo","NotHardenedSegmentError","UnknownNodeLengthError","nodeLength","UnknownPathNibbleError","nibble","UnsupportedChildIndexError","index","DisconnectedError","DuplicateNodeError","NodeNotFoundError","DecodeError","EncodeError","PayloadLengthError","DryRunError","IllegalBidFeeError","InvalidSignatureError","InvalidTxError","InvalidTxParamsError","NoDefaultAensPointerError","PrefixMismatchError","requiredPrefix","PrefixNotFoundError","tag","SchemaNotFoundError","TagNotFoundError","TxNotInChainError","txHash","UnknownTxError","UnsupportedABIversionError","UnsupportedVMversionError","AlreadyConnectedError","MessageDirectionError","NoWalletConnectedError","RpcConnectionError","snakeToPascal","s","replace","match","toUpperCase","pascalToSnake","toLowerCase","isHex","str","length","test","bigNumberToByteArray","x","isInteger","toFixed","hexString","toString","Buffer","from","toBytes","val","big","Number","BigNumber","str2buf","enc","indexOf","slice","isBase64","sha256hash","input","sha256","update","digest","base64Types","base58Types","typesLength","ak","ct","ok","ensureValidLength","data","type","getChecksum","payload","addChecksum","concat","getPayload","buffer","equals","base64","encode","decode","string","base58","bs58","encodedPayload","extra","split","decoder","includes","encoder","hash","blake2b","Ecb","aesjs","getAddressFromPriv","secret","keys","nacl","publicKey","isAddressValid","e","salt","Math","floor","random","MAX_SAFE_INTEGER","encodeUnsigned","binary","allocUnsafe","writeUInt32BE","findIndex","i","encodeContractAddress","owner","nonce","generateKeyPairFromSecret","generateKeyPair","raw","keyPair","publicBuffer","secretBuffer","secretKey","encryptKey","password","binaryData","hashedPasswordBytes","encrypt","decryptKey","encrypted","encryptedBytes","aesEcb","decrypt","sign","privateKey","verify","signature","Uint8Array","messageToHash","p","msg","signMessage","verifyMessage","isValidKeypair","DEFAULTS","crypto","secret_type","symmetric_alg","kdf","kdf_params","memlimit_kib","opslimit","parallelism","DERIVED_KEY_FUNCTIONS","argon2id","deriveKeyUsingArgon2id","async","pass","options","mem","time","result","hashLen","ArgonType","CRYPTO_FUNCTIONS","plaintext","ciphertext","res","deriveKey","marshal","derivedKey","opt","assign","public_key","uuid","cipher_params","recover","keyObject","validateKeyObj","kdfParams","dump","missingRootKeys","filter","missingCryptoKeys","isBigNumber","number","isNaN","ceil","bigNumber","integerValue","AE_AMOUNT_FORMATS","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","DENOMINATION_MAGNITUDE","toAe","denomination","formatAmount","targetDenomination","toAettos","denominations","values","shiftedBy","prefixes","magnitude","getNearestPrefix","exponent","reduce","abs","getLowerBoundPrefix","find","rawValue","exp","precision","min","pause","Promise","resolve","setTimeout","duration","mapObject","object","fromEntries","entries","filterObject","traverseKeys","Array","isArray","snakizeKeys","bind","pascalizeKeys","NAME_TTL","NAME_MAX_TTL","NAME_MAX_CLIENT_TTL","CLIENT_TTL","NAME_FEE_MULTIPLIER","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","NAME_BID_MAX_LENGTH","POINTER_KEY_BY_PREFIX","ch","NAME_BID_RANGES","times","NAME_BID_TIMEOUTS","ID_TAG","account","commitment","oracle","contract","channel","PREFIX_ID_TAG","nm","cm","ID_TAG_PREFIX","createSalt","buildContractId","ownerId","oracleQueryId","senderId","oracleId","nonceBE","alloc","_int32","formatSalt","padStart","produceNameId","ensureNameValid","commitmentHash","writeId","hashId","idTag","readId","buf","readUIntBE","writeInt","readInt","buildPointers","pointers","readPointers","AENS_SUFFIX","endsWith","isNameValid","error","getDefaultPointerKey","identifier","substr","getMinimumNameFee","nameLength","computeBidFee","startFee","increment","plus","computeAuctionEndBlock","claimHeight","isAuctionName","Field","NameId","Deposit","VSN","VSN_2","TX_TTL","QUERY_FEE","ORACLE_TTL","QUERY_TTL","RESPONSE_TTL","AMOUNT","GAS_MAX","MIN_GAS_PRICE","MAX_AUTH_FUN_GAS","DRY_RUN_ACCOUNT","pub","OBJECT_TAG_SIGNED_TRANSACTION","OBJECT_TAG_CHANNEL_FORCE_PROGRESS_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX","OBJECT_TAG_CHANNEL_OFFCHAIN_CALL_CONTRACT_TX","OBJECT_TAG_CHANNEL_RECONNECT_TX","OBJECT_TAG_CONTRACTS_TREE","OBJECT_TAG_CONTRACT_CALLS_TREE","OBJECT_TAG_CHANNELS_TREE","OBJECT_TAG_NAMESERVICE_TREE","OBJECT_TAG_ORACLES_TREE","OBJECT_TAG_ACCOUNTS_TREE","TX_FIELD","TX_SCHEMA_FIELD","schema","objectId","TX_TYPE","signed","spend","nameClaim","namePreClaim","nameUpdate","nameRevoke","nameTransfer","contractCreate","contractCall","contractCallResult","oracleRegister","oracleExtend","oracleQuery","oracleResponse","channelCreate","channelCloseMutual","channelCloseSolo","channelSlash","channelDeposit","channelWithdraw","channelSettle","channelOffChain","channelForceProgress","channelSnapshotSolo","channelOffChainUpdateTransfer","channelOffChainUpdateDeposit","channelOffChainUpdateWithdrawal","channelOffChainCreateContract","channelOffChainCallContract","channelReconnect","proofOfInclusion","stateTrees","merklePatriciaTree","merklePatriciaTreeValue","contractsTree","contractCallsTree","channelsTree","nameserviceTree","oraclesTree","accountsTree","gaAttach","gaMeta","payingFor","sophiaByteCode","VM_VERSIONS","NO_VM","SOPHIA","SOPHIA_IMPROVEMENTS_MINERVA","SOPHIA_IMPROVEMENTS_FORTUNA","FATE","SOPHIA_IMPROVEMENTS_LIMA","FATE_2","ABI_VERSIONS","NO_ABI","PROTOCOL_VERSIONS","IRIS","PROTOCOL_VM_ABI","vmVersion","abiVersion","OBJECT_ID_TX_TYPE","FIELD_TYPES","int","ids","rlpBinary","rlpBinaries","rawBinary","bool","hex","signatures","offChainUpdates","callStack","mptrees","callReturnType","ctVersion","sophiaCodeTypeInfo","any","stateTree","BASE_GAS","GAS_PER_BYTE","DEFAULT_FEE","KEY_BLOCK_INTERVAL","TX_FEE_BASE_GAS","txType","factor","TX_FEE_OTHER_GAS","txSize","relativeTtl","innerTxSize","minus","BASE_TX","CONTRACT_BYTE_CODE_LIMA","ACCOUNT_TX_2","SPEND_TX","SIGNED_TX","NAME_PRE_CLAIM_TX","NAME_CLAIM_TX_2","gt","NAME_UPDATE_TX","NAME_TRANSFER_TX","NAME_REVOKE_TX","CONTRACT_TX","GA_ATTACH_TX","GA_META_TX_2","PAYING_FOR_TX","CONTRACT_CREATE_TX","CONTRACT_CALL_TX","CONTRACT_CALL_RESULT_TX","ORACLE_REGISTER_TX","ORACLE_EXTEND_TX","ORACLE_QUERY_TX","ORACLE_RESPOND_TX","CHANNEL_CREATE_TX_2","CHANNEL_DEPOSIT_TX","CHANNEL_WITHDRAW_TX","CHANNEL_CLOSE_MUTUAL_TX","CHANNEL_CLOSE_SOLO_TX","CHANNEL_SLASH_TX","CHANNEL_SETTLE_TX","CHANNEL_FORCE_PROGRESS_TX","CHANNEL_OFFCHAIN_TX_2","CHANNEL_TX_3","CHANNEL_SNAPSHOT_SOLO_TX","CHANNEL_OFFCHAIN_CREATE_CONTRACT_TX","CHANNEL_OFFCHAIN_CALL_CONTRACT_TX","CHANNEL_RECONNECT_TX","CHANNEL_OFFCHAIN_UPDATE_TRANSFER_TX","CHANNEL_OFFCHAIN_UPDATE_DEPOSIT_TX","CHANNEL_OFFCHAIN_UPDATE_WITHDRAWAL_TX","PROOF_OF_INCLUSION_TX","STATE_TREES_TX","MERKLE_PATRICIA_TREE_TX","MERKLE_PATRICIA_TREE_VALUE_TX","CONTRACTS_TREE_TX","CONTRACT_CALLS_TREE_TX","CHANNELS_TREE_TX","NAMESERVICE_TREE_TX","ORACLES_TREE_TX","ACCOUNTS_TREE_TX","TX_SERIALIZATION_SCHEMA","TX_DESERIALIZATION_SCHEMA","NodeType","MPTree","node","rlpEncode","rootHash","nodes","forEach","nodeHash","parseNode","Branch","Extension","isEqual","tree","path","parseInt","Leaf","serialize","mptHash","searchFrom","ORACLE_TTL_TYPES","deserializeField","vm","abi","unpackTx","v","t","acc","funHash","fnName","argType","outType","deserialize","serializeField","params","rlpEncoded","validateField","lt","some","transformParams","_","schemaKeys","k","getOracleRelativeTtl","ttlKey","calculateMinFee","gas","vsn","multiplier","actualFee","buildFee","fee","expected","eq","txWithOutFee","buildTx","tx","encodedTx","calculateFee","showWarning","console","warn","validateParams","excludeKeys","buildRawTx","filteredSchema","valid","JSON","stringify","fieldType","unpackRawTx","getSchema","objId","isDeserialize","firstKey","txObject","fromRlpBinary","rlpDecode","buildTxHash","rawTx","startsWith","ED25519_CURVE","HARDENED_OFFSET","toHex","derivePathFromKey","segments","fromString","toPathArray","segment","parentKey","deriveChild","derivePathFromSeed","seed","masterKey","getMasterKeyFromSeed","formatAccount","getKeyPair","I","hmac","chainCode","indexBuffer","generateSaveHDWalletFromSeed","walletKey","getSaveHDWalletAccounts","saveHDWallet","accountCount","fill","idx","getHdWalletAccountFromSeed","accountIdx","stampit","required","methods","spendTx","namePreclaimTx","nameClaimTx","nameTransferTx","nameUpdateTx","nameRevokeTx","contractCreateTx","contractCallTx","oracleRegisterTx","oracleExtendTx","oraclePostQueryTx","oracleRespondTx","getAccountNonce","channelCloseSoloTx","channelSlashTx","channelSettleTx","channelSnapshotSoloTx","gaAttachTx","getVmVersion","prepareTxParams","Chain","deepProps","Ae","defaults","waitMined","_expectedMineRate","_microBlockCycle","_maxPollInterval","_getPollInterval","base","block","microblock","sendTransaction","awaitHeight","poll","balance","getBalance","getTxInfo","mempool","txDryRun","getAccount","asyncInit","stamp","args","instance","compose","deepConfiguration","AsyncInit","initializers","init","ret","deepConf","composers","composables","c","flat","Infinity","f","arr","jsonBig","JsonBig","storeAsString","convertValuesToBigNumbers","item","bn","toJSON","parse","warnedAboutInternalApiUsage","specUrl","spec","internalUrl","disableBigNumbers","disableCaseConversion","responseInterceptor","fetch","json","jsonImp","external","internal","all","url","pendingGetRequests","SwaggerClient","requestInterceptor","request","method","userFetch","clone","response","text","size","body","combinedApi","apis","handler","opSpecs","paths","operationId","requestQueues","api","opId","opSpec","parameters","requestBody","content","param","req","__requestBody","__queue","stringified","rootKeys","properties","filteredValue","then","getComponents","versionComponents","geComponents","ltComponents","max","componentsToNumber","components","reverse","pow","vNumber","geNumber","ltNumber","getNetworkId","networkId","force","selectedNode","Node","ignoreVersion","client","genSwaggerClient","statusText","URL","pathname","reason","info","semverSatisfies","NODE_GE_VERSION","NODE_LT_VERSION","nodeRevision","revision","genesisKeyBlockHash","genesisHash","protocols","topBlockHeight","getStatus","consensusProtocolVersion","effectiveAtHeight","nodeNetworkId","getNodeInfo","props","isAccountBase","signTransaction","innerTx","push","rlpBinaryTx","txWithNetworkId","returnHex","sig","verifyMessageCrypto","Tx","AccountBase","send","contractId","authFun","signUsingGA","TxBuilder","recipientIdOrName","recipientId","resolveName","transferFunds","fraction","desiredAmount","payForTransaction","transaction","payingForTx","payerId","destroyInstance","m","authData","createMetaTx","validators","parentTxTypes","txHashWithNetworkId","decodedPub","checkedKeys","verifyTransaction","minFee","lte","ttl","cost","validNonce","gasPrice","protocol","txProtocol","active","getContract","getSenderAddress","getAccountByPubkey","catch","getCurrentKeyBlockHeight","pool","Map","validateNodes","addNode","selectNode","propertyDescriptors","configurable","select","has","set","isNodeConnected","getNodesInPool","notObject","wrongFields","wrongInstanceFields","txDryRunHandler","rs","_txDryRun","dryRunRes","protectedDryRunTxs","top","txEvents","txs","accounts","Set","accountAddress","pubKey","reject","results","resultPayload","ChainNode","NodePool","validation","code","postTransaction","txData","confirm","confirmationHeight","waitForTxConfirm","verifyTx","format","getAccountByPubkeyAndHeight","getAccountByPubkeyAndHash","getTransactionByHash","blockHeight","interval","attempts","getCheckTxInPool","getTransactionInfoByHash","callInfo","getPendingTransactions","getCurrentGeneration","getGeneration","hashOrHeight","getGenerationByHash","getGenerationByHeight","getMicroBlockHeader","getMicroBlockHeaderByHash","getMicroBlockTransactions","getMicroBlockTransactionsByHash","transactions","getKeyBlock","getKeyBlockByHash","getKeyBlockByHeight","combine","timeout","getContractByteCode","getContractCode","getName","getNameEntryByName","newBlockHeight","resolveByNode","pointer","buildTransaction","unpackTransaction","TxObject","initTransaction","isSigned","statics","fromRlp","setProp","getSignatures","addSignature","isBuffer","calculateTtl","relative","getCurrentKeyBlock","Transaction","nativeMode","arguments","postSpend","accountId","commitmentId","postNamePreclaim","nameSalt","postNameClaim","nameId","postNameTransfer","nameTtl","clientTtl","postNameUpdate","postNameRevoke","callData","postContractCreate","callerId","postContractCall","absoluteTtl","strategy","getAccountNextNonce","nextNonce","queryFormat","responseFormat","queryFee","oracleTtl","postOracleRegister","postOracleExtend","responseTtl","query","queryTtl","postOracleQuery","queryId","postOracleRespond","channelId","fromId","poi","postChannelCloseSolo","postChannelSlash","initiatorAmountFinal","responderAmountFinal","postChannelSettle","postChannelSnapshotSolo","accountNonce","supportedProtocol","protocolForTX","secrets","WeakMap","keypair","gaId","isGa","pubBuffer","selectAccount","selectedAddress","_resolveAccount","addresses","removeAccount","MemoryAccount","Aens","aensQuery","freeze","aensUpdate","transfer","aensTransfer","revoke","aensRevoke","extendTtl","extendPointers","aensPreclaim","_salt","preclaimTx","claim","aensClaim","claimTx","nameInter","allPointers","aensBid","compilerUrl","setCompilerUrl","parameter","pos","line","col","context","trim","compilerVersion","compilerApi","filesystem","file_system","COMPILER_GE_VERSION","COMPILER_LT_VERSION","ContractCompilerHttp","getContractInstance","bytecode","aci","_aci","validateBytecode","otherOptions","generateACI","_name","encoded_aci","calldata","Calldata","external_encoded_aci","deployInfo","callStatic","onChanBytecode","validateByteCode","compile","compileContract","sendAndProcess","handleCallError","returnType","returnValue","decodeFateString","getFunctionACI","functions","payable","getContractNameByEvent","nameHash","contractAddressToName","addressToName","event","variant","events","eventName","BigInt","_estimateGas","gasUsed","deploy","fnACI","txOpt","callObj","dryRunOther","decodedResult","returns","decodedEvents","decodeEvents","log","omitUnknown","topics","contractName","decoded","decodeEvent","aciArgs","stateful","genHandler","pop","delegateSignatureCommon","createAensDelegationSignature","createOracleDelegationSignature","prepareGaParams","ins","authFnName","authCallData","GeneralizedAccount","Contract","createGeneralizedAccount","isGA","gaContractId","rawTransaction","wrappedTx","wrapInEmptySignedTx","metaTxRlp","VERSION","MESSAGE_DIRECTION","WALLET_TYPE","SUBSCRIPTION_TYPES","METHODS","RPC_STATUS","ERRORS","broadcastFailed","invalidTransaction","rejectedByUser","connectionDeny","permissionDeny","internalError","notAuthorize","unsupportedProtocol","unsupportedNetwork","getBrowserAPI","chrome","browser","window","isInIframe","parent","sendMessage","connection","messageId","isNotificationOrResponse","msgData","jsonrpc","getHandler","debug","responseMessage","sendResponseMessage","isValidAccounts","icons","handlers","onMessage","onDisconnect","callbacks","addressSubscription","connect","origin","aepp","disconnect","currentAccount","isHasAccounts","current","connected","updateInfo","isSubscribed","hasAccessToAccount","isConnected","CONNECTED","NODE_BINDED","getCurrentAccount","forceConnectionClose","DISCONNECTED","setAccounts","forceNotification","updateAddress","updateSubscription","subscribe","unsubscribe","msgId","processResponse","transformResult","NOTIFICATIONS","rpcClient","onAddressChange","updateNetwork","onNetworkChange","closeConnection","disconnectWallet","RESPONSES","subscribeAddress","subscription","signedTransaction","transactionHash","REQUESTS","other","connectToWallet","walletBroadcast","isSubscribedAccount","connectNode","RpcClient","connectionInfo","walletInfo","sendConnectRequest","sendDisconnect","returnSigned","Oracle","registerOracle","getOracleObject","respondToQuery","extendOracleTtl","postQueryToOracle","getOracleByPubkey","getQueryObject","pollForQueryResponse","getOracleQueryByPubkeyAndQueryId","responseBuffer","String","pollForQueries","onQuery","knownQueryIds","checkNewQueries","queries","getOracleQueriesByPubkey","oracleQueries","add","stopped","pollQueries","postQuery","extendOracle","getQuery","q","decodedQuery","decodedResponse","respond","pollForResponse","AeppRpc","resolveOnAccount","callInstance","WAITING_FOR_CONNECTION_APPROVE","location","shareNode","getWalletInfo","CONNECTION_REJECTED","clientAccounts","getAccounts","onAcc","handleMessage","rpcClients","methodName","accept","deny","errorObjectOrHandler","AccountMultiple","_selectAccount","_addAccount","addAccount","_selectNode","condition","meta","removeRpcClient","addRpcClient","clientConnection","WAITING_FOR_CONNECTION_REQUEST","shareWalletInfo","postFn","readyToConnect","runtime","extension","WalletRpc","state","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","sequence","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","emit","enterState","nextState","enter","dequeueAction","changeStatus","newStatus","changeState","newState","enqueueAction","guard","action","locked","queue","ping","clearTimeout","details","close","initialize","connectionHandler","openHandler","channelOptions","EventEmitter","wsUrl","searchParams","ws","W3CWebSocket","onerror","onopen","reconnectTx","signed_tx","onclose","onmessage","callback","delete","messages","shift","dequeueMessage","channel_id","appendSignature","signFn","signedTx","handleUnexpectedMessage","wsMessage","channelOpen","awaitingConnection","channel_accept","funding_created","awaitingChannelCreateTx","awaitingOpenConfirmation","fsm_id","channelClosed","awaitingReconnection","initiator","responder","role","awaitingOnChainTx","awaitingBlockInclusion","own_funding_locked","funding_locked","awaitingInitialState","awaitingTxSignRequest","awaitingOffChainTx","updates","awaitingOffChainUpdate","accepted","errorCode","error_code","errorMessage","error_msg","awaitingUpdateConflict","to","awaitingShutdownTx","awaitingShutdownOnChainTx","awaitingLeave","awaitingWithdrawTx","awaitingWithdrawCompletion","onOnChainTx","own_withdraw_locked","onOwnWithdrawLocked","withdraw_locked","onWithdrawLocked","awaitingDepositTx","awaitingDepositCompletion","own_deposit_locked","onOwnDepositLocked","deposit_locked","onDepositLocked","awaitingNewContractTx","awaitingNewContractCompletion","round","awaitingCallContractUpdateTx","awaitingCallContractCompletion","awaitingCallContractForceProgressUpdate","awaitingForceProgressCompletion","awaitingCallsPruned","channels","closeTx","snakeToPascalObjKeys","Channel","existingFsmId","on","off","removeListener","channelStatus","channelState","channelFsmId","metadata","contracts","balances","leave","shutdown","recipient","doSend","onStatusChanged","withdraw","deposit","createContract","call_data","vm_version","abi_version","callContract","contract_id","callContractStatic","getContractCall","caller","caller_id","getContractState","pubkey","channelDisconnect","cleanContractCalls","forceProgress","gas_price","reconnect","txParams","pageConnection","extConnection","allowCrossOrigin","run","stop","getTarget","isExtensionContext","isWeb","target","self","sendDirection","receiveDirection","to_aepp","forceOrigin","selfP","targetP","subscribeFn","listener","addEventListener","unsubscribeFn","removeEventListener","postMessage","WalletConnection","BrowserWindowMessageConnection","wallets","scan","onDetected","wallet","isExtension","to_waellet","newWallet","stopScan","port","addListener","warning","hasListeners","hasListener","TxBuilderHelper"],"sourceRoot":""}
1
+ {"version":3,"file":"aepp-sdk.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;ACVA;AACA;AACA;;AAEA,aAAa,mBAAO,CAAC,IAAQ;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,QAAQ;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,QAAQ;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5WA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB,gBAAgB;AAClC;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnFA,aAAa,mBAAO,CAAC,IAAqC;;AAE1D;;;;;;;;ACFA,mBAAO,CAAC,IAAoC;AAC5C,mB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AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA,aAAa,mBAAO,CAAC,IAAQ;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA,EAAE,cAAc;AAChB;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA,aAAa,kCAA6B;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,uBAAuB,gBAAgB;AACvC;AACA;;AAEA,oBAAoB,eAAe;AACnC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,mBAAO,CAAC,IAAU;AACjC,WAAW,mBAAO,CAAC,IAAQ;AAC3B,aAAa,kCAA6B;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA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EAHG,CAAP;AAID;;AA4BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,MAAM2D,eAAN,CAAc;EAC3B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACyB,aAAV0zC,UAAU,CAAChrC,OAAD,EAA4C;IACjE,MAAMslB,OAAO,GAAG,IAAIhuB,eAAJ,EAAhB;IACA,MAAM0zC,UAAU,CACd1lB,OADc,EAEdtlB,OAAO,CAAC6vC,aAAR,IAAyB,IAAzB,GAAgC7C,oBAAhC,GAAgEA,kBAFlD,EAGdA,WAHc,EAIdhtC,OAJc,CAAhB;IAMA,OAAOslB,OAAP;EACD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE;;;EACAwqB,EAAE,CAAC7vB,SAAD,EAAoB2qB,QAApB,EAAmD;IACnD,MAAMmF,YAAY,GAAG1H,iBAAA,CAAkB,IAAlB,CAArB;IACA,IAAI0H,YAAY,IAAI,IAApB,EAA0B,MAAM,IAAIhjD,wBAAJ,EAAN;IAC1BgjD,YAAY,CAACD,EAAb,CAAgB7vB,SAAhB,EAA2B2qB,QAA3B;EACD;EAED;AACF;AACA;AACA;AACA;;;EACEoF,GAAG,CAAC/vB,SAAD,EAAoB2qB,QAApB,EAAmD;IACpD,MAAMmF,YAAY,GAAG1H,iBAAA,CAAkB,IAAlB,CAArB;IACA,IAAI0H,YAAY,IAAI,IAApB,EAA0B,MAAM,IAAIhjD,wBAAJ,EAAN;IAC1BgjD,YAAY,CAACE,cAAb,CAA4BhwB,SAA5B,EAAuC2qB,QAAvC;EACD;EAED;AACF;AACA;;;EACE/F,UAAU,GAAS;IACjB,OAAO4K,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,CAhBM,CAAP;EAiBD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACgB,MAAR+9B,QAAQ,CACZziD,MADY,EAEZgM,IAFY,EAKmD;IAAA,IAF/D;MAAEq0C,WAAF;MAAeE,mBAAf;MAAoCE;IAApC,CAE+D,uEADkB,EAClB;IAC/D,OAAO,IAAIl6C,OAAJ,CAAY,CAACC,OAAD,EAAUke,MAAV,KAAqB;MACtCu3B,aAAa,CACX,IADW,EAEX,CAACkC,QAAD,EAAW/D,KAAX,KAAqB,CAAAA,KAAK,SAAL,IAAAA,KAAK,WAAL,YAAAA,KAAK,CAAEvkB,OAAP,MAAmBqpB,WAF7B,EAGV1nB,OAAD,IAAa;QACX9L,aAAI,CAAC8L,OAAD,EAAU;UAAEqe,OAAO,EAAE,KAAX;UAAkBpc,MAAM,EAAE,mBAA1B;UAA+CxlB,MAAM,EAAE;YAAEjU;UAAF;QAAvD,CAAV,CAAJ;QACA,OAAO;UACL61B,OAAO,EAAEqpB,kBADJ;UAEL9E,KAAK,EAAE;YACLpuC,IADK;YAELxF,OAFK;YAGLke,MAHK;YAIL27B,WAJK;YAKLE,mBALK;YAMLE;UANK;QAFF,CAAP;MAWD,CAhBU,CAAb;IAkBD,CAnBM,CAAP;EAoBD;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACe,MAAPlqC,OAAO,CACXvW,MADW,EAEXgM,IAFW,EAK0C;IAAA,IAFrD;M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IACA,KAAK9S,IAAL,CAAUka,SAAV,CAAoBmI,WAApB,CAAgC,CAAC/pD,OAAD,EAAU0nC,IAAV,KAAmB;MACjD,KAAKmhB,cAAL,CAAoB7oD,OAApB;MACA4hD,SAAS,CAAC5hD,OAAD,EAAU0nC,IAAI,CAACznC,IAAf,EAAqBynC,IAArB,CAAT;IACD,CAHD;IAIA,KAAKA,IAAL,CAAU8S,YAAV,CAAuBuP,WAAvB,CAAmCvP,YAAnC;EACD;;EAEDM,WAAW,CAAC96C,OAAD,EAAqB;IAC9B,MAAM86C,WAAN,CAAkB96C,OAAlB;IACA,KAAK0nC,IAAL,CAAU4hB,WAAV,CAAsBtpD,OAAtB;EACD;;EAED69C,WAAW,GAAY;IACrB,OAAO,KAAKnW,IAAL,CAAUka,SAAV,CAAoBoI,YAApB,EAAP;EACD;;AAhCqE;;ACzBxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA","sources":["webpack://Ae/webpack/universalModuleDefinition","webpack://Ae/./node_modules/blakejs/blake2b.js","webpack://Ae/./node_modules/blakejs/util.js","webpack://Ae/./node_modules/core-js-pure/actual/object/define-property.js","webpack://Ae/./node_modules/core-js-pure/es/array/virtual/includes.js","webpack://Ae/./node_modules/core-js-pure/es/instance/includes.js","webpack://Ae/./node_modules/core-js-pure/es/object/define-property.js","webpack://Ae/./node_modules/core-js-pure/es/string/virtual/includes.js","webpack://Ae/./node_modules/core-js-pure/features/object/define-property.js","webpack://Ae/./node_modules/core-js-pure/full/object/define-property.js","webpack://Ae/./node_modules/core-js-pure/internals/a-callable.js","webpack://Ae/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://Ae/./node_modules/core-js-pure/internals/an-object.js","webpack://Ae/./node_modules/core-js-pure/internals/array-includes.js","webpack://Ae/./node_modules/core-js-pure/internals/classof-raw.js","webpack://Ae/./node_modules/core-js-pure/internals/classof.js","webpack://Ae/./node_modules/core-js-pure/internals/correct-is-regexp-logic.js","webpack://Ae/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://Ae/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://Ae/./node_modules/core-js-pure/internals/define-global-property.js","webpack://Ae/./node_modules/core-js-pure/internals/descriptors.js","webpack://Ae/./node_modules/core-js-pure/internals/document-create-element.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-user-agent.js","webpack://Ae/./node_modules/core-js-pure/internals/engine-v8-version.js","webpack://Ae/./node_modules/core-js-pure/internals/entry-virtual.js","webpack://Ae/./node_modules/core-js-pure/internals/export.js","webpack://Ae/./node_modules/core-js-pure/internals/fails.js","webpack://Ae/./node_modules/core-js-pure/internals/function-apply.js","webpack://Ae/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://Ae/./node_modules/core-js-pure/internals/function-bind-native.js","webpack://Ae/./node_modules/core-js-pure/internals/function-call.js","webpack://Ae/./node_modules/core-js-pure/internals/function-uncurry-this.js","webpack://Ae/./node_modules/core-js-pure/internals/get-built-in.js","webpack://Ae/./node_modules/core-js-pure/internals/get-method.js","webpack://Ae/./node_modules/core-js-pure/internals/global.js","webpack://Ae/./node_modules/core-js-pure/internals/has-own-property.js","webpack://Ae/./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://Ae/./node_modules/core-js-pure/internals/indexed-object.js","webpack://Ae/./node_modules/core-js-pure/internals/is-callable.js","webpack://Ae/./node_modules/core-js-pure/internals/is-forced.js","webpack://Ae/./node_modules/core-js-pure/internals/is-object.js","webpack://Ae/./node_modules/core-js-pure/internals/is-pure.js","webpack://Ae/./node_modules/core-js-pure/internals/is-regexp.js","webpack://Ae/./node_modules/core-js-pure/internals/is-symbol.js","webpack://Ae/./node_modules/core-js-pure/internals/length-of-array-like.js","webpack://Ae/./node_modules/core-js-pure/internals/math-trunc.js","webpack://Ae/./node_modules/core-js-pure/internals/native-symbol.js","webpack://Ae/./node_modules/core-js-pure/internals/not-a-regexp.js","webpack://Ae/./node_modules/core-js-pure/internals/object-define-property.js","webpack://Ae/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://Ae/./node_modules/core-js-pure/internals/object-is-prototype-of.js","webpack://Ae/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://Ae/./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack://Ae/./node_modules/core-js-pure/internals/path.js","webpack://Ae/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://Ae/./node_modules/core-js-pure/internals/shared-store.js","webpack://Ae/./node_modules/core-js-pure/internals/shared.js","webpack://Ae/./node_modules/core-js-pure/internals/to-absolute-index.js","webpack://Ae/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://Ae/./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack://Ae/./node_modules/core-js-pure/internals/to-length.js","webpack://Ae/./node_modules/core-js-pure/internals/to-object.js","webpack://Ae/./node_modules/core-js-pure/internals/to-primitive.js","webpack://Ae/./node_modules/core-js-pure/internals/to-property-key.js","webpack://Ae/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://Ae/./node_modules/core-js-pure/internals/to-string.js","webpack://Ae/./node_modules/core-js-pure/internals/try-to-string.js","webpack://Ae/./node_modules/core-js-pure/internals/uid.js","webpack://Ae/./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://Ae/./node_modules/core-js-pure/internals/v8-prototype-define-bug.js","webpack://Ae/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://Ae/./node_modules/core-js-pure/modules/es.array.includes.js","webpack://Ae/./node_modules/core-js-pure/modules/es.object.define-property.js","webpack://Ae/./node_modules/core-js-pure/modules/es.string.includes.js","webpack://Ae/./node_modules/core-js-pure/stable/instance/includes.js","webpack://Ae/./node_modules/core-js-pure/stable/object/define-property.js","webpack://Ae/./node_modules/inherits/inherits.js","webpack://Ae/./node_modules/inherits/inherits_browser.js","webpack://Ae/./node_modules/safe-buffer/index.js","webpack://Ae/./node_modules/sha.js/hash.js","webpack://Ae/./node_modules/sha.js/sha256.js","webpack://Ae/external node-commonjs \"util\"","webpack://Ae/external umd \"@aeternity/aepp-calldata\"","webpack://Ae/external umd \"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"","webpack://Ae/external umd \"@aeternity/uuid\"","webpack://Ae/external umd \"@azure/core-client\"","webpack://Ae/external umd \"@azure/core-rest-pipeline\"","webpack://Ae/external umd \"aes-js\"","webpack://Ae/external umd \"bignumber.js\"","webpack://Ae/external umd \"bip32-path\"","webpack://Ae/external umd \"bs58\"","webpack://Ae/external umd \"buffer\"","webpack://Ae/external umd \"events\"","webpack://Ae/external umd \"json-bigint\"","webpack://Ae/external umd \"rlp\"","webpack://Ae/external umd \"tweetnacl\"","webpack://Ae/external umd \"tweetnacl-auth\"","webpack://Ae/external umd \"varuint-bitcoin\"","webpack://Ae/external umd \"websocket\"","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/classApplyDescriptorGet.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/classApplyDescriptorSet.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/classExtractFieldDescriptor.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/classPrivateFieldGet.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/classPrivateFieldSet.js","webpack://Ae/./node_modules/@babel/runtime-corejs3/helpers/defineProperty.js","webpack://Ae/webpack/bootstrap","webpack://Ae/webpack/runtime/compat get default export","webpack://Ae/webpack/runtime/define property getters","webpack://Ae/webpack/runtime/hasOwnProperty shorthand","webpack://Ae/webpack/runtime/make namespace object","webpack://Ae/./src/utils/bignumber.ts","webpack://Ae/./src/utils/errors.ts","webpack://Ae/./src/utils/amount-formatter.ts","webpack://Ae/./src/utils/string.ts","webpack://Ae/./src/utils/bytes.ts","webpack://Ae/./src/utils/other.ts","webpack://Ae/./src/utils/encoder-types.ts","webpack://Ae/./src/utils/encoder.ts","webpack://Ae/./src/utils/crypto.ts","webpack://Ae/./src/tx/builder/constants.ts","webpack://Ae/./src/tx/builder/address.ts","webpack://Ae/./src/tx/builder/helpers.ts","webpack://Ae/./src/tx/builder/field-types/u-int.ts","webpack://Ae/./src/tx/builder/field-types/short-u-int.ts","webpack://Ae/./src/tx/builder/field-types/coin-amount.ts","webpack://Ae/./src/tx/builder/field-types/deposit.ts","webpack://Ae/./src/tx/builder/field-types/fee.ts","webpack://Ae/./src/tx/builder/field-types/gas-limit.ts","webpack://Ae/./src/tx/builder/field-types/gas-price.ts","webpack://Ae/./src/tx/builder/field-types/field.ts","webpack://Ae/./src/tx/builder/field-types/name.ts","webpack://Ae/./src/tx/builder/field-types/name-fee.ts","webpack://Ae/./src/tx/builder/field-types/name-id.ts","webpack://Ae/./src/tx/builder/field-types/index.ts","webpack://Ae/./src/tx/builder/schema.ts","webpack://Ae/./src/utils/mptree.ts","webpack://Ae/./src/tx/builder/index.ts","webpack://Ae/./src/tx/validator.ts","webpack://Ae/./src/chain.ts","webpack://Ae/./src/utils/keystore.ts","webpack://Ae/./src/tx/index.ts","webpack://Ae/./src/utils/hd-wallet.ts","webpack://Ae/./src/spend.ts","webpack://Ae/./src/aens.ts","webpack://Ae/./src/contract/aci.ts","webpack://Ae/./src/contract/methods.ts","webpack://Ae/./src/oracle.ts","webpack://Ae/./src/contract/ga.ts","webpack://Ae/./src/deprecated/methods.ts","webpack://Ae/./src/deprecated/index.ts","webpack://Ae/./src/utils/semver-satisfies.ts","webpack://Ae/./src/utils/autorest.ts","webpack://Ae/./src/apis/node/models/mappers.ts","webpack://Ae/./src/apis/node/models/parameters.ts","webpack://Ae/./src/apis/node/node.ts","webpack://Ae/./src/Node.ts","webpack://Ae/./src/account/Base.ts","webpack://Ae/./src/account/Memory.ts","webpack://Ae/./src/apis/compiler/models/mappers.ts","webpack://Ae/./src/apis/compiler/models/parameters.ts","webpack://Ae/./src/apis/compiler/compiler.ts","webpack://Ae/./src/contract/Compiler.ts","webpack://Ae/./src/AeSdkBase.ts","webpack://Ae/./src/AeSdk.ts","webpack://Ae/./src/aepp-wallet-communication/schema.ts","webpack://Ae/./src/account/Rpc.ts","webpack://Ae/./src/aepp-wallet-communication/rpc/types.ts","webpack://Ae/./src/aepp-wallet-communication/rpc/RpcClient.ts","webpack://Ae/./src/AeSdkAepp.ts","webpack://Ae/./src/utils/json-big.ts","webpack://Ae/./src/AeSdkWallet.ts","webpack://Ae/./src/channel/internal.ts","webpack://Ae/./src/channel/handlers.ts","webpack://Ae/./src/channel/index.ts","webpack://Ae/./src/aepp-wallet-communication/connection-proxy.ts","webpack://Ae/./src/aepp-wallet-communication/connection/Browser.ts","webpack://Ae/./src/aepp-wallet-communication/connection/BrowserWindowMessage.ts","webpack://Ae/./src/aepp-wallet-communication/wallet-detector.ts","webpack://Ae/./src/aepp-wallet-communication/connection/BrowserRuntime.ts","webpack://Ae/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"bignumber.js\"), require(\"rlp\"), require(\"bs58\"), require(\"buffer\"), require(\"tweetnacl\"), require(\"varuint-bitcoin\"), require(\"@aeternity/uuid\"), require(\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"), require(\"aes-js\"), require(\"@aeternity/aepp-calldata\"), require(\"@azure/core-client\"), require(\"@azure/core-rest-pipeline\"), require(\"json-bigint\"), require(\"websocket\"), require(\"events\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"bignumber.js\", \"rlp\", \"bs58\", \"buffer\", \"tweetnacl\", \"varuint-bitcoin\", \"@aeternity/uuid\", \"@aeternity/argon2-browser/dist/argon2-bundled.min.js\", \"tweetnacl-auth\", \"bip32-path\", \"aes-js\", \"@aeternity/aepp-calldata\", \"@azure/core-client\", \"@azure/core-rest-pipeline\", \"json-bigint\", \"websocket\", \"events\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Ae\"] = factory(require(\"bignumber.js\"), require(\"rlp\"), require(\"bs58\"), require(\"buffer\"), require(\"tweetnacl\"), require(\"varuint-bitcoin\"), require(\"@aeternity/uuid\"), require(\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"), require(\"tweetnacl-auth\"), require(\"bip32-path\"), require(\"aes-js\"), require(\"@aeternity/aepp-calldata\"), require(\"@azure/core-client\"), require(\"@azure/core-rest-pipeline\"), require(\"json-bigint\"), require(\"websocket\"), require(\"events\"));\n\telse\n\t\troot[\"Ae\"] = factory(root[\"bignumber.js\"], root[\"rlp\"], root[\"bs58\"], root[\"buffer\"], root[\"tweetnacl\"], root[\"varuint-bitcoin\"], root[\"@aeternity/uuid\"], root[\"@aeternity/argon2-browser/dist/argon2-bundled.min.js\"], root[\"tweetnacl-auth\"], root[\"bip32-path\"], root[\"aes-js\"], root[\"@aeternity/aepp-calldata\"], root[\"@azure/core-client\"], root[\"@azure/core-rest-pipeline\"], root[\"json-bigint\"], root[\"websocket\"], root[\"events\"]);\n})(global, (__WEBPACK_EXTERNAL_MODULE__5192__, __WEBPACK_EXTERNAL_MODULE__3485__, __WEBPACK_EXTERNAL_MODULE__3783__, __WEBPACK_EXTERNAL_MODULE__9408__, __WEBPACK_EXTERNAL_MODULE__79__, __WEBPACK_EXTERNAL_MODULE__7480__, __WEBPACK_EXTERNAL_MODULE__3983__, __WEBPACK_EXTERNAL_MODULE__7289__, __WEBPACK_EXTERNAL_MODULE__9882__, __WEBPACK_EXTERNAL_MODULE__1986__, __WEBPACK_EXTERNAL_MODULE__8236__, __WEBPACK_EXTERNAL_MODULE__7946__, __WEBPACK_EXTERNAL_MODULE__4711__, __WEBPACK_EXTERNAL_MODULE__5039__, __WEBPACK_EXTERNAL_MODULE__2716__, __WEBPACK_EXTERNAL_MODULE__8079__, __WEBPACK_EXTERNAL_MODULE__3735__) => {\nreturn ","// Blake2B in pure Javascript\n// Adapted from the reference implementation in RFC7693\n// Ported to Javascript by DC - https://github.com/dcposch\n\nconst util = require('./util')\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += v[b,b+1]\n// v should be a Uint32Array\nfunction ADD64AA (v, a, b) {\n const o0 = v[a] + v[b]\n let o1 = v[a + 1] + v[b + 1]\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// 64-bit unsigned addition\n// Sets v[a,a+1] += b\n// b0 is the low 32 bits of b, b1 represents the high 32 bits\nfunction ADD64AC (v, a, b0, b1) {\n let o0 = v[a] + b0\n if (b0 < 0) {\n o0 += 0x100000000\n }\n let o1 = v[a + 1] + b1\n if (o0 >= 0x100000000) {\n o1++\n }\n v[a] = o0\n v[a + 1] = o1\n}\n\n// Little-endian byte access\nfunction B2B_GET32 (arr, i) {\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24)\n}\n\n// G Mixing function\n// The ROTRs are inlined for speed\nfunction B2B_G (a, b, c, d, ix, iy) {\n const x0 = m[ix]\n const x1 = m[ix + 1]\n const y0 = m[iy]\n const y1 = m[iy + 1]\n\n ADD64AA(v, a, b) // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\n ADD64AC(v, a, x0, x1) // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\n let xor0 = v[d] ^ v[a]\n let xor1 = v[d + 1] ^ v[a + 1]\n v[d] = xor1\n v[d + 1] = xor0\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor0 >>> 24) ^ (xor1 << 8)\n v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8)\n\n ADD64AA(v, a, b)\n ADD64AC(v, a, y0, y1)\n\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\n xor0 = v[d] ^ v[a]\n xor1 = v[d + 1] ^ v[a + 1]\n v[d] = (xor0 >>> 16) ^ (xor1 << 16)\n v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16)\n\n ADD64AA(v, c, d)\n\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\n xor0 = v[b] ^ v[c]\n xor1 = v[b + 1] ^ v[c + 1]\n v[b] = (xor1 >>> 31) ^ (xor0 << 1)\n v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1)\n}\n\n// Initialization Vector\nconst BLAKE2B_IV32 = new Uint32Array([\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372,\n 0x5f1d36f1, 0xa54ff53a, 0xade682d1, 0x510e527f, 0x2b3e6c1f, 0x9b05688c,\n 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19\n])\n\nconst SIGMA8 = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13,\n 6, 1, 12, 0, 2, 11, 7, 5, 3, 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1,\n 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5, 7, 2, 4,\n 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5,\n 15, 14, 1, 9, 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, 13, 11, 7,\n 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11, 3, 0, 8, 12, 2,\n 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, 0,\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6,\n 1, 12, 0, 2, 11, 7, 5, 3\n]\n\n// These are offsets into a uint64 buffer.\n// Multiply them all by 2 to make them offsets into a uint32 buffer,\n// because this is Javascript and we don't have uint64s\nconst SIGMA82 = new Uint8Array(\n SIGMA8.map(function (x) {\n return x * 2\n })\n)\n\n// Compression function. 'last' flag indicates last block.\n// Note we're representing 16 uint64s as 32 uint32s\nconst v = new Uint32Array(32)\nconst m = new Uint32Array(32)\nfunction blake2bCompress (ctx, last) {\n let i = 0\n\n // init work variables\n for (i = 0; i < 16; i++) {\n v[i] = ctx.h[i]\n v[i + 16] = BLAKE2B_IV32[i]\n }\n\n // low 64 bits of offset\n v[24] = v[24] ^ ctx.t\n v[25] = v[25] ^ (ctx.t / 0x100000000)\n // high 64 bits not supported, offset may not be higher than 2**53-1\n\n // last block flag set ?\n if (last) {\n v[28] = ~v[28]\n v[29] = ~v[29]\n }\n\n // get little-endian words\n for (i = 0; i < 32; i++) {\n m[i] = B2B_GET32(ctx.b, 4 * i)\n }\n\n // twelve rounds of mixing\n // uncomment the DebugPrint calls to log the computation\n // and match the RFC sample documentation\n // util.debugPrint(' m[16]', m, 64)\n for (i = 0; i < 12; i++) {\n // util.debugPrint(' (i=' + (i < 10 ? ' ' : '') + i + ') v[16]', v, 64)\n B2B_G(0, 8, 16, 24, SIGMA82[i * 16 + 0], SIGMA82[i * 16 + 1])\n B2B_G(2, 10, 18, 26, SIGMA82[i * 16 + 2], SIGMA82[i * 16 + 3])\n B2B_G(4, 12, 20, 28, SIGMA82[i * 16 + 4], SIGMA82[i * 16 + 5])\n B2B_G(6, 14, 22, 30, SIGMA82[i * 16 + 6], SIGMA82[i * 16 + 7])\n B2B_G(0, 10, 20, 30, SIGMA82[i * 16 + 8], SIGMA82[i * 16 + 9])\n B2B_G(2, 12, 22, 24, SIGMA82[i * 16 + 10], SIGMA82[i * 16 + 11])\n B2B_G(4, 14, 16, 26, SIGMA82[i * 16 + 12], SIGMA82[i * 16 + 13])\n B2B_G(6, 8, 18, 28, SIGMA82[i * 16 + 14], SIGMA82[i * 16 + 15])\n }\n // util.debugPrint(' (i=12) v[16]', v, 64)\n\n for (i = 0; i < 16; i++) {\n ctx.h[i] = ctx.h[i] ^ v[i] ^ v[i + 16]\n }\n // util.debugPrint('h[8]', ctx.h, 64)\n}\n\n// reusable parameterBlock\nconst parameterBlock = new Uint8Array([\n 0,\n 0,\n 0,\n 0, // 0: outlen, keylen, fanout, depth\n 0,\n 0,\n 0,\n 0, // 4: leaf length, sequential mode\n 0,\n 0,\n 0,\n 0, // 8: node offset\n 0,\n 0,\n 0,\n 0, // 12: node offset\n 0,\n 0,\n 0,\n 0, // 16: node depth, inner length, rfu\n 0,\n 0,\n 0,\n 0, // 20: rfu\n 0,\n 0,\n 0,\n 0, // 24: rfu\n 0,\n 0,\n 0,\n 0, // 28: rfu\n 0,\n 0,\n 0,\n 0, // 32: salt\n 0,\n 0,\n 0,\n 0, // 36: salt\n 0,\n 0,\n 0,\n 0, // 40: salt\n 0,\n 0,\n 0,\n 0, // 44: salt\n 0,\n 0,\n 0,\n 0, // 48: personal\n 0,\n 0,\n 0,\n 0, // 52: personal\n 0,\n 0,\n 0,\n 0, // 56: personal\n 0,\n 0,\n 0,\n 0 // 60: personal\n])\n\n// Creates a BLAKE2b hashing context\n// Requires an output length between 1 and 64 bytes\n// Takes an optional Uint8Array key\n// Takes an optinal Uint8Array salt\n// Takes an optinal Uint8Array personal\nfunction blake2bInit (outlen, key, salt, personal) {\n if (outlen === 0 || outlen > 64) {\n throw new Error('Illegal output length, expected 0 < length <= 64')\n }\n if (key && key.length > 64) {\n throw new Error('Illegal key, expected Uint8Array with 0 < length <= 64')\n }\n if (salt && salt.length !== 16) {\n throw new Error('Illegal salt, expected Uint8Array with length is 16')\n }\n if (personal && personal.length !== 16) {\n throw new Error('Illegal personal, expected Uint8Array with length is 16')\n }\n\n // state, 'param block'\n const ctx = {\n b: new Uint8Array(128),\n h: new Uint32Array(16),\n t: 0, // input count\n c: 0, // pointer within buffer\n outlen: outlen // output length in bytes\n }\n\n // initialize parameterBlock before usage\n parameterBlock.fill(0)\n parameterBlock[0] = outlen\n if (key) parameterBlock[1] = key.length\n parameterBlock[2] = 1 // fanout\n parameterBlock[3] = 1 // depth\n if (salt) parameterBlock.set(salt, 32)\n if (personal) parameterBlock.set(personal, 48)\n\n // initialize hash state\n for (let i = 0; i < 16; i++) {\n ctx.h[i] = BLAKE2B_IV32[i] ^ B2B_GET32(parameterBlock, i * 4)\n }\n\n // key the hash, if applicable\n if (key) {\n blake2bUpdate(ctx, key)\n // at the end\n ctx.c = 128\n }\n\n return ctx\n}\n\n// Updates a BLAKE2b streaming hash\n// Requires hash context and Uint8Array (byte array)\nfunction blake2bUpdate (ctx, input) {\n for (let i = 0; i < input.length; i++) {\n if (ctx.c === 128) {\n // buffer full ?\n ctx.t += ctx.c // add counters\n blake2bCompress(ctx, false) // compress (not last)\n ctx.c = 0 // counter to zero\n }\n ctx.b[ctx.c++] = input[i]\n }\n}\n\n// Completes a BLAKE2b streaming hash\n// Returns a Uint8Array containing the message digest\nfunction blake2bFinal (ctx) {\n ctx.t += ctx.c // mark last block offset\n\n while (ctx.c < 128) {\n // fill up with zeros\n ctx.b[ctx.c++] = 0\n }\n blake2bCompress(ctx, true) // final block flag = 1\n\n // little endian convert and store\n const out = new Uint8Array(ctx.outlen)\n for (let i = 0; i < ctx.outlen; i++) {\n out[i] = ctx.h[i >> 2] >> (8 * (i & 3))\n }\n return out\n}\n\n// Computes the BLAKE2B hash of a string or byte array, and returns a Uint8Array\n//\n// Returns a n-byte Uint8Array\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2b (input, key, outlen, salt, personal) {\n // preprocess inputs\n outlen = outlen || 64\n input = util.normalizeInput(input)\n if (salt) {\n salt = util.normalizeInput(salt)\n }\n if (personal) {\n personal = util.normalizeInput(personal)\n }\n\n // do the math\n const ctx = blake2bInit(outlen, key, salt, personal)\n blake2bUpdate(ctx, input)\n return blake2bFinal(ctx)\n}\n\n// Computes the BLAKE2B hash of a string or byte array\n//\n// Returns an n-byte hash in hex, all lowercase\n//\n// Parameters:\n// - input - the input bytes, as a string, Buffer, or Uint8Array\n// - key - optional key Uint8Array, up to 64 bytes\n// - outlen - optional output length in bytes, default 64\n// - salt - optional salt bytes, string, Buffer or Uint8Array\n// - personal - optional personal bytes, string, Buffer or Uint8Array\nfunction blake2bHex (input, key, outlen, salt, personal) {\n const output = blake2b(input, key, outlen, salt, personal)\n return util.toHex(output)\n}\n\nmodule.exports = {\n blake2b: blake2b,\n blake2bHex: blake2bHex,\n blake2bInit: blake2bInit,\n blake2bUpdate: blake2bUpdate,\n blake2bFinal: blake2bFinal\n}\n","const ERROR_MSG_INPUT = 'Input must be an string, Buffer or Uint8Array'\n\n// For convenience, let people hash a string, not just a Uint8Array\nfunction normalizeInput (input) {\n let ret\n if (input instanceof Uint8Array) {\n ret = input\n } else if (typeof input === 'string') {\n const encoder = new TextEncoder()\n ret = encoder.encode(input)\n } else {\n throw new Error(ERROR_MSG_INPUT)\n }\n return ret\n}\n\n// Converts a Uint8Array to a hexadecimal string\n// For example, toHex([255, 0, 255]) returns \"ff00ff\"\nfunction toHex (bytes) {\n return Array.prototype.map\n .call(bytes, function (n) {\n return (n < 16 ? '0' : '') + n.toString(16)\n })\n .join('')\n}\n\n// Converts any value in [0...2^32-1] to an 8-character hex string\nfunction uint32ToHex (val) {\n return (0x100000000 + val).toString(16).substring(1)\n}\n\n// For debugging: prints out hash state in the same format as the RFC\n// sample computation exactly, so that you can diff\nfunction debugPrint (label, arr, size) {\n let msg = '\\n' + label + ' = '\n for (let i = 0; i < arr.length; i += 2) {\n if (size === 32) {\n msg += uint32ToHex(arr[i]).toUpperCase()\n msg += ' '\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n } else if (size === 64) {\n msg += uint32ToHex(arr[i + 1]).toUpperCase()\n msg += uint32ToHex(arr[i]).toUpperCase()\n } else throw new Error('Invalid size ' + size)\n if (i % 6 === 4) {\n msg += '\\n' + new Array(label.length + 4).join(' ')\n } else if (i < arr.length - 2) {\n msg += ' '\n }\n }\n console.log(msg)\n}\n\n// For performance testing: generates N bytes of input, hashes M times\n// Measures and prints MB/second hash performance each time\nfunction testSpeed (hashFn, N, M) {\n let startMs = new Date().getTime()\n\n const input = new Uint8Array(N)\n for (let i = 0; i < N; i++) {\n input[i] = i % 256\n }\n const genMs = new Date().getTime()\n console.log('Generated random input in ' + (genMs - startMs) + 'ms')\n startMs = genMs\n\n for (let i = 0; i < M; i++) {\n const hashHex = hashFn(input)\n const hashMs = new Date().getTime()\n const ms = hashMs - startMs\n startMs = hashMs\n console.log('Hashed in ' + ms + 'ms: ' + hashHex.substring(0, 20) + '...')\n console.log(\n Math.round((N / (1 << 20) / (ms / 1000)) * 100) / 100 + ' MB PER SECOND'\n )\n }\n}\n\nmodule.exports = {\n normalizeInput: normalizeInput,\n toHex: toHex,\n debugPrint: debugPrint,\n testSpeed: testSpeed\n}\n","var parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n","require('../../../modules/es.array.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('Array').includes;\n","var isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar arrayMethod = require('../array/virtual/includes');\nvar stringMethod = require('../string/virtual/includes');\n\nvar ArrayPrototype = Array.prototype;\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.includes;\n if (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.includes)) return arrayMethod;\n if (typeof it == 'string' || it === StringPrototype || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.includes)) {\n return stringMethod;\n } return own;\n};\n","require('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) defineProperty.sham = true;\n","require('../../../modules/es.string.includes');\nvar entryVirtual = require('../../../internals/entry-virtual');\n\nmodule.exports = entryVirtual('String').includes;\n","module.exports = require('../../full/object/define-property');\n","var parent = require('../../actual/object/define-property');\n\nmodule.exports = parent;\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","module.exports = function () { /* empty */ };\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","var path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR) {\n return path[CONSTRUCTOR + 'Prototype'];\n};\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind timers to global for call from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changs in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && !targetPrototype[key]) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es-x/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es-x/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es-x/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es-x/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = true;\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es-x/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es-x/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = {};\n","var $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.24.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.24.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es-x/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es-x/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es-x/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","var parent = require('../../es/instance/includes');\n\nmodule.exports = parent;\n","var parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","var Buffer = require('safe-buffer').Buffer\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n","/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits')\nvar Hash = require('./hash')\nvar Buffer = require('safe-buffer').Buffer\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n","module.exports = require(\"util\");","module.exports = __WEBPACK_EXTERNAL_MODULE__7946__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7289__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3983__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4711__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5039__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8236__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5192__;","module.exports = __WEBPACK_EXTERNAL_MODULE__1986__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3783__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9408__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3735__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2716__;","module.exports = __WEBPACK_EXTERNAL_MODULE__3485__;","module.exports = __WEBPACK_EXTERNAL_MODULE__79__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9882__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7480__;","module.exports = __WEBPACK_EXTERNAL_MODULE__8079__;","module.exports = require(\"core-js-pure/stable/instance/includes\");","module.exports = require(\"core-js-pure/features/object/define-property\");","function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n}\n\nmodule.exports = _classApplyDescriptorGet, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n descriptor.value = value;\n }\n}\n\nmodule.exports = _classApplyDescriptorSet, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\n\nmodule.exports = _classExtractFieldDescriptor, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var classApplyDescriptorGet = require(\"./classApplyDescriptorGet.js\");\n\nvar classExtractFieldDescriptor = require(\"./classExtractFieldDescriptor.js\");\n\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}\n\nmodule.exports = _classPrivateFieldGet, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var classApplyDescriptorSet = require(\"./classApplyDescriptorSet.js\");\n\nvar classExtractFieldDescriptor = require(\"./classExtractFieldDescriptor.js\");\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}\n\nmodule.exports = _classPrivateFieldSet, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _Object$defineProperty = require(\"@babel/runtime-corejs3/core-js/object/define-property\");\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Big Number Helpers\n */\nimport BigNumber from 'bignumber.js';\n\n/**\n * Check if value is BigNumber, Number, BigInt or number string representation\n * @param number - number to check\n */\nexport const isBigNumber = (number: string | number | bigint | BigNumber): boolean => {\n if (typeof number === 'bigint') return true;\n return ['number', 'object', 'string'].includes(typeof number)\n // eslint-disable-next-line no-restricted-globals\n && (!isNaN(number as number) || Number.isInteger(number) || BigNumber.isBigNumber(number));\n};\n\n/**\n * BigNumber ceil operation\n */\nexport const ceil = (bigNumber: BigNumber): BigNumber => bigNumber\n .integerValue(BigNumber.ROUND_CEIL);\n","// eslint-disable-next-line max-classes-per-file\nimport BigNumber from 'bignumber.js';\n\n/**\n * aepp-sdk originated error\n * @category exception\n */\nexport abstract class BaseError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'BaseError';\n }\n}\n\n/**\n * @category exception\n */\nexport class AccountError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'AccountError';\n }\n}\n\n/**\n * @category exception\n */\nexport class AensError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'AensError';\n }\n}\n\n/**\n * @category exception\n */\nexport class AeppError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'AeppError';\n }\n}\n\n/**\n * @category exception\n */\nexport class ChannelError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'ChannelError';\n }\n}\n\n/**\n * @category exception\n */\nexport class CompilerError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'CompilerError';\n }\n}\n\n/**\n * @category exception\n */\nexport class ContractError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'ContractError';\n }\n}\n\n/**\n * @category exception\n */\nexport class CryptographyError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'CryptographyError';\n }\n}\n\n/**\n * @category exception\n */\nexport class NodeError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'NodeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class TransactionError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'TransactionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class WalletError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'WalletError';\n }\n}\n\n/**\n * @category exception\n */\nexport class ArgumentError extends BaseError {\n constructor(argumentName: string, requirement: string, argumentValue: any) {\n super(`${argumentName} should be ${requirement}, got ${String(argumentValue)} instead`);\n this.name = 'ArgumentError';\n }\n}\n\n/**\n * @category exception\n */\nexport class IllegalArgumentError extends CryptographyError {\n constructor(message: string) {\n super(message);\n this.name = 'IllegalArgumentError';\n }\n}\n\n/**\n * @category exception\n */\nexport class ArgumentCountMismatchError extends BaseError {\n constructor(functionName: string, requiredCount: number, providedCount: number) {\n super(`${functionName} expects ${requiredCount} arguments, got ${providedCount} instead`);\n this.name = 'ArgumentCountMismatchError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InsufficientBalanceError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'InsufficientBalanceError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MissingParamError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'MissingParamError';\n }\n}\n\n/**\n * @category exception\n */\nexport class NoSerializerFoundError extends BaseError {\n constructor() {\n super('Byte serialization not supported');\n this.name = 'NoSerializerFoundError';\n }\n}\n\n/**\n * @category exception\n */\nexport class RequestTimedOutError extends BaseError {\n constructor(height: number) {\n super(`Giving up at height ${height}`);\n this.name = 'RequestTimedOutError';\n }\n}\n\n/**\n * @category exception\n */\nexport class TxTimedOutError extends BaseError {\n constructor(blocks: number, th: string) {\n super([\n `Giving up after ${blocks} blocks mined`,\n `transaction hash: ${th}`,\n ].join(', '));\n this.name = 'TxTimedOutError';\n }\n}\n\n/**\n * @category exception\n */\nexport class TypeError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'TypeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnsupportedPlatformError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'UnsupportedPlatformError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnsupportedProtocolError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'UnsupportedProtocolError';\n }\n}\n\n/**\n * @category exception\n */\nexport class NotImplementedError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'NotImplementedError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnsupportedVersionError extends BaseError {\n constructor(dependency: string, version: string, geVersion: string, ltVersion: string) {\n super(`Unsupported ${dependency} version ${version}. Supported: >= ${geVersion} < ${ltVersion}`);\n this.name = 'UnsupportedVersionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InternalError extends BaseError {\n constructor(message: string) {\n super(message);\n this.name = 'InternalError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnexpectedTsError extends InternalError {\n constructor(message = 'Expected to not happen, required for TS') {\n super(message);\n this.name = 'UnexpectedTsError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidKeypairError extends AccountError {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidKeypairError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnavailableAccountError extends AccountError {\n constructor(address: string) {\n super(`Account for ${address} not available`);\n this.name = 'UnavailableAccountError';\n }\n}\n\n/**\n * @category exception\n */\nexport class AensPointerContextError extends AensError {\n constructor(nameOrId: string, prefix: string) {\n super(`Name ${nameOrId} don't have pointers for ${prefix}`);\n this.name = 'AensPointerContextError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InsufficientNameFeeError extends AensError {\n constructor(nameFee: BigNumber, minNameFee: BigNumber) {\n super(`the provided fee ${nameFee.toString()} is not enough to execute the claim, required: ${minNameFee.toString()}`);\n this.name = 'InsufficientNameFeeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidAensNameError extends AensError {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidAensNameError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidRpcMessageError extends AeppError {\n constructor(message: string) {\n super(`Received invalid message: ${message}`);\n this.name = 'InvalidRpcMessageError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MissingCallbackError extends AeppError {\n constructor(id: number) {\n super(`Can't find callback for this messageId ${id}`);\n this.name = 'MissingCallbackError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnAuthorizedAccountError extends AeppError {\n constructor(onAccount: string) {\n super(`You do not have access to account ${onAccount}`);\n this.name = 'UnAuthorizedAccountError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnknownRpcClientError extends AeppError {\n constructor(id: string) {\n super(`RpcClient with id ${id} do not exist`);\n this.name = 'UnknownRpcClientError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnsubscribedAccountError extends AeppError {\n constructor() {\n super('You are not subscribed for an account.');\n this.name = 'UnsubscribedAccountError';\n }\n}\n\n/**\n * @category exception\n */\nexport class ChannelCallError extends ChannelError {\n constructor(message: string) {\n super(message);\n this.name = 'ChannelCallError';\n }\n}\n\n/**\n * @category exception\n */\nexport class ChannelConnectionError extends ChannelError {\n constructor(message: string) {\n super(message);\n this.name = 'ChannelConnectionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class ChannelPingTimedOutError extends ChannelError {\n constructor() {\n super('Server pong timed out');\n this.name = 'ChannelPingTimedOutError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnexpectedChannelMessageError extends ChannelError {\n constructor(message: string) {\n super(message);\n this.name = 'UnexpectedChannelMessageError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnknownChannelStateError extends ChannelError {\n constructor() {\n super('State Channels FSM entered unknown state');\n this.name = 'UnknownChannelStateError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidAuthDataError extends CompilerError {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidAuthDataError';\n }\n}\n\n/**\n * @category exception\n */\nexport class BytecodeMismatchError extends ContractError {\n constructor(source: string) {\n super(`Contract ${source} do not correspond to the bytecode deployed on the chain`);\n this.name = 'BytecodeMismatchError';\n }\n}\n\n/**\n * @category exception\n */\nexport class DuplicateContractError extends ContractError {\n constructor() {\n super('Contract already deployed');\n this.name = 'DuplicateContractError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InactiveContractError extends ContractError {\n constructor(contractAddress: string) {\n super(`Contract with address ${contractAddress} not active`);\n this.name = 'InactiveContractError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidMethodInvocationError extends ContractError {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidMethodInvocationError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MissingContractAddressError extends ContractError {\n constructor(message: string) {\n super(message);\n this.name = 'MissingContractAddressError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MissingContractDefError extends ContractError {\n constructor() {\n super('Either ACI or source code is required');\n this.name = 'MissingContractDefError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MissingFunctionNameError extends ContractError {\n constructor() {\n super('Function name is required');\n this.name = 'MissingFunctionNameError';\n }\n}\n\n/**\n * @category exception\n */\nexport class NodeInvocationError extends ContractError {\n transaction: string;\n\n constructor(message: string, transaction: string) {\n super(`Invocation failed${message == null ? '' : `: \"${message}\"`}`);\n this.name = 'NodeInvocationError';\n this.transaction = transaction;\n }\n}\n\n/**\n * @category exception\n */\nexport class NoSuchContractFunctionError extends ContractError {\n constructor(name: string) {\n super(`Function ${name} doesn't exist in contract`);\n this.name = 'NoSuchContractFunctionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class NotPayableFunctionError extends ContractError {\n constructor(amount: string, fn: string) {\n super(\n `You try to pay \"${amount}\" to function \"${fn}\" which is not payable. `\n + 'Only payable function can accept coins',\n );\n this.name = 'NotPayableFunctionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MissingEventDefinitionError extends ContractError {\n constructor(eventNameHash: string, eventAddress: string) {\n super(\n `Can't find definition of ${eventNameHash} event emitted by ${eventAddress}`\n + ' (use omitUnknown option to ignore events like this)',\n );\n this.name = 'MissingEventDefinitionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class AmbiguousEventDefinitionError extends ContractError {\n constructor(eventAddress: string, matchedEvents: Array<[string, string]>) {\n super(\n `Found multiple definitions of \"${matchedEvents[0][1]}\" event emitted by ${eventAddress}`\n + ` in ${matchedEvents.map(([name]) => `\"${name}\"`).join(', ')} contracts`\n + ' (use contractAddressToName option to specify contract name corresponding to address)',\n );\n this.name = 'AmbiguousEventDefinitionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidChecksumError extends CryptographyError {\n constructor() {\n super('Invalid checksum');\n this.name = 'InvalidChecksumError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidPasswordError extends CryptographyError {\n constructor() {\n super('Invalid password or nonce');\n this.name = 'InvalidPasswordError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MerkleTreeHashMismatchError extends CryptographyError {\n constructor() {\n super('Node hash is not equal to provided one');\n this.name = 'MerkleTreeHashMismatchError';\n }\n}\n\n/**\n * @category exception\n */\nexport class MissingNodeInTreeError extends CryptographyError {\n constructor(message: string) {\n super(message);\n this.name = 'MissingNodeInTreeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnknownNodeLengthError extends CryptographyError {\n constructor(nodeLength: number) {\n super(`Unknown node length: ${nodeLength}`);\n this.name = 'UnknownNodeLengthError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnknownPathNibbleError extends CryptographyError {\n constructor(nibble: number) {\n super(`Unknown path nibble: ${nibble}`);\n this.name = 'UnknownPathNibbleError';\n }\n}\n\n/**\n * @category exception\n */\nexport class DuplicateNodeError extends NodeError {\n constructor(name: string) {\n super(`Node with name ${name} already exist`);\n this.name = 'DuplicateNodeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class NodeNotFoundError extends NodeError {\n constructor(message: string) {\n super(message);\n this.name = 'NodeNotFoundError';\n }\n}\n\n/**\n * @category exception\n */\nexport class DecodeError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'DecodeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class PayloadLengthError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'PayloadLengthError';\n }\n}\n\n/**\n * @category exception\n */\nexport class DryRunError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'DryRunError';\n }\n}\n\n/**\n * @category exception\n */\nexport class IllegalBidFeeError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'IllegalBidFeeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidSignatureError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidSignatureError';\n }\n}\n\n/**\n * @category exception\n */\nexport class InvalidTxParamsError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'InvalidTxParamsError';\n }\n}\n\n/**\n * @category exception\n */\nexport class PrefixNotFoundError extends TransactionError {\n constructor(tag: number) {\n super(`Prefix for id-tag ${tag} not found.`);\n this.name = 'PrefixNotFoundError';\n }\n}\n\n/**\n * @category exception\n */\nexport class SchemaNotFoundError extends TransactionError {\n constructor(schemaName: string, key: string, version: number) {\n super(`Transaction ${schemaName} not implemented for ${key} version ${version}`);\n this.name = 'SchemaNotFoundError';\n }\n}\n\n/**\n * @category exception\n */\nexport class TagNotFoundError extends TransactionError {\n constructor(prefix: string) {\n super(`Id tag for prefix ${prefix} not found.`);\n this.name = 'DecodeError';\n }\n}\n\n/**\n * @category exception\n */\nexport class TxNotInChainError extends TransactionError {\n constructor(txHash: string) {\n super(`Transaction ${txHash} is removed from chain`);\n this.name = 'TxNotInChainError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnknownTxError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'UnknownTxError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnsupportedABIversionError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'UnsupportedABIversionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class UnsupportedVMversionError extends TransactionError {\n constructor(message: string) {\n super(message);\n this.name = 'UnsupportedVMversionError';\n }\n}\n\n/**\n * @category exception\n */\nexport class AlreadyConnectedError extends WalletError {\n constructor(message: string) {\n super(message);\n this.name = 'AlreadyConnectedError';\n }\n}\n\n/**\n * @category exception\n */\nexport class NoWalletConnectedError extends WalletError {\n constructor(message: string) {\n super(message);\n this.name = 'NoWalletConnectedError';\n }\n}\n\n/**\n * @category exception\n */\nexport class RpcConnectionError extends WalletError {\n constructor(message: string) {\n super(message);\n this.name = 'RpcConnectionError';\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js';\nimport { isBigNumber } from './bignumber';\nimport { ArgumentError } from './errors';\n\nexport enum AE_AMOUNT_FORMATS {\n AE = 'ae',\n MILI_AE = 'miliAE',\n MICRO_AE = 'microAE',\n NANO_AE = 'nanoAE',\n PICO_AE = 'picoAE',\n FEMTO_AE = 'femtoAE',\n AETTOS = 'aettos',\n}\n\n/**\n * DENOMINATION_MAGNITUDE\n */\nconst DENOMINATION_MAGNITUDE = {\n [AE_AMOUNT_FORMATS.AE]: 0,\n [AE_AMOUNT_FORMATS.MILI_AE]: -3,\n [AE_AMOUNT_FORMATS.MICRO_AE]: -6,\n [AE_AMOUNT_FORMATS.NANO_AE]: -9,\n [AE_AMOUNT_FORMATS.PICO_AE]: -12,\n [AE_AMOUNT_FORMATS.FEMTO_AE]: -15,\n [AE_AMOUNT_FORMATS.AETTOS]: -18,\n} as const;\n\n/**\n * Convert amount from one to other denomination\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n * @param options.targetDenomination - target denomination,\n * can be ['ae', 'aettos']\n */\nexport const formatAmount = (\n value: string | number | bigint | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS, targetDenomination = AE_AMOUNT_FORMATS.AETTOS }:\n { denomination?: AE_AMOUNT_FORMATS; targetDenomination?: AE_AMOUNT_FORMATS },\n): string => {\n if (!isBigNumber(value)) throw new ArgumentError('value', 'a number', value);\n\n return new BigNumber(typeof value === 'bigint' ? value.toString() : value)\n .shiftedBy(DENOMINATION_MAGNITUDE[denomination] - DENOMINATION_MAGNITUDE[targetDenomination])\n .toFixed();\n};\n\n/**\n * Convert amount to AE\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAe = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AETTOS }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination, targetDenomination: AE_AMOUNT_FORMATS.AE });\n\n/**\n * Convert amount to aettos\n * @param value - amount to convert\n * @param options - options\n * @param options.denomination - denomination of amount, can be ['ae', 'aettos']\n */\nexport const toAettos = (\n value: string | number | BigNumber,\n { denomination = AE_AMOUNT_FORMATS.AE }: { denomination?: AE_AMOUNT_FORMATS } = {},\n): string => formatAmount(value, { denomination });\n\ninterface Prefix {\n name: string;\n magnitude: number;\n}\n\nconst prefixes: Prefix[] = [\n { name: 'exa', magnitude: 18 },\n { name: 'giga', magnitude: 9 },\n { name: '', magnitude: 0 },\n { name: 'pico', magnitude: -12 },\n];\n\nconst getNearestPrefix = (exponent: number): Prefix => prefixes.reduce((p, n) => (\n Math.abs(n.magnitude - exponent) < Math.abs(p.magnitude - exponent) ? n : p));\n\nconst getLowerBoundPrefix = (exponent: number): Prefix => prefixes\n .find((p) => p.magnitude <= exponent) ?? prefixes[prefixes.length - 1];\n\nexport default (rawValue: string | number | BigNumber): string => {\n const value: BigNumber = new BigNumber(rawValue);\n\n const exp = value.e ?? 0;\n const { name, magnitude } = (exp < 0 ? getNearestPrefix : getLowerBoundPrefix)(exp);\n const v = value\n .shiftedBy(-magnitude)\n .precision(9 + Math.min(exp - magnitude, 0))\n .toFixed();\n return `${v}${name !== '' ? ' ' : ''}${name}`;\n};\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Convert string from snake_case to PascalCase\n * @param s - String to convert\n * @returns Converted string\n */\nexport function snakeToPascal(s: string): string {\n return s.replace(/_./g, (match) => match[1].toUpperCase());\n}\n\n/**\n * Convert string from PascalCase to snake_case\n * @param s - String to convert\n * @returns Converted string\n */\nexport function pascalToSnake(s: string): string {\n return s.replace(/[A-Z]/g, (match) => `_${match.toLowerCase()}`);\n}\n\n/**\n * Check whether a string is valid hex.\n * @param str - String to validate.\n * @returns True if the string is valid hex, false otherwise.\n */\nexport function isHex(str: string): boolean {\n return str.length % 2 === 0 && /^[0-9a-f]+$/i.test(str);\n}\n\n/**\n * Check whether a string is valid base-64.\n * @param str - String to validate.\n * @returns True if the string is valid base-64, false otherwise.\n */\nexport function isBase64(str: string): boolean {\n if (str.length % 4 > 0 || /[^0-9a-z+/=]/i.test(str)) return false;\n const index = str.indexOf('=');\n return index === -1 || /={1,2}/.test(str.slice(index));\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js';\nimport { NoSerializerFoundError, TypeError } from './errors';\nimport { isBase64, isHex } from './string';\n\n/**\n * Convert bignumber to byte array\n * @param x - bignumber instance\n * @returns Buffer\n */\nexport function bigNumberToByteArray(x: BigNumber): Buffer {\n if (!x.isInteger()) throw new TypeError(`Unexpected not integer value: ${x.toFixed()}`);\n let hexString = x.toString(16);\n if (hexString.length % 2 === 1) hexString = `0${hexString}`;\n return Buffer.from(hexString, 'hex');\n}\n\n/**\n * Convert string, number, or BigNumber to byte array\n * @param val - value to convert\n * @param big - enables force conversion to BigNumber\n * @returns Buffer\n */\nexport function toBytes(val?: null | string | number | BigNumber, big = false): Buffer {\n // Encode a value to bytes.\n // If the value is an int it will be encoded as bytes big endian\n // Raises ValueError if the input is not an int or string\n\n if (val === undefined || val === null) return Buffer.from([]);\n if (Number.isInteger(val) || BigNumber.isBigNumber(val) || big) {\n if (!BigNumber.isBigNumber(val)) val = new BigNumber(val);\n return bigNumberToByteArray(val);\n }\n if (typeof val === 'string') {\n return Buffer.from(val);\n }\n throw new NoSerializerFoundError();\n}\n\n/**\n * Convert a string to a Buffer. If encoding is not specified, hex-encoding\n * will be used if the input is valid hex. If the input is valid base64 but\n * not valid hex, base64 will be used. Otherwise, utf8 will be used.\n * @param str - String to be converted.\n * @param enc - Encoding of the input string.\n * @returns Buffer containing the input data.\n */\nexport function str2buf(str: string, enc?: BufferEncoding): Buffer {\n return Buffer.from(\n str,\n enc ?? (isHex(str) ? 'hex' : undefined) ?? (isBase64(str) ? 'base64' : undefined),\n );\n}\n\nexport const bytesToHex = (b: Uint8Array): string => Buffer.from(b).toString('hex');\n\nexport const hexToBytes = (s: string): Uint8Array => Buffer.from(s, 'hex');\n","export const pause = async (duration: number): Promise<void> => new Promise((resolve) => {\n setTimeout(resolve, duration);\n});\n\nexport const mapObject = <InputV, OutputV>(\n object: { [k: string]: InputV },\n fn: (\n value: [string, InputV], index: number, array: Array<[string, InputV]>\n ) => [number | string, OutputV],\n): { [k: string]: OutputV } => Object.fromEntries(Object.entries(object).map(fn));\n\n// remove after dropping webpack4 support\nconst isWebpack4Buffer = (() => {\n try {\n Buffer.concat([Uint8Array.from([])]);\n return false;\n } catch (error) {\n return true;\n }\n})();\n\nexport const concatBuffers = isWebpack4Buffer\n ? (list: readonly Uint8Array[], totalLength?: number): Buffer => (\n Buffer.concat(list.map((el) => Buffer.from(el)), totalLength)\n )\n : Buffer.concat;\n\n/**\n * Object key type guard\n * @param key - Maybe object key\n * @param object - Object\n */\nexport function isKeyOfObject<T>(key: string | number | symbol, object: T): key is keyof T {\n return key in object;\n}\n\n/**\n * Array item type guard\n * @param item - Maybe array item\n * @param array - Array\n */\nexport function isItemOfArray<T>(item: any, array: readonly T[]): item is T {\n return array.includes(item);\n}\n","/**\n * @category transaction builder\n * @see {@link https://github.com/aeternity/protocol/blob/master/node/api/api_encoding.md}\n * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L205-L230}\n */\nexport enum Encoding {\n KeyBlockHash = 'kh',\n MicroBlockHash = 'mh',\n BlockPofHash = 'bf',\n BlockTxHash = 'bx',\n BlockStateHash = 'bs',\n Channel = 'ch',\n ContractAddress = 'ct',\n ContractBytearray = 'cb',\n ContractStoreKey = 'ck',\n ContractStoreValue = 'cv',\n Transaction = 'tx',\n TxHash = 'th',\n OracleAddress = 'ok',\n OracleQuery = 'ov',\n OracleQueryId = 'oq',\n OracleResponse = 'or',\n AccountAddress = 'ak',\n Signature = 'sg',\n Commitment = 'cm',\n PeerPubkey = 'pp',\n Name = 'nm',\n State = 'st',\n Poi = 'pi',\n StateTrees = 'ss',\n CallStateTree = 'cs',\n Bytearray = 'ba',\n}\n\nexport type KeyBlockHash = `${Encoding.KeyBlockHash}_${string}`;\nexport type MicroBlockHash = `${Encoding.MicroBlockHash}_${string}`;\nexport type BlockPofHash = `${Encoding.BlockPofHash}_${string}`;\nexport type BlockTxHash = `${Encoding.BlockTxHash}_${string}`;\nexport type BlockStateHash = `${Encoding.BlockStateHash}_${string}`;\nexport type Channel = `${Encoding.Channel}_${string}`;\nexport type ContractAddress = `${Encoding.ContractAddress}_${string}`;\nexport type ContractBytearray = `${Encoding.ContractBytearray}_${string}`;\nexport type ContractStoreKey = `${Encoding.ContractStoreKey}_${string}`;\nexport type ContractStoreValue = `${Encoding.ContractStoreValue}_${string}`;\nexport type Transaction = `${Encoding.Transaction}_${string}`;\nexport type TxHash = `${Encoding.TxHash}_${string}`;\nexport type OracleAddress = `${Encoding.OracleAddress}_${string}`;\nexport type OracleQuery = `${Encoding.OracleQuery}_${string}`;\nexport type OracleQueryId = `${Encoding.OracleQueryId}_${string}`;\nexport type OracleResponse = `${Encoding.OracleResponse}_${string}`;\nexport type AccountAddress = `${Encoding.AccountAddress}_${string}`;\nexport type Signature = `${Encoding.Signature}_${string}`;\nexport type Commitment = `${Encoding.Commitment}_${string}`;\nexport type PeerPubkey = `${Encoding.PeerPubkey}_${string}`;\nexport type Name = `${Encoding.Name}_${string}`;\nexport type State = `${Encoding.State}_${string}`;\nexport type Poi = `${Encoding.Poi}_${string}`;\nexport type StateTrees = `${Encoding.StateTrees}_${string}`;\nexport type CallStateTree = `${Encoding.CallStateTree}_${string}`;\nexport type Bytearray = `${Encoding.Bytearray}_${string}`;\n\nexport type Generic<Type extends Encoding> = `${Type}_${string}`;\nexport type Any = `${Encoding}_${string}`;\n","import { encode as bs58Encode, decode as bs58Decode } from 'bs58';\n// js extension is required for mjs build, not importing the whole package to reduce bundle size\n// eslint-disable-next-line import/extensions\nimport Sha256 from 'sha.js/sha256.js';\nimport {\n DecodeError,\n ArgumentError,\n InvalidChecksumError,\n PayloadLengthError,\n} from './errors';\nimport { concatBuffers, isKeyOfObject } from './other';\nimport * as Encoded from './encoder-types';\nimport { Encoding } from './encoder-types';\n\nexport { Encoded, Encoding };\n\n/**\n * Calculate SHA256 hash of `input`\n * @param input - Data to hash\n * @returns Hash\n * @deprecated use `SubtleCrypto.digest` or `sha.js` package instead\n */\nexport function sha256hash(input: Uint8Array | string): Buffer {\n return new Sha256().update(input).digest();\n}\n\n/**\n * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L177-L202}\n */\nconst base64Types = [\n Encoding.ContractBytearray,\n Encoding.ContractStoreKey,\n Encoding.ContractStoreValue,\n Encoding.Transaction,\n Encoding.OracleQuery,\n Encoding.OracleResponse,\n Encoding.State,\n Encoding.Poi,\n Encoding.StateTrees,\n Encoding.CallStateTree,\n Encoding.Bytearray,\n] as const;\nconst base58Types = [\n Encoding.KeyBlockHash,\n Encoding.MicroBlockHash,\n Encoding.BlockPofHash,\n Encoding.BlockTxHash,\n Encoding.BlockStateHash,\n Encoding.Channel,\n Encoding.ContractAddress,\n Encoding.TxHash,\n Encoding.OracleAddress,\n Encoding.OracleQueryId,\n Encoding.AccountAddress,\n Encoding.Signature,\n Encoding.Commitment,\n Encoding.PeerPubkey,\n Encoding.Name,\n] as const;\n\n/**\n * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L261-L286}\n */\nconst byteSizeForType = {\n [Encoding.KeyBlockHash]: 32,\n [Encoding.MicroBlockHash]: 32,\n [Encoding.BlockPofHash]: 32,\n [Encoding.BlockTxHash]: 32,\n [Encoding.BlockStateHash]: 32,\n [Encoding.Channel]: 32,\n [Encoding.ContractAddress]: 32,\n [Encoding.TxHash]: 32,\n [Encoding.OracleAddress]: 32,\n [Encoding.OracleQueryId]: 32,\n [Encoding.AccountAddress]: 32,\n [Encoding.Signature]: 64,\n [Encoding.Commitment]: 32,\n [Encoding.PeerPubkey]: 32,\n [Encoding.State]: 32,\n} as const;\n\nfunction ensureValidLength(data: Uint8Array, type: Encoding): void {\n if (!isKeyOfObject(type, byteSizeForType)) return;\n const reqLen = byteSizeForType[type];\n if (reqLen == null || data.length === reqLen) return;\n throw new PayloadLengthError(`Payload should be ${reqLen} bytes, got ${data.length} instead`);\n}\n\nconst getChecksum = (payload: Uint8Array): Buffer => sha256hash(sha256hash(payload)).slice(0, 4);\n\nconst addChecksum = (payload: Uint8Array): Buffer => concatBuffers([payload, getChecksum(payload)]);\n\nfunction getPayload(buffer: Buffer): Buffer {\n const payload = buffer.slice(0, -4);\n if (!getChecksum(payload).equals(buffer.slice(-4))) throw new InvalidChecksumError();\n return payload;\n}\n\nconst base64 = {\n encode: (buffer: Uint8Array) => addChecksum(buffer).toString('base64'),\n decode: (string: string) => getPayload(Buffer.from(string, 'base64')),\n};\n\nconst base58 = {\n encode: (buffer: Uint8Array) => bs58Encode(addChecksum(buffer)),\n decode: (string: string) => getPayload(Buffer.from(bs58Decode(string))),\n};\n\nconst parseType = (maybeType: unknown): [Encoding, typeof base64] => {\n const base64Type = base64Types.find((t) => t === maybeType);\n if (base64Type != null) return [base64Type, base64];\n const base58Type = base58Types.find((t) => t === maybeType);\n if (base58Type != null) return [base58Type, base58];\n throw new ArgumentError('prefix', `one of ${[...base58Types, ...base64Types].join(', ')}`, maybeType);\n};\n\n/**\n * Decode data using the default encoding/decoding algorithm\n * @param data - An Base58/64check encoded and prefixed string\n * (ex tx_..., sg_..., ak_....)\n * @returns Decoded data\n */\nexport function decode(data: Encoded.Any): Buffer {\n const [prefix, encodedPayload, extra] = data.split('_');\n if (encodedPayload == null) throw new DecodeError(`Encoded string missing payload: ${data}`);\n if (extra != null) throw new DecodeError(`Encoded string have extra parts: ${data}`);\n const [type, encoder] = parseType(prefix);\n const payload = encoder.decode(encodedPayload);\n ensureValidLength(payload, type);\n return payload;\n}\n\n/**\n * Encode data using the default encoding/decoding algorithm\n * @param data - An decoded data\n * @param type - Prefix of Transaction\n * @returns Encoded string Base58check or Base64check data\n */\nexport function encode<Type extends Encoding>(\n data: Uint8Array,\n type: Type,\n): Encoded.Generic<Type> {\n const [, encoder] = parseType(type);\n ensureValidLength(data, type);\n return `${type}_${encoder.encode(data)}`;\n}\n","/*\n * ISC License (ISC)\n * Copyright 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport nacl, { SignKeyPair } from 'tweetnacl';\n// js extension is required for mjs build, not importing the whole package to reduce bundle size\n// eslint-disable-next-line import/extensions\nimport { blake2b } from 'blakejs/blake2b.js';\nimport { encode as varuintEncode } from 'varuint-bitcoin';\n\nimport { str2buf } from './bytes';\nimport { concatBuffers } from './other';\nimport {\n decode, encode, Encoded, Encoding,\n} from './encoder';\n\n/**\n * Generate address from secret key\n * @param secret - Private key\n * @returns Public key encoded as address\n */\nexport function getAddressFromPriv(secret: string | Uint8Array): Encoded.AccountAddress {\n const secretBuffer = typeof secret === 'string' ? str2buf(secret) : secret;\n const keys = nacl.sign.keyPair.fromSecretKey(secretBuffer);\n return encode(keys.publicKey, Encoding.AccountAddress);\n}\n\n/**\n * Check if address is valid\n * @param address - Address\n * @param prefix - Transaction prefix. Default: 'ak'\n * @returns is valid\n */\nexport function isAddressValid(\n address: string,\n prefix: Encoding = Encoding.AccountAddress,\n): boolean {\n try {\n decode(address as Encoded.Generic<typeof prefix>);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Generate a random salt (positive integer)\n * @returns random salt\n */\nexport function genSalt(): number {\n return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER));\n}\n\n/**\n * Converts a positive integer to the smallest possible\n * representation in a binary digit representation\n * @param value - Value to encode\n * @returns Encoded number\n */\nexport function encodeUnsigned(value: number): Buffer {\n const binary = Buffer.allocUnsafe(4);\n binary.writeUInt32BE(value);\n return binary.slice(binary.findIndex((i) => i !== 0));\n}\n\n/**\n * Calculate 256bits Blake2b hash of `input`\n * @param input - Data to hash\n * @returns Hash\n */\nexport function hash(input: string | Uint8Array): Buffer {\n return Buffer.from(blake2b(input, undefined, 32)); // 256 bits\n}\n\n// Todo Duplicated in tx builder. remove\n/**\n * Compute contract address\n * @category contract\n * @param owner - Address of contract owner\n * @param nonce - Round when contract was created\n * @returns Contract address\n */\nexport function encodeContractAddress(\n owner: Encoded.AccountAddress,\n nonce: number,\n): Encoded.ContractAddress {\n const publicKey = decode(owner);\n const binary = concatBuffers([publicKey, encodeUnsigned(nonce)]);\n return encode(hash(binary), Encoding.ContractAddress);\n}\n\n// KEY-PAIR HELPERS\n\n/**\n * Generate keyPair from secret key\n * @param secret - secret key\n * @returns Object with Private(privateKey) and Public(publicKey) keys\n */\nexport function generateKeyPairFromSecret(secret: Uint8Array): SignKeyPair {\n return nacl.sign.keyPair.fromSecretKey(secret);\n}\n\n/**\n * Generate a random ED25519 keypair\n * @param raw - Whether to return raw (binary) keys\n * @returns Key pair\n */\nexport function generateKeyPair(raw: true): { publicKey: Buffer; secretKey: Buffer };\nexport function generateKeyPair(raw?: false): {\n publicKey: Encoded.AccountAddress; secretKey: string;\n};\nexport function generateKeyPair(raw = false): {\n publicKey: Encoded.AccountAddress | Buffer;\n secretKey: string | Buffer;\n} {\n const keyPair = nacl.sign.keyPair();\n const publicBuffer = Buffer.from(keyPair.publicKey);\n const secretBuffer = Buffer.from(keyPair.secretKey);\n\n if (raw) {\n return {\n publicKey: publicBuffer,\n secretKey: secretBuffer,\n };\n }\n return {\n publicKey: encode(publicBuffer, Encoding.AccountAddress),\n secretKey: secretBuffer.toString('hex'),\n };\n}\n\n// SIGNATURES\n\n/**\n * Generate signature\n * @param data - Data to sign\n * @param privateKey - Key to sign with\n * @returns Signature\n */\nexport function sign(data: string | Uint8Array, privateKey: string | Uint8Array): Uint8Array {\n return nacl.sign.detached(Buffer.from(data), Buffer.from(privateKey));\n}\n\n/**\n * Verify that signature was signed by public key\n * @param data - Data to verify\n * @param signature - Signature to verify\n * @param publicKey - Key to verify against\n * @returns Valid?\n */\nexport function verify(\n data: Uint8Array,\n signature: Uint8Array,\n publicKey: string | Uint8Array,\n): boolean {\n const publicKeyBuffer = typeof publicKey === 'string' ? str2buf(publicKey) : publicKey;\n return nacl.sign.detached.verify(data, signature, publicKeyBuffer);\n}\n\nexport function messageToHash(message: string): Buffer {\n const p = Buffer.from('aeternity Signed Message:\\n', 'utf8');\n const msg = Buffer.from(message, 'utf8');\n return hash(concatBuffers([varuintEncode(p.length), p, varuintEncode(msg.length), msg]));\n}\n\nexport function signMessage(message: string, privateKey: string | Buffer): Uint8Array {\n return sign(messageToHash(message), privateKey);\n}\n\nexport function verifyMessage(\n str: string,\n signature: Uint8Array,\n publicKey: string | Uint8Array,\n): boolean {\n return verify(messageToHash(str), signature, publicKey);\n}\n\n/**\n * Check key pair for validity\n *\n * Sign a message, and then verifying that signature\n * @param privateKey - Private key to verify\n * @param publicKey - Public key to verify\n * @returns Valid?\n */\nexport function isValidKeypair(\n privateKey: string | Uint8Array,\n publicKey: string | Uint8Array,\n): boolean {\n const message = Buffer.from('TheMessage');\n const signature = sign(message, privateKey);\n return verify(message, signature, publicKey);\n}\n","import BigNumber from 'bignumber.js';\nimport { mapObject } from '../../utils/other';\n\n// # AENS\nexport type AensName = `${string}.chain`;\nexport const NAME_TTL = 180000;\n// # max number of block into the future that the name is going to be available\n// # https://github.com/aeternity/protocol/blob/epoch-v0.22.0/AENS.md#update\n// # https://github.com/aeternity/protocol/blob/44a93d3aab957ca820183c3520b9daf6b0fedff4/AENS.md#aens-entry\nexport const NAME_MAX_TTL = 36000;\nexport const NAME_MAX_CLIENT_TTL = 84600;\nexport const CLIENT_TTL = NAME_MAX_CLIENT_TTL;\nexport const MIN_GAS_PRICE = 1e9;\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L67\nexport const NAME_FEE_MULTIPLIER = 1e14; // 100000000000000\nexport const NAME_FEE_BID_INCREMENT = 0.05; // # the increment is in percentage\n// # see https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L272\nexport const NAME_BID_TIMEOUT_BLOCKS = 480; // # ~1 day\n// # this is the max length for a domain that requires a base fee to be paid\nexport const NAME_MAX_LENGTH_FEE = 31;\nexport const NAME_BID_MAX_LENGTH = 12; // # this is the max length for a domain to be part of a bid\n// # https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L290\n// # https://github.com/aeternity/protocol/blob/master/AENS.md#protocol-fees-and-protection-times\n// # bid ranges:\nexport const NAME_BID_RANGES = mapObject({\n 31: 3,\n 30: 5,\n 29: 8,\n 28: 13,\n 27: 21,\n 26: 34,\n 25: 55,\n 24: 89,\n 23: 144,\n 22: 233,\n 21: 377,\n 20: 610,\n 19: 987,\n 18: 1597,\n 17: 2584,\n 16: 4181,\n 15: 6765,\n 14: 10946,\n 13: 17711,\n 12: 28657,\n 11: 46368,\n 10: 75025,\n 9: 121393,\n 8: 196418,\n 7: 317811,\n 6: 514229,\n 5: 832040,\n 4: 1346269,\n 3: 2178309,\n 2: 3524578,\n 1: 5702887,\n}, ([key, value]) => [key, new BigNumber(value).times(NAME_FEE_MULTIPLIER)]);\n\n/**\n * Enum with tag types\n * @category transaction builder\n * @see {@link https://github.com/aeternity/protocol/blob/0f6dee3d9d1e8e2469816798f5c7587a6c918f94/serializations.md#binary-serialization}\n * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_chain_objects.erl#L39-L97}\n */\n// TODO: implement serialisation for commented-out tags\nexport enum Tag {\n Account = 10,\n SignedTx = 11,\n SpendTx = 12,\n // Oracle = 20,\n // OracleQuery = 21,\n OracleRegisterTx = 22,\n OracleQueryTx = 23,\n OracleResponseTx = 24,\n OracleExtendTx = 25,\n // Name = 30,\n // NameCommitment = 31,\n NameClaimTx = 32,\n NamePreclaimTx = 33,\n NameUpdateTx = 34,\n NameRevokeTx = 35,\n NameTransferTx = 36,\n // NameAuction = 37,\n Contract = 40,\n ContractCall = 41,\n ContractCreateTx = 42,\n ContractCallTx = 43,\n ChannelCreateTx = 50,\n // ChannelSetDelegatesTx = 501,\n ChannelDepositTx = 51,\n ChannelWithdrawTx = 52,\n ChannelForceProgressTx = 521,\n ChannelCloseMutualTx = 53,\n ChannelCloseSoloTx = 54,\n ChannelSlashTx = 55,\n ChannelSettleTx = 56,\n ChannelOffChainTx = 57,\n ChannelOffChainUpdateTransfer = 570,\n ChannelOffChainUpdateDeposit = 571,\n ChannelOffChainUpdateWithdraw = 572,\n ChannelOffChainUpdateCreateContract = 573,\n ChannelOffChainUpdateCallContract = 574,\n // ChannelOffChainUpdateMeta = 576,\n ChannelClientReconnectTx = 575,\n Channel = 58,\n ChannelSnapshotSoloTx = 59,\n TreesPoi = 60,\n // TreesDb = 61,\n StateTrees = 62,\n Mtree = 63,\n MtreeValue = 64,\n ContractsMtree = 621,\n CallsMtree = 622,\n ChannelsMtree = 623,\n NameserviceMtree = 624,\n OraclesMtree = 625,\n AccountsMtree = 626,\n CompilerSophia = 70,\n GaAttachTx = 80,\n GaMetaTx = 81,\n PayingForTx = 82,\n // KeyBlock = 100,\n // MicroBlock = 101,\n // LightMicroBlock = 102,\n // Pof = 200,\n}\n","import { ArgumentError, PrefixNotFoundError, TagNotFoundError } from '../../utils/errors';\nimport { toBytes } from '../../utils/bytes';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { isItemOfArray } from '../../utils/other';\n\n/**\n * Map of prefix to ID tag constant\n * @see {@link https://github.com/aeternity/protocol/blob/master/serializations.md#the-id-type}\n * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_id.erl#L97-L102}\n * @see {@link https://github.com/aeternity/aeserialization/blob/eb68fe331bd476910394966b7f5ede7a74d37e35/src/aeser_api_encoder.erl#L163-L168}\n */\nconst idTagToEncoding = [\n Encoding.AccountAddress,\n Encoding.Name,\n Encoding.Commitment,\n Encoding.OracleAddress,\n Encoding.ContractAddress,\n Encoding.Channel,\n] as const;\n\ntype AddressEncodings = typeof idTagToEncoding[number];\n\n/**\n * Utility function to create and _id type\n * @category transaction builder\n * @param hashId - Encoded hash\n * @returns Buffer Buffer with ID tag and decoded HASh\n */\nexport function writeId(hashId: Encoded.Generic<AddressEncodings>): Buffer {\n if (typeof hashId !== 'string') throw new ArgumentError('hashId', 'a string', hashId);\n const encoding = hashId.slice(0, 2);\n if (!isItemOfArray(encoding, idTagToEncoding)) throw new TagNotFoundError(encoding);\n const idTag = idTagToEncoding.indexOf(encoding) + 1;\n return Buffer.from([...toBytes(idTag), ...decode(hashId)]);\n}\n\n/**\n * Utility function to read and _id type\n * @category transaction builder\n * @param buf - Data\n * @returns Encoided hash string with prefix\n */\nexport function readId(buf: Buffer): Encoded.Generic<AddressEncodings> {\n const idTag = Buffer.from(buf).readUIntBE(0, 1);\n const encoding = idTagToEncoding[idTag - 1];\n if (encoding == null) throw new PrefixNotFoundError(idTag);\n return encode(buf.slice(1, buf.length), encoding);\n}\n","import BigNumber from 'bignumber.js';\nimport { genSalt, hash } from '../../utils/crypto';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { toBytes } from '../../utils/bytes';\nimport { concatBuffers } from '../../utils/other';\nimport {\n AensName,\n NAME_BID_RANGES,\n NAME_BID_TIMEOUT_BLOCKS,\n NAME_FEE_BID_INCREMENT,\n NAME_MAX_LENGTH_FEE,\n} from './constants';\nimport { ceil } from '../../utils/bignumber';\nimport { ArgumentError, IllegalBidFeeError } from '../../utils/errors';\nimport { NamePointer } from '../../apis/node';\nimport { readId, writeId } from './address';\n\n/**\n * JavaScript-based Transaction builder helper function's\n */\n\n/**\n * Build a contract public key\n * @category contract\n * @param ownerId - The public key of the owner account\n * @param nonce - the nonce of the transaction\n * @returns Contract public key\n */\nexport function buildContractId(\n ownerId: Encoded.AccountAddress,\n nonce: number | BigNumber,\n): Encoded.ContractAddress {\n const ownerIdAndNonce = Buffer.from([...decode(ownerId), ...toBytes(nonce)]);\n const b2bHash = hash(ownerIdAndNonce);\n return encode(b2bHash, Encoding.ContractAddress);\n}\n\n/**\n * Build a oracle query id\n * @category oracle\n * @param senderId - The public key of the sender account\n * @param nonce - the nonce of the transaction\n * @param oracleId - The oracle public key\n * @returns Contract public key\n */\nexport function oracleQueryId(\n senderId: Encoded.AccountAddress,\n nonce: number | BigNumber | string,\n oracleId: Encoded.OracleAddress,\n): Encoded.OracleQueryId {\n function _int32(val: number | string | BigNumber): Buffer {\n const nonceBE = toBytes(val, true);\n return concatBuffers([Buffer.alloc(32 - nonceBE.length), nonceBE]);\n }\n\n const b2bHash = hash(\n Buffer.from([...decode(senderId), ..._int32(nonce), ...decode(oracleId)]),\n );\n return encode(b2bHash, Encoding.OracleQueryId);\n}\n\n/**\n * Format the salt into a 64-byte hex string\n * @category transaction builder\n * @param salt - Random number\n * @returns Zero-padded hex string of salt\n */\nexport function formatSalt(salt: number): Buffer {\n return Buffer.from(salt.toString(16).padStart(64, '0'), 'hex');\n}\n\n/**\n * Encode an AENS name\n * @category AENS\n * @param name - Name to encode\n * @returns `nm_` prefixed encoded AENS name\n */\nexport function produceNameId(name: AensName): Encoded.Name {\n return encode(hash(name.toLowerCase()), Encoding.Name);\n}\n\n/**\n * Generate the commitment hash by hashing the formatted salt and\n * name, base 58 encoding the result and prepending 'cm_'\n * @category transaction builder\n * @param name - Name to be registered\n * @param salt - Random salt\n * @returns Commitment hash\n */\nexport function commitmentHash(\n name: AensName,\n salt: number = genSalt(),\n): Encoded.Commitment {\n return encode(\n hash(concatBuffers([Buffer.from(name.toLowerCase()), formatSalt(salt)])),\n Encoding.Commitment,\n );\n}\n\n/**\n * Utility function to convert int to bytes\n * @category transaction builder\n * @param val - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function writeInt(val: number | string | BigNumber): Buffer {\n return toBytes(val, true);\n}\n\n/**\n * Utility function to convert bytes to int\n * @category transaction builder\n * @param buf - Value\n * @returns Buffer Buffer from number(BigEndian)\n */\nexport function readInt(buf: Buffer = Buffer.from([])): string {\n return new BigNumber(Buffer.from(buf).toString('hex'), 16).toString(10);\n}\n\n/**\n * Helper function to build pointers for name update TX\n * @category transaction builder\n * @param pointers - Array of pointers\n * `([ { key: 'account_pubkey', id: 'ak_32klj5j23k23j5423l434l2j3423'} ])`\n * @returns Serialized pointers array\n */\nexport function buildPointers(pointers: NamePointer[]): Buffer[][] {\n return pointers.map(\n (p) => [\n toBytes(p.key),\n writeId(p.id as Parameters<typeof writeId>[0]),\n ],\n );\n}\n\n/**\n * Helper function to read pointers from name update TX\n * @category transaction builder\n * @param pointers - Array of pointers\n * @returns Deserialize pointer array\n */\nexport function readPointers(pointers: Array<[key: string, id: Buffer]>): NamePointer[] {\n return pointers.map(\n ([key, id]) => ({\n key: key.toString(),\n id: readId(id),\n }),\n );\n}\n\nconst AENS_SUFFIX = '.chain';\n\n/**\n * Is AENS name valid\n * @category AENS\n * @param name - AENS name\n */\nexport function isNameValid(name: string): name is AensName {\n // TODO: probably there are stronger requirements\n return name.endsWith(AENS_SUFFIX);\n}\n\nconst encodingToPointerKey = [\n [Encoding.AccountAddress, 'account_pubkey'],\n [Encoding.OracleAddress, 'oracle_pubkey'],\n [Encoding.ContractAddress, 'contract_pubkey'],\n [Encoding.Channel, 'channel'],\n] as const;\n\n/**\n * @category AENS\n * @param identifier - account/oracle/contract address, or channel\n * @returns default AENS pointer key\n */\nexport function getDefaultPointerKey(\n identifier: Encoded.Generic<typeof encodingToPointerKey[number][0]>,\n): typeof encodingToPointerKey[number][1] {\n decode(identifier);\n const encoding = identifier.substring(0, 2);\n const result = encodingToPointerKey.find(([e]) => e === encoding)?.[1];\n if (result != null) return result;\n throw new ArgumentError(\n 'identifier',\n `prefixed with one of ${encodingToPointerKey.map(([e]) => `${e}_`).join(', ')}`,\n identifier,\n );\n}\n\n/**\n * Get the minimum AENS name fee\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @returns the minimum fee for the AENS name auction\n */\nexport function getMinimumNameFee(name: AensName): BigNumber {\n const nameLength = name.length - AENS_SUFFIX.length;\n return NAME_BID_RANGES[Math.min(nameLength, NAME_MAX_LENGTH_FEE)];\n}\n\n/**\n * Compute bid fee for AENS auction\n * @category AENS\n * @param name - the AENS name to get the fee for\n * @param options - Options\n * @param options.startFee - Auction start fee\n * @param options.increment - Bid multiplier(In percentage, must be between 0 and 1)\n * @returns Bid fee\n */\nexport function computeBidFee(\n name: AensName,\n { startFee, increment = NAME_FEE_BID_INCREMENT }:\n { startFee?: number | string | BigNumber; increment?: number } = {},\n): BigNumber {\n if (!(Number(increment) === increment && increment % 1 !== 0)) throw new IllegalBidFeeError(`Increment must be float. Current increment ${increment}`);\n if (increment < NAME_FEE_BID_INCREMENT) throw new IllegalBidFeeError(`minimum increment percentage is ${NAME_FEE_BID_INCREMENT}`);\n // FIXME: increment should be used somehow here\n return ceil(\n new BigNumber(startFee ?? getMinimumNameFee(name))\n .times(new BigNumber(NAME_FEE_BID_INCREMENT).plus(1)),\n );\n}\n\n/**\n * Compute auction end height\n * @category AENS\n * @param name - Name to compute auction end for\n * @param claimHeight - Auction starting height\n * @see {@link https://github.com/aeternity/aeternity/blob/72e440b8731422e335f879a31ecbbee7ac23a1cf/apps/aecore/src/aec_governance.erl#L273}\n * @returns Auction end height\n */\nexport function computeAuctionEndBlock(name: AensName, claimHeight: number): number {\n const length = name.length - AENS_SUFFIX.length;\n const h = (length <= 4 && 62 * NAME_BID_TIMEOUT_BLOCKS)\n || (length <= 8 && 31 * NAME_BID_TIMEOUT_BLOCKS)\n || (length <= 12 && NAME_BID_TIMEOUT_BLOCKS)\n || 0;\n return h + claimHeight;\n}\n\n/**\n * Is name accept going to auction\n * @category AENS\n */\nexport function isAuctionName(name: AensName): boolean {\n return name.length < 13 + AENS_SUFFIX.length;\n}\n","import BigNumber from 'bignumber.js';\nimport { readInt, writeInt } from '../helpers';\nimport { ArgumentError } from '../../../utils/errors';\n\nexport type Int = number | string | BigNumber;\n\nexport default {\n serialize(value: Int): Buffer {\n if (value < 0) throw new ArgumentError('value', 'greater or equal to 0', value);\n return writeInt(value);\n },\n\n deserialize(value: Buffer): string {\n return readInt(value);\n },\n};\n","import uInt from './u-int';\n\nexport default {\n serialize(value: number): Buffer {\n return uInt.serialize(value);\n },\n\n deserialize(value: Buffer): number {\n return +uInt.deserialize(value);\n },\n};\n","import uInt, { Int } from './u-int';\nimport { AE_AMOUNT_FORMATS, formatAmount } from '../../../utils/amount-formatter';\nimport { ArgumentError } from '../../../utils/errors';\n\nexport interface Options { denomination?: AE_AMOUNT_FORMATS }\n\nexport default {\n ...uInt,\n\n serializeAettos(value: string | undefined): string {\n if (value == null) throw new ArgumentError('value', 'provided', value);\n return value;\n },\n\n serializeOptional(value: Int | undefined, { denomination, ...options }: Options): Buffer {\n return uInt.serialize(\n this.serializeAettos(\n value != null ? formatAmount(value, { denomination }) : value,\n options,\n ),\n );\n },\n\n serialize(value: Int, options: Options): Buffer {\n return this.serializeOptional(value, options);\n },\n};\n","import coinAmount from './coin-amount';\nimport { Int } from './u-int';\nimport { IllegalArgumentError } from '../../../utils/errors';\n\nexport default {\n ...coinAmount,\n\n /**\n * @param value - Deposit value in string format. Should be equal to '0'.\n * @param options - Options\n * @returns Deposit value Buffer.\n */\n serialize(\n value: Int | undefined,\n options: Parameters<typeof coinAmount['serialize']>[1],\n ): Buffer {\n value ??= 0;\n if (+value !== 0) throw new IllegalArgumentError(`Contract deposit is not refundable, so it should be equal 0, got ${value.toString()} instead`);\n return coinAmount.serialize(value, options);\n },\n};\n","import BigNumber from 'bignumber.js';\nimport { IllegalArgumentError } from '../../../utils/errors';\nimport { MIN_GAS_PRICE, Tag } from '../constants';\nimport coinAmount from './coin-amount';\nimport { isKeyOfObject } from '../../../utils/other';\n\nconst BASE_GAS = 15000;\nconst GAS_PER_BYTE = 20;\nconst KEY_BLOCK_INTERVAL = 3;\n\n/**\n * Calculate the Base fee gas\n * @see {@link https://github.com/aeternity/protocol/blob/master/consensus/README.md#gas}\n * @param txType - The transaction type\n * @returns The base fee\n * @example\n * ```js\n * TX_FEE_BASE('channelForceProgress') => new BigNumber(30 * 15000)\n * ```\n */\nconst TX_FEE_BASE_GAS = (txType: Tag): BigNumber => {\n const feeFactors = {\n [Tag.ChannelForceProgressTx]: 30,\n [Tag.ChannelOffChainTx]: 0,\n [Tag.ChannelOffChainUpdateCallContract]: 0,\n [Tag.ChannelOffChainUpdateCreateContract]: 0,\n [Tag.ChannelOffChainUpdateDeposit]: 0,\n [Tag.ChannelOffChainUpdateWithdraw]: 0,\n [Tag.ChannelOffChainUpdateTransfer]: 0,\n [Tag.ContractCreateTx]: 5,\n [Tag.ContractCallTx]: 12,\n [Tag.GaAttachTx]: 5,\n [Tag.GaMetaTx]: 5,\n [Tag.PayingForTx]: 1 / 5,\n } as const;\n const factor = feeFactors[txType as keyof typeof feeFactors] ?? 1;\n return new BigNumber(factor * BASE_GAS);\n};\n\n/**\n * Calculate fee for Other types of transactions\n * @see {@link https://github.com/aeternity/protocol/blob/master/consensus/README.md#gas}\n * @param txType - The transaction type\n * @param txSize - The transaction size\n * @returns parameters - The transaction parameters\n * @returns parameters.relativeTtl - The relative ttl\n * @returns parameters.innerTxSize - The size of the inner transaction\n * @returns The Other fee\n * @example\n * ```js\n * TX_FEE_OTHER_GAS('oracleResponse',10, { relativeTtl: 10, innerTxSize: 10 })\n * => new BigNumber(10).times(20).plus(Math.ceil(32000 * 10 / Math.floor(60 * 24 * 365 / 2)))\n * ```\n */\nconst TX_FEE_OTHER_GAS = (\n txType: Tag,\n txSize: number,\n { relativeTtl, innerTxSize }: { relativeTtl: number; innerTxSize: number },\n): BigNumber => {\n switch (txType) {\n case Tag.OracleRegisterTx:\n case Tag.OracleExtendTx:\n case Tag.OracleQueryTx:\n case Tag.OracleResponseTx:\n return new BigNumber(txSize)\n .times(GAS_PER_BYTE)\n .plus(\n Math.ceil((32000 * relativeTtl) / Math.floor((60 * 24 * 365) / KEY_BLOCK_INTERVAL)),\n );\n case Tag.GaMetaTx:\n case Tag.PayingForTx:\n return new BigNumber(txSize).minus(innerTxSize).times(GAS_PER_BYTE);\n default:\n return new BigNumber(txSize).times(GAS_PER_BYTE);\n }\n};\n\nfunction getOracleRelativeTtl(params: any, txType: Tag): number {\n const ttlKeys = {\n [Tag.OracleRegisterTx]: 'oracleTtlValue',\n [Tag.OracleExtendTx]: 'oracleTtlValue',\n [Tag.OracleQueryTx]: 'queryTtlValue',\n [Tag.OracleResponseTx]: 'responseTtlValue',\n } as const;\n\n if (!isKeyOfObject(txType, ttlKeys)) return 1;\n return params[ttlKeys[txType]];\n}\n\n/**\n * Calculate fee based on tx type and params\n */\nexport function buildFee(txType: Tag, buildTx: any): BigNumber {\n const { rlpEncoded: { length }, txObject } = buildTx;\n\n return TX_FEE_BASE_GAS(txType)\n .plus(TX_FEE_OTHER_GAS(txType, length, {\n relativeTtl: getOracleRelativeTtl(txObject, txType),\n innerTxSize: [Tag.GaMetaTx, Tag.PayingForTx].includes(txType)\n ? txObject.tx.tx.encodedTx.rlpEncoded.length\n : 0,\n }))\n .times(MIN_GAS_PRICE);\n}\n\n/**\n * Calculate min fee\n * @category transaction builder\n * @param txType - Transaction type\n * @param rebuildTx - Callback to get built transaction with specific fee\n */\nexport function calculateMinFee(\n txType: Tag,\n rebuildTx: (value: BigNumber) => any,\n): BigNumber {\n let fee = new BigNumber(0);\n let previousFee;\n do {\n previousFee = fee;\n fee = buildFee(txType, rebuildTx(fee));\n } while (!fee.eq(previousFee));\n return fee;\n}\n\nexport default {\n ...coinAmount,\n\n serializeAettos(\n _value: string | undefined,\n { txType, rebuildTx, _computingMinFee }:\n { txType: Tag; rebuildTx: (params: any) => any; _computingMinFee?: string },\n ): string {\n if (_computingMinFee != null) return _computingMinFee;\n const minFee = calculateMinFee(txType, (fee) => rebuildTx({ _computingMinFee: fee }));\n const value = new BigNumber(_value ?? minFee);\n if (minFee.gt(value)) {\n throw new IllegalArgumentError(`Fee ${value.toString()} must be bigger then ${minFee}`);\n }\n return value.toFixed();\n },\n\n serialize: coinAmount.serializeOptional,\n};\n","import { IllegalArgumentError } from '../../../utils/errors';\nimport { MIN_GAS_PRICE, Tag } from '../constants';\nimport shortUInt from './short-u-int';\nimport { buildFee } from './fee';\n\nfunction calculateGasLimitMax(\n txType: Tag,\n gasMax: number,\n rebuildTx: (value: number) => any,\n): number {\n return gasMax - +buildFee(txType, rebuildTx(gasMax)).dividedBy(MIN_GAS_PRICE);\n}\n\nexport default {\n ...shortUInt,\n\n serialize(\n _value: number | undefined,\n {\n txType, rebuildTx, gasMax = 6e6, _computingGasLimit,\n }: {\n txType: Tag;\n rebuildTx: (params: any) => any;\n gasMax: number;\n _computingGasLimit?: number;\n },\n ): Buffer {\n if (_computingGasLimit != null) return shortUInt.serialize(_computingGasLimit);\n\n const gasLimitMax = calculateGasLimitMax(\n txType,\n gasMax,\n (gasLimit) => rebuildTx({ _computingGasLimit: gasLimit }),\n );\n const value = _value ?? gasLimitMax;\n if (value > gasLimitMax) {\n throw new IllegalArgumentError(`Gas limit ${value} must be less or equal to ${gasLimitMax}`);\n }\n return shortUInt.serialize(value);\n },\n};\n","import coinAmount from './coin-amount';\nimport { IllegalArgumentError } from '../../../utils/errors';\nimport { MIN_GAS_PRICE } from '../constants';\n\nexport default {\n ...coinAmount,\n\n serializeAettos(value: string | undefined = MIN_GAS_PRICE.toString()): string {\n if (+value < MIN_GAS_PRICE) {\n throw new IllegalArgumentError(`Gas price ${value.toString()} must be bigger then ${MIN_GAS_PRICE}`);\n }\n return value;\n },\n\n serialize: coinAmount.serializeOptional,\n};\n","export default {\n serialize(value: string): Buffer {\n return Buffer.from(value);\n },\n\n deserialize(value: Buffer): string {\n return value.toString();\n },\n};\n","import field from './field';\nimport { AensName } from '../constants';\n\nexport default {\n /**\n * @param value - AENS name\n */\n serialize(value: AensName): Buffer {\n return field.serialize(value);\n },\n\n /**\n * @param value - AENS name\n */\n deserialize(value: Buffer): AensName {\n return field.deserialize(value) as AensName;\n },\n};\n","import BigNumber from 'bignumber.js';\nimport { getMinimumNameFee } from '../helpers';\nimport { InsufficientNameFeeError } from '../../../utils/errors';\nimport { Int } from './u-int';\nimport coinAmount from './coin-amount';\nimport { AensName } from '../constants';\n\nexport default {\n ...coinAmount,\n\n serializeAettos(\n _value: string | undefined,\n txFields: { name: AensName },\n ): string {\n const minNameFee = getMinimumNameFee(txFields.name);\n const value = new BigNumber(_value ?? minNameFee);\n if (minNameFee.gt(value)) throw new InsufficientNameFeeError(value, minNameFee);\n return value.toFixed();\n },\n\n /**\n * @param value - AENS name fee Buffer\n * @param txFields - Transaction fields\n * @param txFields.name - AENS Name in transaction\n */\n serialize(\n value: Int | undefined,\n txFields: { name: AensName } & Parameters<typeof coinAmount['serialize']>[1],\n ): Buffer {\n return coinAmount.serializeOptional.call(this, value, txFields);\n },\n};\n","import { AensName } from '../constants';\nimport { produceNameId, isNameValid } from '../helpers';\nimport { writeId, readId } from '../address';\nimport { Encoded } from '../../../utils/encoder';\n\nexport default {\n /**\n * @param value - AENS name ID\n */\n serialize(value: AensName | Encoded.Name): Buffer {\n return writeId(isNameValid(value) ? produceNameId(value) : value);\n },\n\n /**\n * @param value - AENS name ID Buffer\n */\n deserialize(value: Buffer): Encoded.Name {\n return readId(value) as Encoded.Name;\n },\n};\n","import _field from './field';\nimport _uInt from './u-int';\nimport _shortUInt from './short-u-int';\nimport _coinAmount from './coin-amount';\n\nimport _deposit from './deposit';\nimport _fee from './fee';\nimport _gasLimit from './gas-limit';\nimport _gasPrice from './gas-price';\nimport _name from './name';\nimport _nameFee from './name-fee';\nimport _nameId from './name-id';\n\n// TODO: remove after fixing https://github.com/Gerrit0/typedoc-plugin-missing-exports/issues/15\nconst field = _field;\nconst uInt = _uInt;\nconst shortUInt = _shortUInt;\nconst coinAmount = _coinAmount;\n\nconst deposit = _deposit;\nconst fee = _fee;\nconst gasLimit = _gasLimit;\nconst gasPrice = _gasPrice;\nconst name = _name;\nconst nameFee = _nameFee;\nconst nameId = _nameId;\n\nexport type Field = typeof field | typeof uInt | typeof shortUInt | typeof coinAmount\n | typeof deposit | typeof fee | typeof gasLimit | typeof gasPrice | typeof name | typeof nameFee\n | typeof nameId;\n\nexport {\n field,\n uInt,\n shortUInt,\n coinAmount,\n\n deposit,\n fee,\n gasLimit,\n gasPrice,\n name,\n nameFee,\n nameId,\n};\n","/**\n * Transaction Schema for TxBuilder\n */\n// # RLP version number\n// # https://github.com/aeternity/protocol/blob/master/serializations.md#binary-serialization\n\nimport BigNumber from 'bignumber.js';\nimport { Tag } from './constants';\nimport {\n Field, uInt, shortUInt, coinAmount, name, nameId, nameFee, deposit, gasLimit, gasPrice, fee,\n} from './field-types';\nimport { Encoded, Encoding } from '../../utils/encoder';\nimport MPTree from '../../utils/mptree';\nimport { NamePointer } from '../../apis/node';\n\nexport enum ORACLE_TTL_TYPES {\n delta = 0,\n block = 1,\n}\n\n// # TRANSACTION DEFAULT TTL\nexport const TX_TTL = 0;\n// # ORACLE\nexport const QUERY_FEE = 30000;\nexport const ORACLE_TTL = { type: ORACLE_TTL_TYPES.delta, value: 500 };\nexport const QUERY_TTL = { type: ORACLE_TTL_TYPES.delta, value: 10 };\nexport const RESPONSE_TTL = { type: ORACLE_TTL_TYPES.delta, value: 10 };\n// # CONTRACT\nexport const AMOUNT = 0;\nexport const MAX_AUTH_FUN_GAS = 50000;\nexport const DRY_RUN_ACCOUNT = {\n pub: 'ak_11111111111111111111111111111111273Yts',\n amount: 100000000000000000000000000000000000n,\n} as const;\n\nexport type TxField = [\n name: string,\n type: FIELD_TYPES | Field,\n prefix?: Encoding | Encoding[],\n];\n\n/**\n * @category transaction builder\n * @see {@link https://github.com/aeternity/protocol/blob/0f6dee3d9d1e8e2469816798f5c7587a6c918f94/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain}\n */\nexport enum VM_VERSIONS {\n NO_VM = 0,\n SOPHIA = 1,\n SOPHIA_IMPROVEMENTS_MINERVA = 3,\n SOPHIA_IMPROVEMENTS_FORTUNA = 4,\n FATE = 5,\n SOPHIA_IMPROVEMENTS_LIMA = 6,\n FATE_2 = 7,\n}\n\n/**\n * @category transaction builder\n * @see {@link https://github.com/aeternity/protocol/blob/0f6dee3d9d1e8e2469816798f5c7587a6c918f94/contracts/contract_vms.md#virtual-machines-on-the-%C3%A6ternity-blockchain}\n */\nexport enum ABI_VERSIONS {\n NO_ABI = 0,\n SOPHIA = 1,\n FATE = 3,\n}\n\n/**\n * @category transaction builder\n */\nexport enum PROTOCOL_VERSIONS {\n IRIS = 5,\n}\n\n// First abi/vm by default\nexport const PROTOCOL_VM_ABI = {\n [PROTOCOL_VERSIONS.IRIS]: {\n [Tag.ContractCreateTx]: {\n vmVersion: [VM_VERSIONS.FATE_2], abiVersion: [ABI_VERSIONS.FATE],\n },\n // TODO: Ensure that AEVM (SOPHIA?) is still available here\n [Tag.ContractCallTx]: {\n vmVersion: [], abiVersion: [ABI_VERSIONS.FATE, ABI_VERSIONS.SOPHIA],\n },\n [Tag.OracleRegisterTx]: {\n vmVersion: [], abiVersion: [ABI_VERSIONS.NO_ABI, ABI_VERSIONS.SOPHIA],\n },\n },\n} as const;\n\ntype PrefixType<Prefix> = Prefix extends Encoding\n ? Encoded.Generic<Prefix>\n : Prefix extends readonly Encoding[]\n ? Encoded.Generic<Prefix[number]>\n : Encoded.Generic<any>;\n\n/**\n * @category transaction builder\n */\nexport interface CtVersion {\n vmVersion: VM_VERSIONS;\n abiVersion: ABI_VERSIONS;\n}\n\n/**\n * @category transaction builder\n */\nexport enum FIELD_TYPES {\n id,\n ids,\n string,\n binary,\n bool,\n hex,\n rlpBinary,\n rlpBinaries,\n rawBinary,\n signatures,\n pointers,\n offChainUpdates,\n callStack,\n proofOfInclusion,\n mptrees,\n callReturnType,\n ctVersion,\n abiVersion,\n ttlType,\n sophiaCodeTypeInfo,\n payload,\n stateTree,\n}\n\ninterface BuildFieldTypes<Prefix extends undefined | Encoding | readonly Encoding[]> {\n [FIELD_TYPES.id]: PrefixType<Prefix>;\n [FIELD_TYPES.ids]: Array<Encoded.Generic<Prefix extends Encoding[] ? Prefix : any>>;\n [FIELD_TYPES.string]: string;\n [FIELD_TYPES.binary]: PrefixType<Prefix>;\n [FIELD_TYPES.bool]: Boolean;\n [FIELD_TYPES.hex]: string;\n [FIELD_TYPES.rlpBinary]: any;\n [FIELD_TYPES.rlpBinaries]: any[];\n [FIELD_TYPES.rawBinary]: Uint8Array;\n [FIELD_TYPES.signatures]: Uint8Array[];\n [FIELD_TYPES.pointers]: NamePointer[];\n [FIELD_TYPES.offChainUpdates]: any;\n [FIELD_TYPES.callStack]: any;\n [FIELD_TYPES.proofOfInclusion]: any;\n [FIELD_TYPES.mptrees]: MPTree[];\n [FIELD_TYPES.callReturnType]: any;\n [FIELD_TYPES.ctVersion]: CtVersion;\n [FIELD_TYPES.abiVersion]: ABI_VERSIONS;\n [FIELD_TYPES.ttlType]: ORACLE_TTL_TYPES;\n [FIELD_TYPES.sophiaCodeTypeInfo]: any;\n [FIELD_TYPES.payload]: string | undefined;\n [FIELD_TYPES.stateTree]: any;\n}\n\n// based on https://stackoverflow.com/a/50375286/6176994\ntype UnionToIntersection<Union> =\n (Union extends any ? (k: Union) => void : never) extends ((k: infer Intersection) => void)\n ? Intersection : never;\n\ntype TxElem = readonly [string, FIELD_TYPES | Field]\n| readonly [string, FIELD_TYPES, Encoding | readonly Encoding[]];\n\ntype BuildTxArgBySchemaType<\n Type extends FIELD_TYPES | Field,\n Prefix extends undefined | Encoding | readonly Encoding[],\n> =\n Type extends Field\n ? Parameters<Type['serialize']>[0]\n : Type extends FIELD_TYPES\n ? BuildFieldTypes<Prefix>[Type]\n : never;\n\ntype NullablePartial<\n T,\n NK extends keyof T = { [K in keyof T]: undefined extends T[K] ? K : never }[keyof T],\n> = Partial<Pick<T, NK>> & Omit<T, NK>;\n\ntype BuildTxArgBySchema<SchemaLine> =\n UnionToIntersection<\n SchemaLine extends ReadonlyArray<infer Elem>\n ? Elem extends TxElem\n ? NullablePartial<{ [k in Elem[0]]: BuildTxArgBySchemaType<Elem[1], Elem[2]> }>\n : never\n : never\n >;\n\nexport type RawTxObject<Tx extends TxSchema> = {\n [k in keyof Tx]-?: Tx[k] extends BigNumber ? string : Tx[k]\n};\n\nconst BASE_TX = [\n ['tag', shortUInt],\n ['VSN', shortUInt],\n] as const;\n\nexport const TX_SCHEMA = {\n [Tag.Account]: {\n 1: [\n ...BASE_TX,\n ['nonce', shortUInt],\n ['balance', uInt],\n ],\n 2: [\n ...BASE_TX,\n ['flags', uInt],\n ['nonce', shortUInt],\n ['balance', uInt],\n ['gaContract', FIELD_TYPES.id, [Encoding.ContractAddress, Encoding.Name]],\n ['gaAuthFun', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ],\n },\n [Tag.SignedTx]: {\n 1: [\n ...BASE_TX,\n ['signatures', FIELD_TYPES.signatures],\n ['encodedTx', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.SpendTx]: {\n 1: [\n ...BASE_TX,\n ['senderId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['recipientId', FIELD_TYPES.id, [Encoding.AccountAddress, Encoding.Name]],\n ['amount', coinAmount],\n ['fee', fee],\n ['ttl', shortUInt],\n ['nonce', shortUInt],\n ['payload', FIELD_TYPES.payload],\n ],\n },\n [Tag.NamePreclaimTx]: {\n 1: [\n ...BASE_TX,\n ['accountId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['commitmentId', FIELD_TYPES.id, Encoding.Commitment],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.NameClaimTx]: {\n 2: [\n ...BASE_TX,\n ['accountId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['name', name],\n ['nameSalt', uInt],\n ['nameFee', nameFee],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.NameUpdateTx]: {\n 1: [\n ...BASE_TX,\n ['accountId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['nameId', nameId],\n ['nameTtl', uInt],\n ['pointers', FIELD_TYPES.pointers],\n ['clientTtl', shortUInt],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.NameTransferTx]: {\n 1: [\n ...BASE_TX,\n ['accountId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['nameId', nameId],\n ['recipientId', FIELD_TYPES.id, [Encoding.AccountAddress, Encoding.Name]],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.NameRevokeTx]: {\n 1: [\n ...BASE_TX,\n ['accountId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['nameId', nameId],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.Contract]: {\n 1: [\n ...BASE_TX,\n ['owner', FIELD_TYPES.id, Encoding.AccountAddress],\n ['ctVersion', FIELD_TYPES.ctVersion],\n ['code', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['log', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['active', FIELD_TYPES.bool],\n ['referers', FIELD_TYPES.ids, Encoding.AccountAddress],\n ['deposit', deposit],\n ],\n },\n [Tag.ContractCreateTx]: {\n 1: [\n ...BASE_TX,\n ['ownerId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['code', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['ctVersion', FIELD_TYPES.ctVersion],\n ['fee', fee],\n ['ttl', shortUInt],\n ['deposit', deposit],\n ['amount', coinAmount],\n ['gasLimit', gasLimit],\n ['gasPrice', gasPrice],\n ['callData', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ],\n },\n [Tag.ContractCallTx]: {\n 1: [\n ...BASE_TX,\n ['callerId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['contractId', FIELD_TYPES.id, [Encoding.ContractAddress, Encoding.Name]],\n ['abiVersion', FIELD_TYPES.abiVersion],\n ['fee', fee],\n ['ttl', shortUInt],\n ['amount', coinAmount],\n ['gasLimit', gasLimit],\n ['gasPrice', gasPrice],\n ['callData', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ],\n },\n [Tag.ContractCall]: {\n 1: [\n ...BASE_TX,\n ['callerId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['callerNonce', shortUInt],\n ['height', shortUInt],\n ['contractId', FIELD_TYPES.id, Encoding.ContractAddress],\n ['gasPrice', gasPrice],\n ['gasUsed', shortUInt],\n ['returnValue', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['returnType', FIELD_TYPES.callReturnType],\n // TODO: add serialization for\n // <log> :: [ { <address> :: id, [ <topics> :: binary() ], <data> :: binary() } ]\n ['log', FIELD_TYPES.rawBinary],\n ],\n },\n [Tag.OracleRegisterTx]: {\n 1: [\n ...BASE_TX,\n ['accountId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['queryFormat', FIELD_TYPES.string],\n ['responseFormat', FIELD_TYPES.string],\n ['queryFee', coinAmount],\n ['oracleTtlType', FIELD_TYPES.ttlType],\n ['oracleTtlValue', shortUInt],\n ['fee', fee],\n ['ttl', shortUInt],\n ['abiVersion', FIELD_TYPES.abiVersion],\n ],\n },\n [Tag.OracleExtendTx]: {\n 1: [\n ...BASE_TX,\n ['oracleId', FIELD_TYPES.id, [Encoding.OracleAddress, Encoding.Name]],\n ['nonce', shortUInt],\n ['oracleTtlType', FIELD_TYPES.ttlType],\n ['oracleTtlValue', shortUInt],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.OracleQueryTx]: {\n 1: [\n ...BASE_TX,\n ['senderId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['oracleId', FIELD_TYPES.id, [Encoding.OracleAddress, Encoding.Name]],\n ['query', FIELD_TYPES.string],\n ['queryFee', coinAmount],\n ['queryTtlType', FIELD_TYPES.ttlType],\n ['queryTtlValue', shortUInt],\n ['responseTtlType', FIELD_TYPES.ttlType],\n ['responseTtlValue', shortUInt],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.OracleResponseTx]: {\n 1: [\n ...BASE_TX,\n ['oracleId', FIELD_TYPES.id, Encoding.OracleAddress],\n ['nonce', shortUInt],\n ['queryId', FIELD_TYPES.binary, Encoding.OracleQueryId],\n ['response', FIELD_TYPES.string],\n ['responseTtlType', FIELD_TYPES.ttlType],\n ['responseTtlValue', shortUInt],\n ['fee', fee],\n ['ttl', shortUInt],\n ],\n },\n [Tag.ChannelCreateTx]: {\n 2: [\n ...BASE_TX,\n ['initiator', FIELD_TYPES.id, Encoding.AccountAddress],\n ['initiatorAmount', uInt],\n ['responder', FIELD_TYPES.id, Encoding.AccountAddress],\n ['responderAmount', uInt],\n ['channelReserve', uInt],\n ['lockPeriod', uInt],\n ['ttl', shortUInt],\n ['fee', fee],\n ['initiatorDelegateIds', FIELD_TYPES.string],\n ['responderDelegateIds', FIELD_TYPES.string],\n ['stateHash', FIELD_TYPES.binary, 'st'],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelCloseMutualTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['fromId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['initiatorAmountFinal', uInt],\n ['responderAmountFinal', uInt],\n ['ttl', shortUInt],\n ['fee', fee],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelCloseSoloTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['fromId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['payload', FIELD_TYPES.binary, 'tx'],\n ['poi', FIELD_TYPES.binary, 'pi'],\n ['ttl', shortUInt],\n ['fee', fee],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelSlashTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['fromId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['payload', FIELD_TYPES.binary, 'tx'],\n ['poi', FIELD_TYPES.binary, 'pi'],\n ['ttl', shortUInt],\n ['fee', fee],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelDepositTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['fromId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['amount', uInt],\n ['ttl', shortUInt],\n ['fee', fee],\n ['stateHash', FIELD_TYPES.binary, 'st'],\n ['round', shortUInt],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelWithdrawTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['toId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['amount', uInt],\n ['ttl', shortUInt],\n ['fee', fee],\n ['stateHash', FIELD_TYPES.binary, 'st'],\n ['round', shortUInt],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelSettleTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['fromId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['initiatorAmountFinal', uInt],\n ['responderAmountFinal', uInt],\n ['ttl', shortUInt],\n ['fee', fee],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelForceProgressTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['fromId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['payload', FIELD_TYPES.binary, 'tx'],\n ['round', shortUInt],\n ['update', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['stateHash', FIELD_TYPES.binary, 'st'],\n ['offChainTrees', FIELD_TYPES.stateTree],\n ['ttl', shortUInt],\n ['fee', fee],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelOffChainTx]: {\n 2: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['round', shortUInt],\n ['stateHash', FIELD_TYPES.binary, 'st'],\n ],\n },\n [Tag.Channel]: {\n 3: [\n ...BASE_TX,\n ['initiator', FIELD_TYPES.id, Encoding.AccountAddress],\n ['responder', FIELD_TYPES.id, Encoding.AccountAddress],\n ['channelAmount', uInt],\n ['initiatorAmount', uInt],\n ['responderAmount', uInt],\n ['channelReserve', uInt],\n ['initiatorDelegateIds', FIELD_TYPES.ids],\n ['responderDelegateIds', FIELD_TYPES.ids],\n ['stateHash', FIELD_TYPES.hex],\n ['round', shortUInt],\n ['soloRound', uInt],\n ['lockPeriod', uInt],\n ['lockedUntil', uInt],\n ['initiatorAuth', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['responderAuth', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ],\n },\n [Tag.ChannelSnapshotSoloTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['fromId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['payload', FIELD_TYPES.binary, 'tx'],\n ['ttl', shortUInt],\n ['fee', fee],\n ['nonce', shortUInt],\n ],\n },\n [Tag.ChannelOffChainUpdateTransfer]: {\n 1: [\n ...BASE_TX,\n ['from', FIELD_TYPES.id, Encoding.AccountAddress],\n ['to', FIELD_TYPES.id, Encoding.AccountAddress],\n ['amount', uInt],\n ],\n },\n [Tag.ChannelOffChainUpdateDeposit]: {\n 1: [\n ...BASE_TX,\n ['from', FIELD_TYPES.id, Encoding.AccountAddress],\n ['amount', uInt],\n ],\n },\n [Tag.ChannelOffChainUpdateWithdraw]: {\n 1: [\n ...BASE_TX,\n ['from', FIELD_TYPES.id, Encoding.AccountAddress],\n ['amount', uInt],\n ],\n },\n [Tag.ChannelOffChainUpdateCreateContract]: {\n 1: [\n ...BASE_TX,\n ['owner', FIELD_TYPES.id, Encoding.AccountAddress],\n ['ctVersion', FIELD_TYPES.ctVersion],\n ['code', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['deposit', uInt],\n ['callData', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ],\n },\n [Tag.ChannelOffChainUpdateCallContract]: {\n 1: [\n ...BASE_TX,\n ['caller', FIELD_TYPES.id, Encoding.AccountAddress],\n ['contract', FIELD_TYPES.id, Encoding.ContractAddress],\n ['abiVersion', FIELD_TYPES.abiVersion],\n ['amount', uInt],\n ['callData', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['callStack', FIELD_TYPES.callStack],\n ['gasPrice', gasPrice],\n ['gasLimit', gasLimit],\n ],\n },\n [Tag.ChannelClientReconnectTx]: {\n 1: [\n ...BASE_TX,\n ['channelId', FIELD_TYPES.id, Encoding.Channel],\n ['round', shortUInt],\n ['role', FIELD_TYPES.string],\n ['pubkey', FIELD_TYPES.id, Encoding.AccountAddress],\n ],\n },\n [Tag.TreesPoi]: {\n 1: [\n ...BASE_TX,\n ['accounts', FIELD_TYPES.mptrees],\n ['calls', FIELD_TYPES.mptrees],\n ['channels', FIELD_TYPES.mptrees],\n ['contracts', FIELD_TYPES.mptrees],\n ['ns', FIELD_TYPES.mptrees],\n ['oracles', FIELD_TYPES.mptrees],\n ],\n },\n [Tag.StateTrees]: {\n 1: [\n ...BASE_TX,\n ['contracts', FIELD_TYPES.rlpBinary],\n ['calls', FIELD_TYPES.rlpBinary],\n ['channels', FIELD_TYPES.rlpBinary],\n ['ns', FIELD_TYPES.rlpBinary],\n ['oracles', FIELD_TYPES.rlpBinary],\n ['accounts', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.Mtree]: {\n 1: [\n ...BASE_TX,\n ['values', FIELD_TYPES.rlpBinaries],\n ],\n },\n [Tag.MtreeValue]: {\n 1: [\n ...BASE_TX,\n ['key', FIELD_TYPES.hex],\n ['value', FIELD_TYPES.rawBinary],\n ],\n },\n [Tag.ContractsMtree]: {\n 1: [\n ...BASE_TX,\n ['contracts', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.CallsMtree]: {\n 1: [\n ...BASE_TX,\n ['calls', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.ChannelsMtree]: {\n 1: [\n ...BASE_TX,\n ['channels', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.NameserviceMtree]: {\n 1: [\n ...BASE_TX,\n ['mtree', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.OraclesMtree]: {\n 1: [\n ...BASE_TX,\n ['otree', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.AccountsMtree]: {\n 1: [\n ...BASE_TX,\n ['accounts', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.GaAttachTx]: {\n 1: [\n ...BASE_TX,\n ['ownerId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['code', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['authFun', FIELD_TYPES.rawBinary],\n ['ctVersion', FIELD_TYPES.ctVersion],\n ['fee', fee],\n ['ttl', shortUInt],\n ['gasLimit', gasLimit],\n ['gasPrice', gasPrice],\n ['callData', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ],\n },\n [Tag.GaMetaTx]: {\n 2: [\n ...BASE_TX,\n ['gaId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['authData', FIELD_TYPES.binary, Encoding.ContractBytearray],\n ['abiVersion', FIELD_TYPES.abiVersion],\n ['fee', fee],\n ['gasLimit', gasLimit],\n ['gasPrice', gasPrice],\n ['tx', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.PayingForTx]: {\n 1: [\n ...BASE_TX,\n ['payerId', FIELD_TYPES.id, Encoding.AccountAddress],\n ['nonce', shortUInt],\n ['fee', fee],\n ['tx', FIELD_TYPES.rlpBinary],\n ],\n },\n [Tag.CompilerSophia]: {\n 3: [\n ...BASE_TX,\n ['sourceCodeHash', FIELD_TYPES.rawBinary],\n ['typeInfo', FIELD_TYPES.sophiaCodeTypeInfo],\n ['byteCode', FIELD_TYPES.rawBinary],\n ['compilerVersion', FIELD_TYPES.string],\n ['payable', FIELD_TYPES.bool],\n ],\n },\n} as const;\n\nexport type TxTypeSchemas = {\n [key in Tag]: BuildTxArgBySchema<\n typeof TX_SCHEMA[key][keyof typeof TX_SCHEMA[key]]\n >\n};\n\nexport type TxSchema = TxTypeSchemas[Tag];\nexport type TxParamsCommon = Partial<UnionToIntersection<TxSchema>>;\n","/*\n * ISC License (ISC)\n * Copyright (c) 2021 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/* eslint-disable default-case */\nimport { encode as rlpEncode } from 'rlp';\nimport type { Input } from 'rlp';\nimport { hash } from './crypto';\nimport {\n MerkleTreeHashMismatchError,\n MissingNodeInTreeError,\n UnknownPathNibbleError,\n UnknownNodeLengthError,\n} from './errors';\n\nenum NodeType {\n Branch,\n Extension,\n Leaf,\n}\n\nexport type MPTreeBinary = [Buffer, Array<[Buffer, Buffer[]]>];\n\nexport default class MPTree {\n private readonly rootHash: string;\n\n private readonly nodes: { [key: string]: Buffer[] };\n\n private static nodeHash(node: Input): string {\n return Buffer.from(hash(rlpEncode(node))).toString('hex');\n }\n\n /**\n * Deserialize Merkle Patricia Tree\n * @param binary - Binary\n * @returns Merkle Patricia Tree\n */\n constructor(binary: MPTreeBinary) {\n this.rootHash = binary[0].toString('hex');\n this.nodes = Object.fromEntries(\n binary[1].map((node) => [node[0].toString('hex'), node[1]]),\n );\n\n if (this.nodes[this.rootHash] === undefined) throw new MissingNodeInTreeError('Can\\'t find a node by root hash');\n Object.entries(this.nodes).forEach(([key, node]) => {\n if (MPTree.nodeHash(node) !== key) throw new MerkleTreeHashMismatchError();\n const { type, payload } = MPTree.parseNode(node);\n switch (type) {\n case NodeType.Branch:\n payload\n .slice(0, 16)\n .filter((n) => n.length)\n .forEach((n) => {\n if (this.nodes[n.toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in branch node');\n }\n });\n break;\n case NodeType.Extension:\n if (this.nodes[payload[0].toString('hex')] === undefined) {\n throw new MissingNodeInTreeError('Can\\'t find a node by hash in extension node');\n }\n }\n });\n }\n\n isEqual(tree: MPTree): boolean {\n return this.rootHash === tree.rootHash;\n }\n\n private static parseNode(node: Buffer[]): {\n type: NodeType;\n payload: Buffer[];\n path: string | null;\n } {\n switch (node.length) {\n case 17:\n return { type: NodeType.Branch, payload: node, path: null };\n case 2: {\n const nibble = node[0][0] >> 4; // eslint-disable-line no-bitwise\n if (nibble > 3) throw new UnknownPathNibbleError(nibble);\n const type = nibble <= 1 ? NodeType.Extension : NodeType.Leaf;\n const slice = [0, 2].includes(nibble) ? 2 : 1;\n return { type, payload: [node[1]], path: node[0].toString('hex').slice(slice) };\n }\n default:\n throw new UnknownNodeLengthError(node.length);\n }\n }\n\n /**\n * Serialize Merkle Patricia Tree\n * @returns Binary\n */\n serialize(): MPTreeBinary {\n return [\n Buffer.from(this.rootHash, 'hex'),\n Object.entries(this.nodes).map(([mptHash, value]) => ([\n Buffer.from(mptHash, 'hex'),\n value,\n ])),\n ];\n }\n\n /**\n * Retrieve value from Merkle Patricia Tree\n * @param _key - The key of the element to retrieve\n * @returns Value associated to the specified key\n */\n get(_key: string): Buffer | undefined {\n let searchFrom = this.rootHash;\n let key = _key;\n while (true) { // eslint-disable-line no-constant-condition\n const { type, payload, path } = MPTree.parseNode(this.nodes[searchFrom]);\n switch (type) {\n case NodeType.Branch:\n if (key.length === 0) return payload[16];\n searchFrom = payload[+`0x${key[0]}`].toString('hex');\n key = key.substring(1);\n break;\n case NodeType.Extension:\n if (key.substring(0, path?.length) !== path) return undefined;\n searchFrom = payload[0].toString('hex');\n key = key.substring(path.length);\n break;\n case NodeType.Leaf:\n if (path !== key) return undefined;\n return payload[0];\n }\n }\n }\n}\n","import { decode as rlpDecode, encode as rlpEncode, NestedUint8Array } from 'rlp';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../../utils/encoder';\nimport { AE_AMOUNT_FORMATS } from '../../utils/amount-formatter';\nimport { hash } from '../../utils/crypto';\nimport { Field } from './field-types';\nimport {\n FIELD_TYPES,\n RawTxObject,\n TX_SCHEMA,\n TxField,\n TxParamsCommon,\n TxSchema,\n TxTypeSchemas,\n} from './schema';\nimport { Tag } from './constants';\nimport {\n buildContractId, buildPointers, readInt, readPointers, writeInt,\n} from './helpers';\nimport { readId, writeId } from './address';\nimport { toBytes } from '../../utils/bytes';\nimport MPTree, { MPTreeBinary } from '../../utils/mptree';\nimport {\n ArgumentError,\n DecodeError,\n InvalidTxParamsError,\n SchemaNotFoundError,\n} from '../../utils/errors';\nimport { isKeyOfObject } from '../../utils/other';\nimport { NamePointer } from '../../apis/node';\n\n/**\n * JavaScript-based Transaction builder\n */\n\n// SERIALIZE AND DESERIALIZE PART\nfunction deserializeField(\n value: any,\n type: FIELD_TYPES | Field,\n prefix?: Encoding | Encoding[],\n): any {\n if (value == null) return '';\n switch (type) {\n case FIELD_TYPES.ctVersion: {\n const [vm, , abi] = value;\n return {\n vmVersion: readInt(Buffer.from([vm])),\n abiVersion: readInt(Buffer.from([abi])),\n };\n }\n case FIELD_TYPES.abiVersion:\n case FIELD_TYPES.ttlType:\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 Encoding);\n case FIELD_TYPES.stateTree:\n return encode(value, Encoding.StateTrees);\n case FIELD_TYPES.string:\n return value.toString();\n case FIELD_TYPES.payload:\n return encode(value, Encoding.Bytearray);\n case FIELD_TYPES.pointers:\n return readPointers(value);\n case FIELD_TYPES.rlpBinary:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return unpackTx(encode(value, Encoding.Transaction));\n case FIELD_TYPES.rlpBinaries:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.rawBinary:\n return value;\n case FIELD_TYPES.hex:\n return value.toString('hex');\n case FIELD_TYPES.offChainUpdates:\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return value.map((v: Buffer) => unpackTx(encode(v, Encoding.Transaction)));\n case FIELD_TYPES.callStack:\n // TODO: fix this\n return [readInt(value)];\n case FIELD_TYPES.mptrees:\n return value.map((t: MPTreeBinary) => new MPTree(t));\n case FIELD_TYPES.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 (typeof type === 'number') return value;\n return type.deserialize(value);\n }\n}\n\nfunction serializeField(value: any, type: FIELD_TYPES | Field, params: any): any {\n switch (type) {\n case FIELD_TYPES.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 Encoded.Bytearray)\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: MPTree) => 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 (typeof type === 'number') return value;\n // @ts-expect-error will be solved after removing the whole serializeField function\n return type.serialize(value, params);\n }\n}\n\nfunction validateField(\n value: any,\n type: FIELD_TYPES | Field,\n prefix?: Encoding | Encoding[],\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.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 undefined;\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 undefined;\n case FIELD_TYPES.pointers:\n if (!Array.isArray(value)) return 'Value must be of type Array';\n if (value.some((p: NamePointer) => !(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 return undefined;\n default:\n return undefined;\n }\n}\n\n/**\n * Validate transaction params\n * @category transaction builder\n * @param params - Object with tx params\n * @param schema - Transaction schema\n * @param excludeKeys - Array of keys to exclude for validation\n * @returns Object with validation errors\n */\nexport function validateParams(\n params: any,\n schema: TxField[],\n { 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', 'fee', 'gasLimit'].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 * @category transaction builder\n * @param binary - Array with binary transaction field's\n * @param schema - Transaction schema\n * @returns Object with transaction field's\n */\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\n/**\n * @category transaction builder\n */\nexport interface BuiltTx<Tx extends TxSchema, Prefix extends Encoding> {\n tx: Encoded.Generic<Prefix>;\n rlpEncoded: Uint8Array;\n binary: Uint8Array;\n txObject: RawTxObject<Tx>;\n}\n\n/**\n * Build transaction hash\n * @category transaction builder\n * @param _params - Object with tx params\n * @param type - Transaction type\n * @param options - options\n * @param options.excludeKeys - Array of keys to exclude for validation and build\n * @param options.denomination - Denomination of amounts\n * @param options.prefix - Prefix of transaction\n * @throws {@link InvalidTxParamsError}\n * @returns object\n * @returns object.tx Base64Check transaction hash with 'tx_' prefix\n * @returns object.rlpEncoded rlp encoded transaction\n * @returns object.binary binary transaction\n */\nexport function buildTx<TxType extends Tag, Prefix>(\n _params: Omit<TxTypeSchemas[TxType], 'tag' | 'VSN'> & { VSN?: number },\n type: TxType,\n {\n excludeKeys = [],\n prefix = Encoding.Transaction,\n vsn,\n denomination = AE_AMOUNT_FORMATS.AETTOS,\n }: {\n excludeKeys?: string[];\n prefix?: Encoding;\n vsn?: number;\n denomination?: AE_AMOUNT_FORMATS;\n } = {},\n): BuiltTx<TxSchema, Prefix extends Encoding ? Prefix : Encoding.Transaction> {\n const schemas = TX_SCHEMA[type];\n\n vsn ??= Math.max(...Object.keys(schemas).map((a) => +a));\n if (!isKeyOfObject(vsn, schemas)) throw new SchemaNotFoundError('serialization', Tag[type], vsn);\n\n const schema = schemas[vsn] as unknown as TxField[];\n\n const params = _params as TxParamsCommon & { onNode: Node; denomination?: AE_AMOUNT_FORMATS };\n params.VSN = vsn;\n params.tag = type;\n params.denomination = denomination;\n const filteredSchema = schema.filter(([key]) => !excludeKeys.includes(key));\n\n // Validation\n const valid = validateParams(params, schema, { excludeKeys });\n if (Object.keys(valid).length > 0) {\n throw new InvalidTxParamsError(`Transaction build error. ${JSON.stringify(valid)}`);\n }\n\n const binary = filteredSchema\n .map(([key, fieldType]: [keyof TxSchema, FIELD_TYPES, Encoding]) => (\n serializeField(\n params[key],\n fieldType,\n {\n ...params,\n txType: type,\n rebuildTx: (overrideParams: any) => buildTx(\n { ...params, ...overrideParams },\n type,\n {\n excludeKeys, prefix: Encoding.Transaction, vsn, denomination,\n },\n ),\n },\n )\n ))\n .filter((e) => e !== undefined);\n\n const rlpEncoded = rlpEncode(binary);\n const tx = encode(rlpEncoded, prefix);\n return {\n tx,\n rlpEncoded,\n binary,\n txObject: unpackRawTx<TxTypeSchemas[Tag]>(binary, schema),\n } as any;\n}\n\n/**\n * @category transaction builder\n */\nexport interface TxUnpacked<Tx extends TxSchema> {\n txType: Tag;\n tx: RawTxObject<Tx>;\n rlpEncoded: Uint8Array;\n}\n/**\n * Unpack transaction hash\n * @category transaction builder\n * @param encodedTx - Transaction to unpack\n * @param txType - Expected transaction type\n * @returns object\n * @returns object.tx Object with transaction param's\n * @returns object.txType Transaction type\n */\nexport function unpackTx<TxType extends Tag>(\n encodedTx: Encoded.Transaction | Encoded.Poi,\n txType?: TxType,\n): TxUnpacked<TxTypeSchemas[TxType]> {\n const rlpEncoded = decode(encodedTx);\n const binary = rlpDecode(rlpEncoded);\n const objId = +readInt(binary[0] as Buffer);\n if (!isKeyOfObject(objId, TX_SCHEMA)) throw new DecodeError(`Unknown transaction tag: ${objId}`);\n if (txType != null && txType !== objId) throw new DecodeError(`Expected transaction to have ${Tag[txType]} tag, got ${Tag[objId]} instead`);\n const vsn = +readInt(binary[1] as Buffer);\n if (!isKeyOfObject(vsn, TX_SCHEMA[objId])) throw new SchemaNotFoundError('deserialization', `tag ${objId}`, vsn);\n const schema = TX_SCHEMA[objId][vsn];\n return {\n txType: objId,\n tx: unpackRawTx<TxTypeSchemas[TxType]>(binary, schema),\n rlpEncoded,\n };\n}\n\n/**\n * Build a transaction hash\n * @category transaction builder\n * @param rawTx - base64 or rlp encoded transaction\n * @returns Transaction hash\n */\nexport function buildTxHash(rawTx: Encoded.Transaction | Uint8Array): Encoded.TxHash {\n const data = typeof rawTx === 'string' && rawTx.startsWith('tx_')\n ? decode(rawTx)\n : rawTx;\n return encode(hash(data), Encoding.TxHash);\n}\n\n/**\n * Build a contract public key by contractCreateTx or gaAttach\n * @category contract\n * @param contractTx - Transaction\n * @returns Contract public key\n */\nexport function buildContractIdByContractTx(\n contractTx: Encoded.Transaction,\n): Encoded.ContractAddress {\n const { txType, tx } = unpackTx<Tag.ContractCreateTx | Tag.GaAttachTx>(contractTx);\n if (![Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {\n throw new ArgumentError('contractCreateTx', 'a contractCreateTx or gaAttach', txType);\n }\n return buildContractId(tx.ownerId, +tx.nonce);\n}\n","import BigNumber from 'bignumber.js';\nimport { hash, verify } from '../utils/crypto';\nimport {\n CtVersion,\n PROTOCOL_VM_ABI,\n RawTxObject,\n TxParamsCommon,\n TxSchema,\n TxTypeSchemas,\n} from './builder/schema';\nimport { Tag } from './builder/constants';\nimport { TxUnpacked, unpackTx } from './builder';\nimport { UnsupportedProtocolError } from '../utils/errors';\nimport { concatBuffers, isKeyOfObject } from '../utils/other';\nimport {\n decode, encode, Encoded, Encoding,\n} from '../utils/encoder';\nimport Node from '../Node';\n\ninterface Account {\n balance: bigint;\n id: Encoded.AccountAddress;\n nonce: number;\n}\n\nexport interface ValidatorResult {\n message: string;\n key: string;\n checkedKeys: string[];\n}\n\ntype Validator = (\n tx: {\n encodedTx: TxUnpacked<TxSchema>;\n signatures: Buffer[];\n tx: TxUnpacked<TxSchema> & {\n tx: TxTypeSchemas[Tag.SignedTx];\n };\n nonce?: number;\n ttl?: number;\n amount?: number;\n fee?: number;\n nameFee?: number;\n ctVersion?: Partial<CtVersion>;\n abiVersion?: number;\n contractId?: Encoded.ContractAddress;\n },\n options: {\n account?: Account;\n nodeNetworkId: string;\n parentTxTypes: Tag[];\n node: Node;\n txType: Tag;\n height: number;\n consensusProtocolVersion: number;\n }\n) => ValidatorResult[] | Promise<ValidatorResult[]>;\n\nconst validators: Validator[] = [];\n\nconst getSenderAddress = (\n tx: TxParamsCommon | RawTxObject<TxSchema>,\n): Encoded.AccountAddress | undefined => [\n 'senderId', 'accountId', 'ownerId', 'callerId',\n 'oracleId', 'fromId', 'initiator', 'gaId', 'payerId',\n]\n .map((key: keyof TxSchema) => tx[key])\n .filter((a) => a)\n .map((a) => a?.toString().replace(/^ok_/, 'ak_'))[0] as Encoded.AccountAddress | undefined;\n\n/**\n * Transaction Validator\n * This function validates some of transaction properties,\n * to make sure it can be posted it to the chain\n * @category transaction builder\n * @param transaction - Base64Check-encoded transaction\n * @param node - Node to validate transaction against\n * @param parentTxTypes - Types of parent transactions\n * @returns Array with verification errors\n * @example const errors = await verifyTransaction(transaction, node)\n */\nexport default async function verifyTransaction(\n transaction: Encoded.Transaction | Encoded.Poi,\n node: Node,\n parentTxTypes: Tag[] = [],\n): Promise<ValidatorResult[]> {\n const { tx, txType } = unpackTx<Tag.SignedTx>(transaction);\n const address = getSenderAddress(tx)\n ?? (txType === Tag.SignedTx ? getSenderAddress(tx.encodedTx.tx) : undefined);\n const [account, { height }, { consensusProtocolVersion, nodeNetworkId }] = await Promise.all([\n address == null\n ? undefined\n : node.getAccountByPubkey(address)\n .catch(() => ({ id: address, balance: 0n, nonce: 0 }))\n // TODO: remove after fixing https://github.com/aeternity/aepp-sdk-js/issues/1537\n .then((acc) => ({ ...acc, id: acc.id as Encoded.AccountAddress })),\n node.getCurrentKeyBlockHeight(),\n node.getNodeInfo(),\n ]);\n\n return (await Promise.all(\n validators.map((v) => v(\n tx as any,\n {\n txType, node, account, height, consensusProtocolVersion, nodeNetworkId, parentTxTypes,\n },\n )),\n )).flat();\n}\n\nvalidators.push(\n ({ encodedTx, signatures }, { account, nodeNetworkId, parentTxTypes }) => {\n if ((encodedTx ?? signatures) === undefined) return [];\n if (account == null) return [];\n if (signatures.length !== 1) return []; // TODO: Support multisignature?\n const prefix = Buffer.from([\n nodeNetworkId,\n ...parentTxTypes.includes(Tag.PayingForTx) ? ['inner_tx'] : [],\n ].join('-'));\n const txWithNetworkId = concatBuffers([prefix, encodedTx.rlpEncoded]);\n const txHashWithNetworkId = concatBuffers([prefix, hash(encodedTx.rlpEncoded)]);\n const decodedPub = decode(account.id);\n if (verify(txWithNetworkId, signatures[0], decodedPub)\n || verify(txHashWithNetworkId, signatures[0], decodedPub)) return [];\n return [{\n message: 'Signature cannot be verified, please ensure that you transaction have'\n + ' the correct prefix and the correct private key for the sender address',\n key: 'InvalidSignature',\n checkedKeys: ['encodedTx', 'signatures'],\n }];\n },\n async ({ encodedTx, tx }, { node, parentTxTypes, txType }) => {\n if ((encodedTx ?? tx) === undefined) return [];\n return verifyTransaction(\n encode((encodedTx ?? tx).rlpEncoded, Encoding.Transaction),\n node,\n [...parentTxTypes, txType],\n );\n },\n ({ ttl }, { height }) => {\n if (ttl === undefined) return [];\n ttl = +ttl;\n if (ttl === 0 || ttl >= height) return [];\n return [{\n message: `TTL ${ttl} is already expired, current height is ${height}`,\n key: 'ExpiredTTL',\n checkedKeys: ['ttl'],\n }];\n },\n ({\n amount, fee, nameFee, tx,\n }, { account, parentTxTypes, txType }) => {\n if (account == null) return [];\n if ((amount ?? fee ?? nameFee) === undefined) return [];\n fee ??= 0;\n const cost = new BigNumber(fee).plus(nameFee ?? 0).plus(amount ?? 0)\n .plus(txType === Tag.PayingForTx ? (tx.tx.encodedTx.tx).fee : 0)\n .minus(parentTxTypes.includes(Tag.PayingForTx) ? fee : 0);\n if (cost.lte(account.balance.toString())) return [];\n return [{\n message: `Account balance ${account.balance.toString()} is not enough to execute the transaction that costs ${cost.toFixed()}`,\n key: 'InsufficientBalance',\n checkedKeys: ['amount', 'fee', 'nameFee'],\n }];\n },\n ({ nonce }, { account, parentTxTypes }) => {\n if (nonce == null || account == null || parentTxTypes.includes(Tag.GaMetaTx)) return [];\n nonce = +nonce;\n const validNonce = account.nonce + 1;\n if (nonce === validNonce) return [];\n return [{\n ...nonce < validNonce\n ? {\n message: `Nonce ${nonce} is already used, valid nonce is ${validNonce}`,\n key: 'NonceAlreadyUsed',\n }\n : {\n message: `Nonce ${nonce} is too high, valid nonce is ${validNonce}`,\n key: 'NonceHigh',\n },\n checkedKeys: ['nonce'],\n }];\n },\n ({ ctVersion, abiVersion }, { txType, consensusProtocolVersion }) => {\n if (!isKeyOfObject(consensusProtocolVersion, PROTOCOL_VM_ABI)) {\n throw new UnsupportedProtocolError(`Unsupported protocol: ${consensusProtocolVersion}`);\n }\n const protocol = PROTOCOL_VM_ABI[consensusProtocolVersion];\n\n // If not contract create tx\n if (ctVersion == null) ctVersion = { abiVersion };\n const txProtocol = protocol[txType as keyof typeof protocol];\n if (txProtocol == null) return [];\n if (Object.entries(ctVersion).some(\n ([\n key,\n value,\n ]: [\n key:keyof typeof txProtocol,\n value:any]) => !(txProtocol[key].includes(+value as never)),\n )) {\n return [{\n message: `ABI/VM version ${JSON.stringify(ctVersion)} is wrong, supported is: ${JSON.stringify(txProtocol)}`,\n key: 'VmAndAbiVersionMismatch',\n checkedKeys: ['ctVersion', 'abiVersion'],\n }];\n }\n return [];\n },\n async ({ contractId }, { txType, node }) => {\n if (Tag.ContractCallTx !== txType) return [];\n contractId = contractId as Encoded.ContractAddress;\n try {\n const { active } = await node.getContract(contractId);\n if (active) return [];\n return [{\n message: `Contract ${contractId} is not active`,\n key: 'ContractNotActive',\n checkedKeys: ['contractId'],\n }];\n } catch (error) {\n if (error.response?.parsedBody?.reason == null) throw error;\n return [{\n message: error.response.parsedBody.reason,\n key: 'ContractNotFound',\n checkedKeys: ['contractId'],\n }];\n }\n },\n);\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { AE_AMOUNT_FORMATS, formatAmount } from './utils/amount-formatter';\nimport verifyTransaction, { ValidatorResult } from './tx/validator';\nimport { pause } from './utils/other';\nimport { isNameValid, produceNameId } from './tx/builder/helpers';\nimport { DRY_RUN_ACCOUNT } from './tx/builder/schema';\nimport { AensName } from './tx/builder/constants';\nimport {\n AensPointerContextError, DryRunError, InvalidAensNameError, TransactionError,\n TxTimedOutError, TxNotInChainError, InternalError,\n} from './utils/errors';\nimport Node, { TransformNodeType } from './Node';\nimport {\n Account as AccountNode, ByteCode, ContractObject, DryRunResult, DryRunResults,\n Generation, KeyBlock, MicroBlockHeader, NameEntry, SignedTx,\n} from './apis/node';\nimport { decode, Encoded, Encoding } from './utils/encoder';\nimport AccountBase from './account/Base';\n\n/**\n * @category chain\n */\nexport function _getPollInterval(\n type: 'block' | 'microblock',\n { _expectedMineRate = 180000, _microBlockCycle = 3000, _maxPollInterval = 5000 }:\n { _expectedMineRate?: number; _microBlockCycle?: number; _maxPollInterval?: number },\n): number {\n const base = {\n block: _expectedMineRate,\n microblock: _microBlockCycle,\n }[type];\n return Math.min(base / 3, _maxPollInterval);\n}\n\n/**\n * @category exception\n */\nexport class InvalidTxError extends TransactionError {\n validation: ValidatorResult[];\n\n transaction: Encoded.Transaction;\n\n constructor(\n message: string,\n validation: ValidatorResult[],\n transaction: Encoded.Transaction,\n ) {\n super(message);\n this.name = 'InvalidTxError';\n this.validation = validation;\n this.transaction = transaction;\n }\n}\n\n/**\n * Obtain current height of the chain\n * @category chain\n * @returns Current chain height\n */\nexport async function getHeight({ onNode }: { onNode: Node }): Promise<number> {\n return (await onNode.getCurrentKeyBlockHeight()).height;\n}\n\n/**\n * Wait for a transaction to be mined\n * @category chain\n * @param th - The hash of transaction to poll\n * @param options - Options\n * @param options.interval - Interval (in ms) at which to poll the chain\n * @param options.blocks - Number of blocks mined after which to fail\n * @param options.onNode - Node to use\n * @returns The transaction as it was mined\n */\nexport async function poll(\n th: Encoded.TxHash,\n {\n blocks = 10, interval, onNode, ...options\n }:\n { blocks?: number; interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<TransformNodeType<SignedTx>> {\n interval ??= _getPollInterval('microblock', options);\n const max = await getHeight({ onNode }) + blocks;\n do {\n const tx = await onNode.getTransactionByHash(th);\n if (tx.blockHeight !== -1) return tx;\n await pause(interval);\n } while (await getHeight({ onNode }) < max);\n throw new TxTimedOutError(blocks, th);\n}\n\n/**\n * Wait for the chain to reach a specific height\n * @category chain\n * @param height - Height to wait for\n * @param options - Options\n * @param options.interval - Interval (in ms) at which to poll the chain\n * @param options.onNode - Node to use\n * @returns Current chain height\n */\nexport async function awaitHeight(\n height: number,\n { interval, onNode, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<number> {\n interval ??= _getPollInterval('block', options);\n let currentHeight;\n do {\n if (currentHeight != null) await pause(interval);\n currentHeight = (await onNode.getCurrentKeyBlockHeight()).height;\n } while (currentHeight < height);\n return currentHeight;\n}\n\n/**\n * Wait for transaction confirmation\n * @category chain\n * @param txHash - Transaction hash\n * @param options - Options\n * @param options.confirm - Number of micro blocks to wait for transaction confirmation\n * @param options.onNode - Node to use\n * @returns Current Height\n */\nexport async function waitForTxConfirm(\n txHash: Encoded.TxHash,\n { confirm = 3, onNode, ...options }:\n { confirm?: number; onNode: Node } & Parameters<typeof awaitHeight>[1],\n): Promise<number> {\n const { blockHeight } = await onNode.getTransactionByHash(txHash);\n const height = await awaitHeight(blockHeight + confirm, { onNode, ...options });\n const { blockHeight: newBlockHeight } = await onNode.getTransactionByHash(txHash);\n switch (newBlockHeight) {\n case -1:\n throw new TxNotInChainError(txHash);\n case blockHeight:\n return height;\n default:\n return waitForTxConfirm(txHash, { onNode, confirm, ...options });\n }\n}\n\n/**\n * Submit a signed transaction for mining\n * @category chain\n * @param tx - Transaction to submit\n * @param options - Options\n * @param options.onNode - Node to use\n * @param options.onAccount - Account to use\n * @param options.verify - Verify transaction before sending\n * @param options.waitMined - Ensure that transaction get into block\n * @param options.confirm - Number of micro blocks that should be mined after tx get included\n * @returns Transaction details\n */\nexport async function sendTransaction(\n tx: Encoded.Transaction,\n {\n onNode, onAccount, verify = true, waitMined = true, confirm, ...options\n }:\n SendTransactionOptions,\n): Promise<SendTransactionReturnType> {\n if (verify) {\n const validation = await verifyTransaction(tx, onNode);\n if (validation.length > 0) {\n const message = `Transaction verification errors: ${\n validation.map((v: { message: string }) => v.message).join(', ')}`;\n throw new InvalidTxError(message, validation, tx);\n }\n }\n\n try {\n let __queue;\n try {\n __queue = onAccount != null ? `tx-${await onAccount.address(options)}` : null;\n } catch (error) {\n __queue = null;\n }\n const { txHash } = await onNode.postTransaction(\n { tx },\n __queue != null ? { requestOptions: { customHeaders: { __queue } } } : {},\n );\n\n if (waitMined) {\n const pollResult = await poll(txHash, { onNode, ...options });\n const txData = {\n ...pollResult,\n hash: pollResult.hash as Encoded.TxHash,\n rawTx: tx,\n };\n // wait for transaction confirmation\n if (confirm != null && (confirm === true || confirm > 0)) {\n const c = typeof confirm === 'boolean' ? undefined : confirm;\n return {\n ...txData,\n confirmationHeight: await waitForTxConfirm(txHash, { onNode, confirm: c, ...options }),\n };\n }\n return txData;\n }\n return { hash: txHash, rawTx: tx };\n } catch (error) {\n throw Object.assign(error, {\n rawTx: tx,\n verifyTx: async () => verifyTransaction(tx, onNode),\n });\n }\n}\n\ntype SendTransactionOptionsType = {\n onNode: Node;\n onAccount?: AccountBase;\n verify?: boolean;\n waitMined?: boolean;\n confirm?: boolean | number;\n} & Parameters<typeof poll>[1] & Omit<Parameters<typeof waitForTxConfirm>[1], 'confirm'>;\ninterface SendTransactionOptions extends SendTransactionOptionsType {}\ninterface SendTransactionReturnType extends Partial<TransformNodeType<SignedTx>> {\n hash: Encoded.TxHash;\n rawTx: Encoded.Transaction;\n confirmationHeight?: number;\n}\n\n/**\n * Get account by account public key\n * @category chain\n * @param address - Account address (public key)\n * @param options - Options\n * @param options.height - Get account on specific block by block height\n * @param options.hash - Get account on specific block by micro block hash or key block hash\n * @param options.onNode - Node to use\n */\nexport async function getAccount(\n address: Encoded.AccountAddress | Encoded.ContractAddress,\n { height, hash, onNode }:\n { height?: number; hash?: Encoded.KeyBlockHash | Encoded.MicroBlockHash; onNode: Node },\n): Promise<TransformNodeType<AccountNode>> {\n if (height != null) return onNode.getAccountByPubkeyAndHeight(address, height);\n if (hash != null) return onNode.getAccountByPubkeyAndHash(address, hash);\n return onNode.getAccountByPubkey(address);\n}\n\n/**\n * Request the balance of specified account\n * @category chain\n * @param address - The public account address to obtain the balance for\n * @param options - Options\n * @param options.format\n * @param options.height - The chain height at which to obtain the balance for\n * (default: top of chain)\n * @param options.hash - The block hash on which to obtain the balance for (default: top of chain)\n */\nexport async function getBalance(\n address: Encoded.AccountAddress | Encoded.ContractAddress,\n { format = AE_AMOUNT_FORMATS.AETTOS, ...options }:\n { format?: AE_AMOUNT_FORMATS } & Parameters<typeof getAccount>[1],\n): Promise<string> {\n const { balance } = await getAccount(address, options).catch(() => ({ balance: 0n }));\n\n return formatAmount(balance, { targetDenomination: format });\n}\n\n/**\n * Obtain current generation\n * @category chain\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Current Generation\n */\nexport async function getCurrentGeneration(\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<Generation>> {\n return onNode.getCurrentGeneration();\n}\n\n/**\n * Get generation by hash or height\n * @category chain\n * @param hashOrHeight - Generation hash or height\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Generation\n */\nexport async function getGeneration(\n hashOrHeight: Encoded.KeyBlockHash | number,\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<Generation>> {\n if (typeof hashOrHeight === 'number') return onNode.getGenerationByHeight(hashOrHeight);\n return onNode.getGenerationByHash(hashOrHeight);\n}\n\n/**\n * Get micro block transactions\n * @category chain\n * @param hash - Micro block hash\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Transactions\n */\nexport async function getMicroBlockTransactions(\n hash: Encoded.MicroBlockHash,\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<SignedTx[]>> {\n return (await onNode.getMicroBlockTransactionsByHash(hash)).transactions;\n}\n\n/**\n * Get key block\n * @category chain\n * @param hashOrHeight - Key block hash or height\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Key Block\n */\nexport async function getKeyBlock(\n hashOrHeight: Encoded.KeyBlockHash | number,\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<KeyBlock>> {\n if (typeof hashOrHeight === 'number') return onNode.getKeyBlockByHeight(hashOrHeight);\n return onNode.getKeyBlockByHash(hashOrHeight);\n}\n\n/**\n * Get micro block header\n * @category chain\n * @param hash - Micro block hash\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Micro block header\n */\nexport async function getMicroBlockHeader(\n hash: Encoded.MicroBlockHash,\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<MicroBlockHeader>> {\n return onNode.getMicroBlockHeaderByHash(hash);\n}\n\ninterface TxDryRunArguments {\n tx: Encoded.Transaction;\n accountAddress: Encoded.AccountAddress;\n top?: number;\n txEvents?: any;\n resolve: Function;\n reject: Function;\n}\nconst txDryRunRequests: Map<string, TxDryRunArguments[] & { timeout?: NodeJS.Timeout }> = new Map();\n\nasync function txDryRunHandler(key: string, onNode: Node): Promise<void> {\n const rs = txDryRunRequests.get(key);\n txDryRunRequests.delete(key);\n if (rs == null) throw new InternalError('Can\\'t get dry-run request');\n\n let dryRunRes;\n try {\n dryRunRes = await onNode.protectedDryRunTxs({\n top: rs[0].top,\n txEvents: rs[0].txEvents,\n txs: rs.map((req) => ({ tx: req.tx })),\n accounts: Array.from(new Set(rs.map((req) => req.accountAddress)))\n .map((pubKey) => ({ pubKey, amount: DRY_RUN_ACCOUNT.amount })),\n });\n } catch (error) {\n rs.forEach(({ reject }) => reject(error));\n return;\n }\n\n const { results, txEvents } = dryRunRes;\n results.forEach(({ result, reason, ...resultPayload }, idx) => {\n const {\n resolve, reject, tx, accountAddress,\n } = rs[idx];\n if (result === 'ok') resolve({ ...resultPayload, txEvents });\n else reject(Object.assign(new DryRunError(reason as string), { tx, accountAddress }));\n });\n}\n\n/**\n * Transaction dry-run\n * @category chain\n * @param tx - transaction to execute\n * @param accountAddress - address that will be used to execute transaction\n * @param options - Options\n * @param options.top - hash of block on which to make dry-run\n * @param options.txEvents - collect and return on-chain tx events that would result from the call\n * @param options.combine - Enables combining of similar requests to a single dry-run call\n * @param options.onNode - Node to use\n */\nexport async function txDryRun(\n tx: Encoded.Transaction,\n accountAddress: Encoded.AccountAddress,\n {\n top, txEvents, combine, onNode,\n }:\n { top?: number; txEvents?: boolean; combine?: boolean; onNode: Node },\n): Promise<{\n txEvents?: TransformNodeType<DryRunResults['txEvents']>;\n } & TransformNodeType<DryRunResult>> {\n const key = combine === true ? [top, txEvents].join() : 'immediate';\n const requests = txDryRunRequests.get(key) ?? [];\n txDryRunRequests.set(key, requests);\n return new Promise((resolve, reject) => {\n requests.push({\n tx, accountAddress, top, txEvents, resolve, reject,\n });\n if (combine !== true) {\n void txDryRunHandler(key, onNode);\n return;\n }\n requests.timeout ??= setTimeout(() => { void txDryRunHandler(key, onNode); });\n });\n}\n\n/**\n * Get contract byte code\n * @category contract\n * @param contractId - Contract address\n * @param options - Options\n * @param options.onNode - Node to use\n */\nexport async function getContractByteCode(\n contractId: Encoded.ContractAddress,\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<ByteCode>> {\n return onNode.getContractCode(contractId);\n}\n\n/**\n * Get contract entry\n * @category contract\n * @param contractId - Contract address\n * @param options - Options\n * @param options.onNode - Node to use\n */\nexport async function getContract(\n contractId: Encoded.ContractAddress,\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<ContractObject>> {\n return onNode.getContract(contractId);\n}\n\n/**\n * Get name entry\n * @category AENS\n * @param name - AENS name\n * @param options - Options\n * @param options.onNode - Node to use\n */\nexport async function getName(\n name: AensName,\n { onNode }: { onNode: Node },\n): Promise<TransformNodeType<NameEntry>> {\n return onNode.getNameEntryByName(name);\n}\n\n/**\n * Resolve AENS name and return name hash\n * @category AENS\n * @param nameOrId - AENS name or address\n * @param key - in AENS pointers record\n * @param options - Options\n * @param options.verify - To ensure that name exist and have a corresponding pointer\n * // TODO: avoid that to don't trust to current api gateway\n * @param options.resolveByNode - Enables pointer resolving using node\n * @param options.onNode - Node to use\n * @returns Address or AENS name hash\n */\nexport async function resolveName <\n Type extends Encoding.AccountAddress | Encoding.ContractAddress,\n>(\n nameOrId: AensName | Encoded.Generic<Type>,\n key: string,\n { verify = true, resolveByNode = false, onNode }:\n { verify?: boolean; resolveByNode?: boolean; onNode: Node },\n): Promise<Encoded.Generic<Type | Encoding.Name>> {\n if (isNameValid(nameOrId)) {\n if (verify || resolveByNode) {\n const name = await onNode.getNameEntryByName(nameOrId);\n const pointer = name.pointers.find((p) => p.key === key);\n if (pointer == null) throw new AensPointerContextError(nameOrId, key);\n if (resolveByNode) return pointer.id as Encoded.Generic<Type>;\n }\n return produceNameId(nameOrId);\n }\n try {\n decode(nameOrId);\n return nameOrId;\n } catch (error) {\n throw new InvalidAensNameError(`Invalid name or address: ${nameOrId}`);\n }\n}\n","import nacl from 'tweetnacl';\nimport { v4 as uuid } from '@aeternity/uuid';\n// js extension is required for mjs build\n// eslint-disable-next-line import/extensions\nimport { ArgonType, hash } from '@aeternity/argon2-browser/dist/argon2-bundled.min.js';\nimport { getAddressFromPriv } from './crypto';\nimport { bytesToHex, hexToBytes } from './bytes';\nimport { InvalidPasswordError } from './errors';\n\nconst DERIVED_KEY_FUNCTIONS = {\n async argon2id(\n pass: string | Uint8Array,\n salt: string | Uint8Array,\n params: Partial<Keystore['crypto']['kdf_params']>,\n ): Promise<Uint8Array> {\n const { memlimit_kib: mem, opslimit: time } = params;\n\n return (await hash({\n hashLen: 32,\n pass,\n salt,\n time,\n mem,\n type: ArgonType.Argon2id,\n })).hash;\n },\n};\n\nconst CRYPTO_FUNCTIONS = {\n 'xsalsa20-poly1305': {\n encrypt: nacl.secretbox,\n decrypt(...args: Parameters<typeof nacl.secretbox.open>): Uint8Array {\n const res = nacl.secretbox.open(...args);\n if (res == null) throw new InvalidPasswordError();\n return res;\n },\n },\n};\n\nexport interface Keystore {\n name: string;\n version: 1;\n public_key: string;\n id: string;\n crypto: {\n secret_type: 'ed25519';\n symmetric_alg: keyof typeof CRYPTO_FUNCTIONS;\n ciphertext: string;\n cipher_params: {\n nonce: string;\n };\n kdf: keyof typeof DERIVED_KEY_FUNCTIONS;\n kdf_params: {\n memlimit_kib: number;\n opslimit: number;\n parallelism: number;\n salt: string;\n };\n };\n}\n\nconst CRYPTO_DEFAULTS = {\n secret_type: 'ed25519',\n symmetric_alg: 'xsalsa20-poly1305',\n kdf: 'argon2id',\n kdf_params: {\n memlimit_kib: 65536,\n opslimit: 3,\n parallelism: 1,\n },\n} as const;\n\n/**\n * Symmetric private key encryption using secret (derived) key.\n * @param plaintext - Data to be encrypted.\n * @param key - Secret key.\n * @param nonce - Randomly generated nonce.\n * @param algo - Encryption algorithm.\n * @returns Encrypted data.\n */\nfunction encrypt(\n plaintext: Uint8Array,\n key: Uint8Array,\n nonce: Uint8Array,\n algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg,\n): Uint8Array {\n return CRYPTO_FUNCTIONS[algo].encrypt(plaintext, nonce, key);\n}\n\n/**\n * Symmetric private key decryption using secret (derived) key.\n * @param ciphertext - Data to be decrypted.\n * @param key - Secret key.\n * @param nonce - Nonce from key-object.\n * @param algo - Encryption algorithm.\n * @returns Decrypted data.\n */\nfunction decrypt(\n ciphertext: Uint8Array,\n key: Uint8Array,\n nonce: Uint8Array,\n algo: keyof typeof CRYPTO_FUNCTIONS = CRYPTO_DEFAULTS.symmetric_alg,\n): Uint8Array {\n return CRYPTO_FUNCTIONS[algo].decrypt(ciphertext, nonce, key);\n}\n\n/**\n * Derive secret key from password with key derivation function.\n * @param password - User-supplied password.\n * @param nonce - Randomly generated nonce.\n * @param kdf - Key derivation function.\n * @param kdfParams - KDF parameters.\n * @returns Secret key derived from password.\n */\nasync function deriveKey(\n password: string | Uint8Array,\n nonce: string | Uint8Array,\n kdf: Keystore['crypto']['kdf'],\n kdfParams: Omit<Keystore['crypto']['kdf_params'], 'salt'>,\n): Promise<Uint8Array> {\n return DERIVED_KEY_FUNCTIONS[kdf](password, nonce, kdfParams);\n}\n\n/**\n * Recover plaintext private key from secret-storage key object.\n * @param password - Keystore object password.\n * @param keystore - Keystore object.\n * @returns Plaintext private key.\n */\nexport async function recover(\n password: string | Uint8Array,\n { crypto }: Keystore,\n): Promise<string> {\n const salt = hexToBytes(crypto.kdf_params.salt);\n return bytesToHex(decrypt(\n hexToBytes(crypto.ciphertext),\n await deriveKey(password, salt, crypto.kdf, crypto.kdf_params),\n hexToBytes(crypto.cipher_params.nonce),\n crypto.symmetric_alg,\n ));\n}\n\n/**\n * Export private key to keystore secret-storage format.\n * @param name - Key name.\n * @param password - User-supplied password.\n * @param privateKey - Private key as hex-string or a Buffer.\n * @param nonce - Randomly generated 24byte nonce.\n * @param salt - Randomly generated 16byte salt.\n * @param options - Encryption parameters.\n * @param options.kdf - Key derivation function.\n * @param options.kdf_params - KDF parameters.\n */\nexport async function dump(\n name: string,\n password: string | Uint8Array,\n privateKey: string | Uint8Array,\n nonce: Uint8Array = nacl.randomBytes(24),\n salt: Uint8Array = nacl.randomBytes(16),\n options?: Partial<Keystore['crypto']>,\n): Promise<Keystore> {\n const opt = { ...CRYPTO_DEFAULTS, ...options };\n const derivedKey = await deriveKey(password, salt, opt.kdf, opt.kdf_params);\n const payload = typeof privateKey === 'string' ? hexToBytes(privateKey) : privateKey;\n return {\n name,\n version: 1,\n public_key: getAddressFromPriv(payload),\n id: uuid(),\n crypto: {\n secret_type: opt.secret_type,\n symmetric_alg: opt.symmetric_alg,\n ciphertext: bytesToHex(encrypt(payload, derivedKey, nonce, opt.symmetric_alg)),\n cipher_params: { nonce: bytesToHex(nonce) },\n kdf: opt.kdf,\n kdf_params: {\n ...opt.kdf_params,\n salt: bytesToHex(salt),\n },\n },\n };\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Transaction methods\n *\n * This is implementation of [Tx](api/tx.md) relays\n * the creation of transactions to {@link Node}.\n * These methods provide ability to create native transactions.\n */\nimport BigNumber from 'bignumber.js';\nimport {\n ABI_VERSIONS, CtVersion, PROTOCOL_VM_ABI, TX_TTL, TxParamsCommon,\n} from './builder/schema';\nimport { Tag } from './builder/constants';\nimport {\n ArgumentError, UnsupportedProtocolError, UnknownTxError, InvalidTxParamsError,\n} from '../utils/errors';\nimport Node from '../Node';\nimport { Encoded } from '../utils/encoder';\nimport { buildTx as syncBuildTx, unpackTx } from './builder/index';\nimport { isKeyOfObject } from '../utils/other';\nimport { AE_AMOUNT_FORMATS } from '../utils/amount-formatter';\n\ntype Int = number | string | BigNumber;\n\nexport type BuildTxOptions <TxType extends Tag, OmitFields extends string> =\n Omit<Parameters<typeof _buildTx<TxType>>[1], OmitFields>;\n\n/**\n * Validated vm/abi version or get default based on transaction type and NODE version\n * @category transaction builder\n * @param txType - Type of transaction\n * @param ctVersion - Object with vm and abi version fields\n * @returns Object with vm/abi version\n */\nexport async function getVmVersion(\n txType: Tag.ContractCreateTx, ctVersion: Partial<CtVersion> & { onNode: Node }\n): Promise<CtVersion>;\nexport async function getVmVersion(\n txType: Tag, ctVersion: Partial<Pick<CtVersion, 'abiVersion'>> & { onNode: Node }\n): Promise<Pick<CtVersion, 'abiVersion'>>;\nexport async function getVmVersion(\n txType: Tag,\n { vmVersion, abiVersion, onNode }: Partial<CtVersion> & { onNode: Node },\n): Promise<Partial<CtVersion>> {\n const { consensusProtocolVersion } = await onNode.getNodeInfo();\n if (!isKeyOfObject(consensusProtocolVersion, PROTOCOL_VM_ABI)) {\n throw new UnsupportedProtocolError('Not supported consensus protocol version');\n }\n const supportedProtocol = PROTOCOL_VM_ABI[consensusProtocolVersion];\n if (!isKeyOfObject(txType, supportedProtocol)) {\n throw new UnknownTxError('Not supported tx type');\n }\n const protocolForTX = supportedProtocol[txType];\n abiVersion ??= protocolForTX.abiVersion[0];\n vmVersion ??= protocolForTX.vmVersion[0];\n return { vmVersion, abiVersion };\n}\n\n/**\n * Calculate fee, get absolute ttl (ttl + height), get account nonce\n * @category transaction builder\n * @param txType - Type of transaction\n * @param params - Object which contains all tx data\n * @returns Object with account nonce, absolute ttl and transaction fee\n */\nexport async function prepareTxParams(\n txType: Tag,\n {\n senderId,\n nonce,\n ttl = TX_TTL,\n absoluteTtl,\n strategy,\n onNode,\n }: PrepareTxParamsOptions,\n): Promise<{ ttl: number; nonce: number }> {\n nonce ??= (\n await onNode.getAccountNextNonce(senderId, { strategy }).catch(() => ({ nextNonce: 1 }))\n ).nextNonce;\n\n if (ttl !== 0) {\n if (ttl < 0) throw new ArgumentError('ttl', 'greater or equal to 0', ttl);\n ttl += absoluteTtl === true ? 0 : (await onNode.getCurrentKeyBlock()).height;\n }\n\n return { ttl, nonce };\n}\n\ninterface PrepareTxParamsOptions extends Pick<TxParamsCommon, 'nonce' | 'ttl'> {\n senderId: Encoded.AccountAddress;\n absoluteTtl?: boolean;\n strategy?: 'continuity' | 'max';\n onNode: Node;\n}\n\n// TODO: find a better name or rearrange methods\n/**\n * @category transaction builder\n */\nexport async function _buildTx<TxType extends Tag>(\n txType: TxType,\n { denomination, absoluteTtl, ..._params }:\n Omit<Parameters<typeof syncBuildTx<TxType, 'tx'>>[0], 'fee' | 'nonce' | 'ttl' | 'ctVersion' | 'abiVersion'>\n & {\n onNode: Node;\n fee?: Int;\n nonce?: number;\n ttl?: number;\n denomination?: AE_AMOUNT_FORMATS;\n absoluteTtl?: boolean;\n }\n & (TxType extends Tag.OracleExtendTx | Tag.OracleResponseTx\n ? { callerId: Encoded.AccountAddress } : {})\n & (TxType extends Tag.ContractCreateTx | Tag.GaAttachTx ? { ctVersion?: CtVersion } : {})\n & (TxType extends Tag.ContractCallTx | Tag.OracleRegisterTx\n ? { abiVersion?: ABI_VERSIONS } : {}),\n): Promise<Encoded.Transaction> {\n // TODO: avoid this assertion\n const params = _params as unknown as TxParamsCommon & { onNode: Node };\n let senderKey: keyof TxParamsCommon | '<absent>';\n switch (txType) {\n case Tag.SpendTx:\n case Tag.OracleQueryTx:\n senderKey = 'senderId';\n break;\n case Tag.NameClaimTx:\n case Tag.NameUpdateTx:\n case Tag.NameRevokeTx:\n case Tag.NameTransferTx:\n case Tag.NamePreclaimTx:\n case Tag.OracleRegisterTx:\n senderKey = 'accountId';\n break;\n case Tag.ContractCreateTx:\n case Tag.GaAttachTx:\n senderKey = 'ownerId';\n break;\n case Tag.ContractCallTx:\n case Tag.OracleExtendTx:\n case Tag.OracleResponseTx:\n senderKey = 'callerId';\n break;\n case Tag.ChannelCloseSoloTx:\n case Tag.ChannelSlashTx:\n case Tag.ChannelSettleTx:\n case Tag.ChannelSnapshotSoloTx:\n senderKey = 'fromId';\n break;\n case Tag.PayingForTx:\n senderKey = 'payerId';\n break;\n default:\n throw new ArgumentError('txType', 'valid transaction type', txType);\n }\n // TODO: move specific cases to field-types\n if ([Tag.ContractCreateTx, Tag.GaAttachTx].includes(txType)) {\n params.ctVersion = await getVmVersion(\n Tag.ContractCreateTx,\n { ...params, ...params.ctVersion },\n );\n }\n if (txType === Tag.ContractCallTx) {\n params.abiVersion = (await getVmVersion(Tag.ContractCallTx, params)).abiVersion;\n }\n if (txType === Tag.OracleRegisterTx) {\n params.abiVersion ??= ABI_VERSIONS.NO_ABI;\n }\n if (txType === Tag.PayingForTx) {\n params.tx = unpackTx(params.tx);\n }\n const senderId = params[senderKey];\n // TODO: do this check on TypeScript level\n if (senderId == null) throw new InvalidTxParamsError(`Transaction field ${senderKey} is missed`);\n const extraParams = await prepareTxParams(txType, { ...params, senderId, absoluteTtl });\n return syncBuildTx({ ...params, ...extraParams } as any, txType, { denomination }).tx;\n}\n","import nacl from 'tweetnacl';\nimport { full as hmac } from 'tweetnacl-auth';\nimport { fromString } from 'bip32-path';\nimport aesjs from 'aes-js';\nimport { sha256hash, encode, Encoding } from './encoder';\nimport { CryptographyError } from './errors';\nimport { bytesToHex } from './bytes';\nimport { concatBuffers } from './other';\n\nconst Ecb = aesjs.ModeOfOperation.ecb;\n\n// TODO: at least don't export `encryptKey` and `decryptKey`\n/**\n * Encrypt given data using `password`\n * @param password - Password to encrypt with\n * @param binaryData - Data to encrypt\n * @returns Encrypted data\n * @deprecated use 'sha.js' and 'aes-js' packages directly instead\n */\nexport function encryptKey(password: string, binaryData: Uint8Array): Uint8Array {\n const hashedPasswordBytes = sha256hash(password);\n const aesEcb = new Ecb(hashedPasswordBytes);\n return aesEcb.encrypt(binaryData);\n}\n\n/**\n * Decrypt given data using `password`\n * @param password - Password to decrypt with\n * @param encrypted - Data to decrypt\n * @returns Decrypted data\n * @deprecated use 'sha.js' and 'aes-js' packages directly instead\n */\nexport function decryptKey(password: string, encrypted: Uint8Array): Uint8Array {\n const encryptedBytes = Buffer.from(encrypted);\n const hashedPasswordBytes = sha256hash(password);\n const aesEcb = new Ecb(hashedPasswordBytes);\n return aesEcb.decrypt(encryptedBytes);\n}\n\n/**\n * @category exception\n */\nexport class DerivationError extends CryptographyError {\n constructor(message: string) {\n super(message);\n this.name = 'DerivationError';\n }\n}\n\nconst ED25519_CURVE = Buffer.from('ed25519 seed');\nconst HARDENED_OFFSET = 0x80000000;\n\ninterface KeyTreeNode {\n secretKey: Uint8Array;\n chainCode: Uint8Array;\n}\n\ninterface HDWallet {\n secretKey: string;\n chainCode: string;\n}\n\ninterface Account {\n secretKey: string;\n publicKey: string;\n}\n\ntype Dec<N extends number> = [-1, 0, 1, 2, 3, 4][N];\ntype Bip32PathT<MaxLen extends number, H extends 'H' | 'h' | '\\''> = MaxLen extends -1\n ? `${number}${H}`\n : Bip32PathT<Dec<MaxLen>, H> | `${Bip32PathT<Dec<MaxLen>, H>}/${number}${H}`;\ntype Bip32Path<MaxLen extends number> =\n '' | Bip32PathT<MaxLen, 'H'> | Bip32PathT<MaxLen, 'h'> | Bip32PathT<MaxLen, '\\''>;\n\nexport function deriveChild({ secretKey, chainCode }: KeyTreeNode, index: number): KeyTreeNode {\n if (index < HARDENED_OFFSET) {\n throw new DerivationError(`Segment ${index} is not hardened`);\n }\n const indexBuffer = Buffer.allocUnsafe(4);\n indexBuffer.writeUInt32BE(index, 0);\n\n const data = concatBuffers([Buffer.alloc(1, 0), secretKey, indexBuffer]);\n\n const I = hmac(data, chainCode);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return {\n secretKey: IL,\n chainCode: IR,\n };\n}\n\nexport function derivePathFromKey(path: Bip32Path<5>, key: KeyTreeNode): KeyTreeNode {\n const segments = path === '' ? [] : fromString(path).toPathArray();\n segments.forEach((segment, i) => {\n if (segment < HARDENED_OFFSET) {\n throw new DerivationError(`Segment #${i + 1} is not hardened`);\n }\n });\n\n return segments.reduce((parentKey, segment) => deriveChild(parentKey, segment), key);\n}\n\nexport function getMasterKeyFromSeed(seed: Uint8Array): KeyTreeNode {\n const I = hmac(seed, ED25519_CURVE);\n const IL = I.slice(0, 32);\n const IR = I.slice(32);\n return {\n secretKey: IL,\n chainCode: IR,\n };\n}\n\nexport function derivePathFromSeed(path: 'm' | `m/${Bip32Path<5>}`, seed: Uint8Array): KeyTreeNode {\n if (!['m', 'm/'].includes(path.slice(0, 2))) {\n throw new DerivationError('Root element is required');\n }\n const masterKey = getMasterKeyFromSeed(seed);\n return derivePathFromKey(path.slice(2) as Bip32Path<5>, masterKey);\n}\n\nfunction formatAccount(keys: nacl.SignKeyPair): Account {\n const { secretKey, publicKey } = keys;\n return {\n secretKey: bytesToHex(secretKey),\n publicKey: encode(publicKey, Encoding.AccountAddress),\n };\n}\n\nexport function getKeyPair(secretKey: Uint8Array): nacl.SignKeyPair {\n return nacl.sign.keyPair.fromSeed(secretKey);\n}\n\nexport function generateSaveHDWalletFromSeed(seed: Uint8Array, password: string): HDWallet {\n const walletKey = derivePathFromSeed('m/44h/457h', seed);\n return {\n secretKey: bytesToHex(encryptKey(password, walletKey.secretKey)),\n chainCode: bytesToHex(encryptKey(password, walletKey.chainCode)),\n };\n}\n\nexport function getSaveHDWalletAccounts(\n saveHDWallet: HDWallet,\n password: string,\n accountCount: number,\n): Account[] {\n const walletKey = {\n secretKey: decryptKey(password, Buffer.from(saveHDWallet.secretKey, 'hex')),\n chainCode: decryptKey(password, Buffer.from(saveHDWallet.chainCode, 'hex')),\n };\n return (new Array(accountCount)).fill(undefined)\n .map((_, idx) => formatAccount(getKeyPair(derivePathFromKey(`${idx}h/0h/0h`, walletKey).secretKey)));\n}\n\nexport const getHdWalletAccountFromSeed = (\n seed: Uint8Array,\n accountIdx: number,\n): Account & { idx: number } => {\n const walletKey = derivePathFromSeed('m/44h/457h', seed);\n const derived = derivePathFromKey(`${accountIdx}h/0h/0h`, walletKey);\n const keyPair = getKeyPair(derived.secretKey);\n return {\n ...formatAccount(keyPair),\n idx: accountIdx,\n };\n};\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js';\nimport {\n sendTransaction, getAccount, getBalance, resolveName,\n} from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport { buildTxHash, unpackTx } from './tx/builder';\nimport { ArgumentError } from './utils/errors';\nimport { Encoded, Encoding } from './utils/encoder';\nimport { Tag, AensName } from './tx/builder/constants';\nimport AccountBase from './account/Base';\n\n/**\n * Sign and post a transaction to the chain\n * @category chain\n * @param tx - Transaction\n * @param options - Options\n * @param options.verify - Verify transaction before broadcast, throw error if not\n * valid\n * @returns Transaction\n */\nexport async function send(\n tx: Encoded.Transaction,\n options: SendOptions,\n): Promise<SendReturnType> {\n // TODO: detect authFun in AccountGa\n const authFun = options.innerTx === true\n ? undefined\n : (await getAccount(await options.onAccount.address(options), options)).authFun;\n\n const signed = await options.onAccount.signTransaction(tx, {\n ...options,\n authFun,\n networkId: (await options.onNode.getStatus()).networkId,\n });\n\n return options.innerTx === true\n ? { hash: buildTxHash(signed), rawTx: signed }\n : sendTransaction(signed, options);\n}\n\ntype SendOptionsType = Parameters<AccountBase['signTransaction']>[1]\n& Parameters<typeof sendTransaction>[1] & { onAccount: AccountBase };\nexport interface SendOptions extends SendOptionsType {}\ninterface SendReturnType extends Awaited<ReturnType<typeof sendTransaction>> {}\n\n/**\n * Send coins to another account\n * @category chain\n * @param amount - Amount to spend\n * @param recipientIdOrName - Address or name of recipient account\n * @param options - Options\n * @returns Transaction\n */\nexport async function spend(\n amount: number | string,\n recipientIdOrName: Encoded.AccountAddress | AensName,\n options: SpendOptions,\n): ReturnType<typeof send> {\n return send(\n await _buildTx(Tag.SpendTx, {\n ...options,\n senderId: await options.onAccount.address(options),\n recipientId: await resolveName<Encoding.AccountAddress>(\n recipientIdOrName,\n 'account_pubkey',\n options,\n ),\n amount,\n }),\n options,\n );\n}\n\ntype SpendOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>\n& Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;\ninterface SpendOptions extends SpendOptionsType {}\n\n// TODO: Rename to spendFraction\n/**\n * Send a fraction of coin balance to another account\n * @category chain\n * @param fraction - Fraction of balance to spend (between 0 and 1)\n * @param recipientIdOrName - Address or name of recipient account\n * @param options - Options\n * @returns Transaction\n */\nexport async function transferFunds(\n fraction: number | string,\n recipientIdOrName: AensName | Encoded.AccountAddress,\n options: TransferFundsOptions,\n): ReturnType<typeof send> {\n if (fraction < 0 || fraction > 1) {\n throw new ArgumentError('fraction', 'a number between 0 and 1', fraction);\n }\n const recipientId = await resolveName<Encoding.AccountAddress>(\n recipientIdOrName,\n 'account_pubkey',\n options,\n );\n const senderId = await options.onAccount.address(options);\n const balance = new BigNumber(\n await getBalance.bind(options.onAccount)(senderId, options),\n );\n const desiredAmount = balance.times(fraction).integerValue(BigNumber.ROUND_HALF_UP);\n const { tx: { fee } } = unpackTx(\n await _buildTx(Tag.SpendTx, {\n ...options, senderId, recipientId, amount: desiredAmount,\n }),\n Tag.SpendTx,\n );\n // Reducing of the amount may reduce transaction fee, so this is not completely accurate\n const amount = desiredAmount.plus(fee).gt(balance) ? balance.minus(fee) : desiredAmount;\n return send(\n await _buildTx(Tag.SpendTx, {\n ...options, senderId, recipientId, amount,\n }),\n options,\n );\n}\n\ntype TransferFundsOptionsType = BuildTxOptions<Tag.SpendTx, 'senderId' | 'recipientId' | 'amount'>\n& Parameters<typeof resolveName>[2] & { onAccount: AccountBase } & SendOptions;\ninterface TransferFundsOptions extends TransferFundsOptionsType {}\n\n/**\n * Submit transaction of another account paying for it (fee and gas)\n * @category chain\n * @param transaction - tx_<base64>-encoded transaction\n * @param options - Options\n * @returns Object Transaction\n */\nexport async function payForTransaction(\n transaction: Encoded.Transaction,\n options: PayForTransactionOptions,\n): ReturnType<typeof send> {\n return send(\n await _buildTx(\n Tag.PayingForTx,\n { ...options, payerId: await options.onAccount.address(options), tx: transaction },\n ),\n options,\n );\n}\n\ninterface PayForTransactionOptions extends\n BuildTxOptions<Tag.PayingForTx, 'payerId' | 'tx'>, SendOptions {\n onAccount: AccountBase;\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Aens methods - routines to interact with the æternity naming system\n *\n * The high-level description of the naming system is\n * https://github.com/aeternity/protocol/blob/master/AENS.md in the protocol\n * repository.\n */\n\nimport BigNumber from 'bignumber.js';\nimport { genSalt } from './utils/crypto';\nimport { commitmentHash, isAuctionName } from './tx/builder/helpers';\nimport {\n CLIENT_TTL, NAME_TTL, Tag, AensName,\n} from './tx/builder/constants';\nimport { ArgumentError } from './utils/errors';\nimport { Encoded } from './utils/encoder';\nimport { send, SendOptions } from './spend';\nimport { getName, getHeight } from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport { TransformNodeType } from './Node';\nimport { NameEntry, NamePointer } from './apis/node';\nimport AccountBase from './account/Base';\n\ninterface KeyPointers {\n [key: string]: string | Buffer;\n}\n\n/**\n * Revoke a name\n * @category AENS\n * @param name - Name hash\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensRevoke(name, { fee, ttl , nonce })\n * // or\n * await nameObject.revoke({ fee, ttl, nonce })\n * ```\n */\nexport async function aensRevoke(\n name: AensName,\n options: AensRevokeOptions,\n): ReturnType<typeof send> {\n const nameRevokeTx = await _buildTx(Tag.NameRevokeTx, {\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n });\n return send(nameRevokeTx, options);\n}\n\ninterface AensRevokeOptions extends\n BuildTxOptions<Tag.NameRevokeTx, 'nameId' | 'accountId'>,\n SendOptions {}\n\n/**\n * Update a name\n * @category AENS\n * @param name - AENS name\n * @param pointers - Map of pointer keys to corresponding addresses\n * @param options - Options\n * @param options.extendPointers - Get the pointers from the node and merge with provided\n * ones. Pointers with the same type will be overwritten\n * @param options.onAccount - Make operation on specific account from sdk (you\n * pass publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @param options.nameTtl - Name ttl represented in number of\n * blocks (Max value is 50000 blocks)\n * @param options.clientTtl=84600 a suggestion as to how long any\n * clients should cache this information\n * @throws Invalid pointer array error\n * @example\n * ```js\n * const name = 'test.chain'\n * const pointersArray = ['ak_asd23dasdas...,' 'ct_asdf34fasdasd...']\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensUpdate(name, pointersArray, { nameTtl, ttl, fee, nonce, clientTtl })\n * // or\n * await nameObject.update(pointers, { nameTtl, ttl, fee, nonce, clientTtl })\n * ```\n */\nexport async function aensUpdate(\n name: AensName,\n pointers: KeyPointers,\n { extendPointers, ...options }: AensUpdateOptions,\n): ReturnType<typeof send> {\n const allPointers = {\n ...extendPointers === true && Object.fromEntries(\n (await getName(name, options)).pointers\n .map(({ key, id }: { key: string; id: string }) => [key, id]),\n ),\n ...pointers,\n };\n\n const nameUpdateTx = await _buildTx(Tag.NameUpdateTx, {\n clientTtl: CLIENT_TTL,\n nameTtl: NAME_TTL,\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n pointers: Object.entries(allPointers).map(([key, id]) => ({ key, id: id.toString() })),\n });\n\n return send(nameUpdateTx, options);\n}\n\ninterface AensUpdateOptions extends\n BuildTxOptions<Tag.NameUpdateTx, 'nameId' | 'accountId' | 'pointers' | 'clientTtl' | 'nameTtl'>,\n SendOptions {\n extendPointers?: boolean;\n clientTtl?: number;\n nameTtl?: number;\n}\n\n/**\n * Transfer a domain to another account\n * @category AENS\n * @param name - AENS name\n * @param account - Recipient account publick key\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const recipientPub = 'ak_asd23dasdas...'\n * const nameObject = await sdkInstance.aensQuery(name)\n *\n * await sdkInstance.aensTransfer(name, recipientPub, { ttl, fee, nonce })\n * // or\n * await nameObject.transfer(recipientPub, { ttl, fee, nonce })\n * ```\n */\nexport async function aensTransfer(\n name: AensName,\n account: Encoded.AccountAddress,\n options: AensTransferOptions,\n): ReturnType<typeof send> {\n const nameTransferTx = await _buildTx(Tag.NameTransferTx, {\n ...options,\n nameId: name,\n accountId: await options.onAccount.address(options),\n recipientId: account,\n });\n\n return send(nameTransferTx, options);\n}\n\ninterface AensTransferOptions extends\n BuildTxOptions<Tag.NameTransferTx, 'nameId' | 'accountId' | 'recipientId'>,\n SendOptions {}\n\n/**\n * Query the AENS name info from the node\n * and return the object with info and predefined functions for manipulating name\n * @category AENS\n * @param name - AENS name\n * @param opt - Options\n * @returns\n * @example\n * ```js\n * const nameObject = sdkInstance.aensQuery('test.chain')\n * console.log(nameObject)\n * {\n * id, // name hash\n * pointers, // array of pointers\n * update, // Update name function\n * extendTtl, // Extend Ttl name function\n * transfer, // Transfer name function\n * revoke // Revoke name function\n * }\n * ```\n */\nexport async function aensQuery(\n name: AensName,\n opt: Parameters<typeof getName>[1] & Parameters<typeof aensUpdate>[2]\n & Parameters<typeof aensTransfer>[2],\n): Promise<Readonly<\n TransformNodeType<NameEntry> & {\n id: Encoded.Name;\n owner: Encoded.AccountAddress;\n pointers: KeyPointers | NamePointer[];\n ttl: number;\n update: (\n pointers: KeyPointers,\n options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {\n onAccount?: AccountBase;\n }\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;\n transfer: (\n account: Encoded.AccountAddress,\n options?: Parameters<typeof aensQuery>[1]\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;\n revoke: (options?: Omit<Parameters<typeof aensRevoke>[1], 'onNode' | 'onCompiler' | 'onAccount'> & {\n onAccount?: AccountBase;\n }\n ) => ReturnType<typeof aensRevoke>;\n extendTtl: (\n nameTtl: number,\n options?: Omit<Parameters<typeof aensQuery>[1], 'onNode' | 'onCompiler' | 'onAccount'>\n ) => ReturnType<typeof aensUpdate> & ReturnType<typeof aensQuery>;\n }\n >> {\n const nameEntry = await getName(name, opt);\n return Object.freeze({\n ...nameEntry,\n id: nameEntry.id as Encoded.Name,\n owner: nameEntry.owner as Encoded.AccountAddress,\n async update(pointers, options) {\n return {\n ...await aensUpdate(name, pointers, { ...opt, ...options }),\n ...await aensQuery(name, { ...opt, ...options }),\n };\n },\n async transfer(account, options) {\n return {\n ...await aensTransfer(name, account, { ...opt, ...options }),\n ...await aensQuery(name, { ...opt, ...options }),\n };\n },\n async revoke(options) {\n return aensRevoke(name, { ...opt, ...options });\n },\n async extendTtl(nameTtl = NAME_TTL, options = {}) {\n if (nameTtl > NAME_TTL || nameTtl <= 0) {\n throw new ArgumentError('nameTtl', `a number between 1 and ${NAME_TTL} blocks`, nameTtl);\n }\n\n return {\n ...await aensUpdate(name, {}, {\n ...opt, ...options, nameTtl, extendPointers: true,\n }),\n ...await aensQuery(name, { ...opt, ...options }),\n };\n },\n });\n}\n\n/**\n * Claim a previously preclaimed registration. This can only be done after the\n * preclaim step\n * @category AENS\n * @param name - AENS name\n * @param salt - Salt from pre-claim, or 0 if it's a bid\n * @param options - options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @param options.nameFee - Name Fee (By default calculated by sdk)\n * @returns the result of the claim\n * @example\n * ```js\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensClaim(name, salt, { ttl, fee, nonce, nameFee })\n * ```\n */\nexport async function aensClaim(\n name: AensName,\n salt: number,\n options: AensClaimOptions,\n): Promise<AensClaimReturnType> {\n const claimTx = await _buildTx(Tag.NameClaimTx, {\n ...options,\n accountId: await options.onAccount.address(options),\n nameSalt: salt,\n name,\n });\n\n const result = await send(claimTx, options);\n if (!isAuctionName(name)) {\n const nameInter = result.blockHeight != null && result.blockHeight > 0\n ? await aensQuery(name, options)\n : {};\n return Object.assign(result, nameInter);\n }\n return result;\n}\n\ntype AensClaimOptionsType = BuildTxOptions<Tag.NameClaimTx, 'accountId' | 'nameSalt' | 'name'>\n& SendOptions & Parameters<typeof aensQuery>[1];\ninterface AensClaimOptions extends AensClaimOptionsType {}\ninterface AensClaimReturnType extends\n Awaited<ReturnType<typeof send>>,\n Partial<Awaited<ReturnType<typeof aensQuery>>> {}\n\n/**\n * Preclaim a name. Sends a hash of the name and a random salt to the node\n * @category AENS\n * @param name - AENS name\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @example\n * ```js\n * const name = 'test.chain'\n * const salt = preclaimResult.salt // salt from pre-claim transaction\n *\n * await sdkInstance.aensPreclaim(name, { ttl, fee, nonce })\n * {\n * ...transactionResult,\n * claim, // Claim function (options={}) => claimTransactionResult\n * salt,\n * commitmentId\n * }\n * ```\n */\nexport async function aensPreclaim(name: AensName, options: AensPreclaimOptions): Promise<Readonly<\nAwaited<ReturnType<typeof send>> & {\n height: number;\n salt: number;\n commitmentId: string;\n claim: (opts?: Parameters<typeof aensClaim>[2]) => ReturnType<typeof aensClaim>;\n}\n>> {\n const salt = genSalt();\n const height = await getHeight(options);\n const commitmentId = commitmentHash(name, salt);\n\n const preclaimTx = await _buildTx(Tag.NamePreclaimTx, {\n ...options,\n accountId: await options.onAccount.address(options),\n commitmentId,\n });\n\n return Object.freeze({\n ...await send(preclaimTx, options),\n height,\n salt,\n commitmentId,\n async claim(opts?: Parameters<typeof aensClaim>[2]) {\n return aensClaim(name, salt, { ...options, ...opts });\n },\n });\n}\n\ninterface AensPreclaimOptions extends\n BuildTxOptions<Tag.NamePreclaimTx, 'accountId' | 'commitmentId'>,\n SendOptions,\n AensClaimOptions {}\n\n/**\n * Bid to name auction\n * @category AENS\n * @param name - Domain name\n * @param nameFee - Name fee (bid fee)\n * @param options - Options\n * @param options.onAccount - Make operation on specific account from sdk (you pass\n * publickKey) or using provided KeyPair(Can be keypair object or MemoryAccount)\n * @param options.fee - fee\n * @param options.ttl - ttl\n * @param options.nonce - nonce\n * @returns Transaction result\n * @example\n * ```js\n * const name = 'test.chain'\n * const bidFee = computeBidFee(name, startFee, incrementPercentage)\n *\n * await sdkInstance.aensBid(name, 213109412839123, { ttl, fee, nonce })\n * ```\n */\nexport async function aensBid(\n name: AensName,\n nameFee: number | string | BigNumber,\n options: Omit<Parameters<typeof aensClaim>[2], 'nameFee'>,\n): ReturnType<typeof aensClaim> {\n return aensClaim(name, 0, { ...options, nameFee });\n}\n","/*\n* ISC License (ISC)\n* Copyright (c) 2022 aeternity developers\n*\n* Permission to use, copy, modify, and/or distribute this software for any\n* purpose with or without fee is hereby granted, provided that the above\n* copyright notice and this permission notice appear in all copies.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n* REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n* AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n* OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n* PERFORMANCE OF THIS SOFTWARE.\n*/\n// @ts-expect-error TODO remove\nimport { Encoder as Calldata } from '@aeternity/aepp-calldata';\nimport { DRY_RUN_ACCOUNT, AMOUNT } from '../tx/builder/schema';\nimport { Tag, AensName } from '../tx/builder/constants';\nimport { buildContractIdByContractTx, unpackTx } from '../tx/builder';\nimport { _buildTx } from '../tx';\nimport { send } from '../spend';\nimport { decode, Encoded } from '../utils/encoder';\nimport {\n MissingContractDefError,\n MissingContractAddressError,\n InactiveContractError,\n BytecodeMismatchError,\n DuplicateContractError,\n MissingFunctionNameError,\n InvalidMethodInvocationError,\n NotPayableFunctionError,\n TypeError,\n NodeInvocationError,\n IllegalArgumentError,\n NoSuchContractFunctionError,\n MissingEventDefinitionError,\n AmbiguousEventDefinitionError,\n UnexpectedTsError,\n InternalError,\n} from '../utils/errors';\nimport { hash as calcHash } from '../utils/crypto';\nimport { Aci as BaseAci } from '../apis/compiler';\nimport { ContractCallReturnType } from '../apis/node';\nimport Compiler from './Compiler';\nimport Node from '../Node';\nimport {\n getAccount, getContract, getContractByteCode, getKeyBlock, resolveName, txDryRun,\n} from '../chain';\nimport AccountBase from '../account/Base';\n\ninterface FunctionACI {\n arguments: any[];\n name: string;\n payable: boolean;\n returns: string;\n stateful: boolean;\n}\n\ninterface Aci extends BaseAci {\n encodedAci: {\n contract: {\n name: string;\n event: any;\n kind: string;\n state: any;\n type_defs: any[];\n functions: FunctionACI[];\n };\n };\n externalEncodedAci: any[];\n}\n\ninterface Event {\n address: Encoded.ContractAddress;\n data: string;\n topics: Array<string | number>;\n}\n\ninterface DecodedEvent {\n name: string;\n args: unknown;\n contract: {\n name: string;\n address: Encoded.ContractAddress;\n };\n}\n\ntype TxData = Awaited<ReturnType<typeof send>>;\n\nexport interface ContractInstance {\n _aci: Aci;\n _name: string;\n calldata: any;\n source?: string;\n bytecode?: Encoded.ContractBytearray;\n deployInfo: {\n address?: Encoded.ContractAddress;\n result?: {\n callerId: string;\n callerNonce: string;\n contractId: string;\n gasPrice: bigint;\n gasUsed: number;\n height: number;\n log: any[];\n returnType: ContractCallReturnType;\n returnValue: string;\n };\n owner?: Encoded.AccountAddress;\n transaction?: string;\n rawTx?: string;\n txData?: TxData;\n };\n options: any;\n compile: (options?: {}) => Promise<Encoded.ContractBytearray>;\n _estimateGas: (name: string, params: any[], options: object) => Promise<number>;\n deploy: (params?: any[], options?: object) => Promise<any>;\n call: (fn: string, params?: any[], options?: {}) => Promise<{\n hash: string;\n tx: any;\n txData: TxData;\n rawTx: string;\n result: {\n callerId: Encoded.AccountAddress;\n callerNonce: number;\n contractId: Encoded.ContractAddress;\n gasPrice: number;\n gasUsed: number;\n height: number;\n log: any[];\n returnType: ContractCallReturnType;\n returnValue: string;\n };\n decodedResult: any;\n decodedEvents: DecodedEvent[];\n }>;\n decodeEvents: (\n events: Event[], options?: { omitUnknown?: boolean; contractAddressToName?: any }\n ) => DecodedEvent[];\n methods: any;\n}\n\n/**\n * Generate contract ACI object with predefined js methods for contract usage - can be used for\n * creating a reference to already deployed contracts\n * @category contract\n * @param options - Options object\n * @returns JS Contract API\n * @example\n * ```js\n * const contractIns = await aeSdk.getContractInstance({ source })\n * await contractIns.deploy([321]) or await contractIns.methods.init(321)\n * const callResult = await contractIns.call('setState', [123]) or\n * await contractIns.methods.setState.send(123, options)\n * const staticCallResult = await contractIns.call('setState', [123], { callStatic: true }) or\n * await contractIns.methods.setState.get(123, options)\n * ```\n * Also you can call contract like: `await contractIns.methods.setState(123, options)`\n * Then sdk decide to make on-chain or static call(dry-run API) transaction based on function is\n * stateful or not\n */\nexport default async function getContractInstance({\n onAccount,\n onCompiler,\n onNode,\n source,\n bytecode,\n aci: _aci,\n contractAddress,\n fileSystem = {},\n validateBytecode,\n ...otherOptions\n}: {\n onAccount?: AccountBase;\n onCompiler: Compiler;\n onNode: Node;\n source?: string;\n bytecode?: Encoded.ContractBytearray;\n aci?: Aci;\n contractAddress?: Encoded.ContractAddress | AensName;\n fileSystem?: Record<string, string>;\n validateBytecode?: boolean;\n [key: string]: any;\n}): Promise<ContractInstance> {\n if (_aci == null && source != null) {\n // TODO: should be fixed when the compiledAci interface gets updated\n _aci = await onCompiler.generateACI({ code: source, options: { fileSystem } }) as Aci;\n }\n if (_aci == null) throw new MissingContractDefError();\n\n if (contractAddress != null) {\n contractAddress = await resolveName(\n contractAddress,\n 'contract_pubkey',\n { resolveByNode: true, onNode },\n ) as Encoded.ContractAddress;\n }\n\n if (contractAddress == null && source == null && bytecode == null) {\n throw new MissingContractAddressError('Can\\'t create instance by ACI without address');\n }\n\n if (contractAddress != null) {\n const contract = await getContract(contractAddress, { onNode });\n if (contract.active == null) throw new InactiveContractError(contractAddress);\n }\n\n const instance: ContractInstance = {\n _aci,\n _name: _aci.encodedAci.contract.name,\n calldata: new Calldata([_aci.encodedAci, ..._aci.externalEncodedAci]),\n source,\n bytecode,\n deployInfo: { address: contractAddress },\n options: {\n onAccount,\n onCompiler,\n onNode,\n amount: AMOUNT,\n callStatic: false,\n fileSystem,\n ...otherOptions,\n },\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* eslint-disable @typescript-eslint/no-empty-function */\n async compile(_options?: {}): Promise<any> {},\n async _estimateGas(_name: string, _params: any[], _options: object): Promise<any> {},\n async deploy(_params?: any[], _options?: any): Promise<any> {},\n async call(_fn: string, _params?: any[], _options?: {}): Promise<any> {},\n decodeEvents(_events: Event[], options?: { omitUnknown?: boolean }): any {},\n /* eslint-enable @typescript-eslint/no-unused-vars */\n /* eslint-enable @typescript-eslint/no-empty-function */\n methods: undefined,\n };\n\n if (validateBytecode != null) {\n if (contractAddress == null) throw new MissingContractAddressError('Can\\'t validate bytecode without contract address');\n const onChanBytecode = (await getContractByteCode(contractAddress, { onNode })).bytecode;\n const isValid: boolean = source != null\n ? await onCompiler.validateByteCode(\n { bytecode: onChanBytecode, source, options: instance.options },\n ).then(() => true, () => false)\n : bytecode === onChanBytecode;\n if (!isValid) throw new BytecodeMismatchError(source != null ? 'source' : 'bytecode');\n }\n\n /**\n * Compile contract\n * @returns bytecode\n */\n instance.compile = async (options = {}): Promise<Encoded.ContractBytearray> => {\n if (instance.bytecode != null) throw new IllegalArgumentError('Contract already compiled');\n if (instance.source == null) throw new IllegalArgumentError('Can\\'t compile without source code');\n instance.bytecode = (await onCompiler.compileContract({\n code: instance.source, options: { ...instance.options, ...options },\n })).bytecode as Encoded.ContractBytearray;\n return instance.bytecode;\n };\n\n const handleCallError = (\n { returnType, returnValue }: {\n returnType: ContractCallReturnType;\n returnValue: Encoded.ContractBytearray;\n },\n transaction: string,\n ): void => {\n let message: string;\n switch (returnType) {\n case 'ok': return;\n case 'revert':\n message = instance.calldata.decodeFateString(returnValue);\n break;\n case 'error':\n message = decode(returnValue).toString();\n break;\n default:\n throw new InternalError(`Unknown return type: ${returnType}`);\n }\n throw new NodeInvocationError(message, transaction);\n };\n\n const sendAndProcess = async (tx: Encoded.Transaction, options: any): Promise<{\n result?: ContractInstance['deployInfo']['result'];\n hash: TxData['hash'];\n tx: Awaited<ReturnType<typeof unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>>>;\n txData: TxData;\n rawTx: Encoded.Transaction;\n }> => {\n options = { ...instance.options, ...options };\n const txData = await send(tx, options);\n const result = {\n hash: txData.hash,\n tx: unpackTx<Tag.ContractCallTx | Tag.ContractCreateTx>(txData.rawTx),\n txData,\n rawTx: txData.rawTx,\n };\n if (txData.blockHeight == null) return result;\n const { callInfo } = await onNode.getTransactionInfoByHash(txData.hash);\n Object.assign(result.txData, callInfo); // TODO: don't duplicate data in result\n // @ts-expect-error TODO api should be updated to match types\n handleCallError(callInfo, tx);\n return { ...result, result: callInfo };\n };\n\n instance._estimateGas = async (name: string, params: any[], options: object): Promise<number> => {\n const { result: { gasUsed } } = await instance\n .call(name, params, { ...options, callStatic: true });\n // taken from https://github.com/aeternity/aepp-sdk-js/issues/1286#issuecomment-977814771\n return Math.floor(gasUsed * 1.25);\n };\n\n /**\n * Deploy contract\n * @param params - Contract init function arguments array\n * @param options - Options\n * @returns deploy info\n */\n instance.deploy = async (\n params = [],\n options?:\n Parameters<typeof instance.compile>[0] &\n Parameters<typeof instance.call>[2] &\n Parameters<AccountBase['address']>[0] &\n Parameters<typeof sendAndProcess>[1],\n ): Promise<ContractInstance['deployInfo']> => {\n const opt = { ...instance.options, ...options };\n if (instance.bytecode == null) await instance.compile(opt);\n // @ts-expect-error TODO: need to fix compatibility between return types of `deploy` and `call`\n if (opt.callStatic === true) return instance.call('init', params, opt);\n if (instance.deployInfo.address != null) throw new DuplicateContractError();\n\n const ownerId = await opt.onAccount.address(options);\n const tx = await _buildTx(Tag.ContractCreateTx, {\n ...opt,\n gasLimit: opt.gasLimit ?? await instance._estimateGas('init', params, opt),\n callData: instance.calldata.encode(instance._name, 'init', params),\n code: instance.bytecode,\n ownerId,\n onNode,\n });\n const contractId = buildContractIdByContractTx(tx);\n const {\n hash, rawTx, result, txData,\n } = await sendAndProcess(tx, opt);\n instance.deployInfo = Object.freeze({\n result,\n owner: ownerId,\n transaction: hash,\n rawTx,\n txData,\n address: contractId,\n });\n return instance.deployInfo;\n };\n\n /**\n * Get function schema from contract ACI object\n * @param name - Function name\n * @returns function ACI\n */\n function getFunctionACI(name: string): Partial<FunctionACI> {\n const fn = instance._aci.encodedAci.contract.functions.find(\n (f: { name: string }) => f.name === name,\n );\n if (fn != null) {\n return fn;\n }\n if (name === 'init') return { payable: false };\n throw new NoSuchContractFunctionError(`Function ${name} doesn't exist in contract`);\n }\n\n /**\n * Call contract function\n * @param fn - Function name\n * @param params - Array of function arguments\n * @param options - Array of function arguments\n * @returns CallResult\n */\n instance.call = async (fn: string, params: any[] = [], options: object = {}) => {\n const opt = { ...instance.options, ...options };\n const fnACI = getFunctionACI(fn);\n const contractId = instance.deployInfo.address;\n\n if (fn == null) throw new MissingFunctionNameError();\n if (fn === 'init' && opt.callStatic === false) throw new InvalidMethodInvocationError('\"init\" can be called only via dryRun');\n if (contractId == null && fn !== 'init') throw new InvalidMethodInvocationError('You need to deploy contract before calling!');\n if (fn !== 'init' && opt.amount > 0 && fnACI.payable === false) throw new NotPayableFunctionError(opt.amount, fn);\n\n const callerId = await Promise.resolve()\n .then(() => opt.onAccount.address(opt))\n .catch((error: any) => {\n if (opt.callStatic === true) return DRY_RUN_ACCOUNT.pub;\n throw error;\n }) as Encoded.AccountAddress;\n const callData = instance.calldata.encode(instance._name, fn, params);\n\n let res: any;\n if (opt.callStatic === true) {\n if (typeof opt.top === 'number') {\n opt.top = (await getKeyBlock(opt.top, { onNode })).hash;\n }\n const txOpt = { ...opt, onNode, callData };\n if (opt.nonce == null && opt.top != null) {\n opt.nonce = (await getAccount(callerId, { hash: opt.top, onNode })).nonce + 1;\n }\n const tx = await (fn === 'init'\n ? _buildTx(Tag.ContractCreateTx, { ...txOpt, code: instance.bytecode, ownerId: callerId })\n : _buildTx(Tag.ContractCallTx, { ...txOpt, callerId, contractId }));\n\n const { callObj, ...dryRunOther } = await txDryRun(tx, callerId, { onNode, ...opt });\n if (callObj == null) throw new UnexpectedTsError();\n handleCallError({\n returnType: callObj.returnType as ContractCallReturnType,\n returnValue: callObj.returnValue as Encoded.ContractBytearray,\n }, tx);\n res = { ...dryRunOther, tx: unpackTx(tx), result: callObj };\n } else {\n const tx = await _buildTx(Tag.ContractCallTx, {\n ...opt,\n onNode,\n gasLimit: opt.gasLimit ?? await instance._estimateGas(fn, params, opt),\n callerId,\n contractId,\n callData,\n });\n res = await sendAndProcess(tx, opt);\n }\n if (opt.callStatic === true || res.txData.blockHeight != null) {\n res.decodedResult = fnACI.returns != null && fnACI.returns !== 'unit' && fn !== 'init'\n && instance.calldata.decode(instance._name, fn, res.result.returnValue);\n res.decodedEvents = instance.decodeEvents(res.result.log, opt);\n }\n return res;\n };\n\n /**\n * @param address - Contract address that emitted event\n * @param nameHash - Hash of emitted event name\n * @param options - Options\n * @returns Contract name\n * @throws {@link MissingEventDefinitionError}\n * @throws {@link AmbiguousEventDefinitionError}\n */\n function getContractNameByEvent(\n address: Encoded.ContractAddress,\n nameHash: BigInt,\n { contractAddressToName }: {\n contractAddressToName?: { [key: Encoded.ContractAddress]: string };\n },\n ): string {\n const addressToName = { ...instance.options.contractAddressToName, ...contractAddressToName };\n if (addressToName[address] != null) return addressToName[address];\n\n const matchedEvents = [\n instance._aci.encodedAci,\n ...instance._aci.externalEncodedAci,\n ]\n .filter(({ contract }) => contract?.event)\n .map(({ contract }) => [contract.name, contract.event.variant])\n .map(([name, events]) => events.map((event: {}) => [name, Object.keys(event)[0]]))\n .flat()\n .filter(([, eventName]) => BigInt(`0x${calcHash(eventName).toString('hex')}`) === nameHash);\n switch (matchedEvents.length) {\n case 0: throw new MissingEventDefinitionError(nameHash.toString(), address);\n case 1: return matchedEvents[0][0];\n default: throw new AmbiguousEventDefinitionError(address, matchedEvents);\n }\n }\n\n /**\n * Decode Events\n * @param events - Array of encoded events (callRes.result.log)\n * @param options - Options\n * @returns DecodedEvents\n */\n instance.decodeEvents = (\n events: Event[],\n { omitUnknown, ...opt }: { omitUnknown?: boolean } = {},\n ): DecodedEvent[] => events\n .map((event) => {\n const topics = event.topics.map((t: string | number) => BigInt(t));\n let contractName;\n try {\n contractName = getContractNameByEvent(event.address, topics[0], opt);\n } catch (error) {\n if ((omitUnknown ?? false) && error instanceof MissingEventDefinitionError) return null;\n throw error;\n }\n const decoded = instance.calldata.decodeEvent(contractName, event.data, topics);\n const [name, args] = Object.entries(decoded)[0];\n return {\n name,\n args,\n contract: {\n name: contractName,\n address: event.address,\n },\n };\n }).filter((e: DecodedEvent | null): e is DecodedEvent => e != null);\n\n /**\n * Generate proto function based on contract function using Contract ACI schema\n * All function can be called like:\n * ```js\n * await contract.methods.testFunction()\n * ```\n * then sdk will decide to use dry-run or send tx\n * on-chain base on if function stateful or not.\n * Also, you can manually do that:\n * ```js\n * await contract.methods.testFunction.get() // use call-static (dry-run)\n * await contract.methods.testFunction.send() // send tx on-chain\n * ```\n */\n instance.methods = Object.fromEntries(instance._aci.encodedAci.contract.functions\n .map(({ name, arguments: aciArgs, stateful }: FunctionACI) => {\n const genHandler = (callStatic: boolean) => async (...args: any[]) => {\n const options = args.length === aciArgs.length + 1 ? args.pop() : {};\n if (typeof options !== 'object') throw new TypeError(`Options should be an object: ${options as string}`);\n if (name === 'init') return instance.deploy(args, { callStatic, ...options });\n return instance.call(name, args, { callStatic, ...options });\n };\n return [\n name,\n Object.assign(\n genHandler(name === 'init' ? false : !stateful),\n {\n get: genHandler(true),\n send: genHandler(false),\n },\n ),\n ];\n }));\n\n return instance;\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Contract module - routines to interact with the æternity contract\n *\n * High level documentation of the contracts are available at\n * https://github.com/aeternity/protocol/tree/master/contracts and\n */\n\nimport { AensName } from '../tx/builder/constants';\nimport { produceNameId } from '../tx/builder/helpers';\nimport { concatBuffers } from '../utils/other';\nimport { decode, Encoded } from '../utils/encoder';\nimport AccountBase from '../account/Base';\nimport Node from '../Node';\n\nexport { default as getContractInstance } from './aci';\n\n/**\n * Utility method to create a delegate signature for a contract\n * @category contract\n * @param ids - The list of id's to prepend\n * @param opt - Options\n * @param opt.onNode - Node to use\n * @param opt.onAccount - Account to use\n * @returns Signature in hex representation\n */\nasync function delegateSignatureCommon(\n ids: Encoded.Any[],\n { onAccount, onNode, ...opt }:\n { onAccount: AccountBase; onNode: Node } & Parameters<AccountBase['sign']>[1],\n): Promise<string> {\n const signature = await onAccount.sign(\n concatBuffers([\n Buffer.from((await onNode.getStatus()).networkId),\n ...ids.map((e) => decode(e)),\n ]),\n opt,\n );\n return Buffer.from(signature).toString('hex');\n}\n\n/**\n * Helper to generate a signature to delegate pre-claim/claim/transfer/revoke of a name to\n * a contract.\n * @category contract\n * @param contractId - Contract Id\n * @param opt - Options\n * @param opt.name - The name\n * @returns Signature for delegation\n * @example\n * ```js\n * const aeSdk = new AeSdk({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const name = 'example.chain' // AENS name\n * const onAccount = await aeSdk.address() // Sign with a specific account\n * // Preclaim signature\n * const preclaimSig = await aeSdk.createAensDelegationSignature(contractId, { onAccount: current })\n * // Claim, transfer and revoke signature\n * const aensDelegationSig = await contract.createAensDelegationSignature(\n * contractId, { name, onAccount: current }\n * )\n * ```\n */\nexport async function createAensDelegationSignature(\n contractId: Encoded.ContractAddress,\n opt: Parameters<AccountBase['address']>[0] & Parameters<typeof delegateSignatureCommon>[1] &\n { name?: AensName },\n): Promise<string> {\n return delegateSignatureCommon(\n [\n await opt.onAccount.address(opt),\n ...opt.name != null ? [produceNameId(opt.name)] : [],\n contractId,\n ],\n opt,\n );\n}\n\n/**\n * Helper to generate a signature to delegate register/extend/respond of a Oracle to a contract.\n * @category contract\n * @param contractId - Contract Id\n * @param opt - Options\n * @param opt.queryId - Oracle Query Id\n * @returns Signature for delegation\n * @example\n * ```js\n * const aeSdk = new AeSdk({ ... })\n * const contractId = 'ct_asd2ks...' // contract address\n * const queryId = 'oq_...' // Oracle Query Id\n * const onAccount = await aeSdk.address() // Sign with a specific account\n * // Oracle register and extend signature\n * const oracleDelegationSig = await aeSdk.createOracleDelegationSignature(contractId)\n * // Oracle respond signature\n * const respondSig = await aeSdk.createOracleDelegationSignature(contractId, { queryId })\n * ```\n */\nexport async function createOracleDelegationSignature(\n contractId: Encoded.ContractAddress,\n opt: Parameters<AccountBase['address']>[0] & Parameters<typeof delegateSignatureCommon>[1] &\n { queryId?: Encoded.OracleQueryId },\n): Promise<string> {\n return delegateSignatureCommon(\n [opt.queryId ?? await opt.onAccount.address(opt), contractId],\n opt,\n );\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Oracle methods - routines to interact with the æternity oracle system\n *\n * The high-level description of the oracle system is\n * https://github.com/aeternity/protocol/blob/master/ORACLE.md in the protocol\n * repository.\n */\n\nimport BigNumber from 'bignumber.js';\nimport { send, SendOptions } from './spend';\nimport { mapObject, pause } from './utils/other';\nimport { oracleQueryId } from './tx/builder/helpers';\nimport { unpackTx } from './tx/builder';\nimport {\n ORACLE_TTL,\n ORACLE_TTL_TYPES,\n QUERY_FEE,\n QUERY_TTL,\n RESPONSE_TTL,\n} from './tx/builder/schema';\nimport { Tag } from './tx/builder/constants';\nimport { RequestTimedOutError } from './utils/errors';\nimport {\n decode, encode, Encoded, Encoding,\n} from './utils/encoder';\nimport { _getPollInterval } from './chain';\nimport { _buildTx, BuildTxOptions } from './tx';\nimport Node from './Node';\nimport AccountBase from './account/Base';\n\ntype OracleQueries = Awaited<ReturnType<Node['getOracleQueriesByPubkey']>>['oracleQueries'];\n\n/**\n * Poll for oracle queries\n * @category oracle\n * @param oracleId - Oracle public key\n * @param onQuery - OnQuery callback\n * @param options - Options object\n * @param options.interval - Poll interval(default: 5000)\n * @param options.onNode - Node to use\n * @returns Callback to stop polling function\n */\nexport function pollForQueries(\n oracleId: Encoded.OracleAddress,\n onQuery: (queries: OracleQueries) => void,\n { interval, onNode, ...options }: { interval?: number; onNode: Node }\n & Parameters<typeof _getPollInterval>[1],\n): () => void {\n interval ??= _getPollInterval('microblock', options);\n const knownQueryIds = new Set();\n const checkNewQueries = async (): Promise<void> => {\n const queries = ((await onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries ?? [])\n .filter(({ id }) => !knownQueryIds.has(id));\n queries.forEach(({ id }) => knownQueryIds.add(id));\n if (queries.length > 0) onQuery(queries);\n };\n\n let stopped = false;\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n (async () => {\n while (!stopped) { // eslint-disable-line no-unmodified-loop-condition\n // TODO: allow to handle this error somehow\n await checkNewQueries().catch(console.error);\n await pause(interval);\n }\n })();\n return () => { stopped = true; };\n}\n\n/**\n * Poll for oracle query response\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options object\n * @param options.interval - Poll interval\n * @param options.onNode - Node to use\n * @returns OracleQuery object\n */\nexport async function pollForQueryResponse(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n { interval, onNode, ...options }:\n { interval?: number; onNode: Node } & Parameters<typeof _getPollInterval>[1],\n): Promise<string> {\n interval ??= _getPollInterval('microblock', options);\n let height;\n let ttl;\n let response;\n do {\n if (height != null) await pause(interval);\n ({ response, ttl } = await onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId));\n const responseBuffer = decode(response as Encoded.OracleResponse);\n if (responseBuffer.length > 0) return responseBuffer.toString();\n height = await this.getHeight();\n } while (ttl >= height);\n throw new RequestTimedOutError(height);\n}\n\n/**\n * Constructor for OracleQuery Object (helper object for using OracleQuery)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle Query id\n * @param options - Options\n * @returns OracleQuery object\n */\nexport async function getQueryObject(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n options: RespondToQueryOptions & Parameters<typeof pollForQueryResponse>[2],\n): Promise<GetQueryObjectReturnType> {\n const record = await options.onNode.getOracleQueryByPubkeyAndQueryId(oracleId, queryId);\n return {\n ...record,\n decodedQuery: decode(record.query as Encoded.OracleQueryId).toString(),\n decodedResponse: decode(record.response as Encoded.OracleResponse).toString(),\n respond: async (response, opt) => (\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n respondToQuery(oracleId, queryId, response, { ...options, ...opt })\n ),\n pollForResponse: async (opt) => pollForQueryResponse(oracleId, queryId, { ...options, ...opt }),\n };\n}\n\ninterface GetQueryObjectReturnType extends Awaited<ReturnType<Node['getOracleQueryByPubkeyAndQueryId']>> {\n decodedQuery: string;\n decodedResponse: string;\n respond: (response: string, options?: Parameters<typeof respondToQuery>[3]) =>\n ReturnType<typeof respondToQuery>;\n pollForResponse: (options?: Parameters<typeof pollForQueryResponse>[2]) =>\n ReturnType<typeof pollForQueryResponse>;\n}\n\n/**\n * Post query to oracle\n * @category oracle\n * @param oracleId - Oracle public key\n * @param query - Oracle query object\n * @param options - Options object\n * @param options.queryTtl - queryTtl Oracle query time to leave\n * @param options.responseTtl - queryFee Oracle query response time to leave\n * @param options.queryFee - queryFee Oracle query fee\n * @param options.fee - fee Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Query object\n */\nexport async function postQueryToOracle(\n oracleId: Encoded.OracleAddress,\n query: string,\n options: PostQueryToOracleOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getQueryObject>>> {\n options.queryFee ??= (await options.onNode.getOracleByPubkey(oracleId)).queryFee.toString();\n const senderId = await options.onAccount.address(options);\n\n const oracleQueryTx = await _buildTx(Tag.OracleQueryTx, {\n queryTtlType: QUERY_TTL.type,\n queryTtlValue: QUERY_TTL.value,\n responseTtlType: RESPONSE_TTL.type,\n responseTtlValue: RESPONSE_TTL.value,\n ...options,\n oracleId,\n senderId,\n query,\n });\n const { nonce } = unpackTx(oracleQueryTx, Tag.OracleQueryTx).tx;\n const queryId = oracleQueryId(senderId, nonce, oracleId);\n return {\n ...await send(oracleQueryTx, options),\n ...await getQueryObject(oracleId, queryId, options),\n };\n}\n\ntype PostQueryToOracleOptionsType = Parameters<typeof send>[1]\n& Parameters<typeof getQueryObject>[2]\n& BuildTxOptions<Tag.OracleQueryTx, 'oracleId' | 'senderId' | 'query' | 'queryTtlType' | 'queryTtlValue' | 'responseTtlType' | 'responseTtlValue'>\n& {\n queryTtlType?: ORACLE_TTL_TYPES;\n queryTtlValue?: number;\n responseTtlType?: ORACLE_TTL_TYPES;\n responseTtlValue?: number;\n};\ninterface PostQueryToOracleOptions extends PostQueryToOracleOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options object\n * @param options.fee - fee Transaction fee\n * @param options.ttl - Transaction time to leave\n * @param options.oracleTtlType - Oracle time to leave for extend\n * @param options.oracleTtlValue - Oracle time to leave for extend\n * @returns Oracle object\n */\nexport async function extendOracleTtl(\n oracleId: Encoded.OracleAddress,\n options: ExtendOracleTtlOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const oracleExtendTx = await _buildTx(Tag.OracleExtendTx, {\n oracleTtlType: ORACLE_TTL.type,\n oracleTtlValue: ORACLE_TTL.value,\n ...options,\n callerId: await options.onAccount.address(options),\n oracleId,\n });\n return {\n ...await send(oracleExtendTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype ExtendOracleTtlOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleExtendTx, 'oracleTtlType' | 'oracleTtlValue' | 'callerId' | 'oracleId'>\n& { oracleTtlType?: ORACLE_TTL_TYPES; oracleTtlValue?: number };\ninterface ExtendOracleTtlOptions extends ExtendOracleTtlOptionsType {}\n\n/**\n * Extend oracle ttl\n * @category oracle\n * @param oracleId - Oracle public key\n * @param queryId - Oracle query id\n * @param response - Oracle query response\n * @param options - Options object\n * @param options.responseTtl - responseTtl Query response time to leave\n * @param options.fee - Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Oracle object\n */\nexport async function respondToQuery(\n oracleId: Encoded.OracleAddress,\n queryId: Encoded.OracleQueryId,\n response: string,\n options: RespondToQueryOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const oracleRespondTx = await _buildTx(Tag.OracleResponseTx, {\n responseTtlType: RESPONSE_TTL.type,\n responseTtlValue: RESPONSE_TTL.value,\n ...options,\n callerId: await options.onAccount.address(options),\n oracleId,\n queryId,\n response,\n });\n return {\n ...await send(oracleRespondTx, options),\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n ...await getOracleObject(oracleId, options),\n };\n}\n\ntype RespondToQueryOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleResponseTx, 'callerId' | 'oracleId' | 'queryId' | 'response' | 'responseTtlType' | 'responseTtlValue'>\n& { responseTtlType?: ORACLE_TTL_TYPES; responseTtlValue?: number };\ninterface RespondToQueryOptions extends RespondToQueryOptionsType {}\n\n/**\n * Constructor for Oracle Object (helper object for using Oracle)\n * @category oracle\n * @param oracleId - Oracle public key\n * @param options - Options\n * @returns Oracle object\n */\nexport async function getOracleObject(\n oracleId: Encoded.OracleAddress,\n options: { onNode: Node; onAccount: AccountBase },\n): Promise<GetOracleObjectReturnType> {\n return {\n ...await options.onNode.getOracleByPubkey(oracleId),\n queries: (await options.onNode.getOracleQueriesByPubkey(oracleId)).oracleQueries,\n ...mapObject<Function, Function>(\n {\n pollQueries: pollForQueries,\n postQuery: postQueryToOracle,\n respondToQuery,\n extendOracle: extendOracleTtl,\n getQuery: getQueryObject,\n },\n ([name, handler]) => [\n name,\n (...args: any) => {\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n Object.assign(lastArg, { ...options, ...lastArg });\n } else args.push(options);\n return handler(oracleId, ...args);\n },\n ],\n ),\n } as any;\n}\n\ninterface GetOracleObjectReturnType extends Awaited<ReturnType<Node['getOracleByPubkey']>> {\n id: Encoded.OracleAddress;\n queries: OracleQueries;\n // TODO: replace getOracleObject with a class\n pollQueries: (cb: Parameters<typeof pollForQueries>[1]) => ReturnType<typeof pollForQueries>;\n postQuery: Function;\n respondToQuery: Function;\n extendOracle: Function;\n getQuery: Function;\n}\n\n/**\n * Register oracle\n * @category oracle\n * @param queryFormat - Format of query\n * @param responseFormat - Format of query response\n * @param options - Options\n * @param options.queryFee - Oracle query Fee\n * @param options - Options object\n * @param options.abiVersion - Always 0 (do not use virtual machine)\n * @param options.fee - Transaction fee\n * @param options.ttl - Transaction time to leave\n * @returns Oracle object\n */\nexport async function registerOracle(\n queryFormat: string,\n responseFormat: string,\n options: RegisterOracleOptions,\n): Promise<Awaited<ReturnType<typeof send>> & Awaited<ReturnType<typeof getOracleObject>>> {\n const accountId = await options.onAccount.address(options);\n const oracleRegisterTx = await _buildTx(Tag.OracleRegisterTx, {\n queryFee: QUERY_FEE,\n oracleTtlValue: ORACLE_TTL.value,\n oracleTtlType: ORACLE_TTL.type,\n ...options,\n accountId,\n queryFormat,\n responseFormat,\n });\n return {\n ...await send(oracleRegisterTx, options),\n ...await getOracleObject(encode(decode(accountId), Encoding.OracleAddress), options),\n };\n}\n\ntype RegisterOracleOptionsType = SendOptions & Parameters<typeof getOracleObject>[1]\n& BuildTxOptions<Tag.OracleRegisterTx, 'accountId' | 'queryFormat' | 'responseFormat' | 'queryFee' | 'oracleTtlType' | 'oracleTtlValue'>\n& {\n queryFee?: number | string | BigNumber;\n oracleTtlType?: ORACLE_TTL_TYPES;\n oracleTtlValue?: number;\n};\ninterface RegisterOracleOptions extends RegisterOracleOptionsType {}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n/**\n * Generalized Account module - routines to use generalized account\n */\n\nimport { MAX_AUTH_FUN_GAS, TxSchema } from '../tx/builder/schema';\nimport { Tag } from '../tx/builder/constants';\nimport {\n buildContractIdByContractTx, buildTx, BuiltTx, TxUnpacked, unpackTx,\n} from '../tx/builder';\nimport {\n _buildTx, BuildTxOptions, getVmVersion, prepareTxParams,\n} from '../tx';\nimport { hash } from '../utils/crypto';\nimport { decode, Encoded, Encoding } from '../utils/encoder';\nimport { IllegalArgumentError, MissingParamError, InvalidAuthDataError } from '../utils/errors';\nimport { concatBuffers } from '../utils/other';\nimport AccountBase from '../account/Base';\nimport { getContractInstance } from './methods';\nimport { send, SendOptions } from '../spend';\nimport Node from '../Node';\nimport { getAccount } from '../chain';\nimport Compiler from './Compiler';\n\n/**\n * Check if account is GA\n * @category contract\n * @param address - Account address\n * @param options - Options\n * @returns if account is GA\n */\nexport async function isGA(\n address: Encoded.AccountAddress,\n options: Parameters<typeof getAccount>[1],\n): Promise<boolean> {\n const { contractId } = await getAccount(address, options);\n return contractId != null;\n}\n\n/**\n * Convert current account to GA\n * @category contract\n * @param authFnName - Authorization function name\n * @param source - Auth contract source code\n * @param args - init arguments\n * @param options - Options\n * @returns General Account Object\n */\nexport async function createGeneralizedAccount(\n authFnName: string,\n source: string,\n args: any[],\n {\n onAccount, onCompiler, onNode, ...options\n }: CreateGeneralizedAccountOptions,\n): Promise<Readonly<{\n owner: Encoded.AccountAddress;\n transaction: Encoded.TxHash;\n rawTx: Encoded.Transaction;\n gaContractId: Encoded.ContractAddress;\n }>> {\n const ownerId = await onAccount.address(options);\n if (await isGA(ownerId, { onNode })) throw new IllegalArgumentError(`Account ${ownerId} is already GA`);\n\n const contract = await getContractInstance({\n onAccount, onCompiler, onNode, source,\n });\n\n const tx = await _buildTx(Tag.GaAttachTx, {\n ...options,\n onNode,\n code: await contract.compile(),\n gasLimit: options.gasLimit ?? await contract._estimateGas('init', args, options),\n ownerId,\n callData: contract.calldata.encode(contract._name, 'init', args),\n authFun: hash(authFnName),\n });\n const contractId = buildContractIdByContractTx(tx);\n const { hash: transaction, rawTx } = await send(tx, {\n onNode, onAccount, onCompiler, ...options,\n });\n\n return Object.freeze({\n owner: ownerId,\n transaction,\n rawTx,\n gaContractId: contractId,\n });\n}\n\ninterface CreateGeneralizedAccountOptions extends\n BuildTxOptions<Tag.GaAttachTx, 'authFun' | 'callData' | 'code' | 'ownerId' | 'gasLimit'>,\n SendOptions {\n onAccount: AccountBase;\n onCompiler: Compiler;\n onNode: Node;\n gasLimit?: number;\n}\n\n/**\n * Create a metaTx transaction\n * @category contract\n * @param rawTransaction - Inner transaction\n * @param authData - Object with gaMeta params\n * @param authFnName - Authorization function name\n * @param options - Options\n * @param options.onAccount - Account to use\n * @returns Transaction string\n */\nexport async function createMetaTx(\n rawTransaction: Encoded.Transaction,\n authData: {\n gasLimit?: number;\n callData?: Encoded.ContractBytearray;\n source?: string;\n args?: any[];\n },\n authFnName: string,\n {\n onAccount, onCompiler, onNode, ...options\n }:\n { onAccount: AccountBase; onCompiler: Compiler; onNode: Node }\n & Parameters<AccountBase['address']>[0],\n): Promise<Encoded.Transaction> {\n const wrapInEmptySignedTx = (\n tx: Encoded.Transaction | Uint8Array | TxUnpacked<TxSchema>,\n ): BuiltTx<TxSchema, Encoding.Transaction> => (\n buildTx({ encodedTx: tx, signatures: [] }, Tag.SignedTx)\n );\n\n if (Object.keys(authData).length <= 0) throw new MissingParamError('authData is required');\n\n const gasLimit = authData.gasLimit ?? MAX_AUTH_FUN_GAS;\n if (gasLimit > MAX_AUTH_FUN_GAS) {\n throw new InvalidAuthDataError(`the maximum gasLimit value for ga authFun is ${MAX_AUTH_FUN_GAS}, got ${gasLimit}`);\n }\n\n const authCallData = authData.callData ?? await (async () => {\n if (authData.source == null || authData.args == null) throw new InvalidAuthDataError('Auth data must contain source code and arguments.');\n const contract = await getContractInstance({\n onCompiler, onNode, source: authData.source,\n });\n return contract.calldata.encode(contract._name, authFnName, authData.args);\n })();\n\n const { abiVersion } = await getVmVersion(Tag.ContractCallTx, { onNode });\n const wrappedTx = wrapInEmptySignedTx(unpackTx<Tag.SignedTx>(rawTransaction));\n const params = {\n ...options,\n tx: {\n ...wrappedTx,\n tx: wrappedTx.txObject,\n },\n // TODO: accept an address instead\n gaId: await onAccount.address(options),\n abiVersion,\n authData: authCallData,\n gasLimit,\n vsn: 2,\n };\n // @ts-expect-error createMetaTx needs to be integrated into tx builder\n const { fee } = await prepareTxParams(Tag.GaMetaTx, { ...params, onNode });\n const { rlpEncoded: metaTxRlp } = buildTx({ ...params, fee }, Tag.GaMetaTx);\n return wrapInEmptySignedTx(metaTxRlp).tx;\n}\n\n/**\n * Build a transaction hash the same as `Auth.tx_hash`\n * @category contract\n * @param transaction - tx-encoded transaction\n * @param options - Options\n * @param options.onNode - Node to use\n * @returns Transaction hash\n */\nexport async function buildAuthTxHash(\n transaction: Encoded.Transaction,\n { onNode }: { onNode: Node },\n): Promise<Uint8Array> {\n const { networkId } = await onNode.getStatus();\n return new Uint8Array(hash(\n concatBuffers([Buffer.from(networkId), decode(transaction)]),\n ));\n}\n","import { Encoded } from '../utils/encoder';\nimport { createMetaTx } from '../contract/ga';\nimport Node from '../Node';\n\n/**\n * @deprecated Use createMetaTx instead\n * @hidden\n */\nexport async function signUsingGA(\n tx: Encoded.Transaction,\n { authData, authFun, ...options }: {\n authData: Parameters<typeof createMetaTx>[1];\n authFun: Parameters<typeof createMetaTx>[2];\n } & Parameters<typeof createMetaTx>[3],\n): Promise<Encoded.Transaction> {\n return createMetaTx(tx, authData, authFun, options);\n}\n\n/**\n * @deprecated Use getHeight instead\n * @hidden\n */\nexport async function height({ onNode }: { onNode: Node }): Promise<number> {\n return (await onNode.getCurrentKeyBlockHeight()).height;\n}\n","import BigNumber from 'bignumber.js';\nimport { buildTx } from '../tx/builder';\nimport { Tag } from '../tx/builder/constants';\nimport { calculateMinFee as calculateMinFeeInternal } from '../tx/builder/field-types/fee';\nimport { TxParamsCommon } from '../tx/builder/schema';\nimport { AE_AMOUNT_FORMATS } from '../utils/amount-formatter';\nimport { mapObject } from '../utils/other';\nimport { Encoding } from '../utils/encoder';\n\nexport * from './methods';\n\n/**\n * @deprecated use NamePointer from apis/node instead\n * @hidden\n */\nexport interface Pointer {\n key: string;\n id: string;\n}\n\n/**\n * @deprecated use genSalt instead\n * @hidden\n */\nexport function salt(): number {\n return Math.floor(Math.random() * Math.floor(Number.MAX_SAFE_INTEGER));\n}\n\n/**\n * @deprecated use genSalt instead\n * @hidden\n */\nexport const createSalt = salt;\n\n/**\n * Calculate min fee\n * @category transaction builder\n * @param txType - Transaction type\n * @param options - Options object\n * @param options.params - Tx params\n * @deprecated use buildTx to generate transaction, unpack it and refer to `fee` field\n * @hidden\n * @example\n * ```js\n * calculateMinFee('spendTx', { gasLimit, params })\n * ```\n */\nexport function calculateMinFee(\n txType: Tag,\n { params, vsn, denomination }: CalculateMinFeeOptions,\n): BigNumber {\n return calculateMinFeeInternal(\n txType,\n (fee: BigNumber) => (\n // @ts-expect-error anyway this planned to be removed\n buildTx({ ...params, _computingMinFee: fee }, txType, { vsn, denomination })\n ),\n );\n}\n\ninterface CalculateMinFeeOptions {\n params: TxParamsCommon;\n vsn?: number;\n denomination?: AE_AMOUNT_FORMATS;\n}\n\n/**\n * @deprecated Maximum gas limit depends on transaction size, this value is outdated,\n * sdk check/provides gasLimit by itself while building a transaction\n * @hidden\n */\nexport const GAS_MAX = 1600000 - 21000;\n\n/**\n * @deprecated use `Tag`\n * @hidden\n */\nexport enum TX_TYPE {\n account = 10,\n signed = 11,\n spend = 12,\n oracleRegister = 22,\n oracleQuery = 23,\n oracleResponse = 24,\n oracleExtend = 25,\n nameClaim = 32,\n namePreClaim = 33,\n nameUpdate = 34,\n nameRevoke = 35,\n nameTransfer = 36,\n contract = 40,\n contractCallResult = 41,\n contractCreate = 42,\n contractCall = 43,\n channelCreate = 50,\n channelDeposit = 51,\n channelWithdraw = 52,\n channelCloseMutual = 53,\n channelCloseSolo = 54,\n channelSlash = 55,\n channelSettle = 56,\n channelOffChain = 57,\n channel = 58,\n channelSnapshotSolo = 59,\n proofOfInclusion = 60,\n stateTrees = 62,\n merklePatriciaTree = 63,\n merklePatriciaTreeValue = 64,\n sophiaByteCode = 70,\n gaAttach = 80,\n gaMeta = 81,\n payingFor = 82,\n channelForceProgress = 521,\n channelOffChainUpdateTransfer = 570,\n channelOffChainUpdateDeposit = 571,\n channelOffChainUpdateWithdrawal = 572,\n channelOffChainCreateContract = 573,\n channelOffChainCallContract = 574,\n channelReconnect = 575,\n contractsTree = 621,\n contractCallsTree = 622,\n channelsTree = 623,\n nameserviceTree = 624,\n oraclesTree = 625,\n accountsTree = 626,\n}\n\n/**\n * @deprecated use `readId`, `writeId`\n * @hidden\n */\nexport const ID_TAG = {\n account: 1,\n name: 2,\n commitment: 3,\n oracle: 4,\n contract: 5,\n channel: 6,\n} as const;\n\n/**\n * @deprecated use `readId`, `writeId`\n * @hidden\n */\nexport const PREFIX_ID_TAG = {\n ak: ID_TAG.account,\n nm: ID_TAG.name,\n cm: ID_TAG.commitment,\n ok: ID_TAG.oracle,\n ct: ID_TAG.contract,\n ch: ID_TAG.channel,\n} as const;\n\n/**\n * @deprecated use `readId`, `writeId`\n * @hidden\n */\nexport const ID_TAG_PREFIX = mapObject(\n PREFIX_ID_TAG,\n ([key, value]: [Encoding, number]) => [value, key],\n);\n\n/**\n * @deprecated use `getDefaultPointerKey`\n * @hidden\n */\nexport enum POINTER_KEY_BY_PREFIX {\n ak = 'account_pubkey',\n ok = 'oracle_pubkey',\n ct = 'contract_pubkey',\n ch = 'channel',\n}\n","export default function semverSatisfies(\n version: string,\n geVersion: string,\n ltVersion: string,\n): boolean {\n const getComponents = (v: string): number[] => v\n .split(/[-+]/)[0].split('.').map((i) => +i);\n\n const versionComponents = getComponents(version);\n const geComponents = getComponents(geVersion);\n const ltComponents = getComponents(ltVersion);\n\n const base = Math.max(...versionComponents, ...geComponents, ...ltComponents) + 1;\n const componentsToNumber = (components: number[]): number => components.reverse()\n .reduce((acc, n, idx) => acc + n * base ** idx, 0);\n\n const vNumber = componentsToNumber(versionComponents);\n const geNumber = componentsToNumber(geComponents);\n const ltNumber = componentsToNumber(ltComponents);\n return vNumber >= geNumber && vNumber < ltNumber;\n}\n","import { RestError, PipelineResponse, PipelinePolicy } from '@azure/core-rest-pipeline';\nimport { AdditionalPolicyConfig } from '@azure/core-client';\nimport { pause } from './other';\nimport semverSatisfies from './semver-satisfies';\nimport { UnsupportedVersionError } from './errors';\n\nexport const genRequestQueuesPolicy = (): AdditionalPolicyConfig => {\n const requestQueues = new Map<string, Promise<unknown>>();\n\n return {\n policy: {\n name: 'request-queues',\n async sendRequest(request, next) {\n const key = request.headers.get('__queue');\n request.headers.delete('__queue');\n const getResponse = async (): Promise<PipelineResponse> => next(request);\n if (key == null) return getResponse();\n const req = (requestQueues.get(key) ?? Promise.resolve()).then(getResponse, getResponse);\n // TODO: remove after fixing https://github.com/aeternity/aeternity/issues/3803\n // gap to ensure that node won't reject the nonce\n requestQueues.set(key, req.then(async () => pause(750)));\n return req;\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genCombineGetRequestsPolicy = (): AdditionalPolicyConfig => {\n const pendingGetRequests = new Map<string, Promise<PipelineResponse>>();\n\n return {\n policy: {\n name: 'combine-requests',\n async sendRequest(request, next) {\n if (request.method !== 'GET') return next(request);\n const key = JSON.stringify([request.url, request.body]);\n const response = pendingGetRequests.get(key) ?? next(request);\n pendingGetRequests.set(key, response);\n try {\n return await response;\n } finally {\n pendingGetRequests.delete(key);\n }\n },\n },\n position: 'perCall',\n };\n};\n\nexport const genErrorFormatterPolicy = (\n getMessage: (b: any) => string,\n): AdditionalPolicyConfig => ({\n policy: {\n name: 'error-formatter',\n async sendRequest(request, next) {\n try {\n return await next(request);\n } catch (error) {\n if (!(error instanceof RestError) || error.request == null) throw error;\n if (error.response?.bodyAsText == null) throw error;\n\n let body;\n try {\n body = JSON.parse(error.response.bodyAsText);\n } catch (e) {\n throw error;\n }\n error.message = `${new URL(error.request.url).pathname.slice(1)} error`;\n const message = getMessage(body);\n if (message !== '') error.message += `:${message}`;\n throw error;\n }\n },\n },\n position: 'perCall',\n});\n\nexport const genVersionCheckPolicy = (\n name: string,\n ignorePath: string,\n versionPromise: Promise<string>,\n geVersion: string,\n ltVersion: string,\n): PipelinePolicy => ({\n name: 'version-check',\n async sendRequest(request, next) {\n if (new URL(request.url).pathname === ignorePath) return next(request);\n const args = [await versionPromise, geVersion, ltVersion] as const;\n if (!semverSatisfies(...args)) throw new UnsupportedVersionError(name, ...args);\n return next(request);\n },\n});\n","import * as coreClient from \"@azure/core-client\";\n\nexport const Header: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Header\",\n modelProperties: {\n hash: {\n serializedName: \"hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n height: {\n serializedName: \"height\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n prevHash: {\n serializedName: \"prev_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n prevKeyHash: {\n serializedName: \"prev_key_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n miner: {\n serializedName: \"miner\",\n type: {\n name: \"String\"\n }\n },\n beneficiary: {\n serializedName: \"beneficiary\",\n type: {\n name: \"String\"\n }\n },\n target: {\n serializedName: \"target\",\n type: {\n name: \"String\"\n }\n },\n pow: {\n constraints: {\n MinItems: 42,\n MaxItems: 42\n },\n serializedName: \"pow\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n time: {\n serializedName: \"time\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n info: {\n serializedName: \"info\",\n type: {\n name: \"String\"\n }\n },\n pofHash: {\n serializedName: \"pof_hash\",\n type: {\n name: \"String\"\n }\n },\n txsHash: {\n serializedName: \"txs_hash\",\n type: {\n name: \"String\"\n }\n },\n signature: {\n serializedName: \"signature\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ErrorModel: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorModel\",\n modelProperties: {\n reason: {\n serializedName: \"reason\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const KeyBlock: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"KeyBlock\",\n modelProperties: {\n hash: {\n serializedName: \"hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n height: {\n serializedName: \"height\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n prevHash: {\n serializedName: \"prev_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n prevKeyHash: {\n serializedName: \"prev_key_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n miner: {\n serializedName: \"miner\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n beneficiary: {\n serializedName: \"beneficiary\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n target: {\n serializedName: \"target\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n pow: {\n constraints: {\n MinItems: 42,\n MaxItems: 42\n },\n serializedName: \"pow\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n time: {\n serializedName: \"time\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n info: {\n serializedName: \"info\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const HashResponse: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"HashResponse\",\n modelProperties: {\n hash: {\n serializedName: \"hash\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const HeightResponse: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"HeightResponse\",\n modelProperties: {\n height: {\n serializedName: \"height\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const MicroBlockHeader: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"MicroBlockHeader\",\n modelProperties: {\n hash: {\n serializedName: \"hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n height: {\n serializedName: \"height\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n pofHash: {\n serializedName: \"pof_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n prevHash: {\n serializedName: \"prev_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n prevKeyHash: {\n serializedName: \"prev_key_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n txsHash: {\n serializedName: \"txs_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n signature: {\n serializedName: \"signature\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n time: {\n serializedName: \"time\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const SignedTxs: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SignedTxs\",\n modelProperties: {\n transactions: {\n serializedName: \"transactions\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"SignedTx\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const SignedTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SignedTx\",\n modelProperties: {\n tx: {\n serializedName: \"tx\",\n type: {\n name: \"Composite\",\n className: \"Tx\"\n }\n },\n blockHeight: {\n serializedName: \"block_height\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n blockHash: {\n serializedName: \"block_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n hash: {\n serializedName: \"hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n signatures: {\n serializedName: \"signatures\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const Tx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Tx\",\n uberParent: \"Tx\",\n polymorphicDiscriminator: {\n serializedName: \"type\",\n clientName: \"type\"\n },\n modelProperties: {\n recipientId: {\n serializedName: \"recipient_id\",\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n senderId: {\n serializedName: \"sender_id\",\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n payload: {\n serializedName: \"payload\",\n type: {\n name: \"String\"\n }\n },\n initiatorId: {\n serializedName: \"initiator_id\",\n type: {\n name: \"String\"\n }\n },\n initiatorAmount: {\n serializedName: \"initiator_amount\",\n type: {\n name: \"String\"\n }\n },\n responderId: {\n serializedName: \"responder_id\",\n type: {\n name: \"String\"\n }\n },\n responderAmount: {\n serializedName: \"responder_amount\",\n type: {\n name: \"String\"\n }\n },\n channelReserve: {\n serializedName: \"channel_reserve\",\n type: {\n name: \"String\"\n }\n },\n lockPeriod: {\n serializedName: \"lock_period\",\n type: {\n name: \"String\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n type: {\n name: \"String\"\n }\n },\n delegateIds: {\n serializedName: \"delegate_ids\",\n type: {\n name: \"Composite\",\n className: \"Delegates\"\n }\n },\n channelId: {\n serializedName: \"channel_id\",\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n type: {\n name: \"String\"\n }\n },\n round: {\n serializedName: \"round\",\n type: {\n name: \"String\"\n }\n },\n toId: {\n serializedName: \"to_id\",\n type: {\n name: \"String\"\n }\n },\n update: {\n serializedName: \"update\",\n type: {\n name: \"Composite\",\n className: \"OffChainUpdate\"\n }\n },\n offchainTrees: {\n serializedName: \"offchain_trees\",\n type: {\n name: \"String\"\n }\n },\n initiatorAmountFinal: {\n serializedName: \"initiator_amount_final\",\n type: {\n name: \"String\"\n }\n },\n responderAmountFinal: {\n serializedName: \"responder_amount_final\",\n type: {\n name: \"String\"\n }\n },\n poi: {\n serializedName: \"poi\",\n type: {\n name: \"String\"\n }\n },\n initiatorDelegateIds: {\n serializedName: \"initiator_delegate_ids\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n responderDelegateIds: {\n serializedName: \"responder_delegate_ids\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n queryFormat: {\n serializedName: \"query_format\",\n type: {\n name: \"String\"\n }\n },\n responseFormat: {\n serializedName: \"response_format\",\n type: {\n name: \"String\"\n }\n },\n queryFee: {\n serializedName: \"query_fee\",\n type: {\n name: \"String\"\n }\n },\n oracleTtl: {\n serializedName: \"oracle_ttl\",\n type: {\n name: \"Composite\",\n className: \"RelativeTTL\"\n }\n },\n accountId: {\n serializedName: \"account_id\",\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n type: {\n name: \"String\"\n }\n },\n oracleId: {\n serializedName: \"oracle_id\",\n type: {\n name: \"String\"\n }\n },\n query: {\n serializedName: \"query\",\n type: {\n name: \"String\"\n }\n },\n queryTtl: {\n serializedName: \"query_ttl\",\n type: {\n name: \"Composite\",\n className: \"Ttl\"\n }\n },\n responseTtl: {\n serializedName: \"response_ttl\",\n type: {\n name: \"Composite\",\n className: \"RelativeTTL\"\n }\n },\n queryId: {\n serializedName: \"query_id\",\n type: {\n name: \"String\"\n }\n },\n response: {\n serializedName: \"response\",\n type: {\n name: \"String\"\n }\n },\n commitmentId: {\n serializedName: \"commitment_id\",\n type: {\n name: \"String\"\n }\n },\n name: {\n serializedName: \"name\",\n type: {\n name: \"String\"\n }\n },\n nameSalt: {\n serializedName: \"name_salt\",\n type: {\n name: \"String\"\n }\n },\n nameFee: {\n serializedName: \"name_fee\",\n type: {\n name: \"String\"\n }\n },\n nameId: {\n serializedName: \"name_id\",\n type: {\n name: \"String\"\n }\n },\n nameTtl: {\n serializedName: \"name_ttl\",\n type: {\n name: \"String\"\n }\n },\n pointers: {\n serializedName: \"pointers\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"NamePointer\"\n }\n }\n }\n },\n clientTtl: {\n serializedName: \"client_ttl\",\n type: {\n name: \"String\"\n }\n },\n ownerId: {\n serializedName: \"owner_id\",\n type: {\n name: \"String\"\n }\n },\n code: {\n serializedName: \"code\",\n type: {\n name: \"String\"\n }\n },\n vmVersion: {\n serializedName: \"vm_version\",\n type: {\n name: \"String\"\n }\n },\n deposit: {\n serializedName: \"deposit\",\n type: {\n name: \"String\"\n }\n },\n gas: {\n serializedName: \"gas\",\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n type: {\n name: \"String\"\n }\n },\n callData: {\n serializedName: \"call_data\",\n type: {\n name: \"String\"\n }\n },\n callerId: {\n serializedName: \"caller_id\",\n type: {\n name: \"String\"\n }\n },\n contractId: {\n serializedName: \"contract_id\",\n type: {\n name: \"String\"\n }\n },\n authFun: {\n constraints: {\n Pattern: new RegExp(\"^(0x|0X)?[a-fA-F0-9]+$\")\n },\n serializedName: \"auth_fun\",\n type: {\n name: \"String\"\n }\n },\n gaId: {\n serializedName: \"ga_id\",\n type: {\n name: \"String\"\n }\n },\n authData: {\n serializedName: \"auth_data\",\n type: {\n name: \"String\"\n }\n },\n tx: {\n serializedName: \"tx\",\n type: {\n name: \"Composite\",\n className: \"SignedTx\"\n }\n },\n payerId: {\n serializedName: \"payer_id\",\n type: {\n name: \"String\"\n }\n },\n version: {\n serializedName: \"version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n type: {\n serializedName: \"type\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\n \"SpendTx\",\n \"ChannelCreateTx\",\n \"ChannelDepositTx\",\n \"ChannelWithdrawTx\",\n \"ChannelForceProgressTx\",\n \"ChannelCloseMutualTx\",\n \"ChannelCloseSoloTx\",\n \"ChannelSlashTx\",\n \"ChannelSettleTx\",\n \"ChannelSnapshotSoloTx\",\n \"ChannelSetDelegatesTx\",\n \"OracleRegisterTx\",\n \"OracleExtendTx\",\n \"OracleQueryTx\",\n \"OracleRespondTx\",\n \"NamePreclaimTx\",\n \"NameClaimTx\",\n \"NameUpdateTx\",\n \"NameTransferTx\",\n \"NameRevokeTx\",\n \"ContractCreateTx\",\n \"ContractCallTx\",\n \"GAAttachTx\",\n \"GAMetaTx\",\n \"PayingForTx\"\n ]\n }\n }\n }\n }\n};\n\nexport const Delegates: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Delegates\",\n modelProperties: {\n initiator: {\n serializedName: \"initiator\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n responder: {\n serializedName: \"responder\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const OffChainUpdate: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OffChainUpdate\",\n uberParent: \"OffChainUpdate\",\n polymorphicDiscriminator: {\n serializedName: \"op\",\n clientName: \"op\"\n },\n modelProperties: {\n op: {\n serializedName: \"op\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const RelativeTTL: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"RelativeTTL\",\n modelProperties: {\n type: {\n defaultValue: \"delta\",\n isConstant: true,\n serializedName: \"type\",\n type: {\n name: \"String\"\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const Ttl: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Ttl\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"delta\", \"block\"]\n }\n },\n value: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NamePointer: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NamePointer\",\n modelProperties: {\n key: {\n serializedName: \"key\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CountResponse: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CountResponse\",\n modelProperties: {\n count: {\n serializedName: \"count\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const Generation: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Generation\",\n modelProperties: {\n keyBlock: {\n serializedName: \"key_block\",\n type: {\n name: \"Composite\",\n className: \"KeyBlock\"\n }\n },\n microBlocks: {\n serializedName: \"micro_blocks\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const Account: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Account\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n balance: {\n serializedName: \"balance\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n payable: {\n serializedName: \"payable\",\n type: {\n name: \"Boolean\"\n }\n },\n kind: {\n serializedName: \"kind\",\n type: {\n name: \"Enum\",\n allowedValues: [\"basic\", \"generalized\"]\n }\n },\n contractId: {\n serializedName: \"contract_id\",\n type: {\n name: \"String\"\n }\n },\n authFun: {\n serializedName: \"auth_fun\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NextNonceResponse: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NextNonceResponse\",\n modelProperties: {\n nextNonce: {\n serializedName: \"next_nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DryRunInput: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DryRunInput\",\n modelProperties: {\n top: {\n serializedName: \"top\",\n type: {\n name: \"String\"\n }\n },\n accounts: {\n serializedName: \"accounts\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DryRunAccount\"\n }\n }\n }\n },\n txs: {\n serializedName: \"txs\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DryRunInputItem\"\n }\n }\n }\n },\n txEvents: {\n defaultValue: false,\n serializedName: \"tx_events\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const DryRunAccount: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DryRunAccount\",\n modelProperties: {\n pubKey: {\n serializedName: \"pub_key\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DryRunInputItem: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DryRunInputItem\",\n modelProperties: {\n tx: {\n serializedName: \"tx\",\n type: {\n name: \"String\"\n }\n },\n callReq: {\n serializedName: \"call_req\",\n type: {\n name: \"Composite\",\n className: \"DryRunCallReq\"\n }\n }\n }\n }\n};\n\nexport const DryRunCallReq: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DryRunCallReq\",\n modelProperties: {\n calldata: {\n serializedName: \"calldata\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n contract: {\n serializedName: \"contract\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n type: {\n name: \"String\"\n }\n },\n gas: {\n serializedName: \"gas\",\n type: {\n name: \"String\"\n }\n },\n caller: {\n serializedName: \"caller\",\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n type: {\n name: \"String\"\n }\n },\n context: {\n serializedName: \"context\",\n type: {\n name: \"Composite\",\n className: \"DryRunCallContext\"\n }\n }\n }\n }\n};\n\nexport const DryRunCallContext: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DryRunCallContext\",\n modelProperties: {\n tx: {\n serializedName: \"tx\",\n type: {\n name: \"String\"\n }\n },\n txHash: {\n serializedName: \"tx_hash\",\n type: {\n name: \"String\"\n }\n },\n stateful: {\n serializedName: \"stateful\",\n type: {\n name: \"Boolean\"\n }\n }\n }\n }\n};\n\nexport const DryRunResults: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DryRunResults\",\n modelProperties: {\n results: {\n serializedName: \"results\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"DryRunResult\"\n }\n }\n }\n },\n txEvents: {\n serializedName: \"tx_events\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } }\n }\n }\n }\n }\n }\n }\n};\n\nexport const DryRunResult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DryRunResult\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n result: {\n serializedName: \"result\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n reason: {\n serializedName: \"reason\",\n type: {\n name: \"String\"\n }\n },\n callObj: {\n serializedName: \"call_obj\",\n type: {\n name: \"Composite\",\n className: \"ContractCallObject\"\n }\n }\n }\n }\n};\n\nexport const ContractCallObject: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ContractCallObject\",\n modelProperties: {\n callerId: {\n serializedName: \"caller_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n callerNonce: {\n serializedName: \"caller_nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n height: {\n serializedName: \"height\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n contractId: {\n serializedName: \"contract_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasUsed: {\n serializedName: \"gas_used\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n log: {\n serializedName: \"log\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Event\"\n }\n }\n }\n },\n returnValue: {\n serializedName: \"return_value\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n returnType: {\n serializedName: \"return_type\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"ok\", \"error\", \"revert\"]\n }\n }\n }\n }\n};\n\nexport const Event: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Event\",\n modelProperties: {\n address: {\n serializedName: \"address\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n topics: {\n serializedName: \"topics\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n data: {\n serializedName: \"data\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const TxInfoObject: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TxInfoObject\",\n modelProperties: {\n callInfo: {\n serializedName: \"call_info\",\n type: {\n name: \"Composite\",\n className: \"ContractCallObject\"\n }\n },\n gaInfo: {\n serializedName: \"ga_info\",\n type: {\n name: \"Composite\",\n className: \"GAObject\"\n }\n },\n txInfo: {\n serializedName: \"tx_info\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const GAObject: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GAObject\",\n modelProperties: {\n callerId: {\n serializedName: \"caller_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n height: {\n serializedName: \"height\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasUsed: {\n serializedName: \"gas_used\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n returnValue: {\n serializedName: \"return_value\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n returnType: {\n serializedName: \"return_type\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"ok\", \"error\"]\n }\n },\n innerObject: {\n serializedName: \"inner_object\",\n type: {\n name: \"Composite\",\n className: \"TxInfoObject\"\n }\n }\n }\n }\n};\n\nexport const EncodedTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"EncodedTx\",\n modelProperties: {\n tx: {\n serializedName: \"tx\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PostTxResponse: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PostTxResponse\",\n modelProperties: {\n txHash: {\n serializedName: \"tx_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ContractObject: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ContractObject\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ownerId: {\n serializedName: \"owner_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n vmVersion: {\n serializedName: \"vm_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n active: {\n serializedName: \"active\",\n required: true,\n type: {\n name: \"Boolean\"\n }\n },\n referrerIds: {\n serializedName: \"referrer_ids\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n deposit: {\n serializedName: \"deposit\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ByteCode: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ByteCode\",\n modelProperties: {\n bytecode: {\n serializedName: \"bytecode\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PoI: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PoI\",\n modelProperties: {\n poi: {\n serializedName: \"poi\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const RegisteredOracle: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"RegisteredOracle\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n queryFormat: {\n serializedName: \"query_format\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responseFormat: {\n serializedName: \"response_format\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n queryFee: {\n serializedName: \"query_fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OracleQueries: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OracleQueries\",\n modelProperties: {\n oracleQueries: {\n serializedName: \"oracle_queries\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"OracleQuery\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const OracleQuery: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OracleQuery\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n senderId: {\n serializedName: \"sender_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n senderNonce: {\n serializedName: \"sender_nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n oracleId: {\n serializedName: \"oracle_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n query: {\n serializedName: \"query\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n response: {\n serializedName: \"response\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responseTtl: {\n serializedName: \"response_ttl\",\n type: {\n name: \"Composite\",\n className: \"Ttl\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NameEntry: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NameEntry\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n owner: {\n serializedName: \"owner\",\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n pointers: {\n serializedName: \"pointers\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"NamePointer\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const Channel: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Channel\",\n modelProperties: {\n id: {\n serializedName: \"id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n initiatorId: {\n serializedName: \"initiator_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responderId: {\n serializedName: \"responder_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n channelAmount: {\n serializedName: \"channel_amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n initiatorAmount: {\n serializedName: \"initiator_amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responderAmount: {\n serializedName: \"responder_amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n channelReserve: {\n serializedName: \"channel_reserve\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n delegateIds: {\n serializedName: \"delegate_ids\",\n type: {\n name: \"Composite\",\n className: \"Delegates\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n round: {\n serializedName: \"round\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n soloRound: {\n serializedName: \"solo_round\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n lockPeriod: {\n serializedName: \"lock_period\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n lockedUntil: {\n serializedName: \"locked_until\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PeerPubKey: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PeerPubKey\",\n modelProperties: {\n pubkey: {\n serializedName: \"pubkey\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const Status: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Status\",\n modelProperties: {\n genesisKeyBlockHash: {\n serializedName: \"genesis_key_block_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n solutions: {\n serializedName: \"solutions\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n difficulty: {\n serializedName: \"difficulty\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n syncing: {\n serializedName: \"syncing\",\n required: true,\n type: {\n name: \"Boolean\"\n }\n },\n syncProgress: {\n constraints: {\n InclusiveMaximum: 100,\n InclusiveMinimum: 0\n },\n serializedName: \"sync_progress\",\n type: {\n name: \"Number\"\n }\n },\n listening: {\n serializedName: \"listening\",\n required: true,\n type: {\n name: \"Boolean\"\n }\n },\n protocols: {\n serializedName: \"protocols\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"Protocol\"\n }\n }\n }\n },\n nodeVersion: {\n serializedName: \"node_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nodeRevision: {\n serializedName: \"node_revision\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n peerCount: {\n serializedName: \"peer_count\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n peerConnections: {\n serializedName: \"peer_connections\",\n type: {\n name: \"Composite\",\n className: \"PeerConnections\"\n }\n },\n pendingTransactionsCount: {\n serializedName: \"pending_transactions_count\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n networkId: {\n serializedName: \"network_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n peerPubkey: {\n serializedName: \"peer_pubkey\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n topKeyBlockHash: {\n serializedName: \"top_key_block_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n topBlockHeight: {\n serializedName: \"top_block_height\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const Protocol: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Protocol\",\n modelProperties: {\n version: {\n serializedName: \"version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n effectiveAtHeight: {\n serializedName: \"effective_at_height\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PeerConnections: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PeerConnections\",\n modelProperties: {\n inbound: {\n serializedName: \"inbound\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n outbound: {\n serializedName: \"outbound\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const SpendTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SpendTx\",\n modelProperties: {\n recipientId: {\n serializedName: \"recipient_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n senderId: {\n serializedName: \"sender_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n payload: {\n serializedName: \"payload\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OracleRegisterTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OracleRegisterTx\",\n modelProperties: {\n queryFormat: {\n serializedName: \"query_format\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responseFormat: {\n serializedName: \"response_format\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n queryFee: {\n serializedName: \"query_fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n oracleTtl: {\n serializedName: \"oracle_ttl\",\n type: {\n name: \"Composite\",\n className: \"Ttl\"\n }\n },\n accountId: {\n serializedName: \"account_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OracleExtendTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OracleExtendTx\",\n modelProperties: {\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n oracleTtl: {\n serializedName: \"oracle_ttl\",\n type: {\n name: \"Composite\",\n className: \"RelativeTTL\"\n }\n },\n oracleId: {\n serializedName: \"oracle_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OracleQueryTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OracleQueryTx\",\n modelProperties: {\n oracleId: {\n serializedName: \"oracle_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n query: {\n serializedName: \"query\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n queryFee: {\n serializedName: \"query_fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n queryTtl: {\n serializedName: \"query_ttl\",\n type: {\n name: \"Composite\",\n className: \"Ttl\"\n }\n },\n responseTtl: {\n serializedName: \"response_ttl\",\n type: {\n name: \"Composite\",\n className: \"RelativeTTL\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n senderId: {\n serializedName: \"sender_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OracleRespondTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"OracleRespondTx\",\n modelProperties: {\n queryId: {\n serializedName: \"query_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n response: {\n serializedName: \"response\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responseTtl: {\n serializedName: \"response_ttl\",\n type: {\n name: \"Composite\",\n className: \"RelativeTTL\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n oracleId: {\n serializedName: \"oracle_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NamePreclaimTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NamePreclaimTx\",\n modelProperties: {\n commitmentId: {\n serializedName: \"commitment_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n accountId: {\n serializedName: \"account_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NameClaimTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NameClaimTx\",\n modelProperties: {\n name: {\n serializedName: \"name\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nameSalt: {\n serializedName: \"name_salt\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nameFee: {\n serializedName: \"name_fee\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n accountId: {\n serializedName: \"account_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NameUpdateTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NameUpdateTx\",\n modelProperties: {\n nameId: {\n serializedName: \"name_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nameTtl: {\n serializedName: \"name_ttl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n pointers: {\n serializedName: \"pointers\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"NamePointer\"\n }\n }\n }\n },\n clientTtl: {\n serializedName: \"client_ttl\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n accountId: {\n serializedName: \"account_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NameTransferTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NameTransferTx\",\n modelProperties: {\n nameId: {\n serializedName: \"name_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n recipientId: {\n serializedName: \"recipient_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n accountId: {\n serializedName: \"account_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NameRevokeTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NameRevokeTx\",\n modelProperties: {\n nameId: {\n serializedName: \"name_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n accountId: {\n serializedName: \"account_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CommitmentId: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CommitmentId\",\n modelProperties: {\n commitmentId: {\n serializedName: \"commitment_id\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const NameHash: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"NameHash\",\n modelProperties: {\n nameId: {\n serializedName: \"name_id\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelCreateTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelCreateTx\",\n modelProperties: {\n initiatorId: {\n serializedName: \"initiator_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n initiatorAmount: {\n serializedName: \"initiator_amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responderId: {\n serializedName: \"responder_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responderAmount: {\n serializedName: \"responder_amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n channelReserve: {\n serializedName: \"channel_reserve\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n lockPeriod: {\n serializedName: \"lock_period\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n delegateIds: {\n serializedName: \"delegate_ids\",\n type: {\n name: \"Composite\",\n className: \"Delegates\"\n }\n }\n }\n }\n};\n\nexport const ChannelDepositTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelDepositTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n round: {\n serializedName: \"round\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelWithdrawTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelWithdrawTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n toId: {\n serializedName: \"to_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n round: {\n serializedName: \"round\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelForceProgressTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelForceProgressTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n payload: {\n serializedName: \"payload\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n round: {\n serializedName: \"round\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n update: {\n serializedName: \"update\",\n type: {\n name: \"Composite\",\n className: \"OffChainUpdate\"\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n offchainTrees: {\n serializedName: \"offchain_trees\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelCloseMutualTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelCloseMutualTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n initiatorAmountFinal: {\n serializedName: \"initiator_amount_final\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responderAmountFinal: {\n serializedName: \"responder_amount_final\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelCloseSoloTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelCloseSoloTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n payload: {\n serializedName: \"payload\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n poi: {\n serializedName: \"poi\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelSlashTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelSlashTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n payload: {\n serializedName: \"payload\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n poi: {\n serializedName: \"poi\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelSettleTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelSettleTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n initiatorAmountFinal: {\n serializedName: \"initiator_amount_final\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n responderAmountFinal: {\n serializedName: \"responder_amount_final\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelSnapshotSoloTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelSnapshotSoloTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n payload: {\n serializedName: \"payload\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ChannelSetDelegatesTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ChannelSetDelegatesTx\",\n modelProperties: {\n channelId: {\n serializedName: \"channel_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fromId: {\n serializedName: \"from_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n initiatorDelegateIds: {\n serializedName: \"initiator_delegate_ids\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n responderDelegateIds: {\n serializedName: \"responder_delegate_ids\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n stateHash: {\n serializedName: \"state_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n round: {\n serializedName: \"round\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n payload: {\n serializedName: \"payload\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PubKey: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PubKey\",\n modelProperties: {\n pubKey: {\n serializedName: \"pub_key\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PeerDetails: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PeerDetails\",\n modelProperties: {\n host: {\n serializedName: \"host\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n port: {\n serializedName: \"port\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n firstSeen: {\n serializedName: \"first_seen\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n lastSeen: {\n serializedName: \"last_seen\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n genesisHash: {\n serializedName: \"genesis_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n topHash: {\n serializedName: \"top_hash\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n topDifficulty: {\n serializedName: \"top_difficulty\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n networkId: {\n serializedName: \"network_id\",\n type: {\n name: \"String\"\n }\n },\n nodeVersion: {\n serializedName: \"node_version\",\n type: {\n name: \"String\"\n }\n },\n nodeRevision: {\n serializedName: \"node_revision\",\n type: {\n name: \"String\"\n }\n },\n nodeVendor: {\n serializedName: \"node_vendor\",\n type: {\n name: \"String\"\n }\n },\n nodeOs: {\n serializedName: \"node_os\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const Peers: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Peers\",\n modelProperties: {\n peers: {\n serializedName: \"peers\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n blocked: {\n serializedName: \"blocked\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n }\n }\n }\n};\n\nexport const PeerCount: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PeerCount\",\n modelProperties: {\n connected: {\n serializedName: \"connected\",\n type: {\n name: \"Composite\",\n className: \"PeerCountConnected\"\n }\n },\n available: {\n serializedName: \"available\",\n type: {\n name: \"Composite\",\n className: \"PeerCountAvailable\"\n }\n },\n blocked: {\n serializedName: \"blocked\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PeerCountConnected: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PeerCountConnected\",\n modelProperties: {\n inbound: {\n serializedName: \"inbound\",\n type: {\n name: \"String\"\n }\n },\n outbound: {\n serializedName: \"outbound\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const PeerCountAvailable: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PeerCountAvailable\",\n modelProperties: {\n verified: {\n serializedName: \"verified\",\n type: {\n name: \"String\"\n }\n },\n unverified: {\n serializedName: \"unverified\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ContractCreateTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ContractCreateTx\",\n modelProperties: {\n ownerId: {\n serializedName: \"owner_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n code: {\n serializedName: \"code\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n vmVersion: {\n serializedName: \"vm_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n deposit: {\n serializedName: \"deposit\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gas: {\n serializedName: \"gas\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n callData: {\n serializedName: \"call_data\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ContractCallTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ContractCallTx\",\n modelProperties: {\n callerId: {\n serializedName: \"caller_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n contractId: {\n serializedName: \"contract_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gas: {\n serializedName: \"gas\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n callData: {\n serializedName: \"call_data\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const UnsignedTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"UnsignedTx\",\n modelProperties: {\n tx: {\n serializedName: \"tx\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const TokenSupply: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"TokenSupply\",\n modelProperties: {\n accounts: {\n serializedName: \"accounts\",\n type: {\n name: \"String\"\n }\n },\n contracts: {\n serializedName: \"contracts\",\n type: {\n name: \"String\"\n }\n },\n contractOracles: {\n serializedName: \"contract_oracles\",\n type: {\n name: \"String\"\n }\n },\n locked: {\n serializedName: \"locked\",\n type: {\n name: \"String\"\n }\n },\n oracles: {\n serializedName: \"oracles\",\n type: {\n name: \"String\"\n }\n },\n oracleQueries: {\n serializedName: \"oracle_queries\",\n type: {\n name: \"String\"\n }\n },\n pendingRewards: {\n serializedName: \"pending_rewards\",\n type: {\n name: \"String\"\n }\n },\n total: {\n serializedName: \"total\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const GAAttachTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GAAttachTx\",\n modelProperties: {\n ownerId: {\n serializedName: \"owner_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n code: {\n serializedName: \"code\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n vmVersion: {\n serializedName: \"vm_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gas: {\n serializedName: \"gas\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n callData: {\n serializedName: \"call_data\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n authFun: {\n constraints: {\n Pattern: new RegExp(\"^(0x|0X)?[a-fA-F0-9]+$\")\n },\n serializedName: \"auth_fun\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const GAMetaTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"GAMetaTx\",\n modelProperties: {\n gaId: {\n serializedName: \"ga_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gas: {\n serializedName: \"gas\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n ttl: {\n serializedName: \"ttl\",\n type: {\n name: \"String\"\n }\n },\n authData: {\n serializedName: \"auth_data\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n tx: {\n serializedName: \"tx\",\n type: {\n name: \"Composite\",\n className: \"SignedTx\"\n }\n }\n }\n }\n};\n\nexport const PayingForTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"PayingForTx\",\n modelProperties: {\n payerId: {\n serializedName: \"payer_id\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n fee: {\n serializedName: \"fee\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n nonce: {\n serializedName: \"nonce\",\n type: {\n name: \"String\"\n }\n },\n tx: {\n serializedName: \"tx\",\n type: {\n name: \"Composite\",\n className: \"SignedTx\"\n }\n }\n }\n }\n};\n\nexport const CheckTxInPoolResponse: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CheckTxInPoolResponse\",\n modelProperties: {\n status: {\n serializedName: \"status\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OffChainTransfer: coreClient.CompositeMapper = {\n serializedName: \"OffChainTransfer\",\n type: {\n name: \"Composite\",\n className: \"OffChainTransfer\",\n uberParent: \"OffChainUpdate\",\n polymorphicDiscriminator: OffChainUpdate.type.polymorphicDiscriminator,\n modelProperties: {\n ...OffChainUpdate.type.modelProperties,\n from: {\n serializedName: \"from\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n to: {\n serializedName: \"to\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OffChainWithdrawal: coreClient.CompositeMapper = {\n serializedName: \"OffChainWithdrawal\",\n type: {\n name: \"Composite\",\n className: \"OffChainWithdrawal\",\n uberParent: \"OffChainUpdate\",\n polymorphicDiscriminator: OffChainUpdate.type.polymorphicDiscriminator,\n modelProperties: {\n ...OffChainUpdate.type.modelProperties,\n to: {\n serializedName: \"to\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OffChainDeposit: coreClient.CompositeMapper = {\n serializedName: \"OffChainDeposit\",\n type: {\n name: \"Composite\",\n className: \"OffChainDeposit\",\n uberParent: \"OffChainUpdate\",\n polymorphicDiscriminator: OffChainUpdate.type.polymorphicDiscriminator,\n modelProperties: {\n ...OffChainUpdate.type.modelProperties,\n from: {\n serializedName: \"from\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OffChainNewContract: coreClient.CompositeMapper = {\n serializedName: \"OffChainNewContract\",\n type: {\n name: \"Composite\",\n className: \"OffChainNewContract\",\n uberParent: \"OffChainUpdate\",\n polymorphicDiscriminator: OffChainUpdate.type.polymorphicDiscriminator,\n modelProperties: {\n ...OffChainUpdate.type.modelProperties,\n owner: {\n serializedName: \"owner\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n vmVersion: {\n serializedName: \"vm_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n code: {\n serializedName: \"code\",\n type: {\n name: \"Composite\",\n className: \"ByteCode\"\n }\n },\n deposit: {\n serializedName: \"deposit\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n callData: {\n serializedName: \"call_data\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const OffChainCallContract: coreClient.CompositeMapper = {\n serializedName: \"OffChainCallContract\",\n type: {\n name: \"Composite\",\n className: \"OffChainCallContract\",\n uberParent: \"OffChainUpdate\",\n polymorphicDiscriminator: OffChainUpdate.type.polymorphicDiscriminator,\n modelProperties: {\n ...OffChainUpdate.type.modelProperties,\n caller: {\n serializedName: \"caller\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n contract: {\n serializedName: \"contract\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n abiVersion: {\n serializedName: \"abi_version\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n amount: {\n serializedName: \"amount\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gas: {\n serializedName: \"gas\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n gasPrice: {\n serializedName: \"gas_price\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n callData: {\n serializedName: \"call_data\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CreateContractUnsignedTx: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CreateContractUnsignedTx\",\n modelProperties: {\n ...UnsignedTx.type.modelProperties,\n contractId: {\n serializedName: \"contract_id\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport let discriminators = {\n \"Tx.undefined\": Tx,\n OffChainUpdate: OffChainUpdate,\n \"OffChainUpdate.OffChainTransfer\": OffChainTransfer,\n \"OffChainUpdate.OffChainWithdrawal\": OffChainWithdrawal,\n \"OffChainUpdate.OffChainDeposit\": OffChainDeposit,\n \"OffChainUpdate.OffChainNewContract\": OffChainNewContract,\n \"OffChainUpdate.OffChainCallContract\": OffChainCallContract\n};\n","import {\n OperationParameter,\n OperationURLParameter,\n OperationQueryParameter\n} from \"@azure/core-client\";\nimport {\n DryRunInput as DryRunInputMapper,\n EncodedTx as EncodedTxMapper\n} from \"../models/mappers\";\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const $host: OperationURLParameter = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n\nexport const intAsString: OperationQueryParameter = {\n parameterPath: \"intAsString\",\n mapper: {\n defaultValue: false,\n serializedName: \"int-as-string\",\n type: {\n name: \"Boolean\"\n }\n }\n};\n\nexport const hash: OperationURLParameter = {\n parameterPath: \"hash\",\n mapper: {\n serializedName: \"hash\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const height: OperationURLParameter = {\n parameterPath: \"height\",\n mapper: {\n constraints: {\n InclusiveMaximum: 18446744073709552000,\n InclusiveMinimum: 0\n },\n serializedName: \"height\",\n required: true,\n type: {\n name: \"Number\"\n }\n }\n};\n\nexport const index: OperationURLParameter = {\n parameterPath: \"index\",\n mapper: {\n constraints: {\n InclusiveMinimum: 1\n },\n serializedName: \"index\",\n required: true,\n type: {\n name: \"Number\"\n }\n }\n};\n\nexport const pubkey: OperationURLParameter = {\n parameterPath: \"pubkey\",\n mapper: {\n serializedName: \"pubkey\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const strategy: OperationQueryParameter = {\n parameterPath: [\"options\", \"strategy\"],\n mapper: {\n defaultValue: \"max\",\n serializedName: \"strategy\",\n type: {\n name: \"Enum\",\n allowedValues: [\"max\", \"continuity\"]\n }\n }\n};\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const body: OperationParameter = {\n parameterPath: \"body\",\n mapper: DryRunInputMapper\n};\n\nexport const body1: OperationParameter = {\n parameterPath: \"body\",\n mapper: EncodedTxMapper\n};\n\nexport const fromParam: OperationQueryParameter = {\n parameterPath: [\"options\", \"from\"],\n mapper: {\n serializedName: \"from\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const limit: OperationQueryParameter = {\n parameterPath: [\"options\", \"limit\"],\n mapper: {\n defaultValue: 20,\n constraints: {\n InclusiveMaximum: 1000,\n InclusiveMinimum: 1\n },\n serializedName: \"limit\",\n type: {\n name: \"Number\"\n }\n }\n};\n\nexport const typeParam: OperationQueryParameter = {\n parameterPath: [\"options\", \"type\"],\n mapper: {\n defaultValue: \"all\",\n serializedName: \"type\",\n type: {\n name: \"Enum\",\n allowedValues: [\"open\", \"closed\", \"all\"]\n }\n }\n};\n\nexport const queryId: OperationURLParameter = {\n parameterPath: \"queryId\",\n mapper: {\n serializedName: \"query-id\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const name: OperationURLParameter = {\n parameterPath: \"name\",\n mapper: {\n serializedName: \"name\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n};\n","import * as coreClient from \"@azure/core-client\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport {\n NodeOptionalParams,\n GetTopHeaderOptionalParams,\n GetTopHeaderResponse,\n GetCurrentKeyBlockOptionalParams,\n GetCurrentKeyBlockResponse,\n GetCurrentKeyBlockHashOptionalParams,\n GetCurrentKeyBlockHashResponse,\n GetCurrentKeyBlockHeightOptionalParams,\n GetCurrentKeyBlockHeightResponse,\n GetPendingKeyBlockOptionalParams,\n GetPendingKeyBlockResponse,\n GetKeyBlockByHashOptionalParams,\n GetKeyBlockByHashResponse,\n GetKeyBlockByHeightOptionalParams,\n GetKeyBlockByHeightResponse,\n GetMicroBlockHeaderByHashOptionalParams,\n GetMicroBlockHeaderByHashResponse,\n GetMicroBlockTransactionsByHashOptionalParams,\n GetMicroBlockTransactionsByHashResponse,\n GetMicroBlockTransactionByHashAndIndexOptionalParams,\n GetMicroBlockTransactionByHashAndIndexResponse,\n GetMicroBlockTransactionsCountByHashOptionalParams,\n GetMicroBlockTransactionsCountByHashResponse,\n GetCurrentGenerationOptionalParams,\n GetCurrentGenerationResponse,\n GetGenerationByHashOptionalParams,\n GetGenerationByHashResponse,\n GetGenerationByHeightOptionalParams,\n GetGenerationByHeightResponse,\n GetAccountByPubkeyOptionalParams,\n GetAccountByPubkeyResponse,\n GetAccountByPubkeyAndHeightOptionalParams,\n GetAccountByPubkeyAndHeightResponse,\n GetAccountByPubkeyAndHashOptionalParams,\n GetAccountByPubkeyAndHashResponse,\n GetPendingAccountTransactionsByPubkeyOptionalParams,\n GetPendingAccountTransactionsByPubkeyResponse,\n GetAccountNextNonceOptionalParams,\n GetAccountNextNonceResponse,\n DryRunInput,\n ProtectedDryRunTxsOptionalParams,\n ProtectedDryRunTxsResponse,\n GetTransactionByHashOptionalParams,\n GetTransactionByHashResponse,\n GetTransactionInfoByHashOptionalParams,\n GetTransactionInfoByHashResponse,\n EncodedTx,\n PostTransactionOptionalParams,\n PostTransactionResponse,\n GetContractOptionalParams,\n GetContractResponse,\n GetContractCodeOptionalParams,\n GetContractCodeResponse,\n GetContractPoIOptionalParams,\n GetContractPoIResponse,\n GetOracleByPubkeyOptionalParams,\n GetOracleByPubkeyResponse,\n GetOracleQueriesByPubkeyOptionalParams,\n GetOracleQueriesByPubkeyResponse,\n GetOracleQueryByPubkeyAndQueryIdOptionalParams,\n GetOracleQueryByPubkeyAndQueryIdResponse,\n GetNameEntryByNameOptionalParams,\n GetNameEntryByNameResponse,\n GetChannelByPubkeyOptionalParams,\n GetChannelByPubkeyResponse,\n GetPeerPubkeyOptionalParams,\n GetPeerPubkeyResponse,\n GetStatusOptionalParams,\n GetStatusResponse,\n GetChainEndsOptionalParams,\n GetChainEndsResponse\n} from \"./models\";\n\nexport class Node extends coreClient.ServiceClient {\n $host: string;\n intAsString?: boolean;\n\n /**\n * Initializes a new instance of the Node class.\n * @param $host server parameter\n * @param options The parameter options\n */\n constructor($host: string, options?: NodeOptionalParams) {\n if ($host === undefined) {\n throw new Error(\"'$host' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: NodeOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-node/1.0.0-beta.1`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{$host}\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n // Parameter assignments\n this.$host = $host;\n }\n\n /**\n * Get the top header (either key or micro block)\n * @param options The options parameters.\n */\n getTopHeader(\n options?: GetTopHeaderOptionalParams\n ): Promise<GetTopHeaderResponse> {\n return this.sendOperationRequest({ options }, getTopHeaderOperationSpec);\n }\n\n /**\n * Get the current key block\n * @param options The options parameters.\n */\n getCurrentKeyBlock(\n options?: GetCurrentKeyBlockOptionalParams\n ): Promise<GetCurrentKeyBlockResponse> {\n return this.sendOperationRequest(\n { options },\n getCurrentKeyBlockOperationSpec\n );\n }\n\n /**\n * Get the hash of the current key block\n * @param options The options parameters.\n */\n getCurrentKeyBlockHash(\n options?: GetCurrentKeyBlockHashOptionalParams\n ): Promise<GetCurrentKeyBlockHashResponse> {\n return this.sendOperationRequest(\n { options },\n getCurrentKeyBlockHashOperationSpec\n );\n }\n\n /**\n * Get the height of the current key block\n * @param options The options parameters.\n */\n getCurrentKeyBlockHeight(\n options?: GetCurrentKeyBlockHeightOptionalParams\n ): Promise<GetCurrentKeyBlockHeightResponse> {\n return this.sendOperationRequest(\n { options },\n getCurrentKeyBlockHeightOperationSpec\n );\n }\n\n /**\n * Get the pending key block\n * @param options The options parameters.\n */\n getPendingKeyBlock(\n options?: GetPendingKeyBlockOptionalParams\n ): Promise<GetPendingKeyBlockResponse> {\n return this.sendOperationRequest(\n { options },\n getPendingKeyBlockOperationSpec\n );\n }\n\n /**\n * Get a key block by hash\n * @param hash The hash of the block - either a keyblock or a microblock\n * @param options The options parameters.\n */\n getKeyBlockByHash(\n hash: string,\n options?: GetKeyBlockByHashOptionalParams\n ): Promise<GetKeyBlockByHashResponse> {\n return this.sendOperationRequest(\n { hash, options },\n getKeyBlockByHashOperationSpec\n );\n }\n\n /**\n * Get a key block by height\n * @param height The height\n * @param options The options parameters.\n */\n getKeyBlockByHeight(\n height: number,\n options?: GetKeyBlockByHeightOptionalParams\n ): Promise<GetKeyBlockByHeightResponse> {\n return this.sendOperationRequest(\n { height, options },\n getKeyBlockByHeightOperationSpec\n );\n }\n\n /**\n * Get a micro block header by hash\n * @param hash The hash of the block - either a keyblock or a microblock\n * @param options The options parameters.\n */\n getMicroBlockHeaderByHash(\n hash: string,\n options?: GetMicroBlockHeaderByHashOptionalParams\n ): Promise<GetMicroBlockHeaderByHashResponse> {\n return this.sendOperationRequest(\n { hash, options },\n getMicroBlockHeaderByHashOperationSpec\n );\n }\n\n /**\n * Get micro block transactions by hash\n * @param hash The hash of the micro block\n * @param options The options parameters.\n */\n getMicroBlockTransactionsByHash(\n hash: string,\n options?: GetMicroBlockTransactionsByHashOptionalParams\n ): Promise<GetMicroBlockTransactionsByHashResponse> {\n return this.sendOperationRequest(\n { hash, options },\n getMicroBlockTransactionsByHashOperationSpec\n );\n }\n\n /**\n * Get a micro block transaction by hash and index\n * @param hash The hash of the micro block\n * @param index The index of the transaction in a block\n * @param options The options parameters.\n */\n getMicroBlockTransactionByHashAndIndex(\n hash: string,\n index: number,\n options?: GetMicroBlockTransactionByHashAndIndexOptionalParams\n ): Promise<GetMicroBlockTransactionByHashAndIndexResponse> {\n return this.sendOperationRequest(\n { hash, index, options },\n getMicroBlockTransactionByHashAndIndexOperationSpec\n );\n }\n\n /**\n * Get micro block transaction count by hash\n * @param hash The hash of the micro block\n * @param options The options parameters.\n */\n getMicroBlockTransactionsCountByHash(\n hash: string,\n options?: GetMicroBlockTransactionsCountByHashOptionalParams\n ): Promise<GetMicroBlockTransactionsCountByHashResponse> {\n return this.sendOperationRequest(\n { hash, options },\n getMicroBlockTransactionsCountByHashOperationSpec\n );\n }\n\n /**\n * Get the current generation\n * @param options The options parameters.\n */\n getCurrentGeneration(\n options?: GetCurrentGenerationOptionalParams\n ): Promise<GetCurrentGenerationResponse> {\n return this.sendOperationRequest(\n { options },\n getCurrentGenerationOperationSpec\n );\n }\n\n /**\n * Get a generation by hash\n * @param hash The hash of the key block\n * @param options The options parameters.\n */\n getGenerationByHash(\n hash: string,\n options?: GetGenerationByHashOptionalParams\n ): Promise<GetGenerationByHashResponse> {\n return this.sendOperationRequest(\n { hash, options },\n getGenerationByHashOperationSpec\n );\n }\n\n /**\n * Get a generation by height\n * @param height The height\n * @param options The options parameters.\n */\n getGenerationByHeight(\n height: number,\n options?: GetGenerationByHeightOptionalParams\n ): Promise<GetGenerationByHeightResponse> {\n return this.sendOperationRequest(\n { height, options },\n getGenerationByHeightOperationSpec\n );\n }\n\n /**\n * Get an account by public key\n * @param pubkey The public key of the account\n * @param options The options parameters.\n */\n getAccountByPubkey(\n pubkey: string,\n options?: GetAccountByPubkeyOptionalParams\n ): Promise<GetAccountByPubkeyResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getAccountByPubkeyOperationSpec\n );\n }\n\n /**\n * Get an account by public key after the opening key block of the generation at height\n * @param pubkey The public key of the account\n * @param height The height\n * @param options The options parameters.\n */\n getAccountByPubkeyAndHeight(\n pubkey: string,\n height: number,\n options?: GetAccountByPubkeyAndHeightOptionalParams\n ): Promise<GetAccountByPubkeyAndHeightResponse> {\n return this.sendOperationRequest(\n { pubkey, height, options },\n getAccountByPubkeyAndHeightOperationSpec\n );\n }\n\n /**\n * Get an account by public key after the block indicated by hash. Can be either a micro block or a\n * keyblock hash\n * @param pubkey The public key of the account\n * @param hash The hash of the block - either a keyblock or a microblock\n * @param options The options parameters.\n */\n getAccountByPubkeyAndHash(\n pubkey: string,\n hash: string,\n options?: GetAccountByPubkeyAndHashOptionalParams\n ): Promise<GetAccountByPubkeyAndHashResponse> {\n return this.sendOperationRequest(\n { pubkey, hash, options },\n getAccountByPubkeyAndHashOperationSpec\n );\n }\n\n /**\n * Get pending account transactions by public key\n * @param pubkey The public key of the account\n * @param options The options parameters.\n */\n getPendingAccountTransactionsByPubkey(\n pubkey: string,\n options?: GetPendingAccountTransactionsByPubkeyOptionalParams\n ): Promise<GetPendingAccountTransactionsByPubkeyResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getPendingAccountTransactionsByPubkeyOperationSpec\n );\n }\n\n /**\n * Get an account's next nonce; This is computed according to whatever is the current account nonce and\n * what transactions are currently present in the transaction pool\n * @param pubkey The public key of the account\n * @param options The options parameters.\n */\n getAccountNextNonce(\n pubkey: string,\n options?: GetAccountNextNonceOptionalParams\n ): Promise<GetAccountNextNonceResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getAccountNextNonceOperationSpec\n );\n }\n\n /**\n * Dry-run transactions on top of a given block. Supports all TXs except GAMetaTx, PayingForTx and\n * OffchainTx. The maximum gas limit of all calls is capped. The maximum gas limit per request is a\n * global node setting. Since DryRunCallReq object do not have a mandatory gas field, if not set a\n * default value of 1000000 is being used instead.\n * @param body transactions\n * @param options The options parameters.\n */\n protectedDryRunTxs(\n body: DryRunInput,\n options?: ProtectedDryRunTxsOptionalParams\n ): Promise<ProtectedDryRunTxsResponse> {\n return this.sendOperationRequest(\n { body, options },\n protectedDryRunTxsOperationSpec\n );\n }\n\n /**\n * Get a transaction by hash\n * @param hash The hash of the transaction\n * @param options The options parameters.\n */\n getTransactionByHash(\n hash: string,\n options?: GetTransactionByHashOptionalParams\n ): Promise<GetTransactionByHashResponse> {\n return this.sendOperationRequest(\n { hash, options },\n getTransactionByHashOperationSpec\n );\n }\n\n /**\n * @param hash The hash of the transaction\n * @param options The options parameters.\n */\n getTransactionInfoByHash(\n hash: string,\n options?: GetTransactionInfoByHashOptionalParams\n ): Promise<GetTransactionInfoByHashResponse> {\n return this.sendOperationRequest(\n { hash, options },\n getTransactionInfoByHashOperationSpec\n );\n }\n\n /**\n * Post a new transaction\n * @param body The new transaction\n * @param options The options parameters.\n */\n postTransaction(\n body: EncodedTx,\n options?: PostTransactionOptionalParams\n ): Promise<PostTransactionResponse> {\n return this.sendOperationRequest(\n { body, options },\n postTransactionOperationSpec\n );\n }\n\n /**\n * Get a contract by pubkey\n * @param pubkey Contract pubkey to get proof for\n * @param options The options parameters.\n */\n getContract(\n pubkey: string,\n options?: GetContractOptionalParams\n ): Promise<GetContractResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getContractOperationSpec\n );\n }\n\n /**\n * Get contract code by pubkey\n * @param pubkey Contract pubkey to get proof for\n * @param options The options parameters.\n */\n getContractCode(\n pubkey: string,\n options?: GetContractCodeOptionalParams\n ): Promise<GetContractCodeResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getContractCodeOperationSpec\n );\n }\n\n /**\n * Get a proof of inclusion for a contract\n * @param pubkey Contract pubkey to get proof for\n * @param options The options parameters.\n */\n getContractPoI(\n pubkey: string,\n options?: GetContractPoIOptionalParams\n ): Promise<GetContractPoIResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getContractPoIOperationSpec\n );\n }\n\n /**\n * Get an oracle by public key\n * @param pubkey The public key of the oracle\n * @param options The options parameters.\n */\n getOracleByPubkey(\n pubkey: string,\n options?: GetOracleByPubkeyOptionalParams\n ): Promise<GetOracleByPubkeyResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getOracleByPubkeyOperationSpec\n );\n }\n\n /**\n * Get oracle queries by public key\n * @param pubkey The public key of the oracle\n * @param options The options parameters.\n */\n getOracleQueriesByPubkey(\n pubkey: string,\n options?: GetOracleQueriesByPubkeyOptionalParams\n ): Promise<GetOracleQueriesByPubkeyResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getOracleQueriesByPubkeyOperationSpec\n );\n }\n\n /**\n * Get an oracle query by public key and query ID\n * @param pubkey The public key of the oracle\n * @param queryId The ID of the query\n * @param options The options parameters.\n */\n getOracleQueryByPubkeyAndQueryId(\n pubkey: string,\n queryId: string,\n options?: GetOracleQueryByPubkeyAndQueryIdOptionalParams\n ): Promise<GetOracleQueryByPubkeyAndQueryIdResponse> {\n return this.sendOperationRequest(\n { pubkey, queryId, options },\n getOracleQueryByPubkeyAndQueryIdOperationSpec\n );\n }\n\n /**\n * Get name entry from naming system\n * @param name The name key of the name entry\n * @param options The options parameters.\n */\n getNameEntryByName(\n name: string,\n options?: GetNameEntryByNameOptionalParams\n ): Promise<GetNameEntryByNameResponse> {\n return this.sendOperationRequest(\n { name, options },\n getNameEntryByNameOperationSpec\n );\n }\n\n /**\n * Get channel by public key\n * @param pubkey The pubkey of the channel\n * @param options The options parameters.\n */\n getChannelByPubkey(\n pubkey: string,\n options?: GetChannelByPubkeyOptionalParams\n ): Promise<GetChannelByPubkeyResponse> {\n return this.sendOperationRequest(\n { pubkey, options },\n getChannelByPubkeyOperationSpec\n );\n }\n\n /**\n * Get peer public key\n * @param options The options parameters.\n */\n getPeerPubkey(\n options?: GetPeerPubkeyOptionalParams\n ): Promise<GetPeerPubkeyResponse> {\n return this.sendOperationRequest({ options }, getPeerPubkeyOperationSpec);\n }\n\n /**\n * Get the status of a node\n * @param options The options parameters.\n */\n getStatus(options?: GetStatusOptionalParams): Promise<GetStatusResponse> {\n return this.sendOperationRequest({ options }, getStatusOperationSpec);\n }\n\n /**\n * Get oldest keyblock hashes counting from genesis including orphans\n * @param options The options parameters.\n */\n getChainEnds(\n options?: GetChainEndsOptionalParams\n ): Promise<GetChainEndsResponse> {\n return this.sendOperationRequest({ options }, getChainEndsOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst getTopHeaderOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/headers/top\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Header\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCurrentKeyBlockOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/key-blocks/current\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBlock\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCurrentKeyBlockHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/key-blocks/current/hash\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.HashResponse\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCurrentKeyBlockHeightOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/key-blocks/current/height\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.HeightResponse\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getPendingKeyBlockOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/key-blocks/pending\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBlock\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyBlockByHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/key-blocks/hash/{hash}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBlock\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getKeyBlockByHeightOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/key-blocks/height/{height}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.KeyBlock\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.height],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getMicroBlockHeaderByHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/micro-blocks/hash/{hash}/header\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.MicroBlockHeader\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getMicroBlockTransactionsByHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/micro-blocks/hash/{hash}/transactions\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.SignedTxs\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getMicroBlockTransactionByHashAndIndexOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/micro-blocks/hash/{hash}/transactions/index/{index}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.SignedTx\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash, Parameters.index],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getMicroBlockTransactionsCountByHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/micro-blocks/hash/{hash}/transactions/count\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CountResponse\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getCurrentGenerationOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/generations/current\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Generation\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getGenerationByHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/generations/hash/{hash}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Generation\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getGenerationByHeightOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/generations/height/{height}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Generation\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.height],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getAccountByPubkeyOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/accounts/{pubkey}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Account\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getAccountByPubkeyAndHeightOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/accounts/{pubkey}/height/{height}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Account\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.height, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getAccountByPubkeyAndHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/accounts/{pubkey}/hash/{hash}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Account\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getPendingAccountTransactionsByPubkeyOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/accounts/{pubkey}/transactions/pending\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.SignedTxs\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getAccountNextNonceOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/accounts/{pubkey}/next-nonce\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.NextNonceResponse\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString, Parameters.strategy],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst protectedDryRunTxsOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/dry-run\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DryRunResults\n },\n 403: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n requestBody: Parameters.body,\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getTransactionByHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/transactions/{hash}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.SignedTx\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getTransactionInfoByHashOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/transactions/{hash}/info\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.TxInfoObject\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.hash],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst postTransactionOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/transactions\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.PostTxResponse\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n requestBody: Parameters.body1,\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept, Parameters.contentType],\n mediaType: \"json\",\n serializer\n};\nconst getContractOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/contracts/{pubkey}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ContractObject\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getContractCodeOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/contracts/{pubkey}/code\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.ByteCode\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getContractPoIOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/contracts/{pubkey}/poi\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.PoI\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getOracleByPubkeyOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/oracles/{pubkey}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.RegisteredOracle\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getOracleQueriesByPubkeyOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/oracles/{pubkey}/queries\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OracleQueries\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [\n Parameters.intAsString,\n Parameters.fromParam,\n Parameters.limit,\n Parameters.typeParam\n ],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getOracleQueryByPubkeyAndQueryIdOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/oracles/{pubkey}/queries/{query-id}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.OracleQuery\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey, Parameters.queryId],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getNameEntryByNameOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/names/{name}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.NameEntry\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.name],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getChannelByPubkeyOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/channels/{pubkey}\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Channel\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n },\n 404: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host, Parameters.pubkey],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getPeerPubkeyOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/peers/pubkey\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.PeerPubKey\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getStatusOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/status\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.Status\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst getChainEndsOperationSpec: coreClient.OperationSpec = {\n path: \"/v3/status/chain-ends\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: {\n type: { name: \"Sequence\", element: { type: { name: \"String\" } } }\n }\n }\n },\n queryParameters: [Parameters.intAsString],\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\n","// eslint-disable-next-line max-classes-per-file\nimport BigNumber from 'bignumber.js';\nimport { OperationArguments, OperationSpec } from '@azure/core-client';\nimport {\n genRequestQueuesPolicy, genCombineGetRequestsPolicy, genErrorFormatterPolicy,\n genVersionCheckPolicy,\n} from './utils/autorest';\nimport { Node as NodeApi, NodeOptionalParams, ErrorModel } from './apis/node';\nimport { mapObject } from './utils/other';\nimport { Encoded } from './utils/encoder';\nimport { MissingParamError } from './utils/errors';\n\n/**\n * Obtain networkId from account or node\n */\nexport async function getNetworkId({ networkId }: { networkId?: string } = {}): Promise<string> {\n const res = networkId ?? this.networkId ?? (await this.api?.getStatus())?.networkId;\n if (res != null) return res;\n throw new MissingParamError('networkId is not provided');\n}\n\nconst bigIntPropertyNames = [\n 'balance', 'queryFee', 'fee', 'amount', 'nameFee', 'channelAmount',\n 'initiatorAmount', 'responderAmount', 'channelReserve', 'initiatorAmountFinal',\n 'responderAmountFinal', 'gasPrice', 'deposit',\n] as const;\n\nconst numberPropertyNames = [\n 'time', 'gas', 'gasUsed', 'nameSalt',\n 'nonce', 'nextNonce', 'height', 'blockHeight', 'top', 'topBlockHeight',\n 'ttl', 'nameTtl', 'clientTtl',\n 'inbound', 'outbound', 'peerCount', 'pendingTransactionsCount', 'effectiveAtHeight',\n 'version', 'solutions', 'round',\n] as const;\n\nclass NodeTransformed extends NodeApi {\n async sendOperationRequest(\n operationArguments: OperationArguments,\n operationSpec: OperationSpec,\n ): Promise<any> {\n const args = mapObject(\n operationArguments,\n ([key, value]) => [key, this.#encodeArg(value)],\n ) as OperationArguments;\n return this.#decodeRes(await super.sendOperationRequest(args, operationSpec));\n }\n\n #mapData(data: any, transform: {\n bigInt: (v: any) => any;\n number: (v: any) => any;\n }): unknown {\n if (Array.isArray(data)) return data.map((d) => this.#mapData(d, transform));\n if (data != null && typeof data === 'object') {\n return mapObject(data, ([key, value]) => {\n if (value == null) return [key, value];\n if (bigIntPropertyNames.some((k) => k === key)) return [key, transform.bigInt(value)];\n if (numberPropertyNames.some((k) => k === key)) return [key, transform.number(value)];\n return [key, this.#mapData(value, transform)];\n });\n }\n return data;\n }\n\n #encodeArg(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => {\n if (value instanceof BigNumber) return value.toFixed();\n return value.toString();\n },\n number: (value) => value.toString(),\n });\n }\n\n #decodeRes(data: any): any {\n return this.#mapData(data, {\n bigInt: (value) => BigInt(value),\n number: (value) => +value,\n });\n }\n}\n\ntype BigIntPropertyNames = typeof bigIntPropertyNames[number];\ntype NumberPropertyNames = typeof numberPropertyNames[number];\ntype PreserveOptional<NewType, OrigType> =\n OrigType extends undefined ? NewType | undefined : NewType;\nexport type TransformNodeType<Type> =\n Type extends (...args: infer Args) => infer Ret\n ? (...args: TransformNodeType<Args>) => TransformNodeType<Ret>\n : Type extends [infer Item, ...infer Rest]\n ? [TransformNodeType<Item>, ...TransformNodeType<Rest>]\n : Type extends Array<infer Item>\n ? Array<TransformNodeType<Item>>\n : Type extends Promise<infer T>\n ? Promise<TransformNodeType<T>>\n : Type extends { [P in any]: any }\n ? {\n [Property in keyof Type]:\n Property extends BigIntPropertyNames\n ? PreserveOptional<bigint, Type[Property]>\n : Property extends NumberPropertyNames\n ? PreserveOptional<number, Type[Property]>\n : Property extends 'txHash'\n ? PreserveOptional<Encoded.TxHash, Type[Property]>\n : TransformNodeType<Type[Property]>\n }\n : Type;\ntype NodeTransformedApi = new (...args: ConstructorParameters<typeof NodeApi>) => {\n [Name in keyof InstanceType<typeof NodeApi>]:\n Name extends 'pipeline' | 'sendRequest' | 'sendOperationRequest'\n ? NodeApi[Name] : TransformNodeType<NodeApi[Name]>\n};\n\nexport interface NodeInfo {\n url: string;\n nodeNetworkId: string;\n version: string;\n consensusProtocolVersion: number;\n}\n\nexport default class Node extends (NodeTransformed as unknown as NodeTransformedApi) {\n url: string;\n\n /**\n * @param url - Url for node API\n * @param options - Options\n * @param options.ignoreVersion - Don't check node version\n */\n constructor(\n url: string,\n { ignoreVersion = false, ...options }: NodeOptionalParams & { ignoreVersion?: boolean } = {},\n ) {\n // eslint-disable-next-line constructor-super\n super(url, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genRequestQueuesPolicy(),\n genCombineGetRequestsPolicy(),\n genErrorFormatterPolicy((body: ErrorModel) => ` ${body.reason}`),\n ],\n ...options,\n });\n this.url = url;\n if (!ignoreVersion) {\n const versionPromise = this.getStatus().then(({ nodeVersion }) => nodeVersion);\n this.pipeline.addPolicy(\n genVersionCheckPolicy('node', '/v3/status', versionPromise, '6.2.0', '7.0.0'),\n );\n }\n this.intAsString = true;\n }\n\n async getNodeInfo(): Promise<NodeInfo> {\n const {\n nodeVersion: version,\n networkId: nodeNetworkId,\n protocols,\n topBlockHeight,\n } = await this.getStatus();\n const consensusProtocolVersion = protocols\n .filter(({ effectiveAtHeight }) => topBlockHeight >= effectiveAtHeight)\n .reduce(\n (acc, p) => (p.effectiveAtHeight > acc.effectiveAtHeight ? p : acc),\n { effectiveAtHeight: -1, version: 0 },\n )\n .version;\n return {\n url: this.url,\n nodeNetworkId,\n version,\n consensusProtocolVersion,\n };\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { messageToHash, verifyMessage as verifyMessageCrypto, hash } from '../utils/crypto';\nimport { buildTx } from '../tx/builder';\nimport { decode, Encoded } from '../utils/encoder';\nimport { Tag } from '../tx/builder/constants';\nimport { getNetworkId } from '../Node';\nimport { concatBuffers } from '../utils/other';\nimport type { createMetaTx } from '../contract/ga';\n\n/**\n * Check is provided object looks like an instance of AccountBase\n * @param acc - Object to check\n */\nexport const isAccountBase = (acc: AccountBase | any): boolean => (\n !['sign', 'address', 'signTransaction', 'signMessage'].some((f) => typeof acc[f] !== 'function')\n);\n\n/**\n * Account is one of the three basic building blocks of an\n * {@link AeSdk} and provides access to a signing key pair.\n */\nexport default abstract class AccountBase {\n networkId?: string;\n\n /**\n * @param options - Options\n * @param options.networkId - Using for signing transactions\n */\n constructor({ networkId }: { networkId?: string } = {}) {\n this.networkId ??= networkId;\n }\n\n /**\n * Sign encoded transaction\n * @param tx - Transaction to sign\n * @param opt - Options\n * @param opt.innerTx - Sign as inner transaction for PayingFor\n * @returns Signed transaction\n */\n async signTransaction(\n tx: Encoded.Transaction,\n { innerTx, networkId, ...options }: {\n innerTx?: boolean;\n networkId?: string;\n authData?: Parameters<typeof createMetaTx>[1];\n authFun?: Parameters<typeof createMetaTx>[2];\n } & Omit<Partial<Parameters<typeof createMetaTx>[3]>, 'onAccount'> = {},\n ): Promise<Encoded.Transaction> {\n const prefixes = [await this.getNetworkId({ networkId })];\n if (innerTx === true) prefixes.push('inner_tx');\n const rlpBinaryTx = decode(tx);\n const txWithNetworkId = concatBuffers([Buffer.from(prefixes.join('-')), hash(rlpBinaryTx)]);\n\n const signatures = [await this.sign(txWithNetworkId, options)];\n return buildTx({ encodedTx: rlpBinaryTx, signatures }, Tag.SignedTx).tx;\n }\n\n /**\n * Get network Id\n * @returns Network Id\n */\n readonly getNetworkId = getNetworkId;\n\n /**\n * Sign message\n * @param message - Message to sign\n * @param opt - Options\n * @returns Signature as hex string of Uint8Array\n */\n async signMessage(\n message: string,\n { returnHex = false, ...options }: { returnHex?: boolean } = {},\n ): Promise<string | Uint8Array> {\n const sig = await this.sign(messageToHash(message), options);\n return returnHex ? Buffer.from(sig).toString('hex') : sig;\n }\n\n /**\n * Verify message\n * @param message - Message to verify\n * @param signature - Signature\n * @param options - Options\n */\n async verifyMessage(\n message: string,\n signature: string | Uint8Array,\n options?: object,\n ): Promise<boolean> {\n return verifyMessageCrypto(\n message,\n typeof signature === 'string' ? Buffer.from(signature, 'hex') : signature,\n decode(await this.address(options)),\n );\n }\n\n /**\n * Sign data blob\n * @param data - Data blob to sign\n * @param options - Options\n * @returns Signed data blob\n */\n abstract sign(data: string | Uint8Array, options?: any): Promise<Uint8Array>;\n\n /**\n * Obtain account address\n * @returns Public account address\n */\n abstract address(opt?: object): Promise<Encoded.AccountAddress>;\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport AccountBase from './Base';\nimport { sign, isValidKeypair } from '../utils/crypto';\nimport { isHex } from '../utils/string';\nimport { ArgumentError, InvalidKeypairError, MissingParamError } from '../utils/errors';\nimport { decode, Encoded } from '../utils/encoder';\nimport { createMetaTx } from '../contract/ga';\n\nconst secrets = new WeakMap();\n\nexport interface Keypair {\n publicKey: Encoded.AccountAddress;\n secretKey: string | Uint8Array;\n}\n\n/**\n * In-memory account class\n */\nexport default class AccountMemory extends AccountBase {\n isGa: boolean;\n\n /**\n * @param options - Options\n * @param options.keypair - Key pair to use\n * @param options.keypair.publicKey - Public key\n * @param options.keypair.secretKey - Private key\n * @param options.gaId - Address of generalized account\n */\n constructor(\n { keypair, gaId, ...options }: { keypair?: Keypair; gaId?: Encoded.AccountAddress }\n & ConstructorParameters<typeof AccountBase>[0],\n ) {\n super(options);\n\n this.isGa = gaId != null;\n if (this.isGa && gaId != null) {\n decode(gaId);\n secrets.set(this, { publicKey: gaId });\n return;\n }\n\n if (keypair == null) throw new MissingParamError('Either gaId or keypair is required');\n\n if (\n !Buffer.isBuffer(keypair.secretKey)\n && typeof keypair.secretKey === 'string' && !isHex(keypair.secretKey)\n ) throw new InvalidKeypairError('Secret key must be hex string or Buffer');\n const secretKey = typeof keypair.secretKey === 'string'\n ? Buffer.from(keypair.secretKey, 'hex')\n : keypair.secretKey;\n if (!isValidKeypair(secretKey, decode(keypair.publicKey))) {\n throw new InvalidKeypairError('Invalid Key Pair');\n }\n\n secrets.set(this, {\n secretKey,\n publicKey: keypair.publicKey,\n });\n }\n\n async sign(data: string | Uint8Array): Promise<Uint8Array> {\n if (this.isGa) throw new InvalidKeypairError('You are trying to sign data using generalized account without keypair');\n return sign(data, secrets.get(this).secretKey);\n }\n\n async signTransaction(\n tx: Encoded.Transaction,\n options: Parameters<AccountBase['signTransaction']>[1] = {},\n ): Promise<Encoded.Transaction> {\n if (!this.isGa || options.innerTx === true) return super.signTransaction(tx, options);\n const {\n authData, authFun, onCompiler, onNode,\n } = options;\n if (authFun == null || authData == null || onCompiler == null || onNode == null) {\n throw new ArgumentError('authData, authFun, onCompiler, onNode', 'provided', null);\n }\n return createMetaTx(tx, authData, authFun, { onCompiler, onNode, onAccount: this });\n }\n\n async address(): Promise<Encoded.AccountAddress> {\n return secrets.get(this).publicKey;\n }\n}\n","import * as coreClient from \"@azure/core-client\";\n\nexport const Contract: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Contract\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"Composite\",\n className: \"CompileOpts\"\n }\n }\n }\n }\n};\n\nexport const CompileOpts: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CompileOpts\",\n modelProperties: {\n backend: {\n serializedName: \"backend\",\n type: {\n name: \"String\"\n }\n },\n fileSystem: {\n serializedName: \"file_system\",\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } }\n }\n },\n srcFile: {\n serializedName: \"src_file\",\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const Aci: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Aci\",\n modelProperties: {\n encodedAci: {\n serializedName: \"encoded_aci\",\n required: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } }\n }\n },\n externalEncodedAci: {\n serializedName: \"external_encoded_aci\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } }\n }\n }\n }\n },\n interface: {\n serializedName: \"interface\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CompilerError: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CompilerError\",\n modelProperties: {\n context: {\n serializedName: \"context\",\n type: {\n name: \"String\"\n }\n },\n message: {\n serializedName: \"message\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n pos: {\n serializedName: \"pos\",\n type: {\n name: \"Composite\",\n className: \"ErrorPos\"\n }\n },\n type: {\n serializedName: \"type\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ErrorPos: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorPos\",\n modelProperties: {\n col: {\n serializedName: \"col\",\n required: true,\n type: {\n name: \"Number\"\n }\n },\n file: {\n serializedName: \"file\",\n type: {\n name: \"String\"\n }\n },\n line: {\n serializedName: \"line\",\n required: true,\n type: {\n name: \"Number\"\n }\n }\n }\n }\n};\n\nexport const ErrorModel: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ErrorModel\",\n modelProperties: {\n reason: {\n serializedName: \"reason\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const APIVersion: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"APIVersion\",\n modelProperties: {\n apiVersion: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ByteCode: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ByteCode\",\n modelProperties: {\n bytecode: {\n serializedName: \"bytecode\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ByteCodeInput: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ByteCodeInput\",\n modelProperties: {\n bytecode: {\n serializedName: \"bytecode\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const CompilerVersion: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"CompilerVersion\",\n modelProperties: {\n version: {\n serializedName: \"version\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const SophiaCallResultInput: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SophiaCallResultInput\",\n modelProperties: {\n callResult: {\n serializedName: \"call-result\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n callValue: {\n serializedName: \"call-value\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n function: {\n serializedName: \"function\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"Composite\",\n className: \"CompileOpts\"\n }\n },\n source: {\n serializedName: \"source\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const BytecodeCallResultInput: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"BytecodeCallResultInput\",\n modelProperties: {\n backend: {\n serializedName: \"backend\",\n type: {\n name: \"String\"\n }\n },\n bytecode: {\n serializedName: \"bytecode\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n callResult: {\n serializedName: \"call-result\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n callValue: {\n serializedName: \"call-value\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n function: {\n serializedName: \"function\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DecodedCallresult: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DecodedCallresult\",\n modelProperties: {\n function: {\n serializedName: \"function\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n result: {\n serializedName: \"result\",\n required: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } }\n }\n }\n }\n }\n};\n\nexport const DecodeCalldataBytecode: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DecodeCalldataBytecode\",\n modelProperties: {\n backend: {\n serializedName: \"backend\",\n type: {\n name: \"String\"\n }\n },\n bytecode: {\n serializedName: \"bytecode\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n calldata: {\n serializedName: \"calldata\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DecodedCalldata: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DecodedCalldata\",\n modelProperties: {\n arguments: {\n serializedName: \"arguments\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } }\n }\n }\n }\n },\n function: {\n serializedName: \"function\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const DecodeCalldataSource: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"DecodeCalldataSource\",\n modelProperties: {\n calldata: {\n serializedName: \"calldata\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n function: {\n serializedName: \"function\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"Composite\",\n className: \"CompileOpts\"\n }\n },\n source: {\n serializedName: \"source\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const SophiaBinaryData: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SophiaBinaryData\",\n modelProperties: {\n data: {\n serializedName: \"data\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n sophiaType: {\n serializedName: \"sophia-type\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const SophiaJsonData: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"SophiaJsonData\",\n modelProperties: {\n data: {\n serializedName: \"data\",\n required: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } }\n }\n }\n }\n }\n};\n\nexport const FunctionCallInput: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"FunctionCallInput\",\n modelProperties: {\n arguments: {\n serializedName: \"arguments\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\"\n }\n }\n }\n },\n function: {\n serializedName: \"function\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"Composite\",\n className: \"CompileOpts\"\n }\n },\n source: {\n serializedName: \"source\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const Calldata: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"Calldata\",\n modelProperties: {\n calldata: {\n serializedName: \"calldata\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const FateAssembler: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"FateAssembler\",\n modelProperties: {\n fateAssembler: {\n serializedName: \"fate-assembler\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n\nexport const ValidateByteCodeInput: coreClient.CompositeMapper = {\n type: {\n name: \"Composite\",\n className: \"ValidateByteCodeInput\",\n modelProperties: {\n bytecode: {\n serializedName: \"bytecode\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n options: {\n serializedName: \"options\",\n type: {\n name: \"Composite\",\n className: \"CompileOpts\"\n }\n },\n source: {\n serializedName: \"source\",\n required: true,\n type: {\n name: \"String\"\n }\n }\n }\n }\n};\n","import { OperationParameter, OperationURLParameter } from \"@azure/core-client\";\nimport {\n Contract as ContractMapper,\n ByteCodeInput as ByteCodeInputMapper,\n SophiaCallResultInput as SophiaCallResultInputMapper,\n BytecodeCallResultInput as BytecodeCallResultInputMapper,\n DecodeCalldataBytecode as DecodeCalldataBytecodeMapper,\n DecodeCalldataSource as DecodeCalldataSourceMapper,\n SophiaBinaryData as SophiaBinaryDataMapper,\n FunctionCallInput as FunctionCallInputMapper,\n ValidateByteCodeInput as ValidateByteCodeInputMapper\n} from \"../models/mappers\";\n\nexport const contentType: OperationParameter = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const body: OperationParameter = {\n parameterPath: \"body\",\n mapper: ContractMapper\n};\n\nexport const accept: OperationParameter = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\"\n }\n }\n};\n\nexport const $host: OperationURLParameter = {\n parameterPath: \"$host\",\n mapper: {\n serializedName: \"$host\",\n required: true,\n type: {\n name: \"String\"\n }\n },\n skipEncoding: true\n};\n\nexport const body1: OperationParameter = {\n parameterPath: \"body\",\n mapper: ByteCodeInputMapper\n};\n\nexport const body2: OperationParameter = {\n parameterPath: \"body\",\n mapper: SophiaCallResultInputMapper\n};\n\nexport const body3: OperationParameter = {\n parameterPath: \"body\",\n mapper: BytecodeCallResultInputMapper\n};\n\nexport const body4: OperationParameter = {\n parameterPath: \"body\",\n mapper: DecodeCalldataBytecodeMapper\n};\n\nexport const body5: OperationParameter = {\n parameterPath: \"body\",\n mapper: DecodeCalldataSourceMapper\n};\n\nexport const body6: OperationParameter = {\n parameterPath: \"body\",\n mapper: SophiaBinaryDataMapper\n};\n\nexport const body7: OperationParameter = {\n parameterPath: \"body\",\n mapper: FunctionCallInputMapper\n};\n\nexport const body8: OperationParameter = {\n parameterPath: \"body\",\n mapper: ValidateByteCodeInputMapper\n};\n","import * as coreClient from \"@azure/core-client\";\nimport * as coreRestPipeline from \"@azure/core-rest-pipeline\";\nimport * as Parameters from \"./models/parameters\";\nimport * as Mappers from \"./models/mappers\";\nimport {\n CompilerOptionalParams,\n Contract,\n GenerateACIOptionalParams,\n GenerateACIResponse,\n ApiOptionalParams,\n ApiResponse,\n APIVersionOptionalParams,\n APIVersionResponse,\n CompileContractOptionalParams,\n CompileContractResponse,\n ByteCodeInput,\n GetCompilerVersionOptionalParams,\n GetCompilerVersionResponse,\n SophiaCallResultInput,\n DecodeCallResultOptionalParams,\n DecodeCallResultResponse,\n BytecodeCallResultInput,\n DecodeCallResultBytecodeOptionalParams,\n DecodeCallResultBytecodeResponse,\n DecodeCalldataBytecode,\n DecodeCalldataBytecodeOptionalParams,\n DecodeCalldataBytecodeResponse,\n DecodeCalldataSource,\n DecodeCalldataSourceOptionalParams,\n DecodeCalldataSourceResponse,\n SophiaBinaryData,\n DecodeDataOptionalParams,\n DecodeDataResponse,\n FunctionCallInput,\n EncodeCalldataOptionalParams,\n EncodeCalldataResponse,\n GetFateAssemblerCodeOptionalParams,\n GetFateAssemblerCodeResponse,\n ValidateByteCodeInput,\n ValidateByteCodeOptionalParams,\n VersionOptionalParams,\n VersionResponse\n} from \"./models\";\n\nexport class Compiler extends coreClient.ServiceClient {\n $host: string;\n\n /**\n * Initializes a new instance of the Compiler class.\n * @param $host server parameter\n * @param options The parameter options\n */\n constructor($host: string, options?: CompilerOptionalParams) {\n if ($host === undefined) {\n throw new Error(\"'$host' cannot be null\");\n }\n\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults: CompilerOptionalParams = {\n requestContentType: \"application/json; charset=utf-8\"\n };\n\n const packageDetails = `azsdk-js-compiler/1.0.0-beta.1`;\n const userAgentPrefix =\n options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n\n const optionsWithDefaults = {\n ...defaults,\n ...options,\n userAgentOptions: {\n userAgentPrefix\n },\n baseUri: options.endpoint ?? options.baseUri ?? \"{$host}\"\n };\n super(optionsWithDefaults);\n\n if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {\n const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();\n const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(\n (pipelinePolicy) =>\n pipelinePolicy.name ===\n coreRestPipeline.bearerTokenAuthenticationPolicyName\n );\n if (!bearerTokenAuthenticationPolicyFound) {\n this.pipeline.removePolicy({\n name: coreRestPipeline.bearerTokenAuthenticationPolicyName\n });\n this.pipeline.addPolicy(\n coreRestPipeline.bearerTokenAuthenticationPolicy({\n scopes: `${optionsWithDefaults.baseUri}/.default`,\n challengeCallbacks: {\n authorizeRequestOnChallenge:\n coreClient.authorizeRequestOnClaimChallenge\n }\n })\n );\n }\n }\n // Parameter assignments\n this.$host = $host;\n }\n\n /**\n * Generate an Aeternity Contract Interface (ACI) for contract\n * @param body contract code\n * @param options The options parameters.\n */\n generateACI(\n body: Contract,\n options?: GenerateACIOptionalParams\n ): Promise<GenerateACIResponse> {\n return this.sendOperationRequest(\n { body, options },\n generateACIOperationSpec\n );\n }\n\n /**\n * Get the Api description\n * @param options The options parameters.\n */\n api(options?: ApiOptionalParams): Promise<ApiResponse> {\n return this.sendOperationRequest({ options }, apiOperationSpec);\n }\n\n /**\n * Get the version of the API\n * @param options The options parameters.\n */\n aPIVersion(options?: APIVersionOptionalParams): Promise<APIVersionResponse> {\n return this.sendOperationRequest({ options }, aPIVersionOperationSpec);\n }\n\n /**\n * Compile a sophia contract from source and return byte code\n * @param body contract code\n * @param options The options parameters.\n */\n compileContract(\n body: Contract,\n options?: CompileContractOptionalParams\n ): Promise<CompileContractResponse> {\n return this.sendOperationRequest(\n { body, options },\n compileContractOperationSpec\n );\n }\n\n /**\n * Extract compiler version from bytecode\n * @param body contract byte array\n * @param options The options parameters.\n */\n getCompilerVersion(\n body: ByteCodeInput,\n options?: GetCompilerVersionOptionalParams\n ): Promise<GetCompilerVersionResponse> {\n return this.sendOperationRequest(\n { body, options },\n getCompilerVersionOperationSpec\n );\n }\n\n /**\n * Decode the result of contract call\n * @param body Binary data in Sophia ABI format\n * @param options The options parameters.\n */\n decodeCallResult(\n body: SophiaCallResultInput,\n options?: DecodeCallResultOptionalParams\n ): Promise<DecodeCallResultResponse> {\n return this.sendOperationRequest(\n { body, options },\n decodeCallResultOperationSpec\n );\n }\n\n /**\n * Decode the result of contract call from Bytecode\n * @param body Call result + compiled contract\n * @param options The options parameters.\n */\n decodeCallResultBytecode(\n body: BytecodeCallResultInput,\n options?: DecodeCallResultBytecodeOptionalParams\n ): Promise<DecodeCallResultBytecodeResponse> {\n return this.sendOperationRequest(\n { body, options },\n decodeCallResultBytecodeOperationSpec\n );\n }\n\n /**\n * Identify function name and arguments in Calldata for a compiled contract\n * @param body Calldata + compiled contract\n * @param options The options parameters.\n */\n decodeCalldataBytecode(\n body: DecodeCalldataBytecode,\n options?: DecodeCalldataBytecodeOptionalParams\n ): Promise<DecodeCalldataBytecodeResponse> {\n return this.sendOperationRequest(\n { body, options },\n decodeCalldataBytecodeOperationSpec\n );\n }\n\n /**\n * Identify function name and arguments in Calldata for a (partial) contract\n * @param body Calldata + contract (stub) code\n * @param options The options parameters.\n */\n decodeCalldataSource(\n body: DecodeCalldataSource,\n options?: DecodeCalldataSourceOptionalParams\n ): Promise<DecodeCalldataSourceResponse> {\n return this.sendOperationRequest(\n { body, options },\n decodeCalldataSourceOperationSpec\n );\n }\n\n /**\n * Decode data as retuned by a contract call. - Legacy decoding\n * @param body Binary data in Sophia ABI format\n * @param options The options parameters.\n */\n decodeData(\n body: SophiaBinaryData,\n options?: DecodeDataOptionalParams\n ): Promise<DecodeDataResponse> {\n return this.sendOperationRequest(\n { body, options },\n decodeDataOperationSpec\n );\n }\n\n /**\n * Encode Sophia function call according to sophia ABI.\n * @param body Sophia function call - contract code + function name + arguments\n * @param options The options parameters.\n */\n encodeCalldata(\n body: FunctionCallInput,\n options?: EncodeCalldataOptionalParams\n ): Promise<EncodeCalldataResponse> {\n return this.sendOperationRequest(\n { body, options },\n encodeCalldataOperationSpec\n );\n }\n\n /**\n * Get FATE assembler code from bytecode\n * @param body contract byte array\n * @param options The options parameters.\n */\n getFateAssemblerCode(\n body: ByteCodeInput,\n options?: GetFateAssemblerCodeOptionalParams\n ): Promise<GetFateAssemblerCodeResponse> {\n return this.sendOperationRequest(\n { body, options },\n getFateAssemblerCodeOperationSpec\n );\n }\n\n /**\n * Verify that an encoded byte array is the result of compiling a given contract\n * @param body contract byte array and source code\n * @param options The options parameters.\n */\n validateByteCode(\n body: ValidateByteCodeInput,\n options?: ValidateByteCodeOptionalParams\n ): Promise<void> {\n return this.sendOperationRequest(\n { body, options },\n validateByteCodeOperationSpec\n );\n }\n\n /**\n * Get the version of the underlying Sophia compiler version\n * @param options The options parameters.\n */\n version(options?: VersionOptionalParams): Promise<VersionResponse> {\n return this.sendOperationRequest({ options }, versionOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = coreClient.createSerializer(Mappers, /* isXml */ false);\n\nconst generateACIOperationSpec: coreClient.OperationSpec = {\n path: \"/aci\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Aci\n },\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst apiOperationSpec: coreClient.OperationSpec = {\n path: \"/api\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: {\n type: { name: \"Dictionary\", value: { type: { name: \"any\" } } }\n }\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst aPIVersionOperationSpec: coreClient.OperationSpec = {\n path: \"/api-version\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.APIVersion\n },\n 500: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\nconst compileContractOperationSpec: coreClient.OperationSpec = {\n path: \"/compile\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.ByteCode\n },\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getCompilerVersionOperationSpec: coreClient.OperationSpec = {\n path: \"/compiler-version\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.CompilerVersion\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n requestBody: Parameters.body1,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decodeCallResultOperationSpec: coreClient.OperationSpec = {\n path: \"/decode-call-result\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: { type: { name: \"any\" } }\n },\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body2,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decodeCallResultBytecodeOperationSpec: coreClient.OperationSpec = {\n path: \"/decode-call-result/bytecode\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DecodedCallresult\n },\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body3,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decodeCalldataBytecodeOperationSpec: coreClient.OperationSpec = {\n path: \"/decode-calldata/bytecode\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DecodedCalldata\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n requestBody: Parameters.body4,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decodeCalldataSourceOperationSpec: coreClient.OperationSpec = {\n path: \"/decode-calldata/source\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.DecodedCalldata\n },\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body5,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst decodeDataOperationSpec: coreClient.OperationSpec = {\n path: \"/decode-data\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.SophiaJsonData\n },\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body6,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst encodeCalldataOperationSpec: coreClient.OperationSpec = {\n path: \"/encode-calldata\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.Calldata\n },\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body7,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst getFateAssemblerCodeOperationSpec: coreClient.OperationSpec = {\n path: \"/fate-assembler\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: Mappers.FateAssembler\n },\n 400: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n requestBody: Parameters.body1,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst validateByteCodeOperationSpec: coreClient.OperationSpec = {\n path: \"/validate-byte-code\",\n httpMethod: \"POST\",\n responses: {\n 200: {},\n 400: {\n bodyMapper: {\n type: {\n name: \"Sequence\",\n element: { type: { name: \"Composite\", className: \"CompilerError\" } }\n }\n },\n isError: true\n }\n },\n requestBody: Parameters.body8,\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.contentType, Parameters.accept],\n mediaType: \"json\",\n serializer\n};\nconst versionOperationSpec: coreClient.OperationSpec = {\n path: \"/version\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: Mappers.CompilerVersion\n },\n 500: {\n bodyMapper: Mappers.ErrorModel,\n isError: true\n }\n },\n urlParameters: [Parameters.$host],\n headerParameters: [Parameters.accept],\n serializer\n};\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport { Compiler as CompilerApi, ErrorModel, CompilerError } from '../apis/compiler';\nimport { genErrorFormatterPolicy, genVersionCheckPolicy } from '../utils/autorest';\n\ntype GeneralCompilerError = ErrorModel & {\n info?: object;\n parameter?: string;\n};\n\n/**\n * Contract Compiler\n *\n * This class include api call's related to contract compiler functionality.\n * @category contract\n * @example Compiler('COMPILER_URL')\n */\nexport default class Compiler extends CompilerApi {\n /**\n * @param compilerUrl - Url for compiler API\n * @param options - Options\n * @param options.ignoreVersion - Don't check compiler version\n */\n constructor(compilerUrl: string, { ignoreVersion }: { ignoreVersion?: boolean } = {}) {\n super(compilerUrl, {\n allowInsecureConnection: true,\n additionalPolicies: [\n genErrorFormatterPolicy((body: GeneralCompilerError | CompilerError[]) => {\n let message = '';\n if ('reason' in body) {\n message += ` ${body.reason\n }${body.parameter != null ? ` in ${body.parameter}` : ''\n // TODO: revising after improving documentation https://github.com/aeternity/aesophia_http/issues/78\n }${body.info != null ? ` (${JSON.stringify(body.info)})` : ''}`;\n }\n if (Array.isArray(body)) {\n message += `\\n${body\n .map((e) => `${e.type}:${e.pos.line}:${e.pos.col}: ${e.message}${e.context != null ? `(${e.context})` : ''}`)\n .map((e) => e.trim()) // TODO: remove after fixing https://github.com/aeternity/aesophia_http/issues/80\n .join('\\n')}`;\n }\n return message;\n }),\n ],\n });\n if (ignoreVersion !== true) {\n const versionPromise = this.aPIVersion().then(({ apiVersion }) => apiVersion);\n this.pipeline.addPolicy(\n genVersionCheckPolicy('compiler', '/api-version', versionPromise, '6.1.0', '7.0.0'),\n );\n }\n }\n}\n","import * as chainMethods from './chain';\nimport * as txMethods from './tx';\nimport * as aensMethods from './aens';\nimport * as spendMethods from './spend';\nimport * as oracleMethods from './oracle';\nimport * as contractMethods from './contract/methods';\nimport * as contractGaMethods from './contract/ga';\nimport * as deprecatedMethods from './deprecated/methods';\nimport { _buildTx } from './tx';\nimport { mapObject } from './utils/other';\nimport Node, { getNetworkId } from './Node';\nimport { AE_AMOUNT_FORMATS } from './utils/amount-formatter';\nimport { AMOUNT } from './tx/builder/schema';\nimport { Tag } from './tx/builder/constants';\nimport MemoryAccount, { Keypair } from './account/Memory';\nimport AccountBase, { isAccountBase } from './account/Base';\nimport {\n CompilerError,\n DuplicateNodeError,\n NodeNotFoundError,\n NotImplementedError,\n TypeError,\n} from './utils/errors';\nimport { Encoded } from './utils/encoder';\nimport Compiler from './contract/Compiler';\n\nexport type Account = Keypair | AccountBase | any;\n\ntype NodeInfo = Awaited<ReturnType<Node['getNodeInfo']>> & { name: string };\n\nfunction getValueOrErrorProxy<Value extends object>(valueCb: () => Value): Value {\n try {\n return valueCb();\n } catch (error) {\n return new Proxy(\n {},\n Object.fromEntries(['get', 'set', 'has'].map((name) => [name, () => { throw error; }])),\n ) as Value;\n }\n}\n\n/**\n * Basic AeSdk class\n *\n * AeSdkBase objects are the composition of:\n * - chain methods\n * - tx methods\n * - aens methods\n * - spend methods\n * - oracle methods\n * - contract methods\n * - contract ga methods\n * Only by providing the joint functionality of them, most more advanced\n * operations, i.e. the ones with actual use value on the chain, become\n * available.\n */\nclass AeSdkBase {\n _options: {\n denomination: AE_AMOUNT_FORMATS;\n amount: number;\n [key: string]: any;\n } = { denomination: AE_AMOUNT_FORMATS.AETTOS, amount: AMOUNT };\n\n pool: Map<string, Node> = new Map();\n\n selectedNodeName?: string;\n\n compilerApi: Compiler;\n\n /**\n * @param options - Options\n * @param options.nodes - Array of nodes\n * @param options.compilerUrl - Url for compiler API\n * @param options.ignoreVersion - Don't check node or compiler version\n */\n constructor(\n {\n nodes = [], compilerUrl, ignoreVersion = false, ...options\n }:\n {\n nodes?: Array<{ name: string; instance: Node }>;\n compilerUrl?: string;\n ignoreVersion?: boolean;\n [key: string]: any; // TODO: consider combining all possible options instead\n } = {},\n ) {\n Object.assign(this._options, options);\n\n nodes.forEach(({ name, instance }, i) => this.addNode(name, instance, i === 0));\n\n if (compilerUrl == null) {\n this.compilerApi = getValueOrErrorProxy(() => {\n throw new CompilerError('You can\\'t use Compiler API. Compiler is not ready!');\n });\n } else this.setCompilerUrl(compilerUrl, { ignoreVersion });\n }\n\n setCompilerUrl(\n compilerUrl: string,\n { ignoreVersion = false }: { ignoreVersion?: boolean } = {},\n ): void {\n this.compilerApi = new Compiler(compilerUrl, { ignoreVersion });\n }\n\n get api(): Node {\n this.ensureNodeConnected();\n return this.pool.get(this.selectedNodeName) as Node;\n }\n\n /**\n * Add Node\n * @param name - Node name\n * @param node - Node instance\n * @param select - Select this node as current\n * @example\n * ```js\n * // add and select new node with name 'testNode'\n * aeSdkBase.addNode('testNode', new Node({ url }), true)\n * ```\n */\n addNode(name: string, node: Node, select = false): void {\n if (this.pool.has(name)) throw new DuplicateNodeError(name);\n\n this.pool.set(name, node);\n if (select || this.selectedNodeName == null) {\n this.selectNode(name);\n }\n }\n\n /**\n * Select Node\n * @param name - Node name\n * @example\n * nodePool.selectNode('testNode')\n */\n selectNode(name: string): void {\n if (!this.pool.has(name)) throw new NodeNotFoundError(`Node with name ${name} not in pool`);\n this.selectedNodeName = name;\n }\n\n /**\n * Get NetworkId of current Node\n * @example\n * nodePool.getNetworkId()\n */\n readonly getNetworkId = getNetworkId;\n\n /**\n * Check if you have selected node\n * @example\n * nodePool.isNodeConnected()\n */\n isNodeConnected(): this is AeSdkBase & { selectedNodeName: string } {\n return this.selectedNodeName != null;\n }\n\n protected ensureNodeConnected(): asserts this is AeSdkBase & { selectedNodeName: string } {\n if (!this.isNodeConnected()) {\n throw new NodeNotFoundError('You can\\'t use Node API. Node is not connected or not defined!');\n }\n }\n\n /**\n * Get information about node\n * @example\n * ```js\n * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }\n * ```\n */\n async getNodeInfo(): Promise<NodeInfo> {\n this.ensureNodeConnected();\n return {\n name: this.selectedNodeName,\n ...await this.api.getNodeInfo(),\n };\n }\n\n /**\n * Get array of available nodes\n * @example\n * nodePool.getNodesInPool()\n */\n async getNodesInPool(): Promise<NodeInfo[]> {\n return Promise.all(\n Array.from(this.pool.entries()).map(async ([name, node]) => ({\n name,\n ...await node.getNodeInfo(),\n })),\n );\n }\n\n // eslint-disable-next-line class-methods-use-this\n addresses(): Encoded.AccountAddress[] {\n return [];\n }\n\n async address({ onAccount }: { onAccount?: Account } = {}): Promise<Encoded.AccountAddress> {\n return this._resolveAccount(onAccount).address();\n }\n\n async sign(\n data: string | Uint8Array,\n { onAccount, ...options }: { onAccount?: Account } = {},\n ): Promise<Uint8Array> {\n return this._resolveAccount(onAccount).sign(data, options);\n }\n\n async signTransaction(\n tx: Encoded.Transaction,\n { onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['signTransaction']>[1] = {},\n ): Promise<Encoded.Transaction> {\n return this._resolveAccount(onAccount)\n .signTransaction(tx, { ...options, networkId: await this.getNetworkId(options) });\n }\n\n async signMessage(\n message: string,\n { onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['signMessage']>[1] = {},\n ): Promise<string | Uint8Array> {\n return this._resolveAccount(onAccount).signMessage(message, options);\n }\n\n async verifyMessage(\n message: string,\n signature: string | Uint8Array,\n { onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['verifyMessage']>[2] = {},\n ): Promise<boolean> {\n return this._resolveAccount(onAccount).verifyMessage(message, signature, options);\n }\n\n /**\n * Resolves an account\n * @param account - ak-address, instance of AccountBase, or keypair\n */\n // eslint-disable-next-line class-methods-use-this\n _resolveAccount(account?: Account): AccountBase {\n switch (account !== null && typeof account) {\n case 'string':\n throw new NotImplementedError('Address in AccountResolver');\n case 'object':\n return isAccountBase(account) ? account : new MemoryAccount({ keypair: account });\n default:\n throw new TypeError(\n 'Account should be an address (ak-prefixed string), '\n + `keypair, or instance of AccountBase, got ${String(account)} instead`,\n );\n }\n }\n\n _getOptions(): {\n onNode: Node;\n onAccount: AccountBase;\n onCompiler: Compiler;\n } {\n return {\n ...this._options,\n onNode: getValueOrErrorProxy(() => this.api),\n onAccount: getValueOrErrorProxy(() => this._resolveAccount()),\n onCompiler: getValueOrErrorProxy(() => this.compilerApi),\n };\n }\n\n async buildTx<TxType extends Tag>(\n txType: TxType,\n options: Omit<Parameters<typeof _buildTx<TxType>>[1], 'onNode'> & { onNode?: Node },\n ): Promise<Encoded.Transaction> {\n // @ts-expect-error TODO: need to figure out what's wrong here\n return _buildTx<TxType>(txType, {\n ...this._getOptions(),\n ...options,\n });\n }\n}\n\nconst { _buildTx: _, ...txMethodsOther } = txMethods;\nconst { InvalidTxError: _2, ...chainMethodsOther } = chainMethods;\n\nconst methods = {\n ...chainMethodsOther,\n ...txMethodsOther,\n ...aensMethods,\n ...spendMethods,\n ...oracleMethods,\n ...contractMethods,\n ...contractGaMethods,\n ...deprecatedMethods,\n} as const;\n\ntype RequiredKeys<T> = {\n [K in keyof T]-?: {} extends Pick<T, K> ? never : K\n}[keyof T];\n\ntype OptionalIfNotRequired<T extends [any]> = RequiredKeys<T[0]> extends never ? T | [] : T;\n\ntype MakeOptional<Args extends any[]> = Args extends [infer Head, ...infer Tail]\n ? Tail extends []\n ? Head extends object\n ? OptionalIfNotRequired<[Omit<Head, 'onNode' | 'onCompiler' | 'onAccount'>\n & {\n onNode?: Node;\n onCompiler?: Compiler;\n onAccount?: AccountBase | Encoded.AccountAddress | Keypair;\n }]>\n : [Head]\n : [Head, ...MakeOptional<Tail>]\n : never;\n\ntype TransformMethods <Methods extends { [key: string]: Function }> =\n {\n [Name in keyof Methods]:\n Methods[Name] extends (...args: infer Args) => infer Ret\n ? (...args: MakeOptional<Args>) => Ret\n : never\n };\n\ninterface AeSdkBaseMethods extends TransformMethods<typeof methods> {}\n\nObject.assign(AeSdkBase.prototype, mapObject<Function, Function>(\n methods,\n ([name, handler]) => [\n name,\n function methodWrapper(...args: any[]) {\n const instanceOptions = this._getOptions();\n const lastArg = args[args.length - 1];\n if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {\n args[args.length - 1] = {\n ...instanceOptions,\n ...lastArg,\n ...lastArg.onAccount != null && { onAccount: this._resolveAccount(lastArg.onAccount) },\n };\n } else args.push(instanceOptions);\n return handler(...args);\n },\n ],\n));\n\nexport default AeSdkBase as new (options?: ConstructorParameters<typeof AeSdkBase>[0]) =>\nAeSdkBase & AeSdkBaseMethods;\n","import AeSdkBase, { Account } from './AeSdkBase';\nimport AccountBase from './account/Base';\nimport { decode, Encoded } from './utils/encoder';\nimport { UnavailableAccountError } from './utils/errors';\n\nexport default class AeSdk extends AeSdkBase {\n accounts: { [key: Encoded.AccountAddress]: AccountBase } = {};\n\n selectedAddress?: Encoded.AccountAddress;\n\n _resolveAccount(\n account: Account | Encoded.AccountAddress = this.selectedAddress,\n ): AccountBase {\n if (typeof account === 'string') {\n const address = account as Encoded.AccountAddress;\n decode(address);\n if (this.accounts[address] == null) throw new UnavailableAccountError(account);\n account = this.accounts[address];\n }\n return super._resolveAccount(account);\n }\n\n /**\n * Get accounts addresses\n * @example addresses()\n */\n addresses(): Encoded.AccountAddress[] {\n return Object.keys(this.accounts) as Encoded.AccountAddress[];\n }\n\n /**\n * Add specific account\n * @param account - Account instance\n * @param options - Options\n * @param options.select - Select account\n * @example addAccount(account)\n */\n async addAccount(account: AccountBase, { select }: { select?: boolean } = {}): Promise<void> {\n const address = await account.address();\n this.accounts[address] = account;\n if (select === true) this.selectAccount(address);\n }\n\n /**\n * Remove specific account\n * @param address - Address of account to remove\n * @example removeAccount(address)\n */\n removeAccount(address: Encoded.AccountAddress): void {\n if (this.accounts[address] == null) {\n console.warn(`removeAccount: Account for ${address} not available`);\n return;\n }\n delete this.accounts[address]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n if (this.selectedAddress === address) delete this.selectedAddress;\n }\n\n /**\n * Select specific account\n * @param address - Address of account to select\n * @example selectAccount('ak_xxxxxxxx')\n */\n selectAccount(address: Encoded.AccountAddress): void {\n decode(address);\n if (this.accounts[address] == null) throw new UnavailableAccountError(address);\n this.selectedAddress = address;\n }\n}\n","// eslint-disable-next-line max-classes-per-file\nimport { Encoded } from '../utils/encoder';\nimport { BaseError, InternalError } from '../utils/errors';\n\n/**\n * @category aepp wallet communication\n */\nexport const enum MESSAGE_DIRECTION {\n to_waellet = 'to_waellet',\n to_aepp = 'to_aepp',\n}\n\n/**\n * @category aepp wallet communication\n */\nexport const enum WALLET_TYPE {\n window = 'window',\n extension = 'extension',\n}\n\n/**\n * @category aepp wallet communication\n */\nexport const enum SUBSCRIPTION_TYPES {\n subscribe = 'subscribe',\n unsubscribe = 'unsubscribe',\n}\n\n/**\n * @category aepp wallet communication\n */\nexport const enum METHODS {\n readyToConnect = 'connection.announcePresence',\n updateAddress = 'address.update',\n address = 'address.get',\n connect = 'connection.open',\n sign = 'transaction.sign',\n signMessage = 'message.sign',\n subscribeAddress = 'address.subscribe',\n updateNetwork = 'networkId.update',\n closeConnection = 'connection.close',\n}\n\n/**\n * @category aepp wallet communication\n */\nexport const enum RPC_STATUS {\n CONNECTED = 'CONNECTED',\n DISCONNECTED = 'DISCONNECTED',\n WAITING_FOR_CONNECTION_REQUEST = 'WAITING_FOR_CONNECTION_REQUEST',\n}\n\ninterface RpcErrorAsJson {\n code: number;\n message: string;\n data?: any;\n}\n\nconst rpcErrors: Array<(new (data?: any) => RpcError) & { code: number }> = [];\n\n/**\n * @category exception\n */\nexport abstract class RpcError extends BaseError {\n static code: number;\n\n code: number;\n\n data?: any;\n\n toJSON(): RpcErrorAsJson {\n return {\n code: this.code,\n message: this.message,\n data: this.data,\n };\n }\n\n static deserialize(json: RpcErrorAsJson): RpcError {\n const RpcErr = rpcErrors.find((cl) => cl.code === json.code);\n if (RpcErr == null) throw new InternalError(`Can't find RpcError with code: ${json.code}`);\n return new RpcErr(json.data);\n }\n}\n\n/**\n * @category exception\n */\nexport class RpcInvalidTransactionError extends RpcError {\n static code = 2;\n\n code = 2;\n\n constructor(data?: any) {\n super('Invalid transaction');\n this.data = data;\n this.name = 'RpcInvalidTransactionError';\n }\n}\nrpcErrors.push(RpcInvalidTransactionError);\n\n/**\n * @category exception\n */\nexport class RpcBroadcastError extends RpcError {\n static code = 3;\n\n code = 3;\n\n constructor(data?: any) {\n super('Broadcast failed');\n this.data = data;\n this.name = 'RpcBroadcastError';\n }\n}\nrpcErrors.push(RpcBroadcastError);\n\n/**\n * @category exception\n */\nexport class RpcRejectedByUserError extends RpcError {\n static code = 4;\n\n code = 4;\n\n constructor(data?: any) {\n super('Operation rejected by user');\n this.data = data;\n this.name = 'RpcRejectedByUserError';\n }\n}\nrpcErrors.push(RpcRejectedByUserError);\n\n/**\n * @category exception\n */\nexport class RpcUnsupportedProtocolError extends RpcError {\n static code = 5;\n\n code = 5;\n\n constructor() {\n super('Unsupported Protocol Version');\n this.name = 'RpcUnsupportedProtocolError';\n }\n}\nrpcErrors.push(RpcUnsupportedProtocolError);\n\n/**\n * @category exception\n */\nexport class RpcConnectionDenyError extends RpcError {\n static code = 9;\n\n code = 9;\n\n constructor(data?: any) {\n super('Wallet deny your connection request');\n this.data = data;\n this.name = 'RpcConnectionDenyError';\n }\n}\nrpcErrors.push(RpcConnectionDenyError);\n\n/**\n * @category exception\n */\nexport class RpcNotAuthorizeError extends RpcError {\n static code = 10;\n\n code = 10;\n\n constructor() {\n super('You are not connected to the wallet');\n this.name = 'RpcNotAuthorizeError';\n }\n}\nrpcErrors.push(RpcNotAuthorizeError);\n\n/**\n * @category exception\n */\nexport class RpcPermissionDenyError extends RpcError {\n static code = 11;\n\n code = 11;\n\n constructor(address: Encoded.AccountAddress) {\n super(`You are not subscribed for account ${address}`);\n this.data = address;\n this.name = 'RpcPermissionDenyError';\n }\n}\nrpcErrors.push(RpcPermissionDenyError);\n\n/**\n * @category exception\n */\nexport class RpcInternalError extends RpcError {\n static code = 12;\n\n code = 12;\n\n constructor() {\n super('The peer failed to execute your request due to unknown error');\n this.name = 'RpcInternalError';\n }\n}\nrpcErrors.push(RpcInternalError);\n\n/**\n * @category exception\n */\nexport class RpcMethodNotFoundError extends RpcError {\n static code = -32601;\n\n code = -32601;\n\n constructor() {\n super('Method not found');\n this.name = 'RpcMethodNotFoundError';\n }\n}\nrpcErrors.push(RpcMethodNotFoundError);\n","import AccountBase from './Base';\nimport { METHODS } from '../aepp-wallet-communication/schema';\nimport { NotImplementedError } from '../utils/errors';\nimport { Encoded } from '../utils/encoder';\n\n/**\n * Account provided by wallet\n * @param params - Params\n * @param params.rpcClient - RpcClient instance\n * @param params.address - RPC account address\n * @returns AccountRpc instance\n */\nexport default class AccountRpc extends AccountBase {\n _rpcClient: any;\n\n _address: Encoded.AccountAddress;\n\n constructor(\n { rpcClient, address, ...options }: { rpcClient: any; address: Encoded.AccountAddress }\n & ConstructorParameters<typeof AccountBase>[0],\n ) {\n super(options);\n this._rpcClient = rpcClient;\n this._address = address;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async sign(): Promise<Uint8Array> {\n throw new NotImplementedError('RAW signing using wallet');\n }\n\n async address(): Promise<Encoded.AccountAddress> {\n return this._address;\n }\n\n /**\n * @returns Signed transaction\n */\n async signTransaction(\n tx: Encoded.Transaction,\n { innerTx, networkId }: Parameters<AccountBase['signTransaction']>[1] = {},\n ): Promise<Encoded.Transaction> {\n if (innerTx != null) throw new NotImplementedError('innerTx option in AccountRpc');\n const res = await this._rpcClient.request(METHODS.sign, {\n onAccount: this._address,\n tx,\n returnSigned: true,\n /**\n * @deprecated Wallet provided networkId will be used (current network)\n * required to maintain backward compatibility with wallets using SDK v11.0.1 and below\n * @see {@link https://github.com/aeternity/aepp-sdk-js/commit/153fd89a52c4eab39fcd659b356b36d32129c1ba}\n */\n networkId,\n });\n return res.signedTransaction;\n }\n\n /**\n * @returns Signed message\n */\n async signMessage(\n message: string,\n { returnHex = false }: Parameters<AccountBase['signMessage']>[1] = {},\n ): Promise<string | Uint8Array> {\n const { signature } = await this._rpcClient\n .request(METHODS.signMessage, { onAccount: this._address, message });\n return returnHex ? signature : Buffer.from(signature, 'hex');\n }\n}\n","import { send } from '../../spend';\nimport { Encoded } from '../../utils/encoder';\nimport { METHODS, SUBSCRIPTION_TYPES, WALLET_TYPE } from '../schema';\n\nexport interface WalletInfo {\n id: string;\n name: string;\n networkId: string;\n origin: string;\n type: WALLET_TYPE;\n}\n\nexport interface Accounts {\n connected: { [pub: Encoded.AccountAddress]: {} };\n current: { [pub: Encoded.AccountAddress]: {} };\n}\n\nexport interface Node {\n name: string;\n url: string;\n}\n\nexport interface Network {\n networkId: string;\n node?: Node;\n}\n\ntype Icons = Array<{ src: string; sizes?: string; type?: string; purpose?: string }>;\n\nexport const RPC_VERSION = 1;\n\nexport interface WalletApi {\n [METHODS.connect]: (\n p: { name: string; icons?: Icons; version: typeof RPC_VERSION; connectNode: boolean }\n ) => Promise<WalletInfo & { node?: Node }>;\n\n [METHODS.closeConnection]: (p: any) => void;\n\n [METHODS.subscribeAddress]: (\n p: { type: SUBSCRIPTION_TYPES; value: 'connected' | 'current' }\n ) => Promise<{ subscription: Array<'connected' | 'current'>; address: Accounts }>;\n\n [METHODS.address]: () => Promise<Encoded.AccountAddress[]>;\n\n [METHODS.sign]: ((\n p: { tx: Encoded.Transaction; onAccount: Encoded.AccountAddress; returnSigned: boolean }\n ) => Promise<{\n /**\n * @deprecated this is not a hash at all, will be removed later at the same time\n * as dropping ability to broadcast transaction by wallet\n */\n transactionHash?: Awaited<ReturnType<typeof send>>;\n signedTransaction?: Encoded.Transaction;\n }>);\n\n [METHODS.signMessage]: (\n p: { message: string; onAccount: Encoded.AccountAddress }\n ) => Promise<{ signature: string }>;\n}\n\nexport interface AeppApi {\n [METHODS.updateAddress]: (a: Accounts) => void;\n [METHODS.updateNetwork]: (a: Network) => void;\n [METHODS.readyToConnect]: (w: WalletInfo) => void;\n [METHODS.closeConnection]: (p: any) => void;\n}\n","import { RpcError, RpcInternalError, RpcMethodNotFoundError } from '../schema';\nimport BrowserConnection from '../connection/Browser';\nimport { InvalidRpcMessageError, MissingCallbackError } from '../../utils/errors';\n\ninterface JsonRpcRequest {\n jsonrpc: '2.0';\n id: number;\n method: string;\n params?: any;\n}\n\ninterface JsonRpcResponse {\n jsonrpc: '2.0';\n id: number;\n method: string;\n result?: any;\n error?: {\n code: number;\n message: string;\n data?: any;\n };\n}\n\ntype RpcApiHandler = (p?: any) => any | undefined;\ntype RpcApi<Api> = { [k in keyof Api]: RpcApiHandler };\ntype WithOrigin<Api extends RpcApi<Api>> = {\n [k in keyof Api]: (p: Parameters<Api[k]>[0], origin: string) => ReturnType<Api[k]>\n};\n\n/**\n * Contain functionality for using RPC conection\n * @category aepp wallet communication\n * @param connection - Connection object\n * @param onDisconnect - Disconnect callback\n * @param methods - Object containing handlers for each request by name\n */\nexport default class RpcClient <\n RemoteApi extends RpcApi<RemoteApi>, LocalApi extends RpcApi<LocalApi>,\n> {\n connection: BrowserConnection;\n\n #callbacks = new Map<number, { resolve: (v: any) => void; reject: (e: Error) => void }>();\n\n #messageId = 0;\n\n #methods: WithOrigin<LocalApi>;\n\n constructor(\n connection: BrowserConnection,\n onDisconnect: () => void,\n methods: WithOrigin<LocalApi>,\n ) {\n this.connection = connection;\n this.#methods = methods;\n connection.connect(this.#handleMessage.bind(this), onDisconnect);\n }\n\n async #handleMessage(msg: JsonRpcRequest | JsonRpcResponse, origin: string): Promise<void> {\n if (msg?.jsonrpc !== '2.0') throw new InvalidRpcMessageError(JSON.stringify(msg));\n if ('result' in msg || 'error' in msg) {\n this.#processResponse(msg);\n return;\n }\n\n const request = msg as JsonRpcRequest;\n let result; let\n error;\n try {\n if (!(request.method in this.#methods)) throw new RpcMethodNotFoundError();\n const methodName = request.method as keyof LocalApi;\n result = await this.#methods[methodName](request.params, origin);\n } catch (e) {\n error = e instanceof RpcError ? e : new RpcInternalError();\n }\n if (request.id != null) {\n this.#sendResponse(request.id, request.method as keyof LocalApi, result, error);\n }\n }\n\n #sendRequest(\n id: number | undefined,\n method: keyof RemoteApi | keyof LocalApi,\n params?: any,\n ): void {\n this.connection.sendMessage({\n jsonrpc: '2.0',\n ...id != null ? { id } : {},\n method,\n ...params != null ? { params } : {},\n });\n }\n\n #sendResponse(\n id: number,\n method: keyof RemoteApi | keyof LocalApi, // TODO: remove as far it is not required in JSON RPC\n result?: any,\n error?: any,\n ): void {\n this.connection.sendMessage({\n jsonrpc: '2.0',\n id,\n method,\n ...error != null ? { error } : { result },\n });\n }\n\n /**\n * Make a request\n * @param name - Method name\n * @param params - Method params\n * @returns Promise which will be resolved after receiving response message\n */\n async request<Name extends keyof RemoteApi>(\n name: Name,\n params: Parameters<RemoteApi[Name]>[0],\n ): Promise<ReturnType<RemoteApi[Name]>> {\n this.#sendRequest(this.#messageId += 1, name, params);\n return new Promise((resolve, reject) => {\n this.#callbacks.set(this.#messageId, { resolve, reject });\n });\n }\n\n /**\n * Make a notification\n * @param name - Method name\n * @param params - Method params\n */\n notify<Name extends keyof RemoteApi>(name: Name, params: Parameters<RemoteApi[Name]>[0]): void {\n this.#sendRequest(undefined, name, params);\n }\n\n /**\n * Process response message\n * @param msg - Message object\n */\n #processResponse({ id, error, result }: { id: number; error?: any; result?: any }): void {\n const callbacks = this.#callbacks.get(id);\n if (callbacks == null) throw new MissingCallbackError(id);\n if (error != null) callbacks.reject(RpcError.deserialize(error));\n else callbacks.resolve(result);\n this.#callbacks.delete(id);\n }\n}\n","import AeSdkBase, { Account } from './AeSdkBase';\nimport AccountBase from './account/Base';\nimport AccountRpc from './account/Rpc';\nimport { decode, Encoded } from './utils/encoder';\nimport {\n Accounts, RPC_VERSION, WalletInfo, Network, WalletApi, AeppApi,\n} from './aepp-wallet-communication/rpc/types';\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient';\nimport { METHODS, SUBSCRIPTION_TYPES } from './aepp-wallet-communication/schema';\nimport {\n AlreadyConnectedError,\n NoWalletConnectedError,\n UnsubscribedAccountError,\n UnAuthorizedAccountError,\n RpcConnectionError,\n} from './utils/errors';\nimport Node from './Node';\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser';\n\n/**\n * RPC handler for AEPP side\n * Contain functionality for wallet interaction and connect it to sdk\n * @category aepp wallet communication\n */\nexport default class AeSdkAepp extends AeSdkBase {\n name: string;\n\n onAddressChange: (a: Accounts) => void;\n\n onDisconnect: (p: any) => void;\n\n onNetworkChange: (a: Network) => void;\n\n rpcClient?: RpcClient<WalletApi, AeppApi>;\n\n _accounts?: Accounts;\n\n /**\n * @param options - Options\n * @param options.name - Aepp name\n * @param options.onAddressChange - Call-back function for update address event\n * @param options.onDisconnect - Call-back function for disconnect event\n * @param options.onNetworkChange - Call-back function for update network event\n */\n constructor({\n name,\n onAddressChange = () => {},\n onDisconnect = () => {},\n onNetworkChange = () => {},\n ...other\n }: {\n name: string;\n onAddressChange: (a: Accounts) => void;\n onDisconnect: (p: any) => void;\n onNetworkChange: (a: Network) => void;\n } & ConstructorParameters<typeof AeSdkBase>[0]) {\n super(other);\n this.onAddressChange = onAddressChange;\n this.onDisconnect = onDisconnect;\n this.onNetworkChange = onNetworkChange;\n this.name = name;\n }\n\n _resolveAccount(account: Account = this.addresses()[0]): AccountBase {\n if (typeof account === 'string') {\n const address = account as Encoded.AccountAddress;\n decode(address);\n if (!this.addresses().includes(address)) throw new UnAuthorizedAccountError(address);\n account = new AccountRpc({ rpcClient: this.rpcClient, address });\n }\n if (account == null) this._ensureAccountAccess();\n return super._resolveAccount(account);\n }\n\n addresses(): Encoded.AccountAddress[] {\n if (this._accounts == null) return [];\n const current = Object.keys(this._accounts.current)[0];\n return [\n ...current != null ? [current] : [], ...Object.keys(this._accounts.connected),\n ] as Encoded.AccountAddress[];\n }\n\n /**\n * Connect to wallet\n * @param connection - Wallet connection object\n * @param options - Options\n * @param options.connectNode - Request wallet to bind node\n * @param options.name - Node name\n * @param options.select - Select this node as current\n */\n async connectToWallet(\n connection: BrowserConnection,\n { connectNode = false, name = 'wallet-node', select = false }:\n { connectNode?: boolean; name?: string; select?: boolean } = {},\n ): Promise<WalletInfo> {\n if (this.rpcClient != null) throw new AlreadyConnectedError('You are already connected to wallet');\n let disconnectParams: any;\n const client = new RpcClient<WalletApi, AeppApi>(\n connection,\n () => {\n delete this.rpcClient;\n delete this._accounts;\n this.onDisconnect(disconnectParams);\n },\n {\n [METHODS.updateAddress]: (params) => {\n this._accounts = params;\n this.onAddressChange(params);\n },\n [METHODS.updateNetwork]: (params) => {\n const { node } = params;\n if (node != null) this.addNode(node.name, new Node(node.url), true);\n this.onNetworkChange(params);\n },\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params;\n client.connection.disconnect();\n },\n [METHODS.readyToConnect]: () => {},\n },\n );\n const { node, ...walletInfo } = await client\n .request(METHODS.connect, { name: this.name, version: RPC_VERSION, connectNode });\n if (connectNode) {\n if (node == null) throw new RpcConnectionError('Missing URLs of the Node');\n this.addNode(name, new Node(node.url), select);\n }\n this.rpcClient = client;\n return walletInfo;\n }\n\n /**\n * Disconnect from wallet\n */\n disconnectWallet(): void {\n this._ensureConnected();\n this.rpcClient.notify(METHODS.closeConnection, { reason: 'bye' });\n this.rpcClient.connection.disconnect();\n }\n\n /**\n * Ask addresses from wallet\n * @returns Addresses from wallet\n */\n async askAddresses(): Promise<Encoded.AccountAddress[]> {\n this._ensureAccountAccess();\n return this.rpcClient.request(METHODS.address, undefined);\n }\n\n /**\n * Subscribe for addresses from wallet\n * @param type - Subscription type\n * @param value - Should be one of 'current' (the selected account), 'connected' (all)\n * @returns Accounts from wallet\n */\n async subscribeAddress(\n type: SUBSCRIPTION_TYPES,\n value: 'current' | 'connected',\n ): Promise<ReturnType<WalletApi[METHODS.subscribeAddress]>> {\n this._ensureConnected();\n const result = await this.rpcClient.request(METHODS.subscribeAddress, { type, value });\n this._accounts = result.address;\n return result;\n }\n\n _ensureConnected(): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {\n if (this.rpcClient != null) return;\n throw new NoWalletConnectedError('You are not connected to Wallet');\n }\n\n _ensureAccountAccess(): asserts this is AeSdkAepp & { rpcClient: NonNullable<AeSdkAepp['rpcClient']> } {\n this._ensureConnected();\n if (this.addresses().length !== 0) return;\n throw new UnsubscribedAccountError();\n }\n}\n","import JsonBig from 'json-bigint';\nimport BigNumber from 'bignumber.js';\nimport { mapObject } from './other';\n\nconst jsonBig = JsonBig({ storeAsString: true });\n\nconst convertValuesToBigNumbers = (value: any): any => {\n if (typeof value === 'object' && value !== null && value.constructor === Object) {\n return mapObject(value, ([k, v]) => [k, convertValuesToBigNumbers(v)]);\n }\n if (Array.isArray(value)) {\n return value.map((item) => convertValuesToBigNumbers(item));\n }\n if (typeof value === 'string' && new BigNumber(value).toString(10) === value) {\n const bn = new BigNumber(value);\n bn.toJSON = () => bn.toString(10);\n return bn;\n }\n return value;\n};\n\nexport default {\n stringify: (...args: Parameters<typeof JsonBig['stringify']>): string => (\n jsonBig.stringify(convertValuesToBigNumbers(args[0]), ...args.slice(1))\n ),\n parse: jsonBig.parse,\n};\n","import { v4 as uuid } from '@aeternity/uuid';\nimport AeSdk from './AeSdk';\nimport { Account } from './AeSdkBase';\nimport verifyTransaction from './tx/validator';\nimport RpcClient from './aepp-wallet-communication/rpc/RpcClient';\nimport {\n METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, WALLET_TYPE,\n RpcBroadcastError, RpcInvalidTransactionError,\n RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError,\n} from './aepp-wallet-communication/schema';\nimport { InternalError, UnknownRpcClientError } from './utils/errors';\nimport AccountBase from './account/Base';\nimport BrowserConnection from './aepp-wallet-communication/connection/Browser';\nimport {\n Accounts,\n AeppApi,\n Network,\n RPC_VERSION,\n WalletApi,\n WalletInfo,\n} from './aepp-wallet-communication/rpc/types';\nimport { Encoded } from './utils/encoder';\nimport jsonBig from './utils/json-big';\n\ntype RpcClientWallet = RpcClient<AeppApi, WalletApi>;\n\ntype OnConnection = (\n clientId: string, params: Omit<Parameters<WalletApi[METHODS.connect]>[0], 'version'>, origin: string\n) => void;\n\ntype OnSubscription = (\n clientId: string, params: Parameters<WalletApi[METHODS.subscribeAddress]>[0], origin: string\n) => void;\n\ntype OnSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.sign]>[0], origin: string\n) => Promise<{ tx?: Encoded.Transaction; onAccount?: Account } | undefined> | Promise<void>;\n\ntype OnDisconnect = (\n clientId: string, params: Parameters<WalletApi[METHODS.closeConnection]>[0]\n) => void;\n\ntype OnAskAccounts = (\n clientId: string, params: undefined, origin: string\n) => void;\n\ntype OnMessageSign = (\n clientId: string, params: Parameters<WalletApi[METHODS.signMessage]>[0], origin: string\n) => Promise<{ onAccount?: Account } | undefined> | Promise<void>;\n\ninterface RpcClientsInfo {\n id: string;\n status: RPC_STATUS;\n connectNode: boolean;\n addressSubscription: Set<'connected' | 'current'>;\n rpc: RpcClientWallet;\n}\n\n/**\n * Contain functionality for aepp interaction and managing multiple aepps\n * @category aepp wallet communication\n */\nexport default class AeSdkWallet extends AeSdk {\n id: string;\n\n _type: WALLET_TYPE;\n\n name: string;\n\n _clients: Map<string, RpcClientsInfo>;\n\n onConnection: OnConnection;\n\n onSubscription: OnSubscription;\n\n onSign: OnSign;\n\n onDisconnect: OnDisconnect;\n\n onAskAccounts: OnAskAccounts;\n\n onMessageSign: OnMessageSign;\n\n /**\n * @param options - Options\n * @param options.name - Wallet name\n * @param options.id - Wallet id\n * @param options.type - Wallet type\n * @param options.onConnection - Call-back function for incoming AEPP connection\n * @param options.onSubscription - Call-back function for incoming AEPP account subscription\n * @param options.onSign - Call-back function for incoming AEPP sign request\n * @param options.onAskAccounts - Call-back function for incoming AEPP get address request\n * @param options.onMessageSign - Call-back function for incoming AEPP sign message request\n * @param options.onDisconnect - Call-back function for disconnect event\n */\n constructor({\n name,\n id,\n type,\n onConnection,\n onSubscription,\n onSign,\n onDisconnect,\n onAskAccounts,\n onMessageSign,\n ...options\n }: {\n id: string;\n type: WALLET_TYPE;\n name: string;\n onConnection: OnConnection;\n onSubscription: OnSubscription;\n onSign: OnSign;\n onDisconnect: OnDisconnect;\n onAskAccounts: OnAskAccounts;\n onMessageSign: OnMessageSign;\n } & ConstructorParameters<typeof AeSdk>[0]) {\n super(options);\n this.onConnection = onConnection;\n this.onSubscription = onSubscription;\n this.onSign = onSign;\n this.onDisconnect = onDisconnect;\n this.onAskAccounts = onAskAccounts;\n this.onMessageSign = onMessageSign;\n this._clients = new Map();\n this.name = name;\n this.id = id;\n this._type = type;\n }\n\n _pushAccountsToApps(): void {\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientSubscribed(clientId))\n .map((clientId) => this._getClient(clientId).rpc)\n .forEach((client) => client.notify(METHODS.updateAddress, this.getAccounts()));\n }\n\n selectAccount(address: Encoded.AccountAddress): void {\n super.selectAccount(address);\n this._pushAccountsToApps();\n }\n\n async addAccount(\n account: AccountBase,\n options?: Parameters<AeSdk['addAccount']>[1],\n ): Promise<void> {\n await super.addAccount(account, options);\n this._pushAccountsToApps();\n }\n\n _getNode(): { node: Network['node'] } {\n this.ensureNodeConnected();\n return { node: { url: this.api.url, name: this.selectedNodeName } };\n }\n\n async selectNode(name: string): Promise<void> {\n super.selectNode(name);\n const networkId = await this.getNetworkId();\n Array.from(this._clients.keys())\n .filter((clientId) => this._isRpcClientConnected(clientId))\n .map((clientId) => this._getClient(clientId))\n .forEach((client) => {\n client.rpc.notify(METHODS.updateNetwork, {\n networkId,\n ...client.connectNode && this._getNode(),\n });\n });\n }\n\n _getClient(clientId: string): RpcClientsInfo {\n const client = this._clients.get(clientId);\n if (client == null) throw new UnknownRpcClientError(clientId);\n return client;\n }\n\n _isRpcClientSubscribed(clientId: string): boolean {\n return this._isRpcClientConnected(clientId)\n && this._getClient(clientId).addressSubscription.size !== 0;\n }\n\n _isRpcClientConnected(clientId: string): boolean {\n return RPC_STATUS.CONNECTED === this._getClient(clientId).status\n && this._getClient(clientId).rpc.connection.isConnected();\n }\n\n _disconnectRpcClient(clientId: string): void {\n const client = this._getClient(clientId);\n client.rpc.connection.disconnect();\n client.status = RPC_STATUS.DISCONNECTED;\n client.addressSubscription = new Set();\n }\n\n /**\n * Remove specific RpcClient by ID\n * @param id - Client ID\n */\n removeRpcClient(id: string): void {\n this._disconnectRpcClient(id);\n this._clients.delete(id);\n }\n\n /**\n * Add new client by AEPP connection\n * @param clientConnection - AEPP connection object\n * @returns Client ID\n */\n addRpcClient(clientConnection: BrowserConnection): string {\n // @TODO detect if aepp has some history based on origin????\n // if yes use this instance for connection\n const id = uuid();\n let disconnectParams: any;\n const client: RpcClientsInfo = {\n id,\n status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,\n addressSubscription: new Set(),\n connectNode: false,\n rpc: new RpcClient<AeppApi, WalletApi>(\n clientConnection,\n () => {\n this._clients.delete(id);\n this.onDisconnect(id, disconnectParams); // also related info\n },\n {\n [METHODS.closeConnection]: (params) => {\n disconnectParams = params;\n this._disconnectRpcClient(id);\n },\n // Store client info and prepare two fn for each client `connect` and `denyConnection`\n // which automatically prepare and send response for that client\n [METHODS.connect]: async ({\n name, version, icons, connectNode,\n }, origin) => {\n if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError();\n\n await this.onConnection(id, { name, icons, connectNode }, origin);\n client.status = RPC_STATUS.CONNECTED;\n client.connectNode = connectNode;\n return {\n ...await this.getWalletInfo(),\n ...connectNode && this._getNode(),\n };\n },\n [METHODS.subscribeAddress]: async ({ type, value }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n\n await this.onSubscription(id, { type, value }, origin);\n\n switch (type) {\n case SUBSCRIPTION_TYPES.subscribe:\n client.addressSubscription.add(value);\n break;\n case SUBSCRIPTION_TYPES.unsubscribe:\n client.addressSubscription.delete(value);\n break;\n default:\n throw new InternalError(`Unknown subscription type: ${type}`);\n }\n\n return {\n subscription: Array.from(client.addressSubscription),\n address: this.getAccounts(),\n };\n },\n [METHODS.address]: async (params, origin) => {\n if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError();\n await this.onAskAccounts(id, params, origin);\n return this.addresses();\n },\n [METHODS.sign]: async ({ tx, onAccount, returnSigned }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n onAccount ??= await this.address();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const overrides = await this.onSign(id, { tx, returnSigned, onAccount }, origin);\n onAccount = overrides?.onAccount ?? onAccount;\n tx = overrides?.tx ?? tx;\n if (returnSigned) {\n return { signedTransaction: await this.signTransaction(tx, { onAccount }) };\n }\n try {\n return jsonBig.parse(jsonBig.stringify({\n transactionHash: await this.send(tx, { onAccount, verify: false }),\n }));\n } catch (error) {\n const validation = await verifyTransaction(tx, this.api);\n if (validation.length > 0) throw new RpcInvalidTransactionError(validation);\n throw new RpcBroadcastError(error.message);\n }\n },\n [METHODS.signMessage]: async ({ message, onAccount }, origin) => {\n if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError();\n onAccount ??= await this.address();\n if (!this.addresses().includes(onAccount)) {\n throw new RpcPermissionDenyError(onAccount);\n }\n\n const overrides = await this.onMessageSign(id, { message, onAccount }, origin);\n onAccount = overrides?.onAccount ?? onAccount;\n return {\n // TODO: fix signMessage return type\n signature: await this.signMessage(message, { onAccount, returnHex: true }) as\n unknown as string,\n };\n },\n },\n ),\n };\n this._clients.set(id, client);\n return id;\n }\n\n /**\n * Send shareWalletInfo message to notify AEPP about wallet\n * @param clientId - ID of RPC client send message to\n */\n async shareWalletInfo(clientId: string): Promise<void> {\n this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo());\n }\n\n /**\n * Get Wallet info object\n * @returns Object with wallet information\n */\n async getWalletInfo(): Promise<WalletInfo> {\n return {\n id: this.id,\n name: this.name,\n networkId: await this.getNetworkId(),\n origin: window.location.origin,\n type: this._type,\n };\n }\n\n /**\n * Get Wallet accounts\n * @returns Object with accounts information (\\{ connected: Object, current: Object \\})\n */\n getAccounts(): Accounts {\n return {\n current: this.selectedAddress != null ? { [this.selectedAddress]: {} } : {},\n connected: this.addresses()\n .filter((a) => a !== this.selectedAddress)\n .reduce((acc, a) => ({ ...acc, [a]: {} }), {}),\n };\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { w3cwebsocket as W3CWebSocket } from 'websocket';\nimport { EventEmitter } from 'events';\nimport BigNumber from 'bignumber.js';\nimport type Channel from '.';\nimport JsonBig from '../utils/json-big';\nimport { pascalToSnake } from '../utils/string';\nimport { Encoded } from '../utils/encoder';\nimport {\n BaseError, ChannelCallError, ChannelPingTimedOutError, UnknownChannelStateError,\n} from '../utils/errors';\n\ninterface ChannelAction {\n guard: (channel: Channel, state?: ChannelFsm) => boolean;\n action: (channel: Channel, state?: ChannelFsm) => ChannelFsm;\n}\n\nexport type SignTxWithTag = (tag: string, tx: Encoded.Transaction, options?: object) => (\n Promise<Encoded.Transaction>\n);\n// TODO: SignTx shouldn't return number or null\nexport type SignTx = (tx: Encoded.Transaction, options?: object) => (\n Promise<Encoded.Transaction | number | null>\n);\n\nexport interface ChannelOptions {\n existingFsmId?: string;\n url: string;\n role: 'initiator' | 'responder';\n initiatorId: Encoded.AccountAddress;\n responderId: Encoded.AccountAddress;\n pushAmount: number;\n initiatorAmount: BigNumber;\n responderAmount: BigNumber;\n channelReserve?: BigNumber | number;\n signedTx?: string;\n ttl?: number;\n host: string;\n port: number;\n lockPeriod: number;\n existingChannelId?: string;\n offChainTx?: string;\n reconnectTx?: string;\n timeoutIdle?: number;\n timeoutFundingCreate?: number;\n timeoutFundingSign?: number;\n timeoutFundingLock?: number;\n timeoutSign?: number;\n timeoutAccept?: number;\n timeoutInitialized?: number;\n timeoutAwaitingOpen?: number;\n statePassword?: string;\n debug: boolean;\n sign: SignTxWithTag;\n offchainTx?: string;\n}\n\nexport interface ChannelHandler extends Function {\n enter?: Function;\n}\n\nexport interface ChannelState {\n signedTx: any;\n resolve: (r?: any) => void;\n reject: (e: BaseError) => void;\n sign: SignTx;\n handler?: ChannelHandler;\n onOnChainTx?: (tx: Encoded.Transaction) => void;\n onOwnWithdrawLocked?: () => void;\n onWithdrawLocked?: () => void;\n onOwnDepositLocked?: () => void;\n onDepositLocked?: () => void;\n closeTx?: string;\n}\n\nexport interface ChannelFsm {\n handler: ChannelHandler;\n state?: ChannelState | {\n resolve: Function;\n reject: Function;\n };\n}\n\nexport interface ChannelMessage {\n id?: number;\n jsonrpc: string;\n method: string;\n params: any;\n payload?: any;\n data?: any;\n error?: ChannelMessageError;\n}\n\ninterface ChannelMessageError {\n code: number;\n message: string;\n data: [{\n message: string;\n code: number;\n }];\n request: ChannelMessage;\n}\n\n// Send ping message every 10 seconds\nconst PING_TIMEOUT_MS = 10000;\n// Close connection if pong message is not received within 5 seconds\nconst PONG_TIMEOUT_MS = 5000;\n\n// TODO: move to Channel instance to avoid is-null checks and for easier debugging\nexport const options = new WeakMap<Channel, ChannelOptions>();\nexport const status = new WeakMap<Channel, string>();\nexport const state = new WeakMap<Channel, Encoded.Transaction>();\nconst fsm = new WeakMap<Channel, ChannelFsm>();\nconst websockets = new WeakMap<Channel, W3CWebSocket>();\nexport const eventEmitters = new WeakMap<Channel, EventEmitter>();\nconst messageQueue = new WeakMap<Channel, string[]>();\nconst messageQueueLocked = new WeakMap<Channel, boolean>();\nconst actionQueue = new WeakMap<Channel, ChannelAction[]>();\nconst actionQueueLocked = new WeakMap<Channel, boolean>();\nconst sequence = new WeakMap<Channel, number>();\nexport const channelId = new WeakMap<Channel, string>();\nconst rpcCallbacks = new WeakMap<Channel, Map<number, Function>>();\nconst pingTimeoutId = new WeakMap<Channel, NodeJS.Timeout>();\nconst pongTimeoutId = new WeakMap<Channel, NodeJS.Timeout>();\nexport const fsmId = new WeakMap<Channel, string>();\n\nexport function emit(channel: Channel, ...args: any[]): void {\n const [eventName, ...rest] = args;\n eventEmitters.get(channel)?.emit(eventName, ...rest);\n}\n\nfunction enterState(channel: Channel, nextState: ChannelFsm): void {\n if (nextState == null) {\n throw new UnknownChannelStateError();\n }\n fsm.set(channel, nextState);\n if (nextState?.handler?.enter != null) {\n nextState.handler.enter(channel);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n void dequeueAction(channel);\n}\n\nexport function changeStatus(channel: Channel, newStatus: string): void {\n const prevStatus = status.get(channel);\n if (newStatus !== prevStatus) {\n status.set(channel, newStatus);\n emit(channel, 'statusChanged', newStatus);\n }\n}\n\nexport function changeState(channel: Channel, newState: Encoded.Transaction): void {\n state.set(channel, newState);\n emit(channel, 'stateChanged', newState);\n}\n\nexport function send(channel: Channel, message: ChannelMessage): void {\n const debug: boolean = options.get(channel)?.debug ?? false;\n if (debug) console.log('Send message: ', message);\n\n websockets.get(channel)?.send(JsonBig.stringify(message));\n}\n\nasync function dequeueAction(channel: Channel): Promise<void> {\n const locked = actionQueueLocked.get(channel);\n const queue = actionQueue.get(channel) ?? [];\n if (Boolean(locked) || queue.length === 0) {\n return;\n }\n const singleFsm = fsm.get(channel);\n if (singleFsm == null) return;\n const index = queue.findIndex((action: ChannelAction) => action.guard(channel, singleFsm));\n if (index === -1) {\n return;\n }\n actionQueue.set(channel, queue.filter((_: ChannelAction, i: number) => index !== i));\n actionQueueLocked.set(channel, true);\n const nextState: ChannelFsm = await Promise.resolve(queue[index].action(channel, singleFsm));\n actionQueueLocked.set(channel, false);\n enterState(channel, nextState);\n}\n\nexport function enqueueAction(\n channel: Channel,\n guard: ChannelAction['guard'],\n action: ChannelAction['action'],\n): void {\n const queue = actionQueue.get(channel) ?? [];\n actionQueue.set(channel, [\n ...queue,\n { guard, action },\n ]);\n void dequeueAction(channel);\n}\n\nasync function handleMessage(channel: Channel, message: string): Promise<void> {\n const fsmState = fsm.get(channel);\n if (fsmState == null) throw new UnknownChannelStateError();\n const { handler, state: st } = fsmState;\n enterState(channel, await Promise.resolve(handler(channel, message, st)));\n}\n\nasync function dequeueMessage(channel: Channel): Promise<void> {\n const locked: boolean = messageQueueLocked.get(channel) ?? false;\n if (locked) return;\n const messages: string[] = messageQueue.get(channel) ?? [];\n if (messages.length === 0) return;\n messageQueueLocked.set(channel, true);\n while (messages.length > 0) {\n const message: string = messages.shift() ?? '';\n try {\n await handleMessage(channel, message);\n } catch (error) {\n console.error('Error handling incoming message:');\n console.error(message);\n console.error(error);\n }\n }\n messageQueueLocked.set(channel, false);\n}\n\nexport function disconnect(channel: Channel): void {\n websockets.get(channel)?.close();\n const pingTimeoutIdValue = pingTimeoutId.get(channel);\n const pongTimeoutIdValue = pongTimeoutId.get(channel);\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);\n}\n\nfunction ping(channel: Channel): void {\n const pingTimeoutIdValue = pingTimeoutId.get(channel);\n const pongTimeoutIdValue = pongTimeoutId.get(channel);\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);\n pingTimeoutId.set(channel, setTimeout(() => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.system',\n params: {\n action: 'ping',\n },\n });\n pongTimeoutId.set(channel, setTimeout(() => {\n disconnect(channel);\n emit(channel, 'error', new ChannelPingTimedOutError());\n }, PONG_TIMEOUT_MS));\n }, PING_TIMEOUT_MS));\n}\n\nfunction onMessage(channel: Channel, data: string): void {\n const message = JsonBig.parse(data);\n const debug: boolean = options.get(channel)?.debug ?? false;\n if (debug) console.log('Receive message: ', message);\n if (message.id != null) {\n const callback = rpcCallbacks.get(channel)?.get(message.id);\n try {\n callback?.(message);\n } finally {\n rpcCallbacks.get(channel)?.delete(message.id);\n }\n return;\n }\n if (message.method === 'channels.message') {\n emit(channel, 'message', message.params.data.message);\n return;\n }\n if (message.method === 'channels.system.pong') {\n if (\n (message.params.channel_id === channelId.get(channel))\n // Skip channelId check if channelId is not known yet\n || (channelId.get(channel) == null)\n ) {\n ping(channel);\n }\n return;\n }\n messageQueue.get(channel)?.push(message);\n void dequeueMessage(channel);\n}\n\nexport async function call(channel: Channel, method: string, params: any): Promise<any> {\n return new Promise((resolve, reject) => {\n const currentSequence: number = sequence.get(channel) ?? 0;\n const id = sequence.set(channel, currentSequence + 1).get(channel) ?? 1;\n rpcCallbacks.get(channel)?.set(\n id,\n (message: { result: PromiseLike<any>; error?: ChannelMessageError }) => {\n if (message.error != null) {\n const [{ message: details } = { message: '' }] = message.error.data ?? [];\n return reject(new ChannelCallError(message.error.message + details));\n }\n return resolve(message.result);\n },\n );\n send(channel, {\n jsonrpc: '2.0', method, id, params,\n });\n });\n}\n\nexport async function initialize(\n channel: Channel,\n connectionHandler: Function,\n openHandler: Function,\n { url, ...channelOptions }: ChannelOptions,\n): Promise<void> {\n options.set(channel, { url, ...channelOptions });\n fsm.set(channel, { handler: connectionHandler });\n eventEmitters.set(channel, new EventEmitter());\n sequence.set(channel, 0);\n rpcCallbacks.set(channel, new Map());\n messageQueue.set(channel, []);\n\n const wsUrl = new URL(url);\n Object.entries(channelOptions)\n .filter(([key]) => !['sign', 'debug'].includes(key))\n .forEach(([key, value]) => wsUrl.searchParams.set(pascalToSnake(key), value));\n wsUrl.searchParams.set('protocol', 'json-rpc');\n changeStatus(channel, 'connecting');\n const ws = new W3CWebSocket(wsUrl.toString());\n await new Promise<void>((resolve, reject) => {\n Object.assign(ws, {\n onerror: reject,\n onopen: async () => {\n resolve();\n changeStatus(channel, 'connected');\n if (channelOptions.reconnectTx != null) {\n enterState(channel, { handler: openHandler });\n const signedTx = (await call(channel, 'channels.get.offchain_state', {})).signed_tx;\n changeState(channel, signedTx);\n }\n ping(channel);\n },\n onclose: () => {\n changeStatus(channel, 'disconnected');\n const pingTimeoutIdValue = pingTimeoutId.get(channel);\n const pongTimeoutIdValue = pongTimeoutId.get(channel);\n if (pingTimeoutIdValue != null) clearTimeout(pingTimeoutIdValue);\n if (pongTimeoutIdValue != null) clearTimeout(pongTimeoutIdValue);\n },\n onmessage: ({ data }: { data: string }) => onMessage(channel, data),\n });\n });\n websockets.set(channel, ws);\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n/* eslint-disable consistent-return */\n/* eslint-disable default-case */\n/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { generateKeyPair, encodeContractAddress } from '../utils/crypto';\nimport {\n ChannelState,\n options,\n changeStatus,\n changeState,\n call,\n send,\n emit,\n channelId,\n disconnect,\n fsmId,\n ChannelMessage,\n ChannelFsm,\n SignTx,\n} from './internal';\nimport { unpackTx, buildTx } from '../tx/builder';\nimport { encode, Encoded, Encoding } from '../utils/encoder';\nimport {\n IllegalArgumentError,\n InsufficientBalanceError,\n ChannelConnectionError,\n UnexpectedChannelMessageError,\n} from '../utils/errors';\nimport type Channel from '.';\nimport { Tag } from '../tx/builder/constants';\n\nexport async function appendSignature(\n tx: Encoded.Transaction,\n signFn: SignTx,\n): Promise<Encoded.Transaction | number | null> {\n const { signatures, encodedTx } = unpackTx(tx, Tag.SignedTx).tx;\n const result = await signFn(encode(encodedTx.rlpEncoded, Encoding.Transaction));\n if (typeof result === 'string') {\n const { tx: signedTx } = unpackTx(result, Tag.SignedTx);\n return buildTx({\n signatures: signatures.concat(signedTx.signatures),\n encodedTx: signedTx.encodedTx.rlpEncoded,\n }, Tag.SignedTx).tx;\n }\n return result;\n}\n\nfunction handleUnexpectedMessage(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n state?.reject?.(Object.assign(\n new UnexpectedChannelMessageError(`Unexpected message received:\\n\\n${JSON.stringify(message)}`),\n { wsMessage: message },\n ));\n return { handler: channelOpen };\n}\n\nexport function awaitingConnection(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info') {\n const channelInfoStatus: string = message.params.data.event;\n if (['channel_accept', 'funding_created'].includes(channelInfoStatus)) {\n changeStatus(channel, {\n channel_accept: 'accepted',\n funding_created: 'halfSigned',\n }[channelInfoStatus as 'channel_accept' | 'funding_created']);\n return { handler: awaitingChannelCreateTx };\n }\n if (message.params.data.event === 'channel_reestablished') {\n return { handler: awaitingOpenConfirmation };\n }\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id);\n return { handler: awaitingConnection };\n }\n return { handler: awaitingConnection };\n }\n if (message.method === 'channels.error') {\n emit(channel, 'error', new ChannelConnectionError(message?.payload?.message));\n return { handler: channelClosed };\n }\n}\n\nexport async function awaitingReconnection(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'fsm_up') {\n fsmId.set(channel, message.params.data.fsm_id);\n changeState(channel, (await call(channel, 'channels.get.offchain_state', {})).signed_tx);\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingChannelCreateTx(\n channel: Channel,\n message: ChannelMessage,\n): Promise<ChannelFsm | undefined> {\n const channelOptions = options.get(channel);\n if (channelOptions != null) {\n const tag = {\n initiator: 'initiator_sign',\n responder: 'responder_sign',\n }[channelOptions.role];\n if (message.method === `channels.sign.${tag}`) {\n if (message.params.data.tx != null) {\n const signedTx = await channelOptions.sign(tag, message.params.data.tx);\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } });\n return { handler: awaitingOnChainTx };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => channelOptions.sign(tag, tx),\n );\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } });\n return { handler: awaitingOnChainTx };\n }\n }\n}\n\nexport function awaitingOnChainTx(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n const channelOptions = options.get(channel);\n if (channelOptions != null) {\n if (message.method === 'channels.on_chain_tx') {\n if (\n message.params.data.info === 'funding_signed'\n && channelOptions.role === 'initiator'\n ) {\n return { handler: awaitingBlockInclusion };\n }\n if (\n message.params.data.info === 'funding_created'\n && channelOptions.role === 'responder'\n ) {\n return { handler: awaitingBlockInclusion };\n }\n }\n if (\n message.method === 'channels.info'\n && message.params.data.event === 'funding_signed'\n && channelOptions.role === 'initiator'\n ) {\n channelId.set(channel, message.params.channel_id);\n changeStatus(channel, 'signed');\n return { handler: awaitingOnChainTx };\n }\n }\n}\n\nexport function awaitingBlockInclusion(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info') {\n const handlers: {\n [key: string]: (channel: Channel, message: ChannelMessage) => ChannelFsm | undefined;\n } = {\n funding_created: awaitingBlockInclusion,\n own_funding_locked: awaitingBlockInclusion,\n funding_locked: awaitingOpenConfirmation,\n };\n const handler = handlers[message.params.data.event as string];\n if (handler != null) {\n return { handler };\n }\n }\n if (message.method === 'channels.on_chain_tx') {\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n return { handler: awaitingBlockInclusion };\n }\n}\n\nexport function awaitingOpenConfirmation(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.info' && message.params.data.event === 'open') {\n channelId.set(channel, message.params.channel_id);\n return { handler: awaitingInitialState };\n }\n}\n\nexport function awaitingInitialState(\n channel: Channel,\n message: ChannelMessage,\n): ChannelFsm | undefined {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n return { handler: channelOpen };\n }\n}\n\nexport async function channelOpen(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n switch (message.method) {\n case 'channels.info':\n switch (message.params.data.event) {\n case 'update':\n case 'withdraw_created':\n case 'deposit_created':\n return { handler: awaitingTxSignRequest };\n case 'own_withdraw_locked':\n case 'withdraw_locked':\n case 'own_deposit_locked':\n case 'deposit_locked':\n case 'peer_disconnected':\n case 'channel_reestablished':\n case 'open':\n // TODO: Better handling of peer_disconnected event.\n //\n // We should enter intermediate state where offchain transactions\n // are blocked until channel is reestablished.\n emit(channel, message.params.data.event);\n return { handler: channelOpen };\n case 'fsm_up':\n fsmId.set(channel, message.params.data.fsm_id);\n return { handler: channelOpen };\n case 'timeout':\n case 'close_mutual':\n return { handler: channelOpen };\n case 'closing':\n changeStatus(channel, 'closing');\n return { handler: channelOpen };\n case 'closed_confirmed':\n changeStatus(channel, 'closed');\n return { handler: channelClosed };\n case 'died':\n changeStatus(channel, 'died');\n return { handler: channelClosed };\n case 'shutdown':\n return { handler: channelOpen };\n }\n break;\n case 'channels.on_chain_tx':\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n return { handler: channelOpen };\n case 'channels.leave':\n // TODO: emit event\n return { handler: channelOpen };\n case 'channels.update':\n changeState(channel, message.params.data.state);\n return { handler: channelOpen };\n case 'channels.sign.shutdown_sign_ack':\n return awaitingTxSignRequest(channel, message, state);\n }\n}\nchannelOpen.enter = (channel: Channel) => {\n changeStatus(channel, 'open');\n};\n\nexport async function awaitingOffChainTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm> {\n if (message.method === 'channels.sign.update') {\n const { sign } = state;\n if (message.params.data.tx != null) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates });\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });\n return { handler: awaitingOffChainUpdate, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });\n return { handler: awaitingOffChainUpdate, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });\n return { handler: awaitingOffChainTx, state };\n }\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message));\n return { handler: channelOpen };\n }\n if (message.error != null) {\n const { data } = message.error ?? { data: [] };\n if (data.find((i) => i.code === 1001) != null) {\n state.reject(new InsufficientBalanceError('Insufficient balance'));\n } else if (data.find((i) => i.code === 1002) != null) {\n state.reject(new IllegalArgumentError('Amount cannot be negative'));\n } else {\n state.reject(new ChannelConnectionError(message.error.message));\n }\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingOffChainUpdate(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm | undefined {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n if (message.error != null) {\n state.reject(new ChannelConnectionError(message.error.message));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingTxSignRequest(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n const [, tag] = message.method.match(/^channels\\.sign\\.([^.]+)$/) ?? [];\n const channelOptions = options.get(channel);\n if (tag != null && (channelOptions != null)) {\n if (message.params.data.tx != null) {\n const signedTx = await channelOptions.sign(tag, message.params.data.tx, {\n updates: message.params.data.updates,\n });\n if (signedTx != null) {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { tx: signedTx } });\n return { handler: channelOpen };\n }\n } else {\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => channelOptions.sign(tag, tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { signed_tx: signedTx } });\n return { handler: channelOpen };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: `channels.${tag}`, params: { error: signedTx } });\n return { handler: awaitingUpdateConflict, state };\n }\n }\n // soft-reject via competing update\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: {\n from: generateKeyPair().publicKey,\n to: generateKeyPair().publicKey,\n amount: 1,\n },\n });\n return { handler: awaitingUpdateConflict, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingUpdateConflict(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.error != null) {\n return { handler: awaitingUpdateConflict, state };\n }\n if (message.method === 'channels.conflict') {\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingShutdownTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.shutdown_sign') {\n if (message.params.data.tx != null) {\n const signedTx = await state.sign(message.params.data.tx);\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { tx: signedTx } });\n return { handler: awaitingShutdownOnChainTx, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx),\n );\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown_sign', params: { signed_tx: signedTx } });\n return { handler: awaitingShutdownOnChainTx, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingShutdownOnChainTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n // state.resolve(message.params.data.tx)\n return { handler: channelClosed, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingLeave(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.leave') {\n state.resolve({ channelId: message.params.channel_id, signedTx: message.params.data.state });\n disconnect(channel);\n return { handler: channelClosed };\n }\n if (message.method === 'channels.error') {\n state.reject(new ChannelConnectionError(message.data.message));\n return { handler: channelOpen };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingWithdrawTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.withdraw_tx') {\n const { sign } = state;\n if (message.params.data.tx != null) {\n const signedTx = await sign(message.params.data.tx, { updates: message.params.data.updates });\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { tx: signedTx } });\n return { handler: awaitingWithdrawCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { signed_tx: signedTx } });\n return { handler: awaitingWithdrawCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw_tx', params: { error: signedTx } });\n return { handler: awaitingWithdrawCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingWithdrawCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n state.onOnChainTx?.(message.params.data.tx);\n return { handler: awaitingWithdrawCompletion, state };\n }\n if (message.method === 'channels.info') {\n if (['own_withdraw_locked', 'withdraw_locked'].includes(message.params.data.event)) {\n const callbacks: {\n [key: string]: Function | undefined;\n } = {\n own_withdraw_locked: state.onOwnWithdrawLocked,\n withdraw_locked: state.onWithdrawLocked,\n };\n callbacks[message.params.data.event]?.();\n return { handler: awaitingWithdrawCompletion, state };\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingDepositTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.deposit_tx') {\n const { sign } = state;\n if (message.params.data.tx != null) {\n const signedTx = await sign(\n message.params.data.tx,\n { updates: message.params.data.updates },\n );\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { tx: signedTx } });\n return { handler: awaitingDepositCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { signed_tx: signedTx } });\n return { handler: awaitingDepositCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit_tx', params: { error: signedTx } });\n return { handler: awaitingDepositCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingDepositCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n state.onOnChainTx?.(message.params.data.tx);\n return { handler: awaitingDepositCompletion, state };\n }\n if (message.method === 'channels.info') {\n if (['own_deposit_locked', 'deposit_locked'].includes(message.params.data.event)) {\n const callbacks: {\n [key: string]: Function | undefined;\n } = {\n own_deposit_locked: state.onOwnDepositLocked,\n deposit_locked: state.onDepositLocked,\n };\n callbacks[message.params.data.event]?.();\n return { handler: awaitingDepositCompletion, state };\n }\n }\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingNewContractTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx != null) {\n const signedTx = await state.sign(message.params.data.tx);\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });\n return { handler: awaitingNewContractCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });\n return { handler: awaitingNewContractCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });\n return { handler: awaitingNewContractCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingNewContractCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n const channelOptions = options.get(channel);\n if (message.method === 'channels.update') {\n const { round } = unpackTx(message.params.data.state, Tag.SignedTx).tx.encodedTx.tx;\n if (channelOptions?.role != null) {\n let role: null | 'initiatorId' | 'responderId' = null;\n if (channelOptions.role === 'initiator') role = 'initiatorId';\n if (channelOptions.role === 'responder') role = 'responderId';\n if (role != null) {\n const owner = channelOptions?.[role];\n changeState(channel, message.params.data.state);\n state.resolve({\n accepted: true,\n address: encodeContractAddress(owner, round),\n signedTx: message.params.data.state,\n });\n return { handler: channelOpen };\n }\n }\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingCallContractUpdateTx(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.update') {\n if (message.params.data.tx != null) {\n const signedTx = await state.sign(\n message.params.data.tx,\n { updates: message.params.data.updates },\n );\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { tx: signedTx } });\n return { handler: awaitingCallContractCompletion, state };\n }\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx, { updates: message.params.data.updates }),\n );\n if (typeof signedTx === 'string') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { signed_tx: signedTx } });\n return { handler: awaitingCallContractCompletion, state };\n }\n if (typeof signedTx === 'number') {\n send(channel, { jsonrpc: '2.0', method: 'channels.update', params: { error: signedTx } });\n return { handler: awaitingCallContractCompletion, state };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport async function awaitingCallContractForceProgressUpdate(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): Promise<ChannelFsm | undefined> {\n if (message.method === 'channels.sign.force_progress_tx') {\n const signedTx = await appendSignature(\n message.params.data.signed_tx,\n async (tx) => state.sign(tx, { updates: message.params.data.updates }),\n );\n send(\n channel,\n { jsonrpc: '2.0', method: 'channels.force_progress_sign', params: { signed_tx: signedTx } },\n );\n return { handler: awaitingForceProgressCompletion, state };\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingForceProgressCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.on_chain_tx') {\n state.onOnChainTx?.(message.params.data.tx);\n emit(channel, 'onChainTx', message.params.data.tx, {\n info: message.params.data.info,\n type: message.params.data.type,\n });\n state.resolve({ accepted: true, tx: message.params.data.tx });\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingCallContractCompletion(\n channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.update') {\n changeState(channel, message.params.data.state);\n state.resolve({ accepted: true, signedTx: message.params.data.state });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.conflict') {\n state.resolve({\n accepted: false,\n errorCode: message.params.data.error_code,\n errorMessage: message.params.data.error_msg,\n });\n return { handler: channelOpen };\n }\n if (message.method === 'channels.info') {\n if (message.params.data.event === 'aborted_update') {\n state.resolve({ accepted: false });\n return { handler: channelOpen };\n }\n }\n return handleUnexpectedMessage(channel, message, state);\n}\n\nexport function awaitingCallsPruned(\n _channels: Channel[],\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (message.method === 'channels.calls_pruned.reply') {\n state.resolve();\n return { handler: channelOpen };\n }\n state.reject(new UnexpectedChannelMessageError('Unexpected message received'));\n return { handler: channelClosed };\n}\n\nexport function channelClosed(\n _channel: Channel,\n message: ChannelMessage,\n state: ChannelState,\n): ChannelFsm {\n if (state == null) return { handler: channelClosed };\n if (message.params.data.event === 'closing') return { handler: channelClosed, state };\n if (message.params.data.info === 'channel_closed') {\n state.closeTx = message.params.data.tx;\n return { handler: channelClosed, state };\n }\n if (message.params.data.event === 'closed_confirmed') {\n state.resolve(state.closeTx);\n return { handler: channelClosed };\n }\n return { handler: channelClosed, state };\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2018 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\nimport BigNumber from 'bignumber.js';\nimport { snakeToPascal } from '../utils/string';\nimport { buildTx, unpackTx } from '../tx/builder';\nimport { MIN_GAS_PRICE, Tag } from '../tx/builder/constants';\nimport * as handlers from './handlers';\nimport {\n eventEmitters,\n status as channelStatus,\n state as channelState,\n initialize,\n enqueueAction,\n send,\n channelId,\n call,\n disconnect as channelDisconnect,\n fsmId as channelFsmId,\n SignTx,\n ChannelOptions,\n ChannelState,\n} from './internal';\nimport { UnknownChannelStateError, ChannelError } from '../utils/errors';\nimport { Encoded } from '../utils/encoder';\nimport { ContractCallReturnType } from '../apis/node';\nimport { pause } from '../utils/other';\n\nfunction snakeToPascalObjKeys<Type>(obj: object): Type {\n return Object.entries(obj).reduce((result, [key, val]) => ({\n ...result,\n [snakeToPascal(key)]: val,\n }), {}) as Type;\n}\n\ntype EventCallback = (...args: any[]) => void;\n\ninterface CallContractOptions {\n amount?: number | BigNumber;\n callData?: Encoded.ContractBytearray;\n abiVersion?: number;\n contract?: Encoded.ContractAddress;\n returnValue?: any;\n gasUsed?: number | BigNumber;\n gasPrice?: number | BigNumber;\n height?: number;\n callerNonce?: number;\n log?: any;\n returnType?: ContractCallReturnType;\n}\n\ninterface Contract {\n abiVersion: number;\n active: boolean;\n deposit: number | BigNumber;\n id: string;\n ownerId: string;\n referrerIds: string[];\n vmVersion: number;\n}\n\n/**\n * Channel\n * @example\n * ```js\n * await Channel.initialize({\n * url: 'ws://localhost:3001',\n * role: 'initiator'\n * initiatorId: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * responderId: 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * initiatorAmount: 1e18,\n * responderAmount: 1e18,\n * pushAmount: 0,\n * channelReserve: 0,\n * ttl: 1000,\n * host: 'localhost',\n * port: 3002,\n * lockPeriod: 10,\n * async sign (tag, tx) => await account.signTransaction(tx)\n * })\n * ```\n */\nexport default class Channel {\n /**\n * @param options - Channel params\n * @param options.url - Channel url (for example: \"ws://localhost:3001\")\n * @param options.role - Participant role (\"initiator\" or \"responder\")\n * @param options.initiatorId - Initiator's public key\n * @param options.responderId - Responder's public key\n * @param options.pushAmount - Initial deposit in favour of the responder by the initiator\n * @param options.initiatorAmount - Amount of coins the initiator has committed to\n * the channel\n * @param options.responderAmount - Amount of coins the responder has committed to\n * the channel\n * @param options.channelReserve - The minimum amount both peers need to maintain\n * @param options.ttl - Minimum block height to include the channel_create_tx\n * @param options.host - Host of the responder's node\n * @param options.port - The port of the responders node\n * @param options.lockPeriod - Amount of blocks for disputing a solo close\n * @param options.existingChannelId - Existing channel id (required if reestablishing a\n * channel)\n * @param options.offchainTx - Offchain transaction (required if reestablishing\n * a channel)\n * @param options.timeoutIdle - The time waiting for a new event to be initiated\n * (default: 600000)\n * @param options.timeoutFundingCreate - The time waiting for the initiator to produce\n * the create channel transaction after the noise session had been established (default: 120000)\n * @param options.timeoutFundingSign - The time frame the other client has to sign an\n * off-chain update after our client had initiated and signed it. This applies only for double\n * signed on-chain intended updates: channel create transaction, deposit, withdrawal and etc.\n * (default: 120000)\n * @param options.timeoutFundingLock - The time frame the other client has to confirm an\n * on-chain transaction reaching maturity (passing minimum depth) after the local node has\n * detected this. This applies only for double signed on-chain intended updates: channel create\n * transaction, deposit, withdrawal and etc. (default: 360000)\n * @param options.timeoutSign - The time frame the client has to return a signed\n * off-chain update or to decline it. This applies for all off-chain updates (default: 500000)\n * @param options.timeoutAccept - The time frame the other client has to react to an\n * event. This applies for all off-chain updates that are not meant to land on-chain, as well as\n * some special cases: opening a noise connection, mutual closing acknowledgement and\n * reestablishing an existing channel (default: 120000)\n * @param options.timeoutInitialized - the time frame the responder has to accept an\n * incoming noise session. Applicable only for initiator (default: timeout_accept's value)\n * @param options.timeoutAwaitingOpen - The time frame the initiator has to start an\n * outgoing noise session to the responder's node. Applicable only for responder (default:\n * timeout_idle's value)\n * @param options.debug=false - Log websocket communication\n * @param options.sign - Function which verifies and signs transactions\n */\n static async initialize(options: ChannelOptions): Promise<Channel> {\n const channel = new Channel();\n await initialize(\n channel,\n options.existingFsmId != null ? handlers.awaitingReconnection : handlers.awaitingConnection,\n handlers.channelOpen,\n options,\n );\n return channel;\n }\n\n /**\n * Register event listener function\n *\n * Possible events:\n *\n * - \"error\"\n * - \"onChainTx\"\n * - \"ownWithdrawLocked\"\n * - \"withdrawLocked\"\n * - \"ownDepositLocked\"\n * - \"depositLocked\"\n *\n * TODO: the event list looks outdated\n *\n * @param eventName - Event name\n * @param callback - Callback function\n */\n // TODO define specific callback type depending on the event name\n on(eventName: string, callback: EventCallback): void {\n const eventEmitter = eventEmitters.get(this);\n if (eventEmitter == null) throw new UnknownChannelStateError();\n eventEmitter.on(eventName, callback);\n }\n\n /**\n * Remove event listener function\n * @param eventName - Event name\n * @param callback - Callback function\n */\n off(eventName: string, callback: EventCallback): void {\n const eventEmitter = eventEmitters.get(this);\n if (eventEmitter == null) throw new UnknownChannelStateError();\n eventEmitter.removeListener(eventName, callback);\n }\n\n /**\n * Close the connection\n */\n disconnect(): void {\n return channelDisconnect(this);\n }\n\n /**\n * Get current status\n *\n */\n status(): string {\n const status = channelStatus.get(this);\n if (status == null) throw new UnknownChannelStateError();\n return status;\n }\n\n /**\n * Get current state\n */\n async state(): Promise<ChannelState> {\n return snakeToPascalObjKeys(await call(this, 'channels.get.offchain_state', {}));\n }\n\n /**\n * Get current round\n *\n * If round cannot be determined (for example when channel has not been opened)\n * it will return `null`.\n *\n */\n round(): number | null {\n const state = channelState.get(this);\n if (state == null) {\n return null;\n }\n const { txType, tx } = unpackTx(state, Tag.SignedTx).tx.encodedTx;\n switch (txType) {\n case Tag.ChannelCreateTx:\n return 1;\n case Tag.ChannelOffChainTx:\n case Tag.ChannelWithdrawTx:\n case Tag.ChannelDepositTx:\n return tx.round;\n default:\n return null;\n }\n }\n\n /**\n * Get channel id\n *\n */\n id(): string {\n const id = channelId.get(this);\n if (id == null) throw new ChannelError('Channel is not initialized');\n return id;\n }\n\n /**\n * Get channel's fsm id\n *\n */\n fsmId(): string {\n const id = channelFsmId.get(this);\n if (id == null) throw new ChannelError('Channel is not initialized');\n return id;\n }\n\n /**\n * Trigger a transfer update\n *\n * The transfer update is moving coins from one channel account to another.\n * The update is a change to be applied on top of the latest state.\n *\n * Sender and receiver are the channel parties. Both the initiator and responder\n * can take those roles. Any public key outside the channel is considered invalid.\n *\n * @param from - Sender's public address\n * @param to - Receiver's public address\n * @param amount - Transaction amount\n * @param sign - Function which verifies and signs offchain transaction\n * @param metadata - Metadata\n\n * @example\n * ```js\n * channel.update(\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E',\n * 10,\n * async (tx) => await account.signTransaction(tx)\n * ).then(({ accepted, signedTx }) =>\n * if (accepted) {\n * console.log('Update has been accepted')\n * }\n * )\n * ```\n */\n async update(\n from: Encoded.AccountAddress,\n to: Encoded.AccountAddress,\n amount: number | BigNumber,\n sign: SignTx,\n metadata: string[] = [],\n ): Promise<{\n accepted: boolean;\n signedTx?: Encoded.Transaction;\n errorCode?: number;\n errorMessage?: string;\n }> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new',\n params: {\n from, to, amount, meta: metadata,\n },\n });\n return {\n handler: handlers.awaitingOffChainTx,\n state: {\n resolve,\n reject,\n sign,\n },\n };\n },\n );\n });\n }\n\n /**\n * Get proof of inclusion\n *\n * If a certain address of an account or a contract is not found\n * in the state tree - the response is an error.\n *\n * @param addresses - Addresses\n * @param addresses.accounts - List of account addresses to include in poi\n * @param addresses.contracts - List of contract addresses to include in poi\n * @example\n * ```js\n * channel.poi({\n * accounts: [\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * ],\n * contracts: ['ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA']\n * }).then(poi => console.log(poi))\n * ```\n */\n async poi(\n { accounts, contracts }: {\n accounts: Encoded.AccountAddress[];\n contracts?: Encoded.ContractAddress[];\n },\n ): Promise<Encoded.Poi> {\n return (await call(this, 'channels.get.poi', { accounts, contracts })).poi;\n }\n\n /**\n * Get balances\n *\n * The accounts param contains a list of addresses to fetch balances of.\n * Those can be either account balances or a contract ones, encoded as an account addresses.\n *\n * If a certain account address had not being found in the state tree - it is simply\n * skipped in the response.\n *\n * @param accounts - List of addresses to fetch balances from\n * @example\n * ```js\n * channel.balances([\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * 'ak_V6an1xhec1xVaAhLuak7QoEbi6t7w5hEtYWp9bMKaJ19i6A9E'\n * 'ct_2dCUAWYZdrWfACz3a2faJeKVTVrfDYxCQHCqAt5zM15f3u2UfA'\n * ]).then(balances =>\n * console.log(balances['ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'])\n * )\n * ```\n */\n async balances(\n accounts: Encoded.AccountAddress[],\n ): Promise<{ [key: Encoded.AccountAddress]: string }> {\n return Object.fromEntries(\n (await call(this, 'channels.get.balances', { accounts }))\n .map((item: {\n account: Encoded.AccountAddress;\n balance: string;\n }) => [item.account, item.balance]),\n );\n }\n\n /**\n * Leave channel\n *\n * It is possible to leave a channel and then later reestablish the channel\n * off-chain state and continue operation. When a leave method is called,\n * the channel fsm passes it on to the peer fsm, reports the current mutually\n * signed state and then terminates.\n *\n * The channel can be reestablished by instantiating another Channel instance\n * with two extra params: existingChannelId and offchainTx (returned from leave\n * method as channelId and signedTx respectively).\n *\n * @example\n * ```js\n * channel.leave().then(({ channelId, signedTx }) => {\n * console.log(channelId)\n * console.log(signedTx)\n * })\n * ```\n */\n async leave(): Promise<{ channelId: string; signedTx: Encoded.Transaction }> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.leave', params: {} });\n return {\n handler: handlers.awaitingLeave,\n state: { resolve, reject },\n };\n },\n );\n });\n }\n\n /**\n * Trigger mutual close\n *\n * At any moment after the channel is opened, a closing procedure can be triggered.\n * This can be done by either of the parties. The process is similar to the off-chain updates.\n *\n * @param sign - Function which verifies and signs mutual close transaction\n * @example\n * ```js\n * channel.shutdown(\n * async (tx) => await account.signTransaction(tx)\n * ).then(tx => console.log('on_chain_tx', tx))\n * ```\n */\n async shutdown(sign: Function): Promise<Encoded.Transaction> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.shutdown', params: {} });\n return {\n handler: handlers.awaitingShutdownTx,\n state: {\n sign,\n resolve,\n reject,\n },\n };\n },\n );\n });\n }\n\n /**\n * Withdraw coins from the channel\n *\n * After the channel had been opened any of the participants can initiate a withdrawal.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_withdraw_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a withdrawal. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The withdrawal amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the withdraw transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnWithdrawLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onWithdrawLocked callback is called (without any arguments).\n *\n * @param amount - Amount of coins to withdraw\n * @param sign - Function which verifies and signs withdraw transaction\n * @param callbacks - Callbacks\n * @param callbacks.onOnChainTx - Called when withdraw transaction has been posted\n * on chain\n * @param callbacks.onOwnWithdrawLocked\n * @param callbacks.onWithdrawLocked\n * @example\n * ```js\n * channel.withdraw(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Withdrawal has been accepted')\n * } else {\n * console.log('Withdrawal has been rejected')\n * }\n * })\n * ```\n */\n async withdraw(\n amount: number | BigNumber,\n sign: SignTx,\n { onOnChainTx, onOwnWithdrawLocked, onWithdrawLocked }:\n Pick<ChannelState, 'onOnChainTx' | 'onOwnWithdrawLocked' | 'onWithdrawLocked'> = {},\n ): Promise<{ accepted: boolean; signedTx: Encoded.Transaction }> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.withdraw', params: { amount } });\n return {\n handler: handlers.awaitingWithdrawTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnWithdrawLocked,\n onWithdrawLocked,\n },\n };\n },\n );\n });\n }\n\n /**\n * Deposit coins into the channel\n *\n * After the channel had been opened any of the participants can initiate a deposit.\n * The process closely resembles the update. The most notable difference is that the\n * transaction has been co-signed: it is channel_deposit_tx and after the procedure\n * is finished - it is being posted on-chain.\n *\n * Any of the participants can initiate a deposit. The only requirements are:\n *\n * - Channel is already opened\n * - No off-chain update/deposit/withdrawal is currently being performed\n * - Channel is not being closed or in a solo closing state\n * - The deposit amount must be equal to or greater than zero, and cannot exceed\n * the available balance on the channel (minus the channel_reserve)\n *\n * After the other party had signed the deposit transaction, the transaction is posted\n * on-chain and onOnChainTx callback is called with on-chain transaction as first argument.\n * After computing transaction hash it can be tracked on the chain: entering the mempool,\n * block inclusion and a number of confirmations.\n *\n * After the minimum_depth block confirmations onOwnDepositLocked callback is called\n * (without any arguments).\n *\n * When the other party had confirmed that the block height needed is reached\n * onDepositLocked callback is called (without any arguments).\n *\n * @param amount - Amount of coins to deposit\n * @param sign - Function which verifies and signs deposit transaction\n * @param callbacks - Callbacks\n * @param callbacks.onOnChainTx - Called when deposit transaction has been posted\n * on chain\n * @param callbacks.onOwnDepositLocked\n * @param callbacks.onDepositLocked\n * @example\n * ```js\n * channel.deposit(\n * 100,\n * async (tx) => await account.signTransaction(tx),\n * { onOnChainTx: (tx) => console.log('on_chain_tx', tx) }\n * ).then(({ accepted, state }) => {\n * if (accepted) {\n * console.log('Deposit has been accepted')\n * console.log('The new state is:', state)\n * } else {\n * console.log('Deposit has been rejected')\n * }\n * })\n * ```\n */\n async deposit(\n amount: number | BigNumber,\n sign: SignTx,\n { onOnChainTx, onOwnDepositLocked, onDepositLocked }:\n Pick<ChannelState, 'onOnChainTx' | 'onOwnDepositLocked' | 'onDepositLocked'> = {},\n ): Promise<{ accepted: boolean; state: ChannelState }> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, { jsonrpc: '2.0', method: 'channels.deposit', params: { amount } });\n return {\n handler: handlers.awaitingDepositTx,\n state: {\n sign,\n resolve,\n reject,\n onOnChainTx,\n onOwnDepositLocked,\n onDepositLocked,\n },\n };\n },\n );\n });\n }\n\n /**\n * Trigger create contract update\n *\n * The create contract update is creating a contract inside the channel's internal state tree.\n * The update is a change to be applied on top of the latest state.\n *\n * That would create a contract with the poster being the owner of it. Poster commits initially\n * a deposit amount of coins to the new contract.\n *\n * @param options - Options\n * @param options.code - Api encoded compiled AEVM byte code\n * @param options.callData - Api encoded compiled AEVM call data for the code\n * @param options.deposit - Initial amount the owner of the contract commits to it\n * @param options.vmVersion - Version of the Virtual Machine\n * @param options.abiVersion - Version of the Application Binary Interface\n * @param sign - Function which verifies and signs create contract transaction\n * @example\n * ```js\n * channel.createContract({\n * code: 'cb_HKtpipK4aCgYb17wZ...',\n * callData: 'cb_1111111111111111...',\n * deposit: 10,\n * vmVersion: 3,\n * abiVersion: 1\n * }).then(({ accepted, signedTx, address }) => {\n * if (accepted) {\n * console.log('New contract has been created')\n * console.log('Contract address:', address)\n * } else {\n * console.log('New contract has been rejected')\n * }\n * })\n * ```\n */\n async createContract(\n {\n code, callData, deposit, vmVersion, abiVersion,\n }: {\n code: Encoded.ContractBytearray;\n callData: Encoded.ContractBytearray;\n deposit: number | BigNumber;\n vmVersion: number;\n abiVersion: number;\n },\n sign: SignTx,\n ): Promise<{\n accepted: boolean; signedTx: Encoded.Transaction; address: Encoded.ContractAddress;\n }> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.new_contract',\n params: {\n code,\n call_data: callData,\n deposit,\n vm_version: vmVersion,\n abi_version: abiVersion,\n },\n });\n return {\n handler: handlers.awaitingNewContractTx,\n state: {\n sign,\n resolve,\n reject,\n },\n };\n },\n );\n });\n }\n\n /**\n * Trigger call a contract update\n *\n * The call contract update is calling a preexisting contract inside the channel's\n * internal state tree. The update is a change to be applied on top of the latest state.\n *\n * That would call a contract with the poster being the caller of it. Poster commits\n * an amount of coins to the contract.\n *\n * The call would also create a call object inside the channel state tree. It contains\n * the result of the contract call.\n *\n * It is worth mentioning that the gas is not consumed, because this is an off-chain\n * contract call. It would be consumed if it were an on-chain one. This could happen\n * if a call with a similar computation amount is to be forced on-chain.\n *\n * @param options - Options\n * @param options.amount - Amount the caller of the contract commits to it\n * @param options.callData - ABI encoded compiled AEVM call data for the code\n * @param options.contract - Address of the contract to call\n * @param options.abiVersion - Version of the ABI\n * @param sign - Function which verifies and signs contract call transaction\n * @example\n * ```js\n * channel.callContract({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract called succesfully')\n * } else {\n * console.log('Contract call has been rejected')\n * }\n * })\n * ```\n */\n async callContract(\n {\n amount, callData, contract, abiVersion,\n }: CallContractOptions,\n sign: SignTx,\n ): Promise<{ accepted: boolean; signedTx: Encoded.Transaction }> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.update.call_contract',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion,\n },\n });\n return {\n handler: handlers.awaitingCallContractUpdateTx,\n state: { resolve, reject, sign },\n };\n },\n );\n });\n }\n\n /**\n * Trigger a force progress contract call\n * This call is going on-chain\n * @param options - Options\n * @param options.amount - Amount the caller of the contract commits to it\n * @param options.callData - ABI encoded compiled AEVM call data for the code\n * @param options.contract - Address of the contract to call\n * @param options.abiVersion - Version of the ABI\n * @param options.gasPrice=1000000000]\n * @param options.gasLimit=1000000]\n * @param sign - Function which verifies and signs contract force progress transaction\n * @param callbacks - Callbacks\n * @example\n * ```js\n * channel.forceProgress({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1,\n * gasPrice: 1000005554\n * }).then(({ accepted, signedTx }) => {\n * if (accepted) {\n * console.log('Contract force progress call successful')\n * } else {\n * console.log('Contract force progress call has been rejected')\n * }\n * })\n * ```\n */\n async forceProgress(\n {\n amount, callData, contract, abiVersion, gasLimit = 1000000, gasPrice = MIN_GAS_PRICE,\n }: {\n amount: number;\n callData: Encoded.ContractBytearray;\n contract: Encoded.ContractAddress;\n abiVersion: number;\n gasLimit?: number;\n gasPrice?: number;\n },\n sign: SignTx,\n { onOnChainTx }: Pick<ChannelState, 'onOnChainTx'> = {},\n ): Promise<{\n accepted: boolean;\n signedTx: Encoded.Transaction;\n tx: Encoded.Transaction | Uint8Array;\n }> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.force_progress',\n params: {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion,\n gas_price: gasPrice,\n gas: gasLimit,\n },\n });\n return {\n handler: handlers.awaitingCallContractForceProgressUpdate,\n state: {\n resolve, reject, sign, onOnChainTx,\n },\n };\n },\n );\n });\n }\n\n /**\n * Call contract using dry-run\n *\n * In order to get the result of a potential contract call, one might need to\n * dry-run a contract call. It takes the exact same arguments as a call would\n * and returns the call object.\n *\n * The call is executed in the channel's state, but it does not impact the state\n * whatsoever. It uses as an environment the latest channel's state and the current\n * top of the blockchain as seen by the node.\n *\n * @param options - Options\n * @param options.amount - Amount the caller of the contract commits to it\n * @param options.callData - ABI encoded compiled AEVM call data for the code\n * @param options.contract - Address of the contract to call\n * @param options.abiVersion - Version of the ABI\n * @example\n * ```js\n * channel.callContractStatic({\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * callData: 'cb_1111111111111111...',\n * amount: 0,\n * abiVersion: 1\n * }).then(({ returnValue, gasUsed }) => {\n * console.log('Returned value:', returnValue)\n * console.log('Gas used:', gasUsed)\n * })\n * ```\n */\n async callContractStatic(\n {\n amount, callData, contract, abiVersion,\n }: {\n amount: number;\n callData: Encoded.ContractBytearray;\n contract: Encoded.ContractAddress;\n abiVersion: number;\n },\n ): Promise<CallContractOptions> {\n return snakeToPascalObjKeys(await call(this, 'channels.dry_run.call_contract', {\n amount,\n call_data: callData,\n contract_id: contract,\n abi_version: abiVersion,\n }));\n }\n\n /**\n * Get contract call result\n *\n * The combination of a caller, contract and a round of execution determines the\n * contract call. Providing an incorrect set of those results in an error response.\n *\n * @param options - Options\n * @param options.caller - Address of contract caller\n * @param options.contract - Address of the contract\n * @param options.round - Round when contract was called\n * @example\n * ```js\n * channel.getContractCall({\n * caller: 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH',\n * contract: 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa',\n * round: 3\n * }).then(({ returnType, returnValue }) => {\n * if (returnType === 'ok') console.log(returnValue)\n * })\n * ```\n */\n async getContractCall(\n { caller, contract, round }: {\n caller: Encoded.AccountAddress;\n contract: Encoded.ContractAddress;\n round: number;\n },\n ): Promise<{\n returnType: ContractCallReturnType;\n returnValue: string;\n gasPrice: number | BigNumber;\n gasUsed: number | BigNumber;\n height: number;\n log: string;\n }> {\n return snakeToPascalObjKeys(\n await call(this, 'channels.get.contract_call', {\n caller_id: caller,\n contract_id: contract,\n round,\n }),\n );\n }\n\n /**\n * Get the latest contract state\n *\n * @param contract - Address of the contract\n * @example\n * ```js\n * channel.getContractState(\n * 'ct_9sRA9AVE4BYTAkh5RNfJYmwQe1NZ4MErasQLXZkFWG43TPBqa'\n * ).then(({ contract }) => {\n * console.log('deposit:', contract.deposit)\n * })\n * ```\n */\n async getContractState(\n contract: Encoded.ContractAddress,\n ): Promise<{ contract: Contract; contractState: object }> {\n const result = await call(this, 'channels.get.contract', { pubkey: contract });\n return snakeToPascalObjKeys({\n ...result,\n contract: snakeToPascalObjKeys(result.contract),\n });\n }\n\n /**\n * Clean up all locally stored contract calls\n *\n * Contract calls are kept locally in order for the participant to be able to look them up.\n * They consume memory and in order for the participant to free it - one can prune all messages.\n * This cleans up all locally stored contract calls and those will no longer be available for\n * fetching and inspection.\n */\n async cleanContractCalls(): Promise<void> {\n return new Promise((resolve, reject) => {\n enqueueAction(\n this,\n (_channel, state) => state?.handler === handlers.channelOpen,\n (channel) => {\n send(channel, {\n jsonrpc: '2.0',\n method: 'channels.clean_contract_calls',\n params: {},\n });\n return {\n handler: handlers.awaitingCallsPruned,\n state: { resolve, reject },\n };\n },\n );\n });\n }\n\n /**\n * Send generic message\n *\n * If message is an object it will be serialized into JSON string\n * before sending.\n *\n * If there is ongoing update that has not yet been finished the message\n * will be sent after that update is finalized.\n *\n * @param message - Message\n * @param recipient - Address of the recipient\n * @example\n * ```js\n * channel.sendMessage(\n * 'hello world',\n * 'ak_Y1NRjHuoc3CGMYMvCmdHSBpJsMDR6Ra2t5zjhRcbtMeXXLpLH'\n * )\n * ```\n */\n async sendMessage(\n message: string | object,\n recipient: Encoded.AccountAddress,\n ): Promise<void> {\n const info = typeof message === 'object' ? JSON.stringify(message) : message;\n if (this.status() === 'connecting') {\n await new Promise<void>((resolve) => {\n const onStatusChanged = (status: string): void => {\n if (status === 'connecting') return;\n resolve();\n this.off('statusChanged', onStatusChanged);\n };\n this.on('statusChanged', onStatusChanged);\n });\n // For some reason we can't immediately send a message when connection is\n // established. Thus we wait 500ms which seems to work.\n await pause(500);\n }\n send(this, {\n jsonrpc: '2.0',\n method: 'channels.message',\n params: { info, to: recipient },\n });\n }\n\n static async reconnect(options: ChannelOptions, txParams: any): Promise<Channel> {\n const { sign } = options;\n\n return Channel.initialize({\n ...options,\n reconnectTx: await sign('reconnect', buildTx(txParams, Tag.ChannelClientReconnectTx).tx),\n });\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport BrowserConnection from './connection/Browser';\n\n/**\n * Browser connection proxy\n * Provide functionality to easily forward messages from one connection to another and back\n * @category aepp wallet communication\n * @param con1 - first connection\n * @param con2 - second connection\n * @returns a function to stop proxying\n */\nexport default (con1: BrowserConnection, con2: BrowserConnection): () => void => {\n con1.connect((msg: any) => con2.sendMessage(msg), () => con2.disconnect());\n con2.connect((msg: any) => con1.sendMessage(msg), () => con1.disconnect());\n\n return () => {\n con1.disconnect();\n con2.disconnect();\n };\n};\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { AlreadyConnectedError, NoWalletConnectedError } from '../../utils/errors';\n\n/**\n * Browser connection base interface\n * @category aepp wallet communication\n */\nexport default abstract class BrowserConnection {\n debug: boolean;\n\n protected constructor({ debug = false }: { debug?: boolean }) {\n this.debug = debug;\n }\n\n /**\n * Connect\n * @param onMessage - Message handler\n * @param onDisconnect - trigger when runtime connection in closed\n */\n connect(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onMessage: (message: any, origin: string, source: any) => void,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onDisconnect: () => void,\n ): void {\n if (this.isConnected()) throw new AlreadyConnectedError('You already connected');\n }\n\n /**\n * Disconnect\n */\n disconnect(): void {\n if (!this.isConnected()) throw new NoWalletConnectedError('You dont have connection. Please connect before');\n }\n\n /**\n * Receive message\n */\n protected receiveMessage(message: any): void {\n if (this.debug) console.log('Receive message:', message);\n }\n\n /**\n * Send message\n */\n sendMessage(message: any): void {\n if (this.debug) console.log('Send message:', message);\n }\n\n /**\n * Check if connected\n * @returns Is connected\n */\n abstract isConnected(): boolean;\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport BrowserConnection from './Browser';\nimport { MESSAGE_DIRECTION } from '../schema';\nimport { InternalError, RpcConnectionError } from '../../utils/errors';\n\nexport type ImplPostMessage = Pick<Window, 'addEventListener' | 'removeEventListener' | 'postMessage'>;\n\n/**\n * Browser window Post Message connector module\n * @category aepp wallet communication\n */\nexport default class BrowserWindowMessageConnection extends BrowserConnection {\n origin?: string;\n\n sendDirection?: MESSAGE_DIRECTION;\n\n receiveDirection: MESSAGE_DIRECTION;\n\n listener?: (this: Window, ev: MessageEvent<any>) => void;\n\n #onDisconnect?: () => void;\n\n #target?: ImplPostMessage;\n\n #self: ImplPostMessage;\n\n /**\n * @param options - Options\n * @param options.target Target window for message\n * @param options.self Host window for message\n * @param options.origin Origin of receiver\n * @param options.sendDirection Wrapping messages into additional struct\n * `({ type: 'to_aepp' || 'to_waellet', data })`\n * Used for handling messages between content script and page\n * @param options.receiveDirection Unwrapping messages from additional struct\n */\n constructor({\n target,\n self = window,\n origin,\n sendDirection,\n receiveDirection = MESSAGE_DIRECTION.to_aepp,\n ...options\n }: {\n target?: ImplPostMessage;\n self?: ImplPostMessage;\n origin?: string;\n sendDirection?: MESSAGE_DIRECTION;\n receiveDirection?: MESSAGE_DIRECTION;\n debug?: boolean;\n } = {}) {\n super(options);\n this.#target = target;\n this.#self = self;\n this.origin = origin;\n this.sendDirection = sendDirection;\n this.receiveDirection = receiveDirection;\n }\n\n isConnected(): boolean {\n return this.listener != null;\n }\n\n connect(\n onMessage: (message: any, origin: string, source: MessageEventSource | null) => void,\n onDisconnect: () => void,\n ): void {\n super.connect(onMessage, onDisconnect);\n this.listener = (message: MessageEvent<any>) => {\n // TODO: strict validate origin and source instead of checking message structure\n if (\n typeof message.data !== 'object'\n || (message.data.jsonrpc ?? message.data.data?.jsonrpc) !== '2.0'\n ) return;\n if (this.origin != null && this.origin !== message.origin) return;\n if (this.#target != null && this.#target !== message.source) return;\n this.receiveMessage(message);\n let { data } = message;\n if (data.type != null) {\n if (message.data.type !== this.receiveDirection) return;\n data = data.data;\n }\n onMessage(data, message.origin, message.source);\n };\n this.#self.addEventListener('message', this.listener);\n this.#onDisconnect = onDisconnect;\n }\n\n disconnect(): void {\n super.disconnect();\n if (this.listener == null || this.#onDisconnect == null) {\n throw new InternalError('Expected to not happen, required for TS');\n }\n this.#self.removeEventListener('message', this.listener);\n delete this.listener;\n this.#onDisconnect();\n this.#onDisconnect = undefined;\n }\n\n sendMessage(msg: any): void {\n if (this.#target == null) throw new RpcConnectionError('Can\\'t send messages without target');\n const message = this.sendDirection != null ? { type: this.sendDirection, data: msg } : msg;\n super.sendMessage(message);\n this.#target.postMessage(message, this.origin ?? '*');\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport BrowserConnection from './connection/Browser';\nimport BrowserWindowMessageConnection from './connection/BrowserWindowMessage';\nimport { MESSAGE_DIRECTION, METHODS } from './schema';\nimport { UnsupportedPlatformError } from '../utils/errors';\n\ninterface Wallet {\n info: {\n id: string;\n type: string;\n origin: string;\n };\n getConnection: () => BrowserWindowMessageConnection;\n}\ninterface Wallets { [key: string]: Wallet }\n\n/**\n * A function to detect available wallets\n * @category aepp wallet communication\n * @param connection - connection to use to detect wallets\n * @param onDetected - call-back function which trigger on new wallet\n * @returns a function to stop scanning\n */\nexport default (\n connection: BrowserConnection,\n onDetected: ({ wallets, newWallet }: { wallets: Wallets; newWallet?: Wallet }) => void,\n): () => void => {\n if (window == null) throw new UnsupportedPlatformError('Window object not found, you can run wallet detector only in browser');\n const wallets: Wallets = {};\n\n connection.connect((\n { method, params }: { method: string; params: Wallet['info'] },\n origin: string,\n source: Window,\n ) => {\n if (method !== METHODS.readyToConnect || wallets[params.id] != null) return;\n\n const wallet = {\n info: params,\n getConnection() {\n const isExtension = params.type === 'extension';\n return new BrowserWindowMessageConnection({\n sendDirection: isExtension ? MESSAGE_DIRECTION.to_waellet : undefined,\n receiveDirection: isExtension ? MESSAGE_DIRECTION.to_aepp : undefined,\n target: source,\n origin: isExtension ? window.origin : params.origin,\n });\n },\n };\n wallets[wallet.info.id] = wallet;\n onDetected({ wallets, newWallet: wallet });\n }, () => {});\n if (Object.keys(wallets).length > 0) onDetected({ wallets });\n\n return () => connection.disconnect();\n};\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nimport { Runtime } from 'webextension-polyfill';\nimport BrowserConnection from './Browser';\n\n/**\n * BrowserRuntimeConnection\n * Handle browser runtime communication\n * @category aepp wallet communication\n */\nexport default class BrowserRuntimeConnection extends BrowserConnection {\n port: Runtime.Port;\n\n constructor({ port, ...options }: { port: Runtime.Port; debug: boolean }) {\n super(options);\n this.port = port;\n }\n\n disconnect(): void {\n super.disconnect();\n this.port.disconnect();\n }\n\n connect(\n onMessage: (message: any, origin: string, source: Runtime.Port) => void,\n onDisconnect: () => void,\n ): void {\n super.connect(onMessage, onDisconnect);\n this.port.onMessage.addListener((message, port) => {\n this.receiveMessage(message);\n onMessage(message, port.name, port);\n });\n this.port.onDisconnect.addListener(onDisconnect);\n }\n\n sendMessage(message: any): void {\n super.sendMessage(message);\n this.port.postMessage(message);\n }\n\n isConnected(): boolean {\n return this.port.onMessage.hasListeners();\n }\n}\n","/*\n * ISC License (ISC)\n * Copyright (c) 2022 aeternity developers\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\nexport * from './chain';\nexport * from './utils/crypto';\nexport * from './utils/keystore';\nexport * from './utils/bytes';\nexport * from './tx';\nexport * from './tx/builder';\nexport * from './tx/builder/helpers';\nexport * from './tx/builder/constants';\nexport * from './tx/builder/schema';\nexport * from './tx/builder/address';\nexport * from './utils/amount-formatter';\nexport * from './utils/hd-wallet';\nexport {\n sha256hash, encode, decode, Encoding,\n} from './utils/encoder';\nexport * from './aens';\nexport * from './contract/methods';\nexport * from './oracle';\nexport * from './spend';\nexport * from './contract/ga';\nexport * from './deprecated';\n\nexport { default as AeSdkBase } from './AeSdkBase';\nexport { default as AeSdk } from './AeSdk';\nexport { default as AeSdkAepp } from './AeSdkAepp';\nexport { default as AeSdkWallet } from './AeSdkWallet';\nexport { default as Node } from './Node';\nexport { default as verifyTransaction } from './tx/validator';\nexport { default as AccountBase } from './account/Base';\nexport { default as MemoryAccount } from './account/Memory';\nexport { default as Compiler } from './contract/Compiler';\nexport { default as Channel } from './channel';\n\nexport { default as connectionProxy } from './aepp-wallet-communication/connection-proxy';\nexport * from './aepp-wallet-communication/schema';\nexport { default as walletDetector } from './aepp-wallet-communication/wallet-detector';\nexport { default as BrowserRuntimeConnection } from './aepp-wallet-communication/connection/BrowserRuntime';\nexport { default as BrowserWindowMessageConnection } from './aepp-wallet-communication/connection/BrowserWindowMessage';\nexport * from './utils/errors';\n"],"names":["BigNumber","isBigNumber","number","isNaN","Number","isInteger","ceil","bigNumber","integerValue","ROUND_CEIL","BaseError","Error","constructor","message","name","AccountError","AensError","AeppError","ChannelError","CompilerError","ContractError","CryptographyError","NodeError","TransactionError","WalletError","ArgumentError","argumentName","requirement","argumentValue","String","IllegalArgumentError","ArgumentCountMismatchError","functionName","requiredCount","providedCount","InsufficientBalanceError","MissingParamError","NoSerializerFoundError","RequestTimedOutError","height","TxTimedOutError","blocks","th","join","TypeError","UnsupportedPlatformError","UnsupportedProtocolError","NotImplementedError","UnsupportedVersionError","dependency","version","geVersion","ltVersion","InternalError","UnexpectedTsError","InvalidKeypairError","UnavailableAccountError","address","AensPointerContextError","nameOrId","prefix","InsufficientNameFeeError","nameFee","minNameFee","toString","InvalidAensNameError","InvalidRpcMessageError","MissingCallbackError","id","UnAuthorizedAccountError","onAccount","UnknownRpcClientError","UnsubscribedAccountError","ChannelCallError","ChannelConnectionError","ChannelPingTimedOutError","UnexpectedChannelMessageError","UnknownChannelStateError","InvalidAuthDataError","BytecodeMismatchError","source","DuplicateContractError","InactiveContractError","contractAddress","InvalidMethodInvocationError","MissingContractAddressError","MissingContractDefError","MissingFunctionNameError","NodeInvocationError","transaction","NoSuchContractFunctionError","NotPayableFunctionError","amount","fn","MissingEventDefinitionError","eventNameHash","eventAddress","AmbiguousEventDefinitionError","matchedEvents","map","InvalidChecksumError","InvalidPasswordError","MerkleTreeHashMismatchError","MissingNodeInTreeError","UnknownNodeLengthError","nodeLength","UnknownPathNibbleError","nibble","DuplicateNodeError","NodeNotFoundError","DecodeError","PayloadLengthError","DryRunError","IllegalBidFeeError","InvalidSignatureError","InvalidTxParamsError","PrefixNotFoundError","tag","SchemaNotFoundError","schemaName","key","TagNotFoundError","TxNotInChainError","txHash","UnknownTxError","UnsupportedABIversionError","UnsupportedVMversionError","AlreadyConnectedError","NoWalletConnectedError","RpcConnectionError","AE_AMOUNT_FORMATS","DENOMINATION_MAGNITUDE","AE","MILI_AE","MICRO_AE","NANO_AE","PICO_AE","FEMTO_AE","AETTOS","formatAmount","value","denomination","targetDenomination","shiftedBy","toFixed","toAe","toAettos","prefixes","magnitude","getNearestPrefix","exponent","reduce","p","n","Math","abs","getLowerBoundPrefix","find","length","rawValue","exp","e","v","precision","min","snakeToPascal","s","replace","match","toUpperCase","pascalToSnake","toLowerCase","isHex","str","test","isBase64","index","indexOf","slice","bigNumberToByteArray","x","hexString","Buffer","from","toBytes","val","big","undefined","str2buf","enc","bytesToHex","b","hexToBytes","pause","duration","Promise","resolve","setTimeout","mapObject","object","Object","fromEntries","entries","isWebpack4Buffer","concat","Uint8Array","error","concatBuffers","list","totalLength","el","isKeyOfObject","isItemOfArray","item","array","Encoding","encode","bs58Encode","decode","bs58Decode","Sha256","Encoded","sha256hash","input","update","digest","base64Types","ContractBytearray","ContractStoreKey","ContractStoreValue","Transaction","OracleQuery","OracleResponse","State","Poi","StateTrees","CallStateTree","Bytearray","base58Types","KeyBlockHash","MicroBlockHash","BlockPofHash","BlockTxHash","BlockStateHash","Channel","ContractAddress","TxHash","OracleAddress","OracleQueryId","AccountAddress","Signature","Commitment","PeerPubkey","Name","byteSizeForType","ensureValidLength","data","type","reqLen","getChecksum","payload","addChecksum","getPayload","buffer","equals","base64","string","base58","parseType","maybeType","base64Type","t","base58Type","encodedPayload","extra","split","encoder","nacl","blake2b","varuintEncode","getAddressFromPriv","secret","secretBuffer","keys","sign","keyPair","fromSecretKey","publicKey","isAddressValid","genSalt","floor","random","MAX_SAFE_INTEGER","encodeUnsigned","binary","allocUnsafe","writeUInt32BE","findIndex","i","hash","encodeContractAddress","owner","nonce","generateKeyPairFromSecret","generateKeyPair","raw","publicBuffer","secretKey","privateKey","detached","verify","signature","publicKeyBuffer","messageToHash","msg","signMessage","verifyMessage","isValidKeypair","NAME_TTL","NAME_MAX_TTL","NAME_MAX_CLIENT_TTL","CLIENT_TTL","MIN_GAS_PRICE","NAME_FEE_MULTIPLIER","NAME_FEE_BID_INCREMENT","NAME_BID_TIMEOUT_BLOCKS","NAME_MAX_LENGTH_FEE","NAME_BID_MAX_LENGTH","NAME_BID_RANGES","times","Tag","idTagToEncoding","writeId","hashId","encoding","idTag","readId","buf","readUIntBE","buildContractId","ownerId","ownerIdAndNonce","b2bHash","oracleQueryId","senderId","oracleId","_int32","nonceBE","alloc","formatSalt","salt","padStart","produceNameId","commitmentHash","writeInt","readInt","buildPointers","pointers","readPointers","AENS_SUFFIX","isNameValid","endsWith","encodingToPointerKey","getDefaultPointerKey","identifier","substring","result","getMinimumNameFee","nameLength","computeBidFee","startFee","increment","plus","computeAuctionEndBlock","claimHeight","h","isAuctionName","serialize","deserialize","uInt","serializeAettos","serializeOptional","options","coinAmount","BASE_GAS","GAS_PER_BYTE","KEY_BLOCK_INTERVAL","TX_FEE_BASE_GAS","txType","feeFactors","ChannelForceProgressTx","ChannelOffChainTx","ChannelOffChainUpdateCallContract","ChannelOffChainUpdateCreateContract","ChannelOffChainUpdateDeposit","ChannelOffChainUpdateWithdraw","ChannelOffChainUpdateTransfer","ContractCreateTx","ContractCallTx","GaAttachTx","GaMetaTx","PayingForTx","factor","TX_FEE_OTHER_GAS","txSize","relativeTtl","innerTxSize","OracleRegisterTx","OracleExtendTx","OracleQueryTx","OracleResponseTx","minus","getOracleRelativeTtl","params","ttlKeys","buildFee","buildTx","rlpEncoded","txObject","tx","encodedTx","calculateMinFee","rebuildTx","fee","previousFee","eq","_value","_computingMinFee","minFee","gt","shortUInt","calculateGasLimitMax","gasMax","dividedBy","_computingGasLimit","gasLimitMax","gasLimit","field","txFields","call","_field","_uInt","_shortUInt","_coinAmount","_deposit","_fee","_gasLimit","_gasPrice","_name","_nameFee","_nameId","deposit","gasPrice","nameId","ORACLE_TTL_TYPES","TX_TTL","QUERY_FEE","ORACLE_TTL","delta","QUERY_TTL","RESPONSE_TTL","AMOUNT","MAX_AUTH_FUN_GAS","DRY_RUN_ACCOUNT","pub","VM_VERSIONS","ABI_VERSIONS","PROTOCOL_VERSIONS","PROTOCOL_VM_ABI","IRIS","vmVersion","FATE_2","abiVersion","FATE","SOPHIA","NO_ABI","FIELD_TYPES","BASE_TX","TX_SCHEMA","Account","SignedTx","signatures","rlpBinary","SpendTx","NamePreclaimTx","NameClaimTx","NameUpdateTx","NameTransferTx","NameRevokeTx","Contract","ctVersion","bool","ids","ContractCall","callReturnType","rawBinary","ttlType","ChannelCreateTx","ChannelCloseMutualTx","ChannelCloseSoloTx","ChannelSlashTx","ChannelDepositTx","ChannelWithdrawTx","ChannelSettleTx","stateTree","hex","ChannelSnapshotSoloTx","callStack","ChannelClientReconnectTx","TreesPoi","mptrees","Mtree","rlpBinaries","MtreeValue","ContractsMtree","CallsMtree","ChannelsMtree","NameserviceMtree","OraclesMtree","AccountsMtree","CompilerSophia","sophiaCodeTypeInfo","rlpEncode","NodeType","MPTree","nodeHash","node","rootHash","nodes","forEach","parseNode","Branch","filter","Extension","isEqual","tree","path","Leaf","mptHash","get","_key","searchFrom","rlpDecode","deserializeField","vm","abi","unpackTx","offChainUpdates","acc","funHash","fnName","argType","outType","serializeField","validateField","Array","isArray","Boolean","some","validateParams","schema","excludeKeys","unpackRawTx","fieldType","assign","_params","vsn","schemas","max","a","VSN","filteredSchema","valid","JSON","stringify","overrideParams","objId","buildTxHash","rawTx","startsWith","buildContractIdByContractTx","contractTx","validators","getSenderAddress","verifyTransaction","parentTxTypes","account","consensusProtocolVersion","nodeNetworkId","all","getAccountByPubkey","catch","balance","then","getCurrentKeyBlockHeight","getNodeInfo","flat","push","txWithNetworkId","txHashWithNetworkId","decodedPub","checkedKeys","ttl","cost","lte","validNonce","protocol","txProtocol","contractId","active","getContract","response","parsedBody","reason","_getPollInterval","_expectedMineRate","_microBlockCycle","_maxPollInterval","base","block","microblock","InvalidTxError","validation","getHeight","onNode","poll","interval","getTransactionByHash","blockHeight","awaitHeight","currentHeight","waitForTxConfirm","confirm","newBlockHeight","sendTransaction","waitMined","__queue","postTransaction","requestOptions","customHeaders","pollResult","txData","c","confirmationHeight","verifyTx","getAccount","getAccountByPubkeyAndHeight","getAccountByPubkeyAndHash","getBalance","format","getCurrentGeneration","getGeneration","hashOrHeight","getGenerationByHeight","getGenerationByHash","getMicroBlockTransactions","getMicroBlockTransactionsByHash","transactions","getKeyBlock","getKeyBlockByHeight","getKeyBlockByHash","getMicroBlockHeader","getMicroBlockHeaderByHash","txDryRunRequests","Map","txDryRunHandler","rs","delete","dryRunRes","protectedDryRunTxs","top","txEvents","txs","req","accounts","Set","accountAddress","pubKey","reject","results","idx","resultPayload","txDryRun","combine","requests","set","timeout","getContractByteCode","getContractCode","getName","getNameEntryByName","resolveName","resolveByNode","pointer","v4","uuid","ArgonType","DERIVED_KEY_FUNCTIONS","argon2id","pass","memlimit_kib","mem","opslimit","time","hashLen","Argon2id","CRYPTO_FUNCTIONS","encrypt","secretbox","decrypt","res","open","CRYPTO_DEFAULTS","secret_type","symmetric_alg","kdf","kdf_params","parallelism","plaintext","algo","ciphertext","deriveKey","password","kdfParams","recover","crypto","cipher_params","dump","randomBytes","opt","derivedKey","public_key","syncBuildTx","getVmVersion","supportedProtocol","protocolForTX","prepareTxParams","absoluteTtl","strategy","getAccountNextNonce","nextNonce","getCurrentKeyBlock","_buildTx","senderKey","extraParams","full","hmac","fromString","aesjs","Ecb","ModeOfOperation","ecb","encryptKey","binaryData","hashedPasswordBytes","aesEcb","decryptKey","encrypted","encryptedBytes","DerivationError","ED25519_CURVE","HARDENED_OFFSET","deriveChild","chainCode","indexBuffer","I","IL","IR","derivePathFromKey","segments","toPathArray","segment","parentKey","getMasterKeyFromSeed","seed","derivePathFromSeed","masterKey","formatAccount","getKeyPair","fromSeed","generateSaveHDWalletFromSeed","walletKey","getSaveHDWalletAccounts","saveHDWallet","accountCount","fill","_","getHdWalletAccountFromSeed","accountIdx","derived","send","authFun","innerTx","signed","signTransaction","networkId","getStatus","spend","recipientIdOrName","recipientId","transferFunds","fraction","bind","desiredAmount","ROUND_HALF_UP","payForTransaction","payerId","aensRevoke","nameRevokeTx","accountId","aensUpdate","extendPointers","allPointers","nameUpdateTx","clientTtl","nameTtl","aensTransfer","nameTransferTx","aensQuery","nameEntry","freeze","transfer","revoke","extendTtl","aensClaim","claimTx","nameSalt","nameInter","aensPreclaim","commitmentId","preclaimTx","claim","opts","aensBid","Encoder","Calldata","calcHash","getContractInstance","onCompiler","bytecode","aci","_aci","fileSystem","validateBytecode","otherOptions","generateACI","code","contract","instance","encodedAci","calldata","externalEncodedAci","deployInfo","callStatic","compile","_options","_estimateGas","deploy","_fn","decodeEvents","_events","methods","onChanBytecode","isValid","validateByteCode","compileContract","handleCallError","returnType","returnValue","decodeFateString","sendAndProcess","callInfo","getTransactionInfoByHash","gasUsed","callData","getFunctionACI","functions","f","payable","fnACI","callerId","txOpt","callObj","dryRunOther","decodedResult","returns","decodedEvents","log","getContractNameByEvent","nameHash","contractAddressToName","addressToName","event","variant","events","eventName","BigInt","omitUnknown","topics","contractName","decoded","decodeEvent","args","arguments","aciArgs","stateful","genHandler","pop","default","delegateSignatureCommon","createAensDelegationSignature","createOracleDelegationSignature","queryId","pollForQueries","onQuery","knownQueryIds","checkNewQueries","queries","getOracleQueriesByPubkey","oracleQueries","has","add","stopped","console","pollForQueryResponse","getOracleQueryByPubkeyAndQueryId","responseBuffer","getQueryObject","record","decodedQuery","query","decodedResponse","respond","respondToQuery","pollForResponse","postQueryToOracle","queryFee","getOracleByPubkey","oracleQueryTx","queryTtlType","queryTtlValue","responseTtlType","responseTtlValue","extendOracleTtl","oracleExtendTx","oracleTtlType","oracleTtlValue","getOracleObject","oracleRespondTx","pollQueries","postQuery","extendOracle","getQuery","handler","lastArg","registerOracle","queryFormat","responseFormat","oracleRegisterTx","isGA","createGeneralizedAccount","authFnName","gaContractId","createMetaTx","rawTransaction","authData","wrapInEmptySignedTx","authCallData","wrappedTx","gaId","metaTxRlp","buildAuthTxHash","signUsingGA","calculateMinFeeInternal","createSalt","GAS_MAX","TX_TYPE","ID_TAG","commitment","oracle","channel","PREFIX_ID_TAG","ak","nm","cm","ok","ct","ch","ID_TAG_PREFIX","POINTER_KEY_BY_PREFIX","semverSatisfies","getComponents","versionComponents","geComponents","ltComponents","componentsToNumber","components","reverse","vNumber","geNumber","ltNumber","RestError","genRequestQueuesPolicy","requestQueues","policy","sendRequest","request","next","headers","getResponse","position","genCombineGetRequestsPolicy","pendingGetRequests","method","url","body","genErrorFormatterPolicy","getMessage","bodyAsText","parse","URL","pathname","genVersionCheckPolicy","ignorePath","versionPromise","Header","className","modelProperties","serializedName","required","prevHash","prevKeyHash","stateHash","miner","beneficiary","target","pow","constraints","MinItems","MaxItems","element","info","pofHash","txsHash","ErrorModel","KeyBlock","HashResponse","HeightResponse","MicroBlockHeader","SignedTxs","blockHash","Tx","uberParent","polymorphicDiscriminator","clientName","initiatorId","initiatorAmount","responderId","responderAmount","channelReserve","lockPeriod","delegateIds","channelId","fromId","round","toId","offchainTrees","initiatorAmountFinal","responderAmountFinal","poi","initiatorDelegateIds","responderDelegateIds","oracleTtl","queryTtl","responseTtl","gas","Pattern","RegExp","allowedValues","Delegates","initiator","responder","OffChainUpdate","op","RelativeTTL","defaultValue","isConstant","Ttl","NamePointer","CountResponse","count","Generation","keyBlock","microBlocks","kind","NextNonceResponse","DryRunInput","DryRunAccount","DryRunInputItem","callReq","DryRunCallReq","caller","context","DryRunCallContext","DryRunResults","DryRunResult","ContractCallObject","callerNonce","Event","TxInfoObject","gaInfo","txInfo","GAObject","innerObject","EncodedTx","PostTxResponse","ContractObject","referrerIds","ByteCode","PoI","RegisteredOracle","OracleQueries","senderNonce","NameEntry","channelAmount","soloRound","lockedUntil","PeerPubKey","pubkey","Status","genesisKeyBlockHash","solutions","difficulty","syncing","syncProgress","InclusiveMaximum","InclusiveMinimum","listening","protocols","nodeVersion","nodeRevision","peerCount","peerConnections","pendingTransactionsCount","peerPubkey","topKeyBlockHash","topBlockHeight","Protocol","effectiveAtHeight","PeerConnections","inbound","outbound","OracleRespondTx","CommitmentId","NameHash","ChannelSetDelegatesTx","PubKey","PeerDetails","host","port","firstSeen","lastSeen","genesisHash","topHash","topDifficulty","nodeVendor","nodeOs","Peers","peers","blocked","PeerCount","connected","available","PeerCountConnected","PeerCountAvailable","verified","unverified","UnsignedTx","TokenSupply","contracts","contractOracles","locked","oracles","pendingRewards","total","GAAttachTx","GAMetaTx","CheckTxInPoolResponse","status","OffChainTransfer","to","OffChainWithdrawal","OffChainDeposit","OffChainNewContract","OffChainCallContract","CreateContractUnsignedTx","discriminators","DryRunInputMapper","EncodedTxMapper","accept","parameterPath","mapper","$host","skipEncoding","intAsString","contentType","body1","fromParam","limit","typeParam","coreClient","coreRestPipeline","Parameters","Mappers","Node","ServiceClient","defaults","requestContentType","packageDetails","userAgentPrefix","userAgentOptions","optionsWithDefaults","baseUri","endpoint","pipeline","getOrderedPolicies","pipelinePolicies","bearerTokenAuthenticationPolicyFound","pipelinePolicy","bearerTokenAuthenticationPolicyName","removePolicy","addPolicy","bearerTokenAuthenticationPolicy","scopes","challengeCallbacks","authorizeRequestOnChallenge","authorizeRequestOnClaimChallenge","getTopHeader","sendOperationRequest","getTopHeaderOperationSpec","getCurrentKeyBlockOperationSpec","getCurrentKeyBlockHash","getCurrentKeyBlockHashOperationSpec","getCurrentKeyBlockHeightOperationSpec","getPendingKeyBlock","getPendingKeyBlockOperationSpec","getKeyBlockByHashOperationSpec","getKeyBlockByHeightOperationSpec","getMicroBlockHeaderByHashOperationSpec","getMicroBlockTransactionsByHashOperationSpec","getMicroBlockTransactionByHashAndIndex","getMicroBlockTransactionByHashAndIndexOperationSpec","getMicroBlockTransactionsCountByHash","getMicroBlockTransactionsCountByHashOperationSpec","getCurrentGenerationOperationSpec","getGenerationByHashOperationSpec","getGenerationByHeightOperationSpec","getAccountByPubkeyOperationSpec","getAccountByPubkeyAndHeightOperationSpec","getAccountByPubkeyAndHashOperationSpec","getPendingAccountTransactionsByPubkey","getPendingAccountTransactionsByPubkeyOperationSpec","getAccountNextNonceOperationSpec","protectedDryRunTxsOperationSpec","getTransactionByHashOperationSpec","getTransactionInfoByHashOperationSpec","postTransactionOperationSpec","getContractOperationSpec","getContractCodeOperationSpec","getContractPoI","getContractPoIOperationSpec","getOracleByPubkeyOperationSpec","getOracleQueriesByPubkeyOperationSpec","getOracleQueryByPubkeyAndQueryIdOperationSpec","getNameEntryByNameOperationSpec","getChannelByPubkey","getChannelByPubkeyOperationSpec","getPeerPubkey","getPeerPubkeyOperationSpec","getStatusOperationSpec","getChainEnds","getChainEndsOperationSpec","serializer","createSerializer","httpMethod","responses","bodyMapper","isError","queryParameters","urlParameters","headerParameters","requestBody","mediaType","NodeApi","getNetworkId","api","bigIntPropertyNames","numberPropertyNames","NodeTransformed","operationArguments","operationSpec","transform","d","k","bigInt","ignoreVersion","allowInsecureConnection","additionalPolicies","verifyMessageCrypto","isAccountBase","AccountBase","rlpBinaryTx","returnHex","sig","secrets","WeakMap","AccountMemory","keypair","isGa","isBuffer","CompileOpts","backend","srcFile","Aci","interface","pos","ErrorPos","col","file","line","APIVersion","apiVersion","ByteCodeInput","CompilerVersion","SophiaCallResultInput","callResult","callValue","function","BytecodeCallResultInput","DecodedCallresult","DecodeCalldataBytecode","DecodedCalldata","DecodeCalldataSource","SophiaBinaryData","sophiaType","SophiaJsonData","FunctionCallInput","FateAssembler","fateAssembler","ValidateByteCodeInput","ContractMapper","ByteCodeInputMapper","SophiaCallResultInputMapper","BytecodeCallResultInputMapper","DecodeCalldataBytecodeMapper","DecodeCalldataSourceMapper","SophiaBinaryDataMapper","FunctionCallInputMapper","ValidateByteCodeInputMapper","body2","body3","body4","body5","body6","body7","body8","Compiler","generateACIOperationSpec","apiOperationSpec","aPIVersion","aPIVersionOperationSpec","compileContractOperationSpec","getCompilerVersion","getCompilerVersionOperationSpec","decodeCallResult","decodeCallResultOperationSpec","decodeCallResultBytecode","decodeCallResultBytecodeOperationSpec","decodeCalldataBytecode","decodeCalldataBytecodeOperationSpec","decodeCalldataSource","decodeCalldataSourceOperationSpec","decodeData","decodeDataOperationSpec","encodeCalldata","encodeCalldataOperationSpec","getFateAssemblerCode","getFateAssemblerCodeOperationSpec","validateByteCodeOperationSpec","versionOperationSpec","CompilerApi","compilerUrl","parameter","trim","chainMethods","txMethods","aensMethods","spendMethods","oracleMethods","contractMethods","contractGaMethods","deprecatedMethods","MemoryAccount","getValueOrErrorProxy","valueCb","Proxy","AeSdkBase","addNode","compilerApi","setCompilerUrl","ensureNodeConnected","pool","selectedNodeName","select","selectNode","isNodeConnected","getNodesInPool","addresses","_resolveAccount","_getOptions","txMethodsOther","_2","chainMethodsOther","prototype","methodWrapper","instanceOptions","AeSdk","selectedAddress","addAccount","selectAccount","removeAccount","warn","MESSAGE_DIRECTION","WALLET_TYPE","SUBSCRIPTION_TYPES","METHODS","RPC_STATUS","rpcErrors","RpcError","toJSON","json","RpcErr","cl","RpcInvalidTransactionError","RpcBroadcastError","RpcRejectedByUserError","RpcUnsupportedProtocolError","RpcConnectionDenyError","RpcNotAuthorizeError","RpcPermissionDenyError","RpcInternalError","RpcMethodNotFoundError","AccountRpc","rpcClient","_rpcClient","_address","returnSigned","signedTransaction","RPC_VERSION","RpcClient","connection","onDisconnect","connect","notify","origin","jsonrpc","methodName","sendMessage","callbacks","AeSdkAepp","onAddressChange","onNetworkChange","other","_ensureAccountAccess","_accounts","current","connectToWallet","connectNode","disconnectParams","client","updateAddress","updateNetwork","closeConnection","disconnect","readyToConnect","walletInfo","disconnectWallet","_ensureConnected","askAddresses","subscribeAddress","JsonBig","jsonBig","storeAsString","convertValuesToBigNumbers","bn","AeSdkWallet","onConnection","onSubscription","onSign","onAskAccounts","onMessageSign","_clients","_type","_pushAccountsToApps","clientId","_isRpcClientSubscribed","_getClient","rpc","getAccounts","_getNode","_isRpcClientConnected","addressSubscription","size","CONNECTED","isConnected","_disconnectRpcClient","DISCONNECTED","removeRpcClient","addRpcClient","clientConnection","WAITING_FOR_CONNECTION_REQUEST","icons","getWalletInfo","subscribe","unsubscribe","subscription","overrides","transactionHash","shareWalletInfo","window","location","w3cwebsocket","W3CWebSocket","EventEmitter","PING_TIMEOUT_MS","PONG_TIMEOUT_MS","state","fsm","websockets","eventEmitters","messageQueue","messageQueueLocked","actionQueue","actionQueueLocked","sequence","rpcCallbacks","pingTimeoutId","pongTimeoutId","fsmId","emit","rest","enterState","nextState","enter","dequeueAction","changeStatus","newStatus","prevStatus","changeState","newState","debug","queue","singleFsm","action","guard","enqueueAction","handleMessage","fsmState","st","dequeueMessage","messages","shift","close","pingTimeoutIdValue","pongTimeoutIdValue","clearTimeout","ping","onMessage","callback","channel_id","currentSequence","details","initialize","connectionHandler","openHandler","channelOptions","wsUrl","searchParams","ws","onerror","onopen","reconnectTx","signedTx","signed_tx","onclose","onmessage","appendSignature","signFn","handleUnexpectedMessage","_channel","wsMessage","channelOpen","awaitingConnection","channelInfoStatus","channel_accept","funding_created","awaitingChannelCreateTx","awaitingOpenConfirmation","fsm_id","channelClosed","awaitingReconnection","role","awaitingOnChainTx","awaitingBlockInclusion","handlers","own_funding_locked","funding_locked","awaitingInitialState","awaitingTxSignRequest","awaitingOffChainTx","updates","awaitingOffChainUpdate","accepted","errorCode","error_code","errorMessage","error_msg","awaitingUpdateConflict","awaitingShutdownTx","awaitingShutdownOnChainTx","awaitingLeave","awaitingWithdrawTx","awaitingWithdrawCompletion","onOnChainTx","own_withdraw_locked","onOwnWithdrawLocked","withdraw_locked","onWithdrawLocked","awaitingDepositTx","awaitingDepositCompletion","own_deposit_locked","onOwnDepositLocked","deposit_locked","onDepositLocked","awaitingNewContractTx","awaitingNewContractCompletion","awaitingCallContractUpdateTx","awaitingCallContractCompletion","awaitingCallContractForceProgressUpdate","awaitingForceProgressCompletion","awaitingCallsPruned","_channels","closeTx","channelStatus","channelState","channelDisconnect","channelFsmId","snakeToPascalObjKeys","obj","existingFsmId","on","eventEmitter","off","removeListener","metadata","meta","balances","leave","shutdown","withdraw","createContract","call_data","vm_version","abi_version","callContract","contract_id","forceProgress","gas_price","callContractStatic","getContractCall","caller_id","getContractState","cleanContractCalls","recipient","onStatusChanged","reconnect","txParams","con1","con2","BrowserConnection","receiveMessage","BrowserWindowMessageConnection","self","sendDirection","receiveDirection","to_aepp","listener","addEventListener","removeEventListener","postMessage","onDetected","wallets","wallet","getConnection","isExtension","to_waellet","newWallet","BrowserRuntimeConnection","addListener","hasListeners","connectionProxy","walletDetector"],"sourceRoot":""}