@aeternity/aepp-sdk 11.0.1 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) 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 +12 -19
  4. package/dist/aepp-sdk.browser-script.js.map +1 -1
  5. package/dist/aepp-sdk.browser.js +1 -1
  6. package/dist/aepp-sdk.browser.js.map +1 -1
  7. package/dist/aepp-sdk.js +1 -1
  8. package/dist/aepp-sdk.js.map +1 -1
  9. package/es/AeSdk.d.ts +37 -0
  10. package/es/AeSdk.mjs +81 -0
  11. package/es/AeSdk.mjs.map +1 -0
  12. package/es/AeSdkAepp.d.ts +69 -0
  13. package/es/AeSdkAepp.mjs +175 -0
  14. package/es/AeSdkAepp.mjs.map +1 -0
  15. package/es/AeSdkBase.d.ts +212 -0
  16. package/es/AeSdkBase.mjs +310 -0
  17. package/es/AeSdkBase.mjs.map +1 -0
  18. package/es/AeSdkWallet.d.ts +103 -0
  19. package/es/AeSdkWallet.mjs +322 -0
  20. package/es/AeSdkWallet.mjs.map +1 -0
  21. package/es/Node.d.ts +44 -0
  22. package/es/Node.mjs +141 -0
  23. package/es/Node.mjs.map +1 -0
  24. package/es/account/Base.d.ts +65 -0
  25. package/es/account/Base.mjs +123 -0
  26. package/es/account/Base.mjs.map +1 -0
  27. package/es/account/Memory.d.ts +25 -0
  28. package/es/account/Memory.mjs +81 -0
  29. package/es/account/Memory.mjs.map +1 -0
  30. package/es/account/Rpc.d.ts +27 -0
  31. package/es/account/Rpc.mjs +79 -0
  32. package/es/account/Rpc.mjs.map +1 -0
  33. package/es/aens.d.ts +209 -0
  34. package/es/aens.mjs +332 -0
  35. package/es/aens.mjs.map +1 -0
  36. package/es/aepp-wallet-communication/connection/Browser.d.ts +32 -0
  37. package/es/aepp-wallet-communication/connection/Browser.mjs +70 -0
  38. package/es/aepp-wallet-communication/connection/Browser.mjs.map +1 -0
  39. package/es/aepp-wallet-communication/connection/BrowserRuntime.d.ts +17 -0
  40. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs +57 -0
  41. package/es/aepp-wallet-communication/connection/BrowserRuntime.mjs.map +1 -0
  42. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.d.ts +35 -0
  43. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs +142 -0
  44. package/es/aepp-wallet-communication/connection/BrowserWindowMessage.mjs.map +1 -0
  45. package/es/aepp-wallet-communication/connection-proxy.d.ts +10 -0
  46. package/{src/utils/crypto-ts.ts → es/aepp-wallet-communication/connection-proxy.mjs} +15 -11
  47. package/es/aepp-wallet-communication/connection-proxy.mjs.map +1 -0
  48. package/es/aepp-wallet-communication/rpc/RpcClient.d.ts +33 -0
  49. package/es/aepp-wallet-communication/rpc/RpcClient.mjs +169 -0
  50. package/es/aepp-wallet-communication/rpc/RpcClient.mjs.map +1 -0
  51. package/es/aepp-wallet-communication/rpc/types.d.ts +77 -0
  52. package/es/aepp-wallet-communication/rpc/types.mjs +3 -0
  53. package/es/aepp-wallet-communication/rpc/types.mjs.map +1 -0
  54. package/es/aepp-wallet-communication/schema.d.ts +90 -46
  55. package/es/aepp-wallet-communication/schema.mjs +214 -0
  56. package/es/aepp-wallet-communication/schema.mjs.map +1 -0
  57. package/es/aepp-wallet-communication/wallet-detector.d.ts +24 -0
  58. package/es/aepp-wallet-communication/wallet-detector.mjs +63 -0
  59. package/es/aepp-wallet-communication/wallet-detector.mjs.map +1 -0
  60. package/es/apis/compiler/compiler.d.ts +92 -0
  61. package/es/apis/compiler/compiler.mjs +576 -0
  62. package/es/apis/compiler/compiler.mjs.map +1 -0
  63. package/es/apis/compiler/index.d.ts +2 -0
  64. package/es/apis/compiler/index.mjs +3 -0
  65. package/es/apis/compiler/index.mjs.map +1 -0
  66. package/es/apis/compiler/models/index.d.ts +248 -0
  67. package/es/apis/compiler/models/index.mjs +48 -0
  68. package/es/apis/compiler/models/index.mjs.map +1 -0
  69. package/es/apis/compiler/models/mappers.d.ts +23 -0
  70. package/es/apis/compiler/models/mappers.mjs +585 -0
  71. package/es/apis/compiler/models/mappers.mjs.map +1 -0
  72. package/es/apis/compiler/models/parameters.d.ts +13 -0
  73. package/es/apis/compiler/models/parameters.mjs +71 -0
  74. package/es/apis/compiler/models/parameters.mjs.map +1 -0
  75. package/es/apis/node/index.d.ts +2 -0
  76. package/es/apis/node/index.mjs +3 -0
  77. package/es/apis/node/index.mjs.map +1 -0
  78. package/es/apis/node/models/index.d.ts +1061 -0
  79. package/es/apis/node/models/index.mjs +2 -0
  80. package/es/apis/node/models/index.mjs.map +1 -0
  81. package/es/apis/node/models/mappers.d.ts +95 -0
  82. package/es/apis/node/models/mappers.mjs +4164 -0
  83. package/es/apis/node/models/mappers.mjs.map +1 -0
  84. package/es/apis/node/models/parameters.d.ts +17 -0
  85. package/es/apis/node/models/parameters.mjs +165 -0
  86. package/es/apis/node/models/parameters.mjs.map +1 -0
  87. package/es/apis/node/node.d.ts +215 -0
  88. package/es/apis/node/node.mjs +1165 -0
  89. package/es/apis/node/node.mjs.map +1 -0
  90. package/es/chain.d.ts +220 -0
  91. package/es/chain.mjs +524 -0
  92. package/es/chain.mjs.map +1 -0
  93. package/es/channel/handlers.d.ts +34 -0
  94. package/es/channel/handlers.mjs +147 -112
  95. package/es/channel/handlers.mjs.map +1 -1
  96. package/es/channel/index.d.ts +634 -0
  97. package/es/channel/index.mjs +898 -900
  98. package/es/channel/index.mjs.map +1 -1
  99. package/es/channel/internal.d.ts +100 -0
  100. package/es/channel/internal.mjs +97 -51
  101. package/es/channel/internal.mjs.map +1 -1
  102. package/es/contract/Compiler.d.ts +17 -0
  103. package/es/contract/Compiler.mjs +67 -0
  104. package/es/contract/Compiler.mjs.map +1 -0
  105. package/es/contract/aci.d.ts +125 -0
  106. package/es/contract/aci.mjs +199 -180
  107. package/es/contract/aci.mjs.map +1 -1
  108. package/es/contract/ga.d.ts +68 -0
  109. package/es/contract/ga.mjs +190 -0
  110. package/es/contract/ga.mjs.map +1 -0
  111. package/es/contract/methods.d.ts +68 -0
  112. package/es/contract/methods.mjs +101 -0
  113. package/es/contract/methods.mjs.map +1 -0
  114. package/es/index.d.ts +32 -0
  115. package/es/index.mjs +32 -40
  116. package/es/index.mjs.map +1 -1
  117. package/es/oracle.d.ts +154 -0
  118. package/es/oracle.mjs +288 -0
  119. package/es/oracle.mjs.map +1 -0
  120. package/es/spend.d.ts +61 -0
  121. package/es/spend.mjs +122 -0
  122. package/es/spend.mjs.map +1 -0
  123. package/es/tx/builder/constants.d.ts +41 -0
  124. package/es/tx/builder/constants.mjs +11 -19
  125. package/es/tx/builder/constants.mjs.map +1 -1
  126. package/es/tx/builder/field-types.d.ts +62 -0
  127. package/es/tx/builder/field-types.mjs +62 -10
  128. package/es/tx/builder/field-types.mjs.map +1 -1
  129. package/es/tx/builder/helpers.d.ts +131 -0
  130. package/es/tx/builder/helpers.mjs +71 -169
  131. package/es/tx/builder/helpers.mjs.map +1 -1
  132. package/es/tx/builder/index.d.ts +75 -0
  133. package/es/tx/builder/index.mjs +141 -323
  134. package/es/tx/builder/index.mjs.map +1 -1
  135. package/es/tx/builder/schema.d.ts +350 -0
  136. package/es/tx/builder/schema.mjs +173 -510
  137. package/es/tx/builder/schema.mjs.map +1 -1
  138. package/es/tx/index.d.ts +63 -0
  139. package/es/tx/index.mjs +171 -265
  140. package/es/tx/index.mjs.map +1 -1
  141. package/es/tx/min-fee.d.ts +20 -0
  142. package/es/tx/min-fee.mjs +148 -0
  143. package/es/tx/min-fee.mjs.map +1 -0
  144. package/es/tx/validator.d.ts +19 -0
  145. package/es/tx/validator.mjs +64 -71
  146. package/es/tx/validator.mjs.map +1 -1
  147. package/es/typings/@aeternity__argon2-browser/index.d.mjs +2 -0
  148. package/es/typings/@aeternity__argon2-browser/index.d.mjs.map +1 -0
  149. package/es/typings/@aeternity__uuid/index.d.mjs +2 -0
  150. package/es/typings/@aeternity__uuid/index.d.mjs.map +1 -0
  151. package/es/typings/bip32-path/index.d.mjs +2 -0
  152. package/es/typings/bip32-path/index.d.mjs.map +1 -0
  153. package/es/typings/blakejs/index.d.mjs.map +1 -1
  154. package/es/typings/tweetnacl-auth/index.d.mjs +2 -0
  155. package/es/typings/tweetnacl-auth/index.d.mjs.map +1 -0
  156. package/es/utils/amount-formatter.d.ts +42 -0
  157. package/es/utils/amount-formatter.mjs +28 -41
  158. package/es/utils/amount-formatter.mjs.map +1 -1
  159. package/es/utils/autorest.d.ts +6 -0
  160. package/es/utils/autorest.mjs +97 -0
  161. package/es/utils/autorest.mjs.map +1 -0
  162. package/es/utils/bignumber.d.ts +13 -0
  163. package/es/utils/bignumber.mjs +10 -8
  164. package/es/utils/bignumber.mjs.map +1 -1
  165. package/es/{bytes.d.ts → utils/bytes.d.ts} +10 -13
  166. package/es/utils/bytes.mjs +10 -14
  167. package/es/utils/bytes.mjs.map +1 -1
  168. package/es/utils/crypto.d.ts +103 -0
  169. package/es/utils/crypto.mjs +60 -68
  170. package/es/utils/crypto.mjs.map +1 -1
  171. package/es/utils/encoder.d.ts +26 -0
  172. package/es/utils/encoder.mjs +47 -51
  173. package/es/utils/encoder.mjs.map +1 -1
  174. package/es/{errors.d.ts → utils/errors.d.ts} +254 -57
  175. package/es/utils/errors.mjs +318 -125
  176. package/es/utils/errors.mjs.map +1 -1
  177. package/es/utils/hd-wallet.d.ts +34 -0
  178. package/es/utils/hd-wallet.mjs +27 -16
  179. package/es/utils/hd-wallet.mjs.map +1 -1
  180. package/es/utils/json-big.d.ts +5 -0
  181. package/es/utils/json-big.mjs +10 -14
  182. package/es/utils/json-big.mjs.map +1 -1
  183. package/es/utils/keystore.d.ts +51 -0
  184. package/es/utils/keystore.mjs +98 -193
  185. package/es/utils/keystore.mjs.map +1 -1
  186. package/es/{mptree.d.ts → utils/mptree.d.ts} +5 -8
  187. package/es/utils/mptree.mjs +13 -14
  188. package/es/utils/mptree.mjs.map +1 -1
  189. package/es/utils/other.d.ts +14 -0
  190. package/es/utils/other.mjs +21 -36
  191. package/es/utils/other.mjs.map +1 -1
  192. package/es/{semver-satisfies.d.ts → utils/semver-satisfies.d.ts} +0 -0
  193. package/es/utils/semver-satisfies.mjs.map +1 -1
  194. package/es/utils/string.d.ts +24 -0
  195. package/es/utils/string.mjs +8 -10
  196. package/es/utils/string.mjs.map +1 -1
  197. package/package.json +49 -39
  198. package/src/AeSdk.ts +65 -0
  199. package/src/AeSdkAepp.ts +167 -0
  200. package/src/AeSdkBase.ts +320 -0
  201. package/src/AeSdkWallet.ts +332 -0
  202. package/src/Node.ts +167 -0
  203. package/src/account/Base.ts +114 -0
  204. package/src/account/Memory.ts +83 -0
  205. package/src/account/Rpc.ts +67 -0
  206. package/src/aens.ts +391 -0
  207. package/src/aepp-wallet-communication/connection/Browser.ts +68 -0
  208. package/src/aepp-wallet-communication/connection/BrowserRuntime.ts +58 -0
  209. package/src/aepp-wallet-communication/connection/BrowserWindowMessage.ts +111 -0
  210. package/{es/utils/crypto-ts.mjs → src/aepp-wallet-communication/connection-proxy.ts} +16 -17
  211. package/src/aepp-wallet-communication/rpc/RpcClient.ts +137 -0
  212. package/src/aepp-wallet-communication/rpc/types.ts +66 -0
  213. package/src/aepp-wallet-communication/schema.ts +181 -0
  214. package/src/aepp-wallet-communication/wallet-detector.ts +71 -0
  215. package/src/apis/compiler/code-model-v4.yaml +2649 -0
  216. package/src/apis/compiler/compiler.ts +585 -0
  217. package/src/apis/compiler/index.ts +2 -0
  218. package/src/apis/compiler/models/index.ts +301 -0
  219. package/src/apis/compiler/models/mappers.ts +583 -0
  220. package/src/apis/compiler/models/parameters.ts +93 -0
  221. package/src/apis/node/code-model-v4.yaml +10046 -0
  222. package/src/apis/node/index.ts +2 -0
  223. package/src/apis/node/models/index.ts +1253 -0
  224. package/src/apis/node/models/mappers.ts +4278 -0
  225. package/src/apis/node/models/parameters.ts +188 -0
  226. package/src/apis/node/node.ts +1299 -0
  227. package/src/chain.ts +444 -0
  228. package/src/channel/{handlers.js → handlers.ts} +220 -128
  229. package/src/channel/index.ts +991 -0
  230. package/src/channel/internal.ts +345 -0
  231. package/src/contract/Compiler.ts +66 -0
  232. package/src/contract/aci.ts +529 -0
  233. package/src/contract/ga.ts +178 -0
  234. package/src/contract/methods.ts +118 -0
  235. package/src/index.ts +51 -0
  236. package/src/oracle.ts +342 -0
  237. package/src/spend.ts +152 -0
  238. package/src/tx/builder/{constants.js → constants.ts} +12 -16
  239. package/src/tx/builder/field-types.ts +111 -0
  240. package/src/tx/builder/helpers.ts +253 -0
  241. package/src/tx/builder/index.ts +394 -0
  242. package/src/tx/builder/schema.ts +771 -0
  243. package/src/tx/index.ts +199 -0
  244. package/src/tx/min-fee.ts +136 -0
  245. package/src/tx/validator.ts +226 -0
  246. package/src/typings/@aeternity__argon2-browser/index.d.ts +3 -0
  247. package/src/typings/@aeternity__uuid/index.d.ts +3 -0
  248. package/src/typings/bip32-path/index.d.ts +33 -0
  249. package/src/typings/tweetnacl-auth/index.d.ts +14 -0
  250. package/src/utils/amount-formatter.ts +29 -42
  251. package/src/utils/autorest.ts +90 -0
  252. package/src/utils/bignumber.ts +9 -11
  253. package/src/utils/bytes.ts +12 -14
  254. package/src/utils/crypto.ts +217 -0
  255. package/src/utils/encoder.ts +52 -55
  256. package/src/utils/errors.ts +268 -134
  257. package/src/utils/hd-wallet.ts +134 -0
  258. package/src/utils/json-big.ts +26 -0
  259. package/src/utils/keystore.ts +179 -0
  260. package/src/utils/mptree.ts +14 -14
  261. package/src/utils/other.ts +28 -43
  262. package/src/utils/string.ts +8 -10
  263. package/es/account/base.mjs +0 -179
  264. package/es/account/base.mjs.map +0 -1
  265. package/es/account/memory.mjs +0 -99
  266. package/es/account/memory.mjs.map +0 -1
  267. package/es/account/multiple.mjs +0 -179
  268. package/es/account/multiple.mjs.map +0 -1
  269. package/es/ae/aens.mjs +0 -404
  270. package/es/ae/aens.mjs.map +0 -1
  271. package/es/ae/aepp.mjs +0 -45
  272. package/es/ae/aepp.mjs.map +0 -1
  273. package/es/ae/contract.mjs +0 -159
  274. package/es/ae/contract.mjs.map +0 -1
  275. package/es/ae/index.mjs +0 -207
  276. package/es/ae/index.mjs.map +0 -1
  277. package/es/ae/oracle.mjs +0 -339
  278. package/es/ae/oracle.mjs.map +0 -1
  279. package/es/ae/universal.mjs +0 -45
  280. package/es/ae/universal.mjs.map +0 -1
  281. package/es/ae/wallet.mjs +0 -50
  282. package/es/ae/wallet.mjs.map +0 -1
  283. package/es/amount-formatter.d.ts +0 -58
  284. package/es/bignumber.d.ts +0 -18
  285. package/es/chain/index.mjs +0 -272
  286. package/es/chain/index.mjs.map +0 -1
  287. package/es/chain/node.mjs +0 -442
  288. package/es/chain/node.mjs.map +0 -1
  289. package/es/contract/compiler.mjs +0 -115
  290. package/es/contract/compiler.mjs.map +0 -1
  291. package/es/contract/ga/helpers.mjs +0 -30
  292. package/es/contract/ga/helpers.mjs.map +0 -1
  293. package/es/contract/ga/index.mjs +0 -178
  294. package/es/contract/ga/index.mjs.map +0 -1
  295. package/es/crypto-ts.d.ts +0 -9
  296. package/es/encoder.d.ts +0 -26
  297. package/es/node-pool/index.mjs +0 -188
  298. package/es/node-pool/index.mjs.map +0 -1
  299. package/es/node.mjs +0 -133
  300. package/es/node.mjs.map +0 -1
  301. package/es/other.d.ts +0 -31
  302. package/es/string.d.ts +0 -26
  303. package/es/tx/tx-object.mjs +0 -283
  304. package/es/tx/tx-object.mjs.map +0 -1
  305. package/es/tx/tx.mjs +0 -938
  306. package/es/tx/tx.mjs.map +0 -1
  307. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs +0 -132
  308. package/es/utils/aepp-wallet-communication/connection/browser-runtime.mjs.map +0 -1
  309. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs +0 -183
  310. package/es/utils/aepp-wallet-communication/connection/browser-window-message.mjs.map +0 -1
  311. package/es/utils/aepp-wallet-communication/connection/index.mjs +0 -87
  312. package/es/utils/aepp-wallet-communication/connection/index.mjs.map +0 -1
  313. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs +0 -98
  314. package/es/utils/aepp-wallet-communication/content-script-bridge.mjs.map +0 -1
  315. package/es/utils/aepp-wallet-communication/helpers.mjs +0 -92
  316. package/es/utils/aepp-wallet-communication/helpers.mjs.map +0 -1
  317. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs +0 -375
  318. package/es/utils/aepp-wallet-communication/rpc/aepp-rpc.mjs.map +0 -1
  319. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs +0 -275
  320. package/es/utils/aepp-wallet-communication/rpc/rpc-client.mjs.map +0 -1
  321. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs +0 -541
  322. package/es/utils/aepp-wallet-communication/rpc/wallet-rpc.mjs.map +0 -1
  323. package/es/utils/aepp-wallet-communication/schema.mjs +0 -102
  324. package/es/utils/aepp-wallet-communication/schema.mjs.map +0 -1
  325. package/es/utils/aepp-wallet-communication/wallet-detector.mjs +0 -110
  326. package/es/utils/aepp-wallet-communication/wallet-detector.mjs.map +0 -1
  327. package/es/utils/async-init.mjs +0 -64
  328. package/es/utils/async-init.mjs.map +0 -1
  329. package/es/utils/crypto-ts.mjs.map +0 -1
  330. package/es/utils/swagger.mjs +0 -164
  331. package/es/utils/swagger.mjs.map +0 -1
  332. package/src/account/base.js +0 -153
  333. package/src/account/memory.js +0 -83
  334. package/src/account/multiple.js +0 -162
  335. package/src/ae/aens.js +0 -361
  336. package/src/ae/aepp.js +0 -45
  337. package/src/ae/contract.js +0 -148
  338. package/src/ae/index.js +0 -168
  339. package/src/ae/oracle.js +0 -311
  340. package/src/ae/universal.js +0 -47
  341. package/src/ae/wallet.js +0 -50
  342. package/src/chain/index.js +0 -269
  343. package/src/chain/node.js +0 -320
  344. package/src/channel/index.js +0 -903
  345. package/src/channel/internal.js +0 -236
  346. package/src/contract/aci.js +0 -376
  347. package/src/contract/compiler.js +0 -100
  348. package/src/contract/ga/helpers.js +0 -19
  349. package/src/contract/ga/index.js +0 -150
  350. package/src/index.js +0 -89
  351. package/src/node-pool/index.js +0 -172
  352. package/src/node.js +0 -116
  353. package/src/tx/builder/field-types.js +0 -61
  354. package/src/tx/builder/helpers.js +0 -334
  355. package/src/tx/builder/index.js +0 -465
  356. package/src/tx/builder/schema.js +0 -1100
  357. package/src/tx/index.js +0 -301
  358. package/src/tx/tx-object.js +0 -187
  359. package/src/tx/tx.js +0 -631
  360. package/src/tx/validator.js +0 -181
  361. package/src/utils/aepp-wallet-communication/connection/browser-runtime.js +0 -119
  362. package/src/utils/aepp-wallet-communication/connection/browser-window-message.js +0 -165
  363. package/src/utils/aepp-wallet-communication/connection/index.js +0 -85
  364. package/src/utils/aepp-wallet-communication/content-script-bridge.js +0 -86
  365. package/src/utils/aepp-wallet-communication/helpers.js +0 -60
  366. package/src/utils/aepp-wallet-communication/rpc/aepp-rpc.js +0 -294
  367. package/src/utils/aepp-wallet-communication/rpc/rpc-client.js +0 -232
  368. package/src/utils/aepp-wallet-communication/rpc/wallet-rpc.js +0 -401
  369. package/src/utils/aepp-wallet-communication/schema.ts +0 -80
  370. package/src/utils/aepp-wallet-communication/wallet-detector.js +0 -92
  371. package/src/utils/async-init.js +0 -45
  372. package/src/utils/crypto.js +0 -219
  373. package/src/utils/hd-wallet.js +0 -100
  374. package/src/utils/json-big.js +0 -26
  375. package/src/utils/keystore.js +0 -219
  376. package/src/utils/swagger.js +0 -156
