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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/background/KoniTypes.d.ts +78 -227
  2. package/background/KoniTypes.js +3 -40
  3. package/background/errors/SWError.d.ts +4 -7
  4. package/background/errors/SWError.js +4 -0
  5. package/background/errors/TransactionError.d.ts +2 -2
  6. package/background/errors/TransactionError.js +2 -4
  7. package/background/handlers/State.d.ts +0 -12
  8. package/background/types.d.ts +9 -134
  9. package/background/warnings/TransactionWarning.d.ts +1 -1
  10. package/background/warnings/TransactionWarning.js +5 -1
  11. package/cjs/background/KoniTypes.js +4 -44
  12. package/cjs/background/errors/SWError.js +4 -0
  13. package/cjs/background/errors/TransactionError.js +13 -15
  14. package/cjs/background/warnings/TransactionWarning.js +6 -2
  15. package/cjs/constants/environment.js +13 -0
  16. package/cjs/constants/index.js +40 -13
  17. package/cjs/constants/signing.js +23 -0
  18. package/cjs/constants/storage.js +4 -2
  19. package/cjs/core/consts.js +20 -0
  20. package/cjs/core/logic-validation/recipientAddress.js +106 -0
  21. package/cjs/core/logic-validation/request.js +11 -19
  22. package/cjs/core/logic-validation/swap.js +5 -5
  23. package/cjs/core/logic-validation/transfer.js +83 -42
  24. package/cjs/core/types.js +26 -0
  25. package/cjs/core/utils.js +113 -0
  26. package/cjs/koni/api/dotsama/crowdloan.js +1 -1
  27. package/cjs/koni/api/nft/index.js +14 -5
  28. package/cjs/koni/api/staking/bonding/paraChain.js +8 -8
  29. package/cjs/koni/api/staking/bonding/relayChain.js +9 -9
  30. package/cjs/koni/api/staking/index.js +4 -1
  31. package/cjs/koni/background/cron.js +7 -7
  32. package/cjs/koni/background/handlers/Extension.js +510 -1446
  33. package/cjs/koni/background/handlers/State.js +61 -238
  34. package/cjs/koni/background/handlers/Tabs.js +143 -107
  35. package/cjs/koni/background/subscription.js +5 -5
  36. package/cjs/packageInfo.js +1 -1
  37. package/cjs/page/Accounts.js +2 -5
  38. package/cjs/page/SubWalleEvmProvider.js +1 -1
  39. package/cjs/page/index.js +2 -1
  40. package/cjs/services/balance-service/BalanceMapImpl.js +48 -20
  41. package/cjs/services/balance-service/helpers/subscribe/index.js +27 -15
  42. package/cjs/services/balance-service/helpers/subscribe/ton/consts.js +40 -0
  43. package/cjs/services/balance-service/helpers/subscribe/ton/ton.js +120 -0
  44. package/cjs/services/balance-service/helpers/subscribe/ton/utils.js +181 -0
  45. package/cjs/services/balance-service/index.js +25 -13
  46. package/cjs/services/balance-service/transfer/token.js +41 -24
  47. package/cjs/services/balance-service/transfer/ton-transfer.js +136 -0
  48. package/cjs/services/buy-service/index.js +5 -1
  49. package/cjs/services/chain-service/constants.js +1 -1
  50. package/cjs/services/chain-service/handler/SubstrateApi.js +1 -0
  51. package/cjs/services/chain-service/handler/TonApi.js +213 -0
  52. package/cjs/services/chain-service/handler/TonChainHandler.js +81 -0
  53. package/cjs/services/chain-service/index.js +32 -8
  54. package/cjs/services/chain-service/utils/index.js +78 -22
  55. package/cjs/services/earning-service/constants/chains.js +3 -1
  56. package/cjs/services/earning-service/handlers/base.js +2 -1
  57. package/cjs/services/earning-service/handlers/lending/base.js +8 -9
  58. package/cjs/services/earning-service/handlers/lending/interlay.js +1 -1
  59. package/cjs/services/earning-service/handlers/liquid-staking/base.js +9 -10
  60. package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +1 -1
  61. package/cjs/services/earning-service/handlers/native-staking/amplitude.js +1 -1
  62. package/cjs/services/earning-service/handlers/native-staking/astar.js +2 -2
  63. package/cjs/services/earning-service/handlers/native-staking/base-para.js +13 -13
  64. package/cjs/services/earning-service/handlers/native-staking/base.js +2 -2
  65. package/cjs/services/earning-service/handlers/native-staking/para-chain.js +2 -2
  66. package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +15 -15
  67. package/cjs/services/earning-service/handlers/nomination-pool/index.js +14 -14
  68. package/cjs/services/earning-service/handlers/special.js +10 -10
  69. package/cjs/services/earning-service/service.js +26 -17
  70. package/cjs/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
  71. package/cjs/services/history-service/index.js +29 -11
  72. package/cjs/services/history-service/subscan-history.js +9 -21
  73. package/cjs/services/keyring-service/context/account-context.js +259 -0
  74. package/cjs/services/keyring-service/context/handlers/Base.js +20 -0
  75. package/cjs/services/keyring-service/context/handlers/Derive.js +377 -0
  76. package/cjs/services/keyring-service/context/handlers/Inject.js +75 -0
  77. package/cjs/services/keyring-service/context/handlers/Json.js +348 -0
  78. package/cjs/services/keyring-service/context/handlers/Ledger.js +165 -0
  79. package/cjs/services/keyring-service/context/handlers/Mnemonic.js +218 -0
  80. package/cjs/services/keyring-service/context/handlers/Modify.js +258 -0
  81. package/cjs/services/keyring-service/context/handlers/Secret.js +310 -0
  82. package/cjs/services/keyring-service/context/handlers/index.js +82 -0
  83. package/cjs/services/keyring-service/context/state.js +649 -0
  84. package/cjs/services/keyring-service/context/stores/AccountProxy.js +32 -0
  85. package/cjs/services/keyring-service/context/stores/Base.js +37 -0
  86. package/cjs/services/keyring-service/context/stores/CurrentAccount.js +28 -0
  87. package/cjs/services/keyring-service/context/stores/ModifyPair.js +19 -0
  88. package/cjs/services/keyring-service/context/stores/index.js +38 -0
  89. package/cjs/services/keyring-service/index.js +20 -164
  90. package/cjs/services/migration-service/scripts/index.js +6 -4
  91. package/cjs/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
  92. package/cjs/services/migration-service/scripts/keyring/MigratePairData.js +28 -0
  93. package/cjs/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
  94. package/cjs/services/request-service/constants.js +5 -3
  95. package/cjs/services/request-service/handler/AuthRequestHandler.js +104 -57
  96. package/cjs/services/request-service/handler/EvmRequestHandler.js +3 -4
  97. package/cjs/services/request-service/handler/SubstrateRequestHandler.js +5 -11
  98. package/cjs/services/request-service/handler/TonRequestHandler.js +175 -0
  99. package/cjs/services/request-service/index.js +24 -5
  100. package/cjs/services/swap-service/handler/asset-hub/handler.js +6 -5
  101. package/cjs/services/swap-service/handler/base-handler.js +8 -8
  102. package/cjs/services/swap-service/handler/chainflip-handler.js +5 -4
  103. package/cjs/services/swap-service/handler/hydradx-handler.js +4 -3
  104. package/cjs/services/swap-service/index.js +4 -4
  105. package/cjs/services/transaction-service/helpers/index.js +6 -1
  106. package/cjs/services/transaction-service/index.js +184 -84
  107. package/cjs/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
  108. package/cjs/stores/AccountProxyStore.js +18 -0
  109. package/cjs/stores/ModifyPairStore.js +18 -0
  110. package/cjs/stores/index.js +23 -2
  111. package/cjs/types/account/action/add/index.js +38 -0
  112. package/cjs/types/account/action/add/json.js +1 -0
  113. package/cjs/types/account/action/add/mnemonic.js +1 -0
  114. package/cjs/types/account/action/add/secret.js +1 -0
  115. package/cjs/types/account/action/derive.js +1 -0
  116. package/cjs/types/account/action/edit.js +1 -0
  117. package/cjs/types/account/action/export.js +1 -0
  118. package/cjs/types/account/action/index.js +71 -0
  119. package/cjs/types/account/action/subscribe.js +16 -0
  120. package/cjs/types/account/action/validate.js +1 -0
  121. package/cjs/types/account/error/common.js +40 -0
  122. package/cjs/types/account/error/derive.js +55 -0
  123. package/cjs/types/account/error/index.js +27 -0
  124. package/cjs/types/account/index.js +38 -0
  125. package/cjs/types/account/info/current.js +1 -0
  126. package/cjs/types/account/info/index.js +38 -0
  127. package/cjs/types/account/info/keyring.js +90 -0
  128. package/cjs/types/account/info/proxy.js +49 -0
  129. package/cjs/types/error.js +1 -0
  130. package/cjs/types/index.js +44 -0
  131. package/cjs/types/transaction/data.js +1 -0
  132. package/cjs/types/transaction/error.js +53 -0
  133. package/cjs/types/transaction/index.js +49 -0
  134. package/cjs/types/transaction/request.js +1 -0
  135. package/cjs/types/transaction/warning.js +14 -0
  136. package/cjs/types/yield/actions/join/validate.js +1 -16
  137. package/cjs/utils/account/analyze.js +166 -0
  138. package/cjs/utils/account/common.js +121 -0
  139. package/cjs/utils/account/derive/index.js +27 -0
  140. package/cjs/utils/account/derive/info/index.js +27 -0
  141. package/cjs/utils/account/derive/info/solo.js +246 -0
  142. package/cjs/utils/account/derive/info/unified.js +112 -0
  143. package/cjs/utils/account/derive/validate.js +177 -0
  144. package/cjs/utils/account/index.js +49 -0
  145. package/cjs/utils/account/transform.js +566 -0
  146. package/cjs/utils/auth.js +46 -0
  147. package/cjs/utils/getId.js +8 -1
  148. package/cjs/utils/index.js +48 -62
  149. package/constants/environment.d.ts +1 -0
  150. package/constants/environment.js +6 -0
  151. package/constants/index.d.ts +5 -1
  152. package/constants/index.js +5 -2
  153. package/constants/signing.d.ts +4 -0
  154. package/constants/signing.js +15 -0
  155. package/constants/storage.d.ts +1 -0
  156. package/constants/storage.js +2 -1
  157. package/core/consts.d.ts +1 -0
  158. package/core/consts.js +13 -0
  159. package/core/logic-validation/recipientAddress.d.ts +2 -0
  160. package/core/logic-validation/recipientAddress.js +100 -0
  161. package/core/logic-validation/request.js +10 -18
  162. package/core/logic-validation/swap.js +1 -1
  163. package/core/logic-validation/transfer.d.ts +3 -2
  164. package/core/logic-validation/transfer.js +50 -10
  165. package/core/types.d.ts +26 -0
  166. package/core/types.js +19 -0
  167. package/core/utils.d.ts +10 -0
  168. package/core/utils.js +105 -0
  169. package/koni/api/dotsama/crowdloan.js +1 -1
  170. package/koni/api/nft/index.js +14 -5
  171. package/koni/api/staking/bonding/paraChain.js +2 -2
  172. package/koni/api/staking/bonding/relayChain.js +2 -2
  173. package/koni/api/staking/index.js +4 -1
  174. package/koni/background/cron.js +7 -7
  175. package/koni/background/handlers/Extension.d.ts +26 -35
  176. package/koni/background/handlers/Extension.js +337 -1242
  177. package/koni/background/handlers/State.d.ts +12 -19
  178. package/koni/background/handlers/State.js +57 -231
  179. package/koni/background/handlers/Tabs.d.ts +2 -3
  180. package/koni/background/handlers/Tabs.js +105 -61
  181. package/koni/background/subscription.js +5 -5
  182. package/package.json +352 -53
  183. package/packageInfo.js +1 -1
  184. package/page/Accounts.js +2 -5
  185. package/page/SubWalleEvmProvider.js +1 -1
  186. package/page/index.js +2 -1
  187. package/services/balance-service/BalanceMapImpl.d.ts +6 -4
  188. package/services/balance-service/BalanceMapImpl.js +44 -18
  189. package/services/balance-service/helpers/subscribe/index.d.ts +3 -4
  190. package/services/balance-service/helpers/subscribe/index.js +29 -17
  191. package/services/balance-service/helpers/subscribe/ton/consts.d.ts +18 -0
  192. package/services/balance-service/helpers/subscribe/ton/consts.js +28 -0
  193. package/services/balance-service/helpers/subscribe/ton/ton.d.ts +3 -0
  194. package/services/balance-service/helpers/subscribe/ton/ton.js +111 -0
  195. package/services/balance-service/helpers/subscribe/ton/types.d.ts +26 -0
  196. package/services/balance-service/helpers/subscribe/ton/utils.d.ts +32 -0
  197. package/services/balance-service/helpers/subscribe/ton/utils.js +159 -0
  198. package/services/balance-service/index.js +25 -13
  199. package/services/balance-service/transfer/token.d.ts +2 -2
  200. package/services/balance-service/transfer/token.js +18 -1
  201. package/services/balance-service/transfer/ton-transfer.d.ts +25 -0
  202. package/services/balance-service/transfer/ton-transfer.js +127 -0
  203. package/services/buy-service/index.js +5 -1
  204. package/services/buy-service/types.d.ts +2 -2
  205. package/services/chain-service/constants.js +1 -1
  206. package/services/chain-service/handler/SubstrateApi.js +1 -0
  207. package/services/chain-service/handler/TonApi.d.ts +52 -0
  208. package/services/chain-service/handler/TonApi.js +204 -0
  209. package/services/chain-service/handler/TonChainHandler.d.ts +17 -0
  210. package/services/chain-service/handler/TonChainHandler.js +73 -0
  211. package/services/chain-service/index.d.ts +5 -1
  212. package/services/chain-service/index.js +32 -8
  213. package/services/chain-service/types.d.ts +24 -0
  214. package/services/chain-service/utils/index.d.ts +10 -2
  215. package/services/chain-service/utils/index.js +59 -18
  216. package/services/earning-service/constants/chains.d.ts +1 -0
  217. package/services/earning-service/constants/chains.js +1 -0
  218. package/services/earning-service/handlers/base.js +3 -2
  219. package/services/earning-service/handlers/lending/base.js +1 -2
  220. package/services/earning-service/handlers/lending/interlay.js +2 -2
  221. package/services/earning-service/handlers/liquid-staking/base.js +1 -2
  222. package/services/earning-service/handlers/liquid-staking/stella-swap.js +2 -2
  223. package/services/earning-service/handlers/native-staking/amplitude.js +2 -2
  224. package/services/earning-service/handlers/native-staking/astar.js +2 -2
  225. package/services/earning-service/handlers/native-staking/base-para.js +2 -2
  226. package/services/earning-service/handlers/native-staking/base.js +2 -2
  227. package/services/earning-service/handlers/native-staking/para-chain.js +2 -2
  228. package/services/earning-service/handlers/native-staking/relay-chain.js +2 -2
  229. package/services/earning-service/handlers/nomination-pool/index.js +2 -2
  230. package/services/earning-service/handlers/special.js +2 -2
  231. package/services/earning-service/service.js +18 -9
  232. package/services/event-service/types.d.ts +3 -1
  233. package/services/history-service/helpers/subscan-extrinsic-parser-helper.js +1 -1
  234. package/services/history-service/index.d.ts +4 -1
  235. package/services/history-service/index.js +29 -11
  236. package/services/history-service/subscan-history.js +8 -20
  237. package/services/keyring-service/context/account-context.d.ts +87 -0
  238. package/services/keyring-service/context/account-context.js +250 -0
  239. package/services/keyring-service/context/handlers/Base.d.ts +11 -0
  240. package/services/keyring-service/context/handlers/Base.js +13 -0
  241. package/services/keyring-service/context/handlers/Derive.d.ts +29 -0
  242. package/services/keyring-service/context/handlers/Derive.js +365 -0
  243. package/services/keyring-service/context/handlers/Inject.d.ts +11 -0
  244. package/services/keyring-service/context/handlers/Inject.js +69 -0
  245. package/services/keyring-service/context/handlers/Json.d.ts +18 -0
  246. package/services/keyring-service/context/handlers/Json.js +328 -0
  247. package/services/keyring-service/context/handlers/Ledger.d.ts +11 -0
  248. package/services/keyring-service/context/handlers/Ledger.js +158 -0
  249. package/services/keyring-service/context/handlers/Mnemonic.d.ts +15 -0
  250. package/services/keyring-service/context/handlers/Mnemonic.js +206 -0
  251. package/services/keyring-service/context/handlers/Modify.d.ts +16 -0
  252. package/services/keyring-service/context/handlers/Modify.js +250 -0
  253. package/services/keyring-service/context/handlers/Secret.d.ts +16 -0
  254. package/services/keyring-service/context/handlers/Secret.js +299 -0
  255. package/services/keyring-service/context/handlers/index.d.ts +7 -0
  256. package/services/keyring-service/context/handlers/index.js +10 -0
  257. package/services/keyring-service/context/state.d.ts +92 -0
  258. package/services/keyring-service/context/state.js +629 -0
  259. package/services/keyring-service/context/stores/AccountProxy.d.ts +13 -0
  260. package/services/keyring-service/context/stores/AccountProxy.js +25 -0
  261. package/services/keyring-service/context/stores/Base.d.ts +22 -0
  262. package/services/keyring-service/context/stores/Base.js +30 -0
  263. package/services/keyring-service/context/stores/CurrentAccount.d.ts +15 -0
  264. package/services/keyring-service/context/stores/CurrentAccount.js +21 -0
  265. package/services/keyring-service/context/stores/ModifyPair.d.ts +10 -0
  266. package/services/keyring-service/context/stores/ModifyPair.js +12 -0
  267. package/services/keyring-service/context/stores/index.d.ts +3 -0
  268. package/services/keyring-service/context/stores/index.js +6 -0
  269. package/services/keyring-service/index.d.ts +10 -22
  270. package/services/keyring-service/index.js +20 -161
  271. package/services/migration-service/scripts/index.js +6 -4
  272. package/services/migration-service/scripts/{MigrateLedgerAccountV2.d.ts → keyring/MigrateLedgerAccountV2.d.ts} +1 -1
  273. package/services/migration-service/scripts/{MigrateLedgerAccountV2.js → keyring/MigrateLedgerAccountV2.js} +1 -1
  274. package/services/migration-service/scripts/keyring/MigratePairData.d.ts +4 -0
  275. package/services/migration-service/scripts/keyring/MigratePairData.js +20 -0
  276. package/services/migration-service/scripts/{MigrateRemoveGenesisHash.js → keyring/MigrateRemoveGenesisHash.js} +1 -1
  277. package/services/mkt-campaign-service/types.d.ts +4 -0
  278. package/services/request-service/constants.d.ts +1 -1
  279. package/services/request-service/constants.js +2 -1
  280. package/services/request-service/handler/AuthRequestHandler.d.ts +1 -0
  281. package/services/request-service/handler/AuthRequestHandler.js +93 -45
  282. package/services/request-service/handler/EvmRequestHandler.js +3 -4
  283. package/services/request-service/handler/SubstrateRequestHandler.d.ts +2 -2
  284. package/services/request-service/handler/SubstrateRequestHandler.js +5 -11
  285. package/services/request-service/handler/TonRequestHandler.d.ts +17 -0
  286. package/services/request-service/handler/TonRequestHandler.js +168 -0
  287. package/services/request-service/index.d.ts +8 -3
  288. package/services/request-service/index.js +23 -5
  289. package/services/request-service/types.d.ts +6 -3
  290. package/services/swap-service/handler/asset-hub/handler.d.ts +1 -1
  291. package/services/swap-service/handler/asset-hub/handler.js +2 -1
  292. package/services/swap-service/handler/base-handler.js +1 -1
  293. package/services/swap-service/handler/chainflip-handler.d.ts +1 -1
  294. package/services/swap-service/handler/chainflip-handler.js +4 -3
  295. package/services/swap-service/handler/hydradx-handler.d.ts +1 -1
  296. package/services/swap-service/handler/hydradx-handler.js +2 -1
  297. package/services/swap-service/index.js +1 -1
  298. package/services/transaction-service/helpers/index.d.ts +2 -0
  299. package/services/transaction-service/helpers/index.js +4 -0
  300. package/services/transaction-service/index.d.ts +1 -0
  301. package/services/transaction-service/index.js +114 -17
  302. package/services/transaction-service/types.d.ts +4 -2
  303. package/services/wallet-connect-service/handler/PolkadotRequestHandler.js +2 -10
  304. package/stores/AccountProxyStore.d.ts +5 -0
  305. package/stores/AccountProxyStore.js +10 -0
  306. package/stores/Authorize.d.ts +1 -1
  307. package/stores/CurrentAccountStore.d.ts +1 -1
  308. package/stores/ModifyPairStore.d.ts +5 -0
  309. package/stores/ModifyPairStore.js +10 -0
  310. package/stores/index.d.ts +4 -1
  311. package/stores/index.js +5 -2
  312. package/types/account/action/add/index.d.ts +3 -0
  313. package/types/account/action/add/index.js +6 -0
  314. package/types/account/action/add/json.d.ts +29 -0
  315. package/types/account/action/add/json.js +1 -0
  316. package/types/account/action/add/mnemonic.d.ts +77 -0
  317. package/types/account/action/add/mnemonic.js +1 -0
  318. package/types/account/action/add/secret.d.ts +55 -0
  319. package/types/account/action/add/secret.js +1 -0
  320. package/types/account/action/derive.d.ts +77 -0
  321. package/types/account/action/derive.js +1 -0
  322. package/types/account/action/edit.d.ts +31 -0
  323. package/types/account/action/edit.js +1 -0
  324. package/types/account/action/export.d.ts +15 -0
  325. package/types/account/action/export.js +1 -0
  326. package/types/account/action/index.d.ts +6 -0
  327. package/types/account/action/index.js +9 -0
  328. package/types/account/action/subscribe.d.ts +22 -0
  329. package/types/account/action/subscribe.js +10 -0
  330. package/types/account/action/validate.d.ts +17 -0
  331. package/types/account/action/validate.js +1 -0
  332. package/types/account/error/common.d.ts +10 -0
  333. package/types/account/error/common.js +33 -0
  334. package/types/account/error/derive.d.ts +13 -0
  335. package/types/account/error/derive.js +48 -0
  336. package/types/account/error/index.d.ts +2 -0
  337. package/types/account/error/index.js +5 -0
  338. package/types/account/index.d.ts +3 -0
  339. package/types/account/index.js +6 -0
  340. package/types/account/info/current.d.ts +10 -0
  341. package/types/account/info/current.js +1 -0
  342. package/types/account/info/index.d.ts +3 -0
  343. package/types/account/info/index.js +6 -0
  344. package/types/account/info/keyring.d.ts +161 -0
  345. package/types/account/info/keyring.js +88 -0
  346. package/types/account/info/proxy.d.ts +73 -0
  347. package/types/account/info/proxy.js +46 -0
  348. package/types/balance/index.d.ts +4 -1
  349. package/types/buy.d.ts +3 -1
  350. package/types/error.d.ts +8 -0
  351. package/types/error.js +1 -0
  352. package/types/index.d.ts +4 -0
  353. package/types/index.js +5 -1
  354. package/types/transaction/data.d.ts +17 -0
  355. package/types/transaction/data.js +1 -0
  356. package/types/transaction/error.d.ts +39 -0
  357. package/types/transaction/error.js +44 -0
  358. package/types/transaction/index.d.ts +4 -0
  359. package/types/transaction/index.js +7 -0
  360. package/types/transaction/request.d.ts +24 -0
  361. package/types/transaction/request.js +1 -0
  362. package/types/transaction/warning.d.ts +5 -0
  363. package/types/transaction/warning.js +8 -0
  364. package/types/yield/actions/join/submit.d.ts +2 -2
  365. package/types/yield/actions/join/validate.d.ts +1 -6
  366. package/types/yield/actions/join/validate.js +1 -10
  367. package/types/yield/actions/others.d.ts +1 -1
  368. package/utils/account/analyze.d.ts +4 -0
  369. package/utils/account/analyze.js +159 -0
  370. package/utils/account/common.d.ts +16 -0
  371. package/utils/account/common.js +104 -0
  372. package/utils/account/derive/index.d.ts +2 -0
  373. package/utils/account/derive/index.js +5 -0
  374. package/utils/account/derive/info/index.d.ts +2 -0
  375. package/utils/account/derive/info/index.js +5 -0
  376. package/utils/account/derive/info/solo.d.ts +11 -0
  377. package/utils/account/derive/info/solo.js +230 -0
  378. package/utils/account/derive/info/unified.d.ts +7 -0
  379. package/utils/account/derive/info/unified.js +102 -0
  380. package/utils/account/derive/validate.d.ts +8 -0
  381. package/utils/account/derive/validate.js +165 -0
  382. package/utils/account/index.d.ts +4 -0
  383. package/utils/account/index.js +7 -0
  384. package/utils/account/transform.d.ts +41 -0
  385. package/utils/account/transform.js +533 -0
  386. package/utils/auth.d.ts +2 -0
  387. package/utils/auth.js +39 -0
  388. package/utils/canDerive.d.ts +1 -1
  389. package/utils/eth/mergeTransactionAndSignature.d.ts +1 -1
  390. package/utils/getId.d.ts +1 -0
  391. package/utils/getId.js +3 -1
  392. package/utils/index.d.ts +12 -5
  393. package/utils/index.js +28 -47
  394. package/cjs/signers/substrates/KeyringSigner.js +0 -35
  395. package/cjs/signers/substrates/LedgerSigner.js +0 -44
  396. package/cjs/signers/substrates/QrSigner.js +0 -63
  397. package/cjs/signers/types.js +0 -15
  398. package/cjs/signers/web3/QrSigner.js +0 -67
  399. package/cjs/utils/account.js +0 -34
  400. package/signers/substrates/KeyringSigner.d.ts +0 -13
  401. package/signers/substrates/KeyringSigner.js +0 -27
  402. package/signers/substrates/LedgerSigner.d.ts +0 -13
  403. package/signers/substrates/LedgerSigner.js +0 -37
  404. package/signers/substrates/QrSigner.d.ts +0 -20
  405. package/signers/substrates/QrSigner.js +0 -55
  406. package/signers/types.d.ts +0 -34
  407. package/signers/types.js +0 -9
  408. package/signers/web3/QrSigner.d.ts +0 -18
  409. package/signers/web3/QrSigner.js +0 -59
  410. package/types/transaction.d.ts +0 -3
  411. package/utils/account.d.ts +0 -5
  412. package/utils/account.js +0 -24
  413. /package/cjs/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
  414. /package/cjs/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
  415. /package/{types/transaction.js → services/balance-service/helpers/subscribe/ton/types.js} +0 -0
  416. /package/services/migration-service/scripts/{MigrateLedgerAccount.d.ts → keyring/MigrateLedgerAccount.d.ts} +0 -0
  417. /package/services/migration-service/scripts/{MigrateLedgerAccount.js → keyring/MigrateLedgerAccount.js} +0 -0
  418. /package/services/migration-service/scripts/{MigrateRemoveGenesisHash.d.ts → keyring/MigrateRemoveGenesisHash.d.ts} +0 -0
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.validateRecipientAddress = validateRecipientAddress;
7
+ var _types = require("@subwallet/extension-base/core/types");
8
+ var _utils = require("@subwallet/extension-base/core/utils");
9
+ var _types2 = require("@subwallet/extension-base/types");
10
+ var _utils2 = require("@subwallet/extension-base/utils");
11
+ var _keyring = require("@subwallet/keyring");
12
+ // Copyright 2019-2022 @subwallet/extension-base
13
+ // SPDX-License-Identifier: Apache-2.0
14
+
15
+ function getConditions(validateRecipientParams) {
16
+ const {
17
+ account,
18
+ actionType,
19
+ autoFormatValue,
20
+ destChainInfo,
21
+ srcChain,
22
+ toAddress
23
+ } = validateRecipientParams;
24
+ const conditions = [];
25
+ const isSendAction = [_types.ActionType.SEND_FUND, _types.ActionType.SEND_NFT].includes(actionType);
26
+ conditions.push(_types.ValidationCondition.IS_NOT_NULL);
27
+ conditions.push(_types.ValidationCondition.IS_ADDRESS);
28
+ conditions.push(_types.ValidationCondition.IS_VALID_ADDRESS_FOR_ECOSYSTEM);
29
+ if ((0, _keyring.isSubstrateAddress)(toAddress) && !autoFormatValue) {
30
+ // todo: need isSubstrateAddress util function to check exactly
31
+ conditions.push(_types.ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT);
32
+ }
33
+ if ((0, _keyring.isTonAddress)(toAddress)) {
34
+ conditions.push(_types.ValidationCondition.IS_VALID_TON_ADDRESS_FORMAT);
35
+ }
36
+ if (srcChain === destChainInfo.slug && isSendAction && !destChainInfo.tonInfo) {
37
+ conditions.push(_types.ValidationCondition.IS_NOT_DUPLICATE_ADDRESS);
38
+ }
39
+ if (account !== null && account !== void 0 && account.isHardware) {
40
+ conditions.push(_types.ValidationCondition.IS_SUPPORT_LEDGER_ACCOUNT);
41
+ if (account.signMode === _types2.AccountSignMode.LEGACY_LEDGER) {
42
+ conditions.push(_types.ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT);
43
+ }
44
+ }
45
+ return conditions;
46
+ }
47
+ function getValidationFunctions(conditions) {
48
+ const validationFunctions = [];
49
+ for (const condition of conditions) {
50
+ switch (condition) {
51
+ case _types.ValidationCondition.IS_NOT_NULL:
52
+ {
53
+ validationFunctions.push(_utils._isNotNull);
54
+ break;
55
+ }
56
+ case _types.ValidationCondition.IS_ADDRESS:
57
+ {
58
+ validationFunctions.push(_utils._isAddress);
59
+ break;
60
+ }
61
+ case _types.ValidationCondition.IS_VALID_ADDRESS_FOR_ECOSYSTEM:
62
+ {
63
+ validationFunctions.push(_utils._isValidAddressForEcosystem);
64
+ break;
65
+ }
66
+ case _types.ValidationCondition.IS_VALID_SUBSTRATE_ADDRESS_FORMAT:
67
+ {
68
+ validationFunctions.push(_utils._isValidSubstrateAddressFormat);
69
+ break;
70
+ }
71
+ case _types.ValidationCondition.IS_VALID_TON_ADDRESS_FORMAT:
72
+ {
73
+ validationFunctions.push(_utils._isValidTonAddressFormat);
74
+ break;
75
+ }
76
+ case _types.ValidationCondition.IS_NOT_DUPLICATE_ADDRESS:
77
+ {
78
+ validationFunctions.push(_utils._isNotDuplicateAddress);
79
+ break;
80
+ }
81
+ case _types.ValidationCondition.IS_SUPPORT_LEDGER_ACCOUNT:
82
+ {
83
+ validationFunctions.push(_utils._isSupportLedgerAccount);
84
+ break;
85
+ }
86
+ }
87
+ }
88
+ return validationFunctions;
89
+ }
90
+ function runValidationFunctions(validateRecipientParams, validationFunctions) {
91
+ const validationResults = [];
92
+ for (const validationFunction of validationFunctions) {
93
+ validationResults.push(validationFunction(validateRecipientParams));
94
+ }
95
+ for (const result of validationResults) {
96
+ if (result) {
97
+ return Promise.reject((0, _utils2.detectTranslate)(result));
98
+ }
99
+ }
100
+ return Promise.resolve();
101
+ }
102
+ function validateRecipientAddress(validateRecipientParams) {
103
+ const conditions = getConditions(validateRecipientParams);
104
+ const validationFunctions = getValidationFunctions(conditions);
105
+ return runValidationFunctions(validateRecipientParams, validationFunctions);
106
+ }
@@ -21,8 +21,10 @@ var _EvmProviderError = require("@subwallet/extension-base/background/errors/Evm
21
21
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
22
22
  var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
23
23
  var _utils = require("@subwallet/extension-base/services/fee-service/utils");
24
+ var _types = require("@subwallet/extension-base/types");
24
25
  var _utils2 = require("@subwallet/extension-base/utils");
25
26
  var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
27
+ var _keyring = require("@subwallet/keyring");
26
28
  var _uiKeyring = require("@subwallet/ui-keyring");
27
29
  var _utils3 = require("@walletconnect/utils");
28
30
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
@@ -256,8 +258,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
256
258
  const transactionParams = payload.payloadAfterValidated;
257
259
  const {
258
260
  address: fromAddress,
259
- networkKey,
260
- pair
261
+ networkKey
261
262
  } = payload;
262
263
  const evmApi = koni.getEvmApi(networkKey || '');
263
264
  const web3 = evmApi === null || evmApi === void 0 ? void 0 : evmApi.api;
@@ -273,7 +274,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
273
274
  payload.errorPosition = 'ui';
274
275
  payload.confirmationType = 'evmWatchTransactionRequest';
275
276
  const [message, name] = convertErrorMessage(message_);
276
- const error = new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS, message, undefined, name);
277
+ const error = new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, message, undefined, name);
277
278
  console.error(error);
