@subwallet/extension-base 0.8.1-wr → 0.8.1-wr3

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