@subwallet/extension-base 1.0.9-2 → 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 (455) hide show
  1. package/background/KoniTypes.d.ts +6 -0
  2. package/cjs/koni/api/dotsama/transfer.js +16 -7
  3. package/cjs/koni/api/nft/wasm_nft/index.js +4 -1
  4. package/cjs/koni/api/staking/bonding/index.js +3 -0
  5. package/cjs/koni/api/staking/bonding/paraChain.js +3 -2
  6. package/cjs/koni/api/staking/bonding/relayChain.js +3 -2
  7. package/cjs/koni/api/staking/bonding/utils.js +1 -1
  8. package/cjs/koni/api/xcm/polkadotXcm.js +5 -4
  9. package/cjs/koni/api/xcm/xTokens.js +1 -1
  10. package/cjs/koni/api/xcm/xcmPallet.js +1 -1
  11. package/cjs/koni/background/cron.js +4 -29
  12. package/cjs/koni/background/handlers/Extension.js +24 -12
  13. package/cjs/koni/background/handlers/State.js +74 -23
  14. package/cjs/koni/background/subscription.js +4 -2
  15. package/cjs/packageInfo.js +1 -1
  16. package/cjs/services/chain-service/constants.js +5 -2
  17. package/cjs/services/chain-service/handler/AbstractChainHandler.js +93 -0
  18. package/cjs/services/chain-service/handler/EvmApi.js +131 -0
  19. package/cjs/services/chain-service/handler/EvmChainHandler.js +55 -39
  20. package/cjs/services/chain-service/handler/SubstrateApi.js +212 -0
  21. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +76 -199
  22. package/cjs/services/chain-service/helper/api-helper/spec/dataavail.js +152 -0
  23. package/cjs/services/chain-service/index.js +119 -141
  24. package/cjs/services/event-service/index.js +2 -0
  25. package/cjs/services/history-service/index.js +4 -0
  26. package/cjs/services/migration-service/index.js +0 -3
  27. package/cjs/services/migration-service/scripts/MigrateNetworkSettings.js +1 -1
  28. package/cjs/services/price-service/index.js +4 -1
  29. package/cjs/services/storage-service/DatabaseService.js +6 -1
  30. package/cjs/services/storage-service/databases/index.js +3 -0
  31. package/cjs/services/storage-service/db-stores/Metadata.js +26 -0
  32. package/cjs/services/storage-service/db-stores/index.js +7 -0
  33. package/koni/api/dotsama/transfer.js +16 -7
  34. package/koni/api/nft/wasm_nft/index.js +4 -1
  35. package/koni/api/staking/bonding/index.js +3 -0
  36. package/koni/api/staking/bonding/paraChain.js +3 -2
  37. package/koni/api/staking/bonding/relayChain.js +3 -2
  38. package/koni/api/staking/bonding/utils.js +1 -1
  39. package/koni/api/xcm/polkadotXcm.js +5 -4
  40. package/koni/api/xcm/xTokens.js +1 -1
  41. package/koni/api/xcm/xcmPallet.js +1 -1
  42. package/koni/background/cron.d.ts +2 -4
  43. package/koni/background/cron.js +5 -30
  44. package/koni/background/handlers/Extension.d.ts +0 -1
  45. package/koni/background/handlers/Extension.js +24 -12
  46. package/koni/background/handlers/State.d.ts +10 -8
  47. package/koni/background/handlers/State.js +73 -23
  48. package/koni/background/subscription.d.ts +2 -2
  49. package/koni/background/subscription.js +4 -2
  50. package/package.json +38 -668
  51. package/packageInfo.js +1 -1
  52. package/services/chain-service/constants.d.ts +2 -0
  53. package/services/chain-service/constants.js +3 -1
  54. package/services/chain-service/handler/AbstractChainHandler.d.ts +29 -0
  55. package/services/chain-service/handler/AbstractChainHandler.js +83 -0
  56. package/services/chain-service/handler/EvmApi.d.ts +36 -0
  57. package/services/chain-service/handler/EvmApi.js +122 -0
  58. package/services/chain-service/handler/EvmChainHandler.d.ts +15 -9
  59. package/services/chain-service/handler/EvmChainHandler.js +54 -38
  60. package/services/chain-service/handler/SubstrateApi.d.ts +48 -0
  61. package/services/chain-service/handler/SubstrateApi.js +204 -0
  62. package/services/chain-service/handler/SubstrateChainHandler.d.ts +14 -12
  63. package/services/chain-service/handler/SubstrateChainHandler.js +74 -198
  64. package/services/chain-service/handler/types.d.ts +6 -0
  65. package/services/chain-service/helper/api-helper/spec/dataavail.js +145 -0
  66. package/services/chain-service/index.d.ts +16 -16
  67. package/services/chain-service/index.js +109 -133
  68. package/services/chain-service/types.d.ts +8 -5
  69. package/services/event-service/index.d.ts +2 -0
  70. package/services/event-service/index.js +2 -0
  71. package/services/event-service/types.d.ts +4 -0
  72. package/services/history-service/index.js +4 -0
  73. package/services/migration-service/index.js +0 -3
  74. package/services/migration-service/scripts/MigrateNetworkSettings.js +1 -1
  75. package/services/price-service/index.js +4 -1
  76. package/services/storage-service/DatabaseService.d.ts +5 -2
  77. package/services/storage-service/DatabaseService.js +7 -2
  78. package/services/storage-service/databases/index.d.ts +4 -1
  79. package/services/storage-service/databases/index.js +3 -0
  80. package/services/storage-service/db-stores/Metadata.d.ts +8 -0
  81. package/services/storage-service/db-stores/Metadata.js +18 -0
  82. package/services/storage-service/db-stores/index.d.ts +1 -0
  83. package/services/storage-service/db-stores/index.js +1 -0
  84. package/cjs/services/chain-service/helper/api-helper/chain/crust-maxwell.js +0 -108
  85. package/cjs/services/chain-service/helper/api-helper/chain/index.js +0 -17
  86. package/cjs/services/chain-service/helper/api-helper/index.js +0 -35
  87. package/cjs/services/chain-service/helper/api-helper/spec/acala.js +0 -11
  88. package/cjs/services/chain-service/helper/api-helper/spec/ajuna.js +0 -22
  89. package/cjs/services/chain-service/helper/api-helper/spec/altair.js +0 -31
  90. package/cjs/services/chain-service/helper/api-helper/spec/apron.js +0 -24
  91. package/cjs/services/chain-service/helper/api-helper/spec/ares-gladios.js +0 -191
  92. package/cjs/services/chain-service/helper/api-helper/spec/ares-parachain.js +0 -192
  93. package/cjs/services/chain-service/helper/api-helper/spec/astar.js +0 -44
  94. package/cjs/services/chain-service/helper/api-helper/spec/automata.js +0 -43
  95. package/cjs/services/chain-service/helper/api-helper/spec/basilisk.js +0 -139
  96. package/cjs/services/chain-service/helper/api-helper/spec/beresheet.js +0 -12
  97. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +0 -11
  98. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +0 -11
  99. package/cjs/services/chain-service/helper/api-helper/spec/bifrost.js +0 -11
  100. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +0 -11
  101. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +0 -122
  102. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry.js +0 -84
  103. package/cjs/services/chain-service/helper/api-helper/spec/canvas.js +0 -31
  104. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +0 -77
  105. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge.js +0 -31
  106. package/cjs/services/chain-service/helper/api-helper/spec/chainx.js +0 -403
  107. package/cjs/services/chain-service/helper/api-helper/spec/clover-rococo.js +0 -68
  108. package/cjs/services/chain-service/helper/api-helper/spec/clover.js +0 -34
  109. package/cjs/services/chain-service/helper/api-helper/spec/coinversation.js +0 -24
  110. package/cjs/services/chain-service/helper/api-helper/spec/competitors-club.js +0 -84
  111. package/cjs/services/chain-service/helper/api-helper/spec/crab.js +0 -11
  112. package/cjs/services/chain-service/helper/api-helper/spec/crown-sterling.js +0 -55
  113. package/cjs/services/chain-service/helper/api-helper/spec/crust.js +0 -11
  114. package/cjs/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +0 -24
  115. package/cjs/services/chain-service/helper/api-helper/spec/darwinia.js +0 -11
  116. package/cjs/services/chain-service/helper/api-helper/spec/datahighway.js +0 -240
  117. package/cjs/services/chain-service/helper/api-helper/spec/dock-mainnet.js +0 -16
  118. package/cjs/services/chain-service/helper/api-helper/spec/dock-testnet.js +0 -16
  119. package/cjs/services/chain-service/helper/api-helper/spec/dolphin.js +0 -29
  120. package/cjs/services/chain-service/helper/api-helper/spec/dotmog.js +0 -65
  121. package/cjs/services/chain-service/helper/api-helper/spec/eave.js +0 -416
  122. package/cjs/services/chain-service/helper/api-helper/spec/edgeware.js +0 -11
  123. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +0 -75
  124. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +0 -52
  125. package/cjs/services/chain-service/helper/api-helper/spec/encointer-para.js +0 -79
  126. package/cjs/services/chain-service/helper/api-helper/spec/equilibrium.js +0 -109
  127. package/cjs/services/chain-service/helper/api-helper/spec/fantour.js +0 -70
  128. package/cjs/services/chain-service/helper/api-helper/spec/galital-parachain.js +0 -65
  129. package/cjs/services/chain-service/helper/api-helper/spec/galital.js +0 -70
  130. package/cjs/services/chain-service/helper/api-helper/spec/galois.js +0 -54
  131. package/cjs/services/chain-service/helper/api-helper/spec/gamepower.js +0 -71
  132. package/cjs/services/chain-service/helper/api-helper/spec/genshiro.js +0 -31
  133. package/cjs/services/chain-service/helper/api-helper/spec/hanonycash.js +0 -33
  134. package/cjs/services/chain-service/helper/api-helper/spec/hydrate.js +0 -59
  135. package/cjs/services/chain-service/helper/api-helper/spec/idavoll.js +0 -24
  136. package/cjs/services/chain-service/helper/api-helper/spec/index.js +0 -272
  137. package/cjs/services/chain-service/helper/api-helper/spec/integritee.js +0 -35
  138. package/cjs/services/chain-service/helper/api-helper/spec/interbtc.js +0 -60
  139. package/cjs/services/chain-service/helper/api-helper/spec/ipse.js +0 -113
  140. package/cjs/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +0 -24
  141. package/cjs/services/chain-service/helper/api-helper/spec/jupiter.js +0 -70
  142. package/cjs/services/chain-service/helper/api-helper/spec/khala.js +0 -11
  143. package/cjs/services/chain-service/helper/api-helper/spec/kilt.js +0 -11
  144. package/cjs/services/chain-service/helper/api-helper/spec/konomi.js +0 -24
  145. package/cjs/services/chain-service/helper/api-helper/spec/kpron.js +0 -24
  146. package/cjs/services/chain-service/helper/api-helper/spec/kulupu.js +0 -64
  147. package/cjs/services/chain-service/helper/api-helper/spec/kusari.js +0 -45
  148. package/cjs/services/chain-service/helper/api-helper/spec/kylin.js +0 -36
  149. package/cjs/services/chain-service/helper/api-helper/spec/laminar.js +0 -11
  150. package/cjs/services/chain-service/helper/api-helper/spec/litentry.js +0 -24
  151. package/cjs/services/chain-service/helper/api-helper/spec/mangata.js +0 -20
  152. package/cjs/services/chain-service/helper/api-helper/spec/manta.js +0 -29
  153. package/cjs/services/chain-service/helper/api-helper/spec/mathchain.js +0 -54
  154. package/cjs/services/chain-service/helper/api-helper/spec/moonbeam.js +0 -11
  155. package/cjs/services/chain-service/helper/api-helper/spec/moonsama-development.js +0 -24
  156. package/cjs/services/chain-service/helper/api-helper/spec/mybank.js +0 -87
  157. package/cjs/services/chain-service/helper/api-helper/spec/neatcoin.js +0 -32
  158. package/cjs/services/chain-service/helper/api-helper/spec/neumann.js +0 -55
  159. package/cjs/services/chain-service/helper/api-helper/spec/nftmart.js +0 -134
  160. package/cjs/services/chain-service/helper/api-helper/spec/nodle.js +0 -53
  161. package/cjs/services/chain-service/helper/api-helper/spec/opal.js +0 -15
  162. package/cjs/services/chain-service/helper/api-helper/spec/opportunity.js +0 -12
  163. package/cjs/services/chain-service/helper/api-helper/spec/origintrail.js +0 -206
  164. package/cjs/services/chain-service/helper/api-helper/spec/pangolin.js +0 -11
  165. package/cjs/services/chain-service/helper/api-helper/spec/pangoro.js +0 -12
  166. package/cjs/services/chain-service/helper/api-helper/spec/parallel.js +0 -11
  167. package/cjs/services/chain-service/helper/api-helper/spec/parami.js +0 -21
  168. package/cjs/services/chain-service/helper/api-helper/spec/phoenix.js +0 -52
  169. package/cjs/services/chain-service/helper/api-helper/spec/pichiu.js +0 -36
  170. package/cjs/services/chain-service/helper/api-helper/spec/plasm.js +0 -54
  171. package/cjs/services/chain-service/helper/api-helper/spec/polkadex.js +0 -32
  172. package/cjs/services/chain-service/helper/api-helper/spec/polkafoundry.js +0 -43
  173. package/cjs/services/chain-service/helper/api-helper/spec/polymesh.js +0 -21
  174. package/cjs/services/chain-service/helper/api-helper/spec/pontem.js +0 -11
  175. package/cjs/services/chain-service/helper/api-helper/spec/prism.js +0 -24
  176. package/cjs/services/chain-service/helper/api-helper/spec/quartz.js +0 -15
  177. package/cjs/services/chain-service/helper/api-helper/spec/realis.js +0 -42
  178. package/cjs/services/chain-service/helper/api-helper/spec/riochain.js +0 -104
  179. package/cjs/services/chain-service/helper/api-helper/spec/robonomics.js +0 -41
  180. package/cjs/services/chain-service/helper/api-helper/spec/shibuya.js +0 -54
  181. package/cjs/services/chain-service/helper/api-helper/spec/shiden.js +0 -54
  182. package/cjs/services/chain-service/helper/api-helper/spec/snowbridge.js +0 -11
  183. package/cjs/services/chain-service/helper/api-helper/spec/soraSubstrate.js +0 -11
  184. package/cjs/services/chain-service/helper/api-helper/spec/spanner.js +0 -501
  185. package/cjs/services/chain-service/helper/api-helper/spec/stafi.js +0 -25
  186. package/cjs/services/chain-service/helper/api-helper/spec/standard.js +0 -12
  187. package/cjs/services/chain-service/helper/api-helper/spec/subdao.js +0 -21
  188. package/cjs/services/chain-service/helper/api-helper/spec/subgame.js +0 -185
  189. package/cjs/services/chain-service/helper/api-helper/spec/subsocial.js +0 -15
  190. package/cjs/services/chain-service/helper/api-helper/spec/subspace.js +0 -127
  191. package/cjs/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +0 -23
  192. package/cjs/services/chain-service/helper/api-helper/spec/swapdex.js +0 -45
  193. package/cjs/services/chain-service/helper/api-helper/spec/ternoa.js +0 -95
  194. package/cjs/services/chain-service/helper/api-helper/spec/trustbase.js +0 -24
  195. package/cjs/services/chain-service/helper/api-helper/spec/uart.js +0 -289
  196. package/cjs/services/chain-service/helper/api-helper/spec/unique.js +0 -124
  197. package/cjs/services/chain-service/helper/api-helper/spec/unitv.js +0 -25
  198. package/cjs/services/chain-service/helper/api-helper/spec/vln-rococo.js +0 -109
  199. package/cjs/services/chain-service/helper/api-helper/spec/vln.js +0 -45
  200. package/cjs/services/chain-service/helper/api-helper/spec/vodka.js +0 -22
  201. package/cjs/services/chain-service/helper/api-helper/spec/web3games.js +0 -43
  202. package/cjs/services/chain-service/helper/api-helper/spec/westlake.js +0 -305
  203. package/cjs/services/chain-service/helper/api-helper/spec/zCloak.js +0 -46
  204. package/cjs/services/chain-service/helper/api-helper/spec/zeitgeist.js +0 -33
  205. package/cjs/services/chain-service/helper/api-helper/spec/zenlink.js +0 -57
  206. package/cjs/services/chain-service/helper/api-helper/spec/zero.js +0 -11
  207. package/cjs/services/chain-service/helper/api-helper/util.js +0 -25
  208. package/services/chain-service/helper/api-helper/chain/crust-maxwell.d.ts +0 -98
  209. package/services/chain-service/helper/api-helper/chain/crust-maxwell.js +0 -103
  210. package/services/chain-service/helper/api-helper/chain/index.d.ts +0 -1943
  211. package/services/chain-service/helper/api-helper/chain/index.js +0 -11
  212. package/services/chain-service/helper/api-helper/index.d.ts +0 -7
  213. package/services/chain-service/helper/api-helper/index.js +0 -18
  214. package/services/chain-service/helper/api-helper/spec/acala.d.ts +0 -42
  215. package/services/chain-service/helper/api-helper/spec/acala.js +0 -5
  216. package/services/chain-service/helper/api-helper/spec/ajuna.js +0 -15
  217. package/services/chain-service/helper/api-helper/spec/altair.d.ts +0 -3
  218. package/services/chain-service/helper/api-helper/spec/altair.js +0 -24
  219. package/services/chain-service/helper/api-helper/spec/apron.d.ts +0 -3
  220. package/services/chain-service/helper/api-helper/spec/apron.js +0 -17
  221. package/services/chain-service/helper/api-helper/spec/ares-gladios.d.ts +0 -3
  222. package/services/chain-service/helper/api-helper/spec/ares-gladios.js +0 -184
  223. package/services/chain-service/helper/api-helper/spec/ares-parachain.d.ts +0 -3
  224. package/services/chain-service/helper/api-helper/spec/ares-parachain.js +0 -185
  225. package/services/chain-service/helper/api-helper/spec/astar.d.ts +0 -3
  226. package/services/chain-service/helper/api-helper/spec/astar.js +0 -37
  227. package/services/chain-service/helper/api-helper/spec/automata.d.ts +0 -3
  228. package/services/chain-service/helper/api-helper/spec/automata.js +0 -36
  229. package/services/chain-service/helper/api-helper/spec/basilisk.d.ts +0 -3
  230. package/services/chain-service/helper/api-helper/spec/basilisk.js +0 -132
  231. package/services/chain-service/helper/api-helper/spec/beresheet.d.ts +0 -3
  232. package/services/chain-service/helper/api-helper/spec/beresheet.js +0 -9
  233. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.d.ts +0 -3
  234. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +0 -5
  235. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.d.ts +0 -3
  236. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +0 -5
  237. package/services/chain-service/helper/api-helper/spec/bifrost.d.ts +0 -3
  238. package/services/chain-service/helper/api-helper/spec/bifrost.js +0 -5
  239. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.d.ts +0 -2
  240. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +0 -5
  241. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.d.ts +0 -3
  242. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +0 -115
  243. package/services/chain-service/helper/api-helper/spec/bitcountry.d.ts +0 -3
  244. package/services/chain-service/helper/api-helper/spec/bitcountry.js +0 -77
  245. package/services/chain-service/helper/api-helper/spec/canvas.d.ts +0 -3
  246. package/services/chain-service/helper/api-helper/spec/canvas.js +0 -24
  247. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.d.ts +0 -3
  248. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +0 -70
  249. package/services/chain-service/helper/api-helper/spec/centrifuge.d.ts +0 -3
  250. package/services/chain-service/helper/api-helper/spec/centrifuge.js +0 -24
  251. package/services/chain-service/helper/api-helper/spec/chainx.d.ts +0 -3
  252. package/services/chain-service/helper/api-helper/spec/chainx.js +0 -396
  253. package/services/chain-service/helper/api-helper/spec/clover-rococo.d.ts +0 -3
  254. package/services/chain-service/helper/api-helper/spec/clover-rococo.js +0 -61
  255. package/services/chain-service/helper/api-helper/spec/clover.d.ts +0 -3
  256. package/services/chain-service/helper/api-helper/spec/clover.js +0 -27
  257. package/services/chain-service/helper/api-helper/spec/coinversation.d.ts +0 -3
  258. package/services/chain-service/helper/api-helper/spec/coinversation.js +0 -17
  259. package/services/chain-service/helper/api-helper/spec/competitors-club.d.ts +0 -3
  260. package/services/chain-service/helper/api-helper/spec/competitors-club.js +0 -77
  261. package/services/chain-service/helper/api-helper/spec/crab.d.ts +0 -2
  262. package/services/chain-service/helper/api-helper/spec/crab.js +0 -5
  263. package/services/chain-service/helper/api-helper/spec/crown-sterling.d.ts +0 -3
  264. package/services/chain-service/helper/api-helper/spec/crown-sterling.js +0 -48
  265. package/services/chain-service/helper/api-helper/spec/crust.d.ts +0 -3
  266. package/services/chain-service/helper/api-helper/spec/crust.js +0 -5
  267. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.d.ts +0 -3
  268. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +0 -17
  269. package/services/chain-service/helper/api-helper/spec/darwinia.d.ts +0 -2
  270. package/services/chain-service/helper/api-helper/spec/darwinia.js +0 -5
  271. package/services/chain-service/helper/api-helper/spec/datahighway.d.ts +0 -3
  272. package/services/chain-service/helper/api-helper/spec/datahighway.js +0 -233
  273. package/services/chain-service/helper/api-helper/spec/dock-mainnet.d.ts +0 -3
  274. package/services/chain-service/helper/api-helper/spec/dock-mainnet.js +0 -9
  275. package/services/chain-service/helper/api-helper/spec/dock-testnet.d.ts +0 -3
  276. package/services/chain-service/helper/api-helper/spec/dock-testnet.js +0 -9
  277. package/services/chain-service/helper/api-helper/spec/dolphin.d.ts +0 -3
  278. package/services/chain-service/helper/api-helper/spec/dolphin.js +0 -22
  279. package/services/chain-service/helper/api-helper/spec/dotmog.d.ts +0 -3
  280. package/services/chain-service/helper/api-helper/spec/dotmog.js +0 -58
  281. package/services/chain-service/helper/api-helper/spec/eave.d.ts +0 -3
  282. package/services/chain-service/helper/api-helper/spec/eave.js +0 -409
  283. package/services/chain-service/helper/api-helper/spec/edgeware.d.ts +0 -3
  284. package/services/chain-service/helper/api-helper/spec/edgeware.js +0 -7
  285. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.d.ts +0 -3
  286. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +0 -68
  287. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.d.ts +0 -3
  288. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +0 -45
  289. package/services/chain-service/helper/api-helper/spec/encointer-para.d.ts +0 -3
  290. package/services/chain-service/helper/api-helper/spec/encointer-para.js +0 -72
  291. package/services/chain-service/helper/api-helper/spec/equilibrium.d.ts +0 -8
  292. package/services/chain-service/helper/api-helper/spec/equilibrium.js +0 -97
  293. package/services/chain-service/helper/api-helper/spec/fantour.d.ts +0 -3
  294. package/services/chain-service/helper/api-helper/spec/fantour.js +0 -63
  295. package/services/chain-service/helper/api-helper/spec/galital-parachain.d.ts +0 -3
  296. package/services/chain-service/helper/api-helper/spec/galital-parachain.js +0 -58
  297. package/services/chain-service/helper/api-helper/spec/galital.d.ts +0 -3
  298. package/services/chain-service/helper/api-helper/spec/galital.js +0 -63
  299. package/services/chain-service/helper/api-helper/spec/galois.d.ts +0 -3
  300. package/services/chain-service/helper/api-helper/spec/galois.js +0 -47
  301. package/services/chain-service/helper/api-helper/spec/gamepower.d.ts +0 -3
  302. package/services/chain-service/helper/api-helper/spec/gamepower.js +0 -64
  303. package/services/chain-service/helper/api-helper/spec/genshiro.d.ts +0 -3
  304. package/services/chain-service/helper/api-helper/spec/genshiro.js +0 -24
  305. package/services/chain-service/helper/api-helper/spec/hanonycash.d.ts +0 -3
  306. package/services/chain-service/helper/api-helper/spec/hanonycash.js +0 -26
  307. package/services/chain-service/helper/api-helper/spec/hydrate.d.ts +0 -3
  308. package/services/chain-service/helper/api-helper/spec/hydrate.js +0 -52
  309. package/services/chain-service/helper/api-helper/spec/idavoll.d.ts +0 -3
  310. package/services/chain-service/helper/api-helper/spec/idavoll.js +0 -17
  311. package/services/chain-service/helper/api-helper/spec/index.d.ts +0 -3
  312. package/services/chain-service/helper/api-helper/spec/index.js +0 -264
  313. package/services/chain-service/helper/api-helper/spec/integritee.d.ts +0 -3
  314. package/services/chain-service/helper/api-helper/spec/integritee.js +0 -28
  315. package/services/chain-service/helper/api-helper/spec/interbtc.d.ts +0 -7
  316. package/services/chain-service/helper/api-helper/spec/interbtc.js +0 -50
  317. package/services/chain-service/helper/api-helper/spec/ipse.d.ts +0 -3
  318. package/services/chain-service/helper/api-helper/spec/ipse.js +0 -106
  319. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.d.ts +0 -3
  320. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +0 -17
  321. package/services/chain-service/helper/api-helper/spec/jupiter.d.ts +0 -3
  322. package/services/chain-service/helper/api-helper/spec/jupiter.js +0 -63
  323. package/services/chain-service/helper/api-helper/spec/khala.d.ts +0 -3
  324. package/services/chain-service/helper/api-helper/spec/khala.js +0 -5
  325. package/services/chain-service/helper/api-helper/spec/kilt.d.ts +0 -3
  326. package/services/chain-service/helper/api-helper/spec/kilt.js +0 -5
  327. package/services/chain-service/helper/api-helper/spec/konomi.d.ts +0 -3
  328. package/services/chain-service/helper/api-helper/spec/konomi.js +0 -17
  329. package/services/chain-service/helper/api-helper/spec/kpron.d.ts +0 -3
  330. package/services/chain-service/helper/api-helper/spec/kpron.js +0 -17
  331. package/services/chain-service/helper/api-helper/spec/kulupu.d.ts +0 -3
  332. package/services/chain-service/helper/api-helper/spec/kulupu.js +0 -57
  333. package/services/chain-service/helper/api-helper/spec/kusari.d.ts +0 -3
  334. package/services/chain-service/helper/api-helper/spec/kusari.js +0 -38
  335. package/services/chain-service/helper/api-helper/spec/kylin.d.ts +0 -3
  336. package/services/chain-service/helper/api-helper/spec/kylin.js +0 -29
  337. package/services/chain-service/helper/api-helper/spec/laminar.d.ts +0 -3
  338. package/services/chain-service/helper/api-helper/spec/laminar.js +0 -5
  339. package/services/chain-service/helper/api-helper/spec/litentry.d.ts +0 -3
  340. package/services/chain-service/helper/api-helper/spec/litentry.js +0 -17
  341. package/services/chain-service/helper/api-helper/spec/mangata.d.ts +0 -3
  342. package/services/chain-service/helper/api-helper/spec/mangata.js +0 -13
  343. package/services/chain-service/helper/api-helper/spec/manta.d.ts +0 -3
  344. package/services/chain-service/helper/api-helper/spec/manta.js +0 -22
  345. package/services/chain-service/helper/api-helper/spec/mathchain.d.ts +0 -3
  346. package/services/chain-service/helper/api-helper/spec/mathchain.js +0 -47
  347. package/services/chain-service/helper/api-helper/spec/moonbeam.d.ts +0 -2
  348. package/services/chain-service/helper/api-helper/spec/moonbeam.js +0 -5
  349. package/services/chain-service/helper/api-helper/spec/moonsama-development.d.ts +0 -3
  350. package/services/chain-service/helper/api-helper/spec/moonsama-development.js +0 -17
  351. package/services/chain-service/helper/api-helper/spec/mybank.d.ts +0 -3
  352. package/services/chain-service/helper/api-helper/spec/mybank.js +0 -80
  353. package/services/chain-service/helper/api-helper/spec/neatcoin.d.ts +0 -3
  354. package/services/chain-service/helper/api-helper/spec/neatcoin.js +0 -25
  355. package/services/chain-service/helper/api-helper/spec/neumann.d.ts +0 -3
  356. package/services/chain-service/helper/api-helper/spec/neumann.js +0 -48
  357. package/services/chain-service/helper/api-helper/spec/nftmart.d.ts +0 -3
  358. package/services/chain-service/helper/api-helper/spec/nftmart.js +0 -127
  359. package/services/chain-service/helper/api-helper/spec/nodle.d.ts +0 -3
  360. package/services/chain-service/helper/api-helper/spec/nodle.js +0 -46
  361. package/services/chain-service/helper/api-helper/spec/opal.d.ts +0 -3
  362. package/services/chain-service/helper/api-helper/spec/opal.js +0 -9
  363. package/services/chain-service/helper/api-helper/spec/opportunity.d.ts +0 -3
  364. package/services/chain-service/helper/api-helper/spec/opportunity.js +0 -5
  365. package/services/chain-service/helper/api-helper/spec/origintrail.d.ts +0 -5
  366. package/services/chain-service/helper/api-helper/spec/origintrail.js +0 -198
  367. package/services/chain-service/helper/api-helper/spec/pangolin.d.ts +0 -2
  368. package/services/chain-service/helper/api-helper/spec/pangolin.js +0 -5
  369. package/services/chain-service/helper/api-helper/spec/pangoro.d.ts +0 -2
  370. package/services/chain-service/helper/api-helper/spec/pangoro.js +0 -7
  371. package/services/chain-service/helper/api-helper/spec/parallel.d.ts +0 -14
  372. package/services/chain-service/helper/api-helper/spec/parallel.js +0 -5
  373. package/services/chain-service/helper/api-helper/spec/parami.d.ts +0 -3
  374. package/services/chain-service/helper/api-helper/spec/parami.js +0 -14
  375. package/services/chain-service/helper/api-helper/spec/phoenix.d.ts +0 -3
  376. package/services/chain-service/helper/api-helper/spec/phoenix.js +0 -45
  377. package/services/chain-service/helper/api-helper/spec/pichiu.d.ts +0 -3
  378. package/services/chain-service/helper/api-helper/spec/pichiu.js +0 -29
  379. package/services/chain-service/helper/api-helper/spec/plasm.d.ts +0 -3
  380. package/services/chain-service/helper/api-helper/spec/plasm.js +0 -47
  381. package/services/chain-service/helper/api-helper/spec/polkadex.d.ts +0 -3
  382. package/services/chain-service/helper/api-helper/spec/polkadex.js +0 -25
  383. package/services/chain-service/helper/api-helper/spec/polkafoundry.d.ts +0 -3
  384. package/services/chain-service/helper/api-helper/spec/polkafoundry.js +0 -36
  385. package/services/chain-service/helper/api-helper/spec/polymesh.d.ts +0 -3
  386. package/services/chain-service/helper/api-helper/spec/polymesh.js +0 -13
  387. package/services/chain-service/helper/api-helper/spec/pontem.d.ts +0 -2
  388. package/services/chain-service/helper/api-helper/spec/pontem.js +0 -5
  389. package/services/chain-service/helper/api-helper/spec/prism.d.ts +0 -3
  390. package/services/chain-service/helper/api-helper/spec/prism.js +0 -17
  391. package/services/chain-service/helper/api-helper/spec/quartz.d.ts +0 -3
  392. package/services/chain-service/helper/api-helper/spec/quartz.js +0 -9
  393. package/services/chain-service/helper/api-helper/spec/realis.d.ts +0 -3
  394. package/services/chain-service/helper/api-helper/spec/realis.js +0 -35
  395. package/services/chain-service/helper/api-helper/spec/riochain.d.ts +0 -3
  396. package/services/chain-service/helper/api-helper/spec/riochain.js +0 -97
  397. package/services/chain-service/helper/api-helper/spec/robonomics.d.ts +0 -3
  398. package/services/chain-service/helper/api-helper/spec/robonomics.js +0 -34
  399. package/services/chain-service/helper/api-helper/spec/shibuya.d.ts +0 -3
  400. package/services/chain-service/helper/api-helper/spec/shibuya.js +0 -47
  401. package/services/chain-service/helper/api-helper/spec/shiden.d.ts +0 -3
  402. package/services/chain-service/helper/api-helper/spec/shiden.js +0 -47
  403. package/services/chain-service/helper/api-helper/spec/snowbridge.d.ts +0 -2
  404. package/services/chain-service/helper/api-helper/spec/snowbridge.js +0 -5
  405. package/services/chain-service/helper/api-helper/spec/soraSubstrate.d.ts +0 -3
  406. package/services/chain-service/helper/api-helper/spec/soraSubstrate.js +0 -5
  407. package/services/chain-service/helper/api-helper/spec/spanner.d.ts +0 -3
  408. package/services/chain-service/helper/api-helper/spec/spanner.js +0 -494
  409. package/services/chain-service/helper/api-helper/spec/stafi.d.ts +0 -3
  410. package/services/chain-service/helper/api-helper/spec/stafi.js +0 -18
  411. package/services/chain-service/helper/api-helper/spec/standard.d.ts +0 -3
  412. package/services/chain-service/helper/api-helper/spec/standard.js +0 -5
  413. package/services/chain-service/helper/api-helper/spec/subdao.d.ts +0 -3
  414. package/services/chain-service/helper/api-helper/spec/subdao.js +0 -14
  415. package/services/chain-service/helper/api-helper/spec/subgame.d.ts +0 -3
  416. package/services/chain-service/helper/api-helper/spec/subgame.js +0 -178
  417. package/services/chain-service/helper/api-helper/spec/subsocial.d.ts +0 -2
  418. package/services/chain-service/helper/api-helper/spec/subsocial.js +0 -8
  419. package/services/chain-service/helper/api-helper/spec/subspace.d.ts +0 -0
  420. package/services/chain-service/helper/api-helper/spec/subspace.js +0 -126
  421. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.d.ts +0 -3
  422. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +0 -16
  423. package/services/chain-service/helper/api-helper/spec/swapdex.d.ts +0 -3
  424. package/services/chain-service/helper/api-helper/spec/swapdex.js +0 -38
  425. package/services/chain-service/helper/api-helper/spec/ternoa.d.ts +0 -3
  426. package/services/chain-service/helper/api-helper/spec/ternoa.js +0 -88
  427. package/services/chain-service/helper/api-helper/spec/trustbase.d.ts +0 -3
  428. package/services/chain-service/helper/api-helper/spec/trustbase.js +0 -17
  429. package/services/chain-service/helper/api-helper/spec/uart.d.ts +0 -3
  430. package/services/chain-service/helper/api-helper/spec/uart.js +0 -282
  431. package/services/chain-service/helper/api-helper/spec/unique.d.ts +0 -3
  432. package/services/chain-service/helper/api-helper/spec/unique.js +0 -117
  433. package/services/chain-service/helper/api-helper/spec/unitv.d.ts +0 -3
  434. package/services/chain-service/helper/api-helper/spec/unitv.js +0 -18
  435. package/services/chain-service/helper/api-helper/spec/vln-rococo.d.ts +0 -3
  436. package/services/chain-service/helper/api-helper/spec/vln-rococo.js +0 -102
  437. package/services/chain-service/helper/api-helper/spec/vln.d.ts +0 -3
  438. package/services/chain-service/helper/api-helper/spec/vln.js +0 -38
  439. package/services/chain-service/helper/api-helper/spec/vodka.d.ts +0 -3
  440. package/services/chain-service/helper/api-helper/spec/vodka.js +0 -15
  441. package/services/chain-service/helper/api-helper/spec/web3games.d.ts +0 -3
  442. package/services/chain-service/helper/api-helper/spec/web3games.js +0 -36
  443. package/services/chain-service/helper/api-helper/spec/westlake.d.ts +0 -3
  444. package/services/chain-service/helper/api-helper/spec/westlake.js +0 -298
  445. package/services/chain-service/helper/api-helper/spec/zCloak.d.ts +0 -3
  446. package/services/chain-service/helper/api-helper/spec/zCloak.js +0 -39
  447. package/services/chain-service/helper/api-helper/spec/zeitgeist.d.ts +0 -3
  448. package/services/chain-service/helper/api-helper/spec/zeitgeist.js +0 -24
  449. package/services/chain-service/helper/api-helper/spec/zenlink.d.ts +0 -3
  450. package/services/chain-service/helper/api-helper/spec/zenlink.js +0 -50
  451. package/services/chain-service/helper/api-helper/spec/zero.d.ts +0 -3
  452. package/services/chain-service/helper/api-helper/spec/zero.js +0 -5
  453. package/services/chain-service/helper/api-helper/util.d.ts +0 -5
  454. package/services/chain-service/helper/api-helper/util.js +0 -15
  455. /package/services/chain-service/helper/api-helper/spec/{ajuna.d.ts → dataavail.d.ts} +0 -0
