@subwallet/extension-base 1.0.10-0 → 1.0.11-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 (436) hide show
  1. package/background/KoniTypes.d.ts +6 -0
  2. package/cjs/koni/api/nft/wasm_nft/index.js +4 -1
  3. package/cjs/koni/api/staking/bonding/index.js +3 -0
  4. package/cjs/koni/background/cron.js +4 -29
  5. package/cjs/koni/background/handlers/State.js +74 -23
  6. package/cjs/koni/background/subscription.js +4 -2
  7. package/cjs/packageInfo.js +1 -1
  8. package/cjs/services/chain-service/constants.js +3 -1
  9. package/cjs/services/chain-service/handler/AbstractChainHandler.js +93 -0
  10. package/cjs/services/chain-service/handler/EvmApi.js +131 -0
  11. package/cjs/services/chain-service/handler/EvmChainHandler.js +55 -39
  12. package/cjs/services/chain-service/handler/SubstrateApi.js +212 -0
  13. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +76 -199
  14. package/cjs/services/chain-service/index.js +119 -141
  15. package/cjs/services/event-service/index.js +2 -0
  16. package/cjs/services/history-service/index.js +4 -0
  17. package/cjs/services/migration-service/index.js +0 -3
  18. package/cjs/services/migration-service/scripts/MigrateNetworkSettings.js +1 -1
  19. package/cjs/services/price-service/index.js +4 -1
  20. package/cjs/services/storage-service/DatabaseService.js +6 -1
  21. package/cjs/services/storage-service/databases/index.js +3 -0
  22. package/cjs/services/storage-service/db-stores/Metadata.js +26 -0
  23. package/cjs/services/storage-service/db-stores/index.js +7 -0
  24. package/koni/api/nft/wasm_nft/index.js +4 -1
  25. package/koni/api/staking/bonding/index.js +3 -0
  26. package/koni/background/cron.d.ts +2 -4
  27. package/koni/background/cron.js +5 -30
  28. package/koni/background/handlers/State.d.ts +10 -8
  29. package/koni/background/handlers/State.js +73 -23
  30. package/koni/background/subscription.d.ts +2 -2
  31. package/koni/background/subscription.js +4 -2
  32. package/package.json +33 -668
  33. package/packageInfo.js +1 -1
  34. package/services/chain-service/constants.d.ts +1 -0
  35. package/services/chain-service/constants.js +1 -0
  36. package/services/chain-service/handler/AbstractChainHandler.d.ts +29 -0
  37. package/services/chain-service/handler/AbstractChainHandler.js +83 -0
  38. package/services/chain-service/handler/EvmApi.d.ts +36 -0
  39. package/services/chain-service/handler/EvmApi.js +122 -0
  40. package/services/chain-service/handler/EvmChainHandler.d.ts +15 -9
  41. package/services/chain-service/handler/EvmChainHandler.js +54 -38
  42. package/services/chain-service/handler/SubstrateApi.d.ts +48 -0
  43. package/services/chain-service/handler/SubstrateApi.js +204 -0
  44. package/services/chain-service/handler/SubstrateChainHandler.d.ts +14 -12
  45. package/services/chain-service/handler/SubstrateChainHandler.js +74 -198
  46. package/services/chain-service/handler/types.d.ts +6 -0
  47. package/services/chain-service/index.d.ts +16 -16
  48. package/services/chain-service/index.js +109 -133
  49. package/services/chain-service/types.d.ts +8 -5
  50. package/services/event-service/index.d.ts +2 -0
  51. package/services/event-service/index.js +2 -0
  52. package/services/event-service/types.d.ts +4 -0
  53. package/services/history-service/index.js +4 -0
  54. package/services/migration-service/index.js +0 -3
  55. package/services/migration-service/scripts/MigrateNetworkSettings.js +1 -1
  56. package/services/price-service/index.js +4 -1
  57. package/services/storage-service/DatabaseService.d.ts +5 -2
  58. package/services/storage-service/DatabaseService.js +7 -2
  59. package/services/storage-service/databases/index.d.ts +4 -1
  60. package/services/storage-service/databases/index.js +3 -0
  61. package/services/storage-service/db-stores/Metadata.d.ts +8 -0
  62. package/services/storage-service/db-stores/Metadata.js +18 -0
  63. package/services/storage-service/db-stores/index.d.ts +1 -0
  64. package/services/storage-service/db-stores/index.js +1 -0
  65. package/cjs/services/chain-service/helper/api-helper/chain/crust-maxwell.js +0 -108
  66. package/cjs/services/chain-service/helper/api-helper/chain/index.js +0 -17
  67. package/cjs/services/chain-service/helper/api-helper/index.js +0 -35
  68. package/cjs/services/chain-service/helper/api-helper/spec/acala.js +0 -11
  69. package/cjs/services/chain-service/helper/api-helper/spec/ajuna.js +0 -22
  70. package/cjs/services/chain-service/helper/api-helper/spec/altair.js +0 -31
  71. package/cjs/services/chain-service/helper/api-helper/spec/apron.js +0 -24
  72. package/cjs/services/chain-service/helper/api-helper/spec/ares-gladios.js +0 -191
  73. package/cjs/services/chain-service/helper/api-helper/spec/ares-parachain.js +0 -192
  74. package/cjs/services/chain-service/helper/api-helper/spec/astar.js +0 -44
  75. package/cjs/services/chain-service/helper/api-helper/spec/automata.js +0 -43
  76. package/cjs/services/chain-service/helper/api-helper/spec/basilisk.js +0 -139
  77. package/cjs/services/chain-service/helper/api-helper/spec/beresheet.js +0 -12
  78. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +0 -11
  79. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +0 -11
  80. package/cjs/services/chain-service/helper/api-helper/spec/bifrost.js +0 -11
  81. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +0 -11
  82. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +0 -122
  83. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry.js +0 -84
  84. package/cjs/services/chain-service/helper/api-helper/spec/canvas.js +0 -31
  85. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +0 -77
  86. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge.js +0 -31
  87. package/cjs/services/chain-service/helper/api-helper/spec/chainx.js +0 -403
  88. package/cjs/services/chain-service/helper/api-helper/spec/clover-rococo.js +0 -68
  89. package/cjs/services/chain-service/helper/api-helper/spec/clover.js +0 -34
  90. package/cjs/services/chain-service/helper/api-helper/spec/coinversation.js +0 -24
  91. package/cjs/services/chain-service/helper/api-helper/spec/competitors-club.js +0 -84
  92. package/cjs/services/chain-service/helper/api-helper/spec/crab.js +0 -11
  93. package/cjs/services/chain-service/helper/api-helper/spec/crown-sterling.js +0 -55
  94. package/cjs/services/chain-service/helper/api-helper/spec/crust.js +0 -11
  95. package/cjs/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +0 -24
  96. package/cjs/services/chain-service/helper/api-helper/spec/darwinia.js +0 -11
  97. package/cjs/services/chain-service/helper/api-helper/spec/datahighway.js +0 -240
  98. package/cjs/services/chain-service/helper/api-helper/spec/dock-mainnet.js +0 -16
  99. package/cjs/services/chain-service/helper/api-helper/spec/dock-testnet.js +0 -16
  100. package/cjs/services/chain-service/helper/api-helper/spec/dolphin.js +0 -29
  101. package/cjs/services/chain-service/helper/api-helper/spec/dotmog.js +0 -65
  102. package/cjs/services/chain-service/helper/api-helper/spec/eave.js +0 -416
  103. package/cjs/services/chain-service/helper/api-helper/spec/edgeware.js +0 -11
  104. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +0 -75
  105. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +0 -52
  106. package/cjs/services/chain-service/helper/api-helper/spec/encointer-para.js +0 -79
  107. package/cjs/services/chain-service/helper/api-helper/spec/equilibrium.js +0 -109
  108. package/cjs/services/chain-service/helper/api-helper/spec/fantour.js +0 -70
  109. package/cjs/services/chain-service/helper/api-helper/spec/galital-parachain.js +0 -65
  110. package/cjs/services/chain-service/helper/api-helper/spec/galital.js +0 -70
  111. package/cjs/services/chain-service/helper/api-helper/spec/galois.js +0 -54
  112. package/cjs/services/chain-service/helper/api-helper/spec/gamepower.js +0 -71
  113. package/cjs/services/chain-service/helper/api-helper/spec/genshiro.js +0 -31
  114. package/cjs/services/chain-service/helper/api-helper/spec/hanonycash.js +0 -33
  115. package/cjs/services/chain-service/helper/api-helper/spec/hydrate.js +0 -59
  116. package/cjs/services/chain-service/helper/api-helper/spec/idavoll.js +0 -24
  117. package/cjs/services/chain-service/helper/api-helper/spec/index.js +0 -274
  118. package/cjs/services/chain-service/helper/api-helper/spec/integritee.js +0 -35
  119. package/cjs/services/chain-service/helper/api-helper/spec/interbtc.js +0 -60
  120. package/cjs/services/chain-service/helper/api-helper/spec/ipse.js +0 -113
  121. package/cjs/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +0 -24
  122. package/cjs/services/chain-service/helper/api-helper/spec/jupiter.js +0 -70
  123. package/cjs/services/chain-service/helper/api-helper/spec/khala.js +0 -11
  124. package/cjs/services/chain-service/helper/api-helper/spec/kilt.js +0 -11
  125. package/cjs/services/chain-service/helper/api-helper/spec/konomi.js +0 -24
  126. package/cjs/services/chain-service/helper/api-helper/spec/kpron.js +0 -24
  127. package/cjs/services/chain-service/helper/api-helper/spec/kulupu.js +0 -64
  128. package/cjs/services/chain-service/helper/api-helper/spec/kusari.js +0 -45
  129. package/cjs/services/chain-service/helper/api-helper/spec/kylin.js +0 -36
  130. package/cjs/services/chain-service/helper/api-helper/spec/laminar.js +0 -11
  131. package/cjs/services/chain-service/helper/api-helper/spec/litentry.js +0 -24
  132. package/cjs/services/chain-service/helper/api-helper/spec/mangata.js +0 -20
  133. package/cjs/services/chain-service/helper/api-helper/spec/manta.js +0 -29
  134. package/cjs/services/chain-service/helper/api-helper/spec/mathchain.js +0 -54
  135. package/cjs/services/chain-service/helper/api-helper/spec/moonbeam.js +0 -11
  136. package/cjs/services/chain-service/helper/api-helper/spec/moonsama-development.js +0 -24
  137. package/cjs/services/chain-service/helper/api-helper/spec/mybank.js +0 -87
  138. package/cjs/services/chain-service/helper/api-helper/spec/neatcoin.js +0 -32
  139. package/cjs/services/chain-service/helper/api-helper/spec/neumann.js +0 -55
  140. package/cjs/services/chain-service/helper/api-helper/spec/nftmart.js +0 -134
  141. package/cjs/services/chain-service/helper/api-helper/spec/nodle.js +0 -53
  142. package/cjs/services/chain-service/helper/api-helper/spec/opal.js +0 -15
  143. package/cjs/services/chain-service/helper/api-helper/spec/opportunity.js +0 -12
  144. package/cjs/services/chain-service/helper/api-helper/spec/origintrail.js +0 -206
  145. package/cjs/services/chain-service/helper/api-helper/spec/pangolin.js +0 -11
  146. package/cjs/services/chain-service/helper/api-helper/spec/pangoro.js +0 -12
  147. package/cjs/services/chain-service/helper/api-helper/spec/parallel.js +0 -11
  148. package/cjs/services/chain-service/helper/api-helper/spec/parami.js +0 -21
  149. package/cjs/services/chain-service/helper/api-helper/spec/phoenix.js +0 -52
  150. package/cjs/services/chain-service/helper/api-helper/spec/pichiu.js +0 -36
  151. package/cjs/services/chain-service/helper/api-helper/spec/plasm.js +0 -54
  152. package/cjs/services/chain-service/helper/api-helper/spec/polkadex.js +0 -32
  153. package/cjs/services/chain-service/helper/api-helper/spec/polkafoundry.js +0 -43
  154. package/cjs/services/chain-service/helper/api-helper/spec/polymesh.js +0 -21
  155. package/cjs/services/chain-service/helper/api-helper/spec/pontem.js +0 -11
  156. package/cjs/services/chain-service/helper/api-helper/spec/prism.js +0 -24
  157. package/cjs/services/chain-service/helper/api-helper/spec/quartz.js +0 -15
  158. package/cjs/services/chain-service/helper/api-helper/spec/realis.js +0 -42
  159. package/cjs/services/chain-service/helper/api-helper/spec/riochain.js +0 -104
  160. package/cjs/services/chain-service/helper/api-helper/spec/robonomics.js +0 -41
  161. package/cjs/services/chain-service/helper/api-helper/spec/shibuya.js +0 -54
  162. package/cjs/services/chain-service/helper/api-helper/spec/shiden.js +0 -54
  163. package/cjs/services/chain-service/helper/api-helper/spec/snowbridge.js +0 -11
  164. package/cjs/services/chain-service/helper/api-helper/spec/soraSubstrate.js +0 -11
  165. package/cjs/services/chain-service/helper/api-helper/spec/spanner.js +0 -501
  166. package/cjs/services/chain-service/helper/api-helper/spec/stafi.js +0 -25
  167. package/cjs/services/chain-service/helper/api-helper/spec/standard.js +0 -12
  168. package/cjs/services/chain-service/helper/api-helper/spec/subdao.js +0 -21
  169. package/cjs/services/chain-service/helper/api-helper/spec/subgame.js +0 -185
  170. package/cjs/services/chain-service/helper/api-helper/spec/subsocial.js +0 -15
  171. package/cjs/services/chain-service/helper/api-helper/spec/subspace.js +0 -127
  172. package/cjs/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +0 -23
  173. package/cjs/services/chain-service/helper/api-helper/spec/swapdex.js +0 -45
  174. package/cjs/services/chain-service/helper/api-helper/spec/ternoa.js +0 -95
  175. package/cjs/services/chain-service/helper/api-helper/spec/trustbase.js +0 -24
  176. package/cjs/services/chain-service/helper/api-helper/spec/uart.js +0 -289
  177. package/cjs/services/chain-service/helper/api-helper/spec/unique.js +0 -124
  178. package/cjs/services/chain-service/helper/api-helper/spec/unitv.js +0 -25
  179. package/cjs/services/chain-service/helper/api-helper/spec/vln-rococo.js +0 -109
  180. package/cjs/services/chain-service/helper/api-helper/spec/vln.js +0 -45
  181. package/cjs/services/chain-service/helper/api-helper/spec/vodka.js +0 -22
  182. package/cjs/services/chain-service/helper/api-helper/spec/web3games.js +0 -43
  183. package/cjs/services/chain-service/helper/api-helper/spec/westlake.js +0 -305
  184. package/cjs/services/chain-service/helper/api-helper/spec/zCloak.js +0 -46
  185. package/cjs/services/chain-service/helper/api-helper/spec/zeitgeist.js +0 -33
  186. package/cjs/services/chain-service/helper/api-helper/spec/zenlink.js +0 -57
  187. package/cjs/services/chain-service/helper/api-helper/spec/zero.js +0 -11
  188. package/cjs/services/chain-service/helper/api-helper/util.js +0 -25
  189. package/services/chain-service/helper/api-helper/chain/crust-maxwell.d.ts +0 -98
  190. package/services/chain-service/helper/api-helper/chain/crust-maxwell.js +0 -103
  191. package/services/chain-service/helper/api-helper/chain/index.d.ts +0 -1943
  192. package/services/chain-service/helper/api-helper/chain/index.js +0 -11
  193. package/services/chain-service/helper/api-helper/index.d.ts +0 -7
  194. package/services/chain-service/helper/api-helper/index.js +0 -18
  195. package/services/chain-service/helper/api-helper/spec/acala.d.ts +0 -42
  196. package/services/chain-service/helper/api-helper/spec/acala.js +0 -5
  197. package/services/chain-service/helper/api-helper/spec/ajuna.d.ts +0 -3
  198. package/services/chain-service/helper/api-helper/spec/ajuna.js +0 -15
  199. package/services/chain-service/helper/api-helper/spec/altair.d.ts +0 -3
  200. package/services/chain-service/helper/api-helper/spec/altair.js +0 -24
  201. package/services/chain-service/helper/api-helper/spec/apron.d.ts +0 -3
  202. package/services/chain-service/helper/api-helper/spec/apron.js +0 -17
  203. package/services/chain-service/helper/api-helper/spec/ares-gladios.d.ts +0 -3
  204. package/services/chain-service/helper/api-helper/spec/ares-gladios.js +0 -184
  205. package/services/chain-service/helper/api-helper/spec/ares-parachain.d.ts +0 -3
  206. package/services/chain-service/helper/api-helper/spec/ares-parachain.js +0 -185
  207. package/services/chain-service/helper/api-helper/spec/astar.d.ts +0 -3
  208. package/services/chain-service/helper/api-helper/spec/astar.js +0 -37
  209. package/services/chain-service/helper/api-helper/spec/automata.d.ts +0 -3
  210. package/services/chain-service/helper/api-helper/spec/automata.js +0 -36
  211. package/services/chain-service/helper/api-helper/spec/basilisk.d.ts +0 -3
  212. package/services/chain-service/helper/api-helper/spec/basilisk.js +0 -132
  213. package/services/chain-service/helper/api-helper/spec/beresheet.d.ts +0 -3
  214. package/services/chain-service/helper/api-helper/spec/beresheet.js +0 -9
  215. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.d.ts +0 -3
  216. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +0 -5
  217. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.d.ts +0 -3
  218. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +0 -5
  219. package/services/chain-service/helper/api-helper/spec/bifrost.d.ts +0 -3
  220. package/services/chain-service/helper/api-helper/spec/bifrost.js +0 -5
  221. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.d.ts +0 -2
  222. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +0 -5
  223. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.d.ts +0 -3
  224. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +0 -115
  225. package/services/chain-service/helper/api-helper/spec/bitcountry.d.ts +0 -3
  226. package/services/chain-service/helper/api-helper/spec/bitcountry.js +0 -77
  227. package/services/chain-service/helper/api-helper/spec/canvas.d.ts +0 -3
  228. package/services/chain-service/helper/api-helper/spec/canvas.js +0 -24
  229. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.d.ts +0 -3
  230. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +0 -70
  231. package/services/chain-service/helper/api-helper/spec/centrifuge.d.ts +0 -3
  232. package/services/chain-service/helper/api-helper/spec/centrifuge.js +0 -24
  233. package/services/chain-service/helper/api-helper/spec/chainx.d.ts +0 -3
  234. package/services/chain-service/helper/api-helper/spec/chainx.js +0 -396
  235. package/services/chain-service/helper/api-helper/spec/clover-rococo.d.ts +0 -3
  236. package/services/chain-service/helper/api-helper/spec/clover-rococo.js +0 -61
  237. package/services/chain-service/helper/api-helper/spec/clover.d.ts +0 -3
  238. package/services/chain-service/helper/api-helper/spec/clover.js +0 -27
  239. package/services/chain-service/helper/api-helper/spec/coinversation.d.ts +0 -3
  240. package/services/chain-service/helper/api-helper/spec/coinversation.js +0 -17
  241. package/services/chain-service/helper/api-helper/spec/competitors-club.d.ts +0 -3
  242. package/services/chain-service/helper/api-helper/spec/competitors-club.js +0 -77
  243. package/services/chain-service/helper/api-helper/spec/crab.d.ts +0 -2
  244. package/services/chain-service/helper/api-helper/spec/crab.js +0 -5
  245. package/services/chain-service/helper/api-helper/spec/crown-sterling.d.ts +0 -3
  246. package/services/chain-service/helper/api-helper/spec/crown-sterling.js +0 -48
  247. package/services/chain-service/helper/api-helper/spec/crust.d.ts +0 -3
  248. package/services/chain-service/helper/api-helper/spec/crust.js +0 -5
  249. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.d.ts +0 -3
  250. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +0 -17
  251. package/services/chain-service/helper/api-helper/spec/darwinia.d.ts +0 -2
  252. package/services/chain-service/helper/api-helper/spec/darwinia.js +0 -5
  253. package/services/chain-service/helper/api-helper/spec/datahighway.d.ts +0 -3
  254. package/services/chain-service/helper/api-helper/spec/datahighway.js +0 -233
  255. package/services/chain-service/helper/api-helper/spec/dock-mainnet.d.ts +0 -3
  256. package/services/chain-service/helper/api-helper/spec/dock-mainnet.js +0 -9
  257. package/services/chain-service/helper/api-helper/spec/dock-testnet.d.ts +0 -3
  258. package/services/chain-service/helper/api-helper/spec/dock-testnet.js +0 -9
  259. package/services/chain-service/helper/api-helper/spec/dolphin.d.ts +0 -3
  260. package/services/chain-service/helper/api-helper/spec/dolphin.js +0 -22
  261. package/services/chain-service/helper/api-helper/spec/dotmog.d.ts +0 -3
  262. package/services/chain-service/helper/api-helper/spec/dotmog.js +0 -58
  263. package/services/chain-service/helper/api-helper/spec/eave.d.ts +0 -3
  264. package/services/chain-service/helper/api-helper/spec/eave.js +0 -409
  265. package/services/chain-service/helper/api-helper/spec/edgeware.d.ts +0 -3
  266. package/services/chain-service/helper/api-helper/spec/edgeware.js +0 -7
  267. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.d.ts +0 -3
  268. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +0 -68
  269. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.d.ts +0 -3
  270. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +0 -45
  271. package/services/chain-service/helper/api-helper/spec/encointer-para.d.ts +0 -3
  272. package/services/chain-service/helper/api-helper/spec/encointer-para.js +0 -72
  273. package/services/chain-service/helper/api-helper/spec/equilibrium.d.ts +0 -8
  274. package/services/chain-service/helper/api-helper/spec/equilibrium.js +0 -97
  275. package/services/chain-service/helper/api-helper/spec/fantour.d.ts +0 -3
  276. package/services/chain-service/helper/api-helper/spec/fantour.js +0 -63
  277. package/services/chain-service/helper/api-helper/spec/galital-parachain.d.ts +0 -3
  278. package/services/chain-service/helper/api-helper/spec/galital-parachain.js +0 -58
  279. package/services/chain-service/helper/api-helper/spec/galital.d.ts +0 -3
  280. package/services/chain-service/helper/api-helper/spec/galital.js +0 -63
  281. package/services/chain-service/helper/api-helper/spec/galois.d.ts +0 -3
  282. package/services/chain-service/helper/api-helper/spec/galois.js +0 -47
  283. package/services/chain-service/helper/api-helper/spec/gamepower.d.ts +0 -3
  284. package/services/chain-service/helper/api-helper/spec/gamepower.js +0 -64
  285. package/services/chain-service/helper/api-helper/spec/genshiro.d.ts +0 -3
  286. package/services/chain-service/helper/api-helper/spec/genshiro.js +0 -24
  287. package/services/chain-service/helper/api-helper/spec/hanonycash.d.ts +0 -3
  288. package/services/chain-service/helper/api-helper/spec/hanonycash.js +0 -26
  289. package/services/chain-service/helper/api-helper/spec/hydrate.d.ts +0 -3
  290. package/services/chain-service/helper/api-helper/spec/hydrate.js +0 -52
  291. package/services/chain-service/helper/api-helper/spec/idavoll.d.ts +0 -3
  292. package/services/chain-service/helper/api-helper/spec/idavoll.js +0 -17
  293. package/services/chain-service/helper/api-helper/spec/index.d.ts +0 -3
  294. package/services/chain-service/helper/api-helper/spec/index.js +0 -266
  295. package/services/chain-service/helper/api-helper/spec/integritee.d.ts +0 -3
  296. package/services/chain-service/helper/api-helper/spec/integritee.js +0 -28
  297. package/services/chain-service/helper/api-helper/spec/interbtc.d.ts +0 -7
  298. package/services/chain-service/helper/api-helper/spec/interbtc.js +0 -50
  299. package/services/chain-service/helper/api-helper/spec/ipse.d.ts +0 -3
  300. package/services/chain-service/helper/api-helper/spec/ipse.js +0 -106
  301. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.d.ts +0 -3
  302. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +0 -17
  303. package/services/chain-service/helper/api-helper/spec/jupiter.d.ts +0 -3
  304. package/services/chain-service/helper/api-helper/spec/jupiter.js +0 -63
  305. package/services/chain-service/helper/api-helper/spec/khala.d.ts +0 -3
  306. package/services/chain-service/helper/api-helper/spec/khala.js +0 -5
  307. package/services/chain-service/helper/api-helper/spec/kilt.d.ts +0 -3
  308. package/services/chain-service/helper/api-helper/spec/kilt.js +0 -5
  309. package/services/chain-service/helper/api-helper/spec/konomi.d.ts +0 -3
  310. package/services/chain-service/helper/api-helper/spec/konomi.js +0 -17
  311. package/services/chain-service/helper/api-helper/spec/kpron.d.ts +0 -3
  312. package/services/chain-service/helper/api-helper/spec/kpron.js +0 -17
  313. package/services/chain-service/helper/api-helper/spec/kulupu.d.ts +0 -3
  314. package/services/chain-service/helper/api-helper/spec/kulupu.js +0 -57
  315. package/services/chain-service/helper/api-helper/spec/kusari.d.ts +0 -3
  316. package/services/chain-service/helper/api-helper/spec/kusari.js +0 -38
  317. package/services/chain-service/helper/api-helper/spec/kylin.d.ts +0 -3
  318. package/services/chain-service/helper/api-helper/spec/kylin.js +0 -29
  319. package/services/chain-service/helper/api-helper/spec/laminar.d.ts +0 -3
  320. package/services/chain-service/helper/api-helper/spec/laminar.js +0 -5
  321. package/services/chain-service/helper/api-helper/spec/litentry.d.ts +0 -3
  322. package/services/chain-service/helper/api-helper/spec/litentry.js +0 -17
  323. package/services/chain-service/helper/api-helper/spec/mangata.d.ts +0 -3
  324. package/services/chain-service/helper/api-helper/spec/mangata.js +0 -13
  325. package/services/chain-service/helper/api-helper/spec/manta.d.ts +0 -3
  326. package/services/chain-service/helper/api-helper/spec/manta.js +0 -22
  327. package/services/chain-service/helper/api-helper/spec/mathchain.d.ts +0 -3
  328. package/services/chain-service/helper/api-helper/spec/mathchain.js +0 -47
  329. package/services/chain-service/helper/api-helper/spec/moonbeam.d.ts +0 -2
  330. package/services/chain-service/helper/api-helper/spec/moonbeam.js +0 -5
  331. package/services/chain-service/helper/api-helper/spec/moonsama-development.d.ts +0 -3
  332. package/services/chain-service/helper/api-helper/spec/moonsama-development.js +0 -17
  333. package/services/chain-service/helper/api-helper/spec/mybank.d.ts +0 -3
  334. package/services/chain-service/helper/api-helper/spec/mybank.js +0 -80
  335. package/services/chain-service/helper/api-helper/spec/neatcoin.d.ts +0 -3
  336. package/services/chain-service/helper/api-helper/spec/neatcoin.js +0 -25
  337. package/services/chain-service/helper/api-helper/spec/neumann.d.ts +0 -3
  338. package/services/chain-service/helper/api-helper/spec/neumann.js +0 -48
  339. package/services/chain-service/helper/api-helper/spec/nftmart.d.ts +0 -3
  340. package/services/chain-service/helper/api-helper/spec/nftmart.js +0 -127
  341. package/services/chain-service/helper/api-helper/spec/nodle.d.ts +0 -3
  342. package/services/chain-service/helper/api-helper/spec/nodle.js +0 -46
  343. package/services/chain-service/helper/api-helper/spec/opal.d.ts +0 -3
  344. package/services/chain-service/helper/api-helper/spec/opal.js +0 -9
  345. package/services/chain-service/helper/api-helper/spec/opportunity.d.ts +0 -3
  346. package/services/chain-service/helper/api-helper/spec/opportunity.js +0 -5
  347. package/services/chain-service/helper/api-helper/spec/origintrail.d.ts +0 -5
  348. package/services/chain-service/helper/api-helper/spec/origintrail.js +0 -198
  349. package/services/chain-service/helper/api-helper/spec/pangolin.d.ts +0 -2
  350. package/services/chain-service/helper/api-helper/spec/pangolin.js +0 -5
  351. package/services/chain-service/helper/api-helper/spec/pangoro.d.ts +0 -2
  352. package/services/chain-service/helper/api-helper/spec/pangoro.js +0 -7
  353. package/services/chain-service/helper/api-helper/spec/parallel.d.ts +0 -14
  354. package/services/chain-service/helper/api-helper/spec/parallel.js +0 -5
  355. package/services/chain-service/helper/api-helper/spec/parami.d.ts +0 -3
  356. package/services/chain-service/helper/api-helper/spec/parami.js +0 -14
  357. package/services/chain-service/helper/api-helper/spec/phoenix.d.ts +0 -3
  358. package/services/chain-service/helper/api-helper/spec/phoenix.js +0 -45
  359. package/services/chain-service/helper/api-helper/spec/pichiu.d.ts +0 -3
  360. package/services/chain-service/helper/api-helper/spec/pichiu.js +0 -29
  361. package/services/chain-service/helper/api-helper/spec/plasm.d.ts +0 -3
  362. package/services/chain-service/helper/api-helper/spec/plasm.js +0 -47
  363. package/services/chain-service/helper/api-helper/spec/polkadex.d.ts +0 -3
  364. package/services/chain-service/helper/api-helper/spec/polkadex.js +0 -25
  365. package/services/chain-service/helper/api-helper/spec/polkafoundry.d.ts +0 -3
  366. package/services/chain-service/helper/api-helper/spec/polkafoundry.js +0 -36
  367. package/services/chain-service/helper/api-helper/spec/polymesh.d.ts +0 -3
  368. package/services/chain-service/helper/api-helper/spec/polymesh.js +0 -13
  369. package/services/chain-service/helper/api-helper/spec/pontem.d.ts +0 -2
  370. package/services/chain-service/helper/api-helper/spec/pontem.js +0 -5
  371. package/services/chain-service/helper/api-helper/spec/prism.d.ts +0 -3
  372. package/services/chain-service/helper/api-helper/spec/prism.js +0 -17
  373. package/services/chain-service/helper/api-helper/spec/quartz.d.ts +0 -3
  374. package/services/chain-service/helper/api-helper/spec/quartz.js +0 -9
  375. package/services/chain-service/helper/api-helper/spec/realis.d.ts +0 -3
  376. package/services/chain-service/helper/api-helper/spec/realis.js +0 -35
  377. package/services/chain-service/helper/api-helper/spec/riochain.d.ts +0 -3
  378. package/services/chain-service/helper/api-helper/spec/riochain.js +0 -97
  379. package/services/chain-service/helper/api-helper/spec/robonomics.d.ts +0 -3
  380. package/services/chain-service/helper/api-helper/spec/robonomics.js +0 -34
  381. package/services/chain-service/helper/api-helper/spec/shibuya.d.ts +0 -3
  382. package/services/chain-service/helper/api-helper/spec/shibuya.js +0 -47
  383. package/services/chain-service/helper/api-helper/spec/shiden.d.ts +0 -3
  384. package/services/chain-service/helper/api-helper/spec/shiden.js +0 -47
  385. package/services/chain-service/helper/api-helper/spec/snowbridge.d.ts +0 -2
  386. package/services/chain-service/helper/api-helper/spec/snowbridge.js +0 -5
  387. package/services/chain-service/helper/api-helper/spec/soraSubstrate.d.ts +0 -3
  388. package/services/chain-service/helper/api-helper/spec/soraSubstrate.js +0 -5
  389. package/services/chain-service/helper/api-helper/spec/spanner.d.ts +0 -3
  390. package/services/chain-service/helper/api-helper/spec/spanner.js +0 -494
  391. package/services/chain-service/helper/api-helper/spec/stafi.d.ts +0 -3
  392. package/services/chain-service/helper/api-helper/spec/stafi.js +0 -18
  393. package/services/chain-service/helper/api-helper/spec/standard.d.ts +0 -3
  394. package/services/chain-service/helper/api-helper/spec/standard.js +0 -5
  395. package/services/chain-service/helper/api-helper/spec/subdao.d.ts +0 -3
  396. package/services/chain-service/helper/api-helper/spec/subdao.js +0 -14
  397. package/services/chain-service/helper/api-helper/spec/subgame.d.ts +0 -3
  398. package/services/chain-service/helper/api-helper/spec/subgame.js +0 -178
  399. package/services/chain-service/helper/api-helper/spec/subsocial.d.ts +0 -2
  400. package/services/chain-service/helper/api-helper/spec/subsocial.js +0 -8
  401. package/services/chain-service/helper/api-helper/spec/subspace.d.ts +0 -0
  402. package/services/chain-service/helper/api-helper/spec/subspace.js +0 -126
  403. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.d.ts +0 -3
  404. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +0 -16
  405. package/services/chain-service/helper/api-helper/spec/swapdex.d.ts +0 -3
  406. package/services/chain-service/helper/api-helper/spec/swapdex.js +0 -38
  407. package/services/chain-service/helper/api-helper/spec/ternoa.d.ts +0 -3
  408. package/services/chain-service/helper/api-helper/spec/ternoa.js +0 -88
  409. package/services/chain-service/helper/api-helper/spec/trustbase.d.ts +0 -3
  410. package/services/chain-service/helper/api-helper/spec/trustbase.js +0 -17
  411. package/services/chain-service/helper/api-helper/spec/uart.d.ts +0 -3
  412. package/services/chain-service/helper/api-helper/spec/uart.js +0 -282
  413. package/services/chain-service/helper/api-helper/spec/unique.d.ts +0 -3
  414. package/services/chain-service/helper/api-helper/spec/unique.js +0 -117
  415. package/services/chain-service/helper/api-helper/spec/unitv.d.ts +0 -3
  416. package/services/chain-service/helper/api-helper/spec/unitv.js +0 -18
  417. package/services/chain-service/helper/api-helper/spec/vln-rococo.d.ts +0 -3
  418. package/services/chain-service/helper/api-helper/spec/vln-rococo.js +0 -102
  419. package/services/chain-service/helper/api-helper/spec/vln.d.ts +0 -3
  420. package/services/chain-service/helper/api-helper/spec/vln.js +0 -38
  421. package/services/chain-service/helper/api-helper/spec/vodka.d.ts +0 -3
  422. package/services/chain-service/helper/api-helper/spec/vodka.js +0 -15
  423. package/services/chain-service/helper/api-helper/spec/web3games.d.ts +0 -3
  424. package/services/chain-service/helper/api-helper/spec/web3games.js +0 -36
  425. package/services/chain-service/helper/api-helper/spec/westlake.d.ts +0 -3
  426. package/services/chain-service/helper/api-helper/spec/westlake.js +0 -298
  427. package/services/chain-service/helper/api-helper/spec/zCloak.d.ts +0 -3
  428. package/services/chain-service/helper/api-helper/spec/zCloak.js +0 -39
  429. package/services/chain-service/helper/api-helper/spec/zeitgeist.d.ts +0 -3
  430. package/services/chain-service/helper/api-helper/spec/zeitgeist.js +0 -24
  431. package/services/chain-service/helper/api-helper/spec/zenlink.d.ts +0 -3
  432. package/services/chain-service/helper/api-helper/spec/zenlink.js +0 -50
  433. package/services/chain-service/helper/api-helper/spec/zero.d.ts +0 -3
  434. package/services/chain-service/helper/api-helper/spec/zero.js +0 -5
  435. package/services/chain-service/helper/api-helper/util.d.ts +0 -5
  436. package/services/chain-service/helper/api-helper/util.js +0 -15
