@subwallet/extension-base 1.2.32-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 (415) 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 -12
  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/TonApi.js +213 -0
  51. package/cjs/services/chain-service/handler/TonChainHandler.js +81 -0
  52. package/cjs/services/chain-service/index.js +32 -8
  53. package/cjs/services/chain-service/utils/index.js +78 -22
  54. package/cjs/services/earning-service/constants/chains.js +3 -1
  55. package/cjs/services/earning-service/handlers/base.js +2 -1
  56. package/cjs/services/earning-service/handlers/lending/base.js +8 -9
  57. package/cjs/services/earning-service/handlers/lending/interlay.js +1 -1
  58. package/cjs/services/earning-service/handlers/liquid-staking/base.js +9 -10
  59. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +1 -1
  60. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
  61. package/cjs/services/earning-service/handlers/native-staking/astar.js +2 -2
  62. package/cjs/services/earning-service/handlers/native-staking/base-para.js +13 -13
  63. package/cjs/services/earning-service/handlers/native-staking/base.js +2 -2
  64. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +2 -2
  65. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +15 -15
  66. package/cjs/services/earning-service/handlers/nomination-pool/index.js +14 -14
  67. package/cjs/services/earning-service/handlers/special.js +10 -10
  68. package/cjs/services/earning-service/service.js +26 -17
  69. package/cjs/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
  70. package/cjs/services/history-service/index.js +29 -11
  71. package/cjs/services/history-service/subscan-history.js +9 -21
  72. package/cjs/services/keyring-service/context/account-context.js +259 -0
  73. package/cjs/services/keyring-service/context/handlers/Base.js +20 -0
  74. package/cjs/services/keyring-service/context/handlers/Derive.js +377 -0
  75. package/cjs/services/keyring-service/context/handlers/Inject.js +75 -0
  76. package/cjs/services/keyring-service/context/handlers/Json.js +348 -0
  77. package/cjs/services/keyring-service/context/handlers/Ledger.js +165 -0
  78. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +218 -0
  79. package/cjs/services/keyring-service/context/handlers/Modify.js +258 -0
  80. package/cjs/services/keyring-service/context/handlers/Secret.js +310 -0
  81. package/cjs/services/keyring-service/context/handlers/index.js +82 -0
  82. package/cjs/services/keyring-service/context/state.js +649 -0
  83. package/cjs/services/keyring-service/context/stores/AccountProxy.js +32 -0
  84. package/cjs/services/keyring-service/context/stores/Base.js +37 -0
  85. package/cjs/services/keyring-service/context/stores/CurrentAccount.js +28 -0
  86. package/cjs/services/keyring-service/context/stores/ModifyPair.js +19 -0
  87. package/cjs/services/keyring-service/context/stores/index.js +38 -0
  88. package/cjs/services/keyring-service/index.js +20 -164
  89. package/cjs/services/migration-service/scripts/index.js +6 -4
  90. package/cjs/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
  91. package/cjs/services/migration-service/scripts/keyring/MigratePairData.js +28 -0
  92. package/cjs/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
  93. package/cjs/services/request-service/constants.js +5 -3
  94. package/cjs/services/request-service/handler/AuthRequestHandler.js +104 -57
  95. package/cjs/services/request-service/handler/EvmRequestHandler.js +3 -4
  96. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +5 -11
  97. package/cjs/services/request-service/handler/TonRequestHandler.js +175 -0
  98. package/cjs/services/request-service/index.js +24 -5
  99. package/cjs/services/swap-service/handler/asset-hub/handler.js +6 -5
  100. package/cjs/services/swap-service/handler/base-handler.js +8 -8
  101. package/cjs/services/swap-service/handler/chainflip-handler.js +5 -4
  102. package/cjs/services/swap-service/handler/hydradx-handler.js +4 -3
  103. package/cjs/services/swap-service/index.js +4 -4
  104. package/cjs/services/transaction-service/helpers/index.js +6 -1
  105. package/cjs/services/transaction-service/index.js +184 -84
  106. package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
  107. package/cjs/stores/AccountProxyStore.js +18 -0
  108. package/cjs/stores/ModifyPairStore.js +18 -0
  109. package/cjs/stores/index.js +23 -2
  110. package/cjs/types/account/action/add/index.js +38 -0
  111. package/cjs/types/account/action/add/json.js +1 -0
  112. package/cjs/types/account/action/add/mnemonic.js +1 -0
  113. package/cjs/types/account/action/add/secret.js +1 -0
  114. package/cjs/types/account/action/derive.js +1 -0
  115. package/cjs/types/account/action/edit.js +1 -0
  116. package/cjs/types/account/action/export.js +1 -0
  117. package/cjs/types/account/action/index.js +71 -0
  118. package/cjs/types/account/action/subscribe.js +16 -0
  119. package/cjs/types/account/action/validate.js +1 -0
  120. package/cjs/types/account/error/common.js +40 -0
  121. package/cjs/types/account/error/derive.js +55 -0
  122. package/cjs/types/account/error/index.js +27 -0
  123. package/cjs/types/account/index.js +38 -0
  124. package/cjs/types/account/info/current.js +1 -0
  125. package/cjs/types/account/info/index.js +38 -0
  126. package/cjs/types/account/info/keyring.js +90 -0
  127. package/cjs/types/account/info/proxy.js +49 -0
  128. package/cjs/types/error.js +1 -0
  129. package/cjs/types/index.js +44 -0
  130. package/cjs/types/transaction/data.js +1 -0
  131. package/cjs/types/transaction/error.js +53 -0
  132. package/cjs/types/transaction/index.js +49 -0
  133. package/cjs/types/transaction/request.js +1 -0
  134. package/cjs/types/transaction/warning.js +14 -0
  135. package/cjs/types/yield/actions/join/validate.js +1 -16
  136. package/cjs/utils/account/analyze.js +166 -0
  137. package/cjs/utils/account/common.js +121 -0
  138. package/cjs/utils/account/derive/index.js +27 -0
  139. package/cjs/utils/account/derive/info/index.js +27 -0
  140. package/cjs/utils/account/derive/info/solo.js +246 -0
  141. package/cjs/utils/account/derive/info/unified.js +112 -0
  142. package/cjs/utils/account/derive/validate.js +177 -0
  143. package/cjs/utils/account/index.js +49 -0
  144. package/cjs/utils/account/transform.js +566 -0
  145. package/cjs/utils/auth.js +46 -0
  146. package/cjs/utils/getId.js +8 -1
  147. package/cjs/utils/index.js +48 -62
  148. package/constants/environment.d.ts +1 -0
  149. package/constants/environment.js +6 -0
  150. package/constants/index.d.ts +5 -1
  151. package/constants/index.js +5 -2
  152. package/constants/signing.d.ts +4 -0
  153. package/constants/signing.js +15 -0
  154. package/constants/storage.d.ts +1 -0
  155. package/constants/storage.js +2 -1
  156. package/core/consts.d.ts +1 -0
  157. package/core/consts.js +13 -0
  158. package/core/logic-validation/recipientAddress.d.ts +2 -0
  159. package/core/logic-validation/recipientAddress.js +100 -0
  160. package/core/logic-validation/request.js +10 -18
  161. package/core/logic-validation/swap.js +1 -1
  162. package/core/logic-validation/transfer.d.ts +3 -2
  163. package/core/logic-validation/transfer.js +50 -10
  164. package/core/types.d.ts +26 -0
  165. package/core/types.js +19 -0
  166. package/core/utils.d.ts +10 -0
  167. package/core/utils.js +105 -0
  168. package/koni/api/dotsama/crowdloan.js +1 -1
  169. package/koni/api/nft/index.js +14 -5
  170. package/koni/api/staking/bonding/paraChain.js +2 -2
  171. package/koni/api/staking/bonding/relayChain.js +2 -2
  172. package/koni/api/staking/index.js +4 -1
  173. package/koni/background/cron.js +7 -7
  174. package/koni/background/handlers/Extension.d.ts +26 -35
  175. package/koni/background/handlers/Extension.js +337 -1242
  176. package/koni/background/handlers/State.d.ts +12 -19
  177. package/koni/background/handlers/State.js +57 -231
  178. package/koni/background/handlers/Tabs.d.ts +2 -3
  179. package/koni/background/handlers/Tabs.js +105 -61
  180. package/koni/background/subscription.js +5 -5
  181. package/package.json +352 -53
  182. package/packageInfo.js +1 -1
  183. package/page/Accounts.js +2 -5
  184. package/page/SubWalleEvmProvider.js +1 -1
  185. package/page/index.js +2 -1
  186. package/services/balance-service/BalanceMapImpl.d.ts +6 -4
  187. package/services/balance-service/BalanceMapImpl.js +44 -18
  188. package/services/balance-service/helpers/subscribe/index.d.ts +3 -4
  189. package/services/balance-service/helpers/subscribe/index.js +29 -14
  190. package/services/balance-service/helpers/subscribe/ton/consts.d.ts +18 -0
  191. package/services/balance-service/helpers/subscribe/ton/consts.js +28 -0
  192. package/services/balance-service/helpers/subscribe/ton/ton.d.ts +3 -0
  193. package/services/balance-service/helpers/subscribe/ton/ton.js +111 -0
  194. package/services/balance-service/helpers/subscribe/ton/types.d.ts +26 -0
  195. package/services/balance-service/helpers/subscribe/ton/utils.d.ts +32 -0
  196. package/services/balance-service/helpers/subscribe/ton/utils.js +159 -0
  197. package/services/balance-service/index.js +25 -13
  198. package/services/balance-service/transfer/token.d.ts +2 -2
  199. package/services/balance-service/transfer/token.js +18 -1
  200. package/services/balance-service/transfer/ton-transfer.d.ts +25 -0
  201. package/services/balance-service/transfer/ton-transfer.js +127 -0
  202. package/services/buy-service/index.js +5 -1
  203. package/services/buy-service/types.d.ts +2 -2
  204. package/services/chain-service/constants.js +1 -1
  205. package/services/chain-service/handler/TonApi.d.ts +52 -0
  206. package/services/chain-service/handler/TonApi.js +204 -0
  207. package/services/chain-service/handler/TonChainHandler.d.ts +17 -0
  208. package/services/chain-service/handler/TonChainHandler.js +73 -0
  209. package/services/chain-service/index.d.ts +5 -1
  210. package/services/chain-service/index.js +32 -8
  211. package/services/chain-service/types.d.ts +24 -0
  212. package/services/chain-service/utils/index.d.ts +10 -2
  213. package/services/chain-service/utils/index.js +59 -18
  214. package/services/earning-service/constants/chains.d.ts +1 -0
  215. package/services/earning-service/constants/chains.js +1 -0
  216. package/services/earning-service/handlers/base.js +3 -2
  217. package/services/earning-service/handlers/lending/base.js +1 -2
  218. package/services/earning-service/handlers/lending/interlay.js +2 -2
  219. package/services/earning-service/handlers/liquid-staking/base.js +1 -2
  220. package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
  221. package/services/earning-service/handlers/native-staking/amplitude.js +2 -2
  222. package/services/earning-service/handlers/native-staking/astar.js +2 -2
  223. package/services/earning-service/handlers/native-staking/base-para.js +2 -2
  224. package/services/earning-service/handlers/native-staking/base.js +2 -2
  225. package/services/earning-service/handlers/native-staking/para-chain.js +2 -2
  226. package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
  227. package/services/earning-service/handlers/nomination-pool/index.js +2 -2
  228. package/services/earning-service/handlers/special.js +2 -2
  229. package/services/earning-service/service.js +18 -9
  230. package/services/event-service/types.d.ts +3 -1
  231. package/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
  232. package/services/history-service/index.d.ts +4 -1
  233. package/services/history-service/index.js +29 -11
  234. package/services/history-service/subscan-history.js +8 -20
  235. package/services/keyring-service/context/account-context.d.ts +87 -0
  236. package/services/keyring-service/context/account-context.js +250 -0
  237. package/services/keyring-service/context/handlers/Base.d.ts +11 -0
  238. package/services/keyring-service/context/handlers/Base.js +13 -0
  239. package/services/keyring-service/context/handlers/Derive.d.ts +29 -0
  240. package/services/keyring-service/context/handlers/Derive.js +365 -0
  241. package/services/keyring-service/context/handlers/Inject.d.ts +11 -0
  242. package/services/keyring-service/context/handlers/Inject.js +69 -0
  243. package/services/keyring-service/context/handlers/Json.d.ts +18 -0
  244. package/services/keyring-service/context/handlers/Json.js +328 -0
  245. package/services/keyring-service/context/handlers/Ledger.d.ts +11 -0
  246. package/services/keyring-service/context/handlers/Ledger.js +158 -0
  247. package/services/keyring-service/context/handlers/Mnemonic.d.ts +15 -0
  248. package/services/keyring-service/context/handlers/Mnemonic.js +206 -0
  249. package/services/keyring-service/context/handlers/Modify.d.ts +16 -0
  250. package/services/keyring-service/context/handlers/Modify.js +250 -0
  251. package/services/keyring-service/context/handlers/Secret.d.ts +16 -0
  252. package/services/keyring-service/context/handlers/Secret.js +299 -0
  253. package/services/keyring-service/context/handlers/index.d.ts +7 -0
  254. package/services/keyring-service/context/handlers/index.js +10 -0
  255. package/services/keyring-service/context/state.d.ts +92 -0
  256. package/services/keyring-service/context/state.js +629 -0
  257. package/services/keyring-service/context/stores/AccountProxy.d.ts +13 -0
  258. package/services/keyring-service/context/stores/AccountProxy.js +25 -0
  259. package/services/keyring-service/context/stores/Base.d.ts +22 -0
  260. package/services/keyring-service/context/stores/Base.js +30 -0
  261. package/services/keyring-service/context/stores/CurrentAccount.d.ts +15 -0
  262. package/services/keyring-service/context/stores/CurrentAccount.js +21 -0
  263. package/services/keyring-service/context/stores/ModifyPair.d.ts +10 -0
  264. package/services/keyring-service/context/stores/ModifyPair.js +12 -0
  265. package/services/keyring-service/context/stores/index.d.ts +3 -0
  266. package/services/keyring-service/context/stores/index.js +6 -0
  267. package/services/keyring-service/index.d.ts +10 -22
  268. package/services/keyring-service/index.js +20 -161
  269. package/services/migration-service/scripts/index.js +6 -4
  270. package/services/migration-service/scripts/{MigrateLedgerAccountV2.d.ts → keyring/MigrateLedgerAccountV2.d.ts} +1 -1
  271. package/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
  272. package/services/migration-service/scripts/keyring/MigratePairData.d.ts +4 -0
  273. package/services/migration-service/scripts/keyring/MigratePairData.js +20 -0
  274. package/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
  275. package/services/request-service/constants.d.ts +1 -1
  276. package/services/request-service/constants.js +2 -1
  277. package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
  278. package/services/request-service/handler/AuthRequestHandler.js +93 -45
  279. package/services/request-service/handler/EvmRequestHandler.js +3 -4
  280. package/services/request-service/handler/SubstrateRequestHandler.d.ts +2 -2
  281. package/services/request-service/handler/SubstrateRequestHandler.js +5 -11
  282. package/services/request-service/handler/TonRequestHandler.d.ts +17 -0
  283. package/services/request-service/handler/TonRequestHandler.js +168 -0
  284. package/services/request-service/index.d.ts +8 -3
  285. package/services/request-service/index.js +23 -5
  286. package/services/request-service/types.d.ts +6 -3
  287. package/services/swap-service/handler/asset-hub/handler.d.ts +1 -1
  288. package/services/swap-service/handler/asset-hub/handler.js +2 -1
  289. package/services/swap-service/handler/base-handler.js +1 -1
  290. package/services/swap-service/handler/chainflip-handler.d.ts +1 -1
  291. package/services/swap-service/handler/chainflip-handler.js +4 -3
  292. package/services/swap-service/handler/hydradx-handler.d.ts +1 -1
  293. package/services/swap-service/handler/hydradx-handler.js +2 -1
  294. package/services/swap-service/index.js +1 -1
  295. package/services/transaction-service/helpers/index.d.ts +2 -0
  296. package/services/transaction-service/helpers/index.js +4 -0
  297. package/services/transaction-service/index.d.ts +1 -0
  298. package/services/transaction-service/index.js +114 -17
  299. package/services/transaction-service/types.d.ts +4 -2
  300. package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
  301. package/stores/AccountProxyStore.d.ts +5 -0
  302. package/stores/AccountProxyStore.js +10 -0
  303. package/stores/Authorize.d.ts +1 -1
  304. package/stores/CurrentAccountStore.d.ts +1 -1
  305. package/stores/ModifyPairStore.d.ts +5 -0
  306. package/stores/ModifyPairStore.js +10 -0
  307. package/stores/index.d.ts +4 -1
  308. package/stores/index.js +5 -2
  309. package/types/account/action/add/index.d.ts +3 -0
  310. package/types/account/action/add/index.js +6 -0
  311. package/types/account/action/add/json.d.ts +29 -0
  312. package/types/account/action/add/json.js +1 -0
  313. package/types/account/action/add/mnemonic.d.ts +77 -0
  314. package/types/account/action/add/mnemonic.js +1 -0
  315. package/types/account/action/add/secret.d.ts +55 -0
  316. package/types/account/action/add/secret.js +1 -0
  317. package/types/account/action/derive.d.ts +77 -0
  318. package/types/account/action/derive.js +1 -0
  319. package/types/account/action/edit.d.ts +31 -0
  320. package/types/account/action/edit.js +1 -0
  321. package/types/account/action/export.d.ts +15 -0
  322. package/types/account/action/export.js +1 -0
  323. package/types/account/action/index.d.ts +6 -0
  324. package/types/account/action/index.js +9 -0
  325. package/types/account/action/subscribe.d.ts +22 -0
  326. package/types/account/action/subscribe.js +10 -0
  327. package/types/account/action/validate.d.ts +17 -0
  328. package/types/account/action/validate.js +1 -0
  329. package/types/account/error/common.d.ts +10 -0
  330. package/types/account/error/common.js +33 -0
  331. package/types/account/error/derive.d.ts +13 -0
  332. package/types/account/error/derive.js +48 -0
  333. package/types/account/error/index.d.ts +2 -0
  334. package/types/account/error/index.js +5 -0
  335. package/types/account/index.d.ts +3 -0
  336. package/types/account/index.js +6 -0
  337. package/types/account/info/current.d.ts +10 -0
  338. package/types/account/info/current.js +1 -0
  339. package/types/account/info/index.d.ts +3 -0
  340. package/types/account/info/index.js +6 -0
  341. package/types/account/info/keyring.d.ts +161 -0
  342. package/types/account/info/keyring.js +88 -0
  343. package/types/account/info/proxy.d.ts +73 -0
  344. package/types/account/info/proxy.js +46 -0
  345. package/types/balance/index.d.ts +4 -1
  346. package/types/buy.d.ts +3 -1
  347. package/types/error.d.ts +8 -0
  348. package/types/error.js +1 -0
  349. package/types/index.d.ts +4 -0
  350. package/types/index.js +5 -1
  351. package/types/transaction/data.d.ts +17 -0
  352. package/types/transaction/data.js +1 -0
  353. package/types/transaction/error.d.ts +39 -0
  354. package/types/transaction/error.js +44 -0
  355. package/types/transaction/index.d.ts +4 -0
  356. package/types/transaction/index.js +7 -0
  357. package/types/transaction/request.d.ts +24 -0
  358. package/types/transaction/request.js +1 -0
  359. package/types/transaction/warning.d.ts +5 -0
  360. package/types/transaction/warning.js +8 -0
  361. package/types/yield/actions/join/submit.d.ts +2 -2
  362. package/types/yield/actions/join/validate.d.ts +1 -6
  363. package/types/yield/actions/join/validate.js +1 -10
  364. package/types/yield/actions/others.d.ts +1 -1
  365. package/utils/account/analyze.d.ts +4 -0
  366. package/utils/account/analyze.js +159 -0
  367. package/utils/account/common.d.ts +16 -0
  368. package/utils/account/common.js +104 -0
  369. package/utils/account/derive/index.d.ts +2 -0
  370. package/utils/account/derive/index.js +5 -0
  371. package/utils/account/derive/info/index.d.ts +2 -0
  372. package/utils/account/derive/info/index.js +5 -0
  373. package/utils/account/derive/info/solo.d.ts +11 -0
  374. package/utils/account/derive/info/solo.js +230 -0
  375. package/utils/account/derive/info/unified.d.ts +7 -0
  376. package/utils/account/derive/info/unified.js +102 -0
  377. package/utils/account/derive/validate.d.ts +8 -0
  378. package/utils/account/derive/validate.js +165 -0
  379. package/utils/account/index.d.ts +4 -0
  380. package/utils/account/index.js +7 -0
  381. package/utils/account/transform.d.ts +41 -0
  382. package/utils/account/transform.js +533 -0
  383. package/utils/auth.d.ts +2 -0
  384. package/utils/auth.js +39 -0
  385. package/utils/canDerive.d.ts +1 -1
  386. package/utils/eth/mergeTransactionAndSignature.d.ts +1 -1
  387. package/utils/getId.d.ts +1 -0
  388. package/utils/getId.js +3 -1
  389. package/utils/index.d.ts +12 -5
  390. package/utils/index.js +28 -47
  391. package/cjs/signers/substrates/KeyringSigner.js +0 -35
  392. package/cjs/signers/substrates/LedgerSigner.js +0 -44
  393. package/cjs/signers/substrates/QrSigner.js +0 -63
  394. package/cjs/signers/types.js +0 -15
  395. package/cjs/signers/web3/QrSigner.js +0 -67
  396. package/cjs/utils/account.js +0 -34
  397. package/signers/substrates/KeyringSigner.d.ts +0 -13
  398. package/signers/substrates/KeyringSigner.js +0 -27
  399. package/signers/substrates/LedgerSigner.d.ts +0 -13
  400. package/signers/substrates/LedgerSigner.js +0 -37
  401. package/signers/substrates/QrSigner.d.ts +0 -20
  402. package/signers/substrates/QrSigner.js +0 -55
  403. package/signers/types.d.ts +0 -34
  404. package/signers/types.js +0 -9
  405. package/signers/web3/QrSigner.d.ts +0 -18
  406. package/signers/web3/QrSigner.js +0 -59
  407. package/types/transaction.d.ts +0 -3
  408. package/utils/account.d.ts +0 -5
  409. package/utils/account.js +0 -24
  410. /package/cjs/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
  411. /package/cjs/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
  412. /package/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
  413. /package/services/migration-service/scripts/{MigrateLedgerAccount.d.ts → keyring/MigrateLedgerAccount.d.ts} +0 -0
  414. /package/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
  415. /package/services/migration-service/scripts/{MigrateRemoveGenesisHash.d.ts → keyring/MigrateRemoveGenesisHash.d.ts} +0 -0
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _constants = require("@subwallet/extension-base/constants");
8
9
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
9
- var _constants = require("@subwallet/extension-base/services/request-service/constants");
10
+ var _constants2 = require("@subwallet/extension-base/services/request-service/constants");
10
11
  var _Authorize = _interopRequireDefault(require("@subwallet/extension-base/stores/Authorize"));
