@subwallet/extension-base 0.8.4-0 → 1.0.2-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (865) hide show
  1. package/background/KoniTypes.d.ts +704 -507
  2. package/background/KoniTypes.js +155 -51
  3. package/background/RequestBytesSign.d.ts +1 -1
  4. package/background/RequestExtrinsicSign.d.ts +1 -1
  5. package/background/errors/BalanceError.d.ts +6 -0
  6. package/background/errors/BalanceError.js +33 -0
  7. package/background/errors/EvmProviderError.d.ts +6 -0
  8. package/background/errors/EvmProviderError.js +45 -0
  9. package/background/errors/ProviderError.d.ts +6 -0
  10. package/background/errors/ProviderError.js +32 -0
  11. package/background/errors/SWError.d.ts +12 -0
  12. package/background/errors/SWError.js +18 -0
  13. package/background/errors/TransactionError.d.ts +6 -0
  14. package/background/errors/TransactionError.js +61 -0
  15. package/background/handlers/Extension.d.ts +3 -1
  16. package/background/handlers/Extension.js +7 -11
  17. package/background/handlers/State.d.ts +5 -1
  18. package/background/handlers/State.js +54 -30
  19. package/background/handlers/Tabs.js +2 -2
  20. package/background/types.d.ts +20 -13
  21. package/background/warnings/SWWarning.d.ts +7 -0
  22. package/{errors/SubWalletProviderError.js → background/warnings/SWWarning.js} +4 -3
  23. package/background/warnings/TransactionWarning.d.ts +6 -0
  24. package/background/warnings/TransactionWarning.js +19 -0
  25. package/cjs/background/KoniTypes.js +158 -58
  26. package/cjs/background/errors/BalanceError.js +39 -0
  27. package/cjs/background/errors/EvmProviderError.js +52 -0
  28. package/cjs/background/errors/ProviderError.js +39 -0
  29. package/cjs/background/errors/SWError.js +25 -0
  30. package/cjs/background/errors/TransactionError.js +67 -0
  31. package/cjs/background/handlers/Extension.js +7 -10
  32. package/cjs/background/handlers/State.js +57 -32
  33. package/cjs/background/handlers/Tabs.js +2 -2
  34. package/cjs/{errors/SubWalletProviderError.js → background/warnings/SWWarning.js} +6 -5
  35. package/cjs/background/warnings/TransactionWarning.js +26 -0
  36. package/cjs/constants/i18n.js +32 -0
  37. package/cjs/constants/index.js +98 -0
  38. package/cjs/constants/staking.js +14 -0
  39. package/cjs/defaults.js +4 -2
  40. package/cjs/koni/api/coingecko.js +46 -0
  41. package/cjs/koni/api/donate.js +20 -0
  42. package/cjs/koni/api/dotsama/balance.js +579 -0
  43. package/cjs/koni/api/dotsama/crowdloan.js +145 -0
  44. package/cjs/koni/api/dotsama/parseTransaction.js +100 -0
  45. package/cjs/koni/api/dotsama/transfer.js +164 -0
  46. package/cjs/koni/api/dotsama/typeRegistry.js +13 -0
  47. package/cjs/koni/api/nft/acala_nft/index.js +153 -0
  48. package/cjs/koni/api/nft/bit.country/index.js +127 -0
  49. package/cjs/koni/api/nft/config.js +144 -0
  50. package/cjs/koni/api/nft/evm_nft/index.js +169 -0
  51. package/cjs/koni/api/nft/index.js +150 -0
  52. package/cjs/koni/api/nft/karura_nft/index.js +157 -0
  53. package/cjs/koni/api/nft/nft.js +96 -0
  54. package/cjs/koni/api/nft/quartz_nft/index.js +207 -0
  55. package/cjs/koni/api/nft/quartz_nft/protobuf.js +85 -0
  56. package/cjs/koni/api/nft/rmrk_nft/index.js +260 -0
  57. package/cjs/koni/api/nft/statemine_nft/index.js +144 -0
  58. package/cjs/koni/api/nft/transfer.js +102 -0
  59. package/cjs/koni/api/nft/unique_nft/index.js +198 -0
  60. package/cjs/koni/api/nft/unique_nft/protobuf.js +93 -0
  61. package/cjs/koni/api/nft/unique_nft/runtime_types.js +122 -0
  62. package/cjs/koni/api/nft/unique_nft/uniqueNftV2.js +70 -0
  63. package/cjs/koni/api/nft/wasm_nft/index.js +295 -0
  64. package/cjs/koni/api/nft/wasm_nft/utils.js +19 -0
  65. package/cjs/koni/api/staking/bonding/amplitude.js +187 -0
  66. package/cjs/koni/api/staking/bonding/astar.js +255 -0
  67. package/cjs/koni/api/staking/bonding/index.js +108 -0
  68. package/cjs/koni/api/staking/bonding/paraChain.js +260 -0
  69. package/cjs/koni/api/staking/bonding/relayChain.js +405 -0
  70. package/cjs/koni/api/staking/bonding/utils.js +248 -0
  71. package/cjs/koni/api/staking/config.js +47 -0
  72. package/cjs/koni/api/staking/index.js +77 -0
  73. package/cjs/koni/api/staking/paraChain.js +226 -0
  74. package/cjs/koni/api/staking/relayChain.js +171 -0
  75. package/cjs/koni/api/staking/subsquidStaking.js +109 -0
  76. package/cjs/koni/api/staking/utils.js +17 -0
  77. package/cjs/koni/api/subquery/__generated__/DotSamaHistory.js +1 -0
  78. package/cjs/koni/api/subquery/subquery.js +21 -0
  79. package/cjs/koni/api/tokens/evm/balance.js +15 -0
  80. package/cjs/koni/api/tokens/evm/transfer.js +112 -0
  81. package/cjs/koni/api/tokens/evm/web3.js +17 -0
  82. package/cjs/koni/api/tokens/index.js +17 -0
  83. package/cjs/koni/api/tokens/wasm/index.js +36 -0
  84. package/cjs/koni/api/xcm/index.js +38 -0
  85. package/cjs/koni/api/xcm/polkadotXcm.js +58 -0
  86. package/cjs/koni/api/xcm/utils.js +63 -0
  87. package/cjs/koni/api/xcm/xTokens.js +59 -0
  88. package/cjs/koni/api/xcm/xcmPallet.js +52 -0
  89. package/cjs/koni/background/cron.js +207 -0
  90. package/cjs/koni/background/events.js +14 -0
  91. package/cjs/koni/background/handlers/Extension.js +3086 -0
  92. package/cjs/koni/background/handlers/Mobile.js +138 -0
  93. package/cjs/koni/background/handlers/State.js +1443 -0
  94. package/cjs/koni/background/handlers/Tabs.js +799 -0
  95. package/cjs/koni/background/handlers/index.js +90 -0
  96. package/cjs/koni/background/subscription.js +286 -0
  97. package/cjs/packageInfo.js +1 -1
  98. package/cjs/page/SubWalleEvmProvider.js +142 -0
  99. package/cjs/page/index.js +8 -2
  100. package/cjs/services/balance-service/index.js +108 -0
  101. package/cjs/services/chain-service/constants.js +221 -0
  102. package/cjs/services/chain-service/handler/EvmChainHandler.js +144 -0
  103. package/cjs/services/chain-service/handler/SubstrateChainHandler.js +348 -0
  104. package/cjs/services/chain-service/handler/light-client/index.js +120 -0
  105. package/cjs/services/chain-service/handler/types.js +20 -0
  106. package/cjs/services/chain-service/heath-check/index.js +60 -0
  107. package/cjs/services/chain-service/helper/api-helper/chain/crust-maxwell.js +108 -0
  108. package/cjs/services/chain-service/helper/api-helper/chain/index.js +17 -0
  109. package/cjs/services/chain-service/helper/api-helper/index.js +35 -0
  110. package/cjs/services/chain-service/helper/api-helper/spec/acala.js +11 -0
  111. package/cjs/services/chain-service/helper/api-helper/spec/ajuna.js +22 -0
  112. package/cjs/services/chain-service/helper/api-helper/spec/altair.js +31 -0
  113. package/cjs/services/chain-service/helper/api-helper/spec/apron.js +24 -0
  114. package/cjs/services/chain-service/helper/api-helper/spec/ares-gladios.js +191 -0
  115. package/cjs/services/chain-service/helper/api-helper/spec/ares-parachain.js +192 -0
  116. package/cjs/services/chain-service/helper/api-helper/spec/astar.js +44 -0
  117. package/cjs/services/chain-service/helper/api-helper/spec/automata.js +43 -0
  118. package/cjs/services/chain-service/helper/api-helper/spec/basilisk.js +139 -0
  119. package/cjs/services/chain-service/helper/api-helper/spec/beresheet.js +12 -0
  120. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +11 -0
  121. package/cjs/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +11 -0
  122. package/cjs/services/chain-service/helper/api-helper/spec/bifrost.js +11 -0
  123. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +11 -0
  124. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +122 -0
  125. package/cjs/services/chain-service/helper/api-helper/spec/bitcountry.js +84 -0
  126. package/cjs/services/chain-service/helper/api-helper/spec/canvas.js +31 -0
  127. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +77 -0
  128. package/cjs/services/chain-service/helper/api-helper/spec/centrifuge.js +31 -0
  129. package/cjs/services/chain-service/helper/api-helper/spec/chainx.js +403 -0
  130. package/cjs/services/chain-service/helper/api-helper/spec/clover-rococo.js +68 -0
  131. package/cjs/services/chain-service/helper/api-helper/spec/clover.js +34 -0
  132. package/cjs/services/chain-service/helper/api-helper/spec/coinversation.js +24 -0
  133. package/cjs/services/chain-service/helper/api-helper/spec/competitors-club.js +84 -0
  134. package/cjs/services/chain-service/helper/api-helper/spec/crab.js +11 -0
  135. package/cjs/services/chain-service/helper/api-helper/spec/crown-sterling.js +55 -0
  136. package/cjs/services/chain-service/helper/api-helper/spec/crust.js +11 -0
  137. package/cjs/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +24 -0
  138. package/cjs/services/chain-service/helper/api-helper/spec/darwinia.js +11 -0
  139. package/cjs/services/chain-service/helper/api-helper/spec/datahighway.js +240 -0
  140. package/cjs/services/chain-service/helper/api-helper/spec/dock-mainnet.js +16 -0
  141. package/cjs/services/chain-service/helper/api-helper/spec/dock-testnet.js +16 -0
  142. package/cjs/services/chain-service/helper/api-helper/spec/dolphin.js +29 -0
  143. package/cjs/services/chain-service/helper/api-helper/spec/dotmog.js +65 -0
  144. package/cjs/services/chain-service/helper/api-helper/spec/eave.js +416 -0
  145. package/cjs/services/chain-service/helper/api-helper/spec/edgeware.js +11 -0
  146. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +75 -0
  147. package/cjs/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +52 -0
  148. package/cjs/services/chain-service/helper/api-helper/spec/encointer-para.js +79 -0
  149. package/cjs/services/chain-service/helper/api-helper/spec/equilibrium.js +109 -0
  150. package/cjs/services/chain-service/helper/api-helper/spec/fantour.js +70 -0
  151. package/cjs/services/chain-service/helper/api-helper/spec/galital-parachain.js +65 -0
  152. package/cjs/services/chain-service/helper/api-helper/spec/galital.js +70 -0
  153. package/cjs/services/chain-service/helper/api-helper/spec/galois.js +54 -0
  154. package/cjs/services/chain-service/helper/api-helper/spec/gamepower.js +71 -0
  155. package/cjs/services/chain-service/helper/api-helper/spec/genshiro.js +31 -0
  156. package/cjs/services/chain-service/helper/api-helper/spec/hanonycash.js +33 -0
  157. package/cjs/services/chain-service/helper/api-helper/spec/hydrate.js +59 -0
  158. package/cjs/services/chain-service/helper/api-helper/spec/idavoll.js +24 -0
  159. package/cjs/services/chain-service/helper/api-helper/spec/index.js +272 -0
  160. package/cjs/services/chain-service/helper/api-helper/spec/integritee.js +35 -0
  161. package/cjs/services/chain-service/helper/api-helper/spec/interbtc.js +60 -0
  162. package/cjs/services/chain-service/helper/api-helper/spec/ipse.js +113 -0
  163. package/cjs/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +24 -0
  164. package/cjs/services/chain-service/helper/api-helper/spec/jupiter.js +70 -0
  165. package/cjs/services/chain-service/helper/api-helper/spec/khala.js +11 -0
  166. package/cjs/services/chain-service/helper/api-helper/spec/kilt.js +11 -0
  167. package/cjs/services/chain-service/helper/api-helper/spec/konomi.js +24 -0
  168. package/cjs/services/chain-service/helper/api-helper/spec/kpron.js +24 -0
  169. package/cjs/services/chain-service/helper/api-helper/spec/kulupu.js +64 -0
  170. package/cjs/services/chain-service/helper/api-helper/spec/kusari.js +45 -0
  171. package/cjs/services/chain-service/helper/api-helper/spec/kylin.js +36 -0
  172. package/cjs/services/chain-service/helper/api-helper/spec/laminar.js +11 -0
  173. package/cjs/services/chain-service/helper/api-helper/spec/litentry.js +24 -0
  174. package/cjs/services/chain-service/helper/api-helper/spec/mangata.js +20 -0
  175. package/cjs/services/chain-service/helper/api-helper/spec/manta.js +29 -0
  176. package/cjs/services/chain-service/helper/api-helper/spec/mathchain.js +54 -0
  177. package/cjs/services/chain-service/helper/api-helper/spec/moonbeam.js +11 -0
  178. package/cjs/services/chain-service/helper/api-helper/spec/moonsama-development.js +24 -0
  179. package/cjs/services/chain-service/helper/api-helper/spec/mybank.js +87 -0
  180. package/cjs/services/chain-service/helper/api-helper/spec/neatcoin.js +32 -0
  181. package/cjs/services/chain-service/helper/api-helper/spec/neumann.js +55 -0
  182. package/cjs/services/chain-service/helper/api-helper/spec/nftmart.js +134 -0
  183. package/cjs/services/chain-service/helper/api-helper/spec/nodle.js +53 -0
  184. package/cjs/services/chain-service/helper/api-helper/spec/opal.js +15 -0
  185. package/cjs/services/chain-service/helper/api-helper/spec/opportunity.js +12 -0
  186. package/cjs/services/chain-service/helper/api-helper/spec/origintrail.js +206 -0
  187. package/cjs/services/chain-service/helper/api-helper/spec/pangolin.js +11 -0
  188. package/cjs/services/chain-service/helper/api-helper/spec/pangoro.js +12 -0
  189. package/cjs/services/chain-service/helper/api-helper/spec/parallel.js +11 -0
  190. package/cjs/services/chain-service/helper/api-helper/spec/parami.js +21 -0
  191. package/cjs/services/chain-service/helper/api-helper/spec/phoenix.js +52 -0
  192. package/cjs/services/chain-service/helper/api-helper/spec/pichiu.js +36 -0
  193. package/cjs/services/chain-service/helper/api-helper/spec/plasm.js +54 -0
  194. package/cjs/services/chain-service/helper/api-helper/spec/polkadex.js +32 -0
  195. package/cjs/services/chain-service/helper/api-helper/spec/polkafoundry.js +43 -0
  196. package/cjs/services/chain-service/helper/api-helper/spec/polymesh.js +21 -0
  197. package/cjs/services/chain-service/helper/api-helper/spec/pontem.js +11 -0
  198. package/cjs/services/chain-service/helper/api-helper/spec/prism.js +24 -0
  199. package/cjs/services/chain-service/helper/api-helper/spec/quartz.js +15 -0
  200. package/cjs/services/chain-service/helper/api-helper/spec/realis.js +42 -0
  201. package/cjs/services/chain-service/helper/api-helper/spec/riochain.js +104 -0
  202. package/cjs/services/chain-service/helper/api-helper/spec/robonomics.js +41 -0
  203. package/cjs/services/chain-service/helper/api-helper/spec/shibuya.js +54 -0
  204. package/cjs/services/chain-service/helper/api-helper/spec/shiden.js +54 -0
  205. package/cjs/services/chain-service/helper/api-helper/spec/snowbridge.js +11 -0
  206. package/cjs/services/chain-service/helper/api-helper/spec/soraSubstrate.js +11 -0
  207. package/cjs/services/chain-service/helper/api-helper/spec/spanner.js +501 -0
  208. package/cjs/services/chain-service/helper/api-helper/spec/stafi.js +25 -0
  209. package/cjs/services/chain-service/helper/api-helper/spec/standard.js +12 -0
  210. package/cjs/services/chain-service/helper/api-helper/spec/subdao.js +21 -0
  211. package/cjs/services/chain-service/helper/api-helper/spec/subgame.js +185 -0
  212. package/cjs/services/chain-service/helper/api-helper/spec/subsocial.js +15 -0
  213. package/cjs/services/chain-service/helper/api-helper/spec/subspace.js +127 -0
  214. package/cjs/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +23 -0
  215. package/cjs/services/chain-service/helper/api-helper/spec/swapdex.js +45 -0
  216. package/cjs/services/chain-service/helper/api-helper/spec/ternoa.js +95 -0
  217. package/cjs/services/chain-service/helper/api-helper/spec/trustbase.js +24 -0
  218. package/cjs/services/chain-service/helper/api-helper/spec/uart.js +289 -0
  219. package/cjs/services/chain-service/helper/api-helper/spec/unique.js +124 -0
  220. package/cjs/services/chain-service/helper/api-helper/spec/unitv.js +25 -0
  221. package/cjs/services/chain-service/helper/api-helper/spec/vln-rococo.js +109 -0
  222. package/cjs/services/chain-service/helper/api-helper/spec/vln.js +45 -0
  223. package/cjs/services/chain-service/helper/api-helper/spec/vodka.js +22 -0
  224. package/cjs/services/chain-service/helper/api-helper/spec/web3games.js +43 -0
  225. package/cjs/services/chain-service/helper/api-helper/spec/westlake.js +305 -0
  226. package/cjs/services/chain-service/helper/api-helper/spec/zCloak.js +46 -0
  227. package/cjs/services/chain-service/helper/api-helper/spec/zeitgeist.js +33 -0
  228. package/cjs/services/chain-service/helper/api-helper/spec/zenlink.js +57 -0
  229. package/cjs/services/chain-service/helper/api-helper/spec/zero.js +11 -0
  230. package/cjs/services/chain-service/helper/api-helper/util.js +25 -0
  231. package/cjs/services/chain-service/helper/index.js +24 -0
  232. package/cjs/services/chain-service/index.js +1188 -0
  233. package/cjs/services/chain-service/types.js +26 -0
  234. package/cjs/services/chain-service/utils.js +391 -0
  235. package/cjs/services/event-service/index.js +71 -0
  236. package/cjs/services/event-service/types.js +1 -0
  237. package/cjs/services/history-service/index.js +129 -0
  238. package/cjs/services/history-service/subsquid-multi-chain-history.js +268 -0
  239. package/cjs/services/keyring-service/index.js +101 -0
  240. package/cjs/services/migration-service/Base.js +20 -0
  241. package/cjs/services/migration-service/index.js +48 -0
  242. package/cjs/services/migration-service/scripts/AutoEnableChainsTokens.js +24 -0
  243. package/cjs/services/migration-service/scripts/ClearOldStorage.js +19 -0
  244. package/cjs/services/migration-service/scripts/MigrateImportedToken.js +49 -0
  245. package/cjs/services/migration-service/scripts/MigrateNetworkSettings.js +59 -0
  246. package/cjs/services/migration-service/scripts/MigrateSettings.js +31 -0
  247. package/cjs/services/migration-service/scripts/MigrateTransactionHistory.js +72 -0
  248. package/cjs/services/migration-service/scripts/index.js +26 -0
  249. package/cjs/services/notification-service/NotificationService.js +53 -0
  250. package/cjs/services/price-service/coingecko.js +53 -0
  251. package/cjs/services/price-service/index.js +76 -0
  252. package/cjs/services/request-service/constants.js +17 -0
  253. package/cjs/services/request-service/handler/AuthRequestHandler.js +296 -0
  254. package/cjs/services/request-service/handler/EvmRequestHandler.js +217 -0
  255. package/cjs/services/request-service/handler/MetadataRequestHandler.js +85 -0
  256. package/cjs/services/request-service/handler/PopupHandler.js +86 -0
  257. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +105 -0
  258. package/cjs/services/request-service/helper/index.js +82 -0
  259. package/cjs/services/request-service/index.js +161 -0
  260. package/cjs/services/request-service/types.js +1 -0
  261. package/cjs/services/setting-service/SettingService.js +39 -0
  262. package/cjs/services/setting-service/constants.js +14 -0
  263. package/cjs/services/storage-service/DatabaseService.js +228 -0
  264. package/cjs/services/storage-service/databases/index.js +47 -0
  265. package/cjs/services/storage-service/db-stores/Asset.js +20 -0
  266. package/cjs/services/storage-service/db-stores/Balance.js +32 -0
  267. package/cjs/services/storage-service/db-stores/BaseStore.js +29 -0
  268. package/cjs/services/storage-service/db-stores/BaseStoreWithAddress.js +28 -0
  269. package/cjs/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +27 -0
  270. package/cjs/services/storage-service/db-stores/BaseStoreWithChain.js +20 -0
  271. package/cjs/services/storage-service/db-stores/Chain.js +20 -0
  272. package/cjs/services/storage-service/db-stores/ChainStakingMetadata.js +38 -0
  273. package/cjs/services/storage-service/db-stores/Crowdloan.js +23 -0
  274. package/cjs/services/storage-service/db-stores/Migration.js +13 -0
  275. package/cjs/services/storage-service/db-stores/Nft.js +75 -0
  276. package/cjs/services/storage-service/db-stores/NftCollection.js +30 -0
  277. package/cjs/services/storage-service/db-stores/NominatorMetadata.js +30 -0
  278. package/cjs/services/storage-service/db-stores/Price.js +13 -0
  279. package/cjs/services/storage-service/db-stores/Staking.js +40 -0
  280. package/cjs/services/storage-service/db-stores/Transaction.js +52 -0
  281. package/cjs/services/storage-service/db-stores/index.js +76 -0
  282. package/cjs/services/subscan-service/index.js +107 -0
  283. package/cjs/services/subscan-service/subscan-chain-map.js +74 -0
  284. package/cjs/services/subscan-service/types.js +1 -0
  285. package/cjs/services/transaction-service/event-parser/index.js +103 -0
  286. package/cjs/services/transaction-service/helpers/index.js +23 -0
  287. package/cjs/services/transaction-service/index.js +746 -0
  288. package/cjs/services/transaction-service/types.js +1 -0
  289. package/cjs/services/transaction-service/utils.js +30 -0
  290. package/cjs/stores/AccountRef.js +18 -0
  291. package/cjs/stores/Application.js +28 -0
  292. package/cjs/stores/AssetSetting.js +19 -0
  293. package/cjs/stores/Authorize.js +18 -0
  294. package/cjs/stores/CurrentAccountStore.js +18 -0
  295. package/cjs/stores/Keyring.js +39 -0
  296. package/cjs/stores/Settings.js +18 -0
  297. package/cjs/stores/SubscribableStore.js +33 -0
  298. package/cjs/stores/TransactionHistory.js +37 -0
  299. package/cjs/stores/TransactionHistoryV2.js +18 -0
  300. package/cjs/stores/TransactionHistoryV3.js +18 -0
  301. package/cjs/stores/index.js +8 -1
  302. package/cjs/utils/address.js +25 -0
  303. package/cjs/utils/eth/mergeTransactionAndSignature.js +22 -0
  304. package/cjs/utils/eth/parseTransaction/base.js +282 -0
  305. package/cjs/utils/eth/parseTransaction/index.js +229 -0
  306. package/cjs/utils/eth.js +76 -0
  307. package/cjs/utils/index.js +324 -1
  308. package/cjs/utils/keyring.js +57 -0
  309. package/cjs/utils/request.js +13 -0
  310. package/constants/i18n.d.ts +2 -0
  311. package/constants/i18n.js +25 -0
  312. package/constants/index.d.ts +26 -0
  313. package/constants/index.js +29 -0
  314. package/constants/staking.d.ts +1 -0
  315. package/constants/staking.js +7 -0
  316. package/defaults.d.ts +3 -2
  317. package/defaults.js +3 -2
  318. package/koni/api/coingecko.d.ts +2 -0
  319. package/koni/api/coingecko.js +37 -0
  320. package/koni/api/donate.d.ts +3 -0
  321. package/koni/api/donate.js +13 -0
  322. package/koni/api/dotsama/balance.d.ts +7 -0
  323. package/koni/api/dotsama/balance.js +567 -0
  324. package/koni/api/dotsama/crowdloan.d.ts +7 -0
  325. package/koni/api/dotsama/crowdloan.js +130 -0
  326. package/koni/api/dotsama/parseTransaction.d.ts +3 -0
  327. package/koni/api/dotsama/parseTransaction.js +93 -0
  328. package/koni/api/dotsama/transfer.d.ts +17 -0
  329. package/koni/api/dotsama/transfer.js +154 -0
  330. package/koni/api/dotsama/typeRegistry.d.ts +3 -0
  331. package/koni/api/dotsama/typeRegistry.js +6 -0
  332. package/koni/api/nft/acala_nft/index.d.ts +18 -0
  333. package/koni/api/nft/acala_nft/index.js +145 -0
  334. package/koni/api/nft/bit.country/index.d.ts +12 -0
  335. package/koni/api/nft/bit.country/index.js +119 -0
  336. package/koni/api/nft/config.d.ts +57 -0
  337. package/koni/api/nft/config.js +110 -0
  338. package/koni/api/nft/evm_nft/index.d.ts +13 -0
  339. package/koni/api/nft/evm_nft/index.js +161 -0
  340. package/koni/api/nft/index.d.ts +22 -0
  341. package/koni/api/nft/index.js +141 -0
  342. package/koni/api/nft/karura_nft/index.d.ts +18 -0
  343. package/koni/api/nft/karura_nft/index.js +148 -0
  344. package/koni/api/nft/nft.d.ts +29 -0
  345. package/koni/api/nft/nft.js +89 -0
  346. package/koni/api/nft/quartz_nft/index.d.ts +62 -0
  347. package/koni/api/nft/quartz_nft/index.js +199 -0
  348. package/koni/api/nft/quartz_nft/protobuf.d.ts +3 -0
  349. package/koni/api/nft/quartz_nft/protobuf.js +78 -0
  350. package/koni/api/nft/rmrk_nft/index.d.ts +10 -0
  351. package/koni/api/nft/rmrk_nft/index.js +252 -0
  352. package/koni/api/nft/statemine_nft/index.d.ts +18 -0
  353. package/koni/api/nft/statemine_nft/index.js +136 -0
  354. package/koni/api/nft/transfer.d.ts +8 -0
  355. package/koni/api/nft/transfer.js +90 -0
  356. package/koni/api/nft/unique_nft/index.d.ts +54 -0
  357. package/koni/api/nft/unique_nft/index.js +189 -0
  358. package/koni/api/nft/unique_nft/protobuf.d.ts +3 -0
  359. package/koni/api/nft/unique_nft/protobuf.js +86 -0
  360. package/koni/api/nft/unique_nft/runtime_types.d.ts +3 -0
  361. package/koni/api/nft/unique_nft/runtime_types.js +115 -0
  362. package/koni/api/nft/unique_nft/uniqueNftV2.d.ts +9 -0
  363. package/koni/api/nft/unique_nft/uniqueNftV2.js +62 -0
  364. package/koni/api/nft/wasm_nft/index.d.ts +17 -0
  365. package/koni/api/nft/wasm_nft/index.js +287 -0
  366. package/koni/api/nft/wasm_nft/utils.d.ts +5 -0
  367. package/koni/api/nft/wasm_nft/utils.js +8 -0
  368. package/koni/api/staking/bonding/amplitude.d.ts +11 -0
  369. package/koni/api/staking/bonding/amplitude.js +174 -0
  370. package/koni/api/staking/bonding/astar.d.ts +10 -0
  371. package/koni/api/staking/bonding/astar.js +242 -0
  372. package/koni/api/staking/bonding/index.d.ts +12 -0
  373. package/koni/api/staking/bonding/index.js +93 -0
  374. package/koni/api/staking/bonding/paraChain.d.ts +12 -0
  375. package/koni/api/staking/bonding/paraChain.js +246 -0
  376. package/koni/api/staking/bonding/relayChain.d.ts +32 -0
  377. package/koni/api/staking/bonding/relayChain.js +384 -0
  378. package/koni/api/staking/bonding/utils.d.ts +154 -0
  379. package/koni/api/staking/bonding/utils.js +222 -0
  380. package/koni/api/staking/config.d.ts +3 -0
  381. package/koni/api/staking/config.js +38 -0
  382. package/koni/api/staking/index.d.ts +6 -0
  383. package/koni/api/staking/index.js +67 -0
  384. package/koni/api/staking/paraChain.d.ts +7 -0
  385. package/koni/api/staking/paraChain.js +216 -0
  386. package/koni/api/staking/relayChain.d.ts +6 -0
  387. package/koni/api/staking/relayChain.js +161 -0
  388. package/koni/api/staking/subsquidStaking.d.ts +3 -0
  389. package/koni/api/staking/subsquidStaking.js +101 -0
  390. package/koni/api/staking/utils.d.ts +2 -0
  391. package/koni/api/staking/utils.js +11 -0
  392. package/koni/api/subquery/__generated__/DotSamaHistory.d.ts +58 -0
  393. package/koni/api/subquery/__generated__/DotSamaHistory.js +1 -0
  394. package/koni/api/subquery/subquery.d.ts +2 -0
  395. package/koni/api/subquery/subquery.js +14 -0
  396. package/koni/api/tokens/evm/balance.d.ts +2 -0
  397. package/koni/api/tokens/evm/balance.js +9 -0
  398. package/koni/api/tokens/evm/transfer.d.ts +17 -0
  399. package/koni/api/tokens/evm/transfer.js +101 -0
  400. package/koni/api/tokens/evm/web3.d.ts +3 -0
  401. package/koni/api/tokens/evm/web3.js +9 -0
  402. package/koni/api/tokens/index.d.ts +1 -0
  403. package/koni/api/tokens/index.js +11 -0
  404. package/koni/api/tokens/wasm/index.d.ts +6 -0
  405. package/koni/api/tokens/wasm/index.js +28 -0
  406. package/koni/api/xcm/index.d.ts +13 -0
  407. package/koni/api/xcm/index.js +30 -0
  408. package/koni/api/xcm/polkadotXcm.d.ts +3 -0
  409. package/koni/api/xcm/polkadotXcm.js +52 -0
  410. package/koni/api/xcm/utils.d.ts +16 -0
  411. package/koni/api/xcm/utils.js +52 -0
  412. package/koni/api/xcm/xTokens.d.ts +3 -0
  413. package/koni/api/xcm/xTokens.js +53 -0
  414. package/koni/api/xcm/xcmPallet.d.ts +3 -0
  415. package/koni/api/xcm/xcmPallet.js +46 -0
  416. package/koni/background/cron.d.ts +37 -0
  417. package/koni/background/cron.js +195 -0
  418. package/koni/background/events.d.ts +1 -0
  419. package/koni/background/events.js +7 -0
  420. package/koni/background/handlers/Extension.d.ts +183 -0
  421. package/koni/background/handlers/Extension.js +3011 -0
  422. package/koni/background/handlers/Mobile.d.ts +21 -0
  423. package/koni/background/handlers/Mobile.js +127 -0
  424. package/koni/background/handlers/State.d.ts +226 -0
  425. package/koni/background/handlers/State.js +1412 -0
  426. package/koni/background/handlers/Tabs.d.ts +47 -0
  427. package/koni/background/handlers/Tabs.js +749 -0
  428. package/koni/background/handlers/index.d.ts +13 -0
  429. package/koni/background/handlers/index.js +76 -0
  430. package/koni/background/subscription.d.ts +32 -0
  431. package/koni/background/subscription.js +272 -0
  432. package/package.json +1463 -10
  433. package/packageInfo.js +1 -1
  434. package/page/SubWalleEvmProvider.d.ts +27 -0
  435. package/page/SubWalleEvmProvider.js +132 -0
  436. package/page/index.d.ts +2 -0
  437. package/page/index.js +7 -2
  438. package/services/balance-service/index.d.ts +9 -0
  439. package/services/balance-service/index.js +101 -0
  440. package/services/chain-service/constants.d.ts +77 -0
  441. package/services/chain-service/constants.js +204 -0
  442. package/services/chain-service/handler/EvmChainHandler.d.ts +16 -0
  443. package/services/chain-service/handler/EvmChainHandler.js +136 -0
  444. package/services/chain-service/handler/SubstrateChainHandler.d.ts +21 -0
  445. package/services/chain-service/handler/SubstrateChainHandler.js +340 -0
  446. package/services/chain-service/handler/light-client/index.d.ts +4 -0
  447. package/services/chain-service/handler/light-client/index.js +111 -0
  448. package/services/chain-service/handler/types.d.ts +26 -0
  449. package/services/chain-service/handler/types.js +14 -0
  450. package/services/chain-service/heath-check/index.d.ts +3 -0
  451. package/services/chain-service/heath-check/index.js +50 -0
  452. package/services/chain-service/helper/api-helper/chain/crust-maxwell.d.ts +98 -0
  453. package/services/chain-service/helper/api-helper/chain/crust-maxwell.js +103 -0
  454. package/services/chain-service/helper/api-helper/chain/index.d.ts +1943 -0
  455. package/services/chain-service/helper/api-helper/chain/index.js +11 -0
  456. package/services/chain-service/helper/api-helper/index.d.ts +7 -0
  457. package/services/chain-service/helper/api-helper/index.js +18 -0
  458. package/services/chain-service/helper/api-helper/spec/acala.d.ts +42 -0
  459. package/services/chain-service/helper/api-helper/spec/acala.js +5 -0
  460. package/services/chain-service/helper/api-helper/spec/ajuna.d.ts +3 -0
  461. package/services/chain-service/helper/api-helper/spec/ajuna.js +15 -0
  462. package/services/chain-service/helper/api-helper/spec/altair.d.ts +3 -0
  463. package/services/chain-service/helper/api-helper/spec/altair.js +24 -0
  464. package/services/chain-service/helper/api-helper/spec/apron.d.ts +3 -0
  465. package/services/chain-service/helper/api-helper/spec/apron.js +17 -0
  466. package/services/chain-service/helper/api-helper/spec/ares-gladios.d.ts +3 -0
  467. package/services/chain-service/helper/api-helper/spec/ares-gladios.js +184 -0
  468. package/services/chain-service/helper/api-helper/spec/ares-parachain.d.ts +3 -0
  469. package/services/chain-service/helper/api-helper/spec/ares-parachain.js +185 -0
  470. package/services/chain-service/helper/api-helper/spec/astar.d.ts +3 -0
  471. package/services/chain-service/helper/api-helper/spec/astar.js +37 -0
  472. package/services/chain-service/helper/api-helper/spec/automata.d.ts +3 -0
  473. package/services/chain-service/helper/api-helper/spec/automata.js +36 -0
  474. package/services/chain-service/helper/api-helper/spec/basilisk.d.ts +3 -0
  475. package/services/chain-service/helper/api-helper/spec/basilisk.js +132 -0
  476. package/services/chain-service/helper/api-helper/spec/beresheet.d.ts +3 -0
  477. package/services/chain-service/helper/api-helper/spec/beresheet.js +9 -0
  478. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.d.ts +3 -0
  479. package/services/chain-service/helper/api-helper/spec/bifrost-asgard.js +5 -0
  480. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.d.ts +3 -0
  481. package/services/chain-service/helper/api-helper/spec/bifrost-parachain.js +5 -0
  482. package/services/chain-service/helper/api-helper/spec/bifrost.d.ts +3 -0
  483. package/services/chain-service/helper/api-helper/spec/bifrost.js +5 -0
  484. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.d.ts +2 -0
  485. package/services/chain-service/helper/api-helper/spec/bitcountry-pioneer.js +5 -0
  486. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.d.ts +3 -0
  487. package/services/chain-service/helper/api-helper/spec/bitcountry-rococo.js +115 -0
  488. package/services/chain-service/helper/api-helper/spec/bitcountry.d.ts +3 -0
  489. package/services/chain-service/helper/api-helper/spec/bitcountry.js +77 -0
  490. package/services/chain-service/helper/api-helper/spec/canvas.d.ts +3 -0
  491. package/services/chain-service/helper/api-helper/spec/canvas.js +24 -0
  492. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.d.ts +3 -0
  493. package/services/chain-service/helper/api-helper/spec/centrifuge-chain.js +70 -0
  494. package/services/chain-service/helper/api-helper/spec/centrifuge.d.ts +3 -0
  495. package/services/chain-service/helper/api-helper/spec/centrifuge.js +24 -0
  496. package/services/chain-service/helper/api-helper/spec/chainx.d.ts +3 -0
  497. package/services/chain-service/helper/api-helper/spec/chainx.js +396 -0
  498. package/services/chain-service/helper/api-helper/spec/clover-rococo.d.ts +3 -0
  499. package/services/chain-service/helper/api-helper/spec/clover-rococo.js +61 -0
  500. package/services/chain-service/helper/api-helper/spec/clover.d.ts +3 -0
  501. package/services/chain-service/helper/api-helper/spec/clover.js +27 -0
  502. package/services/chain-service/helper/api-helper/spec/coinversation.d.ts +3 -0
  503. package/services/chain-service/helper/api-helper/spec/coinversation.js +17 -0
  504. package/services/chain-service/helper/api-helper/spec/competitors-club.d.ts +3 -0
  505. package/services/chain-service/helper/api-helper/spec/competitors-club.js +77 -0
  506. package/services/chain-service/helper/api-helper/spec/crab.d.ts +2 -0
  507. package/services/chain-service/helper/api-helper/spec/crab.js +5 -0
  508. package/services/chain-service/helper/api-helper/spec/crown-sterling.d.ts +3 -0
  509. package/services/chain-service/helper/api-helper/spec/crown-sterling.js +48 -0
  510. package/services/chain-service/helper/api-helper/spec/crust.d.ts +3 -0
  511. package/services/chain-service/helper/api-helper/spec/crust.js +5 -0
  512. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.d.ts +3 -0
  513. package/services/chain-service/helper/api-helper/spec/cumulus-test-parachain.js +17 -0
  514. package/services/chain-service/helper/api-helper/spec/darwinia.d.ts +2 -0
  515. package/services/chain-service/helper/api-helper/spec/darwinia.js +5 -0
  516. package/services/chain-service/helper/api-helper/spec/datahighway.d.ts +3 -0
  517. package/services/chain-service/helper/api-helper/spec/datahighway.js +233 -0
  518. package/services/chain-service/helper/api-helper/spec/dock-mainnet.d.ts +3 -0
  519. package/services/chain-service/helper/api-helper/spec/dock-mainnet.js +9 -0
  520. package/services/chain-service/helper/api-helper/spec/dock-testnet.d.ts +3 -0
  521. package/services/chain-service/helper/api-helper/spec/dock-testnet.js +9 -0
  522. package/services/chain-service/helper/api-helper/spec/dolphin.d.ts +3 -0
  523. package/services/chain-service/helper/api-helper/spec/dolphin.js +22 -0
  524. package/services/chain-service/helper/api-helper/spec/dotmog.d.ts +3 -0
  525. package/services/chain-service/helper/api-helper/spec/dotmog.js +58 -0
  526. package/services/chain-service/helper/api-helper/spec/eave.d.ts +3 -0
  527. package/services/chain-service/helper/api-helper/spec/eave.js +409 -0
  528. package/services/chain-service/helper/api-helper/spec/edgeware.d.ts +3 -0
  529. package/services/chain-service/helper/api-helper/spec/edgeware.js +7 -0
  530. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.d.ts +3 -0
  531. package/services/chain-service/helper/api-helper/spec/encointer-node-notee.js +68 -0
  532. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.d.ts +3 -0
  533. package/services/chain-service/helper/api-helper/spec/encointer-node-teeproxy.js +45 -0
  534. package/services/chain-service/helper/api-helper/spec/encointer-para.d.ts +3 -0
  535. package/services/chain-service/helper/api-helper/spec/encointer-para.js +72 -0
  536. package/services/chain-service/helper/api-helper/spec/equilibrium.d.ts +8 -0
  537. package/services/chain-service/helper/api-helper/spec/equilibrium.js +97 -0
  538. package/services/chain-service/helper/api-helper/spec/fantour.d.ts +3 -0
  539. package/services/chain-service/helper/api-helper/spec/fantour.js +63 -0
  540. package/services/chain-service/helper/api-helper/spec/galital-parachain.d.ts +3 -0
  541. package/services/chain-service/helper/api-helper/spec/galital-parachain.js +58 -0
  542. package/services/chain-service/helper/api-helper/spec/galital.d.ts +3 -0
  543. package/services/chain-service/helper/api-helper/spec/galital.js +63 -0
  544. package/services/chain-service/helper/api-helper/spec/galois.d.ts +3 -0
  545. package/services/chain-service/helper/api-helper/spec/galois.js +47 -0
  546. package/services/chain-service/helper/api-helper/spec/gamepower.d.ts +3 -0
  547. package/services/chain-service/helper/api-helper/spec/gamepower.js +64 -0
  548. package/services/chain-service/helper/api-helper/spec/genshiro.d.ts +3 -0
  549. package/services/chain-service/helper/api-helper/spec/genshiro.js +24 -0
  550. package/services/chain-service/helper/api-helper/spec/hanonycash.d.ts +3 -0
  551. package/services/chain-service/helper/api-helper/spec/hanonycash.js +26 -0
  552. package/services/chain-service/helper/api-helper/spec/hydrate.d.ts +3 -0
  553. package/services/chain-service/helper/api-helper/spec/hydrate.js +52 -0
  554. package/services/chain-service/helper/api-helper/spec/idavoll.d.ts +3 -0
  555. package/services/chain-service/helper/api-helper/spec/idavoll.js +17 -0
  556. package/services/chain-service/helper/api-helper/spec/index.d.ts +3 -0
  557. package/services/chain-service/helper/api-helper/spec/index.js +264 -0
  558. package/services/chain-service/helper/api-helper/spec/integritee.d.ts +3 -0
  559. package/services/chain-service/helper/api-helper/spec/integritee.js +28 -0
  560. package/services/chain-service/helper/api-helper/spec/interbtc.d.ts +7 -0
  561. package/services/chain-service/helper/api-helper/spec/interbtc.js +50 -0
  562. package/services/chain-service/helper/api-helper/spec/ipse.d.ts +3 -0
  563. package/services/chain-service/helper/api-helper/spec/ipse.js +106 -0
  564. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.d.ts +3 -0
  565. package/services/chain-service/helper/api-helper/spec/jupiter-rococo.js +17 -0
  566. package/services/chain-service/helper/api-helper/spec/jupiter.d.ts +3 -0
  567. package/services/chain-service/helper/api-helper/spec/jupiter.js +63 -0
  568. package/services/chain-service/helper/api-helper/spec/khala.d.ts +3 -0
  569. package/services/chain-service/helper/api-helper/spec/khala.js +5 -0
  570. package/services/chain-service/helper/api-helper/spec/kilt.d.ts +3 -0
  571. package/services/chain-service/helper/api-helper/spec/kilt.js +5 -0
  572. package/services/chain-service/helper/api-helper/spec/konomi.d.ts +3 -0
  573. package/services/chain-service/helper/api-helper/spec/konomi.js +17 -0
  574. package/services/chain-service/helper/api-helper/spec/kpron.d.ts +3 -0
  575. package/services/chain-service/helper/api-helper/spec/kpron.js +17 -0
  576. package/services/chain-service/helper/api-helper/spec/kulupu.d.ts +3 -0
  577. package/services/chain-service/helper/api-helper/spec/kulupu.js +57 -0
  578. package/services/chain-service/helper/api-helper/spec/kusari.d.ts +3 -0
  579. package/services/chain-service/helper/api-helper/spec/kusari.js +38 -0
  580. package/services/chain-service/helper/api-helper/spec/kylin.d.ts +3 -0
  581. package/services/chain-service/helper/api-helper/spec/kylin.js +29 -0
  582. package/services/chain-service/helper/api-helper/spec/laminar.d.ts +3 -0
  583. package/services/chain-service/helper/api-helper/spec/laminar.js +5 -0
  584. package/services/chain-service/helper/api-helper/spec/litentry.d.ts +3 -0
  585. package/services/chain-service/helper/api-helper/spec/litentry.js +17 -0
  586. package/services/chain-service/helper/api-helper/spec/mangata.d.ts +3 -0
  587. package/services/chain-service/helper/api-helper/spec/mangata.js +13 -0
  588. package/services/chain-service/helper/api-helper/spec/manta.d.ts +3 -0
  589. package/services/chain-service/helper/api-helper/spec/manta.js +22 -0
  590. package/services/chain-service/helper/api-helper/spec/mathchain.d.ts +3 -0
  591. package/services/chain-service/helper/api-helper/spec/mathchain.js +47 -0
  592. package/services/chain-service/helper/api-helper/spec/moonbeam.d.ts +2 -0
  593. package/services/chain-service/helper/api-helper/spec/moonbeam.js +5 -0
  594. package/services/chain-service/helper/api-helper/spec/moonsama-development.d.ts +3 -0
  595. package/services/chain-service/helper/api-helper/spec/moonsama-development.js +17 -0
  596. package/services/chain-service/helper/api-helper/spec/mybank.d.ts +3 -0
  597. package/services/chain-service/helper/api-helper/spec/mybank.js +80 -0
  598. package/services/chain-service/helper/api-helper/spec/neatcoin.d.ts +3 -0
  599. package/services/chain-service/helper/api-helper/spec/neatcoin.js +25 -0
  600. package/services/chain-service/helper/api-helper/spec/neumann.d.ts +3 -0
  601. package/services/chain-service/helper/api-helper/spec/neumann.js +48 -0
  602. package/services/chain-service/helper/api-helper/spec/nftmart.d.ts +3 -0
  603. package/services/chain-service/helper/api-helper/spec/nftmart.js +127 -0
  604. package/services/chain-service/helper/api-helper/spec/nodle.d.ts +3 -0
  605. package/services/chain-service/helper/api-helper/spec/nodle.js +46 -0
  606. package/services/chain-service/helper/api-helper/spec/opal.d.ts +3 -0
  607. package/services/chain-service/helper/api-helper/spec/opal.js +9 -0
  608. package/services/chain-service/helper/api-helper/spec/opportunity.d.ts +3 -0
  609. package/services/chain-service/helper/api-helper/spec/opportunity.js +5 -0
  610. package/services/chain-service/helper/api-helper/spec/origintrail.d.ts +5 -0
  611. package/services/chain-service/helper/api-helper/spec/origintrail.js +198 -0
  612. package/services/chain-service/helper/api-helper/spec/pangolin.d.ts +2 -0
  613. package/services/chain-service/helper/api-helper/spec/pangolin.js +5 -0
  614. package/services/chain-service/helper/api-helper/spec/pangoro.d.ts +2 -0
  615. package/services/chain-service/helper/api-helper/spec/pangoro.js +7 -0
  616. package/services/chain-service/helper/api-helper/spec/parallel.d.ts +14 -0
  617. package/services/chain-service/helper/api-helper/spec/parallel.js +5 -0
  618. package/services/chain-service/helper/api-helper/spec/parami.d.ts +3 -0
  619. package/services/chain-service/helper/api-helper/spec/parami.js +14 -0
  620. package/services/chain-service/helper/api-helper/spec/phoenix.d.ts +3 -0
  621. package/services/chain-service/helper/api-helper/spec/phoenix.js +45 -0
  622. package/services/chain-service/helper/api-helper/spec/pichiu.d.ts +3 -0
  623. package/services/chain-service/helper/api-helper/spec/pichiu.js +29 -0
  624. package/services/chain-service/helper/api-helper/spec/plasm.d.ts +3 -0
  625. package/services/chain-service/helper/api-helper/spec/plasm.js +47 -0
  626. package/services/chain-service/helper/api-helper/spec/polkadex.d.ts +3 -0
  627. package/services/chain-service/helper/api-helper/spec/polkadex.js +25 -0
  628. package/services/chain-service/helper/api-helper/spec/polkafoundry.d.ts +3 -0
  629. package/services/chain-service/helper/api-helper/spec/polkafoundry.js +36 -0
  630. package/services/chain-service/helper/api-helper/spec/polymesh.d.ts +3 -0
  631. package/services/chain-service/helper/api-helper/spec/polymesh.js +13 -0
  632. package/services/chain-service/helper/api-helper/spec/pontem.d.ts +2 -0
  633. package/services/chain-service/helper/api-helper/spec/pontem.js +5 -0
  634. package/services/chain-service/helper/api-helper/spec/prism.d.ts +3 -0
  635. package/services/chain-service/helper/api-helper/spec/prism.js +17 -0
  636. package/services/chain-service/helper/api-helper/spec/quartz.d.ts +3 -0
  637. package/services/chain-service/helper/api-helper/spec/quartz.js +9 -0
  638. package/services/chain-service/helper/api-helper/spec/realis.d.ts +3 -0
  639. package/services/chain-service/helper/api-helper/spec/realis.js +35 -0
  640. package/services/chain-service/helper/api-helper/spec/riochain.d.ts +3 -0
  641. package/services/chain-service/helper/api-helper/spec/riochain.js +97 -0
  642. package/services/chain-service/helper/api-helper/spec/robonomics.d.ts +3 -0
  643. package/services/chain-service/helper/api-helper/spec/robonomics.js +34 -0
  644. package/services/chain-service/helper/api-helper/spec/shibuya.d.ts +3 -0
  645. package/services/chain-service/helper/api-helper/spec/shibuya.js +47 -0
  646. package/services/chain-service/helper/api-helper/spec/shiden.d.ts +3 -0
  647. package/services/chain-service/helper/api-helper/spec/shiden.js +47 -0
  648. package/services/chain-service/helper/api-helper/spec/snowbridge.d.ts +2 -0
  649. package/services/chain-service/helper/api-helper/spec/snowbridge.js +5 -0
  650. package/services/chain-service/helper/api-helper/spec/soraSubstrate.d.ts +3 -0
  651. package/services/chain-service/helper/api-helper/spec/soraSubstrate.js +5 -0
  652. package/services/chain-service/helper/api-helper/spec/spanner.d.ts +3 -0
  653. package/services/chain-service/helper/api-helper/spec/spanner.js +494 -0
  654. package/services/chain-service/helper/api-helper/spec/stafi.d.ts +3 -0
  655. package/services/chain-service/helper/api-helper/spec/stafi.js +18 -0
  656. package/services/chain-service/helper/api-helper/spec/standard.d.ts +3 -0
  657. package/services/chain-service/helper/api-helper/spec/standard.js +5 -0
  658. package/services/chain-service/helper/api-helper/spec/subdao.d.ts +3 -0
  659. package/services/chain-service/helper/api-helper/spec/subdao.js +14 -0
  660. package/services/chain-service/helper/api-helper/spec/subgame.d.ts +3 -0
  661. package/services/chain-service/helper/api-helper/spec/subgame.js +178 -0
  662. package/services/chain-service/helper/api-helper/spec/subsocial.d.ts +2 -0
  663. package/services/chain-service/helper/api-helper/spec/subsocial.js +8 -0
  664. package/services/chain-service/helper/api-helper/spec/subspace.d.ts +0 -0
  665. package/services/chain-service/helper/api-helper/spec/subspace.js +126 -0
  666. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.d.ts +3 -0
  667. package/services/chain-service/helper/api-helper/spec/substrateContractsNode.js +16 -0
  668. package/services/chain-service/helper/api-helper/spec/swapdex.d.ts +3 -0
  669. package/services/chain-service/helper/api-helper/spec/swapdex.js +38 -0
  670. package/services/chain-service/helper/api-helper/spec/ternoa.d.ts +3 -0
  671. package/services/chain-service/helper/api-helper/spec/ternoa.js +88 -0
  672. package/services/chain-service/helper/api-helper/spec/trustbase.d.ts +3 -0
  673. package/services/chain-service/helper/api-helper/spec/trustbase.js +17 -0
  674. package/services/chain-service/helper/api-helper/spec/uart.d.ts +3 -0
  675. package/services/chain-service/helper/api-helper/spec/uart.js +282 -0
  676. package/services/chain-service/helper/api-helper/spec/unique.d.ts +3 -0
  677. package/services/chain-service/helper/api-helper/spec/unique.js +117 -0
  678. package/services/chain-service/helper/api-helper/spec/unitv.d.ts +3 -0
  679. package/services/chain-service/helper/api-helper/spec/unitv.js +18 -0
  680. package/services/chain-service/helper/api-helper/spec/vln-rococo.d.ts +3 -0
  681. package/services/chain-service/helper/api-helper/spec/vln-rococo.js +102 -0
  682. package/services/chain-service/helper/api-helper/spec/vln.d.ts +3 -0
  683. package/services/chain-service/helper/api-helper/spec/vln.js +38 -0
  684. package/services/chain-service/helper/api-helper/spec/vodka.d.ts +3 -0
  685. package/services/chain-service/helper/api-helper/spec/vodka.js +15 -0
  686. package/services/chain-service/helper/api-helper/spec/web3games.d.ts +3 -0
  687. package/services/chain-service/helper/api-helper/spec/web3games.js +36 -0
  688. package/services/chain-service/helper/api-helper/spec/westlake.d.ts +3 -0
  689. package/services/chain-service/helper/api-helper/spec/westlake.js +298 -0
  690. package/services/chain-service/helper/api-helper/spec/zCloak.d.ts +3 -0
  691. package/services/chain-service/helper/api-helper/spec/zCloak.js +39 -0
  692. package/services/chain-service/helper/api-helper/spec/zeitgeist.d.ts +3 -0
  693. package/services/chain-service/helper/api-helper/spec/zeitgeist.js +24 -0
  694. package/services/chain-service/helper/api-helper/spec/zenlink.d.ts +3 -0
  695. package/services/chain-service/helper/api-helper/spec/zenlink.js +50 -0
  696. package/services/chain-service/helper/api-helper/spec/zero.d.ts +3 -0
  697. package/services/chain-service/helper/api-helper/spec/zero.js +5 -0
  698. package/services/chain-service/helper/api-helper/util.d.ts +5 -0
  699. package/services/chain-service/helper/api-helper/util.js +15 -0
  700. package/services/chain-service/helper/erc20_abi.json +224 -0
  701. package/services/chain-service/helper/erc721_abi.json +384 -0
  702. package/services/chain-service/helper/index.d.ts +5 -0
  703. package/services/chain-service/helper/index.js +13 -0
  704. package/services/chain-service/helper/psp22_abi.json +967 -0
  705. package/services/chain-service/helper/psp34_abi.json +1988 -0
  706. package/services/chain-service/helper/test_erc721_abi.json +393 -0
  707. package/services/chain-service/index.d.ts +104 -0
  708. package/services/chain-service/index.js +1171 -0
  709. package/services/chain-service/types.d.ts +110 -0
  710. package/services/chain-service/types.js +17 -0
  711. package/services/chain-service/utils.d.ts +65 -0
  712. package/services/chain-service/utils.js +324 -0
  713. package/services/event-service/index.d.ts +22 -0
  714. package/services/event-service/index.js +59 -0
  715. package/services/event-service/types.d.ts +32 -0
  716. package/services/event-service/types.js +1 -0
  717. package/services/history-service/index.d.ts +24 -0
  718. package/services/history-service/index.js +121 -0
  719. package/services/history-service/subsquid-multi-chain-history.d.ts +30 -0
  720. package/services/history-service/subsquid-multi-chain-history.js +256 -0
  721. package/services/keyring-service/index.d.ts +19 -0
  722. package/services/keyring-service/index.js +93 -0
  723. package/services/migration-service/Base.d.ts +8 -0
  724. package/services/migration-service/Base.js +13 -0
  725. package/services/migration-service/index.d.ts +7 -0
  726. package/services/migration-service/index.js +39 -0
  727. package/services/migration-service/scripts/AutoEnableChainsTokens.d.ts +4 -0
  728. package/services/migration-service/scripts/AutoEnableChainsTokens.js +13 -0
  729. package/services/migration-service/scripts/ClearOldStorage.d.ts +4 -0
  730. package/services/migration-service/scripts/ClearOldStorage.js +11 -0
  731. package/services/migration-service/scripts/MigrateImportedToken.d.ts +4 -0
  732. package/services/migration-service/scripts/MigrateImportedToken.js +40 -0
  733. package/services/migration-service/scripts/MigrateNetworkSettings.d.ts +4 -0
  734. package/services/migration-service/scripts/MigrateNetworkSettings.js +49 -0
  735. package/services/migration-service/scripts/MigrateSettings.d.ts +4 -0
  736. package/services/migration-service/scripts/MigrateSettings.js +23 -0
  737. package/services/migration-service/scripts/MigrateTransactionHistory.d.ts +4 -0
  738. package/services/migration-service/scripts/MigrateTransactionHistory.js +64 -0
  739. package/services/migration-service/scripts/index.d.ts +4 -0
  740. package/services/migration-service/scripts/index.js +17 -0
  741. package/services/notification-service/NotificationService.d.ts +8 -0
  742. package/services/notification-service/NotificationService.js +46 -0
  743. package/services/price-service/coingecko.d.ts +2 -0
  744. package/services/price-service/coingecko.js +44 -0
  745. package/services/price-service/index.d.ts +18 -0
  746. package/services/price-service/index.js +69 -0
  747. package/services/request-service/constants.d.ts +2 -0
  748. package/services/request-service/constants.js +9 -0
  749. package/services/request-service/handler/AuthRequestHandler.d.ts +36 -0
  750. package/services/request-service/handler/AuthRequestHandler.js +280 -0
  751. package/services/request-service/handler/EvmRequestHandler.d.ts +19 -0
  752. package/services/request-service/handler/EvmRequestHandler.js +207 -0
  753. package/services/request-service/handler/MetadataRequestHandler.d.ts +18 -0
  754. package/services/request-service/handler/MetadataRequestHandler.js +75 -0
  755. package/services/request-service/handler/PopupHandler.d.ts +9 -0
  756. package/services/request-service/handler/PopupHandler.js +79 -0
  757. package/services/request-service/handler/SubstrateRequestHandler.d.ts +17 -0
  758. package/services/request-service/handler/SubstrateRequestHandler.js +94 -0
  759. package/services/request-service/helper/index.d.ts +4 -0
  760. package/services/request-service/helper/index.js +67 -0
  761. package/services/request-service/index.d.ts +52 -0
  762. package/services/request-service/index.js +150 -0
  763. package/services/request-service/types.d.ts +25 -0
  764. package/services/request-service/types.js +1 -0
  765. package/services/setting-service/SettingService.d.ts +8 -0
  766. package/services/setting-service/SettingService.js +31 -0
  767. package/services/setting-service/constants.d.ts +3 -0
  768. package/services/setting-service/constants.js +6 -0
  769. package/services/storage-service/DatabaseService.d.ts +64 -0
  770. package/services/storage-service/DatabaseService.js +219 -0
  771. package/services/storage-service/databases/index.d.ts +45 -0
  772. package/services/storage-service/databases/index.js +37 -0
  773. package/services/storage-service/db-stores/Asset.d.ts +6 -0
  774. package/services/storage-service/db-stores/Asset.js +12 -0
  775. package/services/storage-service/db-stores/Balance.d.ts +7 -0
  776. package/services/storage-service/db-stores/Balance.js +24 -0
  777. package/services/storage-service/db-stores/BaseStore.d.ts +11 -0
  778. package/services/storage-service/db-stores/BaseStore.js +22 -0
  779. package/services/storage-service/db-stores/BaseStoreWithAddress.d.ts +5 -0
  780. package/services/storage-service/db-stores/BaseStoreWithAddress.js +20 -0
  781. package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.d.ts +7 -0
  782. package/services/storage-service/db-stores/BaseStoreWithAddressAndChain.js +19 -0
  783. package/services/storage-service/db-stores/BaseStoreWithChain.d.ts +5 -0
  784. package/services/storage-service/db-stores/BaseStoreWithChain.js +12 -0
  785. package/services/storage-service/db-stores/Chain.d.ts +6 -0
  786. package/services/storage-service/db-stores/Chain.js +12 -0
  787. package/services/storage-service/db-stores/ChainStakingMetadata.d.ts +9 -0
  788. package/services/storage-service/db-stores/ChainStakingMetadata.js +29 -0
  789. package/services/storage-service/db-stores/Crowdloan.d.ts +6 -0
  790. package/services/storage-service/db-stores/Crowdloan.js +15 -0
  791. package/services/storage-service/db-stores/Migration.d.ts +4 -0
  792. package/services/storage-service/db-stores/Migration.js +5 -0
  793. package/services/storage-service/db-stores/Nft.d.ts +13 -0
  794. package/services/storage-service/db-stores/Nft.js +64 -0
  795. package/services/storage-service/db-stores/NftCollection.d.ts +7 -0
  796. package/services/storage-service/db-stores/NftCollection.js +22 -0
  797. package/services/storage-service/db-stores/NominatorMetadata.d.ts +9 -0
  798. package/services/storage-service/db-stores/NominatorMetadata.js +22 -0
  799. package/services/storage-service/db-stores/Price.d.ts +4 -0
  800. package/services/storage-service/db-stores/Price.js +5 -0
  801. package/services/storage-service/db-stores/Staking.d.ts +9 -0
  802. package/services/storage-service/db-stores/Staking.js +29 -0
  803. package/services/storage-service/db-stores/Transaction.d.ts +12 -0
  804. package/services/storage-service/db-stores/Transaction.js +44 -0
  805. package/services/storage-service/db-stores/index.d.ts +10 -0
  806. package/services/storage-service/db-stores/index.js +13 -0
  807. package/services/subscan-service/index.d.ts +20 -0
  808. package/services/subscan-service/index.js +99 -0
  809. package/services/subscan-service/subscan-chain-map.d.ts +5 -0
  810. package/services/subscan-service/subscan-chain-map.js +63 -0
  811. package/services/subscan-service/types.d.ts +27 -0
  812. package/services/subscan-service/types.js +1 -0
  813. package/services/transaction-service/event-parser/index.d.ts +5 -0
  814. package/services/transaction-service/event-parser/index.js +96 -0
  815. package/services/transaction-service/helpers/index.d.ts +5 -0
  816. package/services/transaction-service/helpers/index.js +14 -0
  817. package/services/transaction-service/index.d.ts +46 -0
  818. package/services/transaction-service/index.js +728 -0
  819. package/services/transaction-service/types.d.ts +48 -0
  820. package/services/transaction-service/types.js +1 -0
  821. package/services/transaction-service/utils.d.ts +4 -0
  822. package/services/transaction-service/utils.js +24 -0
  823. package/signers/substrates/KeyringSigner.d.ts +1 -1
  824. package/stores/AccountRef.d.ts +5 -0
  825. package/stores/AccountRef.js +10 -0
  826. package/stores/Accounts.d.ts +1 -1
  827. package/stores/Application.d.ts +7 -0
  828. package/stores/Application.js +20 -0
  829. package/stores/AssetSetting.d.ts +5 -0
  830. package/stores/AssetSetting.js +12 -0
  831. package/stores/Authorize.d.ts +5 -0
  832. package/stores/Authorize.js +10 -0
  833. package/stores/CurrentAccountStore.d.ts +5 -0
  834. package/stores/CurrentAccountStore.js +10 -0
  835. package/stores/Keyring.d.ts +7 -0
  836. package/stores/Keyring.js +32 -0
  837. package/stores/Settings.d.ts +5 -0
  838. package/stores/Settings.js +10 -0
  839. package/stores/SubscribableStore.d.ts +9 -0
  840. package/stores/SubscribableStore.js +25 -0
  841. package/stores/TransactionHistory.d.ts +6 -0
  842. package/stores/TransactionHistory.js +29 -0
  843. package/stores/TransactionHistoryV2.d.ts +5 -0
  844. package/stores/TransactionHistoryV2.js +10 -0
  845. package/stores/TransactionHistoryV3.d.ts +5 -0
  846. package/stores/TransactionHistoryV3.js +10 -0
  847. package/stores/index.d.ts +1 -0
  848. package/stores/index.js +2 -1
  849. package/utils/address.d.ts +2 -0
  850. package/utils/address.js +17 -0
  851. package/utils/eth/mergeTransactionAndSignature.d.ts +2 -0
  852. package/utils/eth/mergeTransactionAndSignature.js +14 -0
  853. package/utils/eth/parseTransaction/base.d.ts +17 -0
  854. package/utils/eth/parseTransaction/base.js +273 -0
  855. package/utils/eth/parseTransaction/index.d.ts +6 -0
  856. package/utils/eth/parseTransaction/index.js +220 -0
  857. package/utils/eth.d.ts +18 -0
  858. package/utils/eth.js +64 -0
  859. package/utils/index.d.ts +38 -0
  860. package/utils/index.js +282 -2
  861. package/utils/keyring.d.ts +4 -0
  862. package/utils/keyring.js +49 -0
  863. package/utils/request.d.ts +1 -0
  864. package/utils/request.js +7 -0
  865. package/errors/SubWalletProviderError.d.ts +0 -6
