@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,533 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { _AssetType } from '@subwallet/chain-list/types';
5
+ import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
6
+ import { ALL_ACCOUNT_KEY, isProductionMode } from '@subwallet/extension-base/constants';
7
+ import { _getSubstrateGenesisHash } from '@subwallet/extension-base/services/chain-service/utils';
8
+ import { AccountActions, AccountChainType, AccountProxyType, AccountSignMode } from '@subwallet/extension-base/types';
9
+ import { getKeypairTypeByAddress, tonMnemonicToEntropy } from '@subwallet/keyring';
10
+ import { BitcoinKeypairTypes, EthereumKeypairTypes, TonKeypairTypes } from '@subwallet/keyring/types';
11
+ import { tonMnemonicValidate } from '@subwallet/keyring/utils';
12
+ import { hexStripPrefix, u8aToHex } from '@polkadot/util';
13
+ import { blake2AsHex, mnemonicToEntropy, mnemonicValidate } from '@polkadot/util-crypto';
14
+ import { getSoloDerivationInfo } from "./derive/index.js";
15
+ export const createAccountProxyId = (_suri, derivationPath) => {
16
+ let data = _suri;
17
+ if (mnemonicValidate(_suri)) {
18
+ const entropy = mnemonicToEntropy(_suri);
19
+ data = u8aToHex(entropy);
20
+ if (derivationPath) {
21
+ data = blake2AsHex(data, 256);
22
+ }
23
+ } else if (tonMnemonicValidate(_suri)) {
24
+ const entropy = tonMnemonicToEntropy(_suri);
25
+ data = u8aToHex(entropy);
26
+ if (derivationPath) {
27
+ data = blake2AsHex(data, 256);
28
+ }
29
+ }
30
+ if (derivationPath) {
31
+ data = hexStripPrefix(data).concat(derivationPath);
32
+ }
33
+ return blake2AsHex(data, 256);
34
+ };
35
+ export const getAccountChainType = type => {
36
+ return type ? EthereumKeypairTypes.includes(type) ? AccountChainType.ETHEREUM : TonKeypairTypes.includes(type) ? AccountChainType.TON : BitcoinKeypairTypes.includes(type) ? AccountChainType.BITCOIN : AccountChainType.SUBSTRATE : AccountChainType.SUBSTRATE;
37
+ };
38
+ export const getAccountSignMode = (address, _meta) => {
39
+ const meta = _meta;
40
+ if (!address || !meta) {
41
+ return AccountSignMode.UNKNOWN;
42
+ } else {
43
+ if (address === ALL_ACCOUNT_KEY) {
44
+ return AccountSignMode.ALL_ACCOUNT;
45
+ } else {
46
+ if (meta.isInjected) {
47
+ return AccountSignMode.INJECTED;
48
+ }
49
+ if (meta.isExternal) {
50
+ if (meta.isHardware) {
51
+ if (meta.isGeneric) {
52
+ return AccountSignMode.GENERIC_LEDGER;
53
+ } else {
54
+ return AccountSignMode.LEGACY_LEDGER;
55
+ }
56
+ } else if (meta.isReadOnly) {
57
+ return AccountSignMode.READ_ONLY;
58
+ } else {
59
+ return AccountSignMode.QR;
60
+ }
61
+ } else {
62
+ return AccountSignMode.PASSWORD;
63
+ }
64
+ }
65
+ }
66
+ };
67
+ export const getAccountActions = (signMode, networkType, type, _meta, parentAccount) => {
68
+ const result = [];
69
+ const meta = _meta;
70
+
71
+ // JSON
72
+ if (signMode === AccountSignMode.PASSWORD) {
73
+ result.push(AccountActions.EXPORT_JSON);
74
+ }
75
+
76
+ // Mnemonic
77
+ if (meta && meta.isMasterAccount) {
78
+ result.push(AccountActions.EXPORT_MNEMONIC);
79
+ }
80
+
81
+ // Private key
82
+ if (signMode === AccountSignMode.PASSWORD) {
83
+ if (networkType === AccountChainType.ETHEREUM || networkType === AccountChainType.TON) {
84
+ result.push(AccountActions.EXPORT_PRIVATE_KEY);
85
+ }
86
+ }
87
+
88
+ // QR
89
+ if (signMode === AccountSignMode.PASSWORD) {
90
+ if (networkType === AccountChainType.ETHEREUM || networkType === AccountChainType.SUBSTRATE) {
91
+ result.push(AccountActions.EXPORT_QR);
92
+ }
93
+ }
94
+
95
+ // Derive
96
+ if (signMode === AccountSignMode.PASSWORD) {
97
+ const deriveInfo = getSoloDerivationInfo(type, meta);
98
+ if (networkType === AccountChainType.SUBSTRATE) {
99
+ if (deriveInfo.depth === 0) {
100
+ result.push(AccountActions.DERIVE);
101
+ } else if (deriveInfo.depth === 1) {
102
+ if (parentAccount && parentAccount.accountActions.includes(AccountActions.DERIVE)) {
103
+ result.push(AccountActions.DERIVE);
104
+ }
105
+ }
106
+ } else if (type !== 'ton-native') {
107
+ if (deriveInfo.depth === 0) {
108
+ if (meta && meta.isMasterAccount) {
109
+ result.push(AccountActions.DERIVE);
110
+ }
111
+ } else if (deriveInfo.depth === 1) {
112
+ if (parentAccount && parentAccount.accountActions.includes(AccountActions.DERIVE)) {
113
+ result.push(AccountActions.DERIVE);
114
+ }
115
+ }
116
+ }
117
+ }
118
+
119
+ // Ton change wallet contract version
120
+ if (networkType === AccountChainType.TON && signMode !== AccountSignMode.READ_ONLY) {
121
+ result.push(AccountActions.TON_CHANGE_WALLET_CONTRACT_VERSION);
122
+ }
123
+ return result;
124
+ };
125
+ const BASE_TRANSFER_ACTIONS = [ExtrinsicType.TRANSFER_BALANCE, ExtrinsicType.TRANSFER_TOKEN];
126
+ const NATIVE_STAKE_ACTIONS = [ExtrinsicType.STAKING_BOND, ExtrinsicType.STAKING_UNBOND, ExtrinsicType.STAKING_WITHDRAW,
127
+ // ExtrinsicType.STAKING_COMPOUNDING,
128
+ // ExtrinsicType.STAKING_CANCEL_COMPOUNDING,
129
+ ExtrinsicType.STAKING_CANCEL_UNSTAKE];
130
+ const POOL_STAKE_ACTIONS = [ExtrinsicType.STAKING_JOIN_POOL, ExtrinsicType.STAKING_LEAVE_POOL, ExtrinsicType.STAKING_POOL_WITHDRAW, ExtrinsicType.STAKING_CLAIM_REWARD, ExtrinsicType.JOIN_YIELD_POOL];
131
+ const EARN_VDOT_ACTIONS = [ExtrinsicType.MINT_VDOT, ExtrinsicType.REDEEM_VDOT, ExtrinsicType.UNSTAKE_VDOT];
132
+ const EARN_LDOT_ACTIONS = [ExtrinsicType.MINT_LDOT, ExtrinsicType.REDEEM_LDOT, ExtrinsicType.UNSTAKE_LDOT];
133
+ const EARN_SDOT_ACTIONS = [ExtrinsicType.MINT_SDOT, ExtrinsicType.REDEEM_SDOT, ExtrinsicType.UNSTAKE_SDOT];
134
+ const EARN_QDOT_ACTIONS = [ExtrinsicType.MINT_QDOT, ExtrinsicType.REDEEM_QDOT, ExtrinsicType.UNSTAKE_QDOT];
135
+ const EARN_STDOT_ACTIONS = [ExtrinsicType.MINT_STDOT, ExtrinsicType.REDEEM_STDOT, ExtrinsicType.UNSTAKE_STDOT];
136
+ const EARN_VMANTA_ACTIONS = [ExtrinsicType.MINT_VMANTA, ExtrinsicType.REDEEM_VMANTA, ExtrinsicType.UNSTAKE_VMANTA];
137
+ const EVM_ACTIONS = [ExtrinsicType.TOKEN_SPENDING_APPROVAL, ExtrinsicType.EVM_EXECUTE];
138
+ const OTHER_ACTIONS = [ExtrinsicType.TRANSFER_XCM, ExtrinsicType.SEND_NFT, ExtrinsicType.SWAP, ExtrinsicType.CROWDLOAN];
139
+ export const getAccountTransactionActions = (signMode, networkType, type, _meta, _specialNetwork) => {
140
+ if ([AccountSignMode.PASSWORD, AccountSignMode.INJECTED].includes(signMode)) {
141
+ switch (networkType) {
142
+ case AccountChainType.SUBSTRATE:
143
+ return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_LDOT_ACTIONS, ...EARN_SDOT_ACTIONS, ...EARN_QDOT_ACTIONS, ...EARN_VMANTA_ACTIONS, ...OTHER_ACTIONS];
144
+ case AccountChainType.ETHEREUM:
145
+ return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_STDOT_ACTIONS, ...OTHER_ACTIONS, ...EVM_ACTIONS];
146
+ case AccountChainType.TON:
147
+ return [...BASE_TRANSFER_ACTIONS];
148
+ }
149
+ } else if (signMode === AccountSignMode.QR) {
150
+ switch (networkType) {
151
+ case AccountChainType.SUBSTRATE:
152
+ return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_LDOT_ACTIONS, ...EARN_SDOT_ACTIONS, ...EARN_QDOT_ACTIONS, ...EARN_VMANTA_ACTIONS, ...OTHER_ACTIONS];
153
+ case AccountChainType.ETHEREUM:
154
+ return [...(isProductionMode ? [] : [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_STDOT_ACTIONS, ...OTHER_ACTIONS, ...EVM_ACTIONS])];
155
+ case AccountChainType.TON:
156
+ return [];
157
+ }
158
+ } else if (signMode === AccountSignMode.GENERIC_LEDGER) {
159
+ switch (networkType) {
160
+ case AccountChainType.SUBSTRATE:
161
+ return [...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ...EARN_VDOT_ACTIONS, ...EARN_VMANTA_ACTIONS,
162
+ // ...EARN_LDOT_ACTIONS,
163
+ // ...EARN_SDOT_ACTIONS,
164
+ // ...EARN_QDOT_ACTIONS,
165
+ ...OTHER_ACTIONS];
166
+ case AccountChainType.ETHEREUM:
167
+ return [...BASE_TRANSFER_ACTIONS, ...EARN_STDOT_ACTIONS, ...EVM_ACTIONS, ExtrinsicType.STAKING_WITHDRAW,
168
+ // For liquid staking
169
+ ExtrinsicType.SEND_NFT, ExtrinsicType.SWAP];
170
+ case AccountChainType.TON:
171
+ return [...BASE_TRANSFER_ACTIONS];
172
+ }
173
+ } else if (signMode === AccountSignMode.LEGACY_LEDGER) {
174
+ // Only for Substrate
175
+ const result = [];
176
+ const specialNetwork = _specialNetwork || '';
177
+ result.push(...BASE_TRANSFER_ACTIONS, ...NATIVE_STAKE_ACTIONS, ...POOL_STAKE_ACTIONS, ExtrinsicType.SWAP, ExtrinsicType.CROWDLOAN);
178
+
179
+ // NFT
180
+ if (!['astar', 'avail_mainnet'].includes(specialNetwork)) {
181
+ result.push(ExtrinsicType.SEND_NFT);
182
+ }
183
+
184
+ // Earning
185
+ if (specialNetwork === 'bifrost') {
186
+ result.push(...EARN_VDOT_ACTIONS, ...EARN_VMANTA_ACTIONS);
187
+ }
188
+
189
+ // if (specialNetwork === 'acala') {
190
+ // result.push(...EARN_LDOT_ACTIONS);
191
+ // }
192
+
193
+ // if (specialNetwork === 'parallel') {
194
+ // result.push(...EARN_SDOT_ACTIONS);
195
+ // }
196
+
197
+ // if (specialNetwork === 'interlay') {
198
+ // result.push(...EARN_QDOT_ACTIONS);
199
+ // }
200
+
201
+ // Transfer XCM
202
+ if (['polkadot', 'kusama', 'statemint', 'statemine'].includes(specialNetwork)) {
203
+ result.push(ExtrinsicType.TRANSFER_XCM);
204
+ }
205
+ return result;
206
+ }
207
+ return [];
208
+ };
209
+ export const getAccountTokenTypes = type => {
210
+ switch (type) {
211
+ case 'ethereum':
212
+ return [_AssetType.NATIVE, _AssetType.LOCAL, _AssetType.ERC20, _AssetType.ERC721];
213
+ case 'sr25519':
214
+ case 'ed25519':
215
+ case 'ecdsa':
216
+ return [_AssetType.NATIVE, _AssetType.LOCAL, _AssetType.PSP22, _AssetType.PSP34, _AssetType.GRC20, _AssetType.ERC721, _AssetType.VFT];
217
+ case 'ton':
218
+ case 'ton-native':
219
+ return [_AssetType.NATIVE, _AssetType.TEP74];
220
+ case 'bitcoin-44':
221
+ case 'bittest-44':
222
+ case 'bitcoin-84':
223
+ case 'bittest-84':
224
+ return [_AssetType.NATIVE];
225
+ case 'bitcoin-86':
226
+ case 'bittest-86':
227
+ return [_AssetType.NATIVE, _AssetType.RUNE, _AssetType.BRC20];
228
+ default:
229
+ return [];
230
+ }
231
+ };
232
+
233
+ /**
234
+ * Transforms account data into an `AccountJson` object.
235
+ *
236
+ * @param {string} address - The address of the account.
237
+ * @param {KeypairType} [_type] - The type of the keypair (optional).
238
+ * @param {KeyringPair$Meta} [meta] - Metadata associated with the keyring pair (optional).
239
+ * @param {Record<string, _ChainInfo>} [chainInfoMap] - A map of chain information (optional).
240
+ * If chain information is provided, add full data to account.
241
+ * @returns {AccountJson} The transformed account data.
242
+ *
243
+ * This function performs the following steps:
244
+ * 1. Determines the sign mode of the account based on the address and metadata.
245
+ * 2. Determines the network type of the account based on the keypair type.
246
+ * 3. If chain information is provided, add full data (accountActions, transactionActions) to account.
247
+ * 4. Returns an `AccountJson` object containing the transformed account data.
248
+ */
249
+ export const transformAccount = (address, _type, meta, chainInfoMap, parentAccount) => {
250
+ const signMode = getAccountSignMode(address, meta);
251
+ const type = _type || getKeypairTypeByAddress(address);
252
+ const chainType = getAccountChainType(type);
253
+ let specialChain;
254
+ if (!chainInfoMap) {
255
+ return {
256
+ address,
257
+ ...meta,
258
+ type,
259
+ accountActions: [],
260
+ transactionActions: [],
261
+ tokenTypes: [],
262
+ signMode,
263
+ chainType
264
+ };
265
+ }
266
+ const genesisHash = meta === null || meta === void 0 ? void 0 : meta.genesisHash;
267
+ if (chainInfoMap && signMode === AccountSignMode.LEGACY_LEDGER && genesisHash) {
268
+ const chainInfo = Object.values(chainInfoMap).find(info => _getSubstrateGenesisHash(info) === genesisHash);
269
+ if (chainInfo) {
270
+ specialChain = chainInfo.slug;
271
+ }
272
+ }
273
+ const accountActions = getAccountActions(signMode, chainType, type, meta, parentAccount);
274
+ const transactionActions = getAccountTransactionActions(signMode, chainType, type, meta, specialChain);
275
+ const tokenTypes = getAccountTokenTypes(type);
276
+
277
+ /* Account actions */
278
+
279
+ return {
280
+ address,
281
+ ...meta,
282
+ type,
283
+ accountActions,
284
+ transactionActions,
285
+ signMode,
286
+ chainType,
287
+ specialChain,
288
+ tokenTypes
289
+ };
290
+ };
291
+ export const singleAddressToAccount = ({
292
+ json: {
293
+ address,
294
+ meta
295
+ },
296
+ type
297
+ }, chainInfoMap, parentAccount) => transformAccount(address, type, meta, chainInfoMap, parentAccount);
298
+ export const pairToAccount = ({
299
+ address,
300
+ meta,
301
+ type
302
+ }, chainInfoMap, parentAccount) => transformAccount(address, type, meta, chainInfoMap, parentAccount);
303
+ export const transformAccounts = accounts => Object.values(accounts).map(data => singleAddressToAccount(data));
304
+ export const transformAddress = (address, meta) => {
305
+ const type = getKeypairTypeByAddress(address);
306
+ const chainType = getAccountChainType(type);
307
+ return {
308
+ address,
309
+ ...meta,
310
+ chainType
311
+ };
312
+ };
313
+ export const transformAddresses = addresses => Object.values(addresses).map(({
314
+ json: {
315
+ address,
316
+ meta
317
+ }
318
+ }) => transformAddress(address, meta));
319
+ export const convertAccountProxyType = accountSignMode => {
320
+ switch (accountSignMode) {
321
+ case AccountSignMode.GENERIC_LEDGER:
322
+ case AccountSignMode.LEGACY_LEDGER:
323
+ return AccountProxyType.LEDGER;
324
+ case AccountSignMode.QR:
325
+ return AccountProxyType.QR;
326
+ case AccountSignMode.READ_ONLY:
327
+ return AccountProxyType.READ_ONLY;
328
+ case AccountSignMode.INJECTED:
329
+ return AccountProxyType.INJECTED;
330
+ case AccountSignMode.PASSWORD:
331
+ return AccountProxyType.SOLO;
332
+ case AccountSignMode.ALL_ACCOUNT:
333
+ return AccountProxyType.ALL_ACCOUNT;
334
+ case AccountSignMode.UNKNOWN:
335
+ return AccountProxyType.UNKNOWN;
336
+ }
337
+ return AccountProxyType.UNKNOWN;
338
+ };
339
+ export const _combineAccounts = (accounts, modifyPairs, accountProxies) => {
340
+ const temp = {};
341
+ for (const account of accounts) {
342
+ const address = account.address;
343
+ const modifyPair = modifyPairs[address];
344
+ if (modifyPair && modifyPair.accountProxyId) {
345
+ const accountGroup = accountProxies[modifyPair.accountProxyId];
346
+ if (accountGroup) {
347
+ if (!temp[accountGroup.id]) {
348
+ temp[accountGroup.id] = {
349
+ ...accountGroup,
350
+ accounts: [],
351
+ chainTypes: [],
352
+ tokenTypes: [],
353
+ accountActions: []
354
+ };
355
+ }
356
+ account.proxyId = accountGroup.id;
357
+ temp[accountGroup.id].accounts.push(account);
358
+ continue;
359
+ }
360
+ }
361
+ temp[address] = {
362
+ id: address,
363
+ name: account.name || account.address,
364
+ accounts: [{
365
+ ...account,
366
+ proxyId: address
367
+ }],
368
+ chainTypes: [account.chainType],
369
+ parentId: account.parentAddress,
370
+ suri: account.derivationPath || account.suri,
371
+ tokenTypes: account.tokenTypes,
372
+ accountActions: []
373
+ };
374
+ }
375
+ const result = Object.fromEntries(Object.entries(temp).map(([key, value]) => {
376
+ let accountType = AccountProxyType.UNKNOWN;
377
+ let chainTypes = [];
378
+ let tokenTypes = [];
379
+ let accountActions = [];
380
+ let specialChain;
381
+ if (value.accounts.length > 1) {
382
+ accountType = AccountProxyType.UNIFIED;
383
+ chainTypes = Array.from(value.accounts.reduce((rs, account) => rs.add(account.chainType), new Set()));
384
+ tokenTypes = Array.from(value.accounts.reduce((rs, account) => {
385
+ for (const tokenType of account.tokenTypes) {
386
+ rs.add(tokenType);
387
+ }
388
+ return rs;
389
+ }, new Set()));
390
+
391
+ /* Account actions */
392
+
393
+ // Mnemonic
394
+ if (value.accounts.every(account => account.accountActions.includes(AccountActions.EXPORT_MNEMONIC))) {
395
+ accountActions.push(AccountActions.EXPORT_MNEMONIC);
396
+ }
397
+
398
+ // // Json
399
+ // if (value.accounts.every((account) => account.accountActions.includes(AccountActions.EXPORT_JSON))) {
400
+ // accountActions.push(AccountActions.EXPORT_JSON);
401
+ // }
402
+
403
+ // Derive
404
+ if (value.accounts.every(account => account.accountActions.includes(AccountActions.DERIVE))) {
405
+ accountActions.push(AccountActions.DERIVE);
406
+ }
407
+
408
+ // Ton change wallet contract version
409
+ if (value.accounts.some(account => account.accountActions.includes(AccountActions.TON_CHANGE_WALLET_CONTRACT_VERSION))) {
410
+ accountActions.push(AccountActions.TON_CHANGE_WALLET_CONTRACT_VERSION);
411
+ }
412
+ } else if (value.accounts.length === 1) {
413
+ const account = value.accounts[0];
414
+ chainTypes = [account.chainType];
415
+ tokenTypes = account.tokenTypes;
416
+ accountType = convertAccountProxyType(account.signMode);
417
+ accountActions = account.accountActions;
418
+ if (account.chainType === AccountChainType.TON) {
419
+ accountActions = accountActions.filter(action => action !== AccountActions.DERIVE);
420
+ }
421
+ switch (account.signMode) {
422
+ case AccountSignMode.GENERIC_LEDGER:
423
+ case AccountSignMode.LEGACY_LEDGER:
424
+ specialChain = account.specialChain;
425
+ break;
426
+ }
427
+ }
428
+ return [key, {
429
+ ...value,
430
+ accountType,
431
+ chainTypes,
432
+ specialChain,
433
+ tokenTypes,
434
+ accountActions
435
+ }];
436
+ }));
437
+ const deepSearchParentId = parentId => {
438
+ const parent = result[parentId];
439
+ if (parent && parent.parentId) {
440
+ return deepSearchParentId(parent.parentId);
441
+ }
442
+ return parentId;
443
+ };
444
+ for (const value of Object.values(result)) {
445
+ if (value.parentId) {
446
+ value.parentId = deepSearchParentId(value.parentId);
447
+ }
448
+ }
449
+ const deepSearchChildren = id => {
450
+ const rs = [];
451
+ for (const accountProxy of Object.values(result)) {
452
+ if (accountProxy.parentId === id) {
453
+ rs.push(accountProxy.id);
454
+ }
455
+ }
456
+ return rs;
457
+ };
458
+ for (const value of Object.values(result)) {
459
+ value.children = deepSearchChildren(value.id);
460
+ }
461
+ return result;
462
+ };
463
+
464
+ /**
465
+ * @summary Use for `AccountContext` subscribe account
466
+ * */
467
+ export const combineAccountsWithSubjectInfo = (pairs, modifyPairs, accountProxies, chainInfoMap) => {
468
+ const accountMap = {};
469
+ const convertAccount = address => {
470
+ const value = pairs[address];
471
+ if (!value) {
472
+ throw new Error(`Unable to retrieve account '${address}'`);
473
+ }
474
+ const {
475
+ json: {
476
+ meta
477
+ }
478
+ } = value;
479
+ if (accountMap[address]) {
480
+ return accountMap[address];
481
+ }
482
+ const {
483
+ parentAddress
484
+ } = meta;
485
+ let parentAccount;
486
+ if (parentAddress) {
487
+ parentAccount = accountMap[parentAddress];
488
+ if (!parentAccount && pairs[parentAddress]) {
489
+ parentAccount = convertAccount(parentAddress);
490
+ }
491
+ }
492
+ const rs = singleAddressToAccount(value, chainInfoMap, parentAccount);
493
+ accountMap[address] = rs;
494
+ return rs;
495
+ };
496
+ for (const address of Object.keys(pairs)) {
497
+ convertAccount(address);
498
+ }
499
+ return _combineAccounts(Object.values(accountMap), modifyPairs, accountProxies);
500
+ };
501
+ export const combineAccountsWithKeyPair = (pairs, modifyPairs, accountProxies, chainInfoMap) => {
502
+ const accounts = Object.values(pairs).map(data => pairToAccount(data, chainInfoMap));
503
+ return _combineAccounts(accounts, modifyPairs || {}, accountProxies || {});
504
+ };
505
+ export const combineAllAccountProxy = accountProxies => {
506
+ const chainTypes = new Set();
507
+ const tokenTypes = new Set();
508
+ const specialChain = accountProxies.length === 1 ? accountProxies[0].specialChain : undefined;
509
+ for (const accountProxy of accountProxies) {
510
+ // Have 4 network types, but at the moment, we only support 3 network types
511
+ if (chainTypes.size === 3) {
512
+ break;
513
+ }
514
+ for (const chainType of accountProxy.chainTypes) {
515
+ chainTypes.add(chainType);
516
+ }
517
+ }
518
+ for (const accountProxy of accountProxies) {
519
+ for (const tokenType of accountProxy.tokenTypes) {
520
+ tokenTypes.add(tokenType);
521
+ }
522
+ }
523
+ return {
524
+ id: ALL_ACCOUNT_KEY,
525
+ name: 'All',
526
+ accounts: [],
527
+ accountActions: [],
528
+ accountType: AccountProxyType.ALL_ACCOUNT,
529
+ chainTypes: Array.from(chainTypes),
530
+ tokenTypes: Array.from(tokenTypes),
531
+ specialChain
532
+ };
533
+ };
@@ -0,0 +1,2 @@
1
+ import { AccountAuthType } from '@subwallet/extension-base/background/types';
2
+ export declare const isAddressValidWithAuthType: (address: string, accountAuthTypes?: AccountAuthType[]) => boolean;
package/utils/auth.js ADDED
@@ -0,0 +1,39 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { getKeypairTypeByAddress } from '@subwallet/keyring';
5
+ import { EthereumKeypairTypes, SubstrateKeypairTypes, TonKeypairTypes } from '@subwallet/keyring/types';
6
+ export const isAddressValidWithAuthType = (address, accountAuthTypes) => {
7
+ const keypairType = getKeypairTypeByAddress(address);
8
+ const validTypes = {
9
+ evm: EthereumKeypairTypes,
10
+ substrate: SubstrateKeypairTypes,
11
+ ton: TonKeypairTypes
12
+ };
13
+ return !!(accountAuthTypes !== null && accountAuthTypes !== void 0 && accountAuthTypes.some(authType => {
14
+ var _validTypes$authType;
15
+ return (_validTypes$authType = validTypes[authType]) === null || _validTypes$authType === void 0 ? void 0 : _validTypes$authType.includes(keypairType);
16
+ }));
17
+ };
18
+
19
+ // export const isAddressValidWithAuthType = (address: string, accountAuthType?: AccountAuthType): boolean => {
20
+ // const keypairType = getKeypairTypeByAddress(address);
21
+ //
22
+ // if (!['ethereum', 'bitcoin-84', 'bitcoin-86', 'bittest-84', 'bittest-86'].includes(keypairType)) {
23
+ // return false;
24
+ // }
25
+ //
26
+ // if (accountAuthType === 'both') {
27
+ // return true;
28
+ // }
29
+ //
30
+ // if (accountAuthType === 'evm') {
31
+ // return keypairType === 'ethereum';
32
+ // }
33
+ //
34
+ // if (accountAuthType === 'bitcoin') {
35
+ // return ['bitcoin-86', 'bittest-86', 'bitcoin-84', 'bittest-84'].includes(keypairType);
36
+ // }
37
+ //
38
+ // return false;
39
+ // };
@@ -1,2 +1,2 @@
1
- import type { KeypairType } from '@polkadot/util-crypto/types';
1
+ import type { KeypairType } from '@subwallet/keyring/types';
2
2
  export declare function canDerive(type?: KeypairType): boolean;
