@subwallet/extension-base 1.2.31-0 → 1.2.33-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/background/KoniTypes.d.ts +78 -227
  2. package/background/KoniTypes.js +3 -40
  3. package/background/errors/SWError.d.ts +4 -7
  4. package/background/errors/SWError.js +4 -0
  5. package/background/errors/TransactionError.d.ts +2 -2
  6. package/background/errors/TransactionError.js +2 -4
  7. package/background/handlers/State.d.ts +0 -12
  8. package/background/types.d.ts +9 -134
  9. package/background/warnings/TransactionWarning.d.ts +1 -1
  10. package/background/warnings/TransactionWarning.js +5 -1
  11. package/cjs/background/KoniTypes.js +4 -44
  12. package/cjs/background/errors/SWError.js +4 -0
  13. package/cjs/background/errors/TransactionError.js +13 -15
  14. package/cjs/background/warnings/TransactionWarning.js +6 -2
  15. package/cjs/constants/environment.js +13 -0
  16. package/cjs/constants/index.js +40 -13
  17. package/cjs/constants/signing.js +23 -0
  18. package/cjs/constants/storage.js +4 -2
  19. package/cjs/core/consts.js +20 -0
  20. package/cjs/core/logic-validation/recipientAddress.js +106 -0
  21. package/cjs/core/logic-validation/request.js +11 -19
  22. package/cjs/core/logic-validation/swap.js +5 -5
  23. package/cjs/core/logic-validation/transfer.js +83 -42
  24. package/cjs/core/types.js +26 -0
  25. package/cjs/core/utils.js +113 -0
  26. package/cjs/koni/api/dotsama/crowdloan.js +1 -1
  27. package/cjs/koni/api/nft/index.js +14 -5
  28. package/cjs/koni/api/staking/bonding/paraChain.js +8 -8
  29. package/cjs/koni/api/staking/bonding/relayChain.js +9 -9
  30. package/cjs/koni/api/staking/index.js +4 -1
  31. package/cjs/koni/background/cron.js +7 -7
  32. package/cjs/koni/background/handlers/Extension.js +510 -1446
  33. package/cjs/koni/background/handlers/State.js +61 -238
  34. package/cjs/koni/background/handlers/Tabs.js +143 -107
  35. package/cjs/koni/background/subscription.js +5 -5
  36. package/cjs/packageInfo.js +1 -1
  37. package/cjs/page/Accounts.js +2 -5
  38. package/cjs/page/SubWalleEvmProvider.js +1 -1
  39. package/cjs/page/index.js +2 -1
  40. package/cjs/services/balance-service/BalanceMapImpl.js +48 -20
  41. package/cjs/services/balance-service/helpers/subscribe/index.js +27 -15
  42. package/cjs/services/balance-service/helpers/subscribe/ton/consts.js +40 -0
  43. package/cjs/services/balance-service/helpers/subscribe/ton/ton.js +120 -0
  44. package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +181 -0
  45. package/cjs/services/balance-service/index.js +25 -13
  46. package/cjs/services/balance-service/transfer/token.js +41 -24
  47. package/cjs/services/balance-service/transfer/ton-transfer.js +136 -0
  48. package/cjs/services/buy-service/index.js +5 -1
  49. package/cjs/services/chain-service/constants.js +1 -1
  50. package/cjs/services/chain-service/handler/SubstrateApi.js +1 -0
  51. package/cjs/services/chain-service/handler/TonApi.js +213 -0
  52. package/cjs/services/chain-service/handler/TonChainHandler.js +81 -0
  53. package/cjs/services/chain-service/index.js +32 -8
  54. package/cjs/services/chain-service/utils/index.js +78 -22
  55. package/cjs/services/earning-service/constants/chains.js +3 -1
  56. package/cjs/services/earning-service/handlers/base.js +2 -1
  57. package/cjs/services/earning-service/handlers/lending/base.js +8 -9
  58. package/cjs/services/earning-service/handlers/lending/interlay.js +1 -1
  59. package/cjs/services/earning-service/handlers/liquid-staking/base.js +9 -10
  60. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +1 -1
  61. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
  62. package/cjs/services/earning-service/handlers/native-staking/astar.js +2 -2
  63. package/cjs/services/earning-service/handlers/native-staking/base-para.js +13 -13
  64. package/cjs/services/earning-service/handlers/native-staking/base.js +2 -2
  65. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +2 -2
  66. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +15 -15
  67. package/cjs/services/earning-service/handlers/nomination-pool/index.js +14 -14
  68. package/cjs/services/earning-service/handlers/special.js +10 -10
  69. package/cjs/services/earning-service/service.js +26 -17
  70. package/cjs/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
  71. package/cjs/services/history-service/index.js +29 -11
  72. package/cjs/services/history-service/subscan-history.js +9 -21
  73. package/cjs/services/keyring-service/context/account-context.js +259 -0
  74. package/cjs/services/keyring-service/context/handlers/Base.js +20 -0
  75. package/cjs/services/keyring-service/context/handlers/Derive.js +377 -0
  76. package/cjs/services/keyring-service/context/handlers/Inject.js +75 -0
  77. package/cjs/services/keyring-service/context/handlers/Json.js +348 -0
  78. package/cjs/services/keyring-service/context/handlers/Ledger.js +165 -0
  79. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +218 -0
  80. package/cjs/services/keyring-service/context/handlers/Modify.js +258 -0
  81. package/cjs/services/keyring-service/context/handlers/Secret.js +310 -0
  82. package/cjs/services/keyring-service/context/handlers/index.js +82 -0
  83. package/cjs/services/keyring-service/context/state.js +649 -0
  84. package/cjs/services/keyring-service/context/stores/AccountProxy.js +32 -0
  85. package/cjs/services/keyring-service/context/stores/Base.js +37 -0
  86. package/cjs/services/keyring-service/context/stores/CurrentAccount.js +28 -0
  87. package/cjs/services/keyring-service/context/stores/ModifyPair.js +19 -0
  88. package/cjs/services/keyring-service/context/stores/index.js +38 -0
  89. package/cjs/services/keyring-service/index.js +20 -164
  90. package/cjs/services/migration-service/scripts/index.js +6 -4
  91. package/cjs/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
  92. package/cjs/services/migration-service/scripts/keyring/MigratePairData.js +28 -0
  93. package/cjs/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
  94. package/cjs/services/request-service/constants.js +5 -3
  95. package/cjs/services/request-service/handler/AuthRequestHandler.js +104 -57
  96. package/cjs/services/request-service/handler/EvmRequestHandler.js +3 -4
  97. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +5 -11
  98. package/cjs/services/request-service/handler/TonRequestHandler.js +175 -0
  99. package/cjs/services/request-service/index.js +24 -5
  100. package/cjs/services/swap-service/handler/asset-hub/handler.js +6 -5
  101. package/cjs/services/swap-service/handler/base-handler.js +8 -8
  102. package/cjs/services/swap-service/handler/chainflip-handler.js +5 -4
  103. package/cjs/services/swap-service/handler/hydradx-handler.js +4 -3
  104. package/cjs/services/swap-service/index.js +4 -4
  105. package/cjs/services/transaction-service/helpers/index.js +6 -1
  106. package/cjs/services/transaction-service/index.js +184 -84
  107. package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
  108. package/cjs/stores/AccountProxyStore.js +18 -0
  109. package/cjs/stores/ModifyPairStore.js +18 -0
  110. package/cjs/stores/index.js +23 -2
  111. package/cjs/types/account/action/add/index.js +38 -0
  112. package/cjs/types/account/action/add/json.js +1 -0
  113. package/cjs/types/account/action/add/mnemonic.js +1 -0
  114. package/cjs/types/account/action/add/secret.js +1 -0
  115. package/cjs/types/account/action/derive.js +1 -0
  116. package/cjs/types/account/action/edit.js +1 -0
  117. package/cjs/types/account/action/export.js +1 -0
  118. package/cjs/types/account/action/index.js +71 -0
  119. package/cjs/types/account/action/subscribe.js +16 -0
  120. package/cjs/types/account/action/validate.js +1 -0
  121. package/cjs/types/account/error/common.js +40 -0
  122. package/cjs/types/account/error/derive.js +55 -0
  123. package/cjs/types/account/error/index.js +27 -0
  124. package/cjs/types/account/index.js +38 -0
  125. package/cjs/types/account/info/current.js +1 -0
  126. package/cjs/types/account/info/index.js +38 -0
  127. package/cjs/types/account/info/keyring.js +90 -0
  128. package/cjs/types/account/info/proxy.js +49 -0
  129. package/cjs/types/error.js +1 -0
  130. package/cjs/types/index.js +44 -0
  131. package/cjs/types/transaction/data.js +1 -0
  132. package/cjs/types/transaction/error.js +53 -0
  133. package/cjs/types/transaction/index.js +49 -0
  134. package/cjs/types/transaction/request.js +1 -0
  135. package/cjs/types/transaction/warning.js +14 -0
  136. package/cjs/types/yield/actions/join/validate.js +1 -16
  137. package/cjs/utils/account/analyze.js +166 -0
  138. package/cjs/utils/account/common.js +121 -0
  139. package/cjs/utils/account/derive/index.js +27 -0
  140. package/cjs/utils/account/derive/info/index.js +27 -0
  141. package/cjs/utils/account/derive/info/solo.js +246 -0
  142. package/cjs/utils/account/derive/info/unified.js +112 -0
  143. package/cjs/utils/account/derive/validate.js +177 -0
  144. package/cjs/utils/account/index.js +49 -0
  145. package/cjs/utils/account/transform.js +566 -0
  146. package/cjs/utils/auth.js +46 -0
  147. package/cjs/utils/getId.js +8 -1
  148. package/cjs/utils/index.js +48 -62
  149. package/constants/environment.d.ts +1 -0
  150. package/constants/environment.js +6 -0
  151. package/constants/index.d.ts +5 -1
  152. package/constants/index.js +5 -2
  153. package/constants/signing.d.ts +4 -0
  154. package/constants/signing.js +15 -0
  155. package/constants/storage.d.ts +1 -0
  156. package/constants/storage.js +2 -1
  157. package/core/consts.d.ts +1 -0
  158. package/core/consts.js +13 -0
  159. package/core/logic-validation/recipientAddress.d.ts +2 -0
  160. package/core/logic-validation/recipientAddress.js +100 -0
  161. package/core/logic-validation/request.js +10 -18
  162. package/core/logic-validation/swap.js +1 -1
  163. package/core/logic-validation/transfer.d.ts +3 -2
  164. package/core/logic-validation/transfer.js +50 -10
  165. package/core/types.d.ts +26 -0
  166. package/core/types.js +19 -0
  167. package/core/utils.d.ts +10 -0
  168. package/core/utils.js +105 -0
  169. package/koni/api/dotsama/crowdloan.js +1 -1
  170. package/koni/api/nft/index.js +14 -5
  171. package/koni/api/staking/bonding/paraChain.js +2 -2
  172. package/koni/api/staking/bonding/relayChain.js +2 -2
  173. package/koni/api/staking/index.js +4 -1
  174. package/koni/background/cron.js +7 -7
  175. package/koni/background/handlers/Extension.d.ts +26 -35
  176. package/koni/background/handlers/Extension.js +337 -1242
  177. package/koni/background/handlers/State.d.ts +12 -19
  178. package/koni/background/handlers/State.js +57 -231
  179. package/koni/background/handlers/Tabs.d.ts +2 -3
  180. package/koni/background/handlers/Tabs.js +105 -61
  181. package/koni/background/subscription.js +5 -5
  182. package/package.json +352 -53
  183. package/packageInfo.js +1 -1
  184. package/page/Accounts.js +2 -5
  185. package/page/SubWalleEvmProvider.js +1 -1
  186. package/page/index.js +2 -1
  187. package/services/balance-service/BalanceMapImpl.d.ts +6 -4
  188. package/services/balance-service/BalanceMapImpl.js +44 -18
  189. package/services/balance-service/helpers/subscribe/index.d.ts +3 -4
  190. package/services/balance-service/helpers/subscribe/index.js +29 -17
  191. package/services/balance-service/helpers/subscribe/ton/consts.d.ts +18 -0
  192. package/services/balance-service/helpers/subscribe/ton/consts.js +28 -0
  193. package/services/balance-service/helpers/subscribe/ton/ton.d.ts +3 -0
  194. package/services/balance-service/helpers/subscribe/ton/ton.js +111 -0
  195. package/services/balance-service/helpers/subscribe/ton/types.d.ts +26 -0
  196. package/services/balance-service/helpers/subscribe/ton/utils.d.ts +32 -0
  197. package/services/balance-service/helpers/subscribe/ton/utils.js +159 -0
  198. package/services/balance-service/index.js +25 -13
  199. package/services/balance-service/transfer/token.d.ts +2 -2
  200. package/services/balance-service/transfer/token.js +18 -1
  201. package/services/balance-service/transfer/ton-transfer.d.ts +25 -0
  202. package/services/balance-service/transfer/ton-transfer.js +127 -0
  203. package/services/buy-service/index.js +5 -1
  204. package/services/buy-service/types.d.ts +2 -2
  205. package/services/chain-service/constants.js +1 -1
  206. package/services/chain-service/handler/SubstrateApi.js +1 -0
  207. package/services/chain-service/handler/TonApi.d.ts +52 -0
  208. package/services/chain-service/handler/TonApi.js +204 -0
  209. package/services/chain-service/handler/TonChainHandler.d.ts +17 -0
  210. package/services/chain-service/handler/TonChainHandler.js +73 -0
  211. package/services/chain-service/index.d.ts +5 -1
  212. package/services/chain-service/index.js +32 -8
  213. package/services/chain-service/types.d.ts +24 -0
  214. package/services/chain-service/utils/index.d.ts +10 -2
  215. package/services/chain-service/utils/index.js +59 -18
  216. package/services/earning-service/constants/chains.d.ts +1 -0
  217. package/services/earning-service/constants/chains.js +1 -0
  218. package/services/earning-service/handlers/base.js +3 -2
  219. package/services/earning-service/handlers/lending/base.js +1 -2
  220. package/services/earning-service/handlers/lending/interlay.js +2 -2
  221. package/services/earning-service/handlers/liquid-staking/base.js +1 -2
  222. package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
  223. package/services/earning-service/handlers/native-staking/amplitude.js +2 -2
  224. package/services/earning-service/handlers/native-staking/astar.js +2 -2
  225. package/services/earning-service/handlers/native-staking/base-para.js +2 -2
  226. package/services/earning-service/handlers/native-staking/base.js +2 -2
  227. package/services/earning-service/handlers/native-staking/para-chain.js +2 -2
  228. package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
  229. package/services/earning-service/handlers/nomination-pool/index.js +2 -2
  230. package/services/earning-service/handlers/special.js +2 -2
  231. package/services/earning-service/service.js +18 -9
  232. package/services/event-service/types.d.ts +3 -1
  233. package/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
  234. package/services/history-service/index.d.ts +4 -1
  235. package/services/history-service/index.js +29 -11
  236. package/services/history-service/subscan-history.js +8 -20
  237. package/services/keyring-service/context/account-context.d.ts +87 -0
  238. package/services/keyring-service/context/account-context.js +250 -0
  239. package/services/keyring-service/context/handlers/Base.d.ts +11 -0
  240. package/services/keyring-service/context/handlers/Base.js +13 -0
  241. package/services/keyring-service/context/handlers/Derive.d.ts +29 -0
  242. package/services/keyring-service/context/handlers/Derive.js +365 -0
  243. package/services/keyring-service/context/handlers/Inject.d.ts +11 -0
  244. package/services/keyring-service/context/handlers/Inject.js +69 -0
  245. package/services/keyring-service/context/handlers/Json.d.ts +18 -0
  246. package/services/keyring-service/context/handlers/Json.js +328 -0
  247. package/services/keyring-service/context/handlers/Ledger.d.ts +11 -0
  248. package/services/keyring-service/context/handlers/Ledger.js +158 -0
  249. package/services/keyring-service/context/handlers/Mnemonic.d.ts +15 -0
  250. package/services/keyring-service/context/handlers/Mnemonic.js +206 -0
  251. package/services/keyring-service/context/handlers/Modify.d.ts +16 -0
  252. package/services/keyring-service/context/handlers/Modify.js +250 -0
  253. package/services/keyring-service/context/handlers/Secret.d.ts +16 -0
  254. package/services/keyring-service/context/handlers/Secret.js +299 -0
  255. package/services/keyring-service/context/handlers/index.d.ts +7 -0
  256. package/services/keyring-service/context/handlers/index.js +10 -0
  257. package/services/keyring-service/context/state.d.ts +92 -0
  258. package/services/keyring-service/context/state.js +629 -0
  259. package/services/keyring-service/context/stores/AccountProxy.d.ts +13 -0
  260. package/services/keyring-service/context/stores/AccountProxy.js +25 -0
  261. package/services/keyring-service/context/stores/Base.d.ts +22 -0
  262. package/services/keyring-service/context/stores/Base.js +30 -0
  263. package/services/keyring-service/context/stores/CurrentAccount.d.ts +15 -0
  264. package/services/keyring-service/context/stores/CurrentAccount.js +21 -0
  265. package/services/keyring-service/context/stores/ModifyPair.d.ts +10 -0
  266. package/services/keyring-service/context/stores/ModifyPair.js +12 -0
  267. package/services/keyring-service/context/stores/index.d.ts +3 -0
  268. package/services/keyring-service/context/stores/index.js +6 -0
  269. package/services/keyring-service/index.d.ts +10 -22
  270. package/services/keyring-service/index.js +20 -161
  271. package/services/migration-service/scripts/index.js +6 -4
  272. package/services/migration-service/scripts/{MigrateLedgerAccountV2.d.ts → keyring/MigrateLedgerAccountV2.d.ts} +1 -1
  273. package/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
  274. package/services/migration-service/scripts/keyring/MigratePairData.d.ts +4 -0
  275. package/services/migration-service/scripts/keyring/MigratePairData.js +20 -0
  276. package/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
  277. package/services/mkt-campaign-service/types.d.ts +4 -0
  278. package/services/request-service/constants.d.ts +1 -1
  279. package/services/request-service/constants.js +2 -1
  280. package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
  281. package/services/request-service/handler/AuthRequestHandler.js +93 -45
  282. package/services/request-service/handler/EvmRequestHandler.js +3 -4
  283. package/services/request-service/handler/SubstrateRequestHandler.d.ts +2 -2
  284. package/services/request-service/handler/SubstrateRequestHandler.js +5 -11
  285. package/services/request-service/handler/TonRequestHandler.d.ts +17 -0
  286. package/services/request-service/handler/TonRequestHandler.js +168 -0
  287. package/services/request-service/index.d.ts +8 -3
  288. package/services/request-service/index.js +23 -5
  289. package/services/request-service/types.d.ts +6 -3
  290. package/services/swap-service/handler/asset-hub/handler.d.ts +1 -1
  291. package/services/swap-service/handler/asset-hub/handler.js +2 -1
  292. package/services/swap-service/handler/base-handler.js +1 -1
  293. package/services/swap-service/handler/chainflip-handler.d.ts +1 -1
  294. package/services/swap-service/handler/chainflip-handler.js +4 -3
  295. package/services/swap-service/handler/hydradx-handler.d.ts +1 -1
  296. package/services/swap-service/handler/hydradx-handler.js +2 -1
  297. package/services/swap-service/index.js +1 -1
  298. package/services/transaction-service/helpers/index.d.ts +2 -0
  299. package/services/transaction-service/helpers/index.js +4 -0
  300. package/services/transaction-service/index.d.ts +1 -0
  301. package/services/transaction-service/index.js +114 -17
  302. package/services/transaction-service/types.d.ts +4 -2
  303. package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
  304. package/stores/AccountProxyStore.d.ts +5 -0
  305. package/stores/AccountProxyStore.js +10 -0
  306. package/stores/Authorize.d.ts +1 -1
  307. package/stores/CurrentAccountStore.d.ts +1 -1
  308. package/stores/ModifyPairStore.d.ts +5 -0
  309. package/stores/ModifyPairStore.js +10 -0
  310. package/stores/index.d.ts +4 -1
  311. package/stores/index.js +5 -2
  312. package/types/account/action/add/index.d.ts +3 -0
  313. package/types/account/action/add/index.js +6 -0
  314. package/types/account/action/add/json.d.ts +29 -0
  315. package/types/account/action/add/json.js +1 -0
  316. package/types/account/action/add/mnemonic.d.ts +77 -0
  317. package/types/account/action/add/mnemonic.js +1 -0
  318. package/types/account/action/add/secret.d.ts +55 -0
  319. package/types/account/action/add/secret.js +1 -0
  320. package/types/account/action/derive.d.ts +77 -0
  321. package/types/account/action/derive.js +1 -0
  322. package/types/account/action/edit.d.ts +31 -0
  323. package/types/account/action/edit.js +1 -0
  324. package/types/account/action/export.d.ts +15 -0
  325. package/types/account/action/export.js +1 -0
  326. package/types/account/action/index.d.ts +6 -0
  327. package/types/account/action/index.js +9 -0
  328. package/types/account/action/subscribe.d.ts +22 -0
  329. package/types/account/action/subscribe.js +10 -0
  330. package/types/account/action/validate.d.ts +17 -0
  331. package/types/account/action/validate.js +1 -0
  332. package/types/account/error/common.d.ts +10 -0
  333. package/types/account/error/common.js +33 -0
  334. package/types/account/error/derive.d.ts +13 -0
  335. package/types/account/error/derive.js +48 -0
  336. package/types/account/error/index.d.ts +2 -0
  337. package/types/account/error/index.js +5 -0
  338. package/types/account/index.d.ts +3 -0
  339. package/types/account/index.js +6 -0
  340. package/types/account/info/current.d.ts +10 -0
  341. package/types/account/info/current.js +1 -0
  342. package/types/account/info/index.d.ts +3 -0
  343. package/types/account/info/index.js +6 -0
  344. package/types/account/info/keyring.d.ts +161 -0
  345. package/types/account/info/keyring.js +88 -0
  346. package/types/account/info/proxy.d.ts +73 -0
  347. package/types/account/info/proxy.js +46 -0
  348. package/types/balance/index.d.ts +4 -1
  349. package/types/buy.d.ts +3 -1
  350. package/types/error.d.ts +8 -0
  351. package/types/error.js +1 -0
  352. package/types/index.d.ts +4 -0
  353. package/types/index.js +5 -1
  354. package/types/transaction/data.d.ts +17 -0
  355. package/types/transaction/data.js +1 -0
  356. package/types/transaction/error.d.ts +39 -0
  357. package/types/transaction/error.js +44 -0
  358. package/types/transaction/index.d.ts +4 -0
  359. package/types/transaction/index.js +7 -0
  360. package/types/transaction/request.d.ts +24 -0
  361. package/types/transaction/request.js +1 -0
  362. package/types/transaction/warning.d.ts +5 -0
  363. package/types/transaction/warning.js +8 -0
  364. package/types/yield/actions/join/submit.d.ts +2 -2
  365. package/types/yield/actions/join/validate.d.ts +1 -6
  366. package/types/yield/actions/join/validate.js +1 -10
  367. package/types/yield/actions/others.d.ts +1 -1
  368. package/utils/account/analyze.d.ts +4 -0
  369. package/utils/account/analyze.js +159 -0
  370. package/utils/account/common.d.ts +16 -0
  371. package/utils/account/common.js +104 -0
  372. package/utils/account/derive/index.d.ts +2 -0
  373. package/utils/account/derive/index.js +5 -0
  374. package/utils/account/derive/info/index.d.ts +2 -0
  375. package/utils/account/derive/info/index.js +5 -0
  376. package/utils/account/derive/info/solo.d.ts +11 -0
  377. package/utils/account/derive/info/solo.js +230 -0
  378. package/utils/account/derive/info/unified.d.ts +7 -0
  379. package/utils/account/derive/info/unified.js +102 -0
  380. package/utils/account/derive/validate.d.ts +8 -0
  381. package/utils/account/derive/validate.js +165 -0
  382. package/utils/account/index.d.ts +4 -0
  383. package/utils/account/index.js +7 -0
  384. package/utils/account/transform.d.ts +41 -0
  385. package/utils/account/transform.js +533 -0
  386. package/utils/auth.d.ts +2 -0
  387. package/utils/auth.js +39 -0
  388. package/utils/canDerive.d.ts +1 -1
  389. package/utils/eth/mergeTransactionAndSignature.d.ts +1 -1
  390. package/utils/getId.d.ts +1 -0
  391. package/utils/getId.js +3 -1
  392. package/utils/index.d.ts +12 -5
  393. package/utils/index.js +28 -47
  394. package/cjs/signers/substrates/KeyringSigner.js +0 -35
  395. package/cjs/signers/substrates/LedgerSigner.js +0 -44
  396. package/cjs/signers/substrates/QrSigner.js +0 -63
  397. package/cjs/signers/types.js +0 -15
  398. package/cjs/signers/web3/QrSigner.js +0 -67
  399. package/cjs/utils/account.js +0 -34
  400. package/signers/substrates/KeyringSigner.d.ts +0 -13
  401. package/signers/substrates/KeyringSigner.js +0 -27
  402. package/signers/substrates/LedgerSigner.d.ts +0 -13
  403. package/signers/substrates/LedgerSigner.js +0 -37
  404. package/signers/substrates/QrSigner.d.ts +0 -20
  405. package/signers/substrates/QrSigner.js +0 -55
  406. package/signers/types.d.ts +0 -34
  407. package/signers/types.js +0 -9
  408. package/signers/web3/QrSigner.d.ts +0 -18
  409. package/signers/web3/QrSigner.js +0 -59
  410. package/types/transaction.d.ts +0 -3
  411. package/utils/account.d.ts +0 -5
  412. package/utils/account.js +0 -24
  413. /package/cjs/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
  414. /package/cjs/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
  415. /package/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
  416. /package/services/migration-service/scripts/{MigrateLedgerAccount.d.ts → keyring/MigrateLedgerAccount.d.ts} +0 -0
  417. /package/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
  418. /package/services/migration-service/scripts/{MigrateRemoveGenesisHash.d.ts → keyring/MigrateRemoveGenesisHash.d.ts} +0 -0
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.default = exports.SEED_LENGTHS = exports.SEED_DEFAULT_LENGTH = void 0;
7
+ exports.default = void 0;
8
8
  exports.isJsonPayload = isJsonPayload;
