@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
@@ -1,6 +1,7 @@
1
1
  // Copyright 2019-2022 @subwallet/extension-base authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ import TonRequestHandler from "./handler/TonRequestHandler.js";
4
5
  import { AuthRequestHandler, ConnectWCRequestHandler, EvmRequestHandler, MetadataRequestHandler, NotSupportWCRequestHandler, PopupHandler, SubstrateRequestHandler } from "./handler/index.js";
5
6
  export default class RequestService {
6
7
  // Common
@@ -10,6 +11,7 @@ export default class RequestService {
10
11
  #authRequestHandler;
11
12
  #substrateRequestHandler;
12
13
  #evmRequestHandler;
14
+ #tonRequestHandler;
13
15
  #connectWCRequestHandler;
14
16
  #notSupportWCRequestHandler;
15
17
 
@@ -23,6 +25,7 @@ export default class RequestService {
23
25
  this.#authRequestHandler = new AuthRequestHandler(this, this.#chainService, this.keyringService);
24
26
  this.#substrateRequestHandler = new SubstrateRequestHandler(this);
25
27
  this.#evmRequestHandler = new EvmRequestHandler(this);
28
+ this.#tonRequestHandler = new TonRequestHandler(this);
26
29
  this.#connectWCRequestHandler = new ConnectWCRequestHandler(this);
27
30
  this.#notSupportWCRequestHandler = new NotSupportWCRequestHandler(this);
28
31
 
@@ -30,13 +33,13 @@ export default class RequestService {
30
33
  this.updateIconV2();
31
34
  }
32
35
  get numAllRequests() {
33
- return this.allSubstrateRequests.length + this.numEvmRequests;
36
+ return this.allSubstrateRequests.length + this.numEvmRequests + this.numTonRequests;
34
37
  }
35
38
  updateIconV2(shouldClose) {
36
39
  this.#popupHandler.updateIconV2(shouldClose);
37
40
  }
38
41
  getAddressList(value = false) {
39
- const addressList = Object.keys(this.keyringService.accounts);
42
+ const addressList = Object.keys(this.keyringService.context.pairs);
40
43
  return addressList.reduce((addressList, v) => ({
41
44
  ...addressList,
42
45
  [v]: value
@@ -125,8 +128,8 @@ export default class RequestService {
125
128
  get allSubstrateRequests() {
126
129
  return this.#substrateRequestHandler.allSubstrateRequests;
127
130
  }
128
- sign(url, request, account, id) {
129
- return this.#substrateRequestHandler.sign(url, request, account, id);
131
+ sign(url, request, id) {
132
+ return this.#substrateRequestHandler.sign(url, request, id);
130
133
  }
131
134
  get numSubstrateRequests() {
132
135
  return this.#substrateRequestHandler.numSubstrateRequests;
@@ -136,9 +139,15 @@ export default class RequestService {
136
139
  get numEvmRequests() {
137
140
  return this.#evmRequestHandler.numEvmRequests;
138
141
  }
142
+ get numTonRequests() {
143
+ return this.#tonRequestHandler.numTonRequests;
144
+ }
139
145
  get confirmationsQueueSubject() {
140
146
  return this.#evmRequestHandler.getConfirmationsQueueSubject();
141
147
  }
148
+ get confirmationsQueueSubjectTon() {
149
+ return this.#tonRequestHandler.getConfirmationsQueueSubjectTon();
150
+ }
142
151
  getSignRequest(id) {
143
152
  return this.#substrateRequestHandler.getSignRequest(id);
144
153
  }
@@ -148,9 +157,17 @@ export default class RequestService {
148
157
  addConfirmation(id, url, type, payload, options = {}, validator) {
149
158
  return this.#evmRequestHandler.addConfirmation(id, url, type, payload, options, validator);
150
159
  }
160
+ addConfirmationTon(id, url, type, payload,
161
+ // todo: messages <-> payload
162
+ options = {}, validator) {
163
+ return this.#tonRequestHandler.addConfirmationTon(id, url, type, payload, options, validator);
164
+ }
151
165
  async completeConfirmation(request) {
152
166
  return await this.#evmRequestHandler.completeConfirmation(request);
153
167
  }
168
+ async completeConfirmationTon(request) {
169
+ return await this.#tonRequestHandler.completeConfirmationTon(request);
170
+ }
154
171
  updateConfirmation(id, type, payload, options = {}, validator) {
155
172
  return this.#evmRequestHandler.updateConfirmation(id, type, payload, options, validator);
156
173
  }
@@ -191,12 +208,13 @@ export default class RequestService {
191
208
 
192
209
  // General methods
193
210
  get numRequests() {
194
- return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests + this.numNotSupportWCRequests;
211
+ return this.numMetaRequests + this.numAuthRequests + this.numSubstrateRequests + this.numEvmRequests + this.numConnectWCRequests + this.numNotSupportWCRequests + this.numTonRequests;
195
212
  }
196
213
  resetWallet() {
197
214
  this.#authRequestHandler.resetWallet();
198
215
  this.#substrateRequestHandler.resetWallet();
199
216
  this.#evmRequestHandler.resetWallet();
217
+ this.#tonRequestHandler.resetWallet();
200
218
  this.#metadataRequestHandler.resetWallet();
201
219
  this.#connectWCRequestHandler.resetWallet();
202
220
  this.#notSupportWCRequestHandler.resetWallet();
@@ -1,7 +1,7 @@
1
- import { AccountAuthType, AccountJson, RequestSign, Resolver, ResponseSigning } from '@subwallet/extension-base/background/types';
1
+ import { AccountAuthType, RequestSign, Resolver, ResponseSigning } from '@subwallet/extension-base/background/types';
2
2
  import { MetadataDef } from '@subwallet/extension-inject/types';
3
3
  export interface SignRequest extends Resolver<ResponseSigning> {
4
- account: AccountJson;
4
+ address: string;
5
5
  id: string;
6
6
  request: RequestSign;
7
7
  url: string;
@@ -17,8 +17,11 @@ export interface AuthUrlInfo {
17
17
  isAllowed: boolean;
18
18
  origin: string;
19
19
  url: string;
20
- accountAuthType?: AccountAuthType;
20
+ accountAuthTypes: AccountAuthType[];
21
21
  isAllowedMap: Record<string, boolean>;
22
22
  currentEvmNetworkKey?: string;
23
23
  }
24
+ export interface AuthUrlInfoNeedMigration extends Omit<AuthUrlInfo, 'accountAuthTypes'> {
25
+ accountAuthType?: AccountAuthType | 'both';
26
+ }
24
27
  export declare type AuthUrls = Record<string, AuthUrlInfo>;
@@ -14,7 +14,7 @@ export declare class AssetHubSwapHandler implements SwapBaseInterface {
14
14
  constructor(chainService: ChainService, balanceService: BalanceService, chain: string);
15
15
  get chainService(): ChainService;
16
16
  get balanceService(): BalanceService;
17
- get providerInfo(): import("@subwallet/extension-base/types/swap").SwapProvider;
17
+ get providerInfo(): import("@subwallet/extension-base/types").SwapProvider;
18
18
  get name(): string;
19
19
  get slug(): string;
20
20
  init(): Promise<void>;
@@ -3,11 +3,12 @@
3
3
 
4
4
  import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
5
5
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
6
- import { BasicTxErrorType, ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
6
+ import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
7
7
  import { _getEarlyAssetHubValidationError, _validateBalanceToSwapOnAssetHub, _validateSwapRecipient } from '@subwallet/extension-base/core/logic-validation/swap';
8
8
  import { createXcmExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/xcm';
9
9
  import { _getChainNativeTokenSlug, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
10
10
  import { convertSwapRate, getSwapAlternativeAsset, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
11
+ import { BasicTxErrorType } from '@subwallet/extension-base/types';
11
12
  import { CommonStepType } from '@subwallet/extension-base/types/service-base';
12
13
  import { SwapErrorType, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
13
14
  import BigN from 'bignumber.js';
@@ -2,10 +2,10 @@
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
4
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
5
- import { BasicTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
6
5
  import { _validateBalanceToSwap, _validateSwapRecipient } from '@subwallet/extension-base/core/logic-validation/swap';
7
6
  import { _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
8
7
  import { getSwapAlternativeAsset } from '@subwallet/extension-base/services/swap-service/utils';
8
+ import { BasicTxErrorType } from '@subwallet/extension-base/types';
9
9
  import { DEFAULT_FIRST_STEP, MOCK_STEP_FEE } from '@subwallet/extension-base/types/service-base';
10
10
  import { SwapErrorType, SwapFeeType } from '@subwallet/extension-base/types/swap';
11
11
  import { formatNumber } from '@subwallet/extension-base/utils';
@@ -16,7 +16,7 @@ export declare class ChainflipSwapHandler implements SwapBaseInterface {
16
16
  constructor(chainService: ChainService, balanceService: BalanceService, isTestnet?: boolean);
17
17
  get chainService(): ChainService;
18
18
  get balanceService(): BalanceService;
19
- get providerInfo(): import("@subwallet/extension-base/types/swap").SwapProvider;
19
+ get providerInfo(): import("@subwallet/extension-base/types").SwapProvider;
20
20
  get name(): string;
21
21
  get slug(): string;
22
22
  get assetMapping(): Record<string, Asset>;
@@ -5,13 +5,14 @@ import { SwapSDK } from '@chainflip/sdk/swap';
5
5
  import { COMMON_ASSETS } from '@subwallet/chain-list';
6
6
  import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
7
7
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
8
- import { BasicTxErrorType, ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
8
+ import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
9
9
  import { _getChainflipEarlyValidationError } from '@subwallet/extension-base/core/logic-validation/swap';
10
10
  import { getERC20TransactionObject, getEVMTransactionObject } from '@subwallet/extension-base/services/balance-service/transfer/smart-contract';
11
11
  import { createTransferExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/token';
12
- import { _getAssetDecimals, _getAssetSymbol, _getChainNativeTokenSlug, _getContractAddressOfToken, _isNativeToken, _isSmartContractToken, _isSubstrateChain } from '@subwallet/extension-base/services/chain-service/utils';
12
+ import { _getAssetDecimals, _getAssetSymbol, _getChainNativeTokenSlug, _getContractAddressOfToken, _isChainSubstrateCompatible, _isNativeToken, _isSmartContractToken } from '@subwallet/extension-base/services/chain-service/utils';
13
13
  import { SwapBaseHandler } from '@subwallet/extension-base/services/swap-service/handler/base-handler';
14
14
  import { calculateSwapRate, CHAIN_FLIP_SUPPORTED_MAINNET_ASSET_MAPPING, CHAIN_FLIP_SUPPORTED_MAINNET_MAPPING, CHAIN_FLIP_SUPPORTED_TESTNET_ASSET_MAPPING, CHAIN_FLIP_SUPPORTED_TESTNET_MAPPING, getChainflipOptions, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
15
+ import { BasicTxErrorType } from '@subwallet/extension-base/types';
15
16
  import { CommonStepType } from '@subwallet/extension-base/types/service-base';
16
17
  import { SwapErrorType, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
17
18
  import BigNumber from 'bignumber.js';
@@ -340,7 +341,7 @@ export class ChainflipSwapHandler {
340
341
  const fromAsset = this.chainService.getAssetBySlug(pair.from);
341
342
  const toAsset = this.chainService.getAssetBySlug(pair.to);
342
343
  const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
343
- const chainType = _isSubstrateChain(chainInfo) ? ChainType.SUBSTRATE : ChainType.EVM;
344
+ const chainType = _isChainSubstrateCompatible(chainInfo) ? ChainType.SUBSTRATE : ChainType.EVM;
344
345
  const receiver = recipient !== null && recipient !== void 0 ? recipient : address;
345
346
  const srcChainId = this.chainMapping[fromAsset.originChain];
346
347
  const destChainId = this.chainMapping[toAsset.originChain];
@@ -16,7 +16,7 @@ export declare class HydradxHandler implements SwapBaseInterface {
16
16
  chain: () => string;
17
17
  get chainService(): ChainService;
18
18
  get balanceService(): BalanceService;
19
- get providerInfo(): import("@subwallet/extension-base/types/swap").SwapProvider;
19
+ get providerInfo(): import("@subwallet/extension-base/types").SwapProvider;
20
20
  get name(): string;
21
21
  get slug(): string;
22
22
  getXcmStep(params: OptimalSwapPathParams): Promise<[BaseStepDetail, CommonStepFeeInfo] | undefined>;
@@ -6,12 +6,13 @@ import { COMMON_CHAIN_SLUGS } from '@subwallet/chain-list';
6
6
  import { _AssetType } from '@subwallet/chain-list/types';
7
7
  import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
8
8
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
9
- import { BasicTxErrorType, ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
9
+ import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
10
10
  import { _getEarlyHydradxValidationError } from '@subwallet/extension-base/core/logic-validation/swap';
11
11
  import { createXcmExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/xcm';
12
12
  import { _getAssetDecimals, _getChainNativeTokenSlug, _getTokenOnChainAssetId, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
13
13
  import { SwapBaseHandler } from '@subwallet/extension-base/services/swap-service/handler/base-handler';
14
14
  import { calculateSwapRate, getSwapAlternativeAsset, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
15
+ import { BasicTxErrorType } from '@subwallet/extension-base/types';
15
16
  import { CommonStepType } from '@subwallet/extension-base/types/service-base';
16
17
  import { SwapErrorType, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
17
18
  import BigNumber from 'bignumber.js';
@@ -3,12 +3,12 @@
3
3
 
4
4
  import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
5
5
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
6
- import { BasicTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
7
6
  import { ServiceStatus } from '@subwallet/extension-base/services/base/types';
8
7
  import { AssetHubSwapHandler } from '@subwallet/extension-base/services/swap-service/handler/asset-hub';
9
8
  import { ChainflipSwapHandler } from '@subwallet/extension-base/services/swap-service/handler/chainflip-handler';
10
9
  import { HydradxHandler } from '@subwallet/extension-base/services/swap-service/handler/hydradx-handler';
11
10
  import { _PROVIDER_TO_SUPPORTED_PAIR_MAP, getSwapAltToken, SWAP_QUOTE_TIMEOUT_MAP } from '@subwallet/extension-base/services/swap-service/utils';
11
+ import { BasicTxErrorType } from '@subwallet/extension-base/types';
12
12
  import { DEFAULT_FIRST_STEP, MOCK_STEP_FEE } from '@subwallet/extension-base/types/service-base';
13
13
  import { _SUPPORTED_SWAP_PROVIDERS, SwapErrorType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types/swap';
14
14
  import { createPromiseHandler } from '@subwallet/extension-base/utils';
@@ -1,7 +1,9 @@
1
1
  import { _ChainInfo } from '@subwallet/chain-list/types';
2
+ import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
2
3
  import { SWTransaction } from '@subwallet/extension-base/services/transaction-service/types';
3
4
  import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
4
5
  export declare const getTransactionId: (chainType: string, chain: string, isInternal: boolean, isWalletConnect?: boolean) => string;
5
6
  export declare const getValidationId: (chainType: string, chain: string) => string;
6
7
  export declare const isSubstrateTransaction: (tx: SWTransaction['transaction']) => tx is SubmittableExtrinsic;
8
+ export declare const isTonTransaction: (tx: SWTransaction['transaction']) => tx is TonTransactionConfig;
7
9
  export declare const getBaseTransactionInfo: (transaction: SWTransaction, chainInfoMap: Record<string, _ChainInfo>) => string;
@@ -13,6 +13,10 @@ export const getValidationId = (chainType, chain) => {
13
13
  export const isSubstrateTransaction = tx => {
14
14
  return !!tx.send;
15
15
  };
16
+ export const isTonTransaction = tx => {
17
+ const tonTransactionConfig = tx;
18
+ return Boolean(tonTransactionConfig.messagePayload) && tonTransactionConfig.seqno >= 0;
19
+ };
16
20
  const typeName = type => {
17
21
  switch (type) {
18
22
  case ExtrinsicType.TRANSFER_BALANCE:
@@ -39,6 +39,7 @@ export default class TransactionService {
39
39
  generateHashPayload(chain: string, transaction: TransactionConfig): HexString;
40
40
  private signAndSendEvmTransaction;
41
41
  private signAndSendSubstrateTransaction;
42
+ private signAndSendTonTransaction;
42
43
  private handleTransactionTimeout;
43
44
  private handlePostEarningTransaction;
44
45
  resetWallet(): void;
@@ -3,18 +3,19 @@
3
3
 
4
4
  import { EvmProviderError } from '@subwallet/extension-base/background/errors/EvmProviderError';
5
5
  import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
6
- import { BasicTxErrorType, ChainType, EvmProviderErrorType, ExtrinsicStatus, ExtrinsicType, NotificationType, TransactionDirection } from '@subwallet/extension-base/background/KoniTypes';
6
+ import { ChainType, EvmProviderErrorType, ExtrinsicStatus, ExtrinsicType, NotificationType, TransactionDirection } from '@subwallet/extension-base/background/KoniTypes';
7
7
  import { ALL_ACCOUNT_KEY, fetchLastestBlockedActionsAndFeatures } from '@subwallet/extension-base/constants';
8
8
  import { checkBalanceWithTransactionFee, checkSigningAccountForTransaction, checkSupportForAction, checkSupportForFeature, checkSupportForTransaction, estimateFeeForTransaction } from '@subwallet/extension-base/core/logic-validation/transfer';
9
+ import { cellToBase64Str, externalMessage, getTransferCellPromise } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils';
9
10
  import { _getAssetDecimals, _getAssetSymbol, _getChainNativeTokenBasicInfo, _getEvmChainId, _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
10
11
  import { EXTENSION_REQUEST_URL } from '@subwallet/extension-base/services/request-service/constants';
11
12
  import { TRANSACTION_TIMEOUT } from '@subwallet/extension-base/services/transaction-service/constants';
12
13
  import { parseLiquidStakingEvents, parseLiquidStakingFastUnstakeEvents, parseTransferEventLogs, parseXcmEventLogs } from '@subwallet/extension-base/services/transaction-service/event-parser';
13
- import { getBaseTransactionInfo, getTransactionId, isSubstrateTransaction } from '@subwallet/extension-base/services/transaction-service/helpers';
14
+ import { getBaseTransactionInfo, getTransactionId, isSubstrateTransaction, isTonTransaction } from '@subwallet/extension-base/services/transaction-service/helpers';
14
15
  import { getExplorerLink, parseTransactionData } from '@subwallet/extension-base/services/transaction-service/utils';
15
16
  import { isWalletConnectRequest } from '@subwallet/extension-base/services/wallet-connect-service/helpers';
16
- import { YieldPoolType } from '@subwallet/extension-base/types';
17
- import { _isRuntimeUpdated, anyNumberToBN, reformatAddress } from '@subwallet/extension-base/utils';
17
+ import { BasicTxErrorType, YieldPoolType } from '@subwallet/extension-base/types';
18
+ import { _isRuntimeUpdated, anyNumberToBN, pairToAccount, reformatAddress } from '@subwallet/extension-base/utils';
18
19
  import { mergeTransactionAndSignature } from '@subwallet/extension-base/utils/eth/mergeTransactionAndSignature';
19
20
  import { isContractAddress, parseContractInput } from '@subwallet/extension-base/utils/eth/parseTransaction';
20
21
  import { BN_ZERO } from '@subwallet/extension-base/utils/number';
@@ -24,7 +25,7 @@ import { ethers } from 'ethers';
24
25
  import EventEmitter from 'eventemitter3';
25
26
  import { t } from 'i18next';
26
27
  import { BehaviorSubject, interval as rxjsInterval } from 'rxjs';
27
- import { isHex } from '@polkadot/util';
28
+ import { hexToU8a, isHex } from '@polkadot/util';
28
29
  export default class TransactionService {
29
30
  transactionSubject = new BehaviorSubject({});
30
31
  watchTransactionSubscribes = {};
@@ -86,22 +87,30 @@ export default class TransactionService {
86
87
  validationResponse.errors.push(new TransactionError(BasicTxErrorType.INTERNAL_ERROR, t('Cannot find network')));
87
88
  }
88
89
  const evmApi = this.state.chainService.getEvmApi(chainInfo.slug);
89
- const isNeedEvmApi = transaction && !isSubstrateTransaction(transaction) && !evmApi;
90
- if (isNeedEvmApi) {
90
+ const tonApi = this.state.chainService.getTonApi(chainInfo.slug);
91
+ const isNoEvmApi = transaction && !isSubstrateTransaction(transaction) && !isTonTransaction(transaction) && !evmApi; // todo: should split isEvmTx && isNoEvmApi. Because other chains type also has no Evm Api
92
+ const isNoTonApi = transaction && isTonTransaction(transaction) && !tonApi;
93
+ if (isNoEvmApi || isNoTonApi) {
91
94
  validationResponse.errors.push(new TransactionError(BasicTxErrorType.CHAIN_DISCONNECTED, undefined));
92
95
  }
93
96
 
94
97
  // Estimate fee for transaction
95
98
  validationResponse.estimateFee = await estimateFeeForTransaction(validationResponse, transaction, chainInfo, evmApi);
99
+ const chainInfoMap = this.state.chainService.getChainInfoMap();
96
100
 
97
101
  // Check account signing transaction
98
- checkSigningAccountForTransaction(validationResponse);
102
+ checkSigningAccountForTransaction(validationResponse, chainInfoMap);
99
103
  const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(chain);
100
104
  const nativeTokenAvailable = await this.state.balanceService.getTransferableBalance(address, chain, nativeTokenInfo.slug, extrinsicType);
101
105
 
102
106
  // Check available balance against transaction fee
103
107
  checkBalanceWithTransactionFee(validationResponse, transactionInput, nativeTokenInfo, nativeTokenAvailable);
104
108
 
109
+ // Warnings Ton address if bounceable and not active
110
+ // if (transaction && isTonTransaction(transaction) && tonApi) {
111
+ // await checkTonAddressBounceableAndAccountNotActive(tonApi, validationResponse);
112
+ // }
113
+
105
114
  // Check additional validations
106
115
  additionalValidator && (await additionalValidator(validationResponse));
107
116
  return validationResponse;
@@ -153,8 +162,9 @@ export default class TransactionService {
153
162
  }
154
163
  async handleTransaction(transaction) {
155
164
  const validatedTransaction = await this.validateTransaction(transaction);
165
+ const ignoreWarnings = validatedTransaction.ignoreWarnings || [];
156
166
  const stopByErrors = validatedTransaction.errors.length > 0;
157
- const stopByWarnings = validatedTransaction.warnings.length > 0 && !validatedTransaction.ignoreWarnings;
167
+ const stopByWarnings = validatedTransaction.warnings.length > 0 && validatedTransaction.warnings.some(warning => !ignoreWarnings.includes(warning.warningType));
158
168
  if (stopByErrors || stopByWarnings) {
159
169
  // @ts-ignore
160
170
  'transaction' in validatedTransaction && delete validatedTransaction.transaction;
@@ -195,7 +205,7 @@ export default class TransactionService {
195
205
  }
196
206
  async sendTransaction(transaction) {
197
207
  // Send Transaction
198
- const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : this.signAndSendEvmTransaction(transaction));
208
+ const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : this.signAndSendTonTransaction(transaction));
199
209
  const {
200
210
  eventsHandler
201
211
  } = transaction;
@@ -829,13 +839,7 @@ export default class TransactionService {
829
839
  const chainInfo = this.state.chainService.getChainInfoByKey(chain);
830
840
  const hasError = !!(payload.errors && payload.errors.length > 0);
831
841
  const accountPair = keyring.getPair(address);
832
- const account = {
833
- address,
834
- ...accountPair.meta
835
- };
836
- if (!payload.account) {
837
- payload.account = account;
838
- }
842
+ const account = pairToAccount(accountPair);
839
843
 
840
844
  // Allow sign transaction
841
845
  payload.canSign = true;
@@ -851,6 +855,9 @@ export default class TransactionService {
851
855
  payload.parseData = payload.data;
852
856
  }
853
857
  }
858
+ if (!payload.address) {
859
+ payload.address = address;
860
+ }
854
861
  if ('data' in payload && payload.data === undefined) {
855
862
  delete payload.data;
856
863
  }
@@ -1117,6 +1124,96 @@ export default class TransactionService {
1117
1124
  });
1118
1125
  return emitter;
1119
1126
  }
1127
+ signAndSendTonTransaction({
1128
+ address,
1129
+ chain,
1130
+ extrinsicType,
1131
+ id,
1132
+ transaction,
1133
+ url
1134
+ }) {
1135
+ const walletContract = keyring.getPair(address).ton.currentContract;
1136
+ const emitter = new EventEmitter();
1137
+ const eventData = {
1138
+ id,
1139
+ errors: [],
1140
+ warnings: [],
1141
+ extrinsicHash: id
1142
+ };
1143
+ const payload = transaction;
1144
+ const signer = message => {
1145
+ return new Promise(resolve => {
1146
+ this.state.requestService.addConfirmationTon(id, url || EXTENSION_REQUEST_URL, 'tonSendTransactionRequest', {
1147
+ ...payload,
1148
+ messagePayload: cellToBase64Str(message),
1149
+ messages: []
1150
+ }, {}).then(({
1151
+ isApproved,
1152
+ payload
1153
+ }) => {
1154
+ if (!isApproved) {
1155
+ this.removeTransaction(id);
1156
+ eventData.errors.push(new TransactionError(BasicTxErrorType.USER_REJECT_REQUEST));
1157
+ emitter.emit('error', eventData);
1158
+ } else {
1159
+ if (!payload) {
1160
+ throw new Error('Bad signature');
1161
+ }
1162
+ resolve(Buffer.from(hexToU8a(payload)));
1163
+ }
1164
+ }).catch(e => {
1165
+ this.removeTransaction(id);
1166
+ eventData.errors.push(new TransactionError(BasicTxErrorType.UNABLE_TO_SIGN, t(e.message)));
1167
+ emitter.emit('error', eventData);
1168
+ });
1169
+ });
1170
+ };
1171
+ const tonTransactionConfig = transaction;
1172
+ const seqno = tonTransactionConfig.seqno;
1173
+ const messages = tonTransactionConfig.messages;
1174
+ const transferObjectPromise = getTransferCellPromise(walletContract, signer, payload, seqno, messages);
1175
+ transferObjectPromise.then(tx => {
1176
+ // Emit signed event
1177
+ emitter.emit('signed', eventData);
1178
+ const boc = externalMessage(walletContract, seqno, tx).toBoc().toString('base64');
1179
+ this.handleTransactionTimeout(emitter, eventData);
1180
+ emitter.emit('send', eventData); // This event is needed after sending transaction with queue
1181
+
1182
+ const tonApi = this.state.chainService.getTonApi(chain);
1183
+ tonApi.sendTonTransaction(boc).then(externalMsgHash => {
1184
+ // the externalMsgHash is the hash of first message, not the hash of transaction.
1185
+ if (!externalMsgHash) {
1186
+ return;
1187
+ }
1188
+ tonApi.getStatusByExtMsgHash(externalMsgHash, extrinsicType).then(([status, hex]) => {
1189
+ if (status && hex) {
1190
+ eventData.extrinsicHash = hex;
1191
+ emitter.emit('extrinsicHash', eventData);
1192
+ emitter.emit('success', eventData);
1193
+ }
1194
+ if (!status && hex) {
1195
+ eventData.extrinsicHash = hex;
1196
+ emitter.emit('extrinsicHash', eventData);
1197
+ eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED));
1198
+ emitter.emit('error', eventData);
1199
+ }
1200
+ }).catch(e => {
1201
+ eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED, e.message));
1202
+ emitter.emit('error', eventData);
1203
+ });
1204
+
1205
+ // todo: handle status of externalMsgHash
1206
+ }).catch(e => {
1207
+ eventData.errors.push(new TransactionError(BasicTxErrorType.SEND_TRANSACTION_FAILED, e.message));
1208
+ emitter.emit('error', eventData);
1209
+ });
1210
+ }).catch(e => {
1211
+ this.removeTransaction(id);
1212
+ eventData.errors.push(new TransactionError(BasicTxErrorType.UNABLE_TO_SIGN, e.message));
1213
+ emitter.emit('error', eventData);
1214
+ });
1215
+ return emitter;
1216
+ }
1120
1217
  handleTransactionTimeout(emitter, eventData) {
1121
1218
  const timeout = setTimeout(() => {
1122
1219
  const transaction = this.getTransaction(eventData.id);
@@ -1,4 +1,6 @@
1
- import { BaseRequestSign, ChainType, ExtrinsicDataTypeMap, ExtrinsicStatus, ExtrinsicType, FeeData, ValidateTransactionResponse } from '@subwallet/extension-base/background/KoniTypes';
1
+ import { ChainType, ExtrinsicDataTypeMap, ExtrinsicStatus, ExtrinsicType, FeeData, ValidateTransactionResponse } from '@subwallet/extension-base/background/KoniTypes';
2
+ import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
3
+ import { BaseRequestSign } from '@subwallet/extension-base/types';
2
4
  import EventEmitter from 'eventemitter3';
3
5
  import { TransactionConfig } from 'web3-core';
4
6
  import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
@@ -17,7 +19,7 @@ export interface SWTransaction extends ValidateTransactionResponse, Partial<Pick
17
19
  createdAt: number;
18
20
  updatedAt: number;
19
21
  estimateFee?: FeeData;
20
- transaction: SubmittableExtrinsic | TransactionConfig;
22
+ transaction: SubmittableExtrinsic | TransactionConfig | TonTransactionConfig;
21
23
  additionalValidator?: (inputTransaction: SWTransactionResponse) => Promise<void>;
22
24
  eventsHandler?: (eventEmitter: TransactionEmitter) => void;
23
25
  }
@@ -56,10 +56,7 @@ export default class PolkadotRequestHandler {
56
56
  address: address,
57
57
  data: param.message,
58
58
  type: 'bytes'
59
- }), {
60
- address,
61
- ...pair.meta
62
- }, getWCId(id)).then(async ({
59
+ }), getWCId(id)).then(async ({
63
60
  signature
64
61
  }) => {
65
62
  await _classPrivateFieldLooseBase(this, _walletConnectService)[_walletConnectService].responseRequest({
@@ -74,12 +71,7 @@ export default class PolkadotRequestHandler {
74
71
  } else if (method === POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION) {
75
72
  const param = parseRequestParams(request.params);
76
73
  _classPrivateFieldLooseBase(this, _checkAccount)[_checkAccount](param.address, sessionAccounts);
77
- const pair = keyring.getPair(param.address);
78
- const address = pair.address;
79
- _classPrivateFieldLooseBase(this, _requestService)[_requestService].sign(url, new RequestExtrinsicSign(param.transactionPayload), {
80
- address,
81
- ...pair.meta
82
- }, getWCId(id)).then(async ({
74
+ _classPrivateFieldLooseBase(this, _requestService)[_requestService].sign(url, new RequestExtrinsicSign(param.transactionPayload), getWCId(id)).then(async ({
83
75
  signature
84
76
  }) => {
85
77
  await _classPrivateFieldLooseBase(this, _walletConnectService)[_walletConnectService].responseRequest({
@@ -0,0 +1,5 @@
1
+ import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
2
+ import { AccountProxyStoreData } from '@subwallet/extension-base/types';
3
+ export default class AccountProxyStore extends SubscribableStore<AccountProxyStoreData> {
4
+ constructor();
5
+ }
@@ -0,0 +1,10 @@
1
+ // Copyright 2019-2022 @subwallet/extension-koni-ui authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { EXTENSION_PREFIX } from '@subwallet/extension-base/defaults';
5
+ import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
6
+ export default class AccountProxyStore extends SubscribableStore {
7
+ constructor() {
8
+ super(EXTENSION_PREFIX ? `${EXTENSION_PREFIX}account_proxy` : null);
9
+ }
10
+ }
@@ -1,4 +1,4 @@
1
- import { AuthUrls } from '@subwallet/extension-base/background/handlers/State';
1
+ import { AuthUrls } from '@subwallet/extension-base/services/request-service/types';
2
2
  import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
3
3
  export default class AuthorizeStore extends SubscribableStore<AuthUrls> {
4
4
  constructor();
@@ -1,5 +1,5 @@
1
- import { CurrentAccountInfo } from '@subwallet/extension-base/background/KoniTypes';
2
1
  import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
2
+ import { CurrentAccountInfo } from '@subwallet/extension-base/types';
3
3
  export default class CurrentAccountStore extends SubscribableStore<CurrentAccountInfo> {
4
4
  constructor();
5
5
  }
@@ -0,0 +1,5 @@
1
+ import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
2
+ import { ModifyPairStoreData } from '@subwallet/extension-base/types';
3
+ export default class ModifyPairStore extends SubscribableStore<ModifyPairStoreData> {
4
+ constructor();
5
+ }
@@ -0,0 +1,10 @@
1
+ // Copyright 2019-2022 @subwallet/extension-koni-ui authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { EXTENSION_PREFIX } from '@subwallet/extension-base/defaults';
5
+ import SubscribableStore from '@subwallet/extension-base/stores/SubscribableStore';
6
+ export default class ModifyPairStore extends SubscribableStore {
7
+ constructor() {
8
+ super(EXTENSION_PREFIX ? `${EXTENSION_PREFIX}pair_modify` : null);
9
+ }
10
+ }
package/stores/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
+ export { default as AccountProxyStore } from './AccountProxyStore';
2
+ export { default as AccountRefStore } from './AccountRef';
1
3
  export { default as AccountsStore } from './Accounts';
2
- export { default as MetadataStore } from './Metadata';
3
4
  export { default as CurrentAccountStore } from './CurrentAccountStore';
4
5
  export { default as CurrentCurrencyStore } from './CurrentCurrencyStore';
6
+ export { default as MetadataStore } from './Metadata';
7
+ export { default as ModifyPairStore } from './ModifyPairStore';
package/stores/index.js CHANGED
@@ -1,7 +1,10 @@
1
1
  // Copyright 2019-2022 @polkadot/extension-base authors & contributors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
+ export { default as AccountProxyStore } from "./AccountProxyStore.js";
5
+ export { default as AccountRefStore } from "./AccountRef.js";
4
6
  export { default as AccountsStore } from "./Accounts.js";
5
- export { default as MetadataStore } from "./Metadata.js";
6
7
  export { default as CurrentAccountStore } from "./CurrentAccountStore.js";
7
- export { default as CurrentCurrencyStore } from "./CurrentCurrencyStore.js";
8
+ export { default as CurrentCurrencyStore } from "./CurrentCurrencyStore.js";
9
+ export { default as MetadataStore } from "./Metadata.js";
10
+ export { default as ModifyPairStore } from "./ModifyPairStore.js";
@@ -0,0 +1,3 @@
1
+ export * from './json';
2
+ export * from './mnemonic';
3
+ export * from './secret';
@@ -0,0 +1,6 @@
1
+ // Copyright 2019-2022 @subwallet/extension-base authors & contributors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export * from "./json.js";
5
+ export * from "./mnemonic.js";
6
+ export * from "./secret.js";