@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
@@ -0,0 +1,250 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { AccountDeriveHandler, AccountInjectHandler, AccountJsonHandler, AccountLedgerHandler, AccountMnemonicHandler, AccountModifyHandler, AccountSecretHandler } from "./handlers/index.js";
5
+ import { AccountState } from "./state.js";
6
+ export class AccountContext {
7
+ constructor(koniState, parentService) {
8
+ this.koniState = koniState;
9
+ this.parentService = parentService;
10
+ this.state = new AccountState(this.koniState);
11
+ this.deriveHandler = new AccountDeriveHandler(this.parentService, this.state);
12
+ this.mnemonicHandler = new AccountMnemonicHandler(this.parentService, this.state);
13
+ this.jsonHandler = new AccountJsonHandler(this.parentService, this.state);
14
+ this.injectHandler = new AccountInjectHandler(this.parentService, this.state);
15
+ this.ledgerHandler = new AccountLedgerHandler(this.parentService, this.state);
16
+ this.modifyHandler = new AccountModifyHandler(this.parentService, this.state);
17
+ this.secretHandler = new AccountSecretHandler(this.parentService, this.state);
18
+ }
19
+
20
+ // TODO: Merge to value
21
+ get pairs() {
22
+ return this.state.pairs;
23
+ }
24
+
25
+ // TODO: Merge to value
26
+ get observable() {
27
+ return this.state.observable;
28
+ }
29
+ get value() {
30
+ return this.state.value;
31
+ }
32
+
33
+ // TODO: Merge to value
34
+ get contacts() {
35
+ return this.state.contacts;
36
+ }
37
+
38
+ // TODO: Merge to value
39
+ get accounts() {
40
+ return this.state.accounts;
41
+ }
42
+
43
+ /* Current account */
44
+
45
+ // TODO: Merge to value
46
+ get currentAccount() {
47
+ return this.state.currentAccount;
48
+ }
49
+ saveCurrentAccountProxyId(proxyId, callback, preventOneAccount) {
50
+ this.state.saveCurrentAccountProxyId(proxyId, callback, preventOneAccount);
51
+ }
52
+
53
+ /* Current account */
54
+
55
+ isUnifiedAccount(proxyId) {
56
+ return this.state.isUnifiedAccount(proxyId);
57
+ }
58
+ addressesByProxyId(proxyId) {
59
+ return this.state.addressesByProxyId(proxyId);
60
+ }
61
+
62
+ /* Modify accounts */
63
+
64
+ accountsEdit(request) {
65
+ return this.modifyHandler.accountsEdit(request);
66
+ }
67
+ checkNameExists({
68
+ name,
69
+ proxyId
70
+ }) {
71
+ const exists = this.state.checkNameExists(name, proxyId);
72
+ return {
73
+ isValid: !exists
74
+ };
75
+ }
76
+ async accountProxyForget(request) {
77
+ return this.modifyHandler.accountProxyForget(request);
78
+ }
79
+ keyringChangeMasterPassword(request, callback) {
80
+ return this.modifyHandler.keyringChangeMasterPassword(request, callback);
81
+ }
82
+ keyringMigrateMasterPassword(request, callback) {
83
+ return this.modifyHandler.keyringMigrateMasterPassword(request, callback);
84
+ }
85
+ tonGetAllTonWalletContractVersion(request) {
86
+ return this.modifyHandler.tonGetAllTonWalletContractVersion(request);
87
+ }
88
+ tonAccountChangeWalletContractVersion(request) {
89
+ return this.modifyHandler.tonAccountChangeWalletContractVersion(request);
90
+ }
91
+
92
+ /* Modify accounts */
93
+
94
+ /* Get address for another service */
95
+
96
+ getDecodedAddresses(accountProxy, allowGetAllAccount = true) {
97
+ return this.state.getDecodedAddresses(accountProxy, allowGetAllAccount);
98
+ }
99
+
100
+ /* Get address for another service */
101
+
102
+ /* Mnemonic */
103
+
104
+ /* Create seed */
105
+ mnemonicCreateV2(request) {
106
+ return this.mnemonicHandler.mnemonicCreateV2(request);
107
+ }
108
+
109
+ /* Validate seed */
110
+ mnemonicValidateV2(request) {
111
+ return this.mnemonicHandler.mnemonicValidateV2(request);
112
+ }
113
+
114
+ /* Add accounts from mnemonic */
115
+ accountsCreateSuriV2(request) {
116
+ return this.mnemonicHandler.accountsCreateSuriV2(request);
117
+ }
118
+
119
+ /* Export mnemonic */
120
+ exportAccountProxyMnemonic(request) {
121
+ return this.mnemonicHandler.exportAccountProxyMnemonic(request);
122
+ }
123
+
124
+ /* Mnemonic */
125
+
126
+ /* Add QR-signer, read-only */
127
+ async accountsCreateExternalV2(request) {
128
+ return this.secretHandler.accountsCreateExternalV2(request);
129
+ }
130
+
131
+ /* Import ethereum account with the private key */
132
+ privateKeyValidateV2(request) {
133
+ return this.secretHandler.privateKeyValidateV2(request);
134
+ }
135
+
136
+ /* Import ethereum account with the private key */
137
+
138
+ /* Ledger */
139
+
140
+ /* For custom derive path */
141
+ async accountsCreateHardwareV2(request) {
142
+ return this.ledgerHandler.accountsCreateHardwareV2(request);
143
+ }
144
+
145
+ /* For multi select */
146
+ async accountsCreateHardwareMultiple(request) {
147
+ return this.ledgerHandler.accountsCreateHardwareMultiple(request);
148
+ }
149
+
150
+ /* Ledger */
151
+
152
+ /* JSON */
153
+
154
+ parseInfoSingleJson(request) {
155
+ return this.jsonHandler.parseInfoSingleJson(request);
156
+ }
157
+ jsonRestoreV2(request, onDone) {
158
+ return this.jsonHandler.jsonRestoreV2(request, onDone);
159
+ }
160
+ parseInfoMultiJson(request) {
161
+ return this.jsonHandler.parseInfoMultiJson(request);
162
+ }
163
+ batchRestoreV2(request) {
164
+ return this.jsonHandler.batchRestoreV2(request);
165
+ }
166
+ batchExportV2(request) {
167
+ return this.jsonHandler.batchExportV2(request);
168
+ }
169
+
170
+ /* JSON */
171
+
172
+ /* Add with secret and public key */
173
+ async accountsCreateWithSecret(request) {
174
+ return this.secretHandler.accountsCreateWithSecret(request);
175
+ }
176
+ checkPublicAndSecretKey(request) {
177
+ return this.secretHandler.checkPublicAndSecretKey(request);
178
+ }
179
+ accountExportPrivateKey(request) {
180
+ return this.secretHandler.accountExportPrivateKey(request);
181
+ }
182
+
183
+ /* Derive */
184
+
185
+ /**
186
+ * @func derivationCreateMultiple
187
+ * @desc Derive multi account
188
+ * Note: Must update before re-use
189
+ * @deprecated
190
+ */
191
+ derivationCreateMultiple(request) {
192
+ return this.deriveHandler.derivationCreateMultiple(request);
193
+ }
194
+
195
+ /**
196
+ * @func getListDeriveAccounts
197
+ * @desc Get a derivation account list.
198
+ * Note: Must update before re-use
199
+ * @deprecated
200
+ */
201
+ getListDeriveAccounts(request) {
202
+ return this.deriveHandler.getListDeriveAccounts(request);
203
+ }
204
+
205
+ /* Validate derivation path */
206
+ validateDerivePath(request) {
207
+ return this.deriveHandler.validateDerivePath(request);
208
+ }
209
+
210
+ /* Validate derivation path */
211
+ getDeriveSuggestion(request) {
212
+ return this.deriveHandler.getDeriveSuggestion(request);
213
+ }
214
+
215
+ /* Derive account proxy */
216
+ derivationAccountProxyCreate(request) {
217
+ return this.deriveHandler.derivationAccountProxyCreate(request);
218
+ }
219
+
220
+ /* Derive */
221
+
222
+ /* Inject */
223
+
224
+ addInjectAccounts(accounts) {
225
+ this.injectHandler.addInjectAccounts(accounts);
226
+ }
227
+ removeInjectAccounts(_addresses) {
228
+ this.injectHandler.removeInjectAccounts(_addresses);
229
+ }
230
+
231
+ /* Inject */
232
+
233
+ /* Others */
234
+
235
+ removeNoneHardwareGenesisHash() {
236
+ this.state.removeNoneHardwareGenesisHash();
237
+ }
238
+ updateMetadataForPair() {
239
+ this.state.updateMetadataForPair();
240
+ }
241
+
242
+ /* Others */
243
+
244
+ /* Reset wallet */
245
+ resetWallet() {
246
+ this.state.resetWallet();
247
+ }
248
+
249
+ /* Reset wallet */
250
+ }
@@ -0,0 +1,11 @@
1
+ import { KeyringService } from '@subwallet/extension-base/services/keyring-service';
2
+ import { AccountState } from '../state';
3
+ /**
4
+ * @class AccountBaseHandler
5
+ * @description Base class for account actions
6
+ * */
7
+ export declare class AccountBaseHandler {
8
+ protected readonly state: AccountState;
9
+ protected readonly parentService: KeyringService;
10
+ constructor(parentService: KeyringService, state: AccountState);
11
+ }
@@ -0,0 +1,13 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ /**
5
+ * @class AccountBaseHandler
6
+ * @description Base class for account actions
7
+ * */
8
+ export class AccountBaseHandler {
9
+ constructor(parentService, state) {
10
+ this.state = state;
11
+ this.parentService = parentService;
12
+ }
13
+ }
@@ -0,0 +1,29 @@
1
+ import { RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, ResponseDeriveValidateV2, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion } from '@subwallet/extension-base/types';
2
+ import { AccountBaseHandler } from './Base';
3
+ /**
4
+ * @class AccountDeriveHandler
5
+ * @extends AccountBaseHandler
6
+ * @description Handler for account derivation
7
+ * */
8
+ export declare class AccountDeriveHandler extends AccountBaseHandler {
9
+ /**
10
+ * @func derivationCreateMultiple
11
+ * @desc Derive multi account
12
+ * @todo Must update before re-use
13
+ * @deprecated
14
+ */
15
+ derivationCreateMultiple({ isAllowed, items, parentAddress }: RequestDeriveCreateMultiple): boolean;
16
+ /**
17
+ * @func getListDeriveAccounts
18
+ * @desc Get a derivation account list.
19
+ * @todo Must update before re-use
20
+ * @deprecated
21
+ */
22
+ getListDeriveAccounts({ limit, page, parentAddress }: RequestGetDeriveAccounts): ResponseGetDeriveAccounts;
23
+ validateDerivePath({ proxyId, suri }: RequestDeriveValidateV2): ResponseDeriveValidateV2;
24
+ getDeriveSuggestion({ proxyId }: RequestGetDeriveSuggestion): ResponseGetDeriveSuggestion;
25
+ /**
26
+ * Derive account proxy
27
+ * */
28
+ derivationAccountProxyCreate(request: RequestDeriveCreateV3): boolean;
29
+ }
@@ -0,0 +1,365 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { ALL_ACCOUNT_KEY } from '@subwallet/extension-base/constants';
5
+ import { CommonAccountErrorType, DeriveErrorType, SWCommonAccountError, SWDeriveError } from '@subwallet/extension-base/types';
6
+ import { createAccountProxyId, derivePair, findSoloNextDerive, findUnifiedNextDerive, getSoloDerivationInfo, parseUnifiedSuriToDerivationPath, validateDerivationPath } from '@subwallet/extension-base/utils';
7
+ import { EthereumKeypairTypes, SubstrateKeypairTypes } from '@subwallet/keyring/types';
8
+ import { keyring } from '@subwallet/ui-keyring';
9
+ import { t } from 'i18next';
10
+ import { assert } from '@polkadot/util';
11
+ import { AccountBaseHandler } from "./Base.js";
12
+ const validDeriveKeypairTypes = [...SubstrateKeypairTypes, ...EthereumKeypairTypes, 'ton'];
13
+
14
+ /**
15
+ * @class AccountDeriveHandler
16
+ * @extends AccountBaseHandler
17
+ * @description Handler for account derivation
18
+ * */
19
+ export class AccountDeriveHandler extends AccountBaseHandler {
20
+ /* Derive */
21
+
22
+ /**
23
+ * @func derivationCreateMultiple
24
+ * @desc Derive multi account
25
+ * @todo Must update before re-use
26
+ * @deprecated
27
+ */
28
+ derivationCreateMultiple({
29
+ isAllowed,
30
+ items,
31
+ parentAddress
32
+ }) {
33
+ const parentPair = keyring.getPair(parentAddress);
34
+ const isEvm = parentPair.type === 'ethereum';
35
+ if (parentPair.isLocked) {
36
+ keyring.unlockPair(parentPair.address);
37
+ }
38
+ const createChild = ({
39
+ name,
40
+ suri
41
+ }) => {
42
+ const meta = {
43
+ name: name,
44
+ parentAddress
45
+ };
46
+ if (isEvm) {
47
+ let index = 0;
48
+ try {
49
+ const reg = /^\d+$/;
50
+ const path = suri.split('//')[1];
51
+ if (reg.test(path)) {
52
+ index = parseInt(path);
53
+ }
54
+ } catch (e) {}
55
+ if (!index) {
56
+ throw new SWDeriveError(DeriveErrorType.INVALID_DERIVATION_PATH);
57
+ }
58
+ meta.suri = `//${index}`;
59
+ return parentPair.evm.derive(index, meta);
60
+ } else {
61
+ meta.suri = suri;
62
+ return parentPair.substrate.derive(suri, meta);
63
+ }
64
+ };
65
+ const result = [];
66
+ for (const item of items) {
67
+ try {
68
+ const childPair = createChild(item);
69
+ const address = childPair.address;
70
+ keyring.addPair(childPair, true);
71
+ this.state._addAddressToAuthList(address, isAllowed);
72
+ result.push(childPair);
73
+ } catch (e) {
74
+ console.log(e);
75
+ }
76
+ }
77
+ if (result.length === 1) {
78
+ this.state.saveCurrentAccountProxyId(result[0].address);
79
+ } else {
80
+ this.state.saveCurrentAccountProxyId(ALL_ACCOUNT_KEY);
81
+ }
82
+ return true;
83
+ }
84
+
85
+ /**
86
+ * @func getListDeriveAccounts
87
+ * @desc Get a derivation account list.
88
+ * @todo Must update before re-use
89
+ * @deprecated
90
+ */
91
+ getListDeriveAccounts({
92
+ limit,
93
+ page,
94
+ parentAddress
95
+ }) {
96
+ const parentPair = keyring.getPair(parentAddress);
97
+ const isEvm = parentPair.type === 'ethereum';
98
+ if (parentPair.isLocked) {
99
+ keyring.unlockPair(parentPair.address);
100
+ }
101
+ const start = (page - 1) * limit + (isEvm ? 1 : 0);
102
+ const end = start + limit;
103
+ const result = [];
104
+ for (let i = start; i < end; i++) {
105
+ const suri = `//${i}`;
106
+ const pair = isEvm ? parentPair.evm.derive(i, {}) : parentPair.substrate.derive(suri, {});
107
+ result.push({
108
+ address: pair.address,
109
+ suri: suri
110
+ });
111
+ }
112
+ return {
113
+ result: result
114
+ };
115
+ }
116
+
117
+ /* Validate derivation path */
118
+ validateDerivePath({
119
+ proxyId,
120
+ suri
121
+ }) {
122
+ const isUnified = this.state.isUnifiedAccount(proxyId);
123
+ let type;
124
+ if (!isUnified) {
125
+ try {
126
+ const pair = keyring.getPair(proxyId);
127
+ type = pair.type;
128
+ } catch (e) {
129
+ throw new SWCommonAccountError(CommonAccountErrorType.ACCOUNT_NOT_FOUND);
130
+ }
131
+ }
132
+ const derivationInfo = validateDerivationPath(suri, type);
133
+ const account = this.state.accounts[proxyId];
134
+ if (derivationInfo) {
135
+ const accountTypes = account.accounts.map(acc => acc.type);
136
+
137
+ /* Minimum depth is 1 */
138
+ if (derivationInfo.depth < 1) {
139
+ return {
140
+ info: undefined,
141
+ error: new SWDeriveError(DeriveErrorType.MIN_DERIVATION_DEPTH).toJSON()
142
+ };
143
+ }
144
+
145
+ /* Maximum depth is 2 */
146
+ if (derivationInfo.depth > 2) {
147
+ return {
148
+ info: undefined,
149
+ error: new SWDeriveError(DeriveErrorType.MAX_DERIVATION_DEPTH).toJSON()
150
+ };
151
+ }
152
+ if (isUnified && derivationInfo.type === 'unified') {
153
+ return {
154
+ info: derivationInfo
155
+ };
156
+ } else if (accountTypes.includes(derivationInfo.type)) {
157
+ return {
158
+ info: derivationInfo
159
+ };
160
+ } else {
161
+ return {
162
+ info: undefined,
163
+ error: new SWDeriveError(DeriveErrorType.INVALID_DERIVATION_TYPE).toJSON()
164
+ };
165
+ }
166
+ } else {
167
+ return {
168
+ info: undefined,
169
+ error: new SWDeriveError(DeriveErrorType.INVALID_DERIVATION_PATH).toJSON()
170
+ };
171
+ }
172
+ }
173
+ getDeriveSuggestion({
174
+ proxyId
175
+ }) {
176
+ const isUnified = this.state.isUnifiedAccount(proxyId);
177
+ let rs;
178
+ if (isUnified) {
179
+ rs = findUnifiedNextDerive(proxyId, this.state.accounts);
180
+ } else {
181
+ let pair;
182
+ try {
183
+ pair = keyring.getPair(proxyId);
184
+ } catch (e) {}
185
+ if (!pair) {
186
+ return {
187
+ proxyId,
188
+ error: new SWCommonAccountError(CommonAccountErrorType.ACCOUNT_NOT_FOUND).toJSON()
189
+ };
190
+ }
191
+ if (!validDeriveKeypairTypes.includes(pair.type)) {
192
+ return {
193
+ proxyId,
194
+ error: new SWDeriveError(DeriveErrorType.INVALID_ACCOUNT_TYPE).toJSON()
195
+ };
196
+ }
197
+ rs = findSoloNextDerive(proxyId);
198
+ }
199
+ return {
200
+ proxyId,
201
+ info: {
202
+ suri: rs.suri,
203
+ derivationPath: rs.derivationPath
204
+ }
205
+ };
206
+ }
207
+
208
+ /**
209
+ * Derive account proxy
210
+ * */
211
+ derivationAccountProxyCreate(request) {
212
+ const {
213
+ name,
214
+ proxyId: deriveId,
215
+ suri
216
+ } = request;
217
+ const isUnified = this.state.isUnifiedAccount(deriveId);
218
+ const parentProxyId = this.state.belongUnifiedAccount(deriveId) || deriveId;
219
+ const rootId = this.state.value.accounts[parentProxyId].parentId || parentProxyId;
220
+ const rootProxyId = this.state.belongUnifiedAccount(rootId) || rootId;
221
+ const nameExists = this.state.checkNameExists(name);
222
+ if (nameExists) {
223
+ throw new SWCommonAccountError(CommonAccountErrorType.ACCOUNT_NAME_EXISTED);
224
+ }
225
+ const validateRs = this.validateDerivePath({
226
+ proxyId: deriveId,
227
+ suri
228
+ });
229
+ if (!validateRs.info) {
230
+ if (validateRs.error) {
231
+ throw Error(validateRs.error.message);
232
+ } else {
233
+ throw new SWDeriveError(DeriveErrorType.INVALID_DERIVATION_PATH);
234
+ }
235
+ }
236
+ const derivationInfo = validateRs.info;
237
+ const pairs = [];
238
+ const modifyPairs = this.state.modifyPairs;
239
+ let childAccountProxy;
240
+ let proxyId;
241
+
242
+ /**
243
+ * Can change to deep find root pair
244
+ * Now all root pair is in the first level, so don't need to deep find
245
+ */
246
+ const findRootPair = account => {
247
+ const deriveInfo = getSoloDerivationInfo(account.type, account);
248
+ const needChangeRoot = deriveInfo.depth > 0;
249
+ let rootPair;
250
+ if (needChangeRoot) {
251
+ try {
252
+ rootPair = keyring.getPair(account.parentAddress || '');
253
+ } catch (e) {}
254
+ } else {
255
+ try {
256
+ rootPair = keyring.getPair(account.address);
257
+ } catch (e) {}
258
+ }
259
+ return rootPair;
260
+ };
261
+ if (derivationInfo.type === 'unified') {
262
+ const accountProxy = this.state.value.accounts[deriveId];
263
+ if (!accountProxy) {
264
+ throw new SWCommonAccountError(CommonAccountErrorType.ACCOUNT_NOT_FOUND);
265
+ }
266
+ const accounts = accountProxy.accounts;
267
+ proxyId = createAccountProxyId(rootProxyId, suri);
268
+ for (const account of accounts) {
269
+ const rootPair = findRootPair(account);
270
+ if (!rootPair) {
271
+ throw new SWDeriveError(DeriveErrorType.ROOT_ACCOUNT_NOT_FOUND);
272
+ }
273
+ const derivationPath = parseUnifiedSuriToDerivationPath(derivationInfo.suri, account.type);
274
+ const childPair = derivePair(rootPair, request.name, derivationInfo.suri, derivationPath);
275
+ const address = childPair.address;
276
+ modifyPairs[address] = {
277
+ accountProxyId: proxyId,
278
+ migrated: true,
279
+ key: address
280
+ };
281
+ pairs.push(childPair);
282
+ }
283
+ childAccountProxy = {
284
+ id: proxyId,
285
+ name,
286
+ parentId: rootProxyId,
287
+ suri: suri
288
+ };
289
+ } else {
290
+ const type = derivationInfo.type;
291
+ if (isUnified) {
292
+ const accountProxy = this.state.value.accounts[deriveId];
293
+ const account = accountProxy.accounts.find(account => account.type === type);
294
+ if (!account) {
295
+ throw new SWCommonAccountError(CommonAccountErrorType.ACCOUNT_NOT_FOUND);
296
+ }
297
+ const rootPair = findRootPair(account);
298
+ if (!rootPair) {
299
+ throw new SWDeriveError(DeriveErrorType.ROOT_ACCOUNT_NOT_FOUND);
300
+ }
301
+ const childPair = derivePair(rootPair, request.name, derivationInfo.suri, derivationInfo.derivationPath);
302
+ const address = childPair.address;
303
+ proxyId = address;
304
+ modifyPairs[address] = {
305
+ accountProxyId: proxyId,
306
+ migrated: true,
307
+ key: address
308
+ };
309
+ childAccountProxy = {
310
+ id: proxyId,
311
+ name,
312
+ parentId: rootProxyId,
313
+ suri: suri
314
+ };
315
+ pairs.push(childPair);
316
+ } else {
317
+ const account = this.state.value.accounts[deriveId].accounts[0];
318
+ if (!account) {
319
+ throw new SWCommonAccountError(CommonAccountErrorType.ACCOUNT_NOT_FOUND);
320
+ }
321
+ const rootPair = findRootPair(account);
322
+ if (!rootPair) {
323
+ throw new SWDeriveError(DeriveErrorType.ROOT_ACCOUNT_NOT_FOUND);
324
+ }
325
+ const childPair = derivePair(rootPair, request.name, derivationInfo.suri, derivationInfo.derivationPath);
326
+ const address = childPair.address;
327
+ proxyId = address;
328
+ if (rootProxyId) {
329
+ modifyPairs[address] = {
330
+ accountProxyId: proxyId,
331
+ migrated: true,
332
+ key: address
333
+ };
334
+ childAccountProxy = {
335
+ id: proxyId,
336
+ name,
337
+ parentId: rootProxyId,
338
+ suri: suri
339
+ };
340
+ }
341
+ pairs.push(childPair);
342
+ }
343
+ }
344
+ const addresses = pairs.map(pair => pair.address);
345
+ const exists = this.state.checkAddressExists(addresses);
346
+ assert(!exists, t('Account already exists under the name "{{name}}"', {
347
+ replace: {
348
+ name: (exists === null || exists === void 0 ? void 0 : exists.name) || (exists === null || exists === void 0 ? void 0 : exists.address) || ''
349
+ }
350
+ }));
351
+ childAccountProxy && this.state.upsertAccountProxyByKey(childAccountProxy);
352
+ this.state.upsertModifyPairs(modifyPairs);
353
+ for (const childPair of pairs) {
354
+ keyring.addPair(childPair, true);
355
+ }
356
+ this.state.updateMetadataForPair();
357
+ this.state.updateMetadataForProxy();
358
+ this.state.saveCurrentAccountProxyId(proxyId, () => {
359
+ this.state._addAddressesToAuthList(pairs.map(pair => pair.address), true);
360
+ });
361
+ return true;
362
+ }
363
+
364
+ /* Derive */
365
+ }
@@ -0,0 +1,11 @@
1
+ import { InjectedAccountWithMeta } from '@subwallet/extension-inject/types';
2
+ import { AccountBaseHandler } from './Base';
3
+ /**
4
+ * @class AccountInjectHandler
5
+ * @extends AccountBaseHandler
6
+ * @description Handler for account inject actions
7
+ * */
8
+ export declare class AccountInjectHandler extends AccountBaseHandler {
9
+ addInjectAccounts(accounts: InjectedAccountWithMeta[]): void;
10
+ removeInjectAccounts(_addresses: string[]): void;
11
+ }