package/packageInfo.js CHANGED
@@ -7,5 +7,5 @@ export const packageInfo = {
7
7
  name: '@subwallet/extension-base',
8
8
  path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
9
9
  type: 'esm',
10
- version: '1.0.9-2'
10
+ version: '1.0.11-0'
11
11
  };
@@ -1,5 +1,6 @@
1
1
  import { SingleModeJson } from '@subwallet/extension-base/background/KoniTypes';
2
2
  export declare const API_AUTO_CONNECT_MS = 3000;
3
+ export declare const API_CONNECT_TIMEOUT = 30000;
3
4
  export declare const API_MAX_RETRY = 2;
4
5
  export declare const _API_OPTIONS_CHAIN_GROUP: {
5
6
  acala: string[];
@@ -64,6 +65,7 @@ export declare const _TRANSFER_CHAIN_GROUP: {
64
65
  statemine: string[];
65
66
  riochain: string[];
66
67
  sora_substrate: string[];
68
+ avail: string[];
67
69
  };
68
70
  export declare const _BALANCE_PARSING_CHAIN_GROUP: {
69
71
  bobabeam: string[];
@@ -5,6 +5,7 @@ import { _DEFAULT_CHAINS } from '@subwallet/chain-list';
5
5
  import { _SubstrateChainType } from '@subwallet/chain-list/types';
6
6
  import { ThemeNames } from '@subwallet/extension-base/background/KoniTypes';
7
7
  export const API_AUTO_CONNECT_MS = 3000;
8
+ export const API_CONNECT_TIMEOUT = 30000;
8
9
  export const API_MAX_RETRY = 2;
9
10
  export const _API_OPTIONS_CHAIN_GROUP = {
10
11
  acala: ['acala', 'karura', 'origintrail', 'kintsugi'],
@@ -182,7 +183,8 @@ export const _TRANSFER_CHAIN_GROUP = {
182
183
  bitcountry: ['pioneer', 'bitcountry', 'bifrost', 'bifrost_dot'],
183
184
  statemine: ['statemint', 'statemine', 'darwinia2', 'astar', 'shiden', 'shibuya', 'parallel'],
184
185
  riochain: ['riochain'],
185
- sora_substrate: ['sora_substrate']
186
+ sora_substrate: ['sora_substrate'],
187
+ avail: ['kate']
186
188
  };
187
189
  export const _BALANCE_PARSING_CHAIN_GROUP = {
188
190
  bobabeam: ['bobabeam', 'bobabase']
@@ -0,0 +1,29 @@
1
+ /// <reference types="node" />
2
+ import { ChainService } from '@subwallet/extension-base/services/chain-service';
3
+ import { _ApiOptions } from '@subwallet/extension-base/services/chain-service/handler/types';
4
+ import { _ChainBaseApi } from '@subwallet/extension-base/services/chain-service/types';
5
+ import { BehaviorSubject } from 'rxjs';
6
+ export declare const FIRST_RECONNECT_TIME = 3000;
7
+ export declare const SHORT_RETRY_TIME = 15000;
8
+ export declare const LONG_RETRY_TIME = 60000;
9
+ interface RetryObject {
10
+ retryTimes: number;
11
+ timeout?: NodeJS.Timer;
12
+ }
13
+ export declare abstract class AbstractChainHandler {
14
+ protected parent?: ChainService | undefined;
15
+ readonly apiStateMapSubject: BehaviorSubject<Record<string, boolean>>;
16
+ protected recoverMap: Record<string, RetryObject>;
17
+ protected isSleeping: boolean;
18
+ protected constructor(parent?: ChainService | undefined);
19
+ abstract getApiByChain(chain: string): _ChainBaseApi | undefined;
20
+ abstract initApi(chainSlug: string, apiUrl: string, options: Omit<_ApiOptions, 'metadata'>): Promise<_ChainBaseApi>;
21
+ abstract recoverApi(chainSlug: string): void;
22
+ abstract sleep(): Promise<void>;
23
+ abstract wakeUp(): Promise<void>;
24
+ handleConnect(chain: string, isConnected: boolean): void;
25
+ protected handleRecover(chain: string): void;
26
+ protected cancelRecover(chain: string): void;
27
+ cancelAllRecover(): void;
28
+ }
29
+ export {};
@@ -0,0 +1,83 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { BehaviorSubject } from 'rxjs';
5
+ const SHORT_RECOVER_RETRY = 3;
6
+ export const FIRST_RECONNECT_TIME = 3000;
7
+ export const SHORT_RETRY_TIME = 15000;
8
+ export const LONG_RETRY_TIME = 60000;
9
+ export class AbstractChainHandler {
10
+ apiStateMapSubject = new BehaviorSubject({});
11
+ // Recover retry times
12
+
13
+ isSleeping = false;
14
+ constructor(parent) {
15
+ this.parent = parent;
16
+ this.recoverMap = {};
17
+ }
18
+ handleConnect(chain, isConnected) {
19
+ const currentMap = this.apiStateMapSubject.getValue();
20
+ const currentStatus = currentMap[chain];
21
+
22
+ // Update api state
23
+ if (currentStatus !== isConnected) {
24
+ this.apiStateMapSubject.next({
25
+ ...currentMap,
26
+ [chain]: isConnected
27
+ });
28
+ }
29
+
30
+ // Handle connection change
31
+ if (!isConnected) {
32
+ this.handleRecover(chain);
33
+ }
34
+ }
35
+
36
+ // Recover api if it is disconnected
37
+ handleRecover(chain) {
38
+ var _this$parent, _this$parent$getChain;
39
+ // Not recover inactive chain
40
+ if (!((_this$parent = this.parent) !== null && _this$parent !== void 0 && (_this$parent$getChain = _this$parent.getChainStateByKey(chain)) !== null && _this$parent$getChain !== void 0 && _this$parent$getChain.active)) {
41
+ this.cancelRecover(chain);
42
+ return;
43
+ }
44
+
45
+ // Get retry record
46
+ const retryRecord = this.recoverMap[chain] || {
47
+ retryTimes: 0
48
+ };
49
+ clearTimeout(retryRecord.timeout);
50
+ const retryTimes = retryRecord.retryTimes;
51
+ // Slow down recover frequency if increasing recover times
52
+ const retryTimeout = retryTimes === 0 ? FIRST_RECONNECT_TIME : retryTimes >= SHORT_RECOVER_RETRY ? LONG_RETRY_TIME : SHORT_RETRY_TIME;
53
+
54
+ // Recover api after retry timeout
55
+ const timeout = setTimeout(() => {
56
+ var _this$getApiByChain;
57
+ if ((_this$getApiByChain = this.getApiByChain(chain)) !== null && _this$getApiByChain !== void 0 && _this$getApiByChain.isApiConnected || this.isSleeping) {
58
+ // Cancel recover if api is connected
59
+ this.cancelRecover(chain);
60
+ } else {
61
+ this.recoverApi(chain);
62
+ this.handleRecover(chain); // This will be cancel if api is connected
63
+ }
64
+ }, retryTimeout);
65
+ this.recoverMap[chain] = {
66
+ ...retryRecord,
67
+ retryTimes: retryTimes + 1,
68
+ timeout
69
+ };
70
+ }
71
+ cancelRecover(chain) {
72
+ const retryRecord = this.recoverMap[chain];
73
+ if (retryRecord) {
74
+ clearTimeout(retryRecord.timeout);
75
+ delete this.recoverMap[chain];
76
+ }
77
+ }
78
+ cancelAllRecover() {
79
+ Object.keys(this.recoverMap).forEach(chain => {
80
+ this.cancelRecover(chain);
81
+ });
82
+ }
83
+ }
@@ -0,0 +1,36 @@
1
+ /// <reference types="node" />
2
+ import '@polkadot/types-augment';
3
+ import { _ApiOptions } from '@subwallet/extension-base/services/chain-service/handler/types';
4
+ import { _EvmApi } from '@subwallet/extension-base/services/chain-service/types';
5
+ import { PromiseHandler } from '@subwallet/extension-base/utils/promise';
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import Web3 from 'web3';
8
+ import { HttpProvider, WebsocketProvider } from 'web3-core';
9
+ export declare class EvmApi implements _EvmApi {
10
+ chainSlug: string;
11
+ api: Web3;
12
+ apiUrl: string;
13
+ provider: HttpProvider | WebsocketProvider;
14
+ apiError?: string;
15
+ apiRetry: number;
16
+ readonly isApiConnectedSubject: BehaviorSubject<boolean>;
17
+ isApiReady: boolean;
18
+ isApiReadyOnce: boolean;
19
+ isReadyHandler: PromiseHandler<_EvmApi>;
20
+ intervalCheckApi: NodeJS.Timer;
21
+ providerName: string;
22
+ get isApiConnected(): boolean;
23
+ private updateConnectedStatus;
24
+ get isReady(): Promise<_EvmApi>;
25
+ updateApiUrl(apiUrl: string): Promise<void>;
26
+ recoverConnect(): Promise<void>;
27
+ private createProvider;
28
+ constructor(chainSlug: string, apiUrl: string, { providerName }?: _ApiOptions);
29
+ createIntervalCheckApi(): NodeJS.Timer;
30
+ clearIntervalCheckApi(): void;
31
+ connect(): void;
32
+ disconnect(): Promise<void>;
33
+ destroy(): Promise<void>;
34
+ onConnect(): void;
35
+ onDisconnect(): void;
36
+ }
@@ -0,0 +1,122 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import '@polkadot/types-augment';
5
+ import { createPromiseHandler } from '@subwallet/extension-base/utils/promise';
6
+ import { BehaviorSubject } from 'rxjs';
7
+ import Web3 from 'web3';
8
+ export class EvmApi {
9
+ apiRetry = 0;
10
+ isApiConnectedSubject = new BehaviorSubject(false);
11
+ isApiReady = false;
12
+ isApiReadyOnce = false;
13
+ get isApiConnected() {
14
+ return this.isApiConnectedSubject.getValue();
15
+ }
16
+ updateConnectedStatus(isConnected) {
17
+ if (isConnected !== this.isApiConnectedSubject.value) {
18
+ this.isApiConnectedSubject.next(isConnected);
19
+ }
20
+ }
21
+ get isReady() {
22
+ return this.isReadyHandler.promise;
23
+ }
24
+ async updateApiUrl(apiUrl) {
25
+ this.apiUrl = apiUrl;
26
+ await this.disconnect();
27
+ this.api.setProvider(this.createProvider(apiUrl));
28
+ this.connect();
29
+ }
30
+ async recoverConnect() {
31
+ const wsProvider = this.provider;
32
+ if (wsProvider.reconnect) {
33
+ wsProvider.reconnect();
34
+ }
35
+ await this.isReadyHandler.promise;
36
+ }
37
+ createProvider(apiUrl) {
38
+ if (apiUrl.startsWith('http')) {
39
+ return new Web3.providers.HttpProvider(apiUrl);
40
+ } else {
41
+ return new Web3.providers.WebsocketProvider(apiUrl);
42
+ }
43
+ }
44
+ constructor(chainSlug, apiUrl, {
45
+ providerName
46
+ } = {}) {
47
+ this.chainSlug = chainSlug;
48
+ this.apiUrl = apiUrl;
49
+ this.providerName = providerName || 'unknown';
50
+ this.provider = this.createProvider(apiUrl);
51
+ this.api = new Web3(this.provider);
52
+ this.isReadyHandler = createPromiseHandler();
53
+
54
+ // Create it only to avoid undefined error, it will be overwrite in connect()
55
+ this.intervalCheckApi = this.createIntervalCheckApi();
56
+ this.connect();
57
+ }
58
+ createIntervalCheckApi() {
59
+ this.clearIntervalCheckApi();
60
+ return setInterval(() => {
61
+ this.api.eth.net.isListening().then(() => {
62
+ this.onConnect();
63
+ }).catch(() => {
64
+ this.onDisconnect();
65
+ });
66
+ }, 10000);
67
+ }
68
+ clearIntervalCheckApi() {
69
+ clearInterval(this.intervalCheckApi);
70
+ }
71
+ connect() {
72
+ // For websocket provider, connect it
73
+ const wsProvider = this.provider;
74
+ wsProvider.connect && wsProvider.connect();
75
+ // Check if api is ready
76
+ this.api.eth.net.isListening().then(() => {
77
+ this.isApiReadyOnce = true;
78
+ this.onConnect();
79
+ }).catch(error => {
80
+ this.isApiReadyOnce = false;
81
+ this.isApiReady = false;
82
+ this.isReadyHandler.reject(error);
83
+ this.updateConnectedStatus(false);
84
+ console.warn(`Can not connect to ${this.chainSlug} (EVM) at ${this.apiUrl}`);
85
+ });
86
+
87
+ // Interval to check connecting status
88
+ this.intervalCheckApi = this.createIntervalCheckApi();
89
+ }
90
+ async disconnect() {
91
+ this.clearIntervalCheckApi();
92
+ this.onDisconnect();
93
+
94
+ // For websocket provider, disconnect it
95
+ const wsProvider = this.provider;
96
+ wsProvider.disconnect && wsProvider.disconnect();
97
+ this.updateConnectedStatus(false);
98
+ return Promise.resolve();
99
+ }
100
+ destroy() {
101
+ // Todo: implement this in the future
102
+ return this.disconnect();
103
+ }
104
+ onConnect() {
105
+ if (!this.isApiConnected) {
106
+ console.log(`Connected to ${this.chainSlug} at ${this.apiUrl}`);
107
+ this.isApiReady = true;
108
+ if (this.isApiReadyOnce) {
109
+ this.isReadyHandler.resolve(this);
110
+ }
111
+ }
112
+ this.updateConnectedStatus(true);
113
+ }
114
+ onDisconnect() {
115
+ this.updateConnectedStatus(false);
116
+ if (this.isApiConnected) {
117
+ console.warn(`Disconnected from ${this.chainSlug} of ${this.apiUrl} (EVM)`);
118
+ this.isApiReady = false;
119
+ this.isReadyHandler = createPromiseHandler();
120
+ }
121
+ }
122
+ }
@@ -1,16 +1,22 @@
1
1
  import { _AssetType } from '@subwallet/chain-list/types';
2
- import { _EvmChainSpec } from '@subwallet/extension-base/services/chain-service/handler/types';
2
+ import { ChainService } from '@subwallet/extension-base/services/chain-service';
3
+ import { AbstractChainHandler } from '@subwallet/extension-base/services/chain-service/handler/AbstractChainHandler';
4
+ import { EvmApi } from '@subwallet/extension-base/services/chain-service/handler/EvmApi';
5
+ import { _ApiOptions, _EvmChainSpec } from '@subwallet/extension-base/services/chain-service/handler/types';
3
6
  import { _EvmApi, _SmartContractTokenInfo } from '@subwallet/extension-base/services/chain-service/types';
4
- export declare class EvmChainHandler {
7
+ export declare class EvmChainHandler extends AbstractChainHandler {
5
8
  private evmApiMap;
6
9
  private logger;
7
- constructor();
8
- getEvmApiMap(): Record<string, _EvmApi>;
9
- getEvmApiByChain(chainSlug: string): _EvmApi;
10
- setEvmApi(chainSlug: string, evmApi: _EvmApi): void;
11
- destroyEvmApi(chainSlug: string): void;
12
- refreshApi(slug: string, endpoint: string, providerName?: string): void;
13
- initApi(chainSlug: string, apiUrl: string, providerName?: string): _EvmApi;
10
+ constructor(parent?: ChainService);
11
+ getEvmApiMap(): Record<string, EvmApi>;
12
+ getEvmApiByChain(chainSlug: string): EvmApi;
13
+ getApiByChain(chain: string): EvmApi;
14
+ setEvmApi(chainSlug: string, evmApi: EvmApi): void;
15
+ initApi(chainSlug: string, apiUrl: string, { onUpdateStatus, providerName }?: Omit<_ApiOptions, 'metadata'>): Promise<EvmApi>;
16
+ recoverApi(chainSlug: string): Promise<void>;
17
+ destroyEvmApi(chain: string): void;
18
+ sleep(): Promise<void>;
19
+ wakeUp(): Promise<void>;
14
20
  getChainSpec(evmApi: _EvmApi): Promise<_EvmChainSpec>;
15
21
  getSmartContractTokenInfo(contractAddress: string, tokenType: _AssetType, originChain: string): Promise<_SmartContractTokenInfo>;
16
22
  }
@@ -2,12 +2,14 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { _AssetType } from '@subwallet/chain-list/types';
5
+ import { AbstractChainHandler } from '@subwallet/extension-base/services/chain-service/handler/AbstractChainHandler';
6
+ import { EvmApi } from '@subwallet/extension-base/services/chain-service/handler/EvmApi';
5
7
  import { _ERC20_ABI, _ERC721_ABI } from '@subwallet/extension-base/services/chain-service/helper';
6
- import Web3 from 'web3';
7
8
  import { logger as createLogger } from '@polkadot/util/logger';
8
- export class EvmChainHandler {
9
+ export class EvmChainHandler extends AbstractChainHandler {
9
10
  evmApiMap = {};
10
- constructor() {
11
+ constructor(parent) {
12
+ super(parent);
11
13
  this.logger = createLogger('evm-chain-handler');
12
14
  }
13
15
  getEvmApiMap() {
@@ -16,47 +18,61 @@ export class EvmChainHandler {
16
18
  getEvmApiByChain(chainSlug) {
17
19
  return this.evmApiMap[chainSlug];
18
20
  }
21
+ getApiByChain(chain) {
22
+ return this.getEvmApiByChain(chain);
23
+ }
19
24
  setEvmApi(chainSlug, evmApi) {
20
25
  this.evmApiMap[chainSlug] = evmApi;
21
26
  }
22
- destroyEvmApi(chainSlug) {
23
- // TODO: handle API destroy better
24
- delete this.evmApiMap[chainSlug];
27
+ async initApi(chainSlug, apiUrl, {
28
+ onUpdateStatus,
29
+ providerName
30
+ } = {}) {
31
+ const existed = this.getEvmApiByChain(chainSlug);
32
+ if (existed) {
33
+ existed.connect();
34
+ if (apiUrl !== existed.apiUrl) {
35
+ existed.updateApiUrl(apiUrl).catch(console.error);
36
+ }
37
+ return existed;
38
+ }
39
+ const apiObject = new EvmApi(chainSlug, apiUrl, {
40
+ providerName
41
+ });
42
+ apiObject.isApiConnectedSubject.subscribe(this.handleConnect.bind(this, chainSlug));
43
+ apiObject.isApiConnectedSubject.subscribe(onUpdateStatus);
44
+ return Promise.resolve(apiObject);
45
+ }
46
+ async recoverApi(chainSlug) {
47
+ const existed = this.getEvmApiByChain(chainSlug);
48
+ if (existed && !existed.isApiReadyOnce) {
49
+ console.log(`Reconnect ${existed.providerName || existed.chainSlug} at ${existed.apiUrl}`);
50
+ return existed.recoverConnect();
51
+ }
25
52
  }
26
- refreshApi(slug, endpoint, providerName) {
27
- this.evmApiMap[slug] = this.initApi(slug, endpoint, providerName);
53
+ destroyEvmApi(chain) {
54
+ const evmApi = this.getEvmApiByChain(chain);
55
+ evmApi === null || evmApi === void 0 ? void 0 : evmApi.destroy().catch(console.error);
28
56
  }
29
- initApi(chainSlug, apiUrl, providerName) {
30
- let api;
31
- if (apiUrl.startsWith('http')) {
32
- api = new Web3(new Web3.providers.HttpProvider(apiUrl));
33
- } else {
34
- api = new Web3(new Web3.providers.WebsocketProvider(apiUrl));
57
+ async sleep() {
58
+ this.isSleeping = true;
59
+ this.cancelAllRecover();
60
+ await Promise.all(Object.values(this.getEvmApiMap()).map(evmApi => {
61
+ return evmApi.disconnect().catch(console.error);
62
+ }));
63
+ return Promise.resolve();
64
+ }
65
+ wakeUp() {
66
+ var _this$parent;
67
+ this.isSleeping = false;
68
+ const activeChains = ((_this$parent = this.parent) === null || _this$parent === void 0 ? void 0 : _this$parent.getActiveChains()) || [];
69
+ for (const chain of activeChains) {
70
+ const evmApi = this.getEvmApiByChain(chain);
71
+
72
+ // Not found evmApi mean it active with substrate interface
73
+ evmApi === null || evmApi === void 0 ? void 0 : evmApi.connect();
35
74
  }
36
- return {
37
- api,
38
- providerName,
39
- chainSlug,
40
- apiUrl,
41
- isApiReady: true,
42
- isApiReadyOnce: true,
43
- isApiConnected: true,
44
- isApiInitialized: true,
45
- get isReady() {
46
- const self = this;
47
- async function f() {
48
- return new Promise((resolve, reject) => {
49
- (function wait() {
50
- if (self.isApiReady) {
51
- return resolve(self);
52
- }
53
- setTimeout(wait, 10);
54
- })();
55
- });
56
- }
57
- return f();
58
- }
59
- };
75
+ return Promise.resolve();
60
76
  }
61
77
  async getChainSpec(evmApi) {
62
78
  const chainId = await evmApi.api.eth.getChainId();
@@ -0,0 +1,48 @@
1
+ import '@polkadot/types-augment';
2
+ import { MetadataItem } from '@subwallet/extension-base/background/KoniTypes';
3
+ import { _ApiOptions } from '@subwallet/extension-base/services/chain-service/handler/types';
4
+ import { _SubstrateApi, _SubstrateDefaultFormatBalance } from '@subwallet/extension-base/services/chain-service/types';
5
+ import { BehaviorSubject } from 'rxjs';
6
+ import { ApiPromise } from '@polkadot/api';
7
+ import { SubmittableExtrinsicFunction } from '@polkadot/api/promise/types';
8
+ import { ProviderInterface } from '@polkadot/rpc-provider/types';
9
+ import { Registry } from '@polkadot/types/types';
10
+ export declare class SubstrateApi implements _SubstrateApi {
11
+ chainSlug: string;
12
+ api: ApiPromise;
13
+ providerName?: string;
14
+ provider: ProviderInterface;
15
+ apiUrl: string;
16
+ metadata?: MetadataItem;
17
+ useLightClient: boolean;
18
+ isApiReady: boolean;
19
+ isApiReadyOnce: boolean;
20
+ apiError?: string;
21
+ private handleApiReady;
22
+ readonly isApiConnectedSubject: BehaviorSubject<boolean>;
23
+ get isApiConnected(): boolean;
24
+ private updateConnectedStatus;
25
+ apiDefaultTx?: SubmittableExtrinsicFunction;
26
+ apiDefaultTxSudo?: SubmittableExtrinsicFunction;
27
+ defaultFormatBalance?: _SubstrateDefaultFormatBalance;
28
+ registry: Registry;
29
+ specName: string;
30
+ specVersion: string;
31
+ systemChain: string;
32
+ systemName: string;
33
+ systemVersion: string;
34
+ private createProvider;
35
+ private createApi;
36
+ constructor(chainSlug: string, apiUrl: string, { metadata, providerName }?: _ApiOptions);
37
+ get isReady(): Promise<_SubstrateApi>;
38
+ updateApiUrl(apiUrl: string): Promise<void>;
39
+ connect(): void;
40
+ disconnect(): Promise<void>;
41
+ recoverConnect(): Promise<void>;
42
+ destroy(): Promise<void>;
43
+ onReady(): void;
44
+ onConnect(): void;
45
+ onDisconnect(): void;
46
+ onError(e: Error): void;
47
+ fillApiInfo(): Promise<void>;
48
+ }