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

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