9
9
  var _common = require("@ethereumjs/common");
10
10
  var _tx = require("@ethereumjs/tx");
@@ -26,12 +26,14 @@ var _bonding = require("@subwallet/extension-base/koni/api/staking/bonding");
26
26
  var _paraChain = require("@subwallet/extension-base/koni/api/staking/bonding/paraChain");
27
27
  var _relayChain = require("@subwallet/extension-base/koni/api/staking/bonding/relayChain");
28
28
  var _utils2 = require("@subwallet/extension-base/koni/api/yield/helper/utils");
29
+ var _utils3 = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
29
30
  var _smartContract = require("@subwallet/extension-base/services/balance-service/transfer/smart-contract");
30
31
  var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
32
+ var _tonTransfer = require("@subwallet/extension-base/services/balance-service/transfer/ton-transfer");
31
33
  var _xcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm");
32
34
  var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
33
35
  var _types = require("@subwallet/extension-base/services/chain-service/types");
34
- var _utils3 = require("@subwallet/extension-base/services/chain-service/utils");
36
+ var _utils4 = require("@subwallet/extension-base/services/chain-service/utils");
35
37
  var _constants3 = require("@subwallet/extension-base/services/request-service/constants");
36
38
  var _constants4 = require("@subwallet/extension-base/services/setting-service/constants");
37
39
  var _constants5 = require("@subwallet/extension-base/services/wallet-connect-service/constants");