@@ -0,0 +1,3086 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _common = _interopRequireDefault(require("@ethereumjs/common"));
9
+ var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
10
+ var _Extension = require("@subwallet/extension-base/background/handlers/Extension");
11
+ var _helpers = require("@subwallet/extension-base/background/handlers/helpers");
12
+ var _subscriptions = require("@subwallet/extension-base/background/handlers/subscriptions");
13
+ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
14
+ var _constants = require("@subwallet/extension-base/constants");
15
+ var _defaults = require("@subwallet/extension-base/defaults");
16
+ var _parseTransaction = require("@subwallet/extension-base/koni/api/dotsama/parseTransaction");
17
+ var _transfer = require("@subwallet/extension-base/koni/api/dotsama/transfer");
18
+ var _transfer2 = require("@subwallet/extension-base/koni/api/nft/transfer");
19
+ var _bonding = require("@subwallet/extension-base/koni/api/staking/bonding");
20
+ var _paraChain = require("@subwallet/extension-base/koni/api/staking/bonding/paraChain");
21
+ var _relayChain = require("@subwallet/extension-base/koni/api/staking/bonding/relayChain");
22
+ var _transfer3 = require("@subwallet/extension-base/koni/api/tokens/evm/transfer");
23
+ var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
24
+ var _xcm = require("@subwallet/extension-base/koni/api/xcm");
25
+ var _utils = require("@subwallet/extension-base/services/chain-service/utils");
26
+ var _constants2 = require("@subwallet/extension-base/services/request-service/constants");
27
+ var _eth = require("@subwallet/extension-base/utils/eth");
28
+ var _parseTransaction2 = require("@subwallet/extension-base/utils/eth/parseTransaction");
29
+ var _keyring = require("@subwallet/keyring");
30
+ var _uiKeyring = require("@subwallet/ui-keyring");
31
+ var _accounts = require("@subwallet/ui-keyring/observable/accounts");
32
+ var _bignumber = _interopRequireDefault(require("bignumber.js"));
33
+ var _ethereumjsTx = require("ethereumjs-tx");
34
+ var _types = require("@polkadot/types");
35
+ var _util = require("@polkadot/util");
36
+ var _utilCrypto = require("@polkadot/util-crypto");
37
+ // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
38
+ // SPDX-License-Identifier: Apache-2.0
39
+
40
+ const ETH_DERIVE_DEFAULT = '/m/44\'/60\'/0\'/0/0';
41
+ function getSuri(seed, type) {
42
+ return type === 'ethereum' ? `${seed}${ETH_DERIVE_DEFAULT}` : seed;
43
+ }
44
+ function transformAccounts(accounts) {
45
+ return Object.values(accounts).map(_ref => {
46
+ let {
47
+ json: {
48
+ address,
49
+ meta
50
+ },
51
+ type
52
+ } = _ref;
53
+ return {
54
+ address,
55
+ ...meta,
56
+ type
57
+ };
58
+ });
59
+ }
60
+ const ACCOUNT_ALL_JSON = {
61
+ address: _constants.ALL_ACCOUNT_KEY,
62
+ name: 'All'
63
+ };
64
+ class KoniExtension {
65
+ #lockTimeOut = undefined;
66
+ #koniState;
67
+ constructor(state) {
68
+ this.#koniState = state;
69
+ }
70
+
71
+ /// Clone from PolkadotJs
72
+ accountsCreateExternal(_ref2) {
73
+ let {
74
+ address,
75
+ genesisHash,
76
+ name
77
+ } = _ref2;
78
+ _uiKeyring.keyring.addExternal(address, {
79
+ genesisHash,
80
+ name
81
+ });
82
+ return true;
83
+ }
84
+ accountsCreateHardware(_ref3) {
85
+ let {
86
+ accountIndex,
87
+ address,
88
+ addressOffset,
89
+ genesisHash,
90
+ hardwareType,
91
+ name
92
+ } = _ref3;
93
+ _uiKeyring.keyring.addHardware(address, hardwareType, {
94
+ accountIndex,
95
+ addressOffset,
96
+ genesisHash,
97
+ name
98
+ });
99
+ return true;
100
+ }
101
+ accountsCreateSuri(_ref4) {
102
+ let {
103
+ genesisHash,
104
+ name,
105
+ suri,
106
+ type
107
+ } = _ref4;
108
+ _uiKeyring.keyring.addUri(getSuri(suri, type), {
109
+ genesisHash,
110
+ name
111
+ }, type);
112
+ return true;
113
+ }
114
+ accountsChangePassword(_ref5) {
115
+ let {
116
+ address,
117
+ newPass,
118
+ oldPass
119
+ } = _ref5;
120
+ const pair = _uiKeyring.keyring.getPair(address);
121
+ (0, _util.assert)(pair, 'Unable to find pair');
122
+ try {
123
+ if (!pair.isLocked) {
124
+ pair.lock();
125
+ }
126
+ pair.decodePkcs8(oldPass);
127
+ } catch (error) {
128
+ throw new Error('oldPass is invalid');
129
+ }
130
+ _uiKeyring.keyring.encryptAccount(pair, newPass);
131
+ return true;
132
+ }
133
+ accountsEdit(_ref6) {
134
+ let {
135
+ address,
136
+ name
137
+ } = _ref6;
138
+ const pair = _uiKeyring.keyring.getPair(address);
139
+ (0, _util.assert)(pair, 'Unable to find pair');
140
+ _uiKeyring.keyring.saveAccountMeta(pair, {
141
+ ...pair.meta,
142
+ name
143
+ });
144
+ return true;
145
+ }
146
+ accountsExport(_ref7) {
147
+ let {
148
+ address,
149
+ password
150
+ } = _ref7;
151
+ return {
152
+ exportedJson: _uiKeyring.keyring.backupAccount(_uiKeyring.keyring.getPair(address), password)
153
+ };
154
+ }
155
+ accountsShow(_ref8) {
156
+ let {
157
+ address,
158
+ isShowing
159
+ } = _ref8;
160
+ const pair = _uiKeyring.keyring.getPair(address);
161
+ (0, _util.assert)(pair, 'Unable to find pair');
162
+ _uiKeyring.keyring.saveAccountMeta(pair, {
163
+ ...pair.meta,
164
+ isHidden: !isShowing
165
+ });
166
+ return true;
167
+ }
168
+ accountsValidate(_ref9) {
169
+ let {
170
+ address,
171
+ password
172
+ } = _ref9;
173
+ try {
174
+ _uiKeyring.keyring.backupAccount(_uiKeyring.keyring.getPair(address), password);
175
+ return true;
176
+ } catch (e) {
177
+ return false;
178
+ }
179
+ }
180
+
181
+ // FIXME This looks very much like what we have in Tabs
182
+ accountsSubscribe(id, port) {
183
+ const cb = (0, _subscriptions.createSubscription)(id, port);
184
+ const subscription = _accounts.accounts.subject.subscribe(accounts => cb(transformAccounts(accounts)));
185
+ port.onDisconnect.addListener(() => {
186
+ this.cancelSubscription(id);
187
+ subscription.unsubscribe();
188
+ });
189
+ return true;
190
+ }
191
+ metadataApprove(_ref10) {
192
+ let {
193
+ id
194
+ } = _ref10;
195
+ const queued = this.#koniState.getMetaRequest(id);
196
+ (0, _util.assert)(queued, 'Unable to find request');
197
+ const {
198
+ request,
199
+ resolve
200
+ } = queued;
201
+ this.#koniState.saveMetadata(request);
202
+ resolve(true);
203
+ return true;
204
+ }
205
+ metadataGet(genesisHash) {
206
+ return this.#koniState.knownMetadata.find(result => result.genesisHash === genesisHash) || null;
207
+ }
208
+ metadataList() {
209
+ return this.#koniState.knownMetadata;
210
+ }
211
+ metadataReject(_ref11) {
212
+ let {
213
+ id
214
+ } = _ref11;
215
+ const queued = this.#koniState.getMetaRequest(id);
216
+ (0, _util.assert)(queued, 'Unable to find request');
217
+ const {
218
+ reject
219
+ } = queued;
220
+ reject(new Error('Rejected'));
221
+ return true;
222
+ }
223
+ metadataSubscribe(id, port) {
224
+ const cb = (0, _subscriptions.createSubscription)(id, port);
225
+ const subscription = this.#koniState.metaSubject.subscribe(requests => cb(requests));
226
+ port.onDisconnect.addListener(() => {
227
+ this.cancelSubscription(id);
228
+ subscription.unsubscribe();
229
+ });
230
+ return true;
231
+ }
232
+ jsonRestore(_ref12) {
233
+ let {
234
+ file,
235
+ password
236
+ } = _ref12;
237
+ try {
238
+ _uiKeyring.keyring.restoreAccount(file, password, true);
239
+ } catch (error) {
240
+ throw new Error(error.message);
241
+ }
242
+ }
243
+ batchRestore(_ref13) {
244
+ let {
245
+ file,
246
+ password
247
+ } = _ref13;
248
+ try {
249
+ _uiKeyring.keyring.restoreAccounts(file, password);
250
+ } catch (error) {
251
+ throw new Error(error.message);
252
+ }
253
+ }
254
+ jsonGetAccountInfo(json) {
255
+ try {
256
+ const {
257
+ address,
258
+ meta: {
259
+ genesisHash,
260
+ name
261
+ },
262
+ type
263
+ } = _uiKeyring.keyring.createFromJson(json);
264
+ return {
265
+ address,
266
+ genesisHash,
267
+ name,
268
+ type
269
+ };
270
+ } catch (e) {
271
+ console.error(e);
272
+ throw new Error(e.message);
273
+ }
274
+ }
275
+ seedCreate(_ref14) {
276
+ let {
277
+ length = _Extension.SEED_DEFAULT_LENGTH,
278
+ seed: _seed,
279
+ type
280
+ } = _ref14;
281
+ const seed = _seed || (0, _utilCrypto.mnemonicGenerate)(length);
282
+ return {
283
+ address: _uiKeyring.keyring.createFromUri(getSuri(seed, type), {}, type).address,
284
+ seed
285
+ };
286
+ }
287
+ seedValidate(_ref15) {
288
+ let {
289
+ suri,
290
+ type
291
+ } = _ref15;
292
+ const {
293
+ phrase
294
+ } = (0, _utilCrypto.keyExtractSuri)(suri);
295
+ if ((0, _util.isHex)(phrase)) {
296
+ (0, _util.assert)((0, _util.isHex)(phrase, 256), 'Hex seed needs to be 256-bits');
297
+ } else {
298
+ // sadly isHex detects as string, so we need a cast here
299
+ (0, _util.assert)(_Extension.SEED_LENGTHS.includes(phrase.split(' ').length), `Mnemonic needs to contain ${_Extension.SEED_LENGTHS.join(', ')} words`);
300
+ (0, _util.assert)((0, _utilCrypto.mnemonicValidate)(phrase), 'Not a valid mnemonic seed');
301
+ }
302
+ return {
303
+ address: _uiKeyring.keyring.createFromUri(getSuri(suri, type), {}, type).address,
304
+ suri
305
+ };
306
+ }
307
+
308
+ // TODO: move to request service
309
+ signingApproveSignature(_ref16) {
310
+ let {
311
+ id,
312
+ signature
313
+ } = _ref16;
314
+ const queued = this.#koniState.getSignRequest(id);
315
+ (0, _util.assert)(queued, 'Unable to find request');
316
+ const {
317
+ resolve
318
+ } = queued;
319
+ resolve({
320
+ id,
321
+ signature
322
+ });
323
+ return true;
324
+ }
325
+
326
+ // TODO: move to request service
327
+ signingCancel(_ref17) {
328
+ let {
329
+ id
330
+ } = _ref17;
331
+ const queued = this.#koniState.getSignRequest(id);
332
+ (0, _util.assert)(queued, 'Unable to find request');
333
+ const {
334
+ reject
335
+ } = queued;
336
+ reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.USER_REJECT_REQUEST));
337
+ return true;
338
+ }
339
+
340
+ // FIXME This looks very much like what we have in authorization
341
+ signingSubscribe(id, port) {
342
+ const cb = (0, _subscriptions.createSubscription)(id, port);
343
+ const subscription = this.#koniState.signSubject.subscribe(requests => cb(requests));
344
+ port.onDisconnect.addListener(() => {
345
+ this.cancelSubscription(id);
346
+ subscription.unsubscribe();
347
+ });
348
+ return true;
349
+ }
350
+ windowOpen(path) {
351
+ const url = `${chrome.extension.getURL('index.html')}#${path}`;
352
+ if (!_defaults.ALLOWED_PATH.includes(path)) {
353
+ console.error('Not allowed to open the url:', url);
354
+ return false;
355
+ }
356
+ (0, _helpers.withErrorLog)(() => chrome.tabs.create({
357
+ url
358
+ }));
359
+ return true;
360
+ }
361
+ derive(parentAddress, suri, password, metadata) {
362
+ const parentPair = _uiKeyring.keyring.getPair(parentAddress);
363
+ try {
364
+ parentPair.decodePkcs8(password);
365
+ } catch (e) {
366
+ throw new Error('invalid password');
367
+ }
368
+ try {
369
+ return parentPair.derive(suri, metadata);
370
+ } catch (err) {
371
+ throw new Error(`"${suri}" is not a valid derivation path`);
372
+ }
373
+ }
374
+ derivationValidate(_ref18) {
375
+ let {
376
+ parentAddress,
377
+ parentPassword,
378
+ suri
379
+ } = _ref18;
380
+ const childPair = this.derive(parentAddress, suri, parentPassword, {});
381
+ return {
382
+ address: childPair.address,
383
+ suri
384
+ };
385
+ }
386
+ derivationCreate(_ref19) {
387
+ let {
388
+ genesisHash,
389
+ name,
390
+ parentAddress,
391
+ parentPassword,
392
+ suri
393
+ } = _ref19;
394
+ const childPair = this.derive(parentAddress, suri, parentPassword, {
395
+ genesisHash,
396
+ name,
397
+ parentAddress,
398
+ suri
399
+ });
400
+ _uiKeyring.keyring.addPair(childPair, true);
401
+ return true;
402
+ }
403
+
404
+ ///
405
+
406
+ cancelSubscription(id) {
407
+ return this.#koniState.cancelSubscription(id);
408
+ }
409
+ createUnsubscriptionHandle(id, unsubscribe) {
410
+ this.#koniState.createUnsubscriptionHandle(id, unsubscribe);
411
+ }
412
+ decodeAddress = (key, ignoreChecksum, ss58Format) => {
413
+ return _uiKeyring.keyring.decodeAddress(key, ignoreChecksum, ss58Format);
414
+ };
415
+ encodeAddress = (key, ss58Format) => {
416
+ return _uiKeyring.keyring.encodeAddress(key, ss58Format);
417
+ };
418
+ accountExportPrivateKey(_ref20) {
419
+ let {
420
+ address,
421
+ password
422
+ } = _ref20;
423
+ return this.#koniState.accountExportPrivateKey({
424
+ address,
425
+ password
426
+ });
427
+ }
428
+ checkPublicAndSecretKey(request) {
429
+ return this.#koniState.checkPublicAndSecretKey(request);
430
+ }
431
+ async accountsGetAllWithCurrentAddress(id, port) {
432
+ const cb = (0, _subscriptions.createSubscription)(id, port);
433
+ return await new Promise(resolve => {
434
+ const subscription = _accounts.accounts.subject.subscribe(storedAccounts => {
435
+ const transformedAccounts = transformAccounts(storedAccounts);
436
+ const accounts = transformedAccounts && transformedAccounts.length ? [{
437
+ ...ACCOUNT_ALL_JSON
438
+ }, ...transformedAccounts] : [];
439
+ const accountsWithCurrentAddress = {
440
+ accounts
441
+ };
442
+ setTimeout(() => {
443
+ const accountInfo = this.#koniState.keyringService.currentAccount;
444
+ if (accountInfo) {
445
+ accountsWithCurrentAddress.currentAddress = accountInfo.address;
446
+ if (accountInfo.address === _constants.ALL_ACCOUNT_KEY) {
447
+ accountsWithCurrentAddress.currentGenesisHash = accountInfo.currentGenesisHash;
448
+ } else {
449
+ const acc = accounts.find(a => a.address === accountInfo.address);
450
+ accountsWithCurrentAddress.currentGenesisHash = (acc === null || acc === void 0 ? void 0 : acc.genesisHash) || _constants.ALL_GENESIS_HASH;
451
+ }
452
+ }
453
+ resolve(accountsWithCurrentAddress);
454
+ cb(accountsWithCurrentAddress);
455
+ }, 300);
456
+ });
457
+ this.createUnsubscriptionHandle(id, subscription.unsubscribe);
458
+ port.onDisconnect.addListener(() => {
459
+ this.cancelSubscription(id);
460
+ });
461
+ });
462
+ }
463
+ accountsGetAll(id, port) {
464
+ const cb = (0, _subscriptions.createSubscription)(id, port);
465
+ const subscription = _uiKeyring.keyring.keyringOption.optionsSubject.subscribe(options => {
466
+ const optionsInputAddress = {
467
+ options
468
+ };
469
+ cb(optionsInputAddress);
470
+ });
471
+ this.createUnsubscriptionHandle(id, subscription.unsubscribe);
472
+ port.onDisconnect.addListener(() => {
473
+ this.cancelSubscription(id);
474
+ });
475
+ return id;
476
+ }
477
+ saveRecentAccountId(_ref21) {
478
+ let {
479
+ accountId
480
+ } = _ref21;
481
+ return _uiKeyring.keyring.saveRecent(accountId);
482
+ }
483
+ triggerAccountsSubscription() {
484
+ const accountsSubject = _accounts.accounts.subject;
485
+ accountsSubject.next(accountsSubject.getValue());
486
+ return true;
487
+ }
488
+ _getAuthListV2() {
489
+ return new Promise((resolve, reject) => {
490
+ this.#koniState.getAuthorize(rs => {
491
+ const accounts = _accounts.accounts.subject.getValue();
492
+ const addressList = Object.keys(accounts);
493
+ const urlList = Object.keys(rs);
494
+ if (Object.keys(rs[urlList[0]].isAllowedMap).toString() !== addressList.toString()) {
495
+ urlList.forEach(url => {
496
+ addressList.forEach(address => {
497
+ if (!Object.keys(rs[url].isAllowedMap).includes(address)) {
498
+ rs[url].isAllowedMap[address] = false;
499
+ }
500
+ });
501
+ Object.keys(rs[url].isAllowedMap).forEach(address => {
502
+ if (!addressList.includes(address)) {
503
+ delete rs[url].isAllowedMap[address];
504
+ }
505
+ });
506
+ });
507
+ this.#koniState.setAuthorize(rs);
508
+ }
509
+ resolve(rs);
510
+ });
511
+ });
512
+ }
513
+ authorizeSubscribeV2(id, port) {
514
+ const cb = (0, _subscriptions.createSubscription)(id, port);
515
+ const subscription = this.#koniState.authSubjectV2.subscribe(requests => cb(requests));
516
+ this.createUnsubscriptionHandle(id, subscription.unsubscribe);
517
+ port.onDisconnect.addListener(() => {
518
+ this.cancelSubscription(id);
519
+ });
520
+ return true;
521
+ }
522
+ async getAuthListV2() {
523
+ const authList = await this._getAuthListV2();
524
+ return {
525
+ list: authList
526
+ };
527
+ }
528
+ authorizeApproveV2(_ref22) {
529
+ let {
530
+ accounts,
531
+ id
532
+ } = _ref22;
533
+ const queued = this.#koniState.getAuthRequestV2(id);
534
+ (0, _util.assert)(queued, 'Unable to find request');
535
+ const {
536
+ resolve
537
+ } = queued;
538
+ resolve({
539
+ accounts,
540
+ result: true
541
+ });
542
+ return true;
543
+ }
544
+ authorizeRejectV2(_ref23) {
545
+ let {
546
+ id
547
+ } = _ref23;
548
+ const queued = this.#koniState.getAuthRequestV2(id);
549
+ (0, _util.assert)(queued, 'Unable to find request');
550
+ const {
551
+ reject
552
+ } = queued;
553
+ reject(new Error('Rejected'));
554
+ return true;
555
+ }
556
+ authorizeCancelV2(_ref24) {
557
+ let {
558
+ id
559
+ } = _ref24;
560
+ const queued = this.#koniState.getAuthRequestV2(id);
561
+ (0, _util.assert)(queued, 'Unable to find request');
562
+ const {
563
+ reject
564
+ } = queued;
565
+
566
+ // Reject without error meaning cancel
567
+ reject(new Error('Cancelled'));
568
+ return true;
569
+ }
570
+ _forgetSite(url, callBack) {
571
+ this.#koniState.getAuthorize(value => {
572
+ (0, _util.assert)(value, 'The source is not known');
573
+ delete value[url];
574
+ this.#koniState.setAuthorize(value, () => {
575
+ callBack && callBack(value);
576
+ });
577
+ });
578
+ }
579
+ forgetSite(data, id, port) {
580
+ const cb = (0, _subscriptions.createSubscription)(id, port);
581
+ this._forgetSite(data.url, items => {
582
+ cb(items);
583
+ });
584
+ port.onDisconnect.addListener(() => {
585
+ this.cancelSubscription(id);
586
+ });
587
+ return true;
588
+ }
589
+ _forgetAllSite(callBack) {
590
+ this.#koniState.getAuthorize(value => {
591
+ (0, _util.assert)(value, 'The source is not known');
592
+ value = {};
593
+ this.#koniState.setAuthorize(value, () => {
594
+ callBack && callBack(value);
595
+ });
596
+ });
597
+ }
598
+ forgetAllSite(id, port) {
599
+ const cb = (0, _subscriptions.createSubscription)(id, port);
600
+ this._forgetAllSite(items => {
601
+ cb(items);
602
+ });
603
+ port.onDisconnect.addListener(() => {
604
+ this.cancelSubscription(id);
605
+ });
606
+ return true;
607
+ }
608
+ getNonReadonlyAccounts() {
609
+ const storedAccounts = _accounts.accounts.subject.getValue();
610
+ const transformedAccounts = transformAccounts(storedAccounts);
611
+ return transformedAccounts.filter(a => !a.isReadOnly).map(a => a.address);
612
+ }
613
+ isAddressValidWithAuthType(address, accountAuthType) {
614
+ if (accountAuthType === 'substrate') {
615
+ return !(0, _utilCrypto.isEthereumAddress)(address);
616
+ } else if (accountAuthType === 'evm') {
617
+ return (0, _utilCrypto.isEthereumAddress)(address);
618
+ }
619
+ return true;
620
+ }
621
+ filterAccountsByAccountAuthType(accounts, accountAuthType) {
622
+ if (accountAuthType === 'substrate') {
623
+ return accounts.filter(address => !(0, _utilCrypto.isEthereumAddress)(address));
624
+ } else if (accountAuthType === 'evm') {
625
+ return accounts.filter(address => (0, _utilCrypto.isEthereumAddress)(address));
626
+ } else {
627
+ return accounts;
628
+ }
629
+ }
630
+ _changeAuthorizationAll(connectValue, callBack) {
631
+ this.#koniState.getAuthorize(value => {
632
+ (0, _util.assert)(value, 'The source is not known');
633
+ const nonReadonlyAccounts = this.getNonReadonlyAccounts();
634
+ Object.keys(value).forEach(url => {
635
+ if (!value[url].isAllowed) {
636
+ return;
637
+ }
638
+ const targetAccounts = this.filterAccountsByAccountAuthType(nonReadonlyAccounts, value[url].accountAuthType);
639
+ targetAccounts.forEach(address => {
640
+ value[url].isAllowedMap[address] = connectValue;
641
+ });
642
+ });
643
+ this.#koniState.setAuthorize(value, () => {
644
+ callBack && callBack(value);
645
+ });
646
+ });
647
+ }
648
+ changeAuthorizationAll(data, id, port) {
649
+ const cb = (0, _subscriptions.createSubscription)(id, port);
650
+ this._changeAuthorizationAll(data.connectValue, items => {
651
+ cb(items);
652
+ });
653
+ port.onDisconnect.addListener(() => {
654
+ this.cancelSubscription(id);
655
+ });
656
+ return true;
657
+ }
658
+ _changeAuthorization(url, connectValue, callBack) {
659
+ this.#koniState.getAuthorize(value => {
660
+ (0, _util.assert)(value[url], 'The source is not known');
661
+ const nonReadonlyAccounts = this.getNonReadonlyAccounts();
662
+ const targetAccounts = this.filterAccountsByAccountAuthType(nonReadonlyAccounts, value[url].accountAuthType);
663
+ targetAccounts.forEach(address => {
664
+ value[url].isAllowedMap[address] = connectValue;
665
+ });
666
+ this.#koniState.setAuthorize(value, () => {
667
+ callBack && callBack(value);
668
+ });
669
+ });
670
+ }
671
+ toggleAuthorization2(url) {
672
+ return new Promise(resolve => {
673
+ this.#koniState.getAuthorize(value => {
674
+ (0, _util.assert)(value[url], 'The source is not known');
675
+ value[url].isAllowed = !value[url].isAllowed;
676
+ this.#koniState.setAuthorize(value, () => {
677
+ resolve({
678
+ list: value
679
+ });
680
+ });
681
+ });
682
+ });
683
+ }
684
+ changeAuthorization(data, id, port) {
685
+ const cb = (0, _subscriptions.createSubscription)(id, port);
686
+ this._changeAuthorization(data.url, data.connectValue, items => {
687
+ cb(items);
688
+ });
689
+ port.onDisconnect.addListener(() => {
690
+ this.cancelSubscription(id);
691
+ });
692
+ return true;
693
+ }
694
+ _changeAuthorizationPerAcc(address, connectValue, url, callBack) {
695
+ this.#koniState.getAuthorize(value => {
696
+ (0, _util.assert)(value, 'The source is not known');
697
+ if (this.isAddressValidWithAuthType(address, value[url].accountAuthType)) {
698
+ value[url].isAllowedMap[address] = connectValue;
699
+ console.log('Devbu: ', value);
700
+ this.#koniState.setAuthorize(value, () => {
701
+ callBack && callBack(value);
702
+ });
703
+ } else {
704
+ callBack && callBack(value);
705
+ }
706
+ });
707
+ }
708
+ _changeAuthorizationBlock(connectValue, id) {
709
+ this.#koniState.getAuthorize(value => {
710
+ (0, _util.assert)(value, 'The source is not known');
711
+ value[id].isAllowed = connectValue;
712
+ console.log('Devbu: ', value);
713
+ this.#koniState.setAuthorize(value);
714
+ });
715
+ }
716
+ _changeAuthorizationPerSite(values, id) {
717
+ this.#koniState.getAuthorize(value => {
718
+ (0, _util.assert)(value, 'The source is not known');
719
+ value[id].isAllowedMap = values;
720
+ console.log('Devbu: ', value);
721
+ this.#koniState.setAuthorize(value);
722
+ });
723
+ }
724
+ changeAuthorizationPerAcc(data, id, port) {
725
+ const cb = (0, _subscriptions.createSubscription)(id, port);
726
+ this._changeAuthorizationPerAcc(data.address, data.connectValue, data.url, items => {
727
+ cb(items);
728
+ });
729
+ port.onDisconnect.addListener(() => {
730
+ this.cancelSubscription(id);
731
+ });
732
+ return true;
733
+ }
734
+ changeAuthorizationPerSite(data) {
735
+ this._changeAuthorizationPerSite(data.values, data.id);
736
+ return true;
737
+ }
738
+ changeAuthorizationBlock(data) {
739
+ this._changeAuthorizationBlock(data.connectedValue, data.id);
740
+ return true;
741
+ }
742
+ async getSettings() {
743
+ return await new Promise(resolve => {
744
+ this.#koniState.getSettings(value => {
745
+ resolve(value);
746
+ });
747
+ });
748
+ }
749
+ toggleBalancesVisibility(id, port) {
750
+ const cb = (0, _subscriptions.createSubscription)(id, port);
751
+ this.#koniState.getSettings(value => {
752
+ const updateValue = {
753
+ ...value,
754
+ isShowBalance: !value.isShowBalance
755
+ };
756
+ this.#koniState.setSettings(updateValue, () => {
757
+ // eslint-disable-next-line node/no-callback-literal
758
+ cb(updateValue);
759
+ });
760
+ });
761
+ port.onDisconnect.addListener(() => {
762
+ this.cancelSubscription(id);
763
+ });
764
+ return true;
765
+ }
766
+ saveAccountAllLogo(data, id, port) {
767
+ const cb = (0, _subscriptions.createSubscription)(id, port);
768
+ this.#koniState.getSettings(value => {
769
+ const updateValue = {
770
+ ...value,
771
+ accountAllLogo: data
772
+ };
773
+ this.#koniState.setSettings(updateValue, () => {
774
+ // eslint-disable-next-line node/no-callback-literal
775
+ cb(updateValue);
776
+ });
777
+ });
778
+ port.onDisconnect.addListener(() => {
779
+ this.cancelSubscription(id);
780
+ });
781
+ return true;
782
+ }
783
+ saveTheme(data, id, port) {
784
+ const cb = (0, _subscriptions.createSubscription)(id, port);
785
+ this.#koniState.setTheme(data, cb);
786
+ port.onDisconnect.addListener(() => {
787
+ this.cancelSubscription(id);
788
+ });
789
+ return true;
790
+ }
791
+ setCamera(_ref25) {
792
+ let {
793
+ camera
794
+ } = _ref25;
795
+ this.#koniState.setCamera(camera);
796
+ return true;
797
+ }
798
+ saveBrowserConfirmationType(data, id, port) {
799
+ const cb = (0, _subscriptions.createSubscription)(id, port);
800
+ this.#koniState.setBrowserConfirmationType(data, cb);
801
+ port.onDisconnect.addListener(() => {
802
+ this.cancelSubscription(id);
803
+ });
804
+ return true;
805
+ }
806
+ async subscribeSettings(id, port) {
807
+ const cb = (0, _subscriptions.createSubscription)(id, port);
808
+ const balancesVisibilitySubscription = this.#koniState.subscribeSettingsSubject().subscribe({
809
+ next: rs => {
810
+ cb(rs);
811
+ }
812
+ });
813
+ this.createUnsubscriptionHandle(id, balancesVisibilitySubscription.unsubscribe);
814
+ port.onDisconnect.addListener(() => {
815
+ this.cancelSubscription(id);
816
+ });
817
+ return await this.getSettings();
818
+ }
819
+ async subscribeAuthUrls(id, port) {
820
+ const cb = (0, _subscriptions.createSubscription)(id, port);
821
+ const authorizeUrlSubscription = this.#koniState.subscribeAuthorizeUrlSubject().subscribe({
822
+ next: rs => {
823
+ cb(rs);
824
+ }
825
+ });
826
+ this.createUnsubscriptionHandle(id, authorizeUrlSubscription.unsubscribe);
827
+ port.onDisconnect.addListener(() => {
828
+ this.cancelSubscription(id);
829
+ });
830
+ return await this.#koniState.getAuthList();
831
+ }
832
+ _saveCurrentAccountAddress(address, callback) {
833
+ let accountInfo = this.#koniState.keyringService.currentAccount;
834
+ if (!accountInfo) {
835
+ accountInfo = {
836
+ address,
837
+ currentGenesisHash: _constants.ALL_GENESIS_HASH,
838
+ allGenesisHash: _constants.ALL_GENESIS_HASH || undefined
839
+ };
840
+ } else {
841
+ accountInfo.address = address;
842
+ if (address !== _constants.ALL_ACCOUNT_KEY) {
843
+ const currentKeyPair = _uiKeyring.keyring.getAccount(address);
844
+ accountInfo.currentGenesisHash = (currentKeyPair === null || currentKeyPair === void 0 ? void 0 : currentKeyPair.meta.genesisHash) || _constants.ALL_GENESIS_HASH;
845
+ } else {
846
+ accountInfo.currentGenesisHash = accountInfo.allGenesisHash || _constants.ALL_GENESIS_HASH;
847
+ }
848
+ }
849
+ this.#koniState.setCurrentAccount(accountInfo, () => {
850
+ callback && callback(accountInfo);
851
+ });
852
+ }
853
+ updateCurrentAccountAddress(address) {
854
+ this._saveCurrentAccountAddress(address, () => {
855
+ this.triggerAccountsSubscription();
856
+ });
857
+ return true;
858
+ }
859
+ saveCurrentAccountAddress(data, id, port) {
860
+ const cb = (0, _subscriptions.createSubscription)(id, port);
861
+ this._saveCurrentAccountAddress(data.address, cb);
862
+ port.onDisconnect.addListener(() => {
863
+ this.cancelSubscription(id);
864
+ });
865
+ return true;
866
+ }
867
+ async getAssetSetting() {
868
+ return this.#koniState.chainService.getAssetSettings();
869
+ }
870
+ subscribeAssetSetting(id, port) {
871
+ const cb = (0, _subscriptions.createSubscription)(id, port);
872
+ const assetSettingSubscription = this.#koniState.chainService.subscribeAssetSettings().subscribe(cb);
873
+ this.createUnsubscriptionHandle(id, assetSettingSubscription.unsubscribe);
874
+ port.onDisconnect.addListener(() => {
875
+ this.cancelSubscription(id);
876
+ });
877
+ return this.getAssetSetting();
878
+ }
879
+ async updateAssetSetting(params) {
880
+ try {
881
+ await this.#koniState.chainService.updateAssetSetting(params.tokenSlug, params.assetSetting);
882
+ return true;
883
+ } catch (e) {
884
+ console.error('Error updating asset setting', e);
885
+ return false;
886
+ }
887
+ }
888
+ async getPrice() {
889
+ return this.#koniState.priceService.getPrice();
890
+ }
891
+ subscribePrice(id, port) {
892
+ const cb = (0, _subscriptions.createSubscription)(id, port);
893
+ const priceSubscription = this.#koniState.priceService.getPriceSubject().subscribe(rs => {
894
+ cb(rs);
895
+ });
896
+ this.createUnsubscriptionHandle(id, priceSubscription.unsubscribe);
897
+ port.onDisconnect.addListener(() => {
898
+ this.cancelSubscription(id);
899
+ });
900
+ return this.getPrice();
901
+ }
902
+ getBalance(reset) {
903
+ return this.#koniState.getBalance(reset);
904
+ }
905
+ subscribeBalance(id, port) {
906
+ const cb = (0, _subscriptions.createSubscription)(id, port);
907
+ const balanceSubscription = this.#koniState.subscribeBalance().subscribe({
908
+ next: rs => {
909
+ cb(rs);
910
+ }
911
+ });
912
+ this.createUnsubscriptionHandle(id, balanceSubscription.unsubscribe);
913
+ port.onDisconnect.addListener(() => {
914
+ this.cancelSubscription(id);
915
+ });
916
+ return this.getBalance(true);
917
+ }
918
+ getCrowdloan(reset) {
919
+ return this.#koniState.getCrowdloan(reset);
920
+ }
921
+ subscribeCrowdloan(id, port) {
922
+ const cb = (0, _subscriptions.createSubscription)(id, port);
923
+ const crowdloanSubscription = this.#koniState.subscribeCrowdloan().subscribe({
924
+ next: rs => {
925
+ cb(rs);
926
+ }
927
+ });
928
+ this.createUnsubscriptionHandle(id, crowdloanSubscription.unsubscribe);
929
+ port.onDisconnect.addListener(() => {
930
+ this.cancelSubscription(id);
931
+ });
932
+ return this.getCrowdloan(true);
933
+ }
934
+ validatePassword(json, password) {
935
+ const cryptoType = Array.isArray(json.encoding.content) ? json.encoding.content[1] : 'ed25519';
936
+ const encType = Array.isArray(json.encoding.type) ? json.encoding.type : [json.encoding.type];
937
+ const pair = (0, _keyring.createPair)({
938
+ toSS58: this.encodeAddress,
939
+ type: cryptoType
940
+ }, {
941
+ publicKey: this.decodeAddress(json.address, true)
942
+ }, json.meta, (0, _util.isHex)(json.encoded) ? (0, _util.hexToU8a)(json.encoded) : (0, _utilCrypto.base64Decode)(json.encoded), encType);
943
+
944
+ // unlock then lock (locking cleans secretKey, so needs to be last)
945
+ try {
946
+ pair.decodePkcs8(password);
947
+ pair.lock();
948
+ return true;
949
+ } catch (e) {
950
+ console.error(e);
951
+ return false;
952
+ }
953
+ }
954
+ validatedAccountsPassword(json, password) {
955
+ try {
956
+ (0, _util.u8aToString)((0, _utilCrypto.jsonDecrypt)(json, password));
957
+ return true;
958
+ } catch (e) {
959
+ return false;
960
+ }
961
+ }
962
+ _addAddressToAuthList(address, isAllowed) {
963
+ this.#koniState.getAuthorize(value => {
964
+ if (value && Object.keys(value).length) {
965
+ Object.keys(value).forEach(url => {
966
+ if (this.isAddressValidWithAuthType(address, value[url].accountAuthType)) {
967
+ value[url].isAllowedMap[address] = isAllowed;
968
+ }
969
+ });
970
+ this.#koniState.setAuthorize(value);
971
+ }
972
+ });
973
+ }
974
+ _addAddressesToAuthList(addresses, isAllowed) {
975
+ this.#koniState.getAuthorize(value => {
976
+ if (value && Object.keys(value).length) {
977
+ Object.keys(value).forEach(url => {
978
+ addresses.forEach(address => {
979
+ if (this.isAddressValidWithAuthType(address, value[url].accountAuthType)) {
980
+ value[url].isAllowedMap[address] = isAllowed;
981
+ }
982
+ });
983
+ }); /**/
984
+
985
+ this.#koniState.setAuthorize(value);
986
+ }
987
+ });
988
+ }
989
+ async accountsCreateSuriV2(_ref26) {
990
+ let {
991
+ genesisHash,
992
+ isAllowed,
993
+ name,
994
+ password,
995
+ suri: _suri,
996
+ types
997
+ } = _ref26;
998
+ const addressDict = {};
999
+ let changedAccount = false;
1000
+ const hasMasterPassword = _uiKeyring.keyring.keyring.hasMasterPassword;
1001
+ if (!hasMasterPassword) {
1002
+ if (!password) {
1003
+ throw Error('Require password to set up master password');
1004
+ } else {
1005
+ _uiKeyring.keyring.changeMasterPassword(password);
1006
+ this.#koniState.updateKeyringState();
1007
+ }
1008
+ }
1009
+ const currentAccount = this.#koniState.keyringService.currentAccount;
1010
+ const allGenesisHash = (currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.allGenesisHash) || undefined;
1011
+ types === null || types === void 0 ? void 0 : types.forEach(type => {
1012
+ const suri = getSuri(_suri, type);
1013
+ const address = _uiKeyring.keyring.createFromUri(suri, {}, type).address;
1014
+ addressDict[type] = address;
1015
+ const newAccountName = type === 'ethereum' ? `${name} - EVM` : name;
1016
+ _uiKeyring.keyring.addUri(suri, {
1017
+ genesisHash,
1018
+ name: newAccountName
1019
+ }, type);
1020
+ this._addAddressToAuthList(address, isAllowed);
1021
+ if (!changedAccount) {
1022
+ if (types.length === 1) {
1023
+ this.#koniState.setCurrentAccount({
1024
+ address,
1025
+ currentGenesisHash: genesisHash || null,
1026
+ allGenesisHash
1027
+ });
1028
+ } else {
1029
+ this.#koniState.setCurrentAccount({
1030
+ address: _constants.ALL_ACCOUNT_KEY,
1031
+ currentGenesisHash: allGenesisHash || null,
1032
+ allGenesisHash
1033
+ });
1034
+ }
1035
+ changedAccount = true;
1036
+ }
1037
+ });
1038
+ await new Promise(resolve => {
1039
+ this.#koniState.addAccountRef(Object.values(addressDict), () => {
1040
+ resolve();
1041
+ });
1042
+ });
1043
+ return addressDict;
1044
+ }
1045
+ async accountsForgetOverride(_ref27) {
1046
+ let {
1047
+ address
1048
+ } = _ref27;
1049
+ _uiKeyring.keyring.forgetAccount(address);
1050
+ await new Promise(resolve => {
1051
+ this.#koniState.removeAccountRef(address, () => {
1052
+ resolve();
1053
+ });
1054
+ });
1055
+
1056
+ // Remove from auth list
1057
+ await new Promise(resolve => {
1058
+ this.#koniState.getAuthorize(value => {
1059
+ if (value && Object.keys(value).length) {
1060
+ Object.keys(value).forEach(url => {
1061
+ delete value[url].isAllowedMap[address];
1062
+ });
1063
+ this.#koniState.setAuthorize(value, resolve);
1064
+ } else {
1065
+ resolve();
1066
+ }
1067
+ });
1068
+ });
1069
+
1070
+ // Set current account to all account
1071
+ await new Promise(resolve => {
1072
+ const currentAccountInfo = this.#koniState.keyringService.currentAccount;
1073
+ this.#koniState.setCurrentAccount({
1074
+ currentGenesisHash: (currentAccountInfo === null || currentAccountInfo === void 0 ? void 0 : currentAccountInfo.allGenesisHash) || null,
1075
+ address: _constants.ALL_ACCOUNT_KEY
1076
+ }, resolve);
1077
+ });
1078
+ return true;
1079
+ }
1080
+ seedCreateV2(_ref28) {
1081
+ let {
1082
+ length = _Extension.SEED_DEFAULT_LENGTH,
1083
+ seed: _seed,
1084
+ types
1085
+ } = _ref28;
1086
+ const seed = _seed || (0, _utilCrypto.mnemonicGenerate)(length);
1087
+ const rs = {
1088
+ seed: seed,
1089
+ addressMap: {}
1090
+ };
1091
+ types === null || types === void 0 ? void 0 : types.forEach(type => {
1092
+ rs.addressMap[type] = _uiKeyring.keyring.createFromUri(getSuri(seed, type), {}, type).address;
1093
+ });
1094
+ return rs;
1095
+ }
1096
+ seedValidateV2(_ref29) {
1097
+ let {
1098
+ suri,
1099
+ types
1100
+ } = _ref29;
1101
+ const {
1102
+ phrase
1103
+ } = (0, _utilCrypto.keyExtractSuri)(suri);
1104
+ if ((0, _util.isHex)(phrase)) {
1105
+ (0, _util.assert)((0, _util.isHex)(phrase, 256), 'Hex seed needs to be 256-bits');
1106
+ } else {
1107
+ // sadly isHex detects as string, so we need a cast here
1108
+ (0, _util.assert)(_Extension.SEED_LENGTHS.includes(phrase.split(' ').length), `Mnemonic needs to contain ${_Extension.SEED_LENGTHS.join(', ')} words`);
1109
+ (0, _util.assert)((0, _utilCrypto.mnemonicValidate)(phrase), 'Not a valid mnemonic seed');
1110
+ }
1111
+ const rs = {
1112
+ seed: suri,
1113
+ addressMap: {}
1114
+ };
1115
+ types && types.forEach(type => {
1116
+ rs.addressMap[type] = _uiKeyring.keyring.createFromUri(getSuri(suri, type), {}, type).address;
1117
+ });
1118
+ return rs;
1119
+ }
1120
+ _checkValidatePrivateKey(_ref30) {
1121
+ let {
1122
+ suri,
1123
+ types
1124
+ } = _ref30;
1125
+ let autoAddPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1126
+ const {
1127
+ phrase
1128
+ } = (0, _utilCrypto.keyExtractSuri)(suri);
1129
+ const rs = {
1130
+ autoAddPrefix: autoAddPrefix,
1131
+ addressMap: {}
1132
+ };
1133
+ types && types.forEach(type => {
1134
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
1135
+ rs.addressMap[type] = '';
1136
+ });
1137
+ if ((0, _util.isHex)(phrase) && (0, _util.isHex)(phrase, 256)) {
1138
+ types && types.forEach(type => {
1139
+ rs.addressMap[type] = _uiKeyring.keyring.createFromUri(getSuri(suri, type), {}, type).address;
1140
+ });
1141
+ } else {
1142
+ rs.autoAddPrefix = false;
1143
+ (0, _util.assert)(false, 'Not valid private key');
1144
+ }
1145
+ return rs;
1146
+ }
1147
+ metamaskPrivateKeyValidateV2(_ref31) {
1148
+ let {
1149
+ suri,
1150
+ types
1151
+ } = _ref31;
1152
+ const isValidSuri = suri.startsWith('0x');
1153
+ if (isValidSuri) {
1154
+ return this._checkValidatePrivateKey({
1155
+ suri,
1156
+ types
1157
+ });
1158
+ } else {
1159
+ return this._checkValidatePrivateKey({
1160
+ suri: `0x${suri}`,
1161
+ types
1162
+ }, true);
1163
+ }
1164
+ }
1165
+ deriveV2(parentAddress, suri, metadata) {
1166
+ const parentPair = _uiKeyring.keyring.getPair(parentAddress);
1167
+ if (parentPair.isLocked) {
1168
+ _uiKeyring.keyring.unlockPair(parentPair.address);
1169
+ }
1170
+ try {
1171
+ return parentPair.derive(suri, metadata);
1172
+ } catch (err) {
1173
+ throw new Error(`"${suri}" is not a valid derivation path`);
1174
+ }
1175
+ }
1176
+ derivationCreateV2(_ref32) {
1177
+ let {
1178
+ genesisHash,
1179
+ isAllowed,
1180
+ name,
1181
+ parentAddress,
1182
+ suri
1183
+ } = _ref32;
1184
+ const childPair = this.deriveV2(parentAddress, suri, {
1185
+ genesisHash,
1186
+ name,
1187
+ parentAddress,
1188
+ suri
1189
+ });
1190
+ const address = childPair.address;
1191
+ this._saveCurrentAccountAddress(address, () => {
1192
+ _uiKeyring.keyring.addPair(childPair, true);
1193
+ this._addAddressToAuthList(address, isAllowed);
1194
+ });
1195
+ return true;
1196
+ }
1197
+ jsonRestoreV2(_ref33) {
1198
+ let {
1199
+ address,
1200
+ file,
1201
+ isAllowed,
1202
+ password,
1203
+ withMasterPassword
1204
+ } = _ref33;
1205
+ const isPasswordValidated = this.validatePassword(file, password);
1206
+ if (isPasswordValidated) {
1207
+ try {
1208
+ this._saveCurrentAccountAddress(address, () => {
1209
+ _uiKeyring.keyring.restoreAccount(file, password, withMasterPassword);
1210
+ this._addAddressToAuthList(address, isAllowed);
1211
+ });
1212
+ } catch (error) {
1213
+ throw new Error(error.message);
1214
+ }
1215
+ } else {
1216
+ throw new Error('Unable to decode using the supplied passphrase');
1217
+ }
1218
+ }
1219
+ batchRestoreV2(_ref34) {
1220
+ let {
1221
+ accountsInfo,
1222
+ file,
1223
+ isAllowed,
1224
+ password
1225
+ } = _ref34;
1226
+ const addressList = accountsInfo.map(acc => acc.address);
1227
+ const isPasswordValidated = this.validatedAccountsPassword(file, password);
1228
+ if (isPasswordValidated) {
1229
+ try {
1230
+ this._saveCurrentAccountAddress(addressList[0], () => {
1231
+ _uiKeyring.keyring.restoreAccounts(file, password);
1232
+ this._addAddressesToAuthList(addressList, isAllowed);
1233
+ });
1234
+ } catch (error) {
1235
+ throw new Error(error.message);
1236
+ }
1237
+ } else {
1238
+ throw new Error('Unable to decode using the supplied passphrase');
1239
+ }
1240
+ }
1241
+ getNftCollection() {
1242
+ return this.#koniState.getNftCollection();
1243
+ }
1244
+ subscribeNftCollection(id, port) {
1245
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1246
+ const nftCollectionSubscription = this.#koniState.subscribeNftCollection().subscribe({
1247
+ next: rs => {
1248
+ cb(rs);
1249
+ }
1250
+ });
1251
+ this.createUnsubscriptionHandle(id, nftCollectionSubscription.unsubscribe);
1252
+ port.onDisconnect.addListener(() => {
1253
+ this.cancelSubscription(id);
1254
+ });
1255
+ return this.getNftCollection();
1256
+ }
1257
+ getNft() {
1258
+ return this.#koniState.getNft();
1259
+ }
1260
+ async subscribeNft(id, port) {
1261
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1262
+ const nftSubscription = this.#koniState.subscribeNft().subscribe({
1263
+ next: rs => {
1264
+ cb(rs);
1265
+ }
1266
+ });
1267
+ this.createUnsubscriptionHandle(id, nftSubscription.unsubscribe);
1268
+ port.onDisconnect.addListener(() => {
1269
+ this.cancelSubscription(id);
1270
+ });
1271
+ return this.getNft();
1272
+ }
1273
+ getStakingReward() {
1274
+ return new Promise((resolve, reject) => {
1275
+ this.#koniState.getStakingReward(rs => {
1276
+ resolve(rs);
1277
+ });
1278
+ });
1279
+ }
1280
+ subscribeStakingReward(id, port) {
1281
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1282
+ const stakingRewardSubscription = this.#koniState.subscribeStakingReward().subscribe({
1283
+ next: rs => {
1284
+ cb(rs);
1285
+ }
1286
+ });
1287
+ this.createUnsubscriptionHandle(id, stakingRewardSubscription.unsubscribe);
1288
+ port.onDisconnect.addListener(() => {
1289
+ this.cancelSubscription(id);
1290
+ });
1291
+ return this.getStakingReward();
1292
+ }
1293
+ async getStaking() {
1294
+ return this.#koniState.getStaking();
1295
+ }
1296
+ async subscribeStaking(id, port) {
1297
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1298
+ const stakingSubscription = this.#koniState.subscribeStaking().subscribe({
1299
+ next: rs => {
1300
+ cb(rs);
1301
+ }
1302
+ });
1303
+ this.createUnsubscriptionHandle(id, stakingSubscription.unsubscribe);
1304
+ port.onDisconnect.addListener(() => {
1305
+ this.cancelSubscription(id);
1306
+ });
1307
+ return await this.getStaking();
1308
+ }
1309
+ async subscribeHistory(id, port) {
1310
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1311
+ const historySubject = await this.#koniState.historyService.getHistorySubject();
1312
+ historySubject.subscribe(cb);
1313
+ this.createUnsubscriptionHandle(id, historySubject.unsubscribe);
1314
+ port.onDisconnect.addListener(() => {
1315
+ this.cancelSubscription(id);
1316
+ });
1317
+ return historySubject.getValue();
1318
+ }
1319
+ validateTransfer(tokenSlug, from, to, value, transferAll) {
1320
+ const errors = [];
1321
+ const keypair = _uiKeyring.keyring.getPair(from);
1322
+ let transferValue;
1323
+ if (!transferAll) {
1324
+ if (value === undefined) {
1325
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS, 'Require transfer value'));
1326
+ }
1327
+ if (value) {
1328
+ transferValue = new _util.BN(value);
1329
+ }
1330
+ }
1331
+ const tokenInfo = this.#koniState.getAssetBySlug(tokenSlug);
1332
+ if (!tokenInfo) {
1333
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS, 'Not found token from registry'));
1334
+ }
1335
+ if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils._isTokenEvmSmartContract)(tokenInfo) && (0, _utils._getContractAddressOfToken)(tokenInfo).length === 0) {
1336
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS, 'Not found ERC20 address for this token'));
1337
+ }
1338
+ return [errors, keypair, transferValue, tokenInfo];
1339
+ }
1340
+ async makeTransfer(inputData) {
1341
+ const {
1342
+ from,
1343
+ networkKey,
1344
+ to,
1345
+ tokenSlug,
1346
+ transferAll,
1347
+ value
1348
+ } = inputData;
1349
+ const [errors,,, tokenInfo] = this.validateTransfer(tokenSlug, from, to, value, transferAll);
1350
+ const warnings = [];
1351
+ const evmApiMap = this.#koniState.getEvmApiMap();
1352
+ const chainInfo = this.#koniState.getChainInfo(networkKey);
1353
+ const nativeTokenInfo = this.#koniState.getNativeTokenInfo(networkKey);
1354
+ const nativeTokenSlug = nativeTokenInfo.slug;
1355
+ const isTransferNativeToken = nativeTokenSlug === tokenSlug;
1356
+ let chainType = _KoniTypes.ChainType.SUBSTRATE;
1357
+ const tokenBaseAmount = {
1358
+ value: '0',
1359
+ symbol: tokenInfo.symbol,
1360
+ decimals: tokenInfo.decimals || 0
1361
+ };
1362
+ const transferAmount = {
1363
+ ...tokenBaseAmount
1364
+ };
1365
+ let transaction;
1366
+
1367
+ // Get native token amount
1368
+ const freeBalance = await this.#koniState.balanceService.getTokenFreeBalance(from, networkKey, tokenSlug);
1369
+ let edAsWarning = false;
1370
+ if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to)) {
1371
+ chainType = _KoniTypes.ChainType.EVM;
1372
+ const txVal = transferAll ? freeBalance.value : value || '0';
1373
+
1374
+ // Estimate with EVM API
1375
+ if ((0, _utils._isTokenEvmSmartContract)(tokenInfo) || (0, _utils._isLocalToken)(tokenInfo)) {
1376
+ [transaction, transferAmount.value] = await (0, _transfer3.getERC20TransactionObject)((0, _utils._getContractAddressOfToken)(tokenInfo), chainInfo, from, to, txVal, !!transferAll, evmApiMap);
1377
+ } else {
1378
+ [transaction, transferAmount.value] = await (0, _transfer3.getEVMTransactionObject)(chainInfo, to, txVal, !!transferAll, evmApiMap);
1379
+ edAsWarning = true;
1380
+ }
1381
+ } else {
1382
+ const substrateApi = this.#koniState.getSubstrateApi(networkKey);
1383
+ [transaction, transferAmount.value] = await (0, _transfer.createTransferExtrinsic)({
1384
+ transferAll: !!transferAll,
1385
+ value: value || '0',
1386
+ from: from,
1387
+ networkKey,
1388
+ tokenInfo,
1389
+ to: to,
1390
+ substrateApi
1391
+ });
1392
+ edAsWarning = true;
1393
+ }
1394
+ const transferNativeAmount = isTransferNativeToken ? transferAmount.value : '0';
1395
+ return this.#koniState.transactionService.handleTransaction({
1396
+ errors,
1397
+ warnings,
1398
+ address: from,
1399
+ chain: networkKey,
1400
+ chainType,
1401
+ transferNativeAmount,
1402
+ transaction,
1403
+ data: inputData,
1404
+ extrinsicType: isTransferNativeToken ? _KoniTypes.ExtrinsicType.TRANSFER_BALANCE : _KoniTypes.ExtrinsicType.TRANSFER_TOKEN,
1405
+ ignoreWarnings: transferAll,
1406
+ isTransferAll: transferAll,
1407
+ edAsWarning: edAsWarning
1408
+ });
1409
+ }
1410
+ validateCrossChainTransfer(destinationNetworkKey, sendingTokenSlug, sender, sendingValue) {
1411
+ const errors = [];
1412
+ const keypair = _uiKeyring.keyring.getPair(sender);
1413
+ const transferValue = new _util.BN(sendingValue);
1414
+ const originTokenInfo = this.#koniState.getAssetBySlug(sendingTokenSlug);
1415
+ const destinationTokenInfo = this.#koniState.getXcmEqualAssetByChain(destinationNetworkKey, sendingTokenSlug);
1416
+ if (!destinationTokenInfo) {
1417
+ errors.push(new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.INVALID_TOKEN, 'Not found token from registry'));
1418
+ }
1419
+ return [errors, keypair, transferValue, originTokenInfo, destinationTokenInfo];
1420
+ }
1421
+ async makeCrossChainTransfer(inputData) {
1422
+ const {
1423
+ destinationNetworkKey,
1424
+ from,
1425
+ originNetworkKey,
1426
+ to,
1427
+ tokenSlug,
1428
+ value
1429
+ } = inputData;
1430
+ const [errors, fromKeyPair,, originTokenInfo, destinationTokenInfo] = this.validateCrossChainTransfer(destinationNetworkKey, tokenSlug, from, value);
1431
+ let extrinsic = null;
1432
+ if (errors.length > 0) {
1433
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors(errors);
1434
+ }
1435
+ if (fromKeyPair && destinationTokenInfo) {
1436
+ const substrateApi = this.#koniState.getSubstrateApi(originNetworkKey);
1437
+ const chainInfoMap = this.#koniState.getChainInfoMap();
1438
+ extrinsic = await (0, _xcm.createXcmExtrinsic)({
1439
+ destinationTokenInfo,
1440
+ originTokenInfo,
1441
+ sendingValue: value,
1442
+ recipient: to,
1443
+ chainInfoMap,
1444
+ substrateApi
1445
+ });
1446
+ }
1447
+ return await this.#koniState.transactionService.handleTransaction({
1448
+ url: _constants2.EXTENSION_REQUEST_URL,
1449
+ address: from,
1450
+ chain: originNetworkKey,
1451
+ transaction: extrinsic,
1452
+ data: inputData,
1453
+ extrinsicType: _KoniTypes.ExtrinsicType.TRANSFER_XCM,
1454
+ chainType: _KoniTypes.ChainType.SUBSTRATE,
1455
+ transferNativeAmount: (0, _utils._isNativeToken)(originTokenInfo) ? value : '0',
1456
+ errors
1457
+ });
1458
+ }
1459
+ async evmNftSubmitTransaction(inputData) {
1460
+ const {
1461
+ networkKey,
1462
+ params,
1463
+ recipientAddress,
1464
+ senderAddress
1465
+ } = inputData;
1466
+ const contractAddress = params.contractAddress;
1467
+ const tokenId = params.tokenId;
1468
+ const transaction = await (0, _transfer3.getERC721Transaction)(this.#koniState.getEvmApi(networkKey), contractAddress, senderAddress, recipientAddress, tokenId);
1469
+ return await this.#koniState.transactionService.handleTransaction({
1470
+ address: senderAddress,
1471
+ chain: networkKey,
1472
+ chainType: _KoniTypes.ChainType.EVM,
1473
+ data: inputData,
1474
+ extrinsicType: _KoniTypes.ExtrinsicType.SEND_NFT,
1475
+ transaction,
1476
+ url: _constants2.EXTENSION_REQUEST_URL
1477
+ });
1478
+ }
1479
+ async upsertChain(data) {
1480
+ try {
1481
+ return await this.#koniState.upsertChainInfo(data);
1482
+ } catch (e) {
1483
+ console.error(e);
1484
+ return false;
1485
+ }
1486
+ }
1487
+ removeCustomChain(networkKey) {
1488
+ return this.#koniState.removeCustomChain(networkKey);
1489
+ }
1490
+ disableChain(networkKey) {
1491
+ return this.#koniState.disableChain(networkKey);
1492
+ }
1493
+ async enableChain(networkKey) {
1494
+ return await this.#koniState.enableChain(networkKey);
1495
+ }
1496
+ async validateNetwork(_ref35) {
1497
+ let {
1498
+ existedChainSlug,
1499
+ provider
1500
+ } = _ref35;
1501
+ return await this.#koniState.validateCustomChain(provider, existedChainSlug);
1502
+ }
1503
+ resetDefaultNetwork() {
1504
+ return this.#koniState.resetDefaultChains();
1505
+ }
1506
+ recoverDotSamaApi(networkKey) {
1507
+ try {
1508
+ return this.#koniState.refreshSubstrateApi(networkKey);
1509
+ } catch (e) {
1510
+ console.error('error recovering substrate api', e);
1511
+ return false;
1512
+ }
1513
+ }
1514
+ async upsertCustomToken(data) {
1515
+ try {
1516
+ await this.#koniState.upsertCustomToken(data);
1517
+ return true;
1518
+ } catch (e) {
1519
+ console.error('Error insert/update custom token', e);
1520
+ return false;
1521
+ }
1522
+ }
1523
+ async deleteCustomAsset(assetSlug) {
1524
+ const assetInfo = this.#koniState.getAssetBySlug(assetSlug);
1525
+ if (assetInfo && (0, _utils._isCustomAsset)(assetSlug)) {
1526
+ if ((0, _utils._isAssetSmartContractNft)(assetInfo)) {
1527
+ // check if deleting a smart contract NFT
1528
+ await this.#koniState.deleteNftCollection(assetInfo.originChain, (0, _utils._getContractAddressOfToken)(assetInfo));
1529
+ }
1530
+ this.#koniState.deleteCustomAssets([assetSlug]);
1531
+ return true;
1532
+ }
1533
+ return false;
1534
+ }
1535
+ async validateCustomAsset(data) {
1536
+ return await this.#koniState.validateCustomAsset(data);
1537
+ }
1538
+ async getAddressFreeBalance(_ref36) {
1539
+ let {
1540
+ address,
1541
+ networkKey,
1542
+ token
1543
+ } = _ref36;
1544
+ return await this.#koniState.balanceService.getTokenFreeBalance(address, networkKey, token);
1545
+ }
1546
+ async subscribeAddressFreeBalance(_ref37, id, port) {
1547
+ let {
1548
+ address,
1549
+ networkKey,
1550
+ token
1551
+ } = _ref37;
1552
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1553
+ const [unsub, currentFreeBalance] = await this.#koniState.balanceService.subscribeTokenFreeBalance(address, networkKey, token, cb);
1554
+ this.createUnsubscriptionHandle(id, unsub);
1555
+ port.onDisconnect.addListener(() => {
1556
+ this.cancelSubscription(id);
1557
+ });
1558
+ return currentFreeBalance;
1559
+ }
1560
+ async transferCheckReferenceCount(_ref38) {
1561
+ let {
1562
+ address,
1563
+ networkKey
1564
+ } = _ref38;
1565
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-return
1566
+ return await (0, _transfer.checkReferenceCount)(networkKey, address, this.#koniState.getSubstrateApiMap(), this.#koniState.getChainInfo(networkKey));
1567
+ }
1568
+ async transferCheckSupporting(_ref39) {
1569
+ let {
1570
+ networkKey,
1571
+ tokenSlug
1572
+ } = _ref39;
1573
+ const tokenInfo = this.#koniState.getAssetBySlug(tokenSlug);
1574
+ return await (0, _transfer.checkSupportTransfer)(networkKey, tokenInfo, this.#koniState.getSubstrateApiMap(), this.#koniState.getChainInfo(networkKey));
1575
+ }
1576
+ transferGetExistentialDeposit(_ref40) {
1577
+ let {
1578
+ tokenSlug
1579
+ } = _ref40;
1580
+ const tokenInfo = this.#koniState.getAssetBySlug(tokenSlug);
1581
+ return (0, _utils._getTokenMinAmount)(tokenInfo);
1582
+ }
1583
+ async substrateNftSubmitTransaction(inputData) {
1584
+ const {
1585
+ params,
1586
+ recipientAddress,
1587
+ senderAddress
1588
+ } = inputData;
1589
+ const isSendingSelf = (0, _transfer2.isRecipientSelf)(senderAddress, recipientAddress);
1590
+
1591
+ // TODO: do better to detect tokenType
1592
+ const isPSP34 = params === null || params === void 0 ? void 0 : params.isPsp34;
1593
+ const networkKey = params === null || params === void 0 ? void 0 : params.networkKey;
1594
+ const apiProps = this.#koniState.getSubstrateApi(networkKey);
1595
+ const extrinsic = !isPSP34 ? (0, _transfer2.getNftTransferExtrinsic)(networkKey, apiProps, senderAddress, recipientAddress, params || {}) : await (0, _wasm.getPSP34TransferExtrinsic)(networkKey, apiProps, senderAddress, recipientAddress, params || {});
1596
+ const rs = await this.#koniState.transactionService.handleTransaction({
1597
+ address: senderAddress,
1598
+ chain: networkKey,
1599
+ transaction: extrinsic,
1600
+ data: {
1601
+ ...inputData,
1602
+ isSendingSelf
1603
+ },
1604
+ extrinsicType: _KoniTypes.ExtrinsicType.SEND_NFT,
1605
+ chainType: _KoniTypes.ChainType.SUBSTRATE
1606
+ });
1607
+ return {
1608
+ ...rs,
1609
+ isSendingSelf
1610
+ };
1611
+ }
1612
+ async enableChains(targetKeys) {
1613
+ try {
1614
+ await Promise.all(targetKeys.map(networkKey => this.enableChain(networkKey)));
1615
+ } catch (e) {
1616
+ return false;
1617
+ }
1618
+ return true;
1619
+ }
1620
+ getAccountMeta(_ref41) {
1621
+ let {
1622
+ address
1623
+ } = _ref41;
1624
+ const pair = _uiKeyring.keyring.getPair(address);
1625
+ (0, _util.assert)(pair, 'Unable to find pair');
1626
+ return {
1627
+ meta: pair.meta
1628
+ };
1629
+ }
1630
+
1631
+ // private async isInWalletAccount (address?: string) {
1632
+ // return new Promise((resolve) => {
1633
+ // if (address) {
1634
+ // accountsObservable.subject.subscribe((storedAccounts: SubjectInfo): void => {
1635
+ // if (storedAccounts[address]) {
1636
+ // resolve(true);
1637
+ // }
1638
+ //
1639
+ // resolve(false);
1640
+ // });
1641
+ // } else {
1642
+ // resolve(false);
1643
+ // }
1644
+ // });
1645
+ // }
1646
+
1647
+ accountsTie2(_ref42) {
1648
+ let {
1649
+ address,
1650
+ genesisHash
1651
+ } = _ref42;
1652
+ return this.#koniState.setAccountTie(address, genesisHash);
1653
+ }
1654
+ async accountsCreateExternalV2(_ref43) {
1655
+ let {
1656
+ address,
1657
+ genesisHash,
1658
+ isAllowed,
1659
+ isEthereum,
1660
+ isReadOnly,
1661
+ name
1662
+ } = _ref43;
1663
+ try {
1664
+ let result;
1665
+ try {
1666
+ const exists = _uiKeyring.keyring.getPair(address);
1667
+ if (exists) {
1668
+ if (exists.type === (isEthereum ? 'ethereum' : 'sr25519')) {
1669
+ return [{
1670
+ code: _KoniTypes.AccountExternalErrorCode.INVALID_ADDRESS,
1671
+ message: 'Account exists'
1672
+ }];
1673
+ }
1674
+ }
1675
+ } catch (e) {}
1676
+ if (isEthereum) {
1677
+ const chainInfoMap = this.#koniState.getChainInfoMap();
1678
+ let _gen = '';
1679
+ if (genesisHash) {
1680
+ for (const network of Object.values(chainInfoMap)) {
1681
+ if ((0, _utils._getEvmChainId)(network) === parseInt(genesisHash)) {
1682
+ // TODO: pure EVM chains do not have genesisHash
1683
+ _gen = (0, _utils._getSubstrateGenesisHash)(network);
1684
+ }
1685
+ }
1686
+ }
1687
+ result = _uiKeyring.keyring.keyring.addFromAddress(address, {
1688
+ name,
1689
+ isExternal: true,
1690
+ isReadOnly,
1691
+ genesisHash: _gen
1692
+ }, null, 'ethereum');
1693
+ _uiKeyring.keyring.saveAccount(result);
1694
+ } else {
1695
+ result = _uiKeyring.keyring.addExternal(address, {
1696
+ genesisHash,
1697
+ name,
1698
+ isReadOnly
1699
+ }).pair;
1700
+ }
1701
+ const _address = result.address;
1702
+ await new Promise(resolve => {
1703
+ this.#koniState.addAccountRef([_address], () => {
1704
+ resolve();
1705
+ });
1706
+ });
1707
+ await new Promise(resolve => {
1708
+ this._saveCurrentAccountAddress(_address, () => {
1709
+ this._addAddressToAuthList(_address, isAllowed);
1710
+ resolve();
1711
+ });
1712
+ });
1713
+ return [];
1714
+ } catch (e) {
1715
+ return [{
1716
+ code: _KoniTypes.AccountExternalErrorCode.KEYRING_ERROR,
1717
+ message: e.message
1718
+ }];
1719
+ }
1720
+ }
1721
+ async accountsCreateHardwareV2(_ref44) {
1722
+ let {
1723
+ accountIndex,
1724
+ address,
1725
+ addressOffset,
1726
+ genesisHash,
1727
+ hardwareType,
1728
+ isAllowed,
1729
+ name
1730
+ } = _ref44;
1731
+ const key = _uiKeyring.keyring.addHardware(address, hardwareType, {
1732
+ accountIndex,
1733
+ addressOffset,
1734
+ genesisHash,
1735
+ name,
1736
+ originGenesisHash: genesisHash
1737
+ });
1738
+ const result = key.pair;
1739
+ const _address = result.address;
1740
+ await new Promise(resolve => {
1741
+ this.#koniState.addAccountRef([_address], () => {
1742
+ resolve();
1743
+ });
1744
+ });
1745
+ await new Promise(resolve => {
1746
+ this._saveCurrentAccountAddress(_address, () => {
1747
+ this._addAddressToAuthList(_address, isAllowed || false);
1748
+ resolve();
1749
+ });
1750
+ });
1751
+ return true;
1752
+ }
1753
+ async accountsCreateHardwareMultiple(_ref45) {
1754
+ let {
1755
+ accounts
1756
+ } = _ref45;
1757
+ const addresses = [];
1758
+ if (!accounts.length) {
1759
+ throw new Error('No accounts to import');
1760
+ }
1761
+ for (const account of accounts) {
1762
+ const {
1763
+ accountIndex,
1764
+ address,
1765
+ addressOffset,
1766
+ genesisHash,
1767
+ hardwareType,
1768
+ name
1769
+ } = account;
1770
+ const key = _uiKeyring.keyring.addHardware(address, hardwareType, {
1771
+ accountIndex,
1772
+ addressOffset,
1773
+ genesisHash,
1774
+ name,
1775
+ originGenesisHash: genesisHash
1776
+ });
1777
+ const result = key.pair;
1778
+ const _address = result.address;
1779
+ addresses.push(_address);
1780
+ await new Promise(resolve => {
1781
+ this._addAddressToAuthList(_address, true);
1782
+ resolve();
1783
+ });
1784
+ }
1785
+ const currentAccount = this.#koniState.keyringService.currentAccount;
1786
+ const allGenesisHash = (currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.allGenesisHash) || undefined;
1787
+ if (addresses.length <= 1) {
1788
+ this.#koniState.setCurrentAccount({
1789
+ address: addresses[0],
1790
+ currentGenesisHash: null,
1791
+ allGenesisHash
1792
+ });
1793
+ } else {
1794
+ this.#koniState.setCurrentAccount({
1795
+ address: _constants.ALL_ACCOUNT_KEY,
1796
+ currentGenesisHash: allGenesisHash || null,
1797
+ allGenesisHash
1798
+ });
1799
+ }
1800
+ await new Promise(resolve => {
1801
+ this.#koniState.addAccountRef(addresses, () => {
1802
+ resolve();
1803
+ });
1804
+ });
1805
+ return true;
1806
+ }
1807
+ async accountsCreateWithSecret(_ref46) {
1808
+ let {
1809
+ isAllow,
1810
+ isEthereum,
1811
+ name,
1812
+ publicKey,
1813
+ secretKey
1814
+ } = _ref46;
1815
+ try {
1816
+ let keyringPair = null;
1817
+ if (isEthereum) {
1818
+ const _secret = (0, _util.hexStripPrefix)(secretKey);
1819
+ if (_secret.length === 64) {
1820
+ const suri = `0x${_secret}`;
1821
+ const {
1822
+ phrase
1823
+ } = (0, _utilCrypto.keyExtractSuri)(suri);
1824
+ if ((0, _util.isHex)(phrase) && (0, _util.isHex)(phrase, 256)) {
1825
+ const type = 'ethereum';
1826
+ keyringPair = _uiKeyring.keyring.addUri(getSuri(suri, type), {
1827
+ name: name
1828
+ }, type).pair;
1829
+ }
1830
+ }
1831
+ } else {
1832
+ keyringPair = _uiKeyring.keyring.keyring.addFromPair({
1833
+ publicKey: (0, _util.hexToU8a)(publicKey),
1834
+ secretKey: (0, _util.hexToU8a)(secretKey)
1835
+ }, {
1836
+ name
1837
+ });
1838
+ _uiKeyring.keyring.addPair(keyringPair, true);
1839
+ }
1840
+ if (!keyringPair) {
1841
+ return {
1842
+ success: false,
1843
+ errors: [{
1844
+ code: _KoniTypes.AccountExternalErrorCode.KEYRING_ERROR,
1845
+ message: 'Invalid keyring'
1846
+ }]
1847
+ };
1848
+ }
1849
+ const _address = keyringPair.address;
1850
+ await new Promise(resolve => {
1851
+ this.#koniState.addAccountRef([_address], () => {
1852
+ resolve();
1853
+ });
1854
+ });
1855
+ await new Promise(resolve => {
1856
+ this._saveCurrentAccountAddress(_address, () => {
1857
+ this._addAddressToAuthList(_address, isAllow);
1858
+ resolve();
1859
+ });
1860
+ });
1861
+ return {
1862
+ errors: [],
1863
+ success: true
1864
+ };
1865
+ } catch (e) {
1866
+ return {
1867
+ success: false,
1868
+ errors: [{
1869
+ code: _KoniTypes.AccountExternalErrorCode.KEYRING_ERROR,
1870
+ message: e.message
1871
+ }]
1872
+ };
1873
+ }
1874
+ }
1875
+
1876
+ /// External account
1877
+
1878
+ rejectExternalRequest(request) {
1879
+ const {
1880
+ id,
1881
+ message,
1882
+ throwError
1883
+ } = request;
1884
+ const promise = this.#koniState.getExternalRequest(id);
1885
+ if (promise.status === _KoniTypes.ExternalRequestPromiseStatus.PENDING && promise.reject) {
1886
+ if (throwError) {
1887
+ promise.reject(new Error(message));
1888
+ } else {
1889
+ promise.reject();
1890
+ }
1891
+ this.#koniState.updateExternalRequest(id, {
1892
+ status: _KoniTypes.ExternalRequestPromiseStatus.REJECTED,
1893
+ message: message,
1894
+ reject: undefined,
1895
+ resolve: undefined
1896
+ });
1897
+ }
1898
+ }
1899
+ resolveQrTransfer(request) {
1900
+ const {
1901
+ data,
1902
+ id
1903
+ } = request;
1904
+ const promise = this.#koniState.getExternalRequest(id);
1905
+ if (promise.status === _KoniTypes.ExternalRequestPromiseStatus.PENDING) {
1906
+ promise.resolve && promise.resolve(data);
1907
+ this.#koniState.updateExternalRequest(id, {
1908
+ status: _KoniTypes.ExternalRequestPromiseStatus.COMPLETED,
1909
+ reject: undefined,
1910
+ resolve: undefined
1911
+ });
1912
+ }
1913
+ }
1914
+ subscribeConfirmations(id, port) {
1915
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1916
+ const subscription = this.#koniState.getConfirmationsQueueSubject().subscribe(cb);
1917
+ this.createUnsubscriptionHandle(id, subscription.unsubscribe);
1918
+ port.onDisconnect.addListener(() => {
1919
+ this.cancelSubscription(id);
1920
+ });
1921
+ return this.#koniState.getConfirmationsQueueSubject().getValue();
1922
+ }
1923
+ async completeConfirmation(request) {
1924
+ return await this.#koniState.completeConfirmation(request);
1925
+ }
1926
+
1927
+ /// Sign Qr
1928
+
1929
+ getNetworkJsonByChainId(chainId) {
1930
+ const chainInfoMap = this.#koniState.getChainInfoMap();
1931
+ if (!chainId) {
1932
+ for (const n in chainInfoMap) {
1933
+ if (!Object.prototype.hasOwnProperty.call(chainInfoMap, n)) {
1934
+ continue;
1935
+ }
1936
+ const networkInfo = chainInfoMap[n];
1937
+ if ((0, _utils._isChainEvmCompatible)(networkInfo)) {
1938
+ return networkInfo;
1939
+ }
1940
+ }
1941
+ return null;
1942
+ }
1943
+ for (const n in chainInfoMap) {
1944
+ if (!Object.prototype.hasOwnProperty.call(chainInfoMap, n)) {
1945
+ continue;
1946
+ }
1947
+ const networkInfo = chainInfoMap[n];
1948
+ if ((0, _utils._getEvmChainId)(networkInfo) === chainId) {
1949
+ return networkInfo;
1950
+ }
1951
+ }
1952
+ return null;
1953
+ }
1954
+
1955
+ // Parse transaction
1956
+
1957
+ parseSubstrateTransaction(_ref47) {
1958
+ let {
1959
+ data,
1960
+ networkKey
1961
+ } = _ref47;
1962
+ const apiProps = this.#koniState.getSubstrateApi(networkKey);
1963
+ const apiPromise = apiProps.api;
1964
+ return (0, _parseTransaction.parseSubstrateTransaction)(data, apiPromise);
1965
+ }
1966
+ async parseEVMRLP(_ref48) {
1967
+ let {
1968
+ data
1969
+ } = _ref48;
1970
+ return await (0, _parseTransaction2.parseEvmRlp)(data, this.#koniState.getChainInfoMap(), this.#koniState.getEvmApiMap());
1971
+ }
1972
+
1973
+ // Sign
1974
+
1975
+ qrSignSubstrate(_ref49) {
1976
+ let {
1977
+ address,
1978
+ data,
1979
+ networkKey
1980
+ } = _ref49;
1981
+ const pair = _uiKeyring.keyring.getPair(address);
1982
+ (0, _util.assert)(pair, 'Unable to find pair');
1983
+ if (pair.isLocked) {
1984
+ _uiKeyring.keyring.unlockPair(pair.address);
1985
+ }
1986
+ let signed = (0, _util.hexStripPrefix)((0, _util.u8aToHex)(pair.sign(data, {
1987
+ withType: true
1988
+ })));
1989
+ const network = this.#koniState.getChainInfo(networkKey);
1990
+ if ((0, _utils._isChainEvmCompatible)(network)) {
1991
+ signed = signed.substring(2);
1992
+ }
1993
+ return {
1994
+ signature: signed
1995
+ };
1996
+ }
1997
+ async qrSignEVM(_ref50) {
1998
+ let {
1999
+ address,
2000
+ chainId,
2001
+ message,
2002
+ type
2003
+ } = _ref50;
2004
+ let signed;
2005
+ const network = this.getNetworkJsonByChainId(chainId);
2006
+ if (!network) {
2007
+ throw new Error('Cannot find network');
2008
+ }
2009
+ const pair = _uiKeyring.keyring.getPair(address);
2010
+ if (!pair) {
2011
+ throw Error('Unable to find pair');
2012
+ }
2013
+ if (pair.isLocked) {
2014
+ _uiKeyring.keyring.unlockPair(pair.address);
2015
+ }
2016
+ if (type === 'message') {
2017
+ let data = message;
2018
+ if ((0, _util.isHex)(message)) {
2019
+ data = message;
2020
+ } else if ((0, _util.isAscii)(message)) {
2021
+ data = `0x${message}`;
2022
+ }
2023
+ signed = await pair.evmSigner.signMessage(data, 'personal_sign');
2024
+ } else {
2025
+ const tx = (0, _eth.createTransactionFromRLP)(message);
2026
+ if (!tx) {
2027
+ throw new Error(`Cannot create tx from ${message}`);
2028
+ }
2029
+ const txObject = {
2030
+ gasPrice: new _bignumber.default(tx.gasPrice).toNumber(),
2031
+ to: tx.action,
2032
+ value: new _bignumber.default(tx.value).toNumber(),
2033
+ data: tx.data,
2034
+ nonce: new _bignumber.default(tx.nonce).toNumber(),
2035
+ gas: new _bignumber.default(tx.gas).toNumber()
2036
+ };
2037
+ const common = _common.default.forCustomChain('mainnet', {
2038
+ name: network.name,
2039
+ networkId: (0, _utils._getEvmChainId)(network),
2040
+ chainId: (0, _utils._getEvmChainId)(network)
2041
+ }, 'petersburg');
2042
+
2043
+ // @ts-ignore
2044
+ const transaction = new _ethereumjsTx.Transaction(txObject, {
2045
+ common
2046
+ });
2047
+ pair.evmSigner.signTransaction(transaction);
2048
+ signed = (0, _eth.signatureToHex)({
2049
+ r: (0, _util.u8aToHex)(transaction.r),
2050
+ s: (0, _util.u8aToHex)(transaction.s),
2051
+ v: (0, _util.u8aToHex)(transaction.v)
2052
+ });
2053
+ }
2054
+ return {
2055
+ signature: (0, _util.hexStripPrefix)(signed)
2056
+ };
2057
+ }
2058
+ async subscribeChainStakingMetadata(id, port) {
2059
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2060
+ const chainStakingMetadata = this.#koniState.subscribeChainStakingMetadata().subscribe({
2061
+ next: rs => {
2062
+ cb(rs);
2063
+ }
2064
+ });
2065
+ this.createUnsubscriptionHandle(id, chainStakingMetadata.unsubscribe);
2066
+ port.onDisconnect.addListener(() => {
2067
+ this.cancelSubscription(id);
2068
+ });
2069
+ return this.#koniState.getChainStakingMetadata();
2070
+ }
2071
+ async subscribeStakingNominatorMetadata(id, port) {
2072
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2073
+ const nominatorMetadata = this.#koniState.subscribeNominatorMetadata().subscribe({
2074
+ next: rs => {
2075
+ cb(rs);
2076
+ }
2077
+ });
2078
+ this.createUnsubscriptionHandle(id, nominatorMetadata.unsubscribe);
2079
+ port.onDisconnect.addListener(() => {
2080
+ this.cancelSubscription(id);
2081
+ });
2082
+ return this.#koniState.getNominatorMetadata();
2083
+ }
2084
+ async getBondingOptions(_ref51) {
2085
+ let {
2086
+ chain,
2087
+ type
2088
+ } = _ref51;
2089
+ const apiProps = this.#koniState.getSubstrateApi(chain);
2090
+ const chainInfo = this.#koniState.getChainInfo(chain);
2091
+ const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, type);
2092
+ if (!chainStakingMetadata) {
2093
+ return;
2094
+ }
2095
+ const {
2096
+ decimals
2097
+ } = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
2098
+ return await (0, _bonding.getValidatorsInfo)(chain, apiProps, decimals, chainStakingMetadata);
2099
+ }
2100
+ async getNominationPoolOptions(chain) {
2101
+ const substrateApi = this.#koniState.getSubstrateApi(chain);
2102
+ return await (0, _bonding.getNominationPoolsInfo)(chain, substrateApi);
2103
+ }
2104
+ async submitBonding(inputData) {
2105
+ const {
2106
+ address,
2107
+ amount,
2108
+ chain,
2109
+ nominatorMetadata,
2110
+ selectedValidators
2111
+ } = inputData;
2112
+ if (!amount || !selectedValidators) {
2113
+ // Todo: Check and return error here
2114
+
2115
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
2116
+ }
2117
+ const chainInfo = this.#koniState.getChainInfo(chain);
2118
+ const substrateApi = this.#koniState.getSubstrateApi(chain);
2119
+ const extrinsic = await (0, _bonding.getBondingExtrinsic)(chainInfo, amount, selectedValidators, substrateApi, address, nominatorMetadata);
2120
+ console.log('Bonding extrinsic: ', chain, extrinsic.toHex());
2121
+ return await this.#koniState.transactionService.handleTransaction({
2122
+ address,
2123
+ chain: chain,
2124
+ chainType: _KoniTypes.ChainType.SUBSTRATE,
2125
+ data: inputData,
2126
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_BOND,
2127
+ transaction: extrinsic,
2128
+ url: _constants2.EXTENSION_REQUEST_URL
2129
+ });
2130
+ }
2131
+ async submitUnbonding(inputData) {
2132
+ const {
2133
+ amount,
2134
+ chain,
2135
+ nominatorMetadata,
2136
+ validatorAddress
2137
+ } = inputData;
2138
+ if (!amount || !nominatorMetadata) {
2139
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
2140
+ }
2141
+ const substrateApi = this.#koniState.getSubstrateApi(chain);
2142
+ const extrinsic = await (0, _bonding.getUnbondingExtrinsic)(nominatorMetadata, amount, chain, substrateApi, validatorAddress);
2143
+ console.log('unbonding extrinsic: ', extrinsic.toHex());
2144
+ return await this.#koniState.transactionService.handleTransaction({
2145
+ address: nominatorMetadata.address,
2146
+ chain: chain,
2147
+ transaction: extrinsic,
2148
+ data: inputData,
2149
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_UNBOND,
2150
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2151
+ });
2152
+ }
2153
+ async submitStakeWithdrawal(inputData) {
2154
+ const {
2155
+ chain,
2156
+ nominatorMetadata,
2157
+ validatorAddress
2158
+ } = inputData;
2159
+ if (!nominatorMetadata) {
2160
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
2161
+ }
2162
+ const dotSamaApi = this.#koniState.getSubstrateApi(chain);
2163
+ const extrinsic = await (0, _bonding.getWithdrawalExtrinsic)(dotSamaApi, chain, nominatorMetadata, validatorAddress);
2164
+ console.log('Stake withdrawal extrinsic: ', extrinsic.toHex());
2165
+ return await this.#koniState.transactionService.handleTransaction({
2166
+ address: nominatorMetadata.address,
2167
+ chain: chain,
2168
+ transaction: extrinsic,
2169
+ data: inputData,
2170
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_WITHDRAW,
2171
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2172
+ });
2173
+ }
2174
+ async submitStakeClaimReward(inputData) {
2175
+ const {
2176
+ address,
2177
+ bondReward,
2178
+ chain,
2179
+ stakingType
2180
+ } = inputData;
2181
+ if (!address) {
2182
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
2183
+ }
2184
+ const substrateApi = this.#koniState.getSubstrateApi(chain);
2185
+ const extrinsic = await (0, _bonding.getClaimRewardExtrinsic)(substrateApi, chain, address, stakingType, bondReward);
2186
+ console.log('Staking claim reward extrinsic: ', extrinsic.toHex());
2187
+ return await this.#koniState.transactionService.handleTransaction({
2188
+ address,
2189
+ chain: chain,
2190
+ transaction: extrinsic,
2191
+ data: inputData,
2192
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_CLAIM_REWARD,
2193
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2194
+ });
2195
+ }
2196
+ async submitCancelStakeWithdrawal(inputData) {
2197
+ const {
2198
+ address,
2199
+ chain,
2200
+ selectedUnstaking
2201
+ } = inputData;
2202
+ if (!chain || !selectedUnstaking) {
2203
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
2204
+ }
2205
+ const substrateApi = this.#koniState.getSubstrateApi(chain);
2206
+ const extrinsic = await (0, _bonding.getCancelWithdrawalExtrinsic)(substrateApi, chain, selectedUnstaking);
2207
+ console.log('Cancel stake withdrawal extrinsic', extrinsic.toHex());
2208
+ return await this.#koniState.transactionService.handleTransaction({
2209
+ address,
2210
+ chain,
2211
+ transaction: extrinsic,
2212
+ data: inputData,
2213
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_CANCEL_UNSTAKE,
2214
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2215
+ });
2216
+ }
2217
+ async submitPoolingBonding(inputData) {
2218
+ const {
2219
+ address,
2220
+ amount,
2221
+ chain,
2222
+ nominatorMetadata,
2223
+ selectedPool
2224
+ } = inputData;
2225
+
2226
+ // TODO: can't stake when unstake all
2227
+ const substrateApi = this.#koniState.getSubstrateApi(chain);
2228
+ const extrinsic = await (0, _relayChain.getPoolingBondingExtrinsic)(substrateApi, amount, selectedPool.id, nominatorMetadata);
2229
+ console.log('Join nomination pool extrinsic', extrinsic.toHex());
2230
+ return await this.#koniState.transactionService.handleTransaction({
2231
+ address,
2232
+ chain,
2233
+ transaction: extrinsic,
2234
+ data: inputData,
2235
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_JOIN_POOL,
2236
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2237
+ });
2238
+ }
2239
+ async submitPoolingUnbonding(inputData) {
2240
+ const {
2241
+ amount,
2242
+ chain,
2243
+ nominatorMetadata
2244
+ } = inputData;
2245
+ const substrateApi = this.#koniState.getSubstrateApi(chain);
2246
+ const extrinsic = await (0, _relayChain.getPoolingUnbondingExtrinsic)(substrateApi, amount, nominatorMetadata);
2247
+ console.log('Nomination pool unbond extrinsic', extrinsic.toHex());
2248
+ return await this.#koniState.transactionService.handleTransaction({
2249
+ address: nominatorMetadata.address,
2250
+ chain,
2251
+ transaction: extrinsic,
2252
+ data: inputData,
2253
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_LEAVE_POOL,
2254
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2255
+ });
2256
+ }
2257
+
2258
+ // EVM Transaction
2259
+ async parseContractInput(_ref52) {
2260
+ let {
2261
+ chainId,
2262
+ contract,
2263
+ data
2264
+ } = _ref52;
2265
+ const network = this.getNetworkJsonByChainId(chainId);
2266
+ return await (0, _parseTransaction2.parseContractInput)(data, contract, network);
2267
+ }
2268
+ async submitTuringStakeCompounding(inputData) {
2269
+ const {
2270
+ accountMinimum,
2271
+ address,
2272
+ bondedAmount,
2273
+ collatorAddress,
2274
+ networkKey
2275
+ } = inputData;
2276
+ if (!address) {
2277
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
2278
+ }
2279
+ const dotSamaApi = this.#koniState.getSubstrateApi(networkKey);
2280
+ const chainInfo = this.#koniState.getChainInfo(networkKey);
2281
+ const {
2282
+ decimals
2283
+ } = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
2284
+ const parsedAccountMinimum = parseFloat(accountMinimum) * 10 ** decimals;
2285
+ const extrinsic = await (0, _paraChain.getTuringCompoundExtrinsic)(dotSamaApi, address, collatorAddress, parsedAccountMinimum.toString(), bondedAmount);
2286
+ return await this.#koniState.transactionService.handleTransaction({
2287
+ address,
2288
+ chain: networkKey,
2289
+ transaction: extrinsic,
2290
+ data: inputData,
2291
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_COMPOUNDING,
2292
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2293
+ });
2294
+ }
2295
+ async submitTuringCancelStakeCompound(inputData) {
2296
+ const {
2297
+ address,
2298
+ networkKey,
2299
+ taskId
2300
+ } = inputData;
2301
+ const txState = {};
2302
+ if (!address) {
2303
+ txState.txError = true;
2304
+ return txState;
2305
+ }
2306
+ const dotSamaApi = this.#koniState.getSubstrateApi(networkKey);
2307
+ const extrinsic = await (0, _paraChain.getTuringCancelCompoundingExtrinsic)(dotSamaApi, taskId);
2308
+ return await this.#koniState.transactionService.handleTransaction({
2309
+ address,
2310
+ chain: networkKey,
2311
+ transaction: extrinsic,
2312
+ data: inputData,
2313
+ extrinsicType: _KoniTypes.ExtrinsicType.STAKING_CANCEL_COMPOUNDING,
2314
+ chainType: _KoniTypes.ChainType.SUBSTRATE
2315
+ });
2316
+ }
2317
+ keyringStateSubscribe(id, port) {
2318
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2319
+ const keyringStateSubject = this.#koniState.keyringService.keyringStateSubject;
2320
+ const subscription = keyringStateSubject.subscribe(value => cb(value));
2321
+ this.createUnsubscriptionHandle(id, subscription.unsubscribe);
2322
+ port.onDisconnect.addListener(() => {
2323
+ this.cancelSubscription(id);
2324
+ });
2325
+ return this.#koniState.keyringService.keyringState;
2326
+ }
2327
+ keyringChangeMasterPassword(_ref53) {
2328
+ let {
2329
+ createNew,
2330
+ newPassword,
2331
+ oldPassword
2332
+ } = _ref53;
2333
+ try {
2334
+ // Remove isMasterPassword meta if createNew
2335
+ if (createNew) {
2336
+ const pairs = _uiKeyring.keyring.getPairs();
2337
+ for (const pair of pairs) {
2338
+ const meta = {
2339
+ ...pair.meta,
2340
+ isMasterPassword: false
2341
+ };
2342
+ if (!meta.originGenesisHash) {
2343
+ meta.genesisHash = '';
2344
+ }
2345
+ pair.setMeta(meta);
2346
+ _uiKeyring.keyring.saveAccountMeta(pair, pair.meta);
2347
+ }
2348
+ }
2349
+ _uiKeyring.keyring.changeMasterPassword(newPassword, oldPassword);
2350
+ } catch (e) {
2351
+ console.error(e);
2352
+ return {
2353
+ errors: [e.message],
2354
+ status: false
2355
+ };
2356
+ }
2357
+ this.#koniState.updateKeyringState();
2358
+ return {
2359
+ status: true,
2360
+ errors: []
2361
+ };
2362
+ }
2363
+ keyringMigrateMasterPassword(_ref54) {
2364
+ let {
2365
+ address,
2366
+ password
2367
+ } = _ref54;
2368
+ try {
2369
+ _uiKeyring.keyring.migrateWithMasterPassword(address, password);
2370
+ } catch (e) {
2371
+ console.error(e);
2372
+ return {
2373
+ errors: [e.message],
2374
+ status: false
2375
+ };
2376
+ }
2377
+ return {
2378
+ status: true,
2379
+ errors: []
2380
+ };
2381
+ }
2382
+ keyringUnlock(_ref55) {
2383
+ let {
2384
+ password
2385
+ } = _ref55;
2386
+ try {
2387
+ _uiKeyring.keyring.unlockKeyring(password);
2388
+ } catch (e) {
2389
+ return {
2390
+ errors: [e.message],
2391
+ status: false
2392
+ };
2393
+ }
2394
+ this.#koniState.updateKeyringState();
2395
+ return {
2396
+ status: true,
2397
+ errors: []
2398
+ };
2399
+ }
2400
+ keyringLock() {
2401
+ _uiKeyring.keyring.lockAll();
2402
+ this.#koniState.updateKeyringState();
2403
+ clearTimeout(this.#lockTimeOut);
2404
+ }
2405
+ keyringExportMnemonic(_ref56) {
2406
+ let {
2407
+ address,
2408
+ password
2409
+ } = _ref56;
2410
+ const pair = _uiKeyring.keyring.getPair(address);
2411
+ const result = pair.exportMnemonic(password);
2412
+ return {
2413
+ result
2414
+ };
2415
+ }
2416
+
2417
+ /// Signing external request
2418
+ signingApprovePasswordV2(_ref57) {
2419
+ let {
2420
+ id
2421
+ } = _ref57;
2422
+ const queued = this.#koniState.getSignRequest(id);
2423
+ (0, _util.assert)(queued, 'Unable to find request');
2424
+ const {
2425
+ reject,
2426
+ request,
2427
+ resolve
2428
+ } = queued;
2429
+ const pair = _uiKeyring.keyring.getPair(queued.account.address);
2430
+
2431
+ // unlike queued.account.address the following
2432
+ // address is encoded with the default prefix
2433
+ // which what is used for password caching mapping
2434
+ const {
2435
+ address
2436
+ } = pair;
2437
+ if (!pair) {
2438
+ reject(new Error('Unable to find pair'));
2439
+ return false;
2440
+ }
2441
+ if (pair.isLocked) {
2442
+ _uiKeyring.keyring.unlockPair(address);
2443
+ }
2444
+ const {
2445
+ payload
2446
+ } = request;
2447
+ const registry = new _types.TypeRegistry();
2448
+ let isEvm = false;
2449
+ if ((0, _Extension.isJsonPayload)(payload)) {
2450
+ // Get the metadata for the genesisHash
2451
+ const currentMetadata = this.#koniState.knownMetadata.find(meta => meta.genesisHash === payload.genesisHash);
2452
+
2453
+ // set the registry before calling the sign function
2454
+ registry.setSignedExtensions(payload.signedExtensions, currentMetadata === null || currentMetadata === void 0 ? void 0 : currentMetadata.userExtensions);
2455
+ if (currentMetadata) {
2456
+ registry.register(currentMetadata === null || currentMetadata === void 0 ? void 0 : currentMetadata.types);
2457
+ }
2458
+ const [, chainInfo] = this.#koniState.findNetworkKeyByGenesisHash(payload.genesisHash);
2459
+ if (chainInfo) {
2460
+ isEvm = (0, _utils._isChainEvmCompatible)(chainInfo);
2461
+ }
2462
+ }
2463
+ const result = request.sign(registry, pair);
2464
+ resolve({
2465
+ id,
2466
+ // In case evm chain, must be cut 2 character after 0x
2467
+ signature: isEvm ? `0x${result.signature.slice(4)}` : result.signature
2468
+ });
2469
+ return true;
2470
+ }
2471
+
2472
+ /// Derive account
2473
+
2474
+ derivationCreateMultiple(_ref58) {
2475
+ let {
2476
+ isAllowed,
2477
+ items,
2478
+ parentAddress
2479
+ } = _ref58;
2480
+ const parentPair = _uiKeyring.keyring.getPair(parentAddress);
2481
+ const isEvm = parentPair.type === 'ethereum';
2482
+ if (parentPair.isLocked) {
2483
+ _uiKeyring.keyring.unlockPair(parentPair.address);
2484
+ }
2485
+ const createChild = _ref59 => {
2486
+ let {
2487
+ name,
2488
+ suri
2489
+ } = _ref59;
2490
+ const meta = {
2491
+ name: name,
2492
+ parentAddress
2493
+ };
2494
+ if (isEvm) {
2495
+ let index = 0;
2496
+ try {
2497
+ const reg = /^\d+$/;
2498
+ const path = suri.split('//')[1];
2499
+ if (reg.test(path)) {
2500
+ index = parseInt(path);
2501
+ }
2502
+ } catch (e) {}
2503
+ if (!index) {
2504
+ throw Error('Invalid derive path');
2505
+ }
2506
+ meta.suri = `//${index}`;
2507
+ return parentPair.deriveEvm(index, meta);
2508
+ } else {
2509
+ meta.suri = suri;
2510
+ return parentPair.derive(suri, meta);
2511
+ }
2512
+ };
2513
+ const result = [];
2514
+ for (const item of items) {
2515
+ try {
2516
+ const childPair = createChild(item);
2517
+ const address = childPair.address;
2518
+ _uiKeyring.keyring.addPair(childPair, true);
2519
+ this._addAddressToAuthList(address, isAllowed);
2520
+ result.push(childPair);
2521
+ } catch (e) {
2522
+ console.log(`Fail to derive from ${parentAddress} with path ${item.suri}`, e);
2523
+ }
2524
+ }
2525
+ if (result.length === 1) {
2526
+ this._saveCurrentAccountAddress(result[0].address);
2527
+ } else {
2528
+ this.#koniState.setCurrentAccount({
2529
+ address: _constants.ALL_ACCOUNT_KEY,
2530
+ currentGenesisHash: null
2531
+ });
2532
+ }
2533
+ return true;
2534
+ }
2535
+ derivationCreateV3(_ref60) {
2536
+ let {
2537
+ address: parentAddress
2538
+ } = _ref60;
2539
+ const parentPair = _uiKeyring.keyring.getPair(parentAddress);
2540
+ const isEvm = parentPair.type === 'ethereum';
2541
+ if (parentPair.isLocked) {
2542
+ _uiKeyring.keyring.unlockPair(parentPair.address);
2543
+ }
2544
+ const pairs = _uiKeyring.keyring.getPairs();
2545
+ const children = pairs.filter(p => p.meta.parentAddress === parentAddress);
2546
+ const name = `Account ${pairs.length}`;
2547
+ let index = isEvm ? 1 : 0;
2548
+ let valid = false;
2549
+ do {
2550
+ const exist = children.find(p => p.meta.suri === `//${index}`);
2551
+ if (exist) {
2552
+ index++;
2553
+ } else {
2554
+ valid = true;
2555
+ }
2556
+ } while (!valid);
2557
+ const meta = {
2558
+ name,
2559
+ parentAddress,
2560
+ suri: `//${index}`
2561
+ };
2562
+ const childPair = isEvm ? parentPair.deriveEvm(index, meta) : parentPair.derive(meta.suri, meta);
2563
+ const address = childPair.address;
2564
+ this._saveCurrentAccountAddress(address, () => {
2565
+ _uiKeyring.keyring.addPair(childPair, true);
2566
+ this._addAddressToAuthList(address, true);
2567
+ });
2568
+ return true;
2569
+ }
2570
+ validateDerivePath(_ref61) {
2571
+ let {
2572
+ parentAddress,
2573
+ suri
2574
+ } = _ref61;
2575
+ const parentPair = _uiKeyring.keyring.getPair(parentAddress);
2576
+ const isEvm = parentPair.type === 'ethereum';
2577
+ if (parentPair.isLocked) {
2578
+ _uiKeyring.keyring.unlockPair(parentPair.address);
2579
+ }
2580
+ const meta = {
2581
+ parentAddress
2582
+ };
2583
+ let childPair;
2584
+ if (isEvm) {
2585
+ let index = 0;
2586
+ try {
2587
+ const reg = /^\d+$/;
2588
+ const path = suri.split('//')[1];
2589
+ if (reg.test(path)) {
2590
+ index = parseInt(path);
2591
+ }
2592
+ } catch (e) {}
2593
+ if (!index) {
2594
+ throw Error('Invalid derive path');
2595
+ }
2596
+ meta.suri = `//${index}`;
2597
+ childPair = parentPair.deriveEvm(index, meta);
2598
+ } else {
2599
+ meta.suri = suri;
2600
+ childPair = parentPair.derive(suri, meta);
2601
+ }
2602
+ return {
2603
+ address: childPair.address,
2604
+ suri: meta.suri
2605
+ };
2606
+ }
2607
+ getListDeriveAccounts(_ref62) {
2608
+ let {
2609
+ limit,
2610
+ page,
2611
+ parentAddress
2612
+ } = _ref62;
2613
+ const parentPair = _uiKeyring.keyring.getPair(parentAddress);
2614
+ const isEvm = parentPair.type === 'ethereum';
2615
+ if (parentPair.isLocked) {
2616
+ _uiKeyring.keyring.unlockPair(parentPair.address);
2617
+ }
2618
+ const start = (page - 1) * limit + (isEvm ? 1 : 0);
2619
+ const end = start + limit;
2620
+ const result = [];
2621
+ for (let i = start; i < end; i++) {
2622
+ const suri = `//${i}`;
2623
+ const pair = isEvm ? parentPair.deriveEvm(i, {}) : parentPair.derive(suri, {});
2624
+ result.push({
2625
+ address: pair.address,
2626
+ suri: suri
2627
+ });
2628
+ }
2629
+ return {
2630
+ result: result
2631
+ };
2632
+ }
2633
+
2634
+ // ChainService -------------------------------------------------
2635
+ subscribeChainInfoMap(id, port) {
2636
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2637
+ const chainInfoMapSubscription = this.#koniState.subscribeChainInfoMap().subscribe({
2638
+ next: rs => {
2639
+ cb(rs);
2640
+ }
2641
+ });
2642
+ this.createUnsubscriptionHandle(id, chainInfoMapSubscription.unsubscribe);
2643
+ port.onDisconnect.addListener(() => {
2644
+ this.cancelSubscription(id);
2645
+ });
2646
+ return this.#koniState.getChainInfoMap();
2647
+ }
2648
+ subscribeChainStateMap(id, port) {
2649
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2650
+ const chainStateMapSubscription = this.#koniState.subscribeChainStateMap().subscribe({
2651
+ next: rs => {
2652
+ cb(rs);
2653
+ }
2654
+ });
2655
+ this.createUnsubscriptionHandle(id, chainStateMapSubscription.unsubscribe);
2656
+ port.onDisconnect.addListener(() => {
2657
+ this.cancelSubscription(id);
2658
+ });
2659
+ return this.#koniState.getChainStateMap();
2660
+ }
2661
+ subscribeAssetRegistry(id, port) {
2662
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2663
+ const assetRegistrySubscription = this.#koniState.subscribeAssetRegistry().subscribe({
2664
+ next: rs => {
2665
+ cb(rs);
2666
+ }
2667
+ });
2668
+ this.createUnsubscriptionHandle(id, assetRegistrySubscription.unsubscribe);
2669
+ port.onDisconnect.addListener(() => {
2670
+ this.cancelSubscription(id);
2671
+ });
2672
+ return this.#koniState.getAssetRegistry();
2673
+ }
2674
+ subscribeMultiChainAssetMap(id, port) {
2675
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2676
+ const multiChainAssetSubscription = this.#koniState.subscribeMultiChainAssetMap().subscribe({
2677
+ next: rs => {
2678
+ cb(rs);
2679
+ }
2680
+ });
2681
+ this.createUnsubscriptionHandle(id, multiChainAssetSubscription.unsubscribe);
2682
+ port.onDisconnect.addListener(() => {
2683
+ this.cancelSubscription(id);
2684
+ });
2685
+ return this.#koniState.getMultiChainAssetMap();
2686
+ }
2687
+ subscribeXcmRefMap(id, port) {
2688
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2689
+ const xcmRefSubscription = this.#koniState.subscribeXcmRefMap().subscribe({
2690
+ next: rs => {
2691
+ cb(rs);
2692
+ }
2693
+ });
2694
+ this.createUnsubscriptionHandle(id, xcmRefSubscription.unsubscribe);
2695
+ port.onDisconnect.addListener(() => {
2696
+ this.cancelSubscription(id);
2697
+ });
2698
+ return this.#koniState.getXcmRefMap();
2699
+ }
2700
+ getSupportedSmartContractTypes() {
2701
+ return this.#koniState.getSupportedSmartContractTypes();
2702
+ }
2703
+ getTransaction(_ref63) {
2704
+ let {
2705
+ id
2706
+ } = _ref63;
2707
+ const {
2708
+ transaction,
2709
+ ...transactionResult
2710
+ } = this.#koniState.transactionService.getTransaction(id);
2711
+ return transactionResult;
2712
+ }
2713
+ subscribeTransactions(id, port) {
2714
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2715
+ function convertRs(rs) {
2716
+ return Object.fromEntries(Object.entries(rs).map(_ref64 => {
2717
+ let [key, value] = _ref64;
2718
+ const {
2719
+ transaction,
2720
+ ...transactionResult
2721
+ } = value;
2722
+ return [key, transactionResult];
2723
+ }));
2724
+ }
2725
+ const transactionsSubject = this.#koniState.transactionService.getTransactionSubject();
2726
+ const transactionsSubscription = transactionsSubject.subscribe(rs => {
2727
+ cb(convertRs(rs));
2728
+ });
2729
+ port.onDisconnect.addListener(() => {
2730
+ transactionsSubscription.unsubscribe();
2731
+ this.cancelSubscription(id);
2732
+ });
2733
+ return convertRs(transactionsSubject.getValue());
2734
+ }
2735
+ subscribeNotifications(id, port) {
2736
+ const cb = (0, _subscriptions.createSubscription)(id, port);
2737
+ const notificationSubject = this.#koniState.notificationService.getNotificationSubject();
2738
+ const notificationSubscription = notificationSubject.subscribe(rs => {
2739
+ cb(rs);
2740
+ });
2741
+ port.onDisconnect.addListener(() => {
2742
+ notificationSubscription.unsubscribe();
2743
+ this.cancelSubscription(id);
2744
+ });
2745
+ return notificationSubject.value;
2746
+ }
2747
+
2748
+ // --------------------------------------------------------------
2749
+ // eslint-disable-next-line @typescript-eslint/require-await
2750
+ async handle(id, type, request, port) {
2751
+ clearTimeout(this.#lockTimeOut);
2752
+ this.#lockTimeOut = setTimeout(() => {
2753
+ this.keyringLock();
2754
+ }, _constants.DEFAULT_TIME_AUTO_LOCK);
2755
+ switch (type) {
2756
+ /// Clone from PolkadotJs
2757
+ case 'pri(accounts.create.external)':
2758
+ return this.accountsCreateExternal(request);
2759
+ case 'pri(accounts.create.hardware)':
2760
+ return this.accountsCreateHardware(request);
2761
+ case 'pri(accounts.create.suri)':
2762
+ return this.accountsCreateSuri(request);
2763
+ case 'pri(accounts.changePassword)':
2764
+ return this.accountsChangePassword(request);
2765
+ case 'pri(accounts.edit)':
2766
+ return this.accountsEdit(request);
2767
+ case 'pri(accounts.export)':
2768
+ return this.accountsExport(request);
2769
+ case 'pri(accounts.show)':
2770
+ return this.accountsShow(request);
2771
+ case 'pri(accounts.subscribe)':
2772
+ return this.accountsSubscribe(id, port);
2773
+ case 'pri(accounts.validate)':
2774
+ return this.accountsValidate(request);
2775
+ case 'pri(metadata.approve)':
2776
+ return this.metadataApprove(request);
2777
+ case 'pri(metadata.get)':
2778
+ return this.metadataGet(request);
2779
+ case 'pri(metadata.list)':
2780
+ return this.metadataList();
2781
+ case 'pri(metadata.reject)':
2782
+ return this.metadataReject(request);
2783
+ case 'pri(metadata.requests)':
2784
+ return this.metadataSubscribe(id, port);
2785
+ case 'pri(derivation.create)':
2786
+ return this.derivationCreate(request);
2787
+ case 'pri(derivation.validate)':
2788
+ return this.derivationValidate(request);
2789
+ case 'pri(json.restore)':
2790
+ return this.jsonRestore(request);
2791
+ case 'pri(json.batchRestore)':
2792
+ return this.batchRestore(request);
2793
+ case 'pri(json.account.info)':
2794
+ return this.jsonGetAccountInfo(request);
2795
+ case 'pri(seed.create)':
2796
+ return this.seedCreate(request);
2797
+ case 'pri(seed.validate)':
2798
+ return this.seedValidate(request);
2799
+ case 'pri(signing.approve.signature)':
2800
+ return this.signingApproveSignature(request);
2801
+ case 'pri(signing.cancel)':
2802
+ return this.signingCancel(request);
2803
+ case 'pri(signing.requests)':
2804
+ return this.signingSubscribe(id, port);
2805
+ case 'pri(window.open)':
2806
+ return this.windowOpen(request);
2807
+
2808
+ ///
2809
+ case 'pri(authorize.changeSiteAll)':
2810
+ return this.changeAuthorizationAll(request, id, port);
2811
+ case 'pri(authorize.changeSite)':
2812
+ return this.changeAuthorization(request, id, port);
2813
+ case 'pri(authorize.changeSitePerAccount)':
2814
+ return this.changeAuthorizationPerAcc(request, id, port);
2815
+ case 'pri(authorize.changeSitePerSite)':
2816
+ return this.changeAuthorizationPerSite(request);
2817
+ case 'pri(authorize.changeSiteBlock)':
2818
+ return this.changeAuthorizationBlock(request);
2819
+ case 'pri(authorize.forgetSite)':
2820
+ return this.forgetSite(request, id, port);
2821
+ case 'pri(authorize.forgetAllSite)':
2822
+ return this.forgetAllSite(id, port);
2823
+ case 'pri(authorize.approveV2)':
2824
+ return this.authorizeApproveV2(request);
2825
+ case 'pri(authorize.rejectV2)':
2826
+ return this.authorizeRejectV2(request);
2827
+ case 'pri(authorize.cancelV2)':
2828
+ return this.authorizeCancelV2(request);
2829
+ case 'pri(authorize.requestsV2)':
2830
+ return this.authorizeSubscribeV2(id, port);
2831
+ case 'pri(authorize.listV2)':
2832
+ return this.getAuthListV2();
2833
+ case 'pri(authorize.toggle)':
2834
+ return this.toggleAuthorization2(request);
2835
+ case 'pri(accounts.create.suriV2)':
2836
+ return await this.accountsCreateSuriV2(request);
2837
+ case 'pri(accounts.forget)':
2838
+ return await this.accountsForgetOverride(request);
2839
+ case 'pri(accounts.create.externalV2)':
2840
+ return await this.accountsCreateExternalV2(request);
2841
+ case 'pri(accounts.create.hardwareV2)':
2842
+ return await this.accountsCreateHardwareV2(request);
2843
+ case 'pri(accounts.create.hardwareMultiple)':
2844
+ return await this.accountsCreateHardwareMultiple(request);
2845
+ case 'pri(accounts.create.withSecret)':
2846
+ return await this.accountsCreateWithSecret(request);
2847
+ case 'pri(seed.createV2)':
2848
+ return this.seedCreateV2(request);
2849
+ case 'pri(seed.validateV2)':
2850
+ return this.seedValidateV2(request);
2851
+ case 'pri(privateKey.validateV2)':
2852
+ return this.metamaskPrivateKeyValidateV2(request);
2853
+ case 'pri(accounts.exportPrivateKey)':
2854
+ return this.accountExportPrivateKey(request);
2855
+ case 'pri(accounts.checkPublicAndSecretKey)':
2856
+ return this.checkPublicAndSecretKey(request);
2857
+ case 'pri(accounts.subscribeWithCurrentAddress)':
2858
+ return await this.accountsGetAllWithCurrentAddress(id, port);
2859
+ case 'pri(accounts.subscribeAccountsInputAddress)':
2860
+ return this.accountsGetAll(id, port);
2861
+ case 'pri(accounts.saveRecent)':
2862
+ return this.saveRecentAccountId(request);
2863
+ case 'pri(accounts.triggerSubscription)':
2864
+ return this.triggerAccountsSubscription();
2865
+ case 'pri(currentAccount.saveAddress)':
2866
+ return this.saveCurrentAccountAddress(request, id, port);
2867
+ case 'pri(accounts.updateCurrentAddress)':
2868
+ return this.updateCurrentAccountAddress(request);
2869
+ case 'pri(settings.changeBalancesVisibility)':
2870
+ return this.toggleBalancesVisibility(id, port);
2871
+ case 'pri(settings.subscribe)':
2872
+ return await this.subscribeSettings(id, port);
2873
+ case 'pri(settings.saveAccountAllLogo)':
2874
+ return this.saveAccountAllLogo(request, id, port);
2875
+ case 'pri(settings.saveCamera)':
2876
+ return this.setCamera(request);
2877
+ case 'pri(settings.saveTheme)':
2878
+ return this.saveTheme(request, id, port);
2879
+ case 'pri(settings.saveBrowserConfirmationType)':
2880
+ return this.saveBrowserConfirmationType(request, id, port);
2881
+ case 'pri(price.getPrice)':
2882
+ return await this.getPrice();
2883
+ case 'pri(price.getSubscription)':
2884
+ return await this.subscribePrice(id, port);
2885
+ case 'pri(balance.getBalance)':
2886
+ return this.getBalance();
2887
+ case 'pri(balance.getSubscription)':
2888
+ return this.subscribeBalance(id, port);
2889
+ case 'pri(crowdloan.getCrowdloan)':
2890
+ return this.getCrowdloan();
2891
+ case 'pri(crowdloan.getSubscription)':
2892
+ return this.subscribeCrowdloan(id, port);
2893
+ case 'pri(derivation.createV2)':
2894
+ return this.derivationCreateV2(request);
2895
+ case 'pri(json.restoreV2)':
2896
+ return this.jsonRestoreV2(request);
2897
+ case 'pri(json.batchRestoreV2)':
2898
+ return this.batchRestoreV2(request);
2899
+ case 'pri(nft.getNft)':
2900
+ return await this.getNft();
2901
+ case 'pri(nft.getSubscription)':
2902
+ return await this.subscribeNft(id, port);
2903
+ case 'pri(nftCollection.getNftCollection)':
2904
+ return await this.getNftCollection();
2905
+ case 'pri(nftCollection.getSubscription)':
2906
+ return await this.subscribeNftCollection(id, port);
2907
+ case 'pri(staking.getStaking)':
2908
+ return this.getStaking();
2909
+ case 'pri(staking.getSubscription)':
2910
+ return await this.subscribeStaking(id, port);
2911
+ case 'pri(stakingReward.getStakingReward)':
2912
+ return this.getStakingReward();
2913
+ case 'pri(stakingReward.getSubscription)':
2914
+ return this.subscribeStakingReward(id, port);
2915
+ case 'pri(transaction.history.getSubscription)':
2916
+ return await this.subscribeHistory(id, port);
2917
+
2918
+ // ChainService
2919
+ case 'pri(chainService.subscribeChainInfoMap)':
2920
+ return this.subscribeChainInfoMap(id, port);
2921
+ case 'pri(chainService.subscribeChainStateMap)':
2922
+ return this.subscribeChainStateMap(id, port);
2923
+ case 'pri(chainService.subscribeXcmRefMap)':
2924
+ return this.subscribeXcmRefMap(id, port);
2925
+ case 'pri(chainService.getSupportedContractTypes)':
2926
+ return this.getSupportedSmartContractTypes();
2927
+ case 'pri(chainService.enableChain)':
2928
+ return await this.enableChain(request);
2929
+ case 'pri(chainService.disableChain)':
2930
+ return await this.disableChain(request);
2931
+ case 'pri(chainService.removeChain)':
2932
+ return this.removeCustomChain(request);
2933
+ case 'pri(chainService.validateCustomChain)':
2934
+ return await this.validateNetwork(request);
2935
+ case 'pri(chainService.upsertChain)':
2936
+ return await this.upsertChain(request);
2937
+ case 'pri(chainService.resetDefaultChains)':
2938
+ return this.resetDefaultNetwork();
2939
+ case 'pri(chainService.enableChains)':
2940
+ return await this.enableChains(request);
2941
+ case 'pri(chainService.subscribeAssetRegistry)':
2942
+ return this.subscribeAssetRegistry(id, port);
2943
+ case 'pri(chainService.subscribeMultiChainAssetMap)':
2944
+ return this.subscribeMultiChainAssetMap(id, port);
2945
+ case 'pri(chainService.upsertCustomAsset)':
2946
+ return await this.upsertCustomToken(request);
2947
+ case 'pri(chainService.deleteCustomAsset)':
2948
+ return this.deleteCustomAsset(request);
2949
+ case 'pri(chainService.validateCustomAsset)':
2950
+ return await this.validateCustomAsset(request);
2951
+ case 'pri(assetSetting.getSubscription)':
2952
+ return this.subscribeAssetSetting(id, port);
2953
+ case 'pri(assetSetting.update)':
2954
+ return await this.updateAssetSetting(request);
2955
+ case 'pri(transfer.checkReferenceCount)':
2956
+ return await this.transferCheckReferenceCount(request);
2957
+ case 'pri(transfer.checkSupporting)':
2958
+ return await this.transferCheckSupporting(request);
2959
+ case 'pri(transfer.getExistentialDeposit)':
2960
+ return this.transferGetExistentialDeposit(request);
2961
+ case 'pri(freeBalance.get)':
2962
+ return this.getAddressFreeBalance(request);
2963
+ case 'pri(freeBalance.subscribe)':
2964
+ return this.subscribeAddressFreeBalance(request, id, port);
2965
+ case 'pri(subscription.cancel)':
2966
+ return this.cancelSubscription(request);
2967
+ case 'pri(chainService.recoverSubstrateApi)':
2968
+ return this.recoverDotSamaApi(request);
2969
+ case 'pri(accounts.get.meta)':
2970
+ return this.getAccountMeta(request);
2971
+
2972
+ // Send NFT
2973
+ case 'pri(evmNft.submitTransaction)':
2974
+ return this.evmNftSubmitTransaction(request);
2975
+ case 'pri(substrateNft.submitTransaction)':
2976
+ return this.substrateNftSubmitTransaction(request);
2977
+
2978
+ /// Transfer
2979
+ case 'pri(accounts.transfer)':
2980
+ return await this.makeTransfer(request);
2981
+ case 'pri(accounts.crossChainTransfer)':
2982
+ return await this.makeCrossChainTransfer(request);
2983
+
2984
+ /// Sign QR
2985
+ case 'pri(qr.transaction.parse.substrate)':
2986
+ return this.parseSubstrateTransaction(request);
2987
+ case 'pri(qr.transaction.parse.evm)':
2988
+ return await this.parseEVMRLP(request);
2989
+ case 'pri(qr.sign.substrate)':
2990
+ return this.qrSignSubstrate(request);
2991
+ case 'pri(qr.sign.evm)':
2992
+ return await this.qrSignEVM(request);
2993
+
2994
+ /// External account request
2995
+ case 'pri(account.external.reject)':
2996
+ return this.rejectExternalRequest(request);
2997
+ case 'pri(account.external.resolve)':
2998
+ return this.resolveQrTransfer(request);
2999
+ case 'pri(accounts.tie)':
3000
+ return this.accountsTie2(request);
3001
+ case 'pri(confirmations.subscribe)':
3002
+ return this.subscribeConfirmations(id, port);
3003
+ case 'pri(confirmations.complete)':
3004
+ return await this.completeConfirmation(request);
3005
+
3006
+ /// Stake
3007
+ case 'pri(bonding.getBondingOptions)':
3008
+ return await this.getBondingOptions(request);
3009
+ case 'pri(bonding.getNominationPoolOptions)':
3010
+ return await this.getNominationPoolOptions(request);
3011
+ case 'pri(bonding.subscribeChainStakingMetadata)':
3012
+ return await this.subscribeChainStakingMetadata(id, port);
3013
+ case 'pri(bonding.subscribeNominatorMetadata)':
3014
+ return await this.subscribeStakingNominatorMetadata(id, port);
3015
+ case 'pri(bonding.submitBondingTransaction)':
3016
+ return await this.submitBonding(request);
3017
+ case 'pri(unbonding.submitTransaction)':
3018
+ return await this.submitUnbonding(request);
3019
+ case 'pri(unbonding.submitWithdrawal)':
3020
+ return await this.submitStakeWithdrawal(request);
3021
+ case 'pri(staking.submitClaimReward)':
3022
+ return await this.submitStakeClaimReward(request);
3023
+ case 'pri(staking.submitCancelWithdrawal)':
3024
+ return await this.submitCancelStakeWithdrawal(request);
3025
+ case 'pri(staking.submitTuringCompound)':
3026
+ return await this.submitTuringStakeCompounding(request);
3027
+ case 'pri(staking.submitTuringCancelCompound)':
3028
+ return await this.submitTuringCancelStakeCompound(request);
3029
+ case 'pri(bonding.nominationPool.submitBonding)':
3030
+ return await this.submitPoolingBonding(request);
3031
+ case 'pri(bonding.nominationPool.submitUnbonding)':
3032
+ return await this.submitPoolingUnbonding(request);
3033
+
3034
+ // EVM Transaction
3035
+ case 'pri(evm.transaction.parse.input)':
3036
+ return await this.parseContractInput(request);
3037
+
3038
+ // Auth Url subscribe
3039
+ case 'pri(authorize.subscribe)':
3040
+ return await this.subscribeAuthUrls(id, port);
3041
+
3042
+ /// Keyring state
3043
+ case 'pri(keyring.subscribe)':
3044
+ return this.keyringStateSubscribe(id, port);
3045
+ case 'pri(keyring.change)':
3046
+ return this.keyringChangeMasterPassword(request);
3047
+ case 'pri(keyring.migrate)':
3048
+ return this.keyringMigrateMasterPassword(request);
3049
+ case 'pri(keyring.unlock)':
3050
+ return this.keyringUnlock(request);
3051
+ case 'pri(keyring.lock)':
3052
+ return this.keyringLock();
3053
+ case 'pri(keyring.export.mnemonic)':
3054
+ return this.keyringExportMnemonic(request);
3055
+
3056
+ /// Signing external
3057
+ case 'pri(signing.approve.passwordV2)':
3058
+ return this.signingApprovePasswordV2(request);
3059
+
3060
+ /// Derive account
3061
+ case 'pri(derivation.validateV2)':
3062
+ return this.validateDerivePath(request);
3063
+ case 'pri(derivation.getList)':
3064
+ return this.getListDeriveAccounts(request);
3065
+ case 'pri(derivation.create.multiple)':
3066
+ return this.derivationCreateMultiple(request);
3067
+ case 'pri(derivation.createV3)':
3068
+ return this.derivationCreateV3(request);
3069
+
3070
+ // Transaction
3071
+ case 'pri(transactions.getOne)':
3072
+ return this.getTransaction(request);
3073
+ case 'pri(transactions.subscribe)':
3074
+ return this.subscribeTransactions(id, port);
3075
+
3076
+ // Notification
3077
+ case 'pri(notifications.subscribe)':
3078
+ return this.subscribeNotifications(id, port);
3079
+
3080
+ // Default
3081
+ default:
3082
+ throw new Error(`Unable to handle message of type ${type}`);
3083
+ }
3084
+ }
3085
+ }
3086
+ exports.default = KoniExtension;