@@ -0,0 +1,320 @@
1
+ import * as chainMethods from './chain'
2
+ import * as txMethods from './tx'
3
+ import * as aensMethods from './aens'
4
+ import * as spendMethods from './spend'
5
+ import * as oracleMethods from './oracle'
6
+ import * as contractMethods from './contract/methods'
7
+ import * as contractGaMethods from './contract/ga'
8
+ import { _buildTx } from './tx'
9
+ import { mapObject } from './utils/other'
10
+ import Node, { getNetworkId } from './Node'
11
+ import { AE_AMOUNT_FORMATS } from './utils/amount-formatter'
12
+ import { AMOUNT, TX_TYPE } from './tx/builder/schema'
13
+ import MemoryAccount, { Keypair } from './account/Memory'
14
+ import AccountBase, { isAccountBase } from './account/Base'
15
+ import {
16
+ CompilerError,
17
+ DuplicateNodeError,
18
+ NodeNotFoundError,
19
+ NotImplementedError,
20
+ TypeError
21
+ } from './utils/errors'
22
+ import { EncodedData } from './utils/encoder'
23
+ import Compiler from './contract/Compiler'
24
+
25
+ export type Account = Keypair | AccountBase | any
26
+
27
+ type NodeInfo = Awaited<ReturnType<Node['getNodeInfo']>> & { name: string }
28
+
29
+ function getValueOrErrorProxy<Value extends object> (valueCb: () => Value): Value {
30
+ try {
31
+ return valueCb()
32
+ } catch (error) {
33
+ return new Proxy(
34
+ {},
35
+ Object.fromEntries(['get', 'set', 'has'].map(name => [name, () => { throw error }]))
36
+ ) as Value
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Basic AeSdk class
42
+ *
43
+ * AeSdkBase objects are the composition of:
44
+ * - chain methods
45
+ * - tx methods
46
+ * - aens methods
47
+ * - spend methods
48
+ * - oracle methods
49
+ * - contract methods
50
+ * - contract ga methods
51
+ * Only by providing the joint functionality of them, most more advanced
52
+ * operations, i.e. the ones with actual use value on the chain, become
53
+ * available.
54
+ */
55
+ class AeSdkBase {
56
+ _options: {
57
+ denomination: AE_AMOUNT_FORMATS
58
+ amount: number
59
+ [key: string]: any
60
+ } = { denomination: AE_AMOUNT_FORMATS.AETTOS, amount: AMOUNT }
61
+
62
+ pool: Map<string, Node> = new Map()
63
+ selectedNodeName?: string
64
+ compilerApi: Compiler
65
+
66
+ /**
67
+ * @param options - Options
68
+ * @param options.nodes - Array of nodes
69
+ * @param options.compilerUrl - Url for compiler API
70
+ * @param options.ignoreVersion - Don't check node or compiler version
71
+ */
72
+ constructor (
73
+ { nodes = [], compilerUrl, ignoreVersion = false, ...options }:
74
+ {
75
+ nodes?: Array<{ name: string, instance: Node }>
76
+ compilerUrl?: string
77
+ ignoreVersion?: boolean
78
+ [key: string]: any // TODO: consider combining all possible options instead
79
+ } = {}
80
+ ) {
81
+ Object.assign(this._options, options)
82
+
83
+ nodes.forEach(({ name, instance }, i) => this.addNode(name, instance, i === 0))
84
+
85
+ if (compilerUrl == null) {
86
+ this.compilerApi = getValueOrErrorProxy(() => {
87
+ throw new CompilerError('You can\'t use Compiler API. Compiler is not ready!')
88
+ })
89
+ } else this.setCompilerUrl(compilerUrl, { ignoreVersion })
90
+ }
91
+
92
+ setCompilerUrl (
93
+ compilerUrl: string, { ignoreVersion = false }: { ignoreVersion?: boolean } = {}
94
+ ): void {
95
+ this.compilerApi = new Compiler(compilerUrl, { ignoreVersion })
96
+ }
97
+
98
+ get api (): Node {
99
+ this.ensureNodeConnected()
100
+ return this.pool.get(this.selectedNodeName) as Node
101
+ }
102
+
103
+ /**
104
+ * Add Node
105
+ * @param name - Node name
106
+ * @param node - Node instance
107
+ * @param select - Select this node as current
108
+ * @example
109
+ * ```js
110
+ * // add and select new node with name 'testNode'
111
+ * aeSdkBase.addNode('testNode', new Node({ url }), true)
112
+ * ```
113
+ */
114
+ addNode (name: string, node: Node, select = false): void {
115
+ if (this.pool.has(name)) throw new DuplicateNodeError(name)
116
+
117
+ this.pool.set(name, node)
118
+ if (select || this.selectedNodeName == null) {
119
+ this.selectNode(name)
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Select Node
125
+ * @param name - Node name
126
+ * @example
127
+ * nodePool.selectNode('testNode')
128
+ */
129
+ selectNode (name: string): void {
130
+ if (!this.pool.has(name)) throw new NodeNotFoundError(`Node with name ${name} not in pool`)
131
+ this.selectedNodeName = name
132
+ }
133
+
134
+ /**
135
+ * Get NetworkId of current Node
136
+ * @example
137
+ * nodePool.getNetworkId()
138
+ */
139
+ readonly getNetworkId = getNetworkId
140
+
141
+ /**
142
+ * Check if you have selected node
143
+ * @example
144
+ * nodePool.isNodeConnected()
145
+ */
146
+ isNodeConnected (): this is AeSdkBase & { selectedNodeName: string } {
147
+ return this.selectedNodeName != null
148
+ }
149
+
150
+ protected ensureNodeConnected (): asserts this is AeSdkBase & { selectedNodeName: string } {
151
+ if (!this.isNodeConnected()) {
152
+ throw new NodeNotFoundError('You can\'t use Node API. Node is not connected or not defined!')
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Get information about node
158
+ * @example
159
+ * ```js
160
+ * nodePool.getNodeInfo() // { name, version, networkId, protocol, ... }
161
+ * ```
162
+ */
163
+ async getNodeInfo (): Promise<NodeInfo> {
164
+ this.ensureNodeConnected()
165
+ return {
166
+ name: this.selectedNodeName,
167
+ ...await this.api.getNodeInfo()
168
+ }
169
+ }
170
+
171
+ /**
172
+ * Get array of available nodes
173
+ * @example
174
+ * nodePool.getNodesInPool()
175
+ */
176
+ async getNodesInPool (): Promise<NodeInfo[]> {
177
+ return await Promise.all(
178
+ Array.from(this.pool.entries()).map(async ([name, node]) => ({
179
+ name,
180
+ ...await node.getNodeInfo()
181
+ }))
182
+ )
183
+ }
184
+
185
+ addresses (): Array<EncodedData<'ak'>> {
186
+ return []
187
+ }
188
+
189
+ async address ({ onAccount }: { onAccount?: Account } = {}): Promise<EncodedData<'ak'>> {
190
+ return await this._resolveAccount(onAccount).address()
191
+ }
192
+
193
+ async sign (
194
+ data: string | Uint8Array, { onAccount, ...options }: { onAccount?: Account } = {}
195
+ ): Promise<Uint8Array> {
196
+ return await this._resolveAccount(onAccount).sign(data, options)
197
+ }
198
+
199
+ async signTransaction (
200
+ tx: EncodedData<'tx'>,
201
+ { onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['signTransaction']>[1] = {}
202
+ ): Promise<EncodedData<'tx'>> {
203
+ return await this._resolveAccount(onAccount)
204
+ .signTransaction(tx, { ...options, networkId: await this.getNetworkId(options) })
205
+ }
206
+
207
+ async signMessage (
208
+ message: string,
209
+ { onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['signMessage']>[1] = {}
210
+ ): Promise<string | Uint8Array> {
211
+ return await this._resolveAccount(onAccount).signMessage(message, options)
212
+ }
213
+
214
+ async verifyMessage (
215
+ message: string,
216
+ signature: string | Uint8Array,
217
+ { onAccount, ...options }: { onAccount?: Account } & Parameters<AccountBase['verifyMessage']>[2] = {}
218
+ ): Promise<boolean> {
219
+ return await this._resolveAccount(onAccount).verifyMessage(message, signature, options)
220
+ }
221
+
222
+ /**
223
+ * Resolves an account
224
+ * @param account - ak-address, instance of AccountBase, or keypair
225
+ */
226
+ _resolveAccount (account?: Account): AccountBase {
227
+ switch (account !== null && typeof account) {
228
+ case 'string':
229
+ throw new NotImplementedError('Address in AccountResolver')
230
+ case 'object':
231
+ return isAccountBase(account) ? account : new MemoryAccount({ keypair: account })
232
+ default:
233
+ throw new TypeError(
234
+ 'Account should be an address (ak-prefixed string), ' +
235
+ `keypair, or instance of AccountBase, got ${String(account)} instead`)
236
+ }
237
+ }
238
+
239
+ async _getOptions (
240
+ ): Promise<{ onNode: Node, onAccount: AccountBase, onCompiler: Compiler, networkId: string }> {
241
+ return {
242
+ ...this._options,
243
+ onNode: getValueOrErrorProxy(() => this.api),
244
+ onAccount: getValueOrErrorProxy(() => this._resolveAccount()),
245
+ onCompiler: getValueOrErrorProxy(() => this.compilerApi),
246
+ // TODO: remove networkId
247
+ networkId: (await this.api?.getStatus()).networkId
248
+ }
249
+ }
250
+
251
+ async buildTx<TxType extends TX_TYPE> (
252
+ txType: TxType,
253
+ options: Omit<Parameters<typeof _buildTx<TxType>>[1], 'onNode'> & { onNode?: Node }
254
+ ): Promise<EncodedData<'tx'>> {
255
+ // @ts-expect-error
256
+ return await _buildTx<TxType>(txType, {
257
+ ...await this._getOptions(),
258
+ ...options
259
+ })
260
+ }
261
+ }
262
+
263
+ const { _buildTx: _, ...txMethodsOther } = txMethods
264
+
265
+ const methods = {
266
+ ...chainMethods,
267
+ ...txMethodsOther,
268
+ ...aensMethods,
269
+ ...spendMethods,
270
+ ...oracleMethods,
271
+ ...contractMethods,
272
+ ...contractGaMethods
273
+ } as const
274
+
275
+ type RequiredKeys<T> = {
276
+ [K in keyof T]-?: {} extends Pick<T, K> ? never : K
277
+ }[keyof T]
278
+
279
+ type OptionalIfNotRequired<T extends [any]> = RequiredKeys<T[0]> extends never ? T | [] : T
280
+
281
+ type MakeOptional<Args extends any[]> = Args extends [infer Head, ...infer Tail]
282
+ ? Tail extends []
283
+ ? Head extends object
284
+ ? OptionalIfNotRequired<[Omit<Head, 'onNode' | 'onCompiler' | 'onAccount'>
285
+ & { onNode?: Node, onCompiler?: Compiler, onAccount?: AccountBase | EncodedData<'ak'> | Keypair }]>
286
+ : [Head]
287
+ : [Head, ...MakeOptional<Tail>]
288
+ : never
289
+
290
+ type TransformMethods <Methods extends { [key: string]: Function }> =
291
+ {
292
+ [Name in keyof Methods]:
293
+ Methods[Name] extends (...args: infer Args) => infer Ret
294
+ ? (...args: MakeOptional<Args>) => Ret
295
+ : never
296
+ }
297
+
298
+ interface AeSdkBaseMethods extends TransformMethods<typeof methods> {}
299
+
300
+ Object.assign(AeSdkBase.prototype, mapObject<Function, Function>(
301
+ methods,
302
+ ([name, handler]) => [
303
+ name,
304
+ async function (...args: any[]) {
305
+ const instanceOptions = await this._getOptions()
306
+ const lastArg = args[args.length - 1]
307
+ if (lastArg != null && typeof lastArg === 'object' && lastArg.constructor === Object) {
308
+ Object.assign(lastArg, {
309
+ ...instanceOptions,
310
+ ...lastArg,
311
+ ...lastArg.onAccount != null && { onAccount: this._resolveAccount(lastArg.onAccount) }
312
+ })
313
+ } else args.push(instanceOptions)
314
+ return handler(...args)
315
+ }
316
+ ]
317
+ ))
318
+
319
+ export default AeSdkBase as new (options: ConstructorParameters<typeof AeSdkBase>[0]) =>
320
+ AeSdkBase & AeSdkBaseMethods
@@ -0,0 +1,332 @@
1
+ import { v4 as uuid } from '@aeternity/uuid'
2
+ import AeSdk from './AeSdk'
3
+ import { Account } from './AeSdkBase'
4
+ import verifyTransaction from './tx/validator'
5
+ import RpcClient from './aepp-wallet-communication/rpc/RpcClient'
6
+ import {
7
+ METHODS, RPC_STATUS, SUBSCRIPTION_TYPES, WALLET_TYPE,
8
+ RpcBroadcastError, RpcInvalidTransactionError,
9
+ RpcNotAuthorizeError, RpcPermissionDenyError, RpcUnsupportedProtocolError
10
+ } from './aepp-wallet-communication/schema'
11
+ import { UnknownRpcClientError } from './utils/errors'
12
+ import AccountBase from './account/Base'
13
+ import BrowserConnection from './aepp-wallet-communication/connection/Browser'
14
+ import {
15
+ Accounts,
16
+ AeppApi,
17
+ Network,
18
+ RPC_VERSION,
19
+ WalletApi,
20
+ WalletInfo
21
+ } from './aepp-wallet-communication/rpc/types'
22
+ import { EncodedData } from './utils/encoder'
23
+ import jsonBig from './utils/json-big'
24
+
25
+ type RpcClientWallet = RpcClient<AeppApi, WalletApi>
26
+
27
+ type OnConnection = (
28
+ clientId: string, params: Omit<Parameters<WalletApi[METHODS.connect]>[0], 'version'>, origin: string
29
+ ) => void
30
+
31
+ type OnSubscription = (
32
+ clientId: string, params: Parameters<WalletApi[METHODS.subscribeAddress]>[0], origin: string
33
+ ) => void
34
+
35
+ type OnSign = (
36
+ clientId: string, params: Parameters<WalletApi[METHODS.sign]>[0], origin: string
37
+ ) => Promise<{ tx?: EncodedData<'tx'>, onAccount?: Account } | undefined> | Promise<void>
38
+
39
+ type OnDisconnect = (
40
+ clientId: string, params: Parameters<WalletApi[METHODS.closeConnection]>[0]
41
+ ) => void
42
+
43
+ type OnAskAccounts = (
44
+ clientId: string, params: undefined, origin: string
45
+ ) => void
46
+
47
+ type OnMessageSign = (
48
+ clientId: string, params: Parameters<WalletApi[METHODS.signMessage]>[0], origin: string
49
+ ) => Promise<{ onAccount?: Account } | undefined> | Promise<void>
50
+
51
+ interface RpcClientsInfo {
52
+ id: string
53
+ status: RPC_STATUS
54
+ connectNode: boolean
55
+ addressSubscription: Set<'connected' | 'current'>
56
+ rpc: RpcClientWallet
57
+ }
58
+
59
+ /**
60
+ * Contain functionality for aepp interaction and managing multiple aepps
61
+ */
62
+ export default class AeSdkWallet extends AeSdk {
63
+ id: string
64
+ _type: WALLET_TYPE
65
+ name: string
66
+ _clients: Map<string, RpcClientsInfo>
67
+ onConnection: OnConnection
68
+ onSubscription: OnSubscription
69
+ onSign: OnSign
70
+ onDisconnect: OnDisconnect
71
+ onAskAccounts: OnAskAccounts
72
+ onMessageSign: OnMessageSign
73
+
74
+ /**
75
+ * @param options - Options
76
+ * @param options.name - Wallet name
77
+ * @param options.id - Wallet id
78
+ * @param options.type - Wallet type
79
+ * @param options.onConnection - Call-back function for incoming AEPP connection
80
+ * @param options.onSubscription - Call-back function for incoming AEPP account subscription
81
+ * @param options.onSign - Call-back function for incoming AEPP sign request
82
+ * @param options.onAskAccounts - Call-back function for incoming AEPP get address request
83
+ * @param options.onMessageSign - Call-back function for incoming AEPP sign message request
84
+ * @param options.onDisconnect - Call-back function for disconnect event
85
+ */
86
+ constructor ({
87
+ name,
88
+ id,
89
+ type,
90
+ onConnection,
91
+ onSubscription,
92
+ onSign,
93
+ onDisconnect,
94
+ onAskAccounts,
95
+ onMessageSign,
96
+ ...options
97
+ }: {
98
+ id: string
99
+ type: WALLET_TYPE
100
+ name: string
101
+ onConnection: OnConnection
102
+ onSubscription: OnSubscription
103
+ onSign: OnSign
104
+ onDisconnect: OnDisconnect
105
+ onAskAccounts: OnAskAccounts
106
+ onMessageSign: OnMessageSign
107
+ } & ConstructorParameters<typeof AeSdk>[0]) {
108
+ super(options)
109
+ this.onConnection = onConnection
110
+ this.onSubscription = onSubscription
111
+ this.onSign = onSign
112
+ this.onDisconnect = onDisconnect
113
+ this.onAskAccounts = onAskAccounts
114
+ this.onMessageSign = onMessageSign
115
+ this._clients = new Map()
116
+ this.name = name
117
+ this.id = id
118
+ this._type = type
119
+ }
120
+
121
+ _pushAccountsToApps (): void {
122
+ Array.from(this._clients.keys())
123
+ .filter(clientId => this._isRpcClientSubscribed(clientId))
124
+ .map(clientId => this._getClient(clientId).rpc)
125
+ .forEach(client => client.notify(METHODS.updateAddress, this.getAccounts()))
126
+ }
127
+
128
+ selectAccount (address: EncodedData<'ak'>): void {
129
+ super.selectAccount(address)
130
+ this._pushAccountsToApps()
131
+ }
132
+
133
+ async addAccount (
134
+ account: AccountBase,
135
+ options?: Parameters<AeSdk['addAccount']>[1]
136
+ ): Promise<void> {
137
+ await super.addAccount(account, options)
138
+ this._pushAccountsToApps()
139
+ }
140
+
141
+ _getNode (): { node: Network['node'] } {
142
+ this.ensureNodeConnected()
143
+ return { node: { url: this.api.url, name: this.selectedNodeName } }
144
+ }
145
+
146
+ async selectNode (name: string): Promise<void> {
147
+ super.selectNode(name)
148
+ const networkId = await this.getNetworkId()
149
+ Array.from(this._clients.keys())
150
+ .filter(clientId => this._isRpcClientConnected(clientId))
151
+ .map(clientId => this._getClient(clientId))
152
+ .forEach(client => {
153
+ client.rpc.notify(METHODS.updateNetwork, {
154
+ networkId,
155
+ ...client.connectNode && this._getNode()
156
+ })
157
+ })
158
+ }
159
+
160
+ _getClient (clientId: string): RpcClientsInfo {
161
+ const client = this._clients.get(clientId)
162
+ if (client == null) throw new UnknownRpcClientError(clientId)
163
+ return client
164
+ }
165
+
166
+ _isRpcClientSubscribed (clientId: string): boolean {
167
+ return this._isRpcClientConnected(clientId) &&
168
+ this._getClient(clientId).addressSubscription.size !== 0
169
+ }
170
+
171
+ _isRpcClientConnected (clientId: string): boolean {
172
+ return RPC_STATUS.CONNECTED === this._getClient(clientId).status &&
173
+ this._getClient(clientId).rpc.connection.isConnected()
174
+ }
175
+
176
+ _disconnectRpcClient (clientId: string): void {
177
+ const client = this._getClient(clientId)
178
+ client.rpc.connection.disconnect()
179
+ client.status = RPC_STATUS.DISCONNECTED
180
+ client.addressSubscription = new Set()
181
+ }
182
+
183
+ /**
184
+ * Remove specific RpcClient by ID
185
+ * @param id - Client ID
186
+ */
187
+ removeRpcClient (id: string): void {
188
+ this._disconnectRpcClient(id)
189
+ this._clients.delete(id)
190
+ }
191
+
192
+ /**
193
+ * Add new client by AEPP connection
194
+ * @param clientConnection - AEPP connection object
195
+ * @returns Client ID
196
+ */
197
+ addRpcClient (clientConnection: BrowserConnection): string {
198
+ // @TODO detect if aepp has some history based on origin????
199
+ // if yes use this instance for connection
200
+ const id = uuid()
201
+ let disconnectParams: any
202
+ const client: RpcClientsInfo = {
203
+ id,
204
+ status: RPC_STATUS.WAITING_FOR_CONNECTION_REQUEST,
205
+ addressSubscription: new Set(),
206
+ connectNode: false,
207
+ rpc: new RpcClient<AeppApi, WalletApi>(
208
+ clientConnection,
209
+ () => {
210
+ this._clients.delete(id)
211
+ this.onDisconnect(id, disconnectParams) // also related info
212
+ }, {
213
+ [METHODS.closeConnection]: (params) => {
214
+ disconnectParams = params
215
+ this._disconnectRpcClient(id)
216
+ },
217
+ // Store client info and prepare two fn for each client `connect` and `denyConnection`
218
+ // which automatically prepare and send response for that client
219
+ [METHODS.connect]: async ({ name, version, icons, connectNode }, origin) => {
220
+ if (version !== RPC_VERSION) throw new RpcUnsupportedProtocolError()
221
+
222
+ await this.onConnection(id, { name, icons, connectNode }, origin)
223
+ client.status = RPC_STATUS.CONNECTED
224
+ client.connectNode = connectNode
225
+ return {
226
+ ...await this.getWalletInfo(),
227
+ ...connectNode && this._getNode()
228
+ }
229
+ },
230
+ [METHODS.subscribeAddress]: async ({ type, value }, origin) => {
231
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()
232
+
233
+ await this.onSubscription(id, { type, value }, origin)
234
+
235
+ switch (type) {
236
+ case SUBSCRIPTION_TYPES.subscribe:
237
+ client.addressSubscription.add(value)
238
+ break
239
+ case SUBSCRIPTION_TYPES.unsubscribe:
240
+ client.addressSubscription.delete(value)
241
+ break
242
+ }
243
+
244
+ return {
245
+ subscription: Array.from(client.addressSubscription),
246
+ address: this.getAccounts()
247
+ }
248
+ },
249
+ [METHODS.address]: async (params, origin) => {
250
+ if (!this._isRpcClientSubscribed(id)) throw new RpcNotAuthorizeError()
251
+ await this.onAskAccounts(id, params, origin)
252
+ return this.addresses()
253
+ },
254
+ [METHODS.sign]: async ({ tx, onAccount, returnSigned }, origin) => {
255
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()
256
+ onAccount ??= await this.address()
257
+ if (!this.addresses().includes(onAccount)) {
258
+ throw new RpcPermissionDenyError(onAccount)
259
+ }
260
+
261
+ const overrides = await this.onSign(id, { tx, returnSigned, onAccount }, origin)
262
+ onAccount = overrides?.onAccount ?? onAccount
263
+ tx = overrides?.tx ?? tx
264
+ if (returnSigned) {
265
+ return { signedTransaction: await this.signTransaction(tx, { onAccount }) }
266
+ }
267
+ try {
268
+ return jsonBig.parse(jsonBig.stringify({
269
+ transactionHash: await this.send(tx, { onAccount, verify: false })
270
+ }))
271
+ } catch (error) {
272
+ const validation = await verifyTransaction(tx, this.api)
273
+ if (validation.length > 0) throw new RpcInvalidTransactionError(validation)
274
+ throw new RpcBroadcastError(error.message)
275
+ }
276
+ },
277
+ [METHODS.signMessage]: async ({ message, onAccount }, origin) => {
278
+ if (!this._isRpcClientConnected(id)) throw new RpcNotAuthorizeError()
279
+ onAccount ??= await this.address()
280
+ if (!this.addresses().includes(onAccount)) {
281
+ throw new RpcPermissionDenyError(onAccount)
282
+ }
283
+
284
+ const overrides = await this.onMessageSign(id, { message, onAccount }, origin)
285
+ onAccount = overrides?.onAccount ?? onAccount
286
+ return {
287
+ // TODO: fix signMessage return type
288
+ signature: await this.signMessage(message, { onAccount, returnHex: true }) as
289
+ unknown as string
290
+ }
291
+ }
292
+ })
293
+ }
294
+ this._clients.set(id, client)
295
+ return id
296
+ }
297
+
298
+ /**
299
+ * Send shareWalletInfo message to notify AEPP about wallet
300
+ * @param clientId - ID of RPC client send message to
301
+ */
302
+ async shareWalletInfo (clientId: string): Promise<void> {
303
+ this._getClient(clientId).rpc.notify(METHODS.readyToConnect, await this.getWalletInfo())
304
+ }
305
+
306
+ /**
307
+ * Get Wallet info object
308
+ * @returns Object with wallet information
309
+ */
310
+ async getWalletInfo (): Promise<WalletInfo> {
311
+ return {
312
+ id: this.id,
313
+ name: this.name,
314
+ networkId: await this.getNetworkId(),
315
+ origin: window.location.origin,
316
+ type: this._type
317
+ }
318
+ }
319
+
320
+ /**
321
+ * Get Wallet accounts
322
+ * @returns Object with accounts information (\{ connected: Object, current: Object \})
323
+ */
324
+ getAccounts (): Accounts {
325
+ return {
326
+ current: this.selectedAddress != null ? { [this.selectedAddress]: {} } : {},
327
+ connected: this.addresses()
328
+ .filter((a) => a !== this.selectedAddress)
329
+ .reduce((acc, a) => ({ ...acc, [a]: {} }), {})
330
+ }
331
+ }
332
+ }