@@ -35,14 +35,13 @@ export class ChainService {
35
35
  constructor(dbService, eventService) {
36
36
  this.dbService = dbService;
37
37
  this.eventService = eventService;
38
- this.substrateChainHandler = new SubstrateChainHandler();
39
- this.evmChainHandler = new EvmChainHandler();
40
- this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
41
38
  this.chainStateMapSubject.next(this.dataMap.chainStateMap);
39
+ this.chainInfoMapSubject.next(this.dataMap.chainInfoMap);
42
40
  this.assetRegistrySubject.next(this.dataMap.assetRegistry);
43
41
  this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
42
+ this.substrateChainHandler = new SubstrateChainHandler(this);
43
+ this.evmChainHandler = new EvmChainHandler(this);
44
44
  this.logger = createLogger('chain-service');
45
- this.refreshChainStateInterval(3000, 6);
46
45
  }
47
46
 
48
47
  // Getter
@@ -172,6 +171,9 @@ export class ChainService {
172
171
  getChainStateByKey(key) {
173
172
  return this.dataMap.chainStateMap[key];
174
173
  }
174
+ getActiveChains() {
175
+ return Object.entries(this.dataMap.chainStateMap).filter(([, chainState]) => _isChainEnabled(chainState)).map(([key]) => key);
176
+ }
175
177
  getSupportedSmartContractTypes() {
176
178
  return [_AssetType.ERC20, _AssetType.ERC721, _AssetType.PSP22, _AssetType.PSP34];
177
179
  }
@@ -352,6 +354,8 @@ export class ChainService {
352
354
 
353
355
  // Business logic
354
356
  async init() {
357
+ await this.eventService.waitDatabaseReady;
358
+
355
359
  // TODO: reconsider the flow of initiation
356
360
  const [latestAssetRefMap, latestMultiChainAssetMap] = await Promise.all([this.fetchLatestData(_ASSET_REF_SRC, AssetRefMap), this.fetchLatestData(_MULTI_CHAIN_ASSET_SRC, MultiChainAssetMap)]);
357
361
  this.multiChainAssetMapSubject.next(latestMultiChainAssetMap);
@@ -361,28 +365,51 @@ export class ChainService {
361
365
  this.chainStateMapSubject.next(this.getChainStateMap());
362
366
  this.assetRegistrySubject.next(this.getAssetRegistry());
363
367
  this.xcmRefMapSubject.next(this.dataMap.assetRefMap);
364
- this.initApis();
368
+ await this.initApis();
365
369
  await this.initAssetSettings();
366
370
  }
367
- initApis() {
368
- // TODO: this might be async
369
- Object.entries(this.getChainInfoMap()).forEach(([slug, chainInfo]) => {
370
- if (this.getChainStateByKey(slug).active) {
371
- this.initApiForChain(chainInfo);
371
+ async initApis() {
372
+ const chainInfoMap = this.getChainInfoMap();
373
+ const chainStateMap = this.getChainStateMap();
374
+ await Promise.all(Object.entries(chainInfoMap).filter(([slug]) => {
375
+ var _chainStateMap$slug;
376
+ return (_chainStateMap$slug = chainStateMap[slug]) === null || _chainStateMap$slug === void 0 ? void 0 : _chainStateMap$slug.active;
377
+ }).map(([, chainInfo]) => {
378
+ try {
379
+ return this.initApiForChain(chainInfo);
380
+ } catch (e) {
381
+ console.error(e);
382
+ return Promise.resolve();
372
383
  }
373
- });
384
+ }));
374
385
  }
375
- initApiForChain(chainInfo) {
386
+ async initApiForChain(chainInfo) {
376
387
  const {
377
388
  endpoint,
378
389
  providerName
379
390
  } = this.getChainCurrentProviderByKey(chainInfo.slug);
380
- if (chainInfo.substrateInfo !== null) {
381
- const chainApi = this.initApi(chainInfo.slug, endpoint, 'substrate', providerName);
391
+ const onUpdateStatus = isConnected => {
392
+ const currentStatus = this.getChainStateByKey(chainInfo.slug).connectionStatus;
393
+ const newStatus = isConnected ? _ChainConnectionStatus.CONNECTED : _ChainConnectionStatus.DISCONNECTED;
394
+
395
+ // Avoid unnecessary update in case disable chain
396
+ if (currentStatus !== newStatus) {
397
+ this.setChainConnectionStatus(chainInfo.slug, newStatus);
398
+ this.chainStateMapSubject.next(this.getChainStateMap());
399
+ }
400
+ };
401
+ if (chainInfo.substrateInfo !== null && chainInfo.substrateInfo !== undefined) {
402
+ const chainApi = await this.substrateChainHandler.initApi(chainInfo.slug, endpoint, {
403
+ providerName,
404
+ onUpdateStatus
405
+ });
382
406
  this.substrateChainHandler.setSubstrateApi(chainInfo.slug, chainApi);
383
407
  }
384
- if (chainInfo.evmInfo !== null) {
385
- const chainApi = this.initApi(chainInfo.slug, endpoint, 'evm', providerName);
408
+ if (chainInfo.evmInfo !== null && chainInfo.evmInfo !== undefined) {
409
+ const chainApi = await this.evmChainHandler.initApi(chainInfo.slug, endpoint, {
410
+ providerName,
411
+ onUpdateStatus
412
+ });
386
413
  this.evmChainHandler.setEvmApi(chainInfo.slug, chainApi);
387
414
  }
388
415
  }
@@ -394,47 +421,53 @@ export class ChainService {
394
421
  this.evmChainHandler.destroyEvmApi(chainInfo.slug);
395
422
  }
396
423
  }
397
- initApi(slug, endpoint, type = 'substrate', providerName) {
398
- switch (type) {
399
- case 'evm':
400
- return this.evmChainHandler.initApi(slug, endpoint, providerName);
401
- default:
402
- // substrate by default
403
- return this.substrateChainHandler.initApi(slug, endpoint, providerName);
404
- }
405
- }
406
- _enableChain(chainSlug) {
424
+ async enableChain(chainSlug) {
407
425
  const chainInfo = this.getChainInfoByKey(chainSlug);
408
426
  const chainStateMap = this.getChainStateMap();
409
427
  if (chainStateMap[chainSlug].active || this.lockChainInfoMap) {
410
428
  return false;
411
429
  }
412
430
  this.lockChainInfoMap = true;
413
- chainStateMap[chainSlug].active = true;
414
- this.initApiForChain(chainInfo);
415
- this.refreshChainStateInterval(3000, 6);
416
431
  this.dbService.updateChainStore({
417
432
  ...chainInfo,
418
433
  active: true,
419
434
  currentProvider: chainStateMap[chainSlug].currentProvider
420
435
  }).catch(console.error);
436
+ chainStateMap[chainSlug].active = true;
437
+ await this.initApiForChain(chainInfo);
421
438
  this.lockChainInfoMap = false;
422
439
  this.eventService.emit('chain.updateState', chainSlug);
440
+ this.updateChainStateMapSubscription();
423
441
  return true;
424
442
  }
425
- enableChain(chainSlug) {
426
- const rs = this._enableChain(chainSlug);
427
- if (rs) {
428
- this.updateChainStateMapSubscription();
429
- }
430
- return rs;
431
- }
432
- enableChains(chainSlugs) {
433
- const rs = chainSlugs.map(this._enableChain.bind(this));
434
- if (rs.some(r => r)) {
435
- this.updateChainStateMapSubscription();
443
+ async enableChains(chainSlugs) {
444
+ const chainInfoMap = this.getChainInfoMap();
445
+ const chainStateMap = this.getChainStateMap();
446
+ let needUpdate = false;
447
+ if (this.lockChainInfoMap) {
448
+ return false;
436
449
  }
437
- return rs.every(r => r);
450
+ this.lockChainInfoMap = true;
451
+ const initPromises = chainSlugs.map(async chainSlug => {
452
+ var _chainStateMap$chainS;
453
+ const chainInfo = chainInfoMap[chainSlug];
454
+ const currentState = (_chainStateMap$chainS = chainStateMap[chainSlug]) === null || _chainStateMap$chainS === void 0 ? void 0 : _chainStateMap$chainS.active;
455
+ if (!currentState) {
456
+ this.dbService.updateChainStore({
457
+ ...chainInfo,
458
+ active: true,
459
+ currentProvider: chainStateMap[chainSlug].currentProvider
460
+ }).catch(console.error);
461
+ chainStateMap[chainSlug].active = true;
462
+ await this.initApiForChain(chainInfo);
463
+ this.eventService.emit('chain.updateState', chainSlug);
464
+ needUpdate = true;
465
+ }
466
+ });
467
+ await Promise.all(initPromises);
468
+ this.lockChainInfoMap = false;
469
+ needUpdate && this.updateChainStateMapSubscription();
470
+ return needUpdate;
438
471
  }
439
472
  disableChain(chainSlug) {
440
473
  const chainInfo = this.getChainInfoByKey(chainSlug);
@@ -688,7 +721,7 @@ export class ChainService {
688
721
  }
689
722
 
690
723
  // Can only update providers or block explorer, crowdloan url
691
- updateChain(params) {
724
+ async updateChain(params) {
692
725
  const chainSlug = params.chainEditInfo.slug;
693
726
  const targetChainInfo = this.getChainInfoByKey(chainSlug);
694
727
  const targetChainState = this.getChainStateByKey(chainSlug);
@@ -702,8 +735,8 @@ export class ChainService {
702
735
  targetChainState.active = true;
703
736
  }
704
737
 
705
- // TODO: it might override existed API
706
- this.initApiForChain(targetChainInfo);
738
+ // It auto detects the change of api url to create new instance or reuse existed one
739
+ await this.initApiForChain(targetChainInfo);
707
740
  this.updateChainStateMapSubscription();
708
741
  }
709
742
  if (targetChainInfo.substrateInfo) {
@@ -728,7 +761,7 @@ export class ChainService {
728
761
  this.eventService.emit('chain.updateState', chainSlug);
729
762
  }).catch(e => this.logger.error(e));
730
763
  }
731
- insertChain(params) {
764
+ async insertChain(params) {
732
765
  const chainInfoMap = this.getChainInfoMap();
733
766
  if (!params.chainSpec) {
734
767
  return;
@@ -786,7 +819,7 @@ export class ChainService {
786
819
  currentProvider: params.chainEditInfo.currentProvider,
787
820
  slug: newChainSlug
788
821
  };
789
- this.initApiForChain(chainInfo);
822
+ await this.initApiForChain(chainInfo);
790
823
 
791
824
  // create a record in assetRegistry for native token and update store/subscription
792
825
  const nativeTokenSlug = this.upsertCustomToken({
@@ -817,7 +850,7 @@ export class ChainService {
817
850
  }).catch(e => this.logger.error(e));
818
851
  return nativeTokenSlug;
819
852
  }
820
- upsertChain(params) {
853
+ async upsertChain(params) {
821
854
  if (this.lockChainInfoMap) {
822
855
  return;
823
856
  }
@@ -825,10 +858,10 @@ export class ChainService {
825
858
  let result;
826
859
  if (params.mode === 'update') {
827
860
  // update existing chainInfo
828
- this.updateChain(params);
861
+ await this.updateChain(params);
829
862
  } else {
830
863
  // insert custom network
831
- result = this.insertChain(params);
864
+ result = await this.insertChain(params);
832
865
  }
833
866
  this.lockChainInfoMap = false;
834
867
  return result;
@@ -870,9 +903,9 @@ export class ChainService {
870
903
  // TODO: EVM chain might have WS provider
871
904
  if (provider.startsWith('http')) {
872
905
  // HTTP provider is EVM by default
873
- api = this.evmChainHandler.initApi('custom', provider);
906
+ api = await this.evmChainHandler.initApi('custom', provider);
874
907
  } else {
875
- api = this.substrateChainHandler.initApi('custom', provider);
908
+ api = await this.substrateChainHandler.initApi('custom', provider);
876
909
  }
877
910
  const connectionTimeout = new Promise(resolve => {
878
911
  const id = setTimeout(() => {
@@ -1057,68 +1090,21 @@ export class ChainService {
1057
1090
  return `${originChain}-${assetType}-${symbol}`;
1058
1091
  }
1059
1092
  refreshSubstrateApi(slug) {
1060
- this.substrateChainHandler.refreshApi(slug);
1093
+ this.substrateChainHandler.recoverApi(slug).catch(console.error);
1061
1094
  }
1062
1095
  refreshEvmApi(slug) {
1063
- const {
1064
- endpoint,
1065
- providerName
1066
- } = this.getChainCurrentProviderByKey(slug);
1067
- this.evmChainHandler.refreshApi(slug, endpoint, providerName);
1068
- }
1069
- stopAllChainApis() {
1070
- // TODO: add logic for EvmApi
1071
- // Object.entries(this.apiMap.web3).forEach(([key, network]) => {
1072
- // if (network.currentProvider instanceof Web3.providers.WebsocketProvider) {
1073
- // if (network.currentProvider?.connected) {
1074
- // console.log(`[Web3] ${key} is connected`);
1075
- // network.currentProvider?.disconnect(code, reason);
1076
- // console.log(`[Web3] ${key} is ${network.currentProvider.connected ? 'connected' : 'disconnected'} now`);
1077
- // }
1078
- // }
1079
- // });
1080
-
1081
- return this.substrateChainHandler.disconnectAllApis();
1096
+ this.evmChainHandler.recoverApi(slug).catch(console.error);
1082
1097
  }
1083
- resumeAllChainApis() {
1084
- // TODO: add logic for EvmApi
1085
- // Object.entries(this.apiMap.web3).forEach(([key, network]) => {
1086
- // const currentProvider = network.currentProvider;
1087
-
1088
- // if (currentProvider instanceof Web3.providers.WebsocketProvider) {
1089
- // if (!currentProvider.connected) {
1090
- // console.log(`[Web3] ${key} is disconnected`);
1091
- // currentProvider?.connect();
1092
- // setTimeout(() => console.log(`[Web3] ${key} is ${currentProvider.connected ? 'connected' : 'disconnected'} now`), 500);
1093
- // }
1094
- // }
1095
- // });
1096
-
1097
- return this.substrateChainHandler.resumeAllApis();
1098
- }
1099
- refreshChainStateTimeout = undefined;
1100
- refreshChainStateTimes = 0;
1101
- refreshChainStateInterval(delay = 0, times) {
1102
- clearTimeout(this.refreshChainStateTimeout);
1103
- setTimeout(() => {
1104
- if (times) {
1105
- this.refreshChainStateTimes = times;
1106
- }
1107
- this.refreshChainStateTimes -= 1;
1108
- if (this.refreshChainStateTimes < 0) {
1109
- return;
1110
- }
1111
- this.updateApiMapStatus().catch(console.error);
1112
- this.refreshChainStateTimeout = setTimeout(() => {
1113
- this.updateApiMapStatus().catch(console.error);
1114
- this.refreshChainStateInterval(0);
1115
- }, 3000);
1116
- }, delay);
1117
- }
1118
- async updateApiMapStatus() {
1098
+ async stopAllChainApis() {
1099
+ await Promise.all([this.substrateChainHandler.sleep(), this.evmChainHandler.sleep()]);
1100
+ }
1101
+ async resumeAllChainApis() {
1102
+ await Promise.all([this.substrateChainHandler.wakeUp(), this.evmChainHandler.wakeUp()]);
1103
+ }
1104
+ checkAndUpdateStatusMapForChain(chainSlug) {
1119
1105
  const substrateApiMap = this.getSubstrateApiMap();
1120
1106
  const evmApiMap = this.getEvmApiMap();
1121
- const chainStateMap = this.getChainStateMap();
1107
+ const chainState = this.getChainStateByKey(chainSlug);
1122
1108
  let update = false;
1123
1109
  function updateState(current, status) {
1124
1110
  if (current.connectionStatus !== status) {
@@ -1126,32 +1112,16 @@ export class ChainService {
1126
1112
  update = true;
1127
1113
  }
1128
1114
  }
1129
- const promiseList = Object.entries(chainStateMap).map(async ([chain, chainState]) => {
1130
- try {
1131
- if (chainState.active) {
1132
- if (substrateApiMap[chain]) {
1133
- const api = substrateApiMap[chain];
1134
- if (api.isApiConnected) {
1135
- updateState(chainState, _ChainConnectionStatus.CONNECTED);
1136
- return;
1137
- }
1138
- } else if (evmApiMap[chain]) {
1139
- var _api$api;
1140
- const api = evmApiMap[chain];
1141
- if (await (api === null || api === void 0 ? void 0 : (_api$api = api.api) === null || _api$api === void 0 ? void 0 : _api$api.eth.net.isListening())) {
1142
- updateState(chainState, _ChainConnectionStatus.CONNECTED);
1143
- return;
1144
- }
1145
- }
1146
- }
1147
- updateState(chainState, _ChainConnectionStatus.DISCONNECTED);
1148
- } catch (e) {
1149
- updateState(chainState, _ChainConnectionStatus.DISCONNECTED);
1115
+ if (chainState.active) {
1116
+ const api = substrateApiMap[chainSlug] || evmApiMap[chainSlug];
1117
+ if (api) {
1118
+ updateState(chainState, api.isApiConnected ? _ChainConnectionStatus.CONNECTED : _ChainConnectionStatus.DISCONNECTED);
1150
1119
  }
1151
- });
1152
- await Promise.all(promiseList);
1120
+ } else {
1121
+ updateState(chainState, _ChainConnectionStatus.DISCONNECTED);
1122
+ }
1153
1123
  if (update) {
1154
- this.chainStateMapSubject.next(chainStateMap);
1124
+ this.dataMap.chainStateMap[chainSlug] = chainState;
1155
1125
  }
1156
1126
  }
1157
1127
  async initAssetSettings() {
@@ -1215,7 +1185,7 @@ export class ChainService {
1215
1185
 
1216
1186
  // if chain not enabled, then automatically enable
1217
1187
  if (chainState && !chainState.active) {
1218
- this.enableChain(chainState.slug);
1188
+ await this.enableChain(chainState.slug);
1219
1189
  needUpdateSubject = true;
1220
1190
  if (autoEnableNativeToken) {
1221
1191
  const nativeAsset = this.getNativeTokenInfo(assetInfo.originChain);
@@ -1279,4 +1249,10 @@ export class ChainService {
1279
1249
  this.deleteCustomAssets(customToken);
1280
1250
  }
1281
1251
  }
1252
+ getMetadata(chain) {
1253
+ return this.dbService.stores.metadata.getMetadata(chain);
1254
+ }
1255
+ upsertMetadata(chain, metadata) {
1256
+ return this.dbService.stores.metadata.upsertMetadata(chain, metadata);
1257
+ }
1282
1258
  }
@@ -1,5 +1,6 @@
1
1
  import { _AssetRef, _AssetType, _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
2
2
  import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
3
+ import { BehaviorSubject } from 'rxjs';
3
4
  import Web3 from 'web3';
4
5
  import { ApiPromise } from '@polkadot/api';
5
6
  import { SubmittableExtrinsicFunction } from '@polkadot/api/promise/types';
@@ -34,12 +35,15 @@ export interface _ChainBaseApi {
34
35
  apiError?: string;
35
36
  apiRetry?: number;
36
37
  isApiReady: boolean;
38
+ isApiConnectedSubject: BehaviorSubject<boolean>;
37
39
  isApiReadyOnce: boolean;
38
40
  isApiConnected: boolean;
39
- isApiInitialized: boolean;
40
- isDevelopment?: boolean;
41
- recoverConnect?: () => void;
42
- isReady: Promise<any>;
41
+ updateApiUrl: (apiUrl: string) => Promise<void>;
42
+ connect: () => void;
43
+ disconnect: () => Promise<void>;
44
+ recoverConnect: () => Promise<void>;
45
+ destroy: () => Promise<void>;
46
+ isReady: Promise<_ChainBaseApi>;
43
47
  }
44
48
  export interface _SubstrateChainMetadata {
45
49
  properties: ChainProperties;
@@ -55,7 +59,6 @@ export interface _SubstrateApiState {
55
59
  }
56
60
  export interface _SubstrateApi extends _SubstrateApiState, _ChainBaseApi {
57
61
  api: ApiPromise;
58
- isNotSupport?: boolean;
59
62
  isReady: Promise<_SubstrateApi>;
60
63
  specName: string;
61
64
  specVersion: string;
@@ -5,6 +5,8 @@ export declare class EventService extends EventEmitter<EventRegistry> {
5
5
  private timeoutId;
6
6
  private pendingEvents;
7
7
  private lazyEmitter;
8
+ readonly waitCryptoReady: Promise<boolean>;
9
+ readonly waitDatabaseReady: Promise<boolean>;
8
10
  readonly waitKeyringReady: Promise<boolean>;
9
11
  readonly waitAccountReady: Promise<boolean>;
10
12
  readonly waitChainReady: Promise<boolean>;
@@ -13,6 +13,8 @@ export class EventService extends EventEmitter {
13
13
  super();
14
14
  this.lazyTime = options.lazyTime;
15
15
  this.timeoutId = null;
16
+ this.waitCryptoReady = this.generateWaitPromise('crypto.ready');
17
+ this.waitDatabaseReady = this.generateWaitPromise('database.ready');
16
18
  this.waitKeyringReady = this.generateWaitPromise('keyring.ready');
17
19
  this.waitAccountReady = this.generateWaitPromise('account.ready');
18
20
  this.waitChainReady = this.generateWaitPromise('chain.ready');
@@ -1,6 +1,10 @@
1
1
  import { CurrentAccountInfo } from '@subwallet/extension-base/background/KoniTypes';
2
2
  import { SWTransaction } from '@subwallet/extension-base/services/transaction-service/types';
3
3
  export interface EventRegistry {
4
+ 'general.sleep': [boolean];
5
+ 'general.wakeup': [boolean];
6
+ 'crypto.ready': [boolean];
7
+ 'database.ready': [boolean];
4
8
  'keyring.ready': [boolean];
5
9
  'account.updateCurrent': [CurrentAccountInfo];
6
10
  'account.ready': [boolean];
@@ -201,7 +201,11 @@ export class HistoryService {
201
201
  this.startRecoverHistories().catch(console.error);
202
202
  }
203
203
  async start() {
204
+ if (this.status === ServiceStatus.STARTED) {
205
+ return;
206
+ }
204
207
  try {
208
+ await Promise.all([this.eventService.waitKeyringReady, this.eventService.waitChainReady]);
205
209
  this.startPromiseHandler = createPromiseHandler();
206
210
  this.status = ServiceStatus.STARTING;
207
211
  await this.startCron();
@@ -10,9 +10,6 @@ export default class MigrationService {
10
10
  }
11
11
  async run() {
12
12
  const keys = Object.keys(MigrationScripts).sort((a, b) => a.localeCompare(b));
13
-
14
- // Await timeout 1s
15
- await new Promise(resolve => setTimeout(resolve, 1000));
16
13
  for (let i = 0; i < keys.length; i++) {
17
14
  try {
18
15
  const JobClass = MigrationScripts[keys[i]];
@@ -26,7 +26,7 @@ export default class MigrateNetworkSettings extends BaseMigrationJob {
26
26
  }
27
27
  });
28
28
  if (enableList.length > 0) {
29
- state.chainService.enableChains(enableList);
29
+ await state.chainService.enableChains(enableList);
30
30
 
31
31
  // Enable native token of these chains
32
32
  const currentAssetSettings = await state.chainService.getAssetSettings();
@@ -59,7 +59,6 @@ export class PriceService {
59
59
  this.refreshPriceData(this.priceIds);
60
60
  }
61
61
  };
62
- await this.eventService.waitAssetReady;
63
62
  this.status = ServiceStatus.INITIALIZED;
64
63
  this.eventService.on('asset.updateState', eventHandler);
65
64
  }
@@ -72,7 +71,11 @@ export class PriceService {
72
71
  }
73
72
  startPromiseHandler = createPromiseHandler();
74
73
  async start() {
74
+ if (this.status === ServiceStatus.STARTED) {
75
+ return;
76
+ }
75
77
  try {
78
+ await this.eventService.waitAssetReady;
76
79
  this.startPromiseHandler = createPromiseHandler();
77
80
  this.status = ServiceStatus.STARTING;
78
81
  await this.startCron();
@@ -1,12 +1,14 @@
1
1
  import { _ChainAsset } from '@subwallet/chain-list/types';
2
2
  import { BalanceItem, ChainStakingMetadata, CrowdloanItem, NftCollection, NftItem, NominatorMetadata, PriceJson, StakingItem, StakingType, TransactionHistoryItem } from '@subwallet/extension-base/background/KoniTypes';
3
+ import { EventService } from '@subwallet/extension-base/services/event-service';
3
4
  import { IBalance, IChain, INft } from '@subwallet/extension-base/services/storage-service/databases';
4
- import { AssetStore, BalanceStore, ChainStore, CrowdloanStore, MigrationStore, NftCollectionStore, NftStore, PriceStore, StakingStore, TransactionStore } from '@subwallet/extension-base/services/storage-service/db-stores';
5
+ import { AssetStore, BalanceStore, ChainStore, CrowdloanStore, MetadataStore, MigrationStore, NftCollectionStore, NftStore, PriceStore, StakingStore, TransactionStore } from '@subwallet/extension-base/services/storage-service/db-stores';
5
6
  import ChainStakingMetadataStore from '@subwallet/extension-base/services/storage-service/db-stores/ChainStakingMetadata';
6
7
  import NominatorMetadataStore from '@subwallet/extension-base/services/storage-service/db-stores/NominatorMetadata';
7
8
  import { HistoryQuery } from '@subwallet/extension-base/services/storage-service/db-stores/Transaction';
8
9
  import { Subscription } from 'dexie';
9
10
  export default class DatabaseService {
11
+ private eventService;
10
12
  private _db;
11
13
  stores: {
12
14
  price: PriceStore;
@@ -17,6 +19,7 @@ export default class DatabaseService {
17
19
  staking: StakingStore;
18
20
  transaction: TransactionStore;
19
21
  migration: MigrationStore;
22
+ metadata: MetadataStore;
20
23
  chain: ChainStore;
21
24
  asset: AssetStore;
22
25
  chainStakingMetadata: ChainStakingMetadataStore;
@@ -25,7 +28,7 @@ export default class DatabaseService {
25
28
  private logger;
26
29
  private nftSubscription;
27
30
  private stakingSubscription;
28
- constructor();
31
+ constructor(eventService: EventService);
29
32
  updatePriceStore(priceData: PriceJson): Promise<void>;
30
33
  getPriceStore(): Promise<PriceJson | undefined>;
31
34
  getStoredBalance(): Promise<IBalance[]>;
@@ -3,7 +3,7 @@
3
3
 
4
4
  import { APIItemState, StakingType } from '@subwallet/extension-base/background/KoniTypes';
5
5
  import KoniDatabase from '@subwallet/extension-base/services/storage-service/databases';
6
- import { AssetStore, BalanceStore, ChainStore, CrowdloanStore, MigrationStore, NftCollectionStore, NftStore, PriceStore, StakingStore, TransactionStore } from '@subwallet/extension-base/services/storage-service/db-stores';
6
+ import { AssetStore, BalanceStore, ChainStore, CrowdloanStore, MetadataStore, MigrationStore, NftCollectionStore, NftStore, PriceStore, StakingStore, TransactionStore } from '@subwallet/extension-base/services/storage-service/db-stores';
7
7
  import ChainStakingMetadataStore from '@subwallet/extension-base/services/storage-service/db-stores/ChainStakingMetadata';
8
8
  import NominatorMetadataStore from '@subwallet/extension-base/services/storage-service/db-stores/NominatorMetadata';
9
9
  import { reformatAddress } from '@subwallet/extension-base/utils';
@@ -11,9 +11,13 @@ import { logger as createLogger } from '@polkadot/util';
11
11
  export default class DatabaseService {
12
12
  // TODO: might remove this
13
13
 
14
- constructor() {
14
+ constructor(eventService) {
15
+ this.eventService = eventService;
15
16
  this.logger = createLogger('DB-Service');
16
17
  this._db = new KoniDatabase();
18
+ this._db.on('ready', () => {
19
+ this.eventService.emit('database.ready', true);
20
+ });
17
21
  this.stores = {
18
22
  price: new PriceStore(this._db.price),
19
23
  balance: new BalanceStore(this._db.balances),
@@ -23,6 +27,7 @@ export default class DatabaseService {
23
27
  staking: new StakingStore(this._db.stakings),
24
28
  transaction: new TransactionStore(this._db.transactions),
25
29
  migration: new MigrationStore(this._db.migrations),
30
+ metadata: new MetadataStore(this._db.metadata),
26
31
  chain: new ChainStore(this._db.chain),
27
32
  asset: new AssetStore(this._db.asset),
28
33
  // staking
@@ -1,5 +1,5 @@
1
1
  import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
2
- import { BalanceItem, ChainStakingMetadata, CrowdloanItem, NftCollection, NftItem, NominatorMetadata, PriceJson, StakingItem, TransactionHistoryItem } from '@subwallet/extension-base/background/KoniTypes';
2
+ import { BalanceItem, ChainStakingMetadata, CrowdloanItem, MetadataItem, NftCollection, NftItem, NominatorMetadata, PriceJson, StakingItem, TransactionHistoryItem } from '@subwallet/extension-base/background/KoniTypes';
3
3
  import Dexie, { Table } from 'dexie';
4
4
  export interface DefaultChainDoc {
5
5
  chain: string;
@@ -26,6 +26,8 @@ export interface IMigration {
26
26
  name: string;
27
27
  timestamp: number;
28
28
  }
29
+ export interface IMetadataItem extends MetadataItem, DefaultChainDoc {
30
+ }
29
31
  export default class KoniDatabase extends Dexie {
30
32
  price: Table<PriceJson, object>;
31
33
  balances: Table<IBalance, object>;
@@ -35,6 +37,7 @@ export default class KoniDatabase extends Dexie {
35
37
  stakings: Table<StakingItem, object>;
36
38
  transactions: Table<ITransactionHistoryItem, object>;
37
39
  migrations: Table<IMigration, object>;
40
+ metadata: Table<IMetadataItem, object>;
38
41
  chain: Table<IChain, object>;
39
42
  asset: Table<_ChainAsset, object>;
40
43
  chainStakingMetadata: Table<ChainStakingMetadata, object>;
@@ -24,6 +24,9 @@ export default class KoniDatabase extends Dexie {
24
24
  chainStakingMetadata: '[chain+type], chain, type',
25
25
  nominatorMetadata: '[chain+address+type], [chain+address], chain, address, type'
26
26
  });
27
+ this.conditionalVersion(2, {
28
+ metadata: 'genesisHash, chain'
29
+ });
27
30
  }
28
31
  conditionalVersion(version, schema, upgrade) {
29
32
  if (this.schemaVersion != null && this.schemaVersion < version) {
@@ -0,0 +1,8 @@
1
+ import { IMetadataItem } from '@subwallet/extension-base/services/storage-service/databases';
2
+ import BaseStoreWithChain from '@subwallet/extension-base/services/storage-service/db-stores/BaseStoreWithChain';
3
+ export default class MetadataStore extends BaseStoreWithChain<IMetadataItem> {
4
+ getMetadata(chain: string): import("dexie").PromiseExtended<IMetadataItem | undefined>;
5
+ upsertMetadata(chain: string, metadata: IMetadataItem): import("dexie").PromiseExtended<unknown>;
6
+ getMetadataByGenesisHash(genesisHash: string): import("dexie").PromiseExtended<IMetadataItem | undefined>;
7
+ updateMetadataByGenesisHash(genesisHash: string, metadata: IMetadataItem): import("dexie").PromiseExtended<unknown>;
8
+ }
@@ -0,0 +1,18 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import BaseStoreWithChain from '@subwallet/extension-base/services/storage-service/db-stores/BaseStoreWithChain';
5
+ export default class MetadataStore extends BaseStoreWithChain {
6
+ getMetadata(chain) {
7
+ return this.table.where('chain').equals(chain).first();
8
+ }
9
+ upsertMetadata(chain, metadata) {
10
+ return this.table.put(metadata, chain);
11
+ }
12
+ getMetadataByGenesisHash(genesisHash) {
13
+ return this.table.where('[genesisHash]').equals([genesisHash]).first();
14
+ }
15
+ updateMetadataByGenesisHash(genesisHash, metadata) {
16
+ return this.table.put(metadata, genesisHash);
17
+ }
18
+ }
@@ -6,5 +6,6 @@ export { default as NftCollectionStore } from './NftCollection';
6
6
  export { default as StakingStore } from './Staking';
7
7
  export { default as TransactionStore } from './Transaction';
8
8
  export { default as MigrationStore } from './Migration';
9
+ export { default as MetadataStore } from './Metadata';
9
10
  export { default as ChainStore } from './Chain';
10
11
  export { default as AssetStore } from './Asset';
@@ -9,5 +9,6 @@ export { default as NftCollectionStore } from "./NftCollection.js";
9
9
  export { default as StakingStore } from "./Staking.js";
10
10
  export { default as TransactionStore } from "./Transaction.js";
11
11
  export { default as MigrationStore } from "./Migration.js";
12
+ export { default as MetadataStore } from "./Metadata.js";
12
13
  export { default as ChainStore } from "./Chain.js";
13
14
  export { default as AssetStore } from "./Asset.js";