@@ -1,2 +1,2 @@
1
- import { Web3Transaction } from '@subwallet/extension-base/signers/types';
1
+ import { Web3Transaction } from '@subwallet/extension-base/types';
2
2
  export declare const mergeTransactionAndSignature: (tx: Web3Transaction, _rawSignature: `0x${string}`) => `0x${string}`;
package/utils/getId.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export declare function getId(): string;
2
+ export declare const generateRandomString: (length?: number) => string;
package/utils/getId.js CHANGED
@@ -1,8 +1,10 @@
1
1
  // Copyright 2019-2022 @polkadot/extension authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import { randomAsU8a } from '@polkadot/util-crypto';
4
5
  import { ID_PREFIX } from "../defaults.js";
5
6
  let counter = 0;
6
7
  export function getId() {
7
8
  return `${ID_PREFIX}.${Date.now()}.${++counter}`;
8
- }
9
+ }
10
+ export const generateRandomString = (length = 6) => Buffer.from(randomAsU8a(Math.ceil(length / 2))).toString('hex').slice(0, length);
package/utils/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import { _ChainInfo } from '@subwallet/chain-list/types';
1
2
  import { CrowdloanParaState, NetworkJson } from '@subwallet/extension-base/background/KoniTypes';
2
- import { AccountAuthType, AccountJson } from '@subwallet/extension-base/background/types';
3
+ import { AccountAuthType } from '@subwallet/extension-base/background/types';
4
+ import { AccountJson } from '@subwallet/extension-base/types';
3
5
  import { BN } from '@polkadot/util';