11
12
  var _utils2 = require("@subwallet/extension-base/utils");
12
13
  var _getId = require("@subwallet/extension-base/utils/getId");
14
+ var _keyring = require("@subwallet/keyring");
13
15
  var _rxjs = require("rxjs");
14
16
  var _utilCrypto = require("@polkadot/util-crypto");
15
17
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
@@ -29,29 +31,51 @@ class AuthRequestHandler {
29
31
  this.keyringService = keyringService;
30
32
  this.#requestService = requestService;
31
33
  this.#chainService = chainService;
32
- this.init().catch(console.error);
34
+ this.migrateAuthUrlInfoToUnified().then(() => {
35
+ this.init().catch(console.error);
36
+ }).catch(console.error);
33
37
  }
34
38
  async init() {
35
39
  const authList = await this.getAuthList();
36
40
  let needUpdateAuthList = false;
37
- Object.entries(authList).forEach(_ref => {
41
+ const updatedAuthList = Object.entries(authList).reduce((acc, _ref) => {
38
42
  let [key, value] = _ref;
39
- const existKeyAllBothConnect = _constants.DAPP_CONNECT_ALL_TYPE_ACCOUNT_URL.find(url_ => url_.includes(key));
40
- if (existKeyAllBothConnect && value.accountAuthType !== 'both') {
43
+ const existKeyBothConnectAuthType = _constants2.DAPP_CONNECT_BOTH_TYPE_ACCOUNT_URL.some(url_ => url_.includes(key));
44
+ if (existKeyBothConnectAuthType && (!value.accountAuthTypes || value.accountAuthTypes.length < 2)) {
45
+ value.accountAuthTypes = ['evm', 'substrate'];
41
46
  needUpdateAuthList = true;
42
- authList[key] = {
43
- ...value,
44
- accountAuthType: 'both'
45
- };
46
47
  }
47
- });
48
+ acc[key] = {
49
+ ...value
50
+ };
51
+ return acc;
52
+ }, {});
48
53
  if (needUpdateAuthList) {
49
- this.setAuthorize(authList);
54
+ this.setAuthorize(updatedAuthList);
55
+ }
56
+ }
57
+ async migrateAuthUrlInfoToUnified() {
58
+ const authList = await this.getAuthList();
59
+ let needUpdateAuthList = false;
60
+ const updatedAuthList = Object.entries(authList).reduce((acc, _ref2) => {
61
+ let [key, value] = _ref2;
62
+ if ('accountAuthType' in value) {
63
+ const oldValueStructure = value;
64
+ needUpdateAuthList = true;
65
+ value.accountAuthTypes = oldValueStructure.accountAuthType === 'both' ? ['substrate', 'evm'] : [oldValueStructure.accountAuthType || 'substrate'];
66
+ }
67
+ acc[key] = {
68
+ ...value
69
+ };
70
+ return acc;
71
+ }, {});
72
+ if (needUpdateAuthList) {
73
+ this.setAuthorize(updatedAuthList);
50
74
  }
51
75
  }
52
76
  getAddressList() {
53
77
  let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
54
- const addressList = Object.keys(this.keyringService.accounts);
78
+ const addressList = Object.keys(this.keyringService.context.pairs);
55
79
  return addressList.reduce((addressList, v) => ({
56
80
  ...addressList,
57
81
  [v]: value
@@ -61,12 +85,12 @@ class AuthRequestHandler {
61
85
  return Object.keys(this.#authRequestsV2).length;
62
86
  }
63
87
  get allAuthRequestsV2() {
64
- return Object.values(this.#authRequestsV2).map(_ref2 => {
88
+ return Object.values(this.#authRequestsV2).map(_ref3 => {
65
89
  let {
66
90
  id,
67
91
  request,
68
92
  url
69
- } = _ref2;
93
+ } = _ref3;
70
94
  return {
71
95
  id,
72
96
  request,
@@ -113,14 +137,14 @@ class AuthRequestHandler {
113
137
  let needEnableChains = [];
114
138
  if (options.url) {
115
139
  const domain = (0, _utils2.getDomainFromUrl)(options.url);
116
- const predefinedSupportChains = _constants.PREDEFINED_CHAIN_DAPP_CHAIN_MAP[domain];
140
+ const predefinedSupportChains = _constants2.PREDEFINED_CHAIN_DAPP_CHAIN_MAP[domain];
117
141
  if (!defaultChain && predefinedSupportChains) {
118
142
  defaultChain = predefinedSupportChains[0];
119
143
  options.autoActive && needEnableChains.push(...predefinedSupportChains);
120
144
  }
121
145
  }
122
146
  let chainInfo;
123
- if (['both', 'evm'].includes(options.accessType)) {
147
+ if (options.accessType === 'evm') {
124
148
  const evmChains = Object.values(chainInfoMaps).filter(_utils._isChainEvmCompatible);
125
149
  chainInfo = (defaultChain ? chainInfoMaps[defaultChain] : evmChains.find(chain => {
126
150
  var _chainStateMap$chain$;
@@ -144,7 +168,6 @@ class AuthRequestHandler {
144
168
  authCompleteV2 = (id, url, resolve, reject) => {
145
169
  const isAllowedMap = this.getAddressList();
146
170
  const complete = (result, cb, accounts) => {
147
- var _this$getDAppChainInf;
148
171
  const isAllowed = result === true;
149
172
  let isCancelled = false;
150
173
  if (!isAllowed && typeof result === 'object' && result.message === 'Cancelled') {
@@ -155,11 +178,12 @@ class AuthRequestHandler {
155
178
  isAllowedMap[acc] = true;
156
179
  });
157
180
  } else {
158
- // eslint-disable-next-line no-return-assign
159
- Object.keys(isAllowedMap).forEach(address => isAllowedMap[address] = false);
181
+ Object.keys(isAllowedMap).forEach(address => {
182
+ isAllowedMap[address] = false;
183
+ });
160
184
  }
161
185
  const {
162
- accountAuthType,
186
+ accountAuthTypes,
163
187
  idStr,
164
188
  request: {
165
189
  allowedAccounts,
@@ -167,21 +191,36 @@ class AuthRequestHandler {
167
191
  },
168
192
  url
169
193
  } = this.#authRequestsV2[id];
170
- if (accountAuthType !== 'both') {
171
- const isEvmType = accountAuthType === 'evm';
172
- const backupAllowed = [...(allowedAccounts || [])].filter(a => {
173
- const isEth = (0, _utilCrypto.isEthereumAddress)(a);
174
- return isEvmType ? !isEth : isEth;
194
+
195
+ // Note: accountAuthTypes represents the accountAuthType of this request
196
+ // allowedAccounts is a list of connected accounts that exist for this origin during this request.
197
+
198
+ if (accountAuthTypes.length !== _constants.ALL_ACCOUNT_AUTH_TYPES.length) {
199
+ const backupAllowed = (allowedAccounts || []).filter(a => {
200
+ if ((0, _utilCrypto.isEthereumAddress)(a) && !accountAuthTypes.includes('evm')) {
201
+ return true;
202
+ }
203
+ if ((0, _keyring.isSubstrateAddress)(a) && !accountAuthTypes.includes('substrate')) {
204
+ return true;
205
+ }
206
+ if ((0, _keyring.isTonAddress)(a) && !accountAuthTypes.includes('ton')) {
207
+ return true;
208
+ }
209
+ return false;
175
210
  });
176
211
  backupAllowed.forEach(acc => {
177
212
  isAllowedMap[acc] = true;
178
213
  });
179
214
  }
180
- const defaultEvmNetworkKey = (_this$getDAppChainInf = this.getDAppChainInfo({
181
- accessType: accountAuthType,
182
- url,
183
- autoActive: !isCancelled && isAllowed
184
- })) === null || _this$getDAppChainInf === void 0 ? void 0 : _this$getDAppChainInf.slug;
215
+ let defaultEvmNetworkKey;
216
+ if (accountAuthTypes.includes('evm')) {
217
+ const chainInfo = this.getDAppChainInfo({
218
+ accessType: 'evm',
219
+ autoActive: true,
220
+ url
221
+ });
222
+ defaultEvmNetworkKey = chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.slug;
223
+ }
185
224
  this.getAuthorize(value => {
186
225
  let authorizeList = {};
187
226
  if (value) {
@@ -203,7 +242,7 @@ class AuthRequestHandler {
203
242
  isAllowedMap,
204
243
  origin,
205
244
  url,
206
- accountAuthType: existed && existed.accountAuthType !== accountAuthType ? 'both' : accountAuthType,
245
+ accountAuthTypes: [...new Set([...accountAuthTypes, ...((existed === null || existed === void 0 ? void 0 : existed.accountAuthTypes) || [])])],
207
246
  currentEvmNetworkKey: existed ? existed.currentEvmNetworkKey : defaultEvmNetworkKey
208
247
  };
209
248
  this.setAuthorize(authorizeList, () => {
@@ -219,11 +258,11 @@ class AuthRequestHandler {
219
258
  reject(error);
220
259
  });
221
260
  },
222
- resolve: _ref3 => {
261
+ resolve: _ref4 => {
223
262
  let {
224
263
  accounts,
225
264
  result
226
- } = _ref3;
265
+ } = _ref4;
227
266
  complete(result, () => {
228
267
  resolve(result);
229
268
  }, accounts);
@@ -234,9 +273,8 @@ class AuthRequestHandler {
234
273
  async authorizeUrlV2(url, request) {
235
274
  let authList = await this.getAuthList();
236
275
  const idStr = (0, _utils2.stripUrl)(url);
237
- const isAllowedDappConnectAllType = !!_constants.DAPP_CONNECT_ALL_TYPE_ACCOUNT_URL.find(url_ => url.includes(url_));
238
- let accountAuthType = isAllowedDappConnectAllType ? 'both' : request.accountAuthType || 'substrate';
239
- request.accountAuthType = accountAuthType;
276
+ const isAllowedDappConnectBothType = !!_constants2.DAPP_CONNECT_BOTH_TYPE_ACCOUNT_URL.find(url_ => url.includes(url_));
277
+ let accountAuthTypes = [...new Set(isAllowedDappConnectBothType ? ['evm', 'substrate'] : request.accountAuthTypes || ['substrate'])];
240
278
  if (!authList) {
241
279
  authList = {};
242
280
  }
@@ -247,9 +285,10 @@ class AuthRequestHandler {
247
285
  reject,
248
286
  resolve
249
287
  } = promiseHandler;
250
- const isExistedAuthBothBefore = Object.entries(this.authorizeUrlSubject.value).find(_ref4 => {
251
- let [key, data] = _ref4;
252
- return key === idStr && data.accountAuthType === 'both';
288
+ const isExistedAuthBothBefore = Object.entries(this.authorizeUrlSubject.value).find(_ref5 => {
289
+ var _data$accountAuthType;
290
+ let [key, data] = _ref5;
291
+ return key === idStr && ((_data$accountAuthType = data.accountAuthTypes) === null || _data$accountAuthType === void 0 ? void 0 : _data$accountAuthType.length) === _constants.ALL_ACCOUNT_AUTH_TYPES.length;
253
292
  });
254
293
  if (isExistedAuthBothBefore) {
255
294
  return true;
@@ -264,12 +303,12 @@ class AuthRequestHandler {
264
303
 
265
304
  // Do not enqueue duplicate authorization requests.
266
305
  const mergeKeys = [];
267
- Object.entries(this.#authRequestsV2).forEach(_ref5 => {
268
- let [key, _request] = _ref5;
306
+ Object.entries(this.#authRequestsV2).forEach(_ref6 => {
307
+ let [key, _request] = _ref6;
269
308
  if (_request.idStr === idStr) {
270
- if (_request.accountAuthType !== request.accountAuthType) {
271
- request.accountAuthType = 'both';
272
- accountAuthType = 'both';
309
+ if (accountAuthTypes && _request.accountAuthTypes) {
310
+ const filteredAccountAuthTypes = new Set([..._request.accountAuthTypes, ...accountAuthTypes]);
311
+ accountAuthTypes = [...filteredAccountAuthTypes];
273
312
  }
274
313
  mergeKeys.push(key);
275
314
  }
@@ -284,8 +323,8 @@ class AuthRequestHandler {
284
323
  });
285
324
  }
286
325
  const existedAuth = authList[idStr];
287
- const existedAccountAuthType = existedAuth === null || existedAuth === void 0 ? void 0 : existedAuth.accountAuthType;
288
- const confirmAnotherType = existedAccountAuthType !== 'both' && existedAccountAuthType !== request.accountAuthType;
326
+ const existedAccountAuthType = existedAuth === null || existedAuth === void 0 ? void 0 : existedAuth.accountAuthTypes;
327
+ const confirmAnotherType = !existedAccountAuthType || accountAuthTypes.some(type => !existedAccountAuthType.includes(type));
289
328
  if (request.reConfirm && existedAuth) {
290
329
  request.origin = existedAuth.origin;
291
330
  }
@@ -296,16 +335,21 @@ class AuthRequestHandler {
296
335
  if (inBlackList) {
297
336
  throw new Error('The source {{url}} is not allowed to interact with this extension'.replace('{{url}}', url));
298
337
  }
299
- request.allowedAccounts = Object.entries(existedAuth.isAllowedMap).map(_ref6 => {
300
- let [address, allowed] = _ref6;
338
+ request.allowedAccounts = Object.entries(existedAuth.isAllowedMap).map(_ref7 => {
339
+ let [address, allowed] = _ref7;
301
340
  return allowed ? address : '';
302
341
  }).filter(item => item !== '');
303
342
  let allowedListByRequestType = [...request.allowedAccounts];
304
- if (accountAuthType === 'evm') {
305
- allowedListByRequestType = allowedListByRequestType.filter(a => (0, _utilCrypto.isEthereumAddress)(a));
306
- } else if (accountAuthType === 'substrate') {
307
- allowedListByRequestType = allowedListByRequestType.filter(a => !(0, _utilCrypto.isEthereumAddress)(a));
308
- }
343
+ allowedListByRequestType = accountAuthTypes.reduce((list, accountAuthType) => {
344
+ if (accountAuthType === 'evm') {
345
+ list.push(...allowedListByRequestType.filter(a => (0, _utilCrypto.isEthereumAddress)(a)));
346
+ } else if (accountAuthType === 'substrate') {
347
+ list.push(...allowedListByRequestType.filter(a => (0, _keyring.isSubstrateAddress)(a)));
348
+ } else if (accountAuthType === 'ton') {
349
+ list.push(...allowedListByRequestType.filter(a => (0, _keyring.isTonAddress)(a)));
350
+ }
351
+ return list;
352
+ }, []);
309
353
  if (!confirmAnotherType && !request.reConfirm && allowedListByRequestType.length !== 0) {
310
354
  // Prevent appear confirmation popup
311
355
  return false;
@@ -314,7 +358,7 @@ class AuthRequestHandler {
314
358
  // Auto auth for web app
315
359
 
316
360
  // Ignore white list
317
- const isWhiteList = _constants.WEB_APP_URL.some(url => idStr.includes(url)) && false;
361
+ const isWhiteList = _constants2.WEB_APP_URL.some(url => idStr.includes(url)) && false;
318
362
  if (isWhiteList) {
319
363
  const isAllowedMap = this.getAddressList(true);
320
364
  authList[(0, _utils2.stripUrl)(url)] = {
@@ -324,7 +368,7 @@ class AuthRequestHandler {
324
368
  isAllowedMap,
325
369
  origin,
326
370
  url,
327
- accountAuthType: 'both'
371
+ accountAuthTypes: _constants.ALL_ACCOUNT_AUTH_TYPES
328
372
  };
329
373
  this.setAuthorize(authList);
330
374
  return true;
@@ -334,9 +378,12 @@ class AuthRequestHandler {
334
378
  ...this.authCompleteV2(id, url, resolve, reject),
335
379
  id,
336
380
  idStr,
337
- request,
381
+ request: {
382
+ ...request,
383
+ accountAuthTypes
384
+ },
338
385
  url,
339
- accountAuthType: accountAuthType
386
+ accountAuthTypes: accountAuthTypes || ['substrate']
340
387
  };
341
388
  this.updateIconAuthV2();
342
389
  if (Object.keys(this.#authRequestsV2).length < 2 && !(mergeKeys.length > 0 && mergeKeys[mergeKeys.length - 1] !== id)) {
@@ -114,11 +114,10 @@ class EvmRequestHandler {
114
114
  }
115
115
  async signMessage(confirmation) {
116
116
  const {
117
- account,
117
+ address,
118
118
  payload,
119
119
  type
120
120
  } = confirmation.payload;
121
- const address = account.address;
122
121
  const pair = _uiKeyring.default.getPair(address);
123
122
  if (pair.isLocked) {
124
123
  _uiKeyring.default.unlockPair(pair.address);
@@ -130,7 +129,7 @@ class EvmRequestHandler {
130
129
  case 'eth_signTypedData_v1':
131
130
  case 'eth_signTypedData_v3':
132
131
  case 'eth_signTypedData_v4':
133
- return await pair.evmSigner.signMessage(payload, type);
132
+ return await pair.evm.signMessage(payload, type);
134
133
  default:
135
134
  throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, (0, _i18next.t)('Unsupported action'));
136
135
  }
@@ -208,7 +207,7 @@ class EvmRequestHandler {
208
207
  if (pair.isLocked) {
209
208
  _uiKeyring.default.unlockPair(pair.address);
210
209
  }
211
- return pair.evmSigner.signTransaction(tx);
210
+ return pair.evm.signTransaction(tx);
212
211
  }
213
212
  async decorateResult(t, request, result) {
214
213
  if (result.payload === '') {
@@ -8,7 +8,6 @@ exports.default = void 0;
8
8
  var _RequestExtrinsicSign = _interopRequireDefault(require("@subwallet/extension-base/background/RequestExtrinsicSign"));
9
9
  var _getId = require("@subwallet/extension-base/utils/getId");
10
10
  var _request = require("@subwallet/extension-base/utils/request");
11
- var _uiKeyring = _interopRequireDefault(require("@subwallet/ui-keyring"));
12
11
  var _rxjs = require("rxjs");
13
12
  var _logger = require("@polkadot/util/logger");
14
13
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
@@ -29,13 +28,13 @@ class SubstrateRequestHandler {
29
28
  get allSubstrateRequests() {
30
29
  return Object.values(this.#substrateRequests).map(_ref => {
31
30
  let {
32
- account,
31
+ address,
33
32
  id,
34
33
  request,
35
34
  url
36
35
  } = _ref;
37
36
  return {
38
- account,
37
+ address,
39
38
  id,
40
39
  request,
41
40
  url,
@@ -67,7 +66,7 @@ class SubstrateRequestHandler {
67
66
  get numSubstrateRequests() {
68
67
  return Object.keys(this.#substrateRequests).length;
69
68
  }
70
- async sign(url, request, account, _id) {
69
+ async sign(url, request, _id) {
71
70
  const id = _id || (0, _getId.getId)();
72
71
  const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
73
72
  if (isAlwaysRequired) {
@@ -76,7 +75,7 @@ class SubstrateRequestHandler {
76
75
  return new Promise((resolve, reject) => {
77
76
  this.#substrateRequests[id] = {
78
77
  ...this.signComplete(id, resolve, reject),
79
- account,
78
+ address: request.payload.address,
80
79
  id,
81
80
  request,
82
81
  url
@@ -91,14 +90,9 @@ class SubstrateRequestHandler {
91
90
  this.#requestService.keyringService.lock();
92
91
  }
93
92
  return new Promise((resolve, reject) => {
94
- const pair = _uiKeyring.default.getPair(address);
95
- const account = {
96
- address: pair.address,
97
- ...pair.meta
98
- };
99
93
  this.#substrateRequests[id] = {
100
94
  ...this.signComplete(id, resolve, reject),
101
- account,
95
+ address,
102
96
  id,
103
97
  request: new _RequestExtrinsicSign.default(payload),
104
98
  url: url
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _request = require("@subwallet/extension-base/utils/request");
8
+ var _uiKeyring = require("@subwallet/ui-keyring");
9
+ var _core = require("@ton/core");
10
+ var _i18next = require("i18next");
11
+ var _rxjs = require("rxjs");
12
+ var _util = require("@polkadot/util");
13
+ var _logger = require("@polkadot/util/logger");
14
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
15
+ // SPDX-License-Identifier: Apache-2.0
16
+
17
+ class TonRequestHandler {
18
+ #requestService;
19
+ #logger;
20
+ confirmationsQueueSubjectTon = new _rxjs.BehaviorSubject({
21
+ tonSignatureRequest: {},
22
+ tonSendTransactionRequest: {},
23
+ tonWatchTransactionRequest: {}
24
+ });
25
+ confirmationsPromiseMap = {};
26
+ constructor(requestService) {
27
+ this.#requestService = requestService;
28
+ this.#logger = (0, _logger.logger)('TonRequestHandler');
29
+ }
30
+ get numTonRequests() {
31
+ let count = 0;
32
+ Object.values(this.confirmationsQueueSubjectTon.getValue()).forEach(x => {
33
+ count += Object.keys(x).length;
34
+ });
35
+ return count;
36
+ }
37
+ getConfirmationsQueueSubjectTon() {
38
+ return this.confirmationsQueueSubjectTon;
39
+ }
40
+ async addConfirmationTon(id, url, type, payload) {
41
+ let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
42
+ let validator = arguments.length > 5 ? arguments[5] : undefined;
43
+ const confirmations = this.confirmationsQueueSubjectTon.getValue();
44
+ const confirmationType = confirmations[type];
45
+ const payloadJson = JSON.stringify({});
46
+ const isInternal = (0, _request.isInternalRequest)(url);
47
+ if (['tonSendTransactionRequest', 'tonSignatureRequest'].includes(type)) {
48
+ const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
49
+ if (isAlwaysRequired) {
50
+ this.#requestService.keyringService.lock();
51
+ }
52
+ }
53
+
54
+ // Check duplicate request
55
+ const duplicated = Object.values(confirmationType).find(c => c.url === url && c.payloadJson === payloadJson);
56
+ if (duplicated) {
57
+ throw new Error('Ton duplicate request'); // update this message.
58
+ }
59
+
60
+ confirmationType[id] = {
61
+ id,
62
+ url,
63
+ isInternal,
64
+ payload,
65
+ payloadJson,
66
+ ...options
67
+ };
68
+ const promise = new Promise((resolve, reject) => {
69
+ this.confirmationsPromiseMap[id] = {
70
+ validator: validator,
71
+ resolver: {
72
+ resolve: resolve,
73
+ reject: reject
74
+ }
75
+ };
76
+ });
77
+ this.confirmationsQueueSubjectTon.next(confirmations);
78
+ if (!isInternal) {
79
+ this.#requestService.popupOpen();
80
+ }
81
+ this.#requestService.updateIconV2();
82
+ return promise;
83
+ }
84
+ async completeConfirmationTon(request) {
85
+ const confirmations = this.confirmationsQueueSubjectTon.getValue();
86
+ for (const ct in request) {
87
+ const type = ct;
88
+ const result = request[type];
89
+ const {
90
+ id
91
+ } = result;
92
+ const {
93
+ resolver,
94
+ validator
95
+ } = this.confirmationsPromiseMap[id];
96
+ const confirmation = confirmations[type][id];
97
+ if (!resolver || !confirmation) {
98
+ this.#logger.error((0, _i18next.t)('Unable to proceed. Please try again'), type, id);
99
+ throw new Error((0, _i18next.t)('Unable to proceed. Please try again'));
100
+ }
101
+
102
+ // Fill signature for some special type
103
+ await this.decorateResult(type, confirmation, result);
104
+
105
+ // Validate response from confirmation popup some info like password, response format....
106
+ const error = validator && validator(result);
107
+ if (error) {
108
+ resolver.reject(error);
109
+ }
110
+
111
+ // Delete confirmations from queue
112
+ delete this.confirmationsPromiseMap[id];
113
+ delete confirmations[type][id];
114
+ this.confirmationsQueueSubjectTon.next(confirmations);
115
+
116
+ // Update icon, and close queue
117
+ this.#requestService.updateIconV2(this.#requestService.numAllRequests === 0);
118
+ resolver.resolve(result);
119
+ }
120
+
121
+ // TODO: Review later
122
+ return true;
123
+ }
124
+ async decorateResult(t, request, result) {
125
+ if (result.payload === '') {
126
+ if (t === 'tonSignatureRequest') {
127
+ // result.payload = await this.signMessage(request as ConfirmationDefinitions['evmSignatureRequest'][0]);
128
+ } else if (t === 'tonSendTransactionRequest') {
129
+ result.payload = this.signTransactionTon(request);
130
+ }
131
+ if (t === 'tonSignatureRequest' || t === 'tonSendTransactionRequest') {
132
+ const isAlwaysRequired = await this.#requestService.settingService.isAlwaysRequired;
133
+ if (isAlwaysRequired) {
134
+ this.#requestService.keyringService.lock();
135
+ }
136
+ }
137
+ }
138
+ }
139
+ signTransactionTon(confirmation) {
140
+ const transaction = confirmation.payload;
141
+ const {
142
+ from,
143
+ messagePayload
144
+ } = transaction;
145
+ const pair = _uiKeyring.keyring.getPair(from);
146
+ if (pair.isLocked) {
147
+ _uiKeyring.keyring.unlockPair(pair.address);
148
+ }
149
+ const messages = _core.Cell.fromBase64(messagePayload);
150
+ const signedTransaction = pair.ton.sign(messages);
151
+ return (0, _util.u8aToHex)(Uint8Array.from(signedTransaction));
152
+ }
153
+ resetWallet() {
154
+ const confirmations = this.confirmationsQueueSubjectTon.getValue();
155
+ for (const [type, requests] of Object.entries(confirmations)) {
156
+ for (const confirmation of Object.values(requests)) {
157
+ const {
158
+ id
159
+ } = confirmation;
160
+ const {
161
+ resolver
162
+ } = this.confirmationsPromiseMap[id];
163
+ if (!resolver || !confirmation) {
164
+ console.error('Not found confirmation', type, id);
165
+ } else {
166
+ resolver.reject(new Error('Reset wallet'));
167
+ }
168
+ delete this.confirmationsPromiseMap[id];
169
+ delete confirmations[type][id];
170
+ }
171
+ }
172
+ this.confirmationsQueueSubjectTon.next(confirmations);
173
+ }
174
+ }
175
+ exports.default = TonRequestHandler;