278
279
  errors.push(error);
279
280
  };
@@ -341,7 +342,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
341
342
  }
342
343
  }
343
344
  if (!transaction.gas) {
344
- handleError(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR).message);
345
+ handleError(new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR).message);
345
346
  } else {
346
347
  if (transactionParams.maxPriorityFeePerGas && transactionParams.maxFeePerGas) {
347
348
  const maxFee = new _bignumber.default(transactionParams.maxFeePerGas);
@@ -376,11 +377,6 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
376
377
  handleError(e.message);
377
378
  }
378
379
  }
379
- const pair_ = pair || _uiKeyring.keyring.getPair(fromAddress);
380
- const account = {
381
- address: fromAddress,
382
- ...(pair_ === null || pair_ === void 0 ? void 0 : pair_.meta)
383
- };
384
380
  try {
385
381
  transaction.nonce = await web3.eth.getTransactionCount(fromAddress);
386
382
  } catch (e) {
@@ -403,7 +399,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
403
399
  errors,
404
400
  payloadAfterValidated: {
405
401
  ...transaction,
406
- account,
402
+ address: fromAddress,
407
403
  estimateGas,
408
404
  hashPayload,
409
405
  isToContract,
@@ -438,10 +434,6 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
438
434
  handleError('Not found address or payload to sign');
439
435
  }
440
436
  const pair = pair_ || _uiKeyring.keyring.getPair(address);
441
- const account = {
442
- address: pair.address,
443
- ...pair.meta
444
- };
445
437
  if (method) {
446
438
  if (['eth_sign', 'personal_sign', 'eth_signTypedData', 'eth_signTypedData_v1', 'eth_signTypedData_v3', 'eth_signTypedData_v4'].indexOf(method) < 0) {
447
439
  handleError('Unsupported action');
@@ -457,13 +449,13 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
457
449
  hashPayload = payload;
458
450
  break;
459
451
  case 'eth_sign':
460
- if (!account.isExternal) {
452
+ if (!pair.meta.isExternal) {
461
453
  canSign = true;
462
454
  }
463
455
  break;
464
456
  case 'eth_signTypedData':
465
457
  case 'eth_signTypedData_v1':
466
- if (!account.isExternal) {
458
+ if (!pair.meta.isExternal) {
467
459
  canSign = true;
468
460
  }
469
461
  payload = validateTypedSignMessageDataV1({
@@ -473,7 +465,7 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
473
465
  break;
474
466
  case 'eth_signTypedData_v3':
475
467
  case 'eth_signTypedData_v4':
476
- if (!account.isExternal) {
468
+ if (!pair.meta.isExternal) {
477
469
  canSign = true;
478
470
  }
479
471
  payload = validateTypedSignMessageDataV3V4({
@@ -492,7 +484,7 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
492
484
  handleError('Unsupported method');
493
485
  }
494
486
  const payloadAfterValidated = {
495
- account: account,
487
+ address,
496
488
  type: method || '',
497
489
  payload: payload,
498
490
  hashPayload: hashPayload,
@@ -524,7 +516,7 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
524
516
  if ((0, _utilCrypto.isEthereumAddress)(address)) {
525
517
  var _requestSession$names;
526
518
  sessionAccounts = ((_requestSession$names = requestSession.namespaces.eip155.accounts) === null || _requestSession$names === void 0 ? void 0 : _requestSession$names.map(account => account.split(':')[2])) || sessionAccounts;
527
- } else {
519
+ } else if ((0, _keyring.isSubstrateAddress)(address)) {
528
520
  var _requestSession$names2;
529
521
  sessionAccounts = ((_requestSession$names2 = requestSession.namespaces.polkadot.accounts) === null || _requestSession$names2 === void 0 ? void 0 : _requestSession$names2.map(account => account.split(':')[2])) || sessionAccounts;
530
522
  }
@@ -12,8 +12,8 @@ exports._validateBalanceToSwapOnAssetHub = _validateBalanceToSwapOnAssetHub;
12
12
  exports._validateSwapRecipient = _validateSwapRecipient;
13
13
  var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
14
14
  var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
15
- var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
16
15
  var _utils = require("@subwallet/extension-base/services/chain-service/utils");
16
+ var _types = require("@subwallet/extension-base/types");
17
17
  var _swap = require("@subwallet/extension-base/types/swap");
18
18
  var _utils2 = require("@subwallet/extension-base/utils");
19
19
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
@@ -28,12 +28,12 @@ function _validateBalanceToSwapOnAssetHub(fromToken, feeToken, feeTokenChainInfo
28
28
  return new _TransactionError.TransactionError(_swap.SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
29
29
  }
30
30
  if (new _bignumber.default(feeTokenBalance).lte(feeAmount)) {
31
- return new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
31
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
32
32
  }
33
33
  if (!(0, _utils._isNativeToken)(fromToken) && fromToken.slug === feeToken.slug) {
34
34
  // todo: need review and refactor
35
35
  if (bnFromTokenBalance.lte(new _bignumber.default(feeAmount).plus(swapAmount))) {
36
- return new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
36
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
37
37
  }
38
38
  }
39
39
  if (isXcmOk) {
@@ -56,12 +56,12 @@ function _validateBalanceToSwapOnAssetHub(fromToken, feeToken, feeTokenChainInfo
56
56
  function _validateBalanceToSwap(fromToken, feeToken, feeTokenChainInfo, feeAmount, fromTokenBalance, feeTokenBalance, swapAmount, isXcmOk, minSwap) {
57
57
  const bnFromTokenBalance = new _bignumber.default(fromTokenBalance);
58
58
  if (new _bignumber.default(feeTokenBalance).lte(feeAmount)) {
59
- return new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
59
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
60
60
  }
61
61
  if (fromToken.slug === feeToken.slug) {
62
62
  // todo: need review and refactor
63
63
  if (bnFromTokenBalance.lte(new _bignumber.default(feeAmount).plus(swapAmount))) {
64
- return new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
64
+ return new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
65
65
  }
66
66
  }
67
67
  if (isXcmOk) {
@@ -11,6 +11,7 @@ exports.checkSigningAccountForTransaction = checkSigningAccountForTransaction;
11
11
  exports.checkSupportForAction = checkSupportForAction;
12
12
  exports.checkSupportForFeature = checkSupportForFeature;
13
13
  exports.checkSupportForTransaction = checkSupportForTransaction;
14
+ exports.checkTonAddressBounceableAndAccountNotActive = checkTonAddressBounceableAndAccountNotActive;
14
15
  exports.estimateFeeForTransaction = estimateFeeForTransaction;
15
16
  exports.validateTransferRequest = validateTransferRequest;
16
17
  exports.validateXcmTransferRequest = validateXcmTransferRequest;
@@ -19,11 +20,14 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
19
20
  var _TransactionWarning = require("@subwallet/extension-base/background/warnings/TransactionWarning");
20
21
  var _constants = require("@subwallet/extension-base/constants");
21
22
  var _systemPallet = require("@subwallet/extension-base/core/substrate/system-pallet");
23
+ var _utils = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
22
24
  var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
23
- var _utils = require("@subwallet/extension-base/services/chain-service/utils");
24
- var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
25
+ var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
26
+ var _utils3 = require("@subwallet/extension-base/services/fee-service/utils");
25
27
  var _helpers = require("@subwallet/extension-base/services/transaction-service/helpers");
26
- var _utils3 = require("@subwallet/extension-base/utils");
28
+ var _types = require("@subwallet/extension-base/types");
29
+ var _utils4 = require("@subwallet/extension-base/utils");
30
+ var _keyring = require("@subwallet/keyring");
27
31
  var _uiKeyring = require("@subwallet/ui-keyring");
28
32
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
29
33
  var _i18next = require("i18next");
@@ -38,30 +42,33 @@ function validateTransferRequest(tokenInfo, from, to, value, transferAll) {
38
42
  let transferValue;
39
43
  if (!transferAll) {
40
44
  if (value === undefined) {
41
- errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Transfer amount is required')));
45
+ errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Transfer amount is required')));
42
46
  }
43
47
  if (value) {
44
48
  transferValue = new _bignumber.default(value);
45
49
  }
46
50
  }
47
51
  if (!tokenInfo) {
48
- errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found token from registry')));
52
+ errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found token from registry')));
49
53
  }
50
- if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils._isTokenEvmSmartContract)(tokenInfo) && (0, _utils._getContractAddressOfToken)(tokenInfo).length === 0) {
51
- errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found ERC20 address for this token')));
54
+ if ((0, _utilCrypto.isEthereumAddress)(from) && (0, _utilCrypto.isEthereumAddress)(to) && (0, _utils2._isTokenEvmSmartContract)(tokenInfo) && (0, _utils2._getContractAddressOfToken)(tokenInfo).length === 0) {
55
+ errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found ERC20 address for this token')));
56
+ }
57
+ if ((0, _keyring.isTonAddress)(from) && (0, _keyring.isTonAddress)(to) && (0, _utils2._isTokenTonSmartContract)(tokenInfo) && (0, _utils2._getContractAddressOfToken)(tokenInfo).length === 0) {
58
+ errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found TEP74 address for this token')));
52
59
  }
53
60
  return [errors, keypair, transferValue];
54
61
  }
55
62
  function additionalValidateTransfer(tokenInfo, nativeTokenInfo, extrinsicType, receiverTransferTokenFreeBalance, transferAmount, senderTransferTokenTransferable, receiverNativeTransferable) {
56
- const minAmount = (0, _utils._getTokenMinAmount)(tokenInfo);
57
- const nativeMinAmount = (0, _utils._getTokenMinAmount)(nativeTokenInfo);
63
+ const minAmount = (0, _utils2._getTokenMinAmount)(tokenInfo);
64
+ const nativeMinAmount = (0, _utils2._getTokenMinAmount)(nativeTokenInfo);
58
65
  const warnings = [];
59
66
  const errors = [];
60
67
 
61
68
  // Check ed of not native token for sender after sending
62
69
  if (extrinsicType === _KoniTypes.ExtrinsicType.TRANSFER_TOKEN && senderTransferTokenTransferable) {
63
70
  if (new _bignumber.default(senderTransferTokenTransferable).minus(transferAmount).lt(minAmount)) {
64
- const warning = new _TransactionWarning.TransactionWarning(_KoniTypes.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
71
+ const warning = new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
65
72
  warnings.push(warning);
66
73
  }
67
74
  }
@@ -69,7 +76,7 @@ function additionalValidateTransfer(tokenInfo, nativeTokenInfo, extrinsicType, r
69
76
  // Check ed for receiver before sending
70
77
  if (extrinsicType === _KoniTypes.ExtrinsicType.TRANSFER_TOKEN && receiverNativeTransferable) {
71
78
  if (new _bignumber.default(receiverNativeTransferable).lt(nativeMinAmount)) {
72
- const error = new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('The recipient account has {{amount}} {{nativeSymbol}} which can lead to your {{localSymbol}} being lost. Change recipient account and try again', {
79
+ const error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('The recipient account has {{amount}} {{nativeSymbol}} which can lead to your {{localSymbol}} being lost. Change recipient account and try again', {
73
80
  replace: {
74
81
  amount: receiverNativeTransferable,
75
82
  nativeSymbol: nativeTokenInfo.symbol,
@@ -83,10 +90,10 @@ function additionalValidateTransfer(tokenInfo, nativeTokenInfo, extrinsicType, r
83
90
  // Check ed for receiver after sending
84
91
  if (new _bignumber.default(receiverTransferTokenFreeBalance).plus(transferAmount).lt(minAmount)) {
85
92
  const atLeast = new _bignumber.default(minAmount).minus(receiverTransferTokenFreeBalance).plus((tokenInfo.decimals || 0) === 0 ? 0 : 1);
86
- const atLeastStr = (0, _utils3.formatNumber)(atLeast, tokenInfo.decimals || 0, _utils3.balanceFormatter, {
93
+ const atLeastStr = (0, _utils4.formatNumber)(atLeast, tokenInfo.decimals || 0, _utils4.balanceFormatter, {
87
94
  maxNumberFormat: tokenInfo.decimals || 6
88
95
  });
89
- const error = new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
96
+ const error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
90
97
  replace: {
91
98
  amount: atLeastStr,
92
99
  symbol: tokenInfo.symbol
@@ -103,23 +110,23 @@ function validateXcmTransferRequest(destTokenInfo, sender, sendingValue) {
103
110
  const keypair = _uiKeyring.keyring.getPair(sender);
104
111
  const transferValue = new _bignumber.default(sendingValue);
105
112
  if (!destTokenInfo) {
106
- errors.push(new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.INVALID_TOKEN, (0, _i18next.t)('Not found token from registry')));
113
+ errors.push(new _TransactionError.TransactionError(_types.TransferTxErrorType.INVALID_TOKEN, (0, _i18next.t)('Not found token from registry')));
107
114
  }
108
115
  return [errors, keypair, transferValue];
109
116
  }
110
117
  function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, sendingAmount, senderTransferable, receiverNativeBalance, destChainInfo) {
111
118
  let isSnowBridge = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
112
- const destMinAmount = (0, _utils._getTokenMinAmount)(destinationTokenInfo);
119
+ const destMinAmount = (0, _utils2._getTokenMinAmount)(destinationTokenInfo);
113
120
  const minSendingRequired = new _bignumber.default(destMinAmount).multipliedBy(_constants.XCM_MIN_AMOUNT_RATIO);
114
121
  let error;
115
122
  let warning;
116
123
 
117
124
  // Check sending token ED for receiver
118
125
  if (new _bignumber.default(sendingAmount).lt(minSendingRequired)) {
119
- const atLeastStr = (0, _utils3.formatNumber)(minSendingRequired, destinationTokenInfo.decimals || 0, _utils3.balanceFormatter, {
126
+ const atLeastStr = (0, _utils4.formatNumber)(minSendingRequired, destinationTokenInfo.decimals || 0, _utils4.balanceFormatter, {
120
127
  maxNumberFormat: destinationTokenInfo.decimals || 6
121
128
  });
122
- error = new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
129
+ error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)('You must transfer at least {{amount}} {{symbol}} to keep the destination account alive', {
123
130
  replace: {
124
131
  amount: atLeastStr,
125
132
  symbol: originTokenInfo.symbol
@@ -128,16 +135,16 @@ function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, se
128
135
  }
129
136
 
130
137
  // check native token ED on dest chain for receiver
131
- const bnKeepAliveBalance = (0, _utils._isNativeToken)(destinationTokenInfo) ? new _bignumber.default(receiverNativeBalance).plus(sendingAmount) : new _bignumber.default(receiverNativeBalance);
132
- if (isSnowBridge && bnKeepAliveBalance.lt((0, _utils._getChainExistentialDeposit)(destChainInfo))) {
138
+ const bnKeepAliveBalance = (0, _utils2._isNativeToken)(destinationTokenInfo) ? new _bignumber.default(receiverNativeBalance).plus(sendingAmount) : new _bignumber.default(receiverNativeBalance);
139
+ if (isSnowBridge && bnKeepAliveBalance.lt((0, _utils2._getChainExistentialDeposit)(destChainInfo))) {
133
140
  const {
134
141
  decimals,
135
142
  symbol
136
- } = (0, _utils._getChainNativeTokenBasicInfo)(destChainInfo);
137
- const atLeastStr = (0, _utils3.formatNumber)((0, _utils._getChainExistentialDeposit)(destChainInfo), decimals || 0, _utils3.balanceFormatter, {
143
+ } = (0, _utils2._getChainNativeTokenBasicInfo)(destChainInfo);
144
+ const atLeastStr = (0, _utils4.formatNumber)((0, _utils2._getChainExistentialDeposit)(destChainInfo), decimals || 0, _utils4.balanceFormatter, {
138
145
  maxNumberFormat: 6
139
146
  });
140
- error = new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)(' Insufficient {{symbol}} on {{chain}} to cover min balance ({{amount}} {{symbol}})', {
147
+ error = new _TransactionError.TransactionError(_types.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)(' Insufficient {{symbol}} on {{chain}} to cover min balance ({{amount}} {{symbol}})', {
141
148
  replace: {
142
149
  amount: atLeastStr,
143
150
  symbol,
@@ -147,9 +154,9 @@ function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, se
147
154
  }
148
155
 
149
156
  // Check ed for sender
150
- if (!(0, _utils._isNativeToken)(originTokenInfo)) {
151
- if (new _bignumber.default(senderTransferable).minus(sendingAmount).lt((0, _utils._getTokenMinAmount)(originTokenInfo))) {
152
- warning = new _TransactionWarning.TransactionWarning(_KoniTypes.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
157
+ if (!(0, _utils2._isNativeToken)(originTokenInfo)) {
158
+ if (new _bignumber.default(senderTransferable).minus(sendingAmount).lt((0, _utils2._getTokenMinAmount)(originTokenInfo))) {
159
+ warning = new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
153
160
  }
154
161
  }
155
162
  return [warning, error];
@@ -159,7 +166,7 @@ function checkSupportForFeature(validationResponse, blockedFeaturesList, chainIn
159
166
  const chain = validationResponse.chain;
160
167
  const currentFeature = `${extrinsicType}___${chain}`;
161
168
  if (blockedFeaturesList.includes(currentFeature)) {
162
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)(`Feature under maintenance on ${chainInfo.name} network. Try again later`)));
169
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)(`Feature under maintenance on ${chainInfo.name} network. Try again later`)));
163
170
  }
164
171
  }
165
172
  function checkSupportForAction(validationResponse, blockedActionsMap) {
@@ -315,7 +322,7 @@ function checkSupportForAction(validationResponse, blockedActionsMap) {
315
322
  }
316
323
  const blockedActionsList = Object.values(blockedActionsMap).flat();
317
324
  if (blockedActionsList.includes(currentAction)) {
318
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('Feature under maintenance. Try again later')));
325
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('Feature under maintenance. Try again later')));
319
326
  }
320
327
  }
321
328
 
@@ -326,9 +333,9 @@ function checkSupportForTransaction(validationResponse, transaction) {
326
333
  } = validationResponse;
327
334
  if (!transaction) {
328
335
  if (extrinsicType === _KoniTypes.ExtrinsicType.SEND_NFT) {
329
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('This feature is not yet available for this NFT')));
336
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED, (0, _i18next.t)('This feature is not yet available for this NFT')));
330
337
  } else {
331
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.UNSUPPORTED));
338
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED));
332
339
  }
333
340
  }
334
341
  }
@@ -342,16 +349,18 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
342
349
  const {
343
350
  decimals,
344
351
  symbol
345
- } = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
352
+ } = (0, _utils2._getChainNativeTokenBasicInfo)(chainInfo);
346
353
  estimateFee.decimals = decimals;
347
354
  estimateFee.symbol = symbol;
348
355
  if (transaction) {
349
356
  try {
350
357
  if ((0, _helpers.isSubstrateTransaction)(transaction)) {
351
358
  estimateFee.value = (await transaction.paymentInfo(validationResponse.address)).partialFee.toString();
359
+ } else if ((0, _helpers.isTonTransaction)(transaction)) {
360
+ estimateFee.value = transaction.estimateFee; // todo: might need to update logic estimate fee inside for future actions excluding normal transfer Ton and Jetton
352
361
  } else {
353
362
  const gasLimit = await evmApi.api.eth.estimateGas(transaction);
354
- const priority = await (0, _utils2.calculateGasFeeParams)(evmApi, chainInfo.slug);
363
+ const priority = await (0, _utils3.calculateGasFeeParams)(evmApi, chainInfo.slug);
355
364
  if (priority.baseGasFee) {
356
365
  const maxFee = priority.maxFeePerGas; // TODO: Need review
357
366
 
@@ -364,20 +373,36 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
364
373
  } catch (e) {
365
374
  const error = e;
366
375
  if (error.message.includes('gas required exceeds allowance') && error.message.includes('insufficient funds')) {
367
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE));
376
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE));
368
377
  }
369
378
  }
370
379
  }
371
380
  return estimateFee;
372
381
  }
373
- function checkSigningAccountForTransaction(validationResponse) {
374
- const pair = _uiKeyring.keyring.getPair(validationResponse.address);
382
+ function checkSigningAccountForTransaction(validationResponse, chainInfoMap) {
383
+ const {
384
+ address,
385
+ chain,
386
+ chainType,
387
+ extrinsicType
388
+ } = validationResponse;
389
+ const pair = _uiKeyring.keyring.getPair(address);
375
390
  if (!pair) {
376
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR, (0, _i18next.t)('Unable to find account')));
391
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR, (0, _i18next.t)('Unable to find account')));
377
392
  } else {
378
- var _pair$meta;
379
- if ((_pair$meta = pair.meta) !== null && _pair$meta !== void 0 && _pair$meta.isReadOnly) {
380
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.INTERNAL_ERROR, (0, _i18next.t)('This account is watch-only')));
393
+ const accountJson = (0, _utils4.pairToAccount)(pair, chainInfoMap);
394
+ if (!accountJson.transactionActions.includes(extrinsicType)) {
395
+ // check if the account can sign the transaction type
396
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('This feature is not available with this account')));
397
+ } else if (accountJson.specialChain && accountJson.specialChain !== chain) {
398
+ // check if the account can only be used on a specific chain (for ledger legacy)
399
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('This feature is not available with this account')));
400
+ } else {
401
+ const compatibleMap = [_types.AccountSignMode.LEGACY_LEDGER, _types.AccountSignMode.GENERIC_LEDGER].includes(accountJson.signMode) ? _constants.LEDGER_SIGNING_COMPATIBLE_MAP : _constants.SIGNING_COMPATIBLE_MAP;
402
+ if (!compatibleMap[chainType].includes(accountJson.chainType)) {
403
+ // check if the account chain type is compatible with the transaction chain type
404
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('This feature is not available with this account')));
405
+ }
381
406
  }
382
407
  }
383
408
  }
@@ -399,17 +424,33 @@ function checkBalanceWithTransactionFee(validationResponse, transactionInput, na
399
424
  const bnNativeTokenAvailable = new _bignumber.default(nativeTokenAvailable.value);
400
425
  const bnNativeTokenTransferAmount = new _bignumber.default(validationResponse.transferNativeAmount || '0');
401
426
  if (!bnNativeTokenAvailable.gt(0)) {
402
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE));
427
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE));
403
428
  }
404
429
  const isChainNotSupportTransferAll = [..._constants2._TRANSFER_CHAIN_GROUP.acala, ..._constants2._TRANSFER_CHAIN_GROUP.genshiro, ..._constants2._TRANSFER_CHAIN_GROUP.bitcountry, ..._constants2._TRANSFER_CHAIN_GROUP.statemine].includes(nativeTokenInfo.originChain);
405
430
  if (bnNativeTokenTransferAmount.plus(bnFee).gt(bnNativeTokenAvailable) && (!isTransferAll || isChainNotSupportTransferAll)) {
406
- validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_BALANCE)); // todo: should be generalized and reused in all features
431
+ validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE)); // todo: should be generalized and reused in all features
407
432
  }
408
433
 
409
434
  // todo: only system.pallet has metadata, we should add for other pallets and mechanisms as well
410
435
  const isNeedCheckRemainingBalance = !isTransferAll && extrinsicType === _KoniTypes.ExtrinsicType.TRANSFER_BALANCE && nativeTokenAvailable.metadata && (0, _systemPallet._canAccountBeReaped)(nativeTokenAvailable.metadata);
411
- const isRemainingBalanceValid = bnNativeTokenAvailable.minus(bnNativeTokenTransferAmount).minus(bnFee).lt((0, _utils._getTokenMinAmount)(nativeTokenInfo));
436
+ const isRemainingBalanceValid = bnNativeTokenAvailable.minus(bnNativeTokenTransferAmount).minus(bnFee).lt((0, _utils2._getTokenMinAmount)(nativeTokenInfo));
412
437
  if (isNeedCheckRemainingBalance && isRemainingBalanceValid) {
413
- edAsWarning ? validationResponse.warnings.push(new _TransactionWarning.TransactionWarning(_KoniTypes.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT)) : validationResponse.errors.push(new _TransactionError.TransactionError(_KoniTypes.BasicTxErrorType.NOT_ENOUGH_EXISTENTIAL_DEPOSIT));
438
+ edAsWarning ? validationResponse.warnings.push(new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT)) : validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_EXISTENTIAL_DEPOSIT));
414
439
  }