@@ -39,49 +41,22 @@ var _helpers2 = require("@subwallet/extension-base/services/wallet-connect-servi
39
41
  var _storage = require("@subwallet/extension-base/storage");
40
42
  var _stores = require("@subwallet/extension-base/stores");
41
43
  var _types2 = require("@subwallet/extension-base/types");
42
- var _utils4 = require("@subwallet/extension-base/utils");
44
+ var _utils5 = require("@subwallet/extension-base/utils");
43
45
  var _parseTransaction2 = require("@subwallet/extension-base/utils/eth/parseTransaction");
44
46
  var _extensionChains = require("@subwallet/extension-chains");
45
47
  var _keyring = require("@subwallet/keyring");
48
+ var _types3 = require("@subwallet/keyring/types");
46
49
  var _uiKeyring = require("@subwallet/ui-keyring");
47
- var _utils5 = require("@walletconnect/utils");
50
+ var _utils6 = require("@walletconnect/utils");
48
51
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
49
52
  var _i18next = require("i18next");
50
53
  var _rxjs = require("rxjs");
51
- var _types3 = require("@polkadot/types");
54
+ var _types4 = require("@polkadot/types");
52
55
  var _util = require("@polkadot/util");
53
56
  var _utilCrypto = require("@polkadot/util-crypto");
54
57
  // Copyright 2019-2022 @subwallet/extension-koni authors & contributors
55
58
  // SPDX-License-Identifier: Apache-2.0
56
59
 
57
- const ETH_DERIVE_DEFAULT = '/m/44\'/60\'/0\'/0/0';
58
- function getSuri(seed, type) {
59
- return type === 'ethereum' ? `${seed}${ETH_DERIVE_DEFAULT}` : seed;
60
- }
61
- function transformAccounts(accounts) {
62
- return Object.values(accounts).map(_ref => {
63
- let {
64
- json: {
65
- address,
66
- meta
67
- },
68
- type
69
- } = _ref;
70
- return {
71
- address,
72
- ...meta,
73
- type
74
- };
75
- });
76
- }
77
- const ACCOUNT_ALL_JSON = {
78
- address: _constants.ALL_ACCOUNT_KEY,
79
- name: 'All'
80
- };
81
- const SEED_DEFAULT_LENGTH = 12;
82
- exports.SEED_DEFAULT_LENGTH = SEED_DEFAULT_LENGTH;
83
- const SEED_LENGTHS = [12, 15, 18, 21, 24];
84
- exports.SEED_LENGTHS = SEED_LENGTHS;
85
60
  function isJsonPayload(value) {
86
61
  return value.genesisHash !== undefined;
87
62
  }
@@ -92,6 +67,11 @@ class KoniExtension {
92
67
  #skipAutoLock = false;
93
68
  #firstTime = true;
94
69
  #alwaysLock = false;
70
+ /**
71
+ * Use for heartbeat.
72
+ * When auto-lock runs, the value changes, and it stops the heartbeat.
73
+ * With MV3, when the lifecycle ends, this extension Object will be destroyed, so #keyringLockSubject will be destroyed too.
74
+ * */
95
75
  #keyringLockSubject = new _rxjs.Subject();
96
76
  constructor(state) {
97
77
  this.#koniState = state;
@@ -130,132 +110,28 @@ class KoniExtension {
130
110
  next: updateTimeAutoLock
131
111
  });
132
112
  }
133
-
134
- /// Clone from PolkadotJs
135
- accountsCreateExternal(_ref2) {
136
- let {
137
- address,
138
- genesisHash,
139
- name
140
- } = _ref2;
141
- _uiKeyring.keyring.addExternal(address, {
142
- genesisHash,
143
- name
144
- });
145
- return true;
146
- }
147
- accountsCreateHardware(_ref3) {
148
- let {
149
- accountIndex,
150
- address,
151
- addressOffset,
152
- genesisHash,
153
- hardwareType,
154
- name
155
- } = _ref3;
156
- _uiKeyring.keyring.addHardware(address, hardwareType, {
157
- accountIndex,
158
- addressOffset,
159
- genesisHash,
160
- name
161
- });
162
- return true;
163
- }
164
- accountsCreateSuri(_ref4) {
165
- let {
166
- genesisHash,
167
- name,
168
- suri,
169
- type
170
- } = _ref4;
171
- _uiKeyring.keyring.addUri(getSuri(suri, type), {
172
- genesisHash,
173
- name
174
- }, type);
175
- return true;
113
+ accountsEdit(request) {
114
+ return this.#koniState.keyringService.context.accountsEdit(request);
176
115
  }
177
- accountsChangePassword(_ref5) {
178
- let {
179
- address,
180
- newPass,
181
- oldPass
182
- } = _ref5;
183
- const pair = _uiKeyring.keyring.getPair(address);
184
- (0, _util.assert)(pair, (0, _i18next.t)('Unable to find account'));
185
- try {
186
- if (!pair.isLocked) {
187
- pair.lock();
188
- }
189
- pair.decodePkcs8(oldPass);
190
- } catch (error) {
191
- throw new Error((0, _i18next.t)('Wrong password'));
192
- }
193
- _uiKeyring.keyring.encryptAccount(pair, newPass);
194
- return true;
116
+ tonGetAllTonWalletContractVersion(request) {
117
+ return this.#koniState.keyringService.context.tonGetAllTonWalletContractVersion(request);
195
118
  }
196
- accountsEdit(_ref6) {
197
- let {
198
- address,
199
- name
200
- } = _ref6;
201
- const pair = _uiKeyring.keyring.getPair(address);
202
- (0, _util.assert)(pair, (0, _i18next.t)('Unable to find account'));
203
- _uiKeyring.keyring.saveAccountMeta(pair, {
204
- ...pair.meta,
205
- name
206
- });
207
- return true;
119
+ tonAccountChangeWalletContractVersion(request) {
120
+ return this.#koniState.keyringService.context.tonAccountChangeWalletContractVersion(request);
208
121
  }
209
- accountsExport(_ref7) {
122
+ accountsExport(_ref) {
210
123
  let {
211
124
  address,
212
125
  password
213
- } = _ref7;
126
+ } = _ref;
214
127
  return {
215
128
  exportedJson: _uiKeyring.keyring.backupAccount(_uiKeyring.keyring.getPair(address), password)
216
129
  };
217
130
  }
218
- accountsShow(_ref8) {
219
- let {
220
- address,
221
- isShowing
222
- } = _ref8;
223
- const pair = _uiKeyring.keyring.getPair(address);
224
- (0, _util.assert)(pair, (0, _i18next.t)('Unable to find account'));
225
- _uiKeyring.keyring.saveAccountMeta(pair, {
226
- ...pair.meta,
227
- isHidden: !isShowing
228
- });
229
- return true;
230
- }
231
- accountsValidate(_ref9) {
232
- let {
233
- address,
234
- password
235
- } = _ref9;
236
- try {
237
- _uiKeyring.keyring.backupAccount(_uiKeyring.keyring.getPair(address), password);
238
- return true;
239
- } catch (e) {
240
- return false;
241
- }
242
- }
243
-
244
- // FIXME This looks very much like what we have in Tabs
245
- accountsSubscribe(id, port) {
246
- const cb = (0, _subscriptions.createSubscription)(id, port);
247
- const accountSubject = this.#koniState.keyringService.accountSubject;
248
- const subscription = accountSubject.subscribe(accounts => cb(transformAccounts(accounts)));
249
- port.onDisconnect.addListener(() => {
250
- this.cancelSubscription(id);
251
- subscription.unsubscribe();
252
- });
253
- return true;
254
- }
255
- metadataApprove(_ref10) {
131
+ metadataApprove(_ref2) {
256
132
  let {
257
133
  id
258
- } = _ref10;
134
+ } = _ref2;
259
135
  const queued = this.#koniState.getMetaRequest(id);
260
136
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
261
137
  const {
@@ -272,10 +148,10 @@ class KoniExtension {
272
148
  metadataList() {
273
149
  return this.#koniState.knownMetadata;
274
150
  }
275
- metadataReject(_ref11) {
151
+ metadataReject(_ref3) {
276
152
  let {
277
153
  id
278
- } = _ref11;
154
+ } = _ref3;
279
155
  const queued = this.#koniState.getMetaRequest(id);
280
156
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
281
157
  const {
@@ -293,93 +169,14 @@ class KoniExtension {
293
169
  });
294
170
  return this.#koniState.metaSubject.value;
295
171
  }
296
- jsonRestore(_ref12) {
297
- let {
298
- file,
299
- password
300
- } = _ref12;
301
- try {
302
- _uiKeyring.keyring.restoreAccount(file, password, true);
303
- } catch (error) {
304
- throw new Error(error.message);
305
- }
306
- }
307
- batchRestore(_ref13) {
308
- let {
309
- file,
310
- password
311
- } = _ref13;
312
- try {
313
- _uiKeyring.keyring.restoreAccounts(file, password);
314
- } catch (error) {
315
- throw new Error(error.message);
316
- }
317
- }
318
- jsonGetAccountInfo(json) {
319
- try {
320
- const {
321
- address,
322
- meta: {
323
- genesisHash,
324
- name
325
- },
326
- type
327
- } = _uiKeyring.keyring.createFromJson(json);
328
- return {
329
- address,
330
- genesisHash,
331
- name,
332
- type
333
- };
334
- } catch (e) {
335
- console.error(e);
336
- throw new Error(e.message);
337
- }
338
- }
339
- seedCreate(_ref14) {
340
- let {
341
- length = SEED_DEFAULT_LENGTH,
342
- seed: _seed,
343
- type
344
- } = _ref14;
345
- const seed = _seed || (0, _utilCrypto.mnemonicGenerate)(length);
346
- return {
347
- address: _uiKeyring.keyring.createFromUri(getSuri(seed, type), {}, type).address,
348
- seed
349
- };
350
- }
351
- seedValidate(_ref15) {
352
- let {
353
- suri,
354
- type
355
- } = _ref15;
356
- const {
357
- phrase
358
- } = (0, _utilCrypto.keyExtractSuri)(suri);
359
- if ((0, _util.isHex)(phrase)) {
360
- (0, _util.assert)((0, _util.isHex)(phrase, 256), (0, _i18next.t)('Invalid seed phrase. Please try again.'));
361
- } else {
362
- // sadly isHex detects as string, so we need a cast here
363
- (0, _util.assert)(SEED_LENGTHS.includes(phrase.split(' ').length), (0, _i18next.t)('Seed phrase needs to contain {{x}} words', {
364
- replace: {
365
- x: SEED_LENGTHS.join(', ')
366
- }
367
- }));
368
- (0, _util.assert)((0, _utilCrypto.mnemonicValidate)(phrase), (0, _i18next.t)('Invalid seed phrase. Please try again.'));
369
- }
370
- return {
371
- address: _uiKeyring.keyring.createFromUri(getSuri(suri, type), {}, type).address,
372
- suri
373
- };
374
- }
375
172
 
376
173
  // TODO: move to request service
377
- signingApproveSignature(_ref16) {
174
+ signingApproveSignature(_ref4) {
378
175
  let {
379
176
  id,
380
177
  signature,
381
178
  signedTransaction
382
- } = _ref16;
179
+ } = _ref4;
383
180
  const queued = this.#koniState.getSignRequest(id);
384
181
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
385
182
  const {
@@ -394,16 +191,16 @@ class KoniExtension {
394
191
  }
395
192
 
396
193
  // TODO: move to request service
397
- signingCancel(_ref17) {
194
+ signingCancel(_ref5) {
398
195
  let {
399
196
  id
400
- } = _ref17;
197
+ } = _ref5;
401
198
  const queued = this.#koniState.getSignRequest(id);
402
199
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
403
200
  const {
404
201
  reject
405
202
  } = queued;
406
- reject(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.USER_REJECT_REQUEST));
203
+ reject(new _TransactionError.TransactionError(_types2.BasicTxErrorType.USER_REJECT_REQUEST));
407
204
  return true;
408
205
  }
409
206
 
@@ -417,12 +214,12 @@ class KoniExtension {
417
214
  });
418
215
  return this.#koniState.signSubject.value;
419
216
  }
420
- windowOpen(_ref18) {
217
+ windowOpen(_ref6) {
421
218
  let {
422
219
  allowedPath: path,
423
220
  params,
424
221
  subPath
425
- } = _ref18;
222
+ } = _ref6;
426
223
  let paramString = '';
427
224
  if (params) {
428
225
  paramString += '?';
@@ -444,52 +241,6 @@ class KoniExtension {
444
241
  }));
445
242
  return true;
446
243
  }
447
- derive(parentAddress, suri, password, metadata) {
448
- const parentPair = _uiKeyring.keyring.getPair(parentAddress);
449
- try {
450
- parentPair.decodePkcs8(password);
451
- } catch (e) {
452
- throw new Error((0, _i18next.t)('Wrong password'));
453
- }
454
- try {
455
- return parentPair.derive(suri, metadata);
456
- } catch (err) {
457
- throw new Error((0, _i18next.t)('"{{suri}}" is not a valid derivation path', {
458
- replace: {
459
- suri
460
- }
461
- }));
462
- }
463
- }
464
- derivationValidate(_ref19) {
465
- let {
466
- parentAddress,
467
- parentPassword,
468
- suri
469
- } = _ref19;
470
- const childPair = this.derive(parentAddress, suri, parentPassword, {});
471
- return {
472
- address: childPair.address,
473
- suri
474
- };
475
- }
476
- derivationCreate(_ref20) {
477
- let {
478
- genesisHash,
479
- name,
480
- parentAddress,
481
- parentPassword,
482
- suri
483
- } = _ref20;
484
- const childPair = this.derive(parentAddress, suri, parentPassword, {
485
- genesisHash,
486
- name,
487
- parentAddress,
488
- suri
489
- });
490
- _uiKeyring.keyring.addPair(childPair, true);
491
- return true;
492
- }
493
244
 
494
245
  ///
495
246
 
@@ -499,79 +250,103 @@ class KoniExtension {
499
250
  createUnsubscriptionHandle(id, unsubscribe) {
500
251
  this.#koniState.createUnsubscriptionHandle(id, unsubscribe);
501
252
  }
502
- decodeAddress = (key, ignoreChecksum, ss58Format) => {
503
- return _uiKeyring.keyring.decodeAddress(key, ignoreChecksum, ss58Format);
504
- };
505
- encodeAddress = (key, ss58Format) => {
506
- return _uiKeyring.keyring.encodeAddress(key, ss58Format);
507
- };
508
- accountExportPrivateKey(_ref21) {
509
- let {
510
- address,
511
- password
512
- } = _ref21;
513
- return this.#koniState.accountExportPrivateKey({
514
- address,
515
- password
516
- });
253
+ accountExportPrivateKey(request) {
254
+ return this.#koniState.accountExportPrivateKey(request);
517
255
  }
518
256
  checkPublicAndSecretKey(request) {
519
257
  return this.#koniState.checkPublicAndSecretKey(request);
520
258
  }
259
+ checkNameExists(request) {
260
+ return this.#koniState.keyringService.context.checkNameExists(request);
261
+ }
521
262
  async accountsGetAllWithCurrentAddress(id, port) {
522
263
  const cb = (0, _subscriptions.createSubscription)(id, port);
523
264
  const keyringService = this.#koniState.keyringService;
524
265
  await this.#koniState.eventService.waitAccountReady;
525
266
  await this.#koniState.eventService.waitInjectReady;
526
- const currentAccount = keyringService.currentAccount;
527
- const transformedAccounts = transformAccounts(keyringService.accounts);
267
+ const currentAccount = keyringService.context.currentAccount;
268
+ const accounts = keyringService.context.accounts;
269
+ const transformedAccounts = Object.values(accounts);
528
270
  const responseData = {
529
- accounts: transformedAccounts !== null && transformedAccounts !== void 0 && transformedAccounts.length ? [{
530
- ...ACCOUNT_ALL_JSON
531
- }, ...transformedAccounts] : [],
532
- currentAddress: currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.address,
533
- currentGenesisHash: currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.currentGenesisHash
271
+ accounts: transformedAccounts !== null && transformedAccounts !== void 0 && transformedAccounts.length ? [(0, _utils5.combineAllAccountProxy)(transformedAccounts), ...transformedAccounts] : [],
272
+ currentAccountProxy: currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.proxyId
534
273
  };
535
- const subscriptionAccounts = keyringService.accountSubject.subscribe(storedAccounts => {
536
- const transformedAccounts = transformAccounts(storedAccounts);
537
- responseData.accounts = transformedAccounts !== null && transformedAccounts !== void 0 && transformedAccounts.length ? [{
538
- ...ACCOUNT_ALL_JSON
539
- }, ...transformedAccounts] : [];
540
- cb(responseData);
541
- });
542
- const subscriptionCurrentAccount = keyringService.currentAccountSubject.subscribe(currentAccountData => {
543
- responseData.currentAddress = currentAccountData.address;
544
- responseData.currentGenesisHash = currentAccountData.currentGenesisHash;
274
+ const accountProxyMapObservable = keyringService.context.observable.accounts;
275
+ const currentAccountInfoObservable = keyringService.context.observable.currentAccount;
276
+ const subscriptionAccountGroups = (0, _rxjs.combineLatest)({
277
+ accountProxies: accountProxyMapObservable,
278
+ currentAccount: currentAccountInfoObservable
279
+ }).subscribe(_ref7 => {
280
+ let {
281
+ accountProxies,
282
+ currentAccount
283
+ } = _ref7;
284
+ const transformedAccounts = Object.values(accountProxies);
285
+ responseData.accounts = transformedAccounts !== null && transformedAccounts !== void 0 && transformedAccounts.length ? [(0, _utils5.combineAllAccountProxy)(transformedAccounts), ...transformedAccounts] : [];
286
+ responseData.currentAccountProxy = currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.proxyId;
287
+ console.debug('subscriptionAccountGroups', responseData);
545
288
  cb(responseData);
546
289
  });
547
290
  this.createUnsubscriptionHandle(id, () => {
548
- subscriptionAccounts.unsubscribe();
549
- subscriptionCurrentAccount.unsubscribe();
291
+ subscriptionAccountGroups.unsubscribe();
550
292
  });
551
293
  port.onDisconnect.addListener(() => {
552
294
  this.cancelSubscription(id);
553
295
  });
554
296
  return responseData;
555
297
  }
556
- accountsGetAll(id, port) {
298
+ async subscribeInputAddressData(request, id, port) {
299
+ const {
300
+ chain,
301
+ data
302
+ } = request;
557
303
  const cb = (0, _subscriptions.createSubscription)(id, port);
558
- const subscription = _uiKeyring.keyring.keyringOption.optionsSubject.subscribe(options => {
559
- const optionsInputAddress = {
560
- options
304
+ const combineFunction = async (chainInfoMap, accountProxyMap, _contacts) => {
305
+ const accountProxies = Object.values(accountProxyMap);
306
+ const contacts = (0, _utils5.transformAddresses)(_contacts);
307
+ const chainInfo = chainInfoMap[chain];
308
+ const substrateApi = this.#koniState.chainService.getSubstrateApi(chain);
309
+ const rs = await (0, _utils5._analyzeAddress)(data, accountProxies, contacts, chainInfo, substrateApi);
310
+ return {
311
+ id,
312
+ ...rs
561
313
  };
562
- cb(optionsInputAddress);
314
+ };
315
+ const accountObservable = this.#koniState.keyringService.context.observable.accounts;
316
+ const contactObservable = this.#koniState.keyringService.context.observable.contacts;
317
+ const chainInfoMapObservable = this.#koniState.chainService.subscribeChainInfoMap().asObservable();
318
+ const subscription = (0, _rxjs.combineLatest)({
319
+ chainInfoMap: chainInfoMapObservable,
320
+ accountProxies: accountObservable,
321
+ contacts: contactObservable
322
+ }).subscribe(_ref8 => {
323
+ let {
324
+ accountProxies,
325
+ chainInfoMap,
326
+ contacts
327
+ } = _ref8;
328
+ combineFunction(chainInfoMap, accountProxies, contacts).then(rs => cb(rs)).catch(console.error);
329
+ });
330
+ this.createUnsubscriptionHandle(id, () => {
331
+ subscription.unsubscribe();
563
332
  });
564
- this.createUnsubscriptionHandle(id, subscription.unsubscribe);
565
333
  port.onDisconnect.addListener(() => {
566
334
  this.cancelSubscription(id);
567
335
  });
568
- return id;
336
+ const accountProxyMap = this.#koniState.keyringService.context.value.accounts;
337
+ const contacts = this.#koniState.keyringService.context.value.contacts;
338
+ const chainInfoMap = this.#koniState.chainService.getChainInfoMap();
339
+ return combineFunction(chainInfoMap, accountProxyMap, contacts);
569
340
  }
341
+
342
+ /**
343
+ * @todo: move to keyring context
344
+ * */
570
345
  subscribeAddresses(id, port) {
571
346
  const _cb = (0, _subscriptions.createSubscription)(id, port);
572
347
  let old = '';
573
- const subscription = this.#koniState.keyringService.addressesSubject.subscribe(subjectInfo => {
574
- const addresses = (0, _utils4.convertSubjectInfoToAddresses)(subjectInfo);
348
+ const subscription = this.#koniState.keyringService.context.observable.contacts.subscribe(subjectInfo => {
349
+ const addresses = (0, _utils5.transformAddresses)(subjectInfo);
575
350
  const _new = JSON.stringify(addresses);
576
351
  if (old !== _new) {
577
352
  _cb({
@@ -580,22 +355,28 @@ class KoniExtension {
580
355
  old = _new;
581
356
  }
582
357
  });
583
- this.createUnsubscriptionHandle(id, subscription.unsubscribe);
358
+ this.createUnsubscriptionHandle(id, () => {
359
+ subscription.unsubscribe();
360
+ });
584
361
  port.onDisconnect.addListener(() => {
585
362
  this.cancelSubscription(id);
586
363
  });
587
- const subjectInfo = this.#koniState.keyringService.addresses;
364
+ const subjectInfo = this.#koniState.keyringService.context.contacts;
588
365
  return {
589
- addresses: (0, _utils4.convertSubjectInfoToAddresses)(subjectInfo)
366
+ addresses: (0, _utils5.transformAccounts)(subjectInfo)
590
367
  };
591
368
  }
592
- saveRecentAccount(_ref22) {
369
+
370
+ /**
371
+ * @todo: move to keyring context
372
+ * */
373
+ saveRecentAccount(_ref9) {
593
374
  let {
594
375
  accountId,
595
376
  chain
596
- } = _ref22;
597
- if ((0, _utilCrypto.isAddress)(accountId)) {
598
- const address = (0, _utils4.reformatAddress)(accountId);
377
+ } = _ref9;
378
+ if ((0, _keyring.isAddress)(accountId)) {
379
+ const address = (0, _utils5.reformatAddress)(accountId);
599
380
  const account = _uiKeyring.keyring.getAccount(address);
600
381
  const contact = _uiKeyring.keyring.getAddress(address, 'address');
601
382
  if (account) {
@@ -618,7 +399,7 @@ class KoniExtension {
618
399
  }
619
400
  }
620
401
  metadata.recentChainSlugs = recentChainSlugs;
621
- const result = _uiKeyring.keyring.addresses.add(new _stores.AccountsStore(), address, {
402
+ const result = _uiKeyring.keyring.addresses.add(new _stores.AccountsStore(), address, address, {
622
403
  address: address,
623
404
  meta: metadata
624
405
  });
@@ -631,25 +412,33 @@ class KoniExtension {
631
412
  throw Error((0, _i18next.t)('This is not an address'));
632
413
  }
633
414
  }
634
- editContactAccount(_ref23) {
415
+
416
+ /**
417
+ * @todo: move to keyring context
418
+ * */
419
+ editContactAccount(_ref10) {
635
420
  let {
636
421
  address,
637
422
  meta
638
- } = _ref23;
639
- if ((0, _utilCrypto.isAddress)(address)) {
640
- const _address = (0, _utils4.reformatAddress)(address);
423
+ } = _ref10;
424
+ if ((0, _keyring.isAddress)(address)) {
425
+ const _address = (0, _utils5.reformatAddress)(address);
641
426
  _uiKeyring.keyring.saveAddress(_address, meta);
642
427
  return true;
643
428
  } else {
644
429
  throw Error((0, _i18next.t)('This is not an address'));
645
430
  }
646
431
  }
647
- deleteContactAccount(_ref24) {
432
+
433
+ /**
434
+ * @todo: move to keyring context
435
+ * */
436
+ deleteContactAccount(_ref11) {
648
437
  let {
649
438
  address
650
- } = _ref24;
651
- if ((0, _utilCrypto.isAddress)(address)) {
652
- const _address = (0, _utils4.reformatAddress)(address);
439
+ } = _ref11;
440
+ if ((0, _keyring.isAddress)(address)) {
441
+ const _address = (0, _utils5.reformatAddress)(address);
653
442
  _uiKeyring.keyring.forgetAddress(_address);
654
443
  return true;
655
444
  } else {
@@ -660,7 +449,7 @@ class KoniExtension {
660
449
  const keyringService = this.#koniState.keyringService;
661
450
  return new Promise((resolve, reject) => {
662
451
  this.#koniState.getAuthorize(rs => {
663
- const addressList = Object.keys(keyringService.accounts);
452
+ const addressList = Object.keys(keyringService.context.pairs);
664
453
  const urlList = Object.keys(rs);
665
454
  if (Object.keys(rs[urlList[0]].isAllowedMap).toString() !== addressList.toString()) {
666
455
  urlList.forEach(url => {
@@ -696,11 +485,11 @@ class KoniExtension {
696
485
  list: authList
697
486
  };
698
487
  }
699
- authorizeApproveV2(_ref25) {
488
+ authorizeApproveV2(_ref12) {
700
489
  let {
701
490
  accounts,
702
491
  id
703
- } = _ref25;
492
+ } = _ref12;
704
493
  const queued = this.#koniState.getAuthRequestV2(id);
705
494
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
706
495
  const {
@@ -712,10 +501,10 @@ class KoniExtension {
712
501
  });
713
502
  return true;
714
503
  }
715
- authorizeRejectV2(_ref26) {
504
+ authorizeRejectV2(_ref13) {
716
505
  let {
717
506
  id
718
- } = _ref26;
507
+ } = _ref13;
719
508
  const queued = this.#koniState.getAuthRequestV2(id);
720
509
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
721
510
  const {
@@ -724,10 +513,10 @@ class KoniExtension {
724
513
  reject(new Error('Rejected'));
725
514
  return true;
726
515
  }
727
- authorizeCancelV2(_ref27) {
516
+ authorizeCancelV2(_ref14) {
728
517
  let {
729
518
  id
730
- } = _ref27;
519
+ } = _ref14;
731
520
  const queued = this.#koniState.getAuthRequestV2(id);
732
521
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
733
522
  const {
@@ -776,37 +565,61 @@ class KoniExtension {
776
565
  });
777
566
  return true;
778
567
  }
779
- getAccounts() {
780
- const storedAccounts = this.#koniState.keyringService.accounts;
781
- const transformedAccounts = transformAccounts(storedAccounts);
782
- return transformedAccounts.map(a => a.address);
568
+ getPairs() {
569
+ const storedAccounts = this.#koniState.keyringService.context.pairs;
570
+ return (0, _utils5.transformAccounts)(storedAccounts);
783
571
  }
784
- isAddressValidWithAuthType(address, accountAuthType) {
785
- if (accountAuthType === 'substrate') {
786
- return !(0, _utilCrypto.isEthereumAddress)(address);
787
- } else if (accountAuthType === 'evm') {
788
- return (0, _utilCrypto.isEthereumAddress)(address);
789
- }
790
- return true;
572
+ isAddressValidWithAuthType(address, accountAuthTypes) {
573
+ const type = (0, _keyring.getKeypairTypeByAddress)(address);
574
+ const validTypes = {
575
+ evm: _types3.EthereumKeypairTypes,
576
+ substrate: _types3.SubstrateKeypairTypes,
577
+ ton: _types3.TonKeypairTypes
578
+ };
579
+ return !!accountAuthTypes && accountAuthTypes.some(authType => {
580
+ var _validTypes$authType;
581
+ return (_validTypes$authType = validTypes[authType]) === null || _validTypes$authType === void 0 ? void 0 : _validTypes$authType.includes(type);
582
+ });
791
583
  }
792
- filterAccountsByAccountAuthType(accounts, accountAuthType) {
793
- if (accountAuthType === 'substrate') {
794
- return accounts.filter(address => !(0, _utilCrypto.isEthereumAddress)(address));
795
- } else if (accountAuthType === 'evm') {
796
- return accounts.filter(address => (0, _utilCrypto.isEthereumAddress)(address));
797
- } else {
798
- return accounts;
584
+ filterAccountsByAccountAuthType(accounts, accountAuthTypes) {
585
+ if (!accountAuthTypes) {
586
+ return [];
799
587
  }
588
+ return accountAuthTypes.reduce((list, accountAuthType) => {
589
+ if (accountAuthType === 'evm') {
590
+ accounts.forEach(_ref15 => {
591
+ let {
592
+ address
593
+ } = _ref15;
594
+ return (0, _utilCrypto.isEthereumAddress)(address) && list.push(address);
595
+ });
596
+ } else if (accountAuthType === 'substrate') {
597
+ accounts.forEach(_ref16 => {
598
+ let {
599
+ address
600
+ } = _ref16;
601
+ return (0, _keyring.isSubstrateAddress)(address) && list.push(address);
602
+ });
603
+ } else if (accountAuthType === 'ton') {
604
+ accounts.forEach(_ref17 => {
605
+ let {
606
+ address
607
+ } = _ref17;
608
+ return (0, _keyring.isTonAddress)(address) && list.push(address);
609
+ });
610
+ }
611
+ return list;
612
+ }, []);
800
613
  }
801
614
  _changeAuthorizationAll(connectValue, callBack) {
802
615
  this.#koniState.getAuthorize(value => {
803
616
  (0, _util.assert)(value, 'The source is not known');
804
- const accounts = this.getAccounts();
617
+ const pairs = this.getPairs();
805
618
  Object.keys(value).forEach(url => {
806
619
  if (!value[url].isAllowed) {
807
620
  return;
808
621
  }
809
- const targetAccounts = this.filterAccountsByAccountAuthType(accounts, value[url].accountAuthType);
622
+ const targetAccounts = this.filterAccountsByAccountAuthType(pairs, value[url].accountAuthTypes);
810
623
  targetAccounts.forEach(address => {
811
624
  value[url].isAllowedMap[address] = connectValue;
812
625
  });
@@ -829,8 +642,8 @@ class KoniExtension {
829
642
  _changeAuthorization(url, connectValue, callBack) {
830
643
  this.#koniState.getAuthorize(value => {
831
644
  (0, _util.assert)(value[url], 'The source is not known');
832
- const accounts = this.getAccounts();
833
- const targetAccounts = this.filterAccountsByAccountAuthType(accounts, value[url].accountAuthType);
645
+ const pairs = this.getPairs();
646
+ const targetAccounts = this.filterAccountsByAccountAuthType(pairs, value[url].accountAuthTypes);
834
647
  targetAccounts.forEach(address => {
835
648
  value[url].isAllowedMap[address] = connectValue;
836
649
  });
@@ -865,7 +678,7 @@ class KoniExtension {
865
678
  _changeAuthorizationPerAcc(address, connectValue, url, callBack) {
866
679
  this.#koniState.getAuthorize(value => {
867
680
  (0, _util.assert)(value, 'The source is not known');
868
- if (this.isAddressValidWithAuthType(address, value[url].accountAuthType)) {
681
+ if (this.isAddressValidWithAuthType(address, value[url].accountAuthTypes)) {
869
682
  value[url].isAllowedMap[address] = connectValue;
870
683
  this.#koniState.setAuthorize(value, () => {
871
684
  callBack && callBack(value);
@@ -948,10 +761,10 @@ class KoniExtension {
948
761
  this.#koniState.updateSetting('theme', data);
949
762
  return true;
950
763
  }
951
- setCamera(_ref28) {
764
+ setCamera(_ref18) {
952
765
  let {
953
766
  camera
954
- } = _ref28;
767
+ } = _ref18;
955
768
  this.#koniState.updateSetting('camera', camera);
956
769
  return true;
957
770
  }
@@ -959,17 +772,17 @@ class KoniExtension {
959
772
  this.#koniState.updateSetting('browserConfirmationType', data);
960
773
  return true;
961
774
  }
962
- setAutoLockTime(_ref29) {
775
+ setAutoLockTime(_ref19) {
963
776
  let {
964
777
  autoLockTime
965
- } = _ref29;
778
+ } = _ref19;
966
779
  this.#koniState.updateSetting('timeAutoLock', autoLockTime);
967
780
  return true;
968
781
  }
969
- setUnlockType(_ref30) {
782
+ setUnlockType(_ref20) {
970
783
  let {
971
784
  unlockType
972
- } = _ref30;
785
+ } = _ref20;
973
786
  this.#koniState.updateSetting('unlockType', unlockType);
974
787
  return true;
975
788
  }
@@ -986,31 +799,31 @@ class KoniExtension {
986
799
  });
987
800
  return await this.getSettings();
988
801
  }
989
- setEnableChainPatrol(_ref31) {
802
+ setEnableChainPatrol(_ref21) {
990
803
  let {
991
804
  enable
992
- } = _ref31;
805
+ } = _ref21;
993
806
  this.#koniState.updateSetting('enableChainPatrol', enable);
994
807
  return true;
995
808
  }
996
- setShowZeroBalance(_ref32) {
809
+ setShowZeroBalance(_ref22) {
997
810
  let {
998
811
  show
999
- } = _ref32;
812
+ } = _ref22;
1000
813
  this.#koniState.updateSetting('isShowZeroBalance', show);
1001
814
  return true;
1002
815
  }
1003
- setLanguage(_ref33) {
816
+ setLanguage(_ref23) {
1004
817
  let {
1005
818
  language
1006
- } = _ref33;
819
+ } = _ref23;
1007
820
  this.#koniState.updateSetting('language', language);
1008
821
  return true;
1009
822
  }
1010
- setShowBalance(_ref34) {
823
+ setShowBalance(_ref24) {
1011
824
  let {
1012
825
  enable
1013
- } = _ref34;
826
+ } = _ref24;
1014
827
  this.#koniState.updateSetting('isShowBalance', enable);
1015
828
  return true;
1016
829
  }
@@ -1027,39 +840,10 @@ class KoniExtension {
1027
840
  });
1028
841
  return await this.#koniState.getAuthList();
1029
842
  }
1030
- _saveCurrentAccountAddress(address, callback) {
1031
- let accountInfo = this.#koniState.keyringService.currentAccount;
1032
- if (!accountInfo) {
1033
- accountInfo = {
1034
- address,
1035
- currentGenesisHash: _constants.ALL_GENESIS_HASH,
1036
- allGenesisHash: _constants.ALL_GENESIS_HASH || undefined
1037
- };
1038
- } else {
1039
- accountInfo.address = address;
1040
- if (address !== _constants.ALL_ACCOUNT_KEY) {
1041
- try {
1042
- const currentKeyPair = _uiKeyring.keyring.getPair(address);
1043
- accountInfo.currentGenesisHash = (currentKeyPair === null || currentKeyPair === void 0 ? void 0 : currentKeyPair.meta.genesisHash) || _constants.ALL_GENESIS_HASH;
1044
- } catch {
1045
- accountInfo.currentGenesisHash = _constants.ALL_GENESIS_HASH;
1046
- }
1047
- } else {
1048
- accountInfo.currentGenesisHash = accountInfo.allGenesisHash || _constants.ALL_GENESIS_HASH;
1049
- }
1050
- }
1051
- this.#koniState.setCurrentAccount(accountInfo, () => {
1052
- callback && callback(accountInfo);
1053
- });
1054
- }
1055
- updateCurrentAccountAddress(address) {
1056
- this._saveCurrentAccountAddress(address);
1057
- return true;
1058
- }
1059
- async saveCurrentAccountAddress(data) {
843
+ async saveCurrentAccountProxy(data) {
1060
844
  return new Promise(resolve => {
1061
- this._saveCurrentAccountAddress(data.address, currentInfo => {
1062
- resolve(currentInfo);
845
+ this.#koniState.keyringService.context.saveCurrentAccountProxyId(data.address, () => {
846
+ resolve(true);
1063
847
  });
1064
848
  });
1065
849
  }
@@ -1088,10 +872,10 @@ class KoniExtension {
1088
872
  async getPrice() {
1089
873
  return this.#koniState.priceService.getPrice();
1090
874
  }
1091
- async setPriceCurrency(_ref35) {
875
+ async setPriceCurrency(_ref25) {
1092
876
  let {
1093
877
  currency
1094
- } = _ref35;
878
+ } = _ref25;
1095
879
  return await this.#koniState.priceService.setPriceCurrency(currency);
1096
880
  }
1097
881
  subscribePrice(id, port) {
@@ -1143,138 +927,24 @@ class KoniExtension {
1143
927
  });
1144
928
  return this.getCrowdloan(true);
1145
929
  }
1146
- validatePassword(json, password) {
1147
- const cryptoType = Array.isArray(json.encoding.content) ? json.encoding.content[1] : 'ed25519';
1148
- const encType = Array.isArray(json.encoding.type) ? json.encoding.type : [json.encoding.type];
1149
- const pair = (0, _keyring.createPair)({
1150
- toSS58: this.encodeAddress,
1151
- type: cryptoType
1152
- }, {
1153
- publicKey: this.decodeAddress(json.address, true)
1154
- }, json.meta, (0, _util.isHex)(json.encoded) ? (0, _util.hexToU8a)(json.encoded) : (0, _utilCrypto.base64Decode)(json.encoded), encType);
1155
-
1156
- // unlock then lock (locking cleans secretKey, so needs to be last)
1157
- try {
1158
- pair.decodePkcs8(password);
1159
- pair.lock();
1160
- return true;
1161
- } catch (e) {
1162
- console.error(e);
1163
- return false;
1164
- }
1165
- }
1166
- validatedAccountsPassword(json, password) {
1167
- try {
1168
- (0, _util.u8aToString)((0, _utilCrypto.jsonDecrypt)(json, password));
1169
- return true;
1170
- } catch (e) {
1171
- return false;
1172
- }
1173
- }
1174
- _addAddressToAuthList(address, isAllowed) {
1175
- this.#koniState.getAuthorize(value => {
1176
- if (value && Object.keys(value).length) {
1177
- Object.keys(value).forEach(url => {
1178
- if (this.isAddressValidWithAuthType(address, value[url].accountAuthType)) {
1179
- value[url].isAllowedMap[address] = isAllowed;
1180
- }
1181
- });
1182
- this.#koniState.setAuthorize(value);
1183
- }
1184
- });
1185
- }
1186
- _addAddressesToAuthList(addresses, isAllowed) {
1187
- this.#koniState.getAuthorize(value => {
1188
- if (value && Object.keys(value).length) {
1189
- Object.keys(value).forEach(url => {
1190
- addresses.forEach(address => {
1191
- if (this.isAddressValidWithAuthType(address, value[url].accountAuthType)) {
1192
- value[url].isAllowedMap[address] = isAllowed;
1193
- }
1194
- });
1195
- }); /**/
1196
-
1197
- this.#koniState.setAuthorize(value);
1198
- }
1199
- });
1200
- }
1201
- async accountsCreateSuriV2(_ref36) {
1202
- let {
1203
- genesisHash,
1204
- isAllowed,
1205
- name,
1206
- password,
1207
- suri: _suri,
1208
- types
1209
- } = _ref36;
1210
- const addressDict = {};
1211
- let changedAccount = false;
1212
- const hasMasterPassword = _uiKeyring.keyring.keyring.hasMasterPassword;
1213
- if (!hasMasterPassword) {
1214
- if (!password) {
1215
- throw Error((0, _i18next.t)('The password of each account is needed to set up master password'));
1216
- } else {
1217
- _uiKeyring.keyring.changeMasterPassword(password);
1218
- this.#koniState.updateKeyringState();
1219
- }
1220
- }
1221
- const currentAccount = this.#koniState.keyringService.currentAccount;
1222
- const allGenesisHash = (currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.allGenesisHash) || undefined;
1223
- types === null || types === void 0 ? void 0 : types.forEach(type => {
1224
- const suri = getSuri(_suri, type);
1225
- const address = _uiKeyring.keyring.createFromUri(suri, {}, type).address;
1226
- addressDict[type] = address;
1227
- const newAccountName = type === 'ethereum' ? `${name} - EVM` : name;
1228
- _uiKeyring.keyring.addUri(suri, {
1229
- genesisHash,
1230
- name: newAccountName
1231
- }, type);
1232
- this._addAddressToAuthList(address, isAllowed);
1233
- if (!changedAccount) {
1234
- if (types.length === 1) {
1235
- this.#koniState.setCurrentAccount({
1236
- address,
1237
- currentGenesisHash: genesisHash || null,
1238
- allGenesisHash
1239
- });
1240
- } else {
1241
- this.#koniState.setCurrentAccount({
1242
- address: _constants.ALL_ACCOUNT_KEY,
1243
- currentGenesisHash: allGenesisHash || null,
1244
- allGenesisHash
1245
- }, undefined, true);
1246
- }
1247
- changedAccount = true;
1248
- }
1249
- });
1250
- await new Promise(resolve => {
1251
- this.#koniState.addAccountRef(Object.values(addressDict), () => {
1252
- resolve();
1253
- });
1254
- });
930
+ accountsCreateSuriV2(request) {
931
+ const addressDict = this.#koniState.keyringService.context.accountsCreateSuriV2(request);
1255
932
  if (this.#alwaysLock) {
1256
933
  this.keyringLock();
1257
934
  }
1258
935
  return addressDict;
1259
936
  }
1260
- async accountsForgetOverride(_ref37) {
1261
- let {
1262
- address,
1263
- lockAfter
1264
- } = _ref37;
1265
- _uiKeyring.keyring.forgetAccount(address);
1266
- await new Promise(resolve => {
1267
- this.#koniState.removeAccountRef(address, () => {
1268
- resolve();
1269
- });
1270
- });
937
+ async accountsForgetOverride(request) {
938
+ const addresses = await this.#koniState.keyringService.context.accountProxyForget(request);
1271
939
 
1272
940
  // Remove from auth list
1273
941
  await new Promise(resolve => {
1274
942
  this.#koniState.getAuthorize(value => {
1275
943
  if (value && Object.keys(value).length) {
1276
944
  Object.keys(value).forEach(url => {
1277
- delete value[url].isAllowedMap[address];
945
+ for (const address of addresses) {
946
+ delete value[url].isAllowedMap[address];
947
+ }
1278
948
  });
1279
949
  this.#koniState.setAuthorize(value, resolve);
1280
950
  } else {
@@ -1282,251 +952,50 @@ class KoniExtension {
1282
952
  }
1283
953
  });
1284
954
  });
1285
-
1286
- // Set current account to all account
1287
- await new Promise(resolve => {
1288
- const currentAccountInfo = this.#koniState.keyringService.currentAccount;
1289
- this.#koniState.setCurrentAccount({
1290
- currentGenesisHash: (currentAccountInfo === null || currentAccountInfo === void 0 ? void 0 : currentAccountInfo.allGenesisHash) || null,
1291
- address: _constants.ALL_ACCOUNT_KEY
1292
- }, resolve);
1293
- });
1294
- await this.#koniState.disableMantaPay(address);
1295
- if (lockAfter) {
955
+ for (const address of addresses) {
956
+ await this.#koniState.disableMantaPay(address);
957
+ }
958
+ if (request.lockAfter) {
1296
959
  this.checkLockAfterMigrate();
1297
960
  }
1298
961
  return true;
1299
962
  }
1300
- seedCreateV2(_ref38) {
1301
- let {
1302
- length = SEED_DEFAULT_LENGTH,
1303
- seed: _seed,
1304
- types
1305
- } = _ref38;
1306
- const seed = _seed || (0, _utilCrypto.mnemonicGenerate)(length);
1307
- const rs = {
1308
- seed: seed,
1309
- addressMap: {}
1310
- };
1311
- types === null || types === void 0 ? void 0 : types.forEach(type => {
1312
- rs.addressMap[type] = _uiKeyring.keyring.createFromUri(getSuri(seed, type), {}, type).address;
1313
- });
1314
- return rs;
963
+ seedCreateV2(request) {
964
+ return this.#koniState.keyringService.context.mnemonicCreateV2(request);
1315
965
  }
1316
- seedValidateV2(_ref39) {
1317
- let {
1318
- suri,
1319
- types
1320
- } = _ref39;
1321
- const {
1322
- phrase
1323
- } = (0, _utilCrypto.keyExtractSuri)(suri);
1324
- if ((0, _util.isHex)(phrase)) {
1325
- (0, _util.assert)((0, _util.isHex)(phrase, 256), (0, _i18next.t)('Invalid seed phrase. Please try again.'));
1326
- } else {
1327
- // sadly isHex detects as string, so we need a cast here
1328
- (0, _util.assert)(SEED_LENGTHS.includes(phrase.split(' ').length), (0, _i18next.t)('Seed phrase needs to contain {{x}} words', {
1329
- replace: {
1330
- x: SEED_LENGTHS.join(', ')
1331
- }
1332
- }));
1333
- (0, _util.assert)((0, _utilCrypto.mnemonicValidate)(phrase), (0, _i18next.t)('Invalid seed phrase. Please try again.'));
1334
- }
1335
- const rs = {
1336
- seed: suri,
1337
- addressMap: {}
1338
- };
1339
- types && types.forEach(type => {
1340
- rs.addressMap[type] = _uiKeyring.keyring.createFromUri(getSuri(suri, type), {}, type).address;
1341
- });
1342
- return rs;
966
+ seedValidateV2(request) {
967
+ return this.#koniState.keyringService.context.mnemonicValidateV2(request);
1343
968
  }
1344
- _checkValidatePrivateKey(_ref40) {
1345
- let {
1346
- suri,
1347
- types
1348
- } = _ref40;
1349
- let autoAddPrefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1350
- const {
1351
- phrase
1352
- } = (0, _utilCrypto.keyExtractSuri)(suri);
1353
- const rs = {
1354
- autoAddPrefix: autoAddPrefix,
1355
- addressMap: {}
1356
- };
1357
- types && types.forEach(type => {
1358
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
1359
- rs.addressMap[type] = '';
1360
- });
1361
- if ((0, _util.isHex)(phrase) && (0, _util.isHex)(phrase, 256)) {
1362
- types && types.forEach(type => {
1363
- rs.addressMap[type] = _uiKeyring.keyring.createFromUri(getSuri(suri, type), {}, type).address;
1364
- });
1365
- } else {
1366
- rs.autoAddPrefix = false;
1367
- (0, _util.assert)(false, (0, _i18next.t)('Invalid private key. Please try again.'));
1368
- }
1369
- return rs;
969
+ privateKeyValidateV2(request) {
970
+ return this.#koniState.keyringService.context.privateKeyValidateV2(request);
1370
971
  }
1371
- metamaskPrivateKeyValidateV2(_ref41) {
1372
- let {
1373
- suri,
1374
- types
1375
- } = _ref41;
1376
- const isValidSuri = suri.startsWith('0x');
1377
- if (isValidSuri) {
1378
- return this._checkValidatePrivateKey({
1379
- suri,
1380
- types
1381
- });
1382
- } else {
1383
- return this._checkValidatePrivateKey({
1384
- suri: `0x${suri}`,
1385
- types
1386
- }, true);
1387
- }
1388
- }
1389
- deriveV2(parentAddress, suri, metadata) {
1390
- const parentPair = _uiKeyring.keyring.getPair(parentAddress);
1391
- if (parentPair.isLocked) {
1392
- _uiKeyring.keyring.unlockPair(parentPair.address);
1393
- }
1394
- try {
1395
- return parentPair.derive(suri, metadata);
1396
- } catch (err) {
1397
- throw new Error((0, _i18next.t)('"{{suri}}" is not a valid derivation path', {
1398
- replace: {
1399
- suri
1400
- }
1401
- }));
1402
- }
972
+
973
+ /* JSON */
974
+
975
+ parseInfoSingleJson(request) {
976
+ return this.#koniState.keyringService.context.parseInfoSingleJson(request);
1403
977
  }
1404
- derivationCreateV2(_ref42) {
1405
- let {
1406
- genesisHash,
1407
- isAllowed,
1408
- name,
1409
- parentAddress,
1410
- suri
1411
- } = _ref42;
1412
- const childPair = this.deriveV2(parentAddress, suri, {
1413
- genesisHash,
1414
- name,
1415
- parentAddress,
1416
- suri
1417
- });
1418
- const address = childPair.address;
1419
- this._saveCurrentAccountAddress(address, () => {
1420
- _uiKeyring.keyring.addPair(childPair, true);
1421
- this._addAddressToAuthList(address, isAllowed);
978
+ async jsonRestoreV2(request) {
979
+ return await this.#koniState.keyringService.context.jsonRestoreV2(request, () => {
980
+ if (this.#alwaysLock) {
981
+ this.keyringLock();
982
+ }
1422
983
  });
1423
- return true;
1424
984
  }
1425
- jsonRestoreV2(_ref43) {
1426
- let {
1427
- address,
1428
- file,
1429
- isAllowed,
1430
- password,
1431
- withMasterPassword
1432
- } = _ref43;
1433
- const isPasswordValidated = this.validatePassword(file, password);
1434
- const {
1435
- promise,
1436
- resolve
1437
- } = (0, _utils4.createPromiseHandler)();
1438
- if (isPasswordValidated) {
1439
- try {
1440
- this._saveCurrentAccountAddress(address, () => {
1441
- var _newAccount$meta, _newAccount$meta2;
1442
- const newAccount = _uiKeyring.keyring.restoreAccount(file, password, withMasterPassword);
1443
-
1444
- // genesisHash is not used in SubWallet => reset it to empty string
1445
- if ((_newAccount$meta = newAccount.meta) !== null && _newAccount$meta !== void 0 && _newAccount$meta.genesisHash && ((_newAccount$meta2 = newAccount.meta) === null || _newAccount$meta2 === void 0 ? void 0 : _newAccount$meta2.genesisHash) !== '') {
1446
- _uiKeyring.keyring.saveAccountMeta(newAccount, {
1447
- ...newAccount.meta,
1448
- genesisHash: ''
1449
- });
1450
- }
1451
- this._addAddressToAuthList(address, isAllowed);
1452
- resolve([address]);
1453
- });
1454
- if (this.#alwaysLock) {
1455
- this.keyringLock();
1456
- }
1457
- return promise;
1458
- } catch (error) {
1459
- throw new Error(error.message);
1460
- }
1461
- } else {
1462
- throw new Error((0, _i18next.t)('Wrong password'));
1463
- }
985
+ parseInfoMultiJson(request) {
986
+ return this.#koniState.keyringService.context.parseInfoMultiJson(request);
987
+ }
988
+ batchRestoreV2(request) {
989
+ return this.#koniState.keyringService.context.batchRestoreV2(request);
990
+ }
991
+ async batchExportV2(request) {
992
+ return this.#koniState.keyringService.context.batchExportV2(request);
1464
993
  }
1465
- batchRestoreV2(_ref44) {
1466
- let {
1467
- accountsInfo,
1468
- file,
1469
- isAllowed,
1470
- password
1471
- } = _ref44;
1472
- const addressList = accountsInfo.map(acc => acc.address);
1473
- const isPasswordValidated = this.validatedAccountsPassword(file, password);
1474
- const {
1475
- promise,
1476
- resolve
1477
- } = (0, _utils4.createPromiseHandler)();
1478
- if (isPasswordValidated) {
1479
- try {
1480
- this._saveCurrentAccountAddress(_constants.ALL_ACCOUNT_KEY, () => {
1481
- _uiKeyring.keyring.restoreAccounts(file, password);
1482
- this.#koniState.keyringService.removeNoneHardwareGenesisHash();
1483
- const successAddressList = addressList.reduce((addressList, address) => {
1484
- try {
1485
- const account = _uiKeyring.keyring.getPair(address);
1486
- if (account) {
1487
- addressList.push(address);
1488
- }
1489
- } catch (error) {
1490
- console.log(error);
1491
- }
1492
- return addressList;
1493
- }, []);
1494
- this._addAddressesToAuthList(successAddressList, isAllowed);
1495
- resolve(successAddressList);
1496
- });
1497
994
 
1498
- // if (this.#alwaysLock) {
1499
- // this.keyringLock();
1500
- // }
995
+ /* JSON */
1501
996
 
1502
- return promise;
1503
- } catch (error) {
1504
- throw new Error(error.message);
1505
- }
1506
- } else {
1507
- throw new Error((0, _i18next.t)('Wrong password'));
1508
- }
1509
- }
1510
- async batchExportV2(_ref45) {
1511
- let {
1512
- addresses,
1513
- password
1514
- } = _ref45;
1515
- try {
1516
- if (addresses && !addresses.length) {
1517
- throw new Error((0, _i18next.t)('No accounts found to export'));
1518
- }
1519
- return {
1520
- exportedJson: await _uiKeyring.keyring.backupAccounts(password, addresses)
1521
- };
1522
- } catch (e) {
1523
- const error = e;
1524
- if (error.message === 'Invalid master password') {
1525
- throw new Error((0, _i18next.t)('Wrong password'));
1526
- } else {
1527
- throw error;
1528
- }
1529
- }
997
+ exportAccountProxyMnemonic(request) {
998
+ return this.#koniState.keyringService.context.exportAccountProxyMnemonic(request);
1530
999
  }
1531
1000
  getNftCollection() {
1532
1001
  return this.#koniState.getNftCollection();
@@ -1603,7 +1072,7 @@ class KoniExtension {
1603
1072
  const addresses = _uiKeyring.keyring.getAccounts().map(a => a.address);
1604
1073
 
1605
1074
  // Re-filter
1606
- cb(histories.filter(item => addresses.some(address => (0, _utils4.isSameAddress)(item.address, address))));
1075
+ cb(histories.filter(item => addresses.some(address => (0, _utils5.isSameAddress)(item.address, address))));
1607
1076
  });
1608
1077
  this.createUnsubscriptionHandle(id, subscription.unsubscribe);
1609
1078
  port.onDisconnect.addListener(() => {
@@ -1612,13 +1081,13 @@ class KoniExtension {
1612
1081
  const addresses = _uiKeyring.keyring.getAccounts().map(a => a.address);
1613
1082
 
1614
1083
  // Re-filter
1615
- return historySubject.getValue().filter(item => addresses.some(address => (0, _utils4.isSameAddress)(item.address, address)));
1084
+ return historySubject.getValue().filter(item => addresses.some(address => (0, _utils5.isSameAddress)(item.address, address)));
1616
1085
  }
1617
- subscribeHistoryByChainAndAddress(_ref46, id, port) {
1086
+ subscribeHistoryByChainAndAddress(_ref26, id, port) {
1618
1087
  let {
1619
1088
  address,
1620
1089
  chain
1621
- } = _ref46;
1090
+ } = _ref26;
1622
1091
  const cb = (0, _subscriptions.createSubscription)(id, port);
1623
1092
  const subscribeHistoriesResponse = this.#koniState.historyService.subscribeHistories(chain, address, cb);
1624
1093
  this.createUnsubscriptionHandle(id, subscribeHistoriesResponse.unsubscribe);
@@ -1669,12 +1138,12 @@ class KoniExtension {
1669
1138
  to,
1670
1139
  tokenSlug,
1671
1140
  transferAll,
1141
+ transferBounceable,
1672
1142
  value
1673
1143
  } = inputData;
1674
1144
  const transferTokenInfo = this.#koniState.chainService.getAssetBySlug(tokenSlug);
1675
1145
  const [errors,,] = (0, _transfer.validateTransferRequest)(transferTokenInfo, from, to, value, transferAll);
1676
1146
  const warnings = [];
1677
- const evmApiMap = this.#koniState.getEvmApiMap();
1678
1147
  const chainInfo = this.#koniState.getChainInfo(networkKey);
1679
1148
  const nativeTokenInfo = this.#koniState.getNativeTokenInfo(networkKey);
1680
1149
  const nativeTokenSlug = nativeTokenInfo.slug;
@@ -1683,8 +1152,8 @@ class KoniExtension {
1683
1152
  let chainType = _KoniTypes.ChainType.SUBSTRATE;
1684
1153
  const transferAmount = {
1685
1154
  value: '0',
1686
- symbol: (0, _utils3._getAssetSymbol)(transferTokenInfo),
1687
- decimals: (0, _utils3._getAssetDecimals)(transferTokenInfo)
1155
+ symbol: (0, _utils4._getAssetSymbol)(transferTokenInfo),
1156
+ decimals: (0, _utils4._getAssetDecimals)(transferTokenInfo)
1688
1157
  };
1689
1158
  let transaction;
1690
1159
  const transferTokenAvailable = await this.getAddressTransferableBalance({
@@ -1694,20 +1163,34 @@ class KoniExtension {
1694
1163
  extrinsicType
1695
1164
  });
1696
1165
  try {
1697
- if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils3._isTokenTransferredByEvm)(transferTokenInfo)) {
1166
+ if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils4._isTokenTransferredByEvm)(transferTokenInfo)) {
1698
1167
  chainType = _KoniTypes.ChainType.EVM;
1699
1168
  const txVal = transferAll ? transferTokenAvailable.value : value || '0';
1700
- const evmApi = evmApiMap[networkKey];
1169
+ const evmApi = this.#koniState.getEvmApi(networkKey);
1701
1170
 
1171
+ // todo: refactor: merge getERC20TransactionObject & getEVMTransactionObject
1702
1172
  // Estimate with EVM API
1703
- if ((0, _utils3._isTokenEvmSmartContract)(transferTokenInfo) || (0, _utils3._isLocalToken)(transferTokenInfo)) {
1704
- [transaction, transferAmount.value] = await (0, _smartContract.getERC20TransactionObject)((0, _utils3._getContractAddressOfToken)(transferTokenInfo), chainInfo, from, to, txVal, !!transferAll, evmApi);
1173
+ if ((0, _utils4._isTokenEvmSmartContract)(transferTokenInfo) || (0, _utils4._isLocalToken)(transferTokenInfo)) {
1174
+ [transaction, transferAmount.value] = await (0, _smartContract.getERC20TransactionObject)((0, _utils4._getContractAddressOfToken)(transferTokenInfo), chainInfo, from, to, txVal, !!transferAll, evmApi);
1705
1175
  } else {
1706
1176
  [transaction, transferAmount.value] = await (0, _smartContract.getEVMTransactionObject)(chainInfo, from, to, txVal, !!transferAll, evmApi);
1707
1177
  }
1708
- } else if ((0, _utils3._isMantaZkAsset)(transferTokenInfo)) {
1178
+ } else if ((0, _utils4._isMantaZkAsset)(transferTokenInfo)) {
1709
1179
  transaction = undefined;
1710
1180
  transferAmount.value = '0';
1181
+ } else if ((0, _keyring.isTonAddress)(from) && (0, _keyring.isTonAddress)(to) && (0, _utils4._isTokenTransferredByTon)(transferTokenInfo)) {
1182
+ chainType = _KoniTypes.ChainType.TON;
1183
+ const tonApi = this.#koniState.getTonApi(networkKey);
1184
+ [transaction, transferAmount.value] = await (0, _tonTransfer.createTonTransaction)({
1185
+ tokenInfo: transferTokenInfo,
1186
+ from,
1187
+ to,
1188
+ networkKey,
1189
+ value: value || '0',
1190
+ transferAll: !!transferAll,
1191
+ // currently not used
1192
+ tonApi
1193
+ });
1711
1194
  } else {
1712
1195
  const substrateApi = this.#koniState.getSubstrateApi(networkKey);
1713
1196
  [transaction, transferAmount.value] = await (0, _token.createTransferExtrinsic)({
@@ -1761,6 +1244,13 @@ class KoniExtension {
1761
1244
  warnings.length && inputTransaction.warnings.push(...warnings);
1762
1245
  errors.length && inputTransaction.errors.push(...errors);
1763
1246
  };
1247
+ const ignoreWarnings = [];
1248
+ if (transferAll) {
1249
+ ignoreWarnings.push(_types2.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
1250
+ }
1251
+ if (transferBounceable) {
1252
+ ignoreWarnings.push(_types2.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
1253
+ }
1764
1254
  return this.#koniState.transactionService.handleTransaction({
1765
1255
  errors,
1766
1256
  warnings,
@@ -1771,7 +1261,7 @@ class KoniExtension {
1771
1261
  transaction,
1772
1262
  data: inputData,
1773
1263
  extrinsicType,
1774
- ignoreWarnings: transferAll,
1264
+ ignoreWarnings,
1775
1265
  isTransferAll: isTransferNativeToken ? transferAll : false,
1776
1266
  edAsWarning: isTransferNativeToken,
1777
1267
  additionalValidator: additionalValidator
@@ -1784,6 +1274,8 @@ class KoniExtension {
1784
1274
  originNetworkKey,
1785
1275
  to,
1786
1276
  tokenSlug,
1277
+ transferAll,
1278
+ transferBounceable,
1787
1279
  value
1788
1280
  } = inputData;
1789
1281
  const originTokenInfo = this.#koniState.getAssetBySlug(tokenSlug);
@@ -1794,7 +1286,7 @@ class KoniExtension {
1794
1286
  return this.#koniState.transactionService.generateBeforeHandleResponseErrors(errors);
1795
1287
  }
1796
1288
  const chainInfoMap = this.#koniState.getChainInfoMap();
1797
- const isSnowBridgeEvmTransfer = (0, _utils3._isPureEvmChain)(chainInfoMap[originNetworkKey]) && (0, _xcmParser._isSnowBridgeXcm)(chainInfoMap[originNetworkKey], chainInfoMap[destinationNetworkKey]);
1289
+ const isSnowBridgeEvmTransfer = (0, _utils4._isPureEvmChain)(chainInfoMap[originNetworkKey]) && (0, _xcmParser._isSnowBridgeXcm)(chainInfoMap[originNetworkKey], chainInfoMap[destinationNetworkKey]);
1798
1290
  let additionalValidator;
1799
1291
  let eventsHandler;
1800
1292
  if (fromKeyPair && destinationTokenInfo) {
@@ -1861,6 +1353,13 @@ class KoniExtension {
1861
1353
  });
1862
1354
  };
1863
1355
  }
1356
+ const ignoreWarnings = [];
1357
+ if (transferAll) {
1358
+ ignoreWarnings.push(_types2.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
1359
+ }
1360
+ if (transferBounceable) {
1361
+ ignoreWarnings.push(_types2.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
1362
+ }
1864
1363
  return await this.#koniState.transactionService.handleTransaction({
1865
1364
  url: _constants3.EXTENSION_REQUEST_URL,
1866
1365
  address: from,
@@ -1869,9 +1368,9 @@ class KoniExtension {
1869
1368
  data: inputData,
1870
1369
  extrinsicType: _KoniTypes.ExtrinsicType.TRANSFER_XCM,
1871
1370
  chainType: !isSnowBridgeEvmTransfer ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM,
1872
- transferNativeAmount: (0, _utils3._isNativeToken)(originTokenInfo) ? value : '0',
1873
- ignoreWarnings: inputData.transferAll,
1874
- isTransferAll: inputData.transferAll,
1371
+ transferNativeAmount: (0, _utils4._isNativeToken)(originTokenInfo) ? value : '0',
1372
+ ignoreWarnings,
1373
+ isTransferAll: transferAll,
1875
1374
  errors,
1876
1375
  additionalValidator: additionalValidator,
1877
1376
  eventsHandler: eventsHandler
@@ -1925,21 +1424,21 @@ class KoniExtension {
1925
1424
  disableChain(networkKey) {
1926
1425
  return this.#koniState.disableChain(networkKey);
1927
1426
  }
1928
- async enableChain(_ref47) {
1427
+ async enableChain(_ref27) {
1929
1428
  let {
1930
1429
  chainSlug,
1931
1430
  enableTokens
1932
- } = _ref47;
1431
+ } = _ref27;
1933
1432
  return await this.#koniState.enableChain(chainSlug, enableTokens);
1934
1433
  }
1935
1434
  async reconnectChain(chainSlug) {
1936
1435
  return this.#koniState.chainService.reconnectChain(chainSlug);
1937
1436
  }
1938
- async validateNetwork(_ref48) {
1437
+ async validateNetwork(_ref28) {
1939
1438
  let {
1940
1439
  existedChainSlug,
1941
1440
  provider
1942
- } = _ref48;
1441
+ } = _ref28;
1943
1442
  return await this.#koniState.validateCustomChain(provider, existedChainSlug);
1944
1443
  }
1945
1444
  resetDefaultNetwork() {
@@ -1964,10 +1463,10 @@ class KoniExtension {
1964
1463
  }
1965
1464
  async deleteCustomAsset(assetSlug) {
1966
1465
  const assetInfo = this.#koniState.getAssetBySlug(assetSlug);
1967
- if (assetInfo && (0, _utils3._isCustomAsset)(assetSlug)) {
1968
- if ((0, _utils3._isAssetSmartContractNft)(assetInfo)) {
1466
+ if (assetInfo && (0, _utils4._isCustomAsset)(assetSlug)) {
1467
+ if ((0, _utils4._isAssetSmartContractNft)(assetInfo)) {
1969
1468
  // check if deleting a smart contract NFT
1970
- await this.#koniState.deleteNftCollection(assetInfo.originChain, (0, _utils3._getContractAddressOfToken)(assetInfo));
1469
+ await this.#koniState.deleteNftCollection(assetInfo.originChain, (0, _utils4._getContractAddressOfToken)(assetInfo));
1971
1470
  }
1972
1471
  this.#koniState.deleteCustomAssets([assetSlug]);
1973
1472
  return true;
@@ -1977,13 +1476,13 @@ class KoniExtension {
1977
1476
  async validateCustomAsset(data) {
1978
1477
  return await this.#koniState.validateCustomAsset(data);
1979
1478
  }
1980
- async getAddressTransferableBalance(_ref49) {
1479
+ async getAddressTransferableBalance(_ref29) {
1981
1480
  let {
1982
1481
  address,
1983
1482
  extrinsicType,
1984
1483
  networkKey,
1985
1484
  token
1986
- } = _ref49;
1485
+ } = _ref29;
1987
1486
  if (token && _constants2._MANTA_ZK_CHAIN_GROUP.includes(networkKey)) {
1988
1487
  const tokenInfo = this.#koniState.chainService.getAssetBySlug(token);
1989
1488
  if (tokenInfo.symbol.startsWith(_constants2._ZK_ASSET_PREFIX)) {
@@ -1992,16 +1491,16 @@ class KoniExtension {
1992
1491
  }
1993
1492
  return await this.#koniState.balanceService.getTransferableBalance(address, networkKey, token, extrinsicType);
1994
1493
  }
1995
- async getMaxTransferable(_ref50) {
1494
+ async getMaxTransferable(_ref30) {
1996
1495
  let {
1997
1496
  address,
1998
1497
  destChain,
1999
1498
  isXcmTransfer,
2000
1499
  networkKey,
2001
1500
  token
2002
- } = _ref50;
1501
+ } = _ref30;
2003
1502
  const tokenInfo = token ? this.#koniState.chainService.getAssetBySlug(token) : this.#koniState.chainService.getNativeTokenInfo(networkKey);
2004
- if (!(0, _utils3._isNativeToken)(tokenInfo)) {
1503
+ if (!(0, _utils4._isNativeToken)(tokenInfo)) {
2005
1504
  return await this.getAddressTransferableBalance({
2006
1505
  extrinsicType: _KoniTypes.ExtrinsicType.TRANSFER_TOKEN,
2007
1506
  address,
@@ -2017,7 +1516,7 @@ class KoniExtension {
2017
1516
  maxTransferable = await this.getNativeTokenMaxTransferable(tokenInfo, networkKey, address);
2018
1517
  }
2019
1518
  return {
2020
- value: maxTransferable.gt(_utils4.BN_ZERO) ? maxTransferable.toFixed(0) || '0' : '0',
1519
+ value: maxTransferable.gt(_utils5.BN_ZERO) ? maxTransferable.toFixed(0) || '0' : '0',
2021
1520
  decimals: tokenInfo.decimals,
2022
1521
  symbol: tokenInfo.symbol
2023
1522
  };
@@ -2045,7 +1544,7 @@ class KoniExtension {
2045
1544
  }
2046
1545
  async getNativeTokenMaxTransferable(tokenInfo, networkKey, address) {
2047
1546
  const chainInfo = this.#koniState.chainService.getChainInfoByKey(networkKey);
2048
- const api = (0, _utils3._isChainEvmCompatible)(chainInfo) && (0, _utils3._isTokenTransferredByEvm)(tokenInfo) ? this.#koniState.chainService.getEvmApi(networkKey) : this.#koniState.chainService.getSubstrateApi(networkKey);
1547
+ const api = (0, _utils4._isChainEvmCompatible)(chainInfo) && (0, _utils4._isTokenTransferredByEvm)(tokenInfo) ? this.#koniState.chainService.getEvmApi(networkKey) : (0, _utils4._isChainTonCompatible)(chainInfo) && (0, _utils4._isTokenTransferredByTon)(tokenInfo) ? this.#koniState.chainService.getTonApi(networkKey) : this.#koniState.chainService.getSubstrateApi(networkKey);
2049
1548
  const [mockTxFee, {
2050
1549
  value
2051
1550
  }] = await Promise.all([(0, _token.getTransferMockTxFee)(address, chainInfo, tokenInfo, api), this.getAddressTransferableBalance({
@@ -2057,13 +1556,13 @@ class KoniExtension {
2057
1556
  const bnMaxTransferable = new _bignumber.default(value);
2058
1557
  return bnMaxTransferable.minus(mockTxFee);
2059
1558
  }
2060
- async subscribeAddressTransferableBalance(_ref51, id, port) {
1559
+ async subscribeAddressTransferableBalance(_ref31, id, port) {
2061
1560
  let {
2062
1561
  address,
2063
1562
  extrinsicType,
2064
1563
  networkKey,
2065
1564
  token
2066
- } = _ref51;
1565
+ } = _ref31;
2067
1566
  const cb = (0, _subscriptions.createSubscription)(id, port);
2068
1567
  const convertData = data => {
2069
1568
  return {
@@ -2114,11 +1613,11 @@ class KoniExtension {
2114
1613
  isSendingSelf
2115
1614
  };
2116
1615
  }
2117
- async enableChains(_ref52) {
1616
+ async enableChains(_ref32) {
2118
1617
  let {
2119
1618
  chainSlugs,
2120
1619
  enableTokens
2121
- } = _ref52;
1620
+ } = _ref32;
2122
1621
  try {
2123
1622
  await Promise.all(chainSlugs.map(chainSlug => this.enableChain({
2124
1623
  chainSlug,
@@ -2129,277 +1628,21 @@ class KoniExtension {
2129
1628
  }
2130
1629
  return true;
2131
1630
  }
2132
- getAccountMeta(_ref53) {
2133
- let {
2134
- address
2135
- } = _ref53;
2136
- const pair = _uiKeyring.keyring.getPair(address);
2137
- (0, _util.assert)(pair, (0, _i18next.t)('Unable to find account'));
2138
- return {
2139
- meta: pair.meta
2140
- };
2141
- }
2142
- accountsTie2(_ref54) {
2143
- let {
2144
- address,
2145
- genesisHash
2146
- } = _ref54;
2147
- return this.#koniState.setAccountTie(address, genesisHash);
2148
- }
2149
- async accountsCreateExternalV2(_ref55) {
2150
- let {
2151
- address,
2152
- genesisHash,
2153
- isAllowed,
2154
- isEthereum,
2155
- isReadOnly,
2156
- name
2157
- } = _ref55;
2158
- try {
2159
- let result;
2160
- try {
2161
- const exists = _uiKeyring.keyring.getPair(address);
2162
- if (exists) {
2163
- if (exists.type === (isEthereum ? 'ethereum' : 'sr25519')) {
2164
- return [{
2165
- code: _KoniTypes.AccountExternalErrorCode.INVALID_ADDRESS,
2166
- message: (0, _i18next.t)('Account exists')
2167
- }];
2168
- }
2169
- }
2170
- } catch (e) {}
2171
- if (isEthereum) {
2172
- const chainInfoMap = this.#koniState.getChainInfoMap();
2173
- let _gen = '';
2174
- if (genesisHash) {
2175
- for (const network of Object.values(chainInfoMap)) {
2176
- if ((0, _utils3._getEvmChainId)(network) === parseInt(genesisHash)) {
2177
- // TODO: pure EVM chains do not have genesisHash
2178
- _gen = (0, _utils3._getSubstrateGenesisHash)(network);
2179
- }
2180
- }
2181
- }
2182
- result = _uiKeyring.keyring.keyring.addFromAddress(address, {
2183
- name,
2184
- isExternal: true,
2185
- isReadOnly,
2186
- genesisHash: _gen
2187
- }, null, 'ethereum');
2188
- _uiKeyring.keyring.saveAccount(result);
2189
- } else {
2190
- result = _uiKeyring.keyring.addExternal(address, {
2191
- genesisHash,
2192
- name,
2193
- isReadOnly
2194
- }).pair;
2195
- }
2196
- const _address = result.address;
2197
- await new Promise(resolve => {
2198
- this.#koniState.addAccountRef([_address], () => {
2199
- resolve();
2200
- });
2201
- });
2202
- await new Promise(resolve => {
2203
- this._saveCurrentAccountAddress(_address, () => {
2204
- this._addAddressToAuthList(_address, isAllowed);
2205
- resolve();
2206
- });
2207
- });
2208
- return [];
2209
- } catch (e) {
2210
- return [{
2211
- code: _KoniTypes.AccountExternalErrorCode.KEYRING_ERROR,
2212
- message: e.message
2213
- }];
2214
- }
1631
+ async accountsCreateExternalV2(request) {
1632
+ return this.#koniState.keyringService.context.accountsCreateExternalV2(request);
2215
1633
  }
2216
- async accountsCreateHardwareV2(_ref56) {
2217
- let {
2218
- accountIndex,
2219
- address,
2220
- addressOffset,
2221
- genesisHash,
2222
- hardwareType,
2223
- isAllowed,
2224
- name,
2225
- originGenesisHash
2226
- } = _ref56;
2227
- const key = _uiKeyring.keyring.addHardware(address, hardwareType, {
2228
- accountIndex,
2229
- addressOffset,
2230
- genesisHash,
2231
- name,
2232
- originGenesisHash
2233
- });
2234
- const result = key.pair;
2235
- const _address = result.address;
2236
- await new Promise(resolve => {
2237
- this.#koniState.addAccountRef([_address], () => {
2238
- resolve();
2239
- });
2240
- });
2241
- await new Promise(resolve => {
2242
- this._saveCurrentAccountAddress(_address, () => {
2243
- this._addAddressToAuthList(_address, isAllowed || false);
2244
- resolve();
2245
- });
2246
- });
2247
- return true;
1634
+ async accountsCreateHardwareV2(request) {
1635
+ return this.#koniState.keyringService.context.accountsCreateHardwareV2(request);
2248
1636
  }
2249
- async accountsCreateHardwareMultiple(_ref57) {
2250
- let {
2251
- accounts
2252
- } = _ref57;
2253
- const addresses = [];
2254
- if (!accounts.length) {
2255
- throw new Error((0, _i18next.t)("Can't find an account. Please try again"));
2256
- }
2257
- const slugMap = {};
2258
- for (const account of accounts) {
2259
- const {
2260
- accountIndex,
2261
- address,
2262
- addressOffset,
2263
- genesisHash,
2264
- hardwareType,
2265
- isEthereum,
2266
- isGeneric,
2267
- name,
2268
- originGenesisHash
2269
- } = account;
2270
- let result;
2271
- const baseMeta = {
2272
- name,
2273
- hardwareType,
2274
- accountIndex,
2275
- addressOffset,
2276
- genesisHash,
2277
- originGenesisHash,
2278
- isGeneric
2279
- };
2280
- if (isEthereum) {
2281
- result = _uiKeyring.keyring.keyring.addFromAddress(address, {
2282
- ...baseMeta,
2283
- isExternal: true,
2284
- isHardware: true
2285
- }, null, 'ethereum');
2286
- _uiKeyring.keyring.saveAccount(result);
2287
- slugMap.ethereum = 'ethereum';
2288
- } else {
2289
- result = _uiKeyring.keyring.addHardware(address, hardwareType, {
2290
- ...baseMeta,
2291
- availableGenesisHashes: [genesisHash]
2292
- }).pair;
2293
- const [slug] = this.#koniState.findNetworkKeyByGenesisHash(genesisHash);
2294
- if (slug) {
2295
- slugMap[slug] = slug;
2296
- }
2297
- }
2298
- const _address = result.address;
2299
- addresses.push(_address);
2300
- await new Promise(resolve => {
2301
- this._addAddressToAuthList(_address, true);
2302
- resolve();
2303
- });
2304
- }
2305
- const currentAccount = this.#koniState.keyringService.currentAccount;
2306
- const allGenesisHash = (currentAccount === null || currentAccount === void 0 ? void 0 : currentAccount.allGenesisHash) || undefined;
2307
- if (addresses.length <= 1) {
2308
- this.#koniState.setCurrentAccount({
2309
- address: addresses[0],
2310
- currentGenesisHash: null,
2311
- allGenesisHash
2312
- });
2313
- } else {
2314
- this.#koniState.setCurrentAccount({
2315
- address: _constants.ALL_ACCOUNT_KEY,
2316
- currentGenesisHash: allGenesisHash || null,
2317
- allGenesisHash
2318
- });
2319
- }
2320
- await new Promise(resolve => {
2321
- this.#koniState.addAccountRef(addresses, () => {
2322
- resolve();
2323
- });
2324
- });
2325
- if (Object.keys(slugMap).length) {
2326
- this.enableChains({
2327
- chainSlugs: Object.keys(slugMap),
2328
- enableTokens: true
2329
- }).catch(console.error);
2330
- }
2331
- return true;
1637
+ async accountsCreateHardwareMultiple(request) {
1638
+ return this.#koniState.keyringService.context.accountsCreateHardwareMultiple(request);
2332
1639
  }
2333
- async accountsCreateWithSecret(_ref58) {
2334
- let {
2335
- isAllow,
2336
- isEthereum,
2337
- name,
2338
- publicKey,
2339
- secretKey
2340
- } = _ref58;
2341
- try {
2342
- let keyringPair = null;
2343
- if (isEthereum) {
2344
- const _secret = (0, _util.hexStripPrefix)(secretKey);
2345
- if (_secret.length === 64) {
2346
- const suri = `0x${_secret}`;
2347
- const {
2348
- phrase
2349
- } = (0, _utilCrypto.keyExtractSuri)(suri);
2350
- if ((0, _util.isHex)(phrase) && (0, _util.isHex)(phrase, 256)) {
2351
- const type = 'ethereum';
2352
- keyringPair = _uiKeyring.keyring.addUri(getSuri(suri, type), {
2353
- name: name
2354
- }, type).pair;
2355
- }
2356
- }
2357
- } else {
2358
- keyringPair = _uiKeyring.keyring.keyring.addFromPair({
2359
- publicKey: (0, _util.hexToU8a)(publicKey),
2360
- secretKey: (0, _util.hexToU8a)(secretKey)
2361
- }, {
2362
- name
2363
- });
2364
- _uiKeyring.keyring.addPair(keyringPair, true);
2365
- }
2366
- if (!keyringPair) {
2367
- return {
2368
- success: false,
2369
- errors: [{
2370
- code: _KoniTypes.AccountExternalErrorCode.KEYRING_ERROR,
2371
- message: (0, _i18next.t)('Cannot create account')
2372
- }]
2373
- };
2374
- }
2375
- const _address = keyringPair.address;
2376
- await new Promise(resolve => {
2377
- this.#koniState.addAccountRef([_address], () => {
2378
- resolve();
2379
- });
2380
- });
2381
- await new Promise(resolve => {
2382
- this._saveCurrentAccountAddress(_address, () => {
2383
- this._addAddressToAuthList(_address, isAllow);
2384
- resolve();
2385
- });
2386
- });
2387
- if (this.#alwaysLock) {
2388
- this.keyringLock();
2389
- }
2390
- return {
2391
- errors: [],
2392
- success: true
2393
- };
2394
- } catch (e) {
2395
- return {
2396
- success: false,
2397
- errors: [{
2398
- code: _KoniTypes.AccountExternalErrorCode.KEYRING_ERROR,
2399
- message: e.message
2400
- }]
2401
- };
1640
+ async accountsCreateWithSecret(request) {
1641
+ const result = await this.#koniState.keyringService.context.accountsCreateWithSecret(request);
1642
+ if (this.#alwaysLock) {
1643
+ this.keyringLock();
2402
1644
  }
1645
+ return result;
2403
1646
  }
2404
1647
 
2405
1648
  /// External account
@@ -2449,9 +1692,21 @@ class KoniExtension {
2449
1692
  });
2450
1693
  return this.#koniState.getConfirmationsQueueSubject().getValue();
2451
1694
  }
1695
+ subscribeConfirmationsTon(id, port) {
1696
+ const cb = (0, _subscriptions.createSubscription)(id, port);
1697
+ const subscription = this.#koniState.getConfirmationsQueueSubjectTon().subscribe(cb);
1698
+ this.createUnsubscriptionHandle(id, subscription.unsubscribe);
1699
+ port.onDisconnect.addListener(() => {
1700
+ this.cancelSubscription(id);
1701
+ });
1702
+ return this.#koniState.getConfirmationsQueueSubjectTon().getValue();
1703
+ }
2452
1704
  async completeConfirmation(request) {
2453
1705
  return await this.#koniState.completeConfirmation(request);
2454
1706
  }
1707
+ async completeConfirmationTon(request) {
1708
+ return await this.#koniState.completeConfirmationTon(request);
1709
+ }
2455
1710
 
2456
1711
  /// Sign Qr
2457
1712
 
@@ -2463,7 +1718,7 @@ class KoniExtension {
2463
1718
  continue;
2464
1719
  }
2465
1720
  const networkInfo = chainInfoMap[n];
2466
- if ((0, _utils3._isChainEvmCompatible)(networkInfo)) {
1721
+ if ((0, _utils4._isChainEvmCompatible)(networkInfo)) {
2467
1722
  return networkInfo;
2468
1723
  }
2469
1724
  }
@@ -2474,7 +1729,7 @@ class KoniExtension {
2474
1729
  continue;
2475
1730
  }
2476
1731
  const networkInfo = chainInfoMap[n];
2477
- if ((0, _utils3._getEvmChainId)(networkInfo) === chainId) {
1732
+ if ((0, _utils4._getEvmChainId)(networkInfo) === chainId) {
2478
1733
  return networkInfo;
2479
1734
  }
2480
1735
  }
@@ -2483,30 +1738,30 @@ class KoniExtension {
2483
1738
 
2484
1739
  // Parse transaction
2485
1740
 
2486
- parseSubstrateTransaction(_ref59) {
1741
+ parseSubstrateTransaction(_ref33) {
2487
1742
  let {
2488
1743
  data,
2489
1744
  networkKey
2490
- } = _ref59;
1745
+ } = _ref33;
2491
1746
  const apiProps = this.#koniState.getSubstrateApi(networkKey);
2492
1747
  const apiPromise = apiProps.api;
2493
1748
  return (0, _parseTransaction.parseSubstrateTransaction)(data, apiPromise);
2494
1749
  }
2495
- async parseEVMRLP(_ref60) {
1750
+ async parseEVMRLP(_ref34) {
2496
1751
  let {
2497
1752
  data
2498
- } = _ref60;
1753
+ } = _ref34;
2499
1754
  return await (0, _parseTransaction2.parseEvmRlp)(data, this.#koniState.getChainInfoMap(), this.#koniState.getEvmApiMap());
2500
1755
  }
2501
1756
 
2502
1757
  // Sign
2503
1758
 
2504
- qrSignSubstrate(_ref61) {
1759
+ qrSignSubstrate(_ref35) {
2505
1760
  let {
2506
1761
  address,
2507
1762
  data,
2508
1763
  networkKey
2509
- } = _ref61;
1764
+ } = _ref35;
2510
1765
  const pair = _uiKeyring.keyring.getPair(address);
2511
1766
  (0, _util.assert)(pair, (0, _i18next.t)('Unable to find account'));
2512
1767
  if (pair.isLocked) {
@@ -2516,20 +1771,20 @@ class KoniExtension {
2516
1771
  withType: true
2517
1772
  })));
2518
1773
  const network = this.#koniState.getChainInfo(networkKey);
2519
- if ((0, _utils3._isChainEvmCompatible)(network)) {
1774
+ if ((0, _utils4._isChainEvmCompatible)(network)) {
2520
1775
  signed = signed.substring(2);
2521
1776
  }
2522
1777
  return {
2523
1778
  signature: signed
2524
1779
  };
2525
1780
  }
2526
- async qrSignEVM(_ref62) {
1781
+ async qrSignEVM(_ref36) {
2527
1782
  let {
2528
1783
  address,
2529
1784
  chainId,
2530
1785
  message,
2531
1786
  type
2532
- } = _ref62;
1787
+ } = _ref36;
2533
1788
  let signed;
2534
1789
  const network = this.getNetworkJsonByChainId(chainId);
2535
1790
  if (!network) {
@@ -2549,10 +1804,10 @@ class KoniExtension {
2549
1804
  } else if ((0, _util.isAscii)(message)) {
2550
1805
  data = `0x${message}`;
2551
1806
  }
2552
- signed = await pair.evmSigner.signMessage(data, 'personal_sign');
1807
+ signed = await pair.evm.signMessage(data, 'personal_sign');
2553
1808
  } else {
2554
1809
  var _signedTranaction$r, _signedTranaction$s, _signedTranaction$v;
2555
- const tx = (0, _utils4.createTransactionFromRLP)(message);
1810
+ const tx = (0, _utils5.createTransactionFromRLP)(message);
2556
1811
  if (!tx) {
2557
1812
  throw new Error((0, _i18next.t)('Failed to decode data. Please use a valid QR code'));
2558
1813
  }
@@ -2566,8 +1821,8 @@ class KoniExtension {
2566
1821
  };
2567
1822
  const common = _common.Common.custom({
2568
1823
  name: network.name,
2569
- networkId: (0, _utils3._getEvmChainId)(network),
2570
- chainId: (0, _utils3._getEvmChainId)(network)
1824
+ networkId: (0, _utils4._getEvmChainId)(network),
1825
+ chainId: (0, _utils4._getEvmChainId)(network)
2571
1826
  }, {
2572
1827
  hardfork: 'petersburg'
2573
1828
  });
@@ -2576,8 +1831,8 @@ class KoniExtension {
2576
1831
  const transaction = new _tx.LegacyTransaction(txObject, {
2577
1832
  common
2578
1833
  });
2579
- const signedTranaction = _tx.LegacyTransaction.fromSerializedTx((0, _util.hexToU8a)(pair.evmSigner.signTransaction(transaction)));
2580
- signed = (0, _utils4.signatureToHex)({
1834
+ const signedTranaction = _tx.LegacyTransaction.fromSerializedTx((0, _util.hexToU8a)(pair.evm.signTransaction(transaction)));
1835
+ signed = (0, _utils5.signatureToHex)({
2581
1836
  r: ((_signedTranaction$r = signedTranaction.r) === null || _signedTranaction$r === void 0 ? void 0 : _signedTranaction$r.toString(16)) || '',
2582
1837
  s: ((_signedTranaction$s = signedTranaction.s) === null || _signedTranaction$s === void 0 ? void 0 : _signedTranaction$s.toString(16)) || '',
2583
1838
  v: ((_signedTranaction$v = signedTranaction.v) === null || _signedTranaction$v === void 0 ? void 0 : _signedTranaction$v.toString(16)) || ''
@@ -2613,11 +1868,11 @@ class KoniExtension {
2613
1868
  });
2614
1869
  return this.#koniState.getNominatorMetadata();
2615
1870
  }
2616
- async getBondingOptions(_ref63) {
1871
+ async getBondingOptions(_ref37) {
2617
1872
  let {
2618
1873
  chain,
2619
1874
  type
2620
- } = _ref63;
1875
+ } = _ref37;
2621
1876
  const apiProps = this.#koniState.getSubstrateApi(chain);
2622
1877
  const chainInfo = this.#koniState.getChainInfo(chain);
2623
1878
  const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, type);
@@ -2626,7 +1881,7 @@ class KoniExtension {
2626
1881
  }
2627
1882
  const {
2628
1883
  decimals
2629
- } = (0, _utils3._getChainNativeTokenBasicInfo)(chainInfo);
1884
+ } = (0, _utils4._getChainNativeTokenBasicInfo)(chainInfo);
2630
1885
  return await (0, _bonding.getValidatorsInfo)(chain, apiProps, decimals, chainStakingMetadata);
2631
1886
  }
2632
1887
  async getNominationPoolOptions(chain) {
@@ -2649,7 +1904,7 @@ class KoniExtension {
2649
1904
  chainName: chainInfo.name
2650
1905
  }
2651
1906
  });
2652
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
1907
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2653
1908
  }
2654
1909
  const bondingValidation = (0, _bonding.validateBondingCondition)(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
2655
1910
  if (!amount || !selectedValidators || bondingValidation.length > 0) {
@@ -2677,7 +1932,7 @@ class KoniExtension {
2677
1932
  } = inputData;
2678
1933
  const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, _KoniTypes.StakingType.NOMINATED);
2679
1934
  if (!chainStakingMetadata || !nominatorMetadata) {
2680
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR)]);
1935
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INTERNAL_ERROR)]);
2681
1936
  }
2682
1937
  const unbondingValidation = (0, _bonding.validateUnbondingCondition)(nominatorMetadata, amount, chain, chainStakingMetadata, validatorAddress);
2683
1938
  if (!amount || unbondingValidation.length > 0) {
@@ -2702,7 +1957,7 @@ class KoniExtension {
2702
1957
  } = inputData;
2703
1958
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
2704
1959
  if (!address || !poolHandler) {
2705
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
1960
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INVALID_PARAMS)]);
2706
1961
  }
2707
1962
  const chain = poolHandler.chain;
2708
1963
  const stakingType = poolHandler.type === _types2.YieldPoolType.NOMINATION_POOL ? _KoniTypes.StakingType.POOLED : _KoniTypes.StakingType.NOMINATED;
@@ -2726,7 +1981,7 @@ class KoniExtension {
2726
1981
  } = inputData;
2727
1982
  const chain = (_this$koniState$earni = this.#koniState.earningService.getPoolHandler(slug)) === null || _this$koniState$earni === void 0 ? void 0 : _this$koniState$earni.chain;
2728
1983
  if (!chain || !selectedUnstaking) {
2729
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
1984
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INVALID_PARAMS)]);
2730
1985
  }
2731
1986
  const substrateApi = this.#koniState.getSubstrateApi(chain);
2732
1987
  // @ts-ignore
@@ -2756,7 +2011,7 @@ class KoniExtension {
2756
2011
  chainName: chainInfo.name
2757
2012
  }
2758
2013
  });
2759
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2014
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2760
2015
  }
2761
2016
  const bondingValidation = (0, _relayChain.validatePoolBondingCondition)(chainInfo, amount, selectedPool, address, chainStakingMetadata, nominatorMetadata);
2762
2017
  if (!amount || bondingValidation.length > 0) {
@@ -2788,7 +2043,7 @@ class KoniExtension {
2788
2043
  chainName: chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.name
2789
2044
  }
2790
2045
  });
2791
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2046
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
2792
2047
  }
2793
2048
  const unbondingValidation = (0, _relayChain.validateRelayUnbondingCondition)(amount, chainStakingMetadata, nominatorMetadata);
2794
2049
  if (!amount || unbondingValidation.length > 0) {
@@ -2807,12 +2062,12 @@ class KoniExtension {
2807
2062
  }
2808
2063
 
2809
2064
  // EVM Transaction
2810
- async parseContractInput(_ref64) {
2065
+ async parseContractInput(_ref38) {
2811
2066
  let {
2812
2067
  chainId,
2813
2068
  contract,
2814
2069
  data
2815
- } = _ref64;
2070
+ } = _ref38;
2816
2071
  const network = this.getNetworkJsonByChainId(chainId);
2817
2072
  return await (0, _parseTransaction2.parseContractInput)(data, contract, network);
2818
2073
  }
@@ -2825,13 +2080,13 @@ class KoniExtension {
2825
2080
  networkKey
2826
2081
  } = inputData;
2827
2082
  if (!address) {
2828
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
2083
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INVALID_PARAMS)]);
2829
2084
  }
2830
2085
  const dotSamaApi = this.#koniState.getSubstrateApi(networkKey);
2831
2086
  const chainInfo = this.#koniState.getChainInfo(networkKey);
2832
2087
  const {
2833
2088
  decimals
2834
- } = (0, _utils3._getChainNativeTokenBasicInfo)(chainInfo);
2089
+ } = (0, _utils4._getChainNativeTokenBasicInfo)(chainInfo);
2835
2090
  const parsedAccountMinimum = parseFloat(accountMinimum) * 10 ** decimals;
2836
2091
  const extrinsic = await (0, _paraChain.getTuringCompoundExtrinsic)(dotSamaApi, address, collatorAddress, parsedAccountMinimum.toString(), bondedAmount);
2837
2092
  return await this.#koniState.transactionService.handleTransaction({
@@ -2872,8 +2127,7 @@ class KoniExtension {
2872
2127
 
2873
2128
  keyringStateSubscribe(id, port) {
2874
2129
  const cb = (0, _subscriptions.createSubscription)(id, port);
2875
- const keyringStateSubject = this.#koniState.keyringService.keyringStateSubject;
2876
- const subscription = keyringStateSubject.subscribe(value => cb(value));
2130
+ const subscription = this.#koniState.keyringService.keyringStateSubscribe(cb);
2877
2131
  this.createUnsubscriptionHandle(id, subscription.unsubscribe);
2878
2132
  port.onDisconnect.addListener(() => {
2879
2133
  this.cancelSubscription(id);
@@ -2883,48 +2137,14 @@ class KoniExtension {
2883
2137
 
2884
2138
  // Change master password
2885
2139
 
2886
- keyringChangeMasterPassword(_ref65) {
2887
- let {
2888
- createNew,
2889
- newPassword,
2890
- oldPassword
2891
- } = _ref65;
2892
- try {
2893
- // Remove isMasterPassword meta if createNew
2894
- if (createNew && !_uiKeyring.keyring.keyring.hasMasterPassword) {
2895
- const pairs = _uiKeyring.keyring.getPairs();
2896
- for (const pair of pairs) {
2897
- if (pair.meta.isInjected) {
2898
- // Empty
2899
- } else {
2900
- const meta = {
2901
- ...pair.meta,
2902
- isMasterPassword: false
2903
- };
2904
- if (!meta.originGenesisHash) {
2905
- meta.genesisHash = '';
2906
- }
2907
- pair.setMeta(meta);
2908
- _uiKeyring.keyring.saveAccountMeta(pair, pair.meta);
2909
- }
2910
- }
2140
+ keyringChangeMasterPassword(request) {
2141
+ const createNew = request.createNew;
2142
+ const callback = () => {
2143
+ if (this.#alwaysLock && !createNew) {
2144
+ this.keyringLock();
2911
2145
  }
2912
- _uiKeyring.keyring.changeMasterPassword(newPassword, oldPassword);
2913
- } catch (e) {
2914
- console.error(e);
2915
- return {
2916
- errors: [(0, _i18next.t)(e.message)],
2917
- status: false
2918
- };
2919
- }
2920
- this.#koniState.updateKeyringState();
2921
- if (this.#alwaysLock && !createNew) {
2922
- this.keyringLock();
2923
- }
2924
- return {
2925
- status: true,
2926
- errors: []
2927
2146
  };
2147
+ return this.#koniState.keyringService.context.keyringChangeMasterPassword(request, callback);
2928
2148
  }
2929
2149
 
2930
2150
  // Migrate password
@@ -2938,33 +2158,19 @@ class KoniExtension {
2938
2158
  }
2939
2159
  }
2940
2160
  }
2941
- keyringMigrateMasterPassword(_ref66) {
2942
- let {
2943
- address,
2944
- password
2945
- } = _ref66;
2946
- try {
2947
- _uiKeyring.keyring.migrateWithMasterPassword(address, password);
2161
+ keyringMigrateMasterPassword(request) {
2162
+ const cb = () => {
2948
2163
  this.checkLockAfterMigrate();
2949
- } catch (e) {
2950
- console.error(e);
2951
- return {
2952
- errors: [e.message],
2953
- status: false
2954
- };
2955
- }
2956
- return {
2957
- status: true,
2958
- errors: []
2959
2164
  };
2165
+ return this.#koniState.keyringService.context.keyringMigrateMasterPassword(request, cb);
2960
2166
  }
2961
2167
 
2962
2168
  // Unlock wallet
2963
2169
 
2964
- keyringUnlock(_ref67) {
2170
+ keyringUnlock(_ref39) {
2965
2171
  let {
2966
2172
  password
2967
- } = _ref67;
2173
+ } = _ref39;
2968
2174
  try {
2969
2175
  _uiKeyring.keyring.unlockKeyring(password);
2970
2176
  // this.#koniState.initMantaPay(password)
@@ -2995,11 +2201,11 @@ class KoniExtension {
2995
2201
 
2996
2202
  // Export mnemonic
2997
2203
 
2998
- keyringExportMnemonic(_ref68) {
2204
+ keyringExportMnemonic(_ref40) {
2999
2205
  let {
3000
2206
  address,
3001
2207
  password
3002
- } = _ref68;
2208
+ } = _ref40;
3003
2209
  const pair = _uiKeyring.keyring.getPair(address);
3004
2210
  const result = pair.exportMnemonic(password);
3005
2211
  return {
@@ -3009,10 +2215,10 @@ class KoniExtension {
3009
2215
 
3010
2216
  // Reset wallet
3011
2217
 
3012
- async resetWallet(_ref69) {
2218
+ async resetWallet(_ref41) {
3013
2219
  let {
3014
2220
  resetAll
3015
- } = _ref69;
2221
+ } = _ref41;
3016
2222
  try {
3017
2223
  await this.#koniState.resetWallet(resetAll);
3018
2224
  return {
@@ -3028,10 +2234,10 @@ class KoniExtension {
3028
2234
  }
3029
2235
 
3030
2236
  /// Signing substrate request
3031
- async signingApprovePasswordV2(_ref70) {
2237
+ async signingApprovePasswordV2(_ref42) {
3032
2238
  let {
3033
2239
  id
3034
- } = _ref70;
2240
+ } = _ref42;
3035
2241
  const queued = this.#koniState.getSignRequest(id);
3036
2242
  (0, _util.assert)(queued, (0, _i18next.t)('Unable to proceed. Please try again'));
3037
2243
  const {
@@ -3039,7 +2245,7 @@ class KoniExtension {
3039
2245
  request,
3040
2246
  resolve
3041
2247
  } = queued;
3042
- const pair = _uiKeyring.keyring.getPair(queued.account.address);
2248
+ const pair = _uiKeyring.keyring.getPair(queued.address);
3043
2249
 
3044
2250
  // unlike queued.account.address the following
3045
2251
  // address is encoded with the default prefix
@@ -3076,8 +2282,8 @@ class KoniExtension {
3076
2282
  metadata = await this.#koniState.chainService.getMetadataByHash(payload.genesisHash);
3077
2283
  if (metadata) {
3078
2284
  var _chainInfo$substrateI, _chainInfo$substrateI2, _chainInfo$substrateI3, _chainInfo$substrateI4;
3079
- registry = new _types3.TypeRegistry();
3080
- const _metadata = new _types3.Metadata(registry, metadata.hexValue);
2285
+ registry = new _types4.TypeRegistry();
2286
+ const _metadata = new _types4.Metadata(registry, metadata.hexValue);
3081
2287
  registry.register(metadata.types);
3082
2288
  registry.setChainProperties(registry.createType('ChainProperties', {
3083
2289
  ss58Format: (_chainInfo$substrateI = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI2 = chainInfo.substrateInfo) === null || _chainInfo$substrateI2 === void 0 ? void 0 : _chainInfo$substrateI2.addressPrefix) !== null && _chainInfo$substrateI !== void 0 ? _chainInfo$substrateI : 42,
@@ -3087,7 +2293,7 @@ class KoniExtension {
3087
2293
  registry.setMetadata(_metadata, payload.signedExtensions, metadata.userExtensions);
3088
2294
  } else {
3089
2295
  // we have no metadata, create a new registry
3090
- registry = new _types3.TypeRegistry();
2296
+ registry = new _types4.TypeRegistry();
3091
2297
  registry.setSignedExtensions(payload.signedExtensions);
3092
2298
  }
3093
2299
  }
@@ -3113,7 +2319,7 @@ class KoniExtension {
3113
2319
  }
3114
2320
  } else {
3115
2321
  // for non-payload, just create a registry to use
3116
- registry = new _types3.TypeRegistry();
2322
+ registry = new _types4.TypeRegistry();
3117
2323
  }
3118
2324
  const result = request.sign(registry, pair);
3119
2325
  resolve({
@@ -3129,167 +2335,24 @@ class KoniExtension {
3129
2335
 
3130
2336
  /// Derive account
3131
2337
 
3132
- derivationCreateMultiple(_ref71) {
3133
- let {
3134
- isAllowed,
3135
- items,
3136
- parentAddress
3137
- } = _ref71;
3138
- const parentPair = _uiKeyring.keyring.getPair(parentAddress);
3139
- const isEvm = parentPair.type === 'ethereum';
3140
- if (parentPair.isLocked) {
3141
- _uiKeyring.keyring.unlockPair(parentPair.address);
3142
- }
3143
- const createChild = _ref72 => {
3144
- let {
3145
- name,
3146
- suri
3147
- } = _ref72;
3148
- const meta = {
3149
- name: name,
3150
- parentAddress
3151
- };
3152
- if (isEvm) {
3153
- let index = 0;
3154
- try {
3155
- const reg = /^\d+$/;
3156
- const path = suri.split('//')[1];
3157
- if (reg.test(path)) {
3158
- index = parseInt(path);
3159
- }
3160
- } catch (e) {}
3161
- if (!index) {
3162
- throw Error((0, _i18next.t)('Invalid derive path'));
3163
- }
3164
- meta.suri = `//${index}`;
3165
- return parentPair.deriveEvm(index, meta);
3166
- } else {
3167
- meta.suri = suri;
3168
- return parentPair.derive(suri, meta);
3169
- }
3170
- };
3171
- const result = [];
3172
- for (const item of items) {
3173
- try {
3174
- const childPair = createChild(item);
3175
- const address = childPair.address;
3176
- _uiKeyring.keyring.addPair(childPair, true);
3177
- this._addAddressToAuthList(address, isAllowed);
3178
- result.push(childPair);
3179
- } catch (e) {
3180
- console.log(e);
3181
- }
3182
- }
3183
- if (result.length === 1) {
3184
- this._saveCurrentAccountAddress(result[0].address);
3185
- } else {
3186
- this.#koniState.setCurrentAccount({
3187
- address: _constants.ALL_ACCOUNT_KEY,
3188
- currentGenesisHash: null
3189
- });
3190
- }
3191
- return true;
2338
+ derivationCreateMultiple(request) {
2339
+ return this.#koniState.keyringService.context.derivationCreateMultiple(request);
3192
2340
  }
3193
- derivationCreateV3(_ref73) {
3194
- let {
3195
- address: parentAddress
3196
- } = _ref73;
3197
- const parentPair = _uiKeyring.keyring.getPair(parentAddress);
3198
- const isEvm = parentPair.type === 'ethereum';
3199
- if (parentPair.isLocked) {
3200
- _uiKeyring.keyring.unlockPair(parentPair.address);
3201
- }
3202
- const pairs = _uiKeyring.keyring.getPairs();
3203
- const children = pairs.filter(p => p.meta.parentAddress === parentAddress);
3204
- const name = `Account ${pairs.length}`;
3205
- let index = isEvm ? 1 : 0;
3206
- let valid = false;
3207
- do {
3208
- const exist = children.find(p => p.meta.suri === `//${index}`);
3209
- if (exist) {
3210
- index++;
3211
- } else {
3212
- valid = true;
3213
- }
3214
- } while (!valid);
3215
- const meta = {
3216
- name,
3217
- parentAddress,
3218
- suri: `//${index}`
3219
- };
3220
- const childPair = isEvm ? parentPair.deriveEvm(index, meta) : parentPair.derive(meta.suri, meta);
3221
- const address = childPair.address;
3222
- this._saveCurrentAccountAddress(address, () => {
3223
- _uiKeyring.keyring.addPair(childPair, true);
3224
- this._addAddressToAuthList(address, true);
3225
- });
2341
+ derivationCreateV3(request) {
2342
+ const rs = this.#koniState.keyringService.context.derivationAccountProxyCreate(request);
3226
2343
  if (this.#alwaysLock) {
3227
2344
  this.keyringLock();
3228
2345
  }
3229
- return true;
2346
+ return rs;
3230
2347
  }
3231
- validateDerivePath(_ref74) {
3232
- let {
3233
- parentAddress,
3234
- suri
3235
- } = _ref74;
3236
- const parentPair = _uiKeyring.keyring.getPair(parentAddress);
3237
- const isEvm = parentPair.type === 'ethereum';
3238
- if (parentPair.isLocked) {
3239
- _uiKeyring.keyring.unlockPair(parentPair.address);
3240
- }
3241
- const meta = {
3242
- parentAddress
3243
- };
3244
- let childPair;
3245
- if (isEvm) {
3246
- let index = 0;
3247
- try {
3248
- const reg = /^\d+$/;
3249
- const path = suri.split('//')[1];
3250
- if (reg.test(path)) {
3251
- index = parseInt(path);
3252
- }
3253
- } catch (e) {}
3254
- if (!index) {
3255
- throw Error((0, _i18next.t)('Invalid derive path'));
3256
- }
3257
- meta.suri = `//${index}`;
3258
- childPair = parentPair.deriveEvm(index, meta);
3259
- } else {
3260
- meta.suri = suri;
3261
- childPair = parentPair.derive(suri, meta);
3262
- }
3263
- return {
3264
- address: childPair.address,
3265
- suri: meta.suri
3266
- };
2348
+ validateDerivePath(request) {
2349
+ return this.#koniState.keyringService.context.validateDerivePath(request);
3267
2350
  }
3268
- getListDeriveAccounts(_ref75) {
3269
- let {
3270
- limit,
3271
- page,
3272
- parentAddress
3273
- } = _ref75;
3274
- const parentPair = _uiKeyring.keyring.getPair(parentAddress);
3275
- const isEvm = parentPair.type === 'ethereum';
3276
- if (parentPair.isLocked) {
3277
- _uiKeyring.keyring.unlockPair(parentPair.address);
3278
- }
3279
- const start = (page - 1) * limit + (isEvm ? 1 : 0);
3280
- const end = start + limit;
3281
- const result = [];
3282
- for (let i = start; i < end; i++) {
3283
- const suri = `//${i}`;
3284
- const pair = isEvm ? parentPair.deriveEvm(i, {}) : parentPair.derive(suri, {});
3285
- result.push({
3286
- address: pair.address,
3287
- suri: suri
3288
- });
3289
- }
3290
- return {
3291
- result: result
3292
- };
2351
+ getDeriveSuggestion(request) {
2352
+ return this.#koniState.keyringService.context.getDeriveSuggestion(request);
2353
+ }
2354
+ getListDeriveAccounts(request) {
2355
+ return this.#koniState.keyringService.context.getListDeriveAccounts(request);
3293
2356
  }
3294
2357
 
3295
2358
  // ChainService -------------------------------------------------
@@ -3380,10 +2443,10 @@ class KoniExtension {
3380
2443
  getSupportedSmartContractTypes() {
3381
2444
  return this.#koniState.getSupportedSmartContractTypes();
3382
2445
  }
3383
- getTransaction(_ref76) {
2446
+ getTransaction(_ref43) {
3384
2447
  let {
3385
2448
  id
3386
- } = _ref76;
2449
+ } = _ref43;
3387
2450
  const {
3388
2451
  transaction,
3389
2452
  ...transactionResult
@@ -3393,8 +2456,8 @@ class KoniExtension {
3393
2456
  subscribeTransactions(id, port) {
3394
2457
  const cb = (0, _subscriptions.createSubscription)(id, port);
3395
2458
  function convertRs(rs) {
3396
- return Object.fromEntries(Object.entries(rs).map(_ref77 => {
3397
- let [key, value] = _ref77;
2459
+ return Object.fromEntries(Object.entries(rs).map(_ref44 => {
2460
+ let [key, value] = _ref44;
3398
2461
  const {
3399
2462
  additionalValidator,
3400
2463
  eventsHandler,
@@ -3426,10 +2489,10 @@ class KoniExtension {
3426
2489
  });
3427
2490
  return notificationSubject.value;
3428
2491
  }
3429
- async reloadCron(_ref78) {
2492
+ async reloadCron(_ref45) {
3430
2493
  let {
3431
2494
  data
3432
- } = _ref78;
2495
+ } = _ref45;
3433
2496
  if (data === 'nft') {
3434
2497
  return await this.#koniState.reloadNft();
3435
2498
  } else if (data === 'staking') {
@@ -3473,20 +2536,20 @@ class KoniExtension {
3473
2536
 
3474
2537
  // Phishing detect
3475
2538
 
3476
- async passPhishingPage(_ref79) {
2539
+ async passPhishingPage(_ref46) {
3477
2540
  let {
3478
2541
  url
3479
- } = _ref79;
2542
+ } = _ref46;
3480
2543
  return await this.#koniState.approvePassPhishingPage(url);
3481
2544
  }
3482
2545
 
3483
2546
  /// Wallet connect
3484
2547
 
3485
2548
  // Connect
3486
- async connectWalletConnect(_ref80) {
2549
+ async connectWalletConnect(_ref47) {
3487
2550
  let {
3488
2551
  uri
3489
- } = _ref80;
2552
+ } = _ref47;
3490
2553
  await this.#koniState.walletConnectService.connect(uri);
3491
2554
  return true;
3492
2555
  }
@@ -3499,11 +2562,11 @@ class KoniExtension {
3499
2562
  });
3500
2563
  return this.#koniState.requestService.allConnectWCRequests;
3501
2564
  }
3502
- async approveWalletConnectSession(_ref81) {
2565
+ async approveWalletConnectSession(_ref48) {
3503
2566
  let {
3504
2567
  accounts: selectedAccounts,
3505
2568
  id
3506
- } = _ref81;
2569
+ } = _ref48;
3507
2570
  const request = this.#koniState.requestService.getConnectWCRequest(id);
3508
2571
  if ((0, _helpers2.isProposalExpired)(request.request.params)) {
3509
2572
  throw new Error('The proposal has been expired');
@@ -3515,22 +2578,22 @@ class KoniExtension {
3515
2578
  const availableNamespaces = {};
3516
2579
  const namespaces = {};
3517
2580
  const chainInfoMap = this.#koniState.getChainInfoMap();
3518
- Object.entries(requiredNamespaces).forEach(_ref82 => {
3519
- let [key, namespace] = _ref82;
2581
+ Object.entries(requiredNamespaces).forEach(_ref49 => {
2582
+ let [key, namespace] = _ref49;
3520
2583
  if ((0, _helpers2.isSupportWalletConnectNamespace)(key)) {
3521
2584
  if (namespace.chains) {
3522
2585
  const unSupportChains = namespace.chains.filter(chain => !(0, _helpers2.isSupportWalletConnectChain)(chain, chainInfoMap));
3523
2586
  if (unSupportChains.length) {
3524
- throw new Error((0, _utils5.getSdkError)('UNSUPPORTED_CHAINS').message + ' ' + unSupportChains.toString());
2587
+ throw new Error((0, _utils6.getSdkError)('UNSUPPORTED_CHAINS').message + ' ' + unSupportChains.toString());
3525
2588
  }
3526
2589
  availableNamespaces[key] = namespace;
3527
2590
  }
3528
2591
  } else {
3529
- throw new Error((0, _utils5.getSdkError)('UNSUPPORTED_NAMESPACE_KEY').message + ' ' + key);
2592
+ throw new Error((0, _utils6.getSdkError)('UNSUPPORTED_NAMESPACE_KEY').message + ' ' + key);
3530
2593
  }
3531
2594
  });
3532
- Object.entries(optionalNamespaces).forEach(_ref83 => {
3533
- let [key, namespace] = _ref83;
2595
+ Object.entries(optionalNamespaces).forEach(_ref50 => {
2596
+ let [key, namespace] = _ref50;
3534
2597
  if ((0, _helpers2.isSupportWalletConnectNamespace)(key)) {
3535
2598
  if (namespace.chains) {
3536
2599
  const supportChains = namespace.chains.filter(chain => (0, _helpers2.isSupportWalletConnectChain)(chain, chainInfoMap)) || [];
@@ -3554,11 +2617,11 @@ class KoniExtension {
3554
2617
  }
3555
2618
  }
3556
2619
  });
3557
- Object.entries(availableNamespaces).forEach(_ref84 => {
3558
- let [key, namespace] = _ref84;
2620
+ Object.entries(availableNamespaces).forEach(_ref51 => {
2621
+ let [key, namespace] = _ref51;
3559
2622
  if (namespace.chains) {
3560
2623
  const accounts = [];
3561
- const chains = (0, _utils4.uniqueStringArray)(namespace.chains);
2624
+ const chains = (0, _utils5.uniqueStringArray)(namespace.chains);
3562
2625
  chains.forEach(chain => {
3563
2626
  accounts.push(...selectedAccounts.filter(address => (0, _utilCrypto.isEthereumAddress)(address) === (key === _constants5.WALLET_CONNECT_EIP155_NAMESPACE)).map(address => `${chain}:${address}`));
3564
2627
  });
@@ -3579,10 +2642,10 @@ class KoniExtension {
3579
2642
  request.resolve();
3580
2643
  return true;
3581
2644
  }
3582
- async rejectWalletConnectSession(_ref85) {
2645
+ async rejectWalletConnectSession(_ref52) {
3583
2646
  let {
3584
2647
  id
3585
- } = _ref85;
2648
+ } = _ref52;
3586
2649
  const request = this.#koniState.requestService.getConnectWCRequest(id);
3587
2650
  const wcId = request.request.id;
3588
2651
  if ((0, _helpers2.isProposalExpired)(request.request.params)) {
@@ -3604,10 +2667,10 @@ class KoniExtension {
3604
2667
  });
3605
2668
  return this.#koniState.walletConnectService.sessions;
3606
2669
  }
3607
- async disconnectWalletConnectSession(_ref86) {
2670
+ async disconnectWalletConnectSession(_ref53) {
3608
2671
  let {
3609
2672
  topic
3610
- } = _ref86;
2673
+ } = _ref53;
3611
2674
  await this.#koniState.walletConnectService.disconnect(topic);
3612
2675
  return true;
3613
2676
  }
@@ -3620,18 +2683,18 @@ class KoniExtension {
3620
2683
  });
3621
2684
  return this.#koniState.requestService.allNotSupportWCRequests;
3622
2685
  }
3623
- approveWalletConnectNotSupport(_ref87) {
2686
+ approveWalletConnectNotSupport(_ref54) {
3624
2687
  let {
3625
2688
  id
3626
- } = _ref87;
2689
+ } = _ref54;
3627
2690
  const request = this.#koniState.requestService.getNotSupportWCRequest(id);
3628
2691
  request.resolve();
3629
2692
  return true;
3630
2693
  }
3631
- rejectWalletConnectNotSupport(_ref88) {
2694
+ rejectWalletConnectNotSupport(_ref55) {
3632
2695
  let {
3633
2696
  id
3634
- } = _ref88;
2697
+ } = _ref55;
3635
2698
  const request = this.#koniState.requestService.getNotSupportWCRequest(id);
3636
2699
  request.reject(new Error('USER_REJECTED'));
3637
2700
  return true;
@@ -3639,11 +2702,11 @@ class KoniExtension {
3639
2702
 
3640
2703
  /// Manta
3641
2704
 
3642
- async enableMantaPay(_ref89) {
2705
+ async enableMantaPay(_ref56) {
3643
2706
  let {
3644
2707
  address,
3645
2708
  password
3646
- } = _ref89;
2709
+ } = _ref56;
3647
2710
  // always takes the current account
3648
2711
  function timeout() {
3649
2712
  return new Promise(resolve => setTimeout(resolve, 1500));
@@ -3665,7 +2728,7 @@ class KoniExtension {
3665
2728
  }
3666
2729
  const result = await this.#koniState.enableMantaPay(true, address, password, mnemonic.result);
3667
2730
  this.#skipAutoLock = true;
3668
- await this.saveCurrentAccountAddress({
2731
+ await this.saveCurrentAccountProxy({
3669
2732
  address
3670
2733
  });
3671
2734
  const unsubSyncProgress = await ((_this$koniState$chain = this.#koniState.chainService) === null || _this$koniState$chain === void 0 ? void 0 : (_this$koniState$chain2 = _this$koniState$chain.mantaPay) === null || _this$koniState$chain2 === void 0 ? void 0 : _this$koniState$chain2.subscribeSyncProgress());
@@ -3700,11 +2763,11 @@ class KoniExtension {
3700
2763
  }
3701
2764
  async initSyncMantaPay(address) {
3702
2765
  var _this$koniState$chain3, _this$koniState$chain4, _this$koniState$chain5, _this$koniState$chain6;
3703
- if ((_this$koniState$chain3 = this.#koniState.chainService) !== null && _this$koniState$chain3 !== void 0 && (_this$koniState$chain4 = _this$koniState$chain3.mantaPay) !== null && _this$koniState$chain4 !== void 0 && _this$koniState$chain4.getSyncState().isSyncing || !_utils4.MODULE_SUPPORT.MANTA_ZK) {
2766
+ if ((_this$koniState$chain3 = this.#koniState.chainService) !== null && _this$koniState$chain3 !== void 0 && (_this$koniState$chain4 = _this$koniState$chain3.mantaPay) !== null && _this$koniState$chain4 !== void 0 && _this$koniState$chain4.getSyncState().isSyncing || !_utils5.MODULE_SUPPORT.MANTA_ZK) {
3704
2767
  return;
3705
2768
  }
3706
2769
  this.#skipAutoLock = true;
3707
- await this.saveCurrentAccountAddress({
2770
+ await this.saveCurrentAccountProxy({
3708
2771
  address
3709
2772
  });
3710
2773
  const unsubSyncProgress = await ((_this$koniState$chain5 = this.#koniState.chainService) === null || _this$koniState$chain5 === void 0 ? void 0 : (_this$koniState$chain6 = _this$koniState$chain5.mantaPay) === null || _this$koniState$chain6 === void 0 ? void 0 : _this$koniState$chain6.subscribeSyncProgress());
@@ -3733,6 +2796,22 @@ class KoniExtension {
3733
2796
  async disableMantaPay(address) {
3734
2797
  return this.#koniState.disableMantaPay(address);
3735
2798
  }
2799
+ async isTonBounceableAddress(_ref57) {
2800
+ let {
2801
+ address,
2802
+ chain
2803
+ } = _ref57;
2804
+ try {
2805
+ const tonApi = this.#koniState.getTonApi(chain);
2806
+ const state = await tonApi.getAccountState(address);
2807
+ const isActive = state === 'active';
2808
+ const isBounceable = (0, _utils3.isBounceableAddress)(address);
2809
+ return !isActive && isBounceable;
2810
+ } catch (error) {
2811
+ console.error(`Failed to validate address ${address} on chain ${chain}:`, error);
2812
+ return false;
2813
+ }
2814
+ }
3736
2815
  subscribeMantaPayConfig(id, port) {
3737
2816
  const cb = (0, _subscriptions.createSubscription)(id, port);
3738
2817
  const mantaPayConfigSubscription = this.#koniState.subscribeMantaPayConfig().subscribe({
@@ -3767,10 +2846,10 @@ class KoniExtension {
3767
2846
 
3768
2847
  /* Metadata */
3769
2848
 
3770
- async findRawMetadata(_ref90) {
2849
+ async findRawMetadata(_ref58) {
3771
2850
  let {
3772
2851
  genesisHash
3773
- } = _ref90;
2852
+ } = _ref58;
3774
2853
  const {
3775
2854
  metadata,
3776
2855
  specVersion,
@@ -3784,20 +2863,20 @@ class KoniExtension {
3784
2863
  userExtensions
3785
2864
  };
3786
2865
  }
3787
- async calculateMetadataHash(_ref91) {
2866
+ async calculateMetadataHash(_ref59) {
3788
2867
  let {
3789
2868
  chain
3790
- } = _ref91;
2869
+ } = _ref59;
3791
2870
  const hash = await this.#koniState.calculateMetadataHash(chain);
3792
2871
  return {
3793
2872
  metadataHash: hash || ''
3794
2873
  };
3795
2874
  }
3796
- async shortenMetadata(_ref92) {
2875
+ async shortenMetadata(_ref60) {
3797
2876
  let {
3798
2877
  chain,
3799
2878
  txBlob
3800
- } = _ref92;
2879
+ } = _ref60;
3801
2880
  const shorten = await this.#koniState.shortenMetadata(chain, txBlob);
3802
2881
  return {
3803
2882
  txMetadata: shorten || ''
@@ -3817,11 +2896,11 @@ class KoniExtension {
3817
2896
 
3818
2897
  /// Inject account
3819
2898
  addInjects(request) {
3820
- this.#koniState.keyringService.addInjectAccounts(request.accounts);
2899
+ this.#koniState.keyringService.context.addInjectAccounts(request.accounts);
3821
2900
  return true;
3822
2901
  }
3823
2902
  removeInjects(request) {
3824
- this.#koniState.keyringService.removeInjectAccounts(request.addresses);
2903
+ this.#koniState.keyringService.context.removeInjectAccounts(request.addresses);
3825
2904
  return true;
3826
2905
  }
3827
2906
  async subscribeYieldPoolInfo(id, port) {
@@ -3853,7 +2932,7 @@ class KoniExtension {
3853
2932
  address
3854
2933
  } = data;
3855
2934
  if (!data) {
3856
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR)]);
2935
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INTERNAL_ERROR)]);
3857
2936
  }
3858
2937
  const isLastStep = inputData.currentStep + 1 === path.steps.length;
3859
2938
  const yieldValidation = await this.#koniState.earningService.validateYieldJoin({
@@ -3988,7 +3067,7 @@ class KoniExtension {
3988
3067
  } = params;
3989
3068
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
3990
3069
  if (!poolHandler) {
3991
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
3070
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INVALID_PARAMS)]);
3992
3071
  }
3993
3072
  const extrinsic = await this.#koniState.earningService.handleYieldWithdraw(params);
3994
3073
  return await this.#koniState.transactionService.handleTransaction({
@@ -4008,7 +3087,7 @@ class KoniExtension {
4008
3087
  } = params;
4009
3088
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
4010
3089
  if (!poolHandler || !selectedUnstaking) {
4011
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
3090
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INVALID_PARAMS)]);
4012
3091
  }
4013
3092
  const chain = poolHandler.chain;
4014
3093
  const extrinsic = await this.#koniState.earningService.handleYieldCancelUnstake(params);
@@ -4028,7 +3107,7 @@ class KoniExtension {
4028
3107
  } = params;
4029
3108
  const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
4030
3109
  if (!address || !poolHandler) {
4031
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS)]);
3110
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INVALID_PARAMS)]);
4032
3111
  }
4033
3112
  const extrinsic = await this.#koniState.earningService.handleYieldClaimReward(params);
4034
3113
  return await this.#koniState.transactionService.handleTransaction({
@@ -4043,18 +3122,18 @@ class KoniExtension {
4043
3122
 
4044
3123
  /* Campaign */
4045
3124
 
4046
- unlockDotCheckCanMint(_ref93) {
3125
+ unlockDotCheckCanMint(_ref61) {
4047
3126
  let {
4048
3127
  address,
4049
3128
  network,
4050
3129
  slug
4051
- } = _ref93;
3130
+ } = _ref61;
4052
3131
  return this.#koniState.mintCampaignService.unlockDotCampaign.canMint(address, slug, network);
4053
3132
  }
4054
- unlockDotSubscribeMintedData(id, port, _ref94) {
3133
+ unlockDotSubscribeMintedData(id, port, _ref62) {
4055
3134
  let {
4056
3135
  transactionId
4057
- } = _ref94;
3136
+ } = _ref62;
4058
3137
  const cb = (0, _subscriptions.createSubscription)(id, port);
4059
3138
  const subscription = this.#koniState.mintCampaignService.unlockDotCampaign.subscribeMintedNft(transactionId, cb);
4060
3139
  this.createUnsubscriptionHandle(id, subscription.unsubscribe);
@@ -4086,10 +3165,10 @@ class KoniExtension {
4086
3165
  });
4087
3166
  return filterBanner(await this.#koniState.campaignService.getProcessingCampaign());
4088
3167
  }
4089
- async completeCampaignBanner(_ref95) {
3168
+ async completeCampaignBanner(_ref63) {
4090
3169
  let {
4091
3170
  slug
4092
- } = _ref95;
3171
+ } = _ref63;
4093
3172
  const campaign = await this.#koniState.dbService.getCampaign(slug);
4094
3173
  if (campaign) {
4095
3174
  await this.#koniState.dbService.upsertCampaign({
@@ -4239,7 +3318,7 @@ class KoniExtension {
4239
3318
  recipient
4240
3319
  } = inputData;
4241
3320
  if (!quote || !address || !process) {
4242
- return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR)]);
3321
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types2.BasicTxErrorType.INTERNAL_ERROR)]);
4243
3322
  }
4244
3323
  const isLastStep = inputData.currentStep + 1 === process.steps.length;
4245
3324
  const swapValidations = await this.#koniState.swapService.validateSwapProcess({
@@ -4310,22 +3389,8 @@ class KoniExtension {
4310
3389
  case 'pri(ping)':
4311
3390
  return 'pong';
4312
3391
  /// Clone from PolkadotJs
4313
- case 'pri(accounts.create.external)':
4314
- return this.accountsCreateExternal(request);
4315
- case 'pri(accounts.create.hardware)':
4316
- return this.accountsCreateHardware(request);
4317
- case 'pri(accounts.create.suri)':
4318
- return this.accountsCreateSuri(request);
4319
- case 'pri(accounts.changePassword)':
4320
- return this.accountsChangePassword(request);
4321
- case 'pri(accounts.export)':
3392
+ case 'pri(accounts.export.json)':
4322
3393
  return this.accountsExport(request);
4323
- case 'pri(accounts.show)':
4324
- return this.accountsShow(request);
4325
- case 'pri(accounts.subscribe)':
4326
- return this.accountsSubscribe(id, port);
4327
- case 'pri(accounts.validate)':
4328
- return this.accountsValidate(request);
4329
3394
  case 'pri(metadata.approve)':
4330
3395
  return this.metadataApprove(request);
4331
3396
  case 'pri(metadata.get)':
@@ -4336,20 +3401,6 @@ class KoniExtension {
4336
3401
  return this.metadataReject(request);
4337
3402
  case 'pri(metadata.requests)':
4338
3403
  return this.metadataSubscribe(id, port);
4339
- case 'pri(derivation.create)':
4340
- return this.derivationCreate(request);
4341
- case 'pri(derivation.validate)':
4342
- return this.derivationValidate(request);
4343
- case 'pri(json.restore)':
4344
- return this.jsonRestore(request);
4345
- case 'pri(json.batchRestore)':
4346
- return this.batchRestore(request);
4347
- case 'pri(json.account.info)':
4348
- return this.jsonGetAccountInfo(request);
4349
- case 'pri(seed.create)':
4350
- return this.seedCreate(request);
4351
- case 'pri(seed.validate)':
4352
- return this.seedValidate(request);
4353
3404
  case 'pri(signing.approve.signature)':
4354
3405
  return this.signingApproveSignature(request);
4355
3406
  case 'pri(signing.cancel)':
@@ -4428,14 +3479,6 @@ class KoniExtension {
4428
3479
  return this.getCrowdloanContributions(request);
4429
3480
  case 'pri(crowdloan.getSubscription)':
4430
3481
  return this.subscribeCrowdloan(id, port);
4431
- case 'pri(derivation.createV2)':
4432
- return this.derivationCreateV2(request);
4433
- case 'pri(accounts.batchExportV2)':
4434
- return this.batchExportV2(request);
4435
- case 'pri(json.restoreV2)':
4436
- return await this.jsonRestoreV2(request);
4437
- case 'pri(json.batchRestoreV2)':
4438
- return await this.batchRestoreV2(request);
4439
3482
  case 'pri(nft.getNft)':
4440
3483
  return await this.getNft();
4441
3484
  case 'pri(nft.getSubscription)':
@@ -4511,7 +3554,7 @@ class KoniExtension {
4511
3554
  /* Account management */
4512
3555
  // Add account
4513
3556
  case 'pri(accounts.create.suriV2)':
4514
- return await this.accountsCreateSuriV2(request);
3557
+ return this.accountsCreateSuriV2(request);
4515
3558
  case 'pri(accounts.create.externalV2)':
4516
3559
  return await this.accountsCreateExternalV2(request);
4517
3560
  case 'pri(accounts.create.hardwareV2)':
@@ -4520,6 +3563,14 @@ class KoniExtension {
4520
3563
  return await this.accountsCreateHardwareMultiple(request);
4521
3564
  case 'pri(accounts.create.withSecret)':
4522
3565
  return await this.accountsCreateWithSecret(request);
3566
+ case 'pri(accounts.json.info)':
3567
+ return this.parseInfoSingleJson(request);
3568
+ case 'pri(accounts.json.restoreV2)':
3569
+ return this.jsonRestoreV2(request);
3570
+ case 'pri(accounts.json.batchInfo)':
3571
+ return this.parseInfoMultiJson(request);
3572
+ case 'pri(accounts.json.batchRestoreV2)':
3573
+ return this.batchRestoreV2(request);
4523
3574
  case 'pri(seed.createV2)':
4524
3575
  return this.seedCreateV2(request);
4525
3576
 
@@ -4528,43 +3579,54 @@ class KoniExtension {
4528
3579
  return await this.accountsForgetOverride(request);
4529
3580
 
4530
3581
  // Validate account
4531
- case 'pri(seed.validateV2)':
3582
+ case 'pri(accounts.validate.seed)':
4532
3583
  return this.seedValidateV2(request);
4533
- case 'pri(privateKey.validateV2)':
4534
- return this.metamaskPrivateKeyValidateV2(request);
4535
- case 'pri(accounts.checkPublicAndSecretKey)':
3584
+ case 'pri(accounts.validate.privateKey)':
3585
+ return this.privateKeyValidateV2(request);
3586
+ case 'pri(accounts.validate.substrate.publicAndPrivateKey)':
4536
3587
  return this.checkPublicAndSecretKey(request);
3588
+ case 'pri(accounts.validate.name)':
3589
+ return this.checkNameExists(request);
3590
+ case 'pri(accounts.validate.bounceable)':
3591
+ return this.isTonBounceableAddress(request);
4537
3592
 
4538
3593
  // Export account
4539
- case 'pri(accounts.exportPrivateKey)':
3594
+ case 'pri(accounts.export.privateKey)':
4540
3595
  return this.accountExportPrivateKey(request);
3596
+ case 'pri(accounts.export.json.batch)':
3597
+ return this.batchExportV2(request);
3598
+ case 'pri(accounts.export.mnemonic)':
3599
+ return this.exportAccountProxyMnemonic(request);
4541
3600
 
4542
3601
  // Subscribe account
4543
- case 'pri(accounts.subscribeWithCurrentAddress)':
3602
+ case 'pri(accounts.subscribeWithCurrentProxy)':
4544
3603
  return await this.accountsGetAllWithCurrentAddress(id, port);
4545
3604
  case 'pri(accounts.subscribeAccountsInputAddress)':
4546
- return this.accountsGetAll(id, port);
3605
+ return this.subscribeInputAddressData(request, id, port);
4547
3606
 
4548
3607
  // Save current account
4549
- case 'pri(currentAccount.saveAddress)':
4550
- return await this.saveCurrentAccountAddress(request);
4551
- case 'pri(accounts.updateCurrentAddress)':
4552
- return this.updateCurrentAccountAddress(request);
3608
+ case 'pri(accounts.saveCurrentProxy)':
3609
+ return await this.saveCurrentAccountProxy(request);
4553
3610
 
4554
3611
  // Edit account
4555
3612
  case 'pri(accounts.edit)':
4556
3613
  return this.accountsEdit(request);
3614
+ // Ton change wallet contract version
3615
+ case 'pri(accounts.ton.version.map)':
3616
+ return this.tonGetAllTonWalletContractVersion(request);
3617
+ case 'pri(accounts.ton.version.change)':
3618
+ return this.tonAccountChangeWalletContractVersion(request);
4557
3619
 
4558
3620
  // Save contact address
4559
- case 'pri(accounts.saveRecent)':
3621
+ case 'pri(addressBook.saveRecent)':
4560
3622
  return this.saveRecentAccount(request);
4561
- case 'pri(accounts.editContact)':
3623
+ case 'pri(addressBook.edit)':
4562
3624
  return this.editContactAccount(request);
4563
- case 'pri(accounts.deleteContact)':
3625
+ case 'pri(addressBook.delete)':
4564
3626
  return this.deleteContactAccount(request);
4565
3627
 
4566
3628
  // Subscribe address
4567
- case 'pri(accounts.subscribeAddresses)':
3629
+ case 'pri(addressBook.subscribe)':
4568
3630
  return this.subscribeAddresses(id, port);
4569
3631
  case 'pri(accounts.resolveDomainToAddress)':
4570
3632
  return await this.resolveDomainByAddress(request);
@@ -4622,8 +3684,6 @@ class KoniExtension {
4622
3684
  return await this.updateAssetSetting(request);
4623
3685
  case 'pri(transfer.getMaxTransferable)':
4624
3686
  return this.getMaxTransferable(request);
4625
- case 'pri(transfer.subscribeMaxTransferable)':
4626
- return this.getMaxTransferable(request);
4627
3687
  case 'pri(freeBalance.get)':
4628
3688
  return this.getAddressTransferableBalance(request);
4629
3689
  case 'pri(freeBalance.subscribe)':
@@ -4632,8 +3692,6 @@ class KoniExtension {
4632
3692
  return this.cancelSubscription(request);
4633
3693
  case 'pri(chainService.recoverSubstrateApi)':
4634
3694
  return this.recoverDotSamaApi(request);
4635
- case 'pri(accounts.get.meta)':
4636
- return this.getAccountMeta(request);
4637
3695
 
4638
3696
  /// Send NFT
4639
3697
  case 'pri(evmNft.submitTransaction)':
@@ -4666,12 +3724,14 @@ class KoniExtension {
4666
3724
  return this.rejectExternalRequest(request);
4667
3725
  case 'pri(account.external.resolve)':
4668
3726
  return this.resolveQrTransfer(request);
4669
- case 'pri(accounts.tie)':
4670
- return this.accountsTie2(request);
4671
3727
  case 'pri(confirmations.subscribe)':
4672
3728
  return this.subscribeConfirmations(id, port);
3729
+ case 'pri(confirmationsTon.subscribe)':
3730
+ return this.subscribeConfirmationsTon(id, port);
4673
3731
  case 'pri(confirmations.complete)':
4674
3732
  return await this.completeConfirmation(request);
3733
+ case 'pri(confirmationsTon.complete)':
3734
+ return await this.completeConfirmationTon(request);
4675
3735
 
4676
3736
  /// Stake
4677
3737
  case 'pri(bonding.getBondingOptions)':
@@ -4732,14 +3792,16 @@ class KoniExtension {
4732
3792
  return this.signingApprovePasswordV2(request);
4733
3793
 
4734
3794
  /// Derive account
4735
- case 'pri(derivation.validateV2)':
3795
+ case 'pri(accounts.derive.validateV2)':
4736
3796
  return this.validateDerivePath(request);
4737
- case 'pri(derivation.getList)':
3797
+ case 'pri(accounts.derive.getList)':
4738
3798
  return this.getListDeriveAccounts(request);
4739
- case 'pri(derivation.create.multiple)':
3799
+ case 'pri(accounts.derive.create.multiple)':
4740
3800
  return this.derivationCreateMultiple(request);
4741
- case 'pri(derivation.createV3)':
3801
+ case 'pri(accounts.derive.createV3)':
4742
3802
  return this.derivationCreateV3(request);
3803
+ case 'pri(accounts.derive.suggestion)':
3804
+ return this.getDeriveSuggestion(request);
4743
3805
 
4744
3806
  // Transaction
4745
3807
  case 'pri(transactions.getOne)':
@@ -4845,6 +3907,8 @@ class KoniExtension {
4845
3907
  return this.#koniState.migrateMV3LocalStorage(request);
4846
3908
  case 'pri(database.setLocalStorage)':
4847
3909
  return this.#koniState.setStorageFromWS(request);
3910
+ case 'pri(database.getLocalStorage)':
3911
+ return this.#koniState.getStorageFromWS(request);
4848
3912
  /* Database */
4849
3913
 
4850
3914
  /* Swap service */