4
6
  export { canDerive } from './canDerive';
5
7
  export * from './mv3';
@@ -8,11 +10,13 @@ export declare const notDef: (x: any) => boolean;
8
10
  export declare const isDef: (x: any) => boolean;
9
11
  export declare const nonEmptyArr: (x: any) => boolean;
10
12
  export declare const isEmptyArray: (x: any) => boolean;
11
- export declare function isAccountAll(address?: string): boolean;
12
- export declare function reformatAddress(address: string, networkPrefix?: number, isEthereum?: boolean): string;
13
+ /**
14
+ * @deprecated
15
+ * */
13
16
  export declare function filterAddressByNetworkKey(addresses: string[], networkKey: string, isEthereum?: boolean): string[];
14
- export declare function categoryAddresses(addresses: string[]): string[][];
15
- export declare function categoryNetworks(networks: NetworkJson[]): string[][];
17
+ /**
18
+ * @deprecated
19
+ * */
16
20
  export declare function convertToEvmAddress(substrateAddress: string): string;
17
21
  export declare function isUrl(targetString: string): boolean;
18
22
  export declare function inJestTest(): boolean;
@@ -36,6 +40,8 @@ export declare function mergeNetworkProviders(customNetwork: NetworkJson, predef
36
40
  export declare const filterAndSortingAccountByAuthType: (accounts: AccountJson[], accountAuthType: AccountAuthType, sorting?: boolean) => AccountJson[];
37
41
  export declare function parseRawNumber(value: string): number;
38
42
  export declare function isSameAddress(address1: string, address2: string): boolean;
43
+ export declare function isSameAddressType(address1: string, address2: string): boolean;
44
+ export declare function isAddressAndChainCompatible(address: string, chain: _ChainInfo): boolean;
39
45
  export declare function getDomainFromUrl(url: string): string;
40
46
  export declare function waitTimeout(ms: number): Promise<void>;
41
47
  export declare const stripUrl: (url: string) => string;
@@ -45,6 +51,7 @@ export declare function wait(milliseconds: number): Promise<void>;
45
51
  export * from './account';
46
52
  export * from './array';
47
53
  export * from './asset';
54
+ export * from './auth';
48
55
  export * from './environment';
49
56
  export * from './eth';
50
57
  export * from './fetchEvmChainInfo';