440
+ }
441
+ async function checkTonAddressBounceableAndAccountNotActive(tonApi, validationResponse) {
442
+ const {
443
+ to
444
+ } = validationResponse.data;
445
+ const isActive = await isAccountActive(tonApi, to);
446
+ if (isTonAddressBounceable(to) && !isActive) {
447
+ validationResponse.warnings.push(new _TransactionWarning.TransactionWarning(_types.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS));
448
+ }
449
+ }
450
+ function isTonAddressBounceable(address) {
451
+ return (0, _utils.isBounceableAddress)(address);
452
+ }
453
+ async function isAccountActive(tonApi, address) {
454
+ const state = await tonApi.getAccountState(address);
455
+ return state === 'active';
415
456
  }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ValidationCondition = exports.ActionType = void 0;
7
+ // Copyright 2019-2022 @subwallet/extension-base
8
+ // SPDX-License-Identifier: Apache-2.0
9
+ let ValidationCondition;
10
+ exports.ValidationCondition = ValidationCondition;
11
+ (function (ValidationCondition) {
12
+ ValidationCondition["IS_NOT_NULL"] = "IS_NOT_NULL";
13
+ ValidationCondition["IS_ADDRESS"] = "IS_ADDRESS";
14
+ ValidationCondition["IS_VALID_ADDRESS_FOR_ECOSYSTEM"] = "IS_VALID_ADDRESS_FOR_ECOSYSTEM";
15
+ ValidationCondition["IS_VALID_SUBSTRATE_ADDRESS_FORMAT"] = "IS_VALID_SUBSTRATE_ADDRESS_FORMAT";
16
+ ValidationCondition["IS_VALID_TON_ADDRESS_FORMAT"] = "IS_VALID_TON_ADDRESS_FORMAT";
17
+ ValidationCondition["IS_NOT_DUPLICATE_ADDRESS"] = "IS_NOT_DUPLICATE_ADDRESS";
18
+ ValidationCondition["IS_SUPPORT_LEDGER_ACCOUNT"] = "IS_SUPPORT_LEDGER_ACCOUNT";
19
+ })(ValidationCondition || (exports.ValidationCondition = ValidationCondition = {}));
20
+ let ActionType;
21
+ exports.ActionType = ActionType;
22
+ (function (ActionType) {
23
+ ActionType["SEND_FUND"] = "SEND_FUND";
24
+ ActionType["SEND_NFT"] = "SEND_NFT";
25
+ ActionType["SWAP"] = "SWAP";
26
+ })(ActionType || (exports.ActionType = ActionType = {}));