@layerswap/widget 0.1.4 → 0.1.14

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 (267) hide show
  1. package/README.md +78 -3
  2. package/dist/Models/Theme.d.ts +7 -6
  3. package/dist/Models/Theme.js +7 -7
  4. package/dist/Models/WalletProvider.d.ts +0 -4
  5. package/dist/Models/WalletProvider.js +2 -0
  6. package/dist/components/Buttons/copyButton.js +4 -3
  7. package/dist/components/ColorSchema.js +79 -45
  8. package/dist/components/Common/AddressIcon.js +1 -0
  9. package/dist/components/Common/AverageCompletionTime.js +1 -1
  10. package/dist/components/Common/CountDownTimer.js +2 -2
  11. package/dist/components/Common/FormattedAverageCompletionTime.js +1 -1
  12. package/dist/components/HeaderWithMenu/index.js +1 -8
  13. package/dist/components/Input/Address/AddressNote.js +3 -2
  14. package/dist/components/Input/Address/AddressPicker/AddressWithIcon.js +2 -2
  15. package/dist/components/Input/Address/AddressPicker/ConnectedWallets/ConnectWalletButton.js +12 -5
  16. package/dist/components/Input/Address/AddressPicker/ExchangeNote.d.ts +1 -1
  17. package/dist/components/Input/Address/AddressPicker/ExchangeNote.js +1 -1
  18. package/dist/components/Input/RouteIcon.js +1 -1
  19. package/dist/components/LayerswapMenu/MenuList.js +2 -56
  20. package/dist/components/Pages/404/index.js +1 -0
  21. package/dist/components/Pages/Auth/Steps/CodeStep/VerifyEmailCode.js +1 -0
  22. package/dist/components/Pages/Auth/index.d.ts +1 -1
  23. package/dist/components/Pages/Auth/index.js +3 -2
  24. package/dist/components/Pages/Campaigns/Details/Leaderboard.js +1 -0
  25. package/dist/components/Pages/Campaigns/Details/index.d.ts +1 -1
  26. package/dist/components/Pages/Campaigns/Details/index.js +3 -2
  27. package/dist/components/Pages/Campaigns/index.d.ts +1 -1
  28. package/dist/components/Pages/Campaigns/index.js +3 -2
  29. package/dist/components/Pages/Maintanance/index.js +1 -0
  30. package/dist/components/Pages/NoCookies/index.js +1 -0
  31. package/dist/components/Pages/SwapHistory/History.js +1 -2
  32. package/dist/components/Pages/SwapHistory/index.d.ts +1 -1
  33. package/dist/components/Pages/SwapHistory/index.js +4 -3
  34. package/dist/components/Pages/SwapPages/Form/FeeDetails/Campaign.js +1 -0
  35. package/dist/components/Pages/SwapPages/Form/Form.js +1 -4
  36. package/dist/components/Pages/SwapPages/Form/SecondaryComponents/ValidationError.js +1 -1
  37. package/dist/components/Pages/SwapPages/Form/Select/Popover/PopoverSelect.js +1 -1
  38. package/dist/components/Pages/SwapPages/Form/index.js +1 -0
  39. package/dist/components/Pages/SwapPages/Withdraw/Coinbase/Carousel.js +8 -6
  40. package/dist/components/Pages/SwapPages/Withdraw/Processing/Processing.js +2 -2
  41. package/dist/components/Pages/SwapPages/Withdraw/Wallet/FuelWalletWithdrawal.d.ts +0 -4
  42. package/dist/components/Pages/SwapPages/Withdraw/Wallet/FuelWalletWithdrawal.js +159 -125
  43. package/dist/components/Pages/SwapPages/Withdraw/Wallet/ImtblxWalletWithdrawStep.d.ts +0 -4
  44. package/dist/components/Pages/SwapPages/Withdraw/Wallet/ImtblxWalletWithdrawStep.js +69 -51
  45. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/ActivationTokentPicker.d.ts +0 -8
  46. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/ActivationTokentPicker.js +87 -45
  47. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/hooks.d.ts +0 -40
  48. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/hooks.js +73 -46
  49. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/index.d.ts +0 -4
  50. package/dist/components/Pages/SwapPages/Withdraw/Wallet/Loopring/index.js +175 -128
  51. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/index.d.ts +0 -7
  52. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/index.js +138 -116
  53. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/transactionSender.d.ts +0 -8
  54. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SVMWalletWithdraw/transactionSender.js +96 -75
  55. package/dist/components/Pages/SwapPages/Withdraw/Wallet/SophonWalletWithdraw.js +2 -2
  56. package/dist/components/Pages/SwapPages/Withdraw/Wallet/StarknetWalletWithdraw.d.ts +0 -4
  57. package/dist/components/Pages/SwapPages/Withdraw/Wallet/StarknetWalletWithdraw.js +88 -71
  58. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TonWalletWithdraw.d.ts +0 -4
  59. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TonWalletWithdraw.js +146 -136
  60. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TronWalletWithdraw.d.ts +0 -4
  61. package/dist/components/Pages/SwapPages/Withdraw/Wallet/TronWalletWithdraw.js +120 -99
  62. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/TransferToken.js +3 -3
  63. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/buttons.js +1 -0
  64. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/index.js +1 -1
  65. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransfer/transactionMessage.js +2 -2
  66. package/dist/components/Pages/SwapPages/Withdraw/Wallet/WalletTransferContent.js +101 -33
  67. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Evm.d.ts +0 -4
  68. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Evm.js +60 -55
  69. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Starknet.d.ts +0 -4
  70. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/Starknet.js +71 -55
  71. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/buttons.js +1 -0
  72. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/index.d.ts +0 -4
  73. package/dist/components/Pages/SwapPages/Withdraw/Wallet/paradex/index.js +56 -52
  74. package/dist/components/Pages/SwapPages/Withdraw/index.d.ts +1 -1
  75. package/dist/components/Pages/SwapPages/Withdraw/index.js +3 -2
  76. package/dist/components/Wallet/WalletModal/Connector.js +1 -1
  77. package/dist/components/Wallet/WalletProviders/FuelProvider.d.ts +0 -5
  78. package/dist/components/Wallet/WalletProviders/FuelProvider.js +25 -20
  79. package/dist/components/Wallet/WalletProviders/ImtblPassportProvider.d.ts +0 -5
  80. package/dist/components/Wallet/WalletProviders/ImtblPassportProvider.js +39 -36
  81. package/dist/components/Wallet/WalletProviders/SolanaProvider.d.ts +0 -5
  82. package/dist/components/Wallet/WalletProviders/SolanaProvider.js +49 -38
  83. package/dist/components/Wallet/WalletProviders/StarknetProvider.d.ts +0 -5
  84. package/dist/components/Wallet/WalletProviders/StarknetProvider.js +112 -117
  85. package/dist/components/Wallet/WalletProviders/TonConnectProvider.d.ts +0 -6
  86. package/dist/components/Wallet/WalletProviders/TonConnectProvider.js +58 -50
  87. package/dist/components/Wallet/WalletProviders/TronProvider.d.ts +0 -3
  88. package/dist/components/Wallet/WalletProviders/TronProvider.js +23 -15
  89. package/dist/components/Wallet/WalletProviders/Wagmi.d.ts +1 -1
  90. package/dist/components/Wallet/WalletProviders/Wagmi.js +20 -10
  91. package/dist/components/Wallet/WalletProviders/index.js +13 -6
  92. package/dist/components/Widget/Footer.d.ts +2 -1
  93. package/dist/components/Widget/Footer.js +13 -4
  94. package/dist/components/Widget/Index.d.ts +1 -1
  95. package/dist/components/Widget/Index.js +1 -1
  96. package/dist/components/WidgetLoading.d.ts +1 -0
  97. package/dist/components/WidgetLoading.js +5 -0
  98. package/dist/components/Wizard/Wizard.js +1 -1
  99. package/dist/components/shadcn/command.js +1 -1
  100. package/dist/components/themeWrapper.js +3 -2
  101. package/dist/context/{LayerswapContext.d.ts → LayerswapProvider.d.ts} +3 -8
  102. package/dist/context/{LayerswapContext.js → LayerswapProvider.js} +8 -9
  103. package/dist/context/authContext.js +1 -0
  104. package/dist/context/walletHooksProvider.js +1 -0
  105. package/dist/hooks/useWallet.js +10 -14
  106. package/dist/index.css +1 -1
  107. package/dist/index.d.ts +3 -5
  108. package/dist/index.js +2 -4
  109. package/dist/index.mjs +19 -0
  110. package/dist/lib/AppSettings.d.ts +7 -3
  111. package/dist/lib/AppSettings.js +8 -7
  112. package/dist/lib/address/formatter/index.js +8 -9
  113. package/dist/lib/address/validator/index.js +18 -20
  114. package/dist/lib/axiosInterceptor.js +1 -2
  115. package/dist/lib/balances/balanceResolver.js +16 -16
  116. package/dist/lib/balances/providers/evmBalanceProvider.js +3 -3
  117. package/dist/lib/balances/providers/loopringBalanceProvider.d.ts +0 -6
  118. package/dist/lib/balances/providers/loopringBalanceProvider.js +56 -43
  119. package/dist/lib/balances/providers/paradexBalanceProvider.d.ts +0 -6
  120. package/dist/lib/balances/providers/paradexBalanceProvider.js +42 -42
  121. package/dist/lib/balances/providers/solanaBalanceProvider.d.ts +0 -6
  122. package/dist/lib/balances/providers/solanaBalanceProvider.js +70 -71
  123. package/dist/lib/balances/providers/starknetBalanceProvider.d.ts +0 -6
  124. package/dist/lib/balances/providers/starknetBalanceProvider.js +48 -45
  125. package/dist/lib/balances/providers/tonBalanceProvider.d.ts +0 -18
  126. package/dist/lib/balances/providers/tonBalanceProvider.js +104 -100
  127. package/dist/lib/balances/providers/tronBalanceResolver.js +2 -3
  128. package/dist/lib/fuels/common/FakeAccount.d.ts +0 -24
  129. package/dist/lib/fuels/common/FakeAccount.js +58 -36
  130. package/dist/lib/fuels/common/PredicateConnector.d.ts +0 -54
  131. package/dist/lib/fuels/common/PredicateConnector.js +292 -205
  132. package/dist/lib/fuels/common/PredicateFactory.d.ts +0 -29
  133. package/dist/lib/fuels/common/PredicateFactory.js +123 -76
  134. package/dist/lib/fuels/common/PredicateWalletAdapter.d.ts +0 -17
  135. package/dist/lib/fuels/common/PredicateWalletAdapter.js +44 -29
  136. package/dist/lib/fuels/common/index.d.ts +0 -4
  137. package/dist/lib/fuels/common/index.js +4 -4
  138. package/dist/lib/fuels/connectors/fuel-wallet/FuelWalletConnector.d.ts +0 -51
  139. package/dist/lib/fuels/connectors/fuel-wallet/FuelWalletConnector.js +268 -234
  140. package/dist/lib/fuels/connectors/fuel-wallet/index.d.ts +0 -2
  141. package/dist/lib/fuels/connectors/fuel-wallet/index.js +2 -2
  142. package/dist/lib/fuels/connectors/fuel-wallet/types.d.ts +0 -50
  143. package/dist/lib/fuels/connectors/fuel-wallet/types.js +53 -9
  144. package/dist/lib/fuels/connectors/fuelet-wallet/FueletWalletConnector.d.ts +0 -7
  145. package/dist/lib/fuels/connectors/fuelet-wallet/FueletWalletConnector.js +20 -19
  146. package/dist/lib/fuels/connectors/fuelet-wallet/index.d.ts +0 -1
  147. package/dist/lib/fuels/connectors/fuelet-wallet/index.js +1 -1
  148. package/dist/lib/gases/gasResolver.d.ts +1 -1
  149. package/dist/lib/gases/gasResolver.js +10 -10
  150. package/dist/lib/gases/providers/evmGasProvider.js +5 -4
  151. package/dist/lib/gases/providers/loopringGasProvider.d.ts +0 -6
  152. package/dist/lib/gases/providers/loopringGasProvider.js +27 -24
  153. package/dist/lib/gases/providers/solanaGasProvider.d.ts +0 -7
  154. package/dist/lib/gases/providers/solanaGasProvider.js +32 -31
  155. package/dist/lib/gases/providers/starknetGasProvider.d.ts +0 -7
  156. package/dist/lib/gases/providers/starknetGasProvider.js +34 -33
  157. package/dist/lib/imtbl.d.ts +0 -69
  158. package/dist/lib/imtbl.js +63 -60
  159. package/dist/lib/internalApiClient.d.ts +0 -2
  160. package/dist/lib/internalApiClient.js +1 -4
  161. package/dist/lib/layerSwapApiClient.js +3 -3
  162. package/dist/lib/logError.js +2 -2
  163. package/dist/lib/nft/nftBalanceResolver.js +1 -2
  164. package/dist/lib/nft/providers/starknetNftProvider.d.ts +0 -6
  165. package/dist/lib/nft/providers/starknetNftProvider.js +49 -50
  166. package/dist/lib/wallets/connectors/EthereumProvider.d.ts +2 -2
  167. package/dist/lib/wallets/connectors/useSyncProviders/store.d.ts +1 -4
  168. package/dist/lib/wallets/fuel/Bako.d.ts +0 -15
  169. package/dist/lib/wallets/fuel/Bako.js +34 -29
  170. package/dist/lib/wallets/fuel/Basko.d.ts +0 -15
  171. package/dist/lib/wallets/fuel/Basko.js +34 -29
  172. package/dist/lib/wallets/fuel/useFuel.d.ts +0 -2
  173. package/dist/lib/wallets/fuel/useFuel.js +211 -192
  174. package/dist/lib/wallets/imtblX/useImtblX.d.ts +0 -2
  175. package/dist/lib/wallets/imtblX/useImtblX.js +87 -87
  176. package/dist/lib/wallets/paradex/Authorize/Ethereum.d.ts +0 -2
  177. package/dist/lib/wallets/paradex/Authorize/Ethereum.js +24 -23
  178. package/dist/lib/wallets/paradex/Authorize/Starknet.d.ts +0 -2
  179. package/dist/lib/wallets/paradex/Authorize/Starknet.js +14 -13
  180. package/dist/lib/wallets/paradex/lib/account.d.ts +0 -28
  181. package/dist/lib/wallets/paradex/lib/account.js +102 -53
  182. package/dist/lib/wallets/paradex/lib/index.d.ts +0 -24
  183. package/dist/lib/wallets/paradex/lib/index.js +20 -20
  184. package/dist/lib/wallets/paradex/lib/paraclear-provider.d.ts +0 -6
  185. package/dist/lib/wallets/paradex/lib/paraclear-provider.js +13 -9
  186. package/dist/lib/wallets/paradex/lib/paraclear.d.ts +0 -137
  187. package/dist/lib/wallets/paradex/lib/paraclear.js +258 -131
  188. package/dist/lib/wallets/paradex/lib/starknet-account-support.d.ts +0 -22
  189. package/dist/lib/wallets/paradex/lib/starknet-account-support.js +296 -220
  190. package/dist/lib/wallets/paradex/lib/starknet-signer.d.ts +0 -15
  191. package/dist/lib/wallets/paradex/lib/starknet-signer.js +120 -94
  192. package/dist/lib/wallets/paradex/useParadex.d.ts +0 -7
  193. package/dist/lib/wallets/paradex/useParadex.js +197 -194
  194. package/dist/lib/wallets/solana/transactionBuilder.d.ts +0 -4
  195. package/dist/lib/wallets/solana/transactionBuilder.js +63 -39
  196. package/dist/lib/wallets/solana/useSVM.d.ts +0 -5
  197. package/dist/lib/wallets/solana/useSVM.js +139 -142
  198. package/dist/lib/wallets/starknet/useStarknet.d.ts +0 -2
  199. package/dist/lib/wallets/starknet/useStarknet.js +139 -139
  200. package/dist/lib/wallets/ton/client.d.ts +0 -3
  201. package/dist/lib/wallets/ton/client.js +7 -7
  202. package/dist/lib/wallets/ton/useTON.d.ts +0 -2
  203. package/dist/lib/wallets/ton/useTON.js +121 -122
  204. package/dist/lib/wallets/tron/connectors/bitkeep.d.ts +0 -61
  205. package/dist/lib/wallets/tron/connectors/bitkeep.js +326 -303
  206. package/dist/lib/wallets/tron/connectors/index.d.ts +0 -4
  207. package/dist/lib/wallets/tron/connectors/index.js +4 -4
  208. package/dist/lib/wallets/tron/connectors/okxWallet.d.ts +0 -66
  209. package/dist/lib/wallets/tron/connectors/okxWallet.js +364 -336
  210. package/dist/lib/wallets/tron/connectors/tokenPocket.d.ts +0 -72
  211. package/dist/lib/wallets/tron/connectors/tokenPocket.js +337 -308
  212. package/dist/lib/wallets/tron/connectors/tronLink/index.d.ts +0 -102
  213. package/dist/lib/wallets/tron/connectors/tronLink/index.js +560 -520
  214. package/dist/lib/wallets/tron/connectors/tronLink/types.d.ts +0 -56
  215. package/dist/lib/wallets/tron/connectors/tronLink/types.js +53 -1
  216. package/dist/lib/wallets/tron/connectors/tronLink/utils.d.ts +0 -14
  217. package/dist/lib/wallets/tron/connectors/tronLink/utils.js +64 -61
  218. package/dist/lib/wallets/tron/useTron.d.ts +0 -2
  219. package/dist/lib/wallets/tron/useTron.js +111 -111
  220. package/dist/lib/wallets/utils/resolveWalletIcon.js +1 -0
  221. package/package.json +26 -77
  222. package/dist/hooks/useCopyClipboard.d.ts +0 -1
  223. package/dist/hooks/useCopyClipboard.js +0 -21
  224. package/dist/index.cjs +0 -125
  225. package/dist/lib/abis/ERC20.json +0 -258
  226. package/dist/lib/fuels/connectors/walletConnect/WalletConnectConnector.d.ts +0 -42
  227. package/dist/lib/fuels/connectors/walletConnect/WalletConnectConnector.js +0 -357
  228. package/dist/lib/fuels/connectors/walletConnect/constants.d.ts +0 -6
  229. package/dist/lib/fuels/connectors/walletConnect/constants.js +0 -7
  230. package/dist/lib/fuels/connectors/walletConnect/index.d.ts +0 -3
  231. package/dist/lib/fuels/connectors/walletConnect/index.js +0 -3
  232. package/dist/lib/fuels/connectors/walletConnect/types.d.ts +0 -12
  233. package/dist/lib/fuels/connectors/walletConnect/types.js +0 -1
  234. package/dist/lib/fuels/connectors/walletConnect/utils/index.d.ts +0 -1
  235. package/dist/lib/fuels/connectors/walletConnect/utils/index.js +0 -1
  236. package/dist/lib/fuels/connectors/walletConnect/utils/subscribeAndEnforceChain.d.ts +0 -2
  237. package/dist/lib/fuels/connectors/walletConnect/utils/subscribeAndEnforceChain.js +0 -39
  238. package/dist/lib/fuels/connectors/walletConnect/web3Modal.d.ts +0 -10
  239. package/dist/lib/fuels/connectors/walletConnect/web3Modal.js +0 -38
  240. package/dist/lib/loopring/LoopringAPI.d.ts +0 -12
  241. package/dist/lib/loopring/LoopringAPI.js +0 -13
  242. package/dist/lib/loopring/defs.d.ts +0 -425
  243. package/dist/lib/loopring/defs.js +0 -217
  244. package/dist/lib/loopring/eddsa.d.ts +0 -29
  245. package/dist/lib/loopring/eddsa.js +0 -208
  246. package/dist/lib/loopring/field.d.ts +0 -17
  247. package/dist/lib/loopring/field.js +0 -61
  248. package/dist/lib/loopring/formatter.d.ts +0 -137
  249. package/dist/lib/loopring/formatter.js +0 -516
  250. package/dist/lib/loopring/helpers.d.ts +0 -36
  251. package/dist/lib/loopring/helpers.js +0 -140
  252. package/dist/lib/loopring/jubjub.d.ts +0 -19
  253. package/dist/lib/loopring/jubjub.js +0 -79
  254. package/dist/lib/loopring/permutation.d.ts +0 -22
  255. package/dist/lib/loopring/permutation.js +0 -198
  256. package/dist/lib/loopring/poseidon/EDDSAUtil.d.ts +0 -14
  257. package/dist/lib/loopring/poseidon/EDDSAUtil.js +0 -61
  258. package/dist/lib/loopring/poseidon/babyJub.d.ts +0 -6
  259. package/dist/lib/loopring/poseidon/babyJub.js +0 -51
  260. package/dist/lib/loopring/poseidon/eddsa.d.ts +0 -29
  261. package/dist/lib/loopring/poseidon/eddsa.js +0 -210
  262. package/dist/lib/loopring/utils.d.ts +0 -76
  263. package/dist/lib/loopring/utils.js +0 -230
  264. package/dist/styles/dialog-transition.css +0 -28
  265. package/dist/styles/globals.css +0 -372
  266. package/dist/styles/manual-trasnfer-svg.css +0 -299
  267. package/dist/styles/vaul.css +0 -256
@@ -1,520 +1,560 @@
1
- import { Adapter, AdapterState, isInBrowser, WalletReadyState, WalletSignMessageError, WalletNotFoundError, WalletDisconnectedError, WalletConnectionError, WalletSignTransactionError, WalletSwitchChainError, WalletGetNetworkError, isInMobileBrowser, NetworkType, } from '@tronweb3/tronwallet-abstract-adapter';
2
- import { openTronLink, supportTron, supportTronLink, waitTronwebReady } from './utils';
3
- export const chainIdNetworkMap = {
4
- '0x2b6653dc': NetworkType.Mainnet,
5
- '0x94a9059e': NetworkType.Shasta,
6
- '0xcd8690dc': NetworkType.Nile,
7
- };
8
- export async function getNetworkInfoByTronWeb(tronWeb) {
9
- const { blockID = '' } = await tronWeb.trx.getBlockByNumber(0);
10
- const chainId = `0x${blockID.slice(-8)}`;
11
- return {
12
- networkType: chainIdNetworkMap[chainId] || NetworkType.Unknown,
13
- chainId,
14
- fullNode: tronWeb.fullNode?.host || '',
15
- solidityNode: tronWeb.solidityNode?.host || '',
16
- eventServer: tronWeb.eventServer?.host || '',
17
- };
18
- }
19
- export const TronLinkAdapterName = 'TronLink';
20
- export class TronLinkAdapter extends Adapter {
21
- // record if first connect event has emitted or not
22
- constructor(config = {}) {
23
- super();
24
- this.name = TronLinkAdapterName;
25
- this.url = 'https://www.tronlink.org/';
26
- this.icon = 'data:image/png;base64,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';
27
- this._readyState = isInBrowser() ? WalletReadyState.Loading : WalletReadyState.NotFound;
28
- this._state = AdapterState.Loading;
29
- // https://github.com/tronprotocol/tips/blob/master/tip-1193.md
30
- this._supportNewTronProtocol = false;
31
- this._tronLinkMessageHandler = (e) => {
32
- const message = e.data?.message;
33
- if (!message) {
34
- return;
35
- }
36
- if (message.action === 'accountsChanged') {
37
- setTimeout(() => {
38
- const preAddr = this.address || '';
39
- if (this._wallet?.ready) {
40
- const address = message.data.address;
41
- this.setAddress(address);
42
- this.setState(AdapterState.Connected);
43
- }
44
- else {
45
- this.setAddress(null);
46
- this.setState(AdapterState.Disconnect);
47
- }
48
- this.emit('accountsChanged', this.address || '', preAddr);
49
- if (!preAddr && this.address) {
50
- this.emit('connect', this.address);
51
- }
52
- else if (preAddr && !this.address) {
53
- this.emit('disconnect');
54
- }
55
- }, 200);
56
- }
57
- else if (message.action === 'setNode') {
58
- this.emit('chainChanged', { chainId: message.data?.node?.chainId || '' });
59
- }
60
- else if (message.action === 'connect') {
61
- const address = this._wallet.tronWeb?.defaultAddress?.base58 || '';
62
- this.setAddress(address);
63
- this.setState(AdapterState.Connected);
64
- this.emit('connect', address);
65
- }
66
- else if (message.action === 'disconnect') {
67
- this.setAddress(null);
68
- this.setState(AdapterState.Disconnect);
69
- this.emit('disconnect');
70
- }
71
- };
72
- this._onChainChanged = (data) => {
73
- this.emit('chainChanged', data);
74
- };
75
- this._onAccountsChanged = () => {
76
- const preAddr = this.address || '';
77
- const curAddr = (this._wallet?.tronWeb && this._wallet?.tronWeb.defaultAddress?.base58) || '';
78
- if (!curAddr) {
79
- // change to a new address and if it's disconnected, data will be empty
80
- // tronlink will emit accountsChanged many times, only process when connected
81
- this.setAddress(null);
82
- this.setState(AdapterState.Disconnect);
83
- }
84
- else {
85
- const address = curAddr;
86
- this.setAddress(address);
87
- this.setState(AdapterState.Connected);
88
- }
89
- this.emit('accountsChanged', this.address || '', preAddr);
90
- if (!preAddr && this.address) {
91
- this.emit('connect', this.address);
92
- }
93
- else if (preAddr && !this.address) {
94
- this.emit('disconnect');
95
- }
96
- };
97
- this._checkPromise = null;
98
- this._updateWallet = () => {
99
- let state = this.state;
100
- let address = this.address;
101
- if (isInMobileBrowser()) {
102
- if (window.tronLink) {
103
- this._wallet = window.tronLink;
104
- }
105
- else {
106
- this._wallet = {
107
- ready: !!window.tronWeb?.defaultAddress,
108
- tronWeb: window.tronWeb,
109
- request: () => Promise.resolve(true),
110
- };
111
- }
112
- address = this._wallet.tronWeb?.defaultAddress?.base58 || null;
113
- state = address ? AdapterState.Connected : AdapterState.Disconnect;
114
- }
115
- else if (window.tron && window.tron.isTronLink) {
116
- this._supportNewTronProtocol = true;
117
- this._wallet = window.tron;
118
- this._listenTronEvent();
119
- if (state === AdapterState.Connected) {
120
- address = (this._wallet.tronWeb && this._wallet.tronWeb?.defaultAddress?.base58) || null;
121
- }
122
- state = address ? AdapterState.Connected : AdapterState.Disconnect;
123
- }
124
- else if (window.tronLink) {
125
- this._wallet = window.tronLink;
126
- this._listenTronLinkEvent();
127
- if (state === AdapterState.Connected) {
128
- address = this._wallet.tronWeb.defaultAddress?.base58 || null;
129
- }
130
- state = this._wallet.ready ? AdapterState.Connected : AdapterState.Disconnect;
131
- }
132
- else if (window.tronWeb) {
133
- // fake tronLink
134
- this._wallet = {
135
- ready: window.tronWeb.ready,
136
- tronWeb: window.tronWeb,
137
- request: () => Promise.resolve(true),
138
- };
139
- address = this._wallet.tronWeb.defaultAddress?.base58 || null;
140
- state = this._wallet.ready ? AdapterState.Connected : AdapterState.Disconnect;
141
- }
142
- else {
143
- // no tronlink support
144
- this._wallet = null;
145
- address = null;
146
- state = AdapterState.NotFound;
147
- }
148
- // In TronLink App, account should be connected
149
- if (isInMobileBrowser() && state === AdapterState.Disconnect) {
150
- this.checkForWalletReadyForApp();
151
- }
152
- this.setAddress(address);
153
- this.setState(state);
154
- };
155
- this.checkReadyInterval = null;
156
- const { checkTimeout = 30 * 1000, dappIcon = '', dappName = '', openUrlWhenWalletNotFound = true, openTronLinkAppOnMobile = true, } = config;
157
- if (typeof checkTimeout !== 'number') {
158
- throw new Error('[TronLinkAdapter] config.checkTimeout should be a number');
159
- }
160
- this.config = {
161
- checkTimeout,
162
- openTronLinkAppOnMobile,
163
- openUrlWhenWalletNotFound,
164
- dappIcon,
165
- dappName,
166
- };
167
- this._connecting = false;
168
- this._wallet = null;
169
- this._address = null;
170
- if (!isInBrowser()) {
171
- this._readyState = WalletReadyState.NotFound;
172
- this.setState(AdapterState.NotFound);
173
- return;
174
- }
175
- if (supportTron() || (isInMobileBrowser() && (window.tronLink || window.tronWeb))) {
176
- this._readyState = WalletReadyState.Found;
177
- this._updateWallet();
178
- }
179
- else {
180
- this._checkWallet().then(() => {
181
- if (this.connected) {
182
- this.emit('connect', this.address || '');
183
- }
184
- });
185
- }
186
- }
187
- get address() {
188
- return this._address;
189
- }
190
- get state() {
191
- return this._state;
192
- }
193
- get readyState() {
194
- return this._readyState;
195
- }
196
- get connecting() {
197
- return this._connecting;
198
- }
199
- /**
200
- * Get network information used by TronLink.
201
- * @returns {Network} Current network information.
202
- */
203
- async network() {
204
- try {
205
- await this._checkWallet();
206
- if (this.state !== AdapterState.Connected)
207
- throw new WalletDisconnectedError();
208
- const tronWeb = this._wallet?.tronWeb || window.tronWeb;
209
- if (!tronWeb)
210
- throw new WalletDisconnectedError();
211
- try {
212
- return await getNetworkInfoByTronWeb(tronWeb);
213
- }
214
- catch (e) {
215
- throw new WalletGetNetworkError(e?.message, e);
216
- }
217
- }
218
- catch (e) {
219
- this.emit('error', e);
220
- throw e;
221
- }
222
- }
223
- async connect() {
224
- try {
225
- this.checkIfOpenTronLink();
226
- if (this.connected || this.connecting)
227
- return;
228
- await this._checkWallet();
229
- if (this.state === AdapterState.NotFound) {
230
- if (this.config.openUrlWhenWalletNotFound !== false && isInBrowser()) {
231
- window.open(this.url, '_blank');
232
- }
233
- throw new WalletNotFoundError();
234
- }
235
- // lower version only support window.tronWeb, no window.tronLink
236
- if (!this._wallet)
237
- return;
238
- this._connecting = true;
239
- if (this._supportNewTronProtocol) {
240
- const wallet = this._wallet;
241
- try {
242
- const res = await wallet.request({ method: 'eth_requestAccounts' });
243
- const address = res[0];
244
- this.setAddress(address);
245
- this.setState(AdapterState.Connected);
246
- this._listenTronEvent();
247
- if (!this._wallet.tronWeb) {
248
- await waitTronwebReady(this._wallet);
249
- }
250
- }
251
- catch (error) {
252
- let message = error?.message || error || 'Connect TronLink wallet failed.';
253
- if (error.code === -32002) {
254
- message =
255
- 'The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.';
256
- }
257
- if (error.code === 4001) {
258
- message = 'The user rejected connection.';
259
- }
260
- throw new WalletConnectionError(message, error);
261
- }
262
- }
263
- else if (window.tronLink) {
264
- const wallet = this._wallet;
265
- try {
266
- const res = await wallet.request({ method: 'tron_requestAccounts' });
267
- if (!res) {
268
- // 1. wallet is locked
269
- // 2. tronlink is first installed and there is no wallet account
270
- throw new WalletConnectionError('TronLink wallet is locked or no wallet account is avaliable.');
271
- }
272
- if (res.code === 4000) {
273
- throw new WalletConnectionError('The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.');
274
- }
275
- if (res.code === 4001) {
276
- throw new WalletConnectionError('The user rejected connection.');
277
- }
278
- }
279
- catch (error) {
280
- throw new WalletConnectionError(error?.message, error);
281
- }
282
- const address = wallet.tronWeb.defaultAddress?.base58 || '';
283
- this.setAddress(address);
284
- this.setState(AdapterState.Connected);
285
- this._listenTronLinkEvent();
286
- }
287
- else if (window.tronWeb) {
288
- const wallet = this._wallet;
289
- const address = wallet.tronWeb.defaultAddress?.base58 || '';
290
- this.setAddress(address);
291
- this.setState(AdapterState.Connected);
292
- }
293
- else {
294
- throw new WalletConnectionError('Cannot connect wallet.');
295
- }
296
- this.connected && this.emit('connect', this.address || '');
297
- }
298
- catch (error) {
299
- this.emit('error', error);
300
- throw error;
301
- }
302
- finally {
303
- this._connecting = false;
304
- }
305
- }
306
- async disconnect() {
307
- if (this._supportNewTronProtocol) {
308
- this._stopListenTronEvent();
309
- }
310
- else {
311
- this._stopListenTronLinkEvent();
312
- }
313
- if (this.state !== AdapterState.Connected) {
314
- return;
315
- }
316
- this.setAddress(null);
317
- this.setState(AdapterState.Disconnect);
318
- this.emit('disconnect');
319
- }
320
- async signTransaction(transaction, privateKey) {
321
- try {
322
- const wallet = await this.checkAndGetWallet();
323
- try {
324
- return await wallet.tronWeb.trx.sign(transaction, privateKey);
325
- }
326
- catch (error) {
327
- if (error instanceof Error) {
328
- throw new WalletSignTransactionError(error.message, error);
329
- }
330
- else {
331
- throw new WalletSignTransactionError(error, new Error(error));
332
- }
333
- }
334
- }
335
- catch (error) {
336
- this.emit('error', error);
337
- throw error;
338
- }
339
- }
340
- async multiSign(transaction, privateKey, permissionId) {
341
- try {
342
- const wallet = await this.checkAndGetWallet();
343
- try {
344
- return await wallet.tronWeb.trx.multiSign(transaction, privateKey, permissionId);
345
- }
346
- catch (error) {
347
- if (error instanceof Error) {
348
- throw new WalletSignTransactionError(error.message, error);
349
- }
350
- else {
351
- throw new WalletSignTransactionError(error, new Error(error));
352
- }
353
- }
354
- }
355
- catch (error) {
356
- this.emit('error', error);
357
- throw error;
358
- }
359
- }
360
- async signMessage(message, privateKey) {
361
- try {
362
- const wallet = await this.checkAndGetWallet();
363
- try {
364
- return await wallet.tronWeb.trx.signMessageV2(message, privateKey);
365
- }
366
- catch (error) {
367
- if (error instanceof Error) {
368
- throw new WalletSignMessageError(error.message, error);
369
- }
370
- else {
371
- throw new WalletSignMessageError(error, new Error(error));
372
- }
373
- }
374
- }
375
- catch (error) {
376
- this.emit('error', error);
377
- throw error;
378
- }
379
- }
380
- /**
381
- * Switch to target chain. If current chain is the same as target chain, the call will success immediately.
382
- * Available chainIds:
383
- * - Mainnet: 0x2b6653dc
384
- * - Shasta: 0x94a9059e
385
- * - Nile: 0xcd8690dc
386
- * @param chainId chainId
387
- */
388
- async switchChain(chainId) {
389
- try {
390
- await this._checkWallet();
391
- if (this.state === AdapterState.NotFound) {
392
- if (this.config.openUrlWhenWalletNotFound !== false && isInBrowser()) {
393
- window.open(this.url, '_blank');
394
- }
395
- throw new WalletNotFoundError();
396
- }
397
- if (!this._supportNewTronProtocol) {
398
- throw new WalletSwitchChainError("Current version of TronLink doesn't support switch chain operation.");
399
- }
400
- const wallet = this._wallet;
401
- try {
402
- await wallet.request({
403
- method: 'wallet_switchEthereumChain',
404
- params: [{ chainId }],
405
- });
406
- }
407
- catch (e) {
408
- throw new WalletSwitchChainError(e?.message || e, e instanceof Error ? e : new Error(e));
409
- }
410
- }
411
- catch (error) {
412
- this.emit('error', error);
413
- throw error;
414
- }
415
- }
416
- async checkAndGetWallet() {
417
- this.checkIfOpenTronLink();
418
- await this._checkWallet();
419
- if (this.state !== AdapterState.Connected)
420
- throw new WalletDisconnectedError();
421
- const wallet = this._wallet;
422
- if (!wallet || !wallet.tronWeb)
423
- throw new WalletDisconnectedError();
424
- return wallet;
425
- }
426
- _listenTronLinkEvent() {
427
- this._stopListenTronLinkEvent();
428
- window.addEventListener('message', this._tronLinkMessageHandler);
429
- }
430
- _stopListenTronLinkEvent() {
431
- window.removeEventListener('message', this._tronLinkMessageHandler);
432
- }
433
- checkIfOpenTronLink() {
434
- const { dappName = '', dappIcon = '' } = this.config;
435
- if (this.config.openTronLinkAppOnMobile === false) {
436
- return;
437
- }
438
- if (openTronLink({ dappIcon, dappName })) {
439
- throw new WalletNotFoundError();
440
- }
441
- }
442
- // following code is for TIP-1193
443
- _listenTronEvent() {
444
- this._stopListenTronEvent();
445
- this._stopListenTronLinkEvent();
446
- const wallet = this._wallet;
447
- wallet.on('chainChanged', this._onChainChanged);
448
- wallet.on('accountsChanged', this._onAccountsChanged);
449
- }
450
- _stopListenTronEvent() {
451
- const wallet = this._wallet;
452
- wallet.removeListener('chainChanged', this._onChainChanged);
453
- wallet.removeListener('accountsChanged', this._onAccountsChanged);
454
- }
455
- /**
456
- * check if wallet exists by interval, the promise only resolve when wallet detected or timeout
457
- * @returns if wallet exists
458
- */
459
- _checkWallet() {
460
- if (this.readyState === WalletReadyState.Found) {
461
- return Promise.resolve(true);
462
- }
463
- if (this._checkPromise) {
464
- return this._checkPromise;
465
- }
466
- const interval = 100;
467
- const checkTronTimes = Math.floor(2000 / interval);
468
- const maxTimes = Math.floor(this.config.checkTimeout / interval);
469
- let times = 0, timer;
470
- this._checkPromise = new Promise((resolve) => {
471
- const check = () => {
472
- times++;
473
- const isSupport = times < checkTronTimes && !isInMobileBrowser() ? supportTron() : supportTronLink();
474
- if (isSupport || times > maxTimes) {
475
- timer && clearInterval(timer);
476
- this._readyState = isSupport ? WalletReadyState.Found : WalletReadyState.NotFound;
477
- this._updateWallet();
478
- this.emit('readyStateChanged', this.readyState);
479
- resolve(isSupport);
480
- }
481
- };
482
- timer = setInterval(check, interval);
483
- check();
484
- });
485
- return this._checkPromise;
486
- }
487
- checkForWalletReadyForApp() {
488
- if (this.checkReadyInterval) {
489
- return;
490
- }
491
- let times = 0;
492
- const maxTimes = Math.floor(this.config.checkTimeout / 200);
493
- const check = () => {
494
- if (window.tronLink ? window.tronLink.tronWeb?.defaultAddress : window.tronWeb?.defaultAddress) {
495
- this.checkReadyInterval && clearInterval(this.checkReadyInterval);
496
- this.checkReadyInterval = null;
497
- this._updateWallet();
498
- this.emit('connect', this.address || '');
499
- }
500
- else if (times > maxTimes) {
501
- this.checkReadyInterval && clearInterval(this.checkReadyInterval);
502
- this.checkReadyInterval = null;
503
- }
504
- else {
505
- times++;
506
- }
507
- };
508
- this.checkReadyInterval = setInterval(check, 200);
509
- }
510
- setAddress(address) {
511
- this._address = address;
512
- }
513
- setState(state) {
514
- const preState = this.state;
515
- if (state !== preState) {
516
- this._state = state;
517
- this.emit('stateChanged', state);
518
- }
519
- }
520
- }
1
+ // import {
2
+ // Adapter,
3
+ // AdapterState,
4
+ // isInBrowser,
5
+ // WalletReadyState,
6
+ // WalletSignMessageError,
7
+ // WalletNotFoundError,
8
+ // WalletDisconnectedError,
9
+ // WalletConnectionError,
10
+ // WalletSignTransactionError,
11
+ // WalletSwitchChainError,
12
+ // WalletGetNetworkError,
13
+ // isInMobileBrowser,
14
+ // NetworkType,
15
+ // } from '@tronweb3/tronwallet-abstract-adapter';
16
+ // import type {
17
+ // Transaction,
18
+ // SignedTransaction,
19
+ // AdapterName,
20
+ // BaseAdapterConfig,
21
+ // Network,
22
+ // } from '@tronweb3/tronwallet-abstract-adapter';
23
+ // import type {
24
+ // AccountsChangedEventData,
25
+ // NetworkChangedEventData,
26
+ // ReqestAccountsResponse,
27
+ // Tron,
28
+ // TronAccountsChangedCallback,
29
+ // TronChainChangedCallback,
30
+ // TronLinkMessageEvent,
31
+ // TronWeb,
32
+ // } from './types';
33
+ // import { openTronLink, supportTron, supportTronLink, waitTronwebReady } from './utils';
34
+ // export interface TronLinkWallet {
35
+ // ready: boolean;
36
+ // tronWeb: TronWeb;
37
+ // request(config: Record<string, unknown>): Promise<ReqestAccountsResponse | null>;
38
+ // }
39
+ // export const chainIdNetworkMap: Record<string, NetworkType> = {
40
+ // '0x2b6653dc': NetworkType.Mainnet,
41
+ // '0x94a9059e': NetworkType.Shasta,
42
+ // '0xcd8690dc': NetworkType.Nile,
43
+ // };
44
+ // export async function getNetworkInfoByTronWeb(tronWeb: TronWeb) {
45
+ // const { blockID = '' } = await tronWeb.trx.getBlockByNumber(0);
46
+ // const chainId = `0x${blockID.slice(-8)}`;
47
+ // return {
48
+ // networkType: chainIdNetworkMap[chainId] || NetworkType.Unknown,
49
+ // chainId,
50
+ // fullNode: tronWeb.fullNode?.host || '',
51
+ // solidityNode: tronWeb.solidityNode?.host || '',
52
+ // eventServer: tronWeb.eventServer?.host || '',
53
+ // };
54
+ // }
55
+ // declare global {
56
+ // interface Window {
57
+ // tronLink?: TronLinkWallet;
58
+ // tronWeb?: TronWeb & { ready?: boolean };
59
+ // // @ts-ignore
60
+ // tron?: Tron;
61
+ // }
62
+ // }
63
+ // export interface TronLinkAdapterConfig extends BaseAdapterConfig {
64
+ // /**
65
+ // * Timeout in millisecond for checking if TronLink wallet exists.
66
+ // * Default is 30 * 1000ms
67
+ // */
68
+ // checkTimeout?: number;
69
+ // /**
70
+ // * Set if open TronLink app using DeepLink.
71
+ // * Default is true.
72
+ // */
73
+ // openTronLinkAppOnMobile?: boolean;
74
+ // /**
75
+ // * The icon of your dapp. Used when open TronLink app in mobile device browsers.
76
+ // */
77
+ // dappIcon?: string;
78
+ // /**
79
+ // * The name of your dapp. Used when open TronLink app in mobile device browsers.
80
+ // */
81
+ // dappName?: string;
82
+ // }
83
+ // export const TronLinkAdapterName = 'TronLink' as AdapterName<'TronLink'>;
84
+ // export class TronLinkAdapter extends Adapter {
85
+ // name = TronLinkAdapterName;
86
+ // url = 'https://www.tronlink.org/';
87
+ // icon =
88
+ // 'data:image/png;base64,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';
89
+ // config: Required<TronLinkAdapterConfig>;
90
+ // private _readyState: WalletReadyState = isInBrowser() ? WalletReadyState.Loading : WalletReadyState.NotFound;
91
+ // private _state: AdapterState = AdapterState.Loading;
92
+ // private _connecting: boolean;
93
+ // private _wallet: TronLinkWallet | Tron | null;
94
+ // private _address: string | null;
95
+ // // https://github.com/tronprotocol/tips/blob/master/tip-1193.md
96
+ // private _supportNewTronProtocol = false;
97
+ // // record if first connect event has emitted or not
98
+ // constructor(config: TronLinkAdapterConfig = {}) {
99
+ // super();
100
+ // const {
101
+ // checkTimeout = 30 * 1000,
102
+ // dappIcon = '',
103
+ // dappName = '',
104
+ // openUrlWhenWalletNotFound = true,
105
+ // openTronLinkAppOnMobile = true,
106
+ // } = config;
107
+ // if (typeof checkTimeout !== 'number') {
108
+ // throw new Error('[TronLinkAdapter] config.checkTimeout should be a number');
109
+ // }
110
+ // this.config = {
111
+ // checkTimeout,
112
+ // openTronLinkAppOnMobile,
113
+ // openUrlWhenWalletNotFound,
114
+ // dappIcon,
115
+ // dappName,
116
+ // };
117
+ // this._connecting = false;
118
+ // this._wallet = null;
119
+ // this._address = null;
120
+ // if (!isInBrowser()) {
121
+ // this._readyState = WalletReadyState.NotFound;
122
+ // this.setState(AdapterState.NotFound);
123
+ // return;
124
+ // }
125
+ // if (supportTron() || (isInMobileBrowser() && (window.tronLink || window.tronWeb))) {
126
+ // this._readyState = WalletReadyState.Found;
127
+ // this._updateWallet();
128
+ // } else {
129
+ // this._checkWallet().then(() => {
130
+ // if (this.connected) {
131
+ // this.emit('connect', this.address || '');
132
+ // }
133
+ // });
134
+ // }
135
+ // }
136
+ // get address() {
137
+ // return this._address;
138
+ // }
139
+ // get state() {
140
+ // return this._state;
141
+ // }
142
+ // get readyState() {
143
+ // return this._readyState;
144
+ // }
145
+ // get connecting() {
146
+ // return this._connecting;
147
+ // }
148
+ // /**
149
+ // * Get network information used by TronLink.
150
+ // * @returns {Network} Current network information.
151
+ // */
152
+ // async network(): Promise<Network> {
153
+ // try {
154
+ // await this._checkWallet();
155
+ // if (this.state !== AdapterState.Connected) throw new WalletDisconnectedError();
156
+ // const tronWeb = this._wallet?.tronWeb || window.tronWeb;
157
+ // if (!tronWeb) throw new WalletDisconnectedError();
158
+ // try {
159
+ // return await getNetworkInfoByTronWeb(tronWeb);
160
+ // } catch (e: any) {
161
+ // throw new WalletGetNetworkError(e?.message, e);
162
+ // }
163
+ // } catch (e: any) {
164
+ // this.emit('error', e);
165
+ // throw e;
166
+ // }
167
+ // }
168
+ // async connect(): Promise<void> {
169
+ // try {
170
+ // this.checkIfOpenTronLink();
171
+ // if (this.connected || this.connecting) return;
172
+ // await this._checkWallet();
173
+ // if (this.state === AdapterState.NotFound) {
174
+ // if (this.config.openUrlWhenWalletNotFound !== false && isInBrowser()) {
175
+ // window.open(this.url, '_blank');
176
+ // }
177
+ // throw new WalletNotFoundError();
178
+ // }
179
+ // // lower version only support window.tronWeb, no window.tronLink
180
+ // if (!this._wallet) return;
181
+ // this._connecting = true;
182
+ // if (this._supportNewTronProtocol) {
183
+ // const wallet = this._wallet as Tron;
184
+ // try {
185
+ // const res = await wallet.request({ method: 'eth_requestAccounts' });
186
+ // const address = res[0];
187
+ // this.setAddress(address);
188
+ // this.setState(AdapterState.Connected);
189
+ // this._listenTronEvent();
190
+ // if (!this._wallet.tronWeb) {
191
+ // await waitTronwebReady(this._wallet as Tron);
192
+ // }
193
+ // } catch (error: any) {
194
+ // let message = error?.message || error || 'Connect TronLink wallet failed.';
195
+ // if (error.code === -32002) {
196
+ // message =
197
+ // 'The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.';
198
+ // }
199
+ // if (error.code === 4001) {
200
+ // message = 'The user rejected connection.';
201
+ // }
202
+ // throw new WalletConnectionError(message, error);
203
+ // }
204
+ // } else if (window.tronLink) {
205
+ // const wallet = this._wallet as TronLinkWallet;
206
+ // try {
207
+ // const res = await wallet.request({ method: 'tron_requestAccounts' });
208
+ // if (!res) {
209
+ // // 1. wallet is locked
210
+ // // 2. tronlink is first installed and there is no wallet account
211
+ // throw new WalletConnectionError('TronLink wallet is locked or no wallet account is avaliable.');
212
+ // }
213
+ // if (res.code === 4000) {
214
+ // throw new WalletConnectionError(
215
+ // 'The same DApp has already initiated a request to connect to TronLink wallet, and the pop-up window has not been closed.'
216
+ // );
217
+ // }
218
+ // if (res.code === 4001) {
219
+ // throw new WalletConnectionError('The user rejected connection.');
220
+ // }
221
+ // } catch (error: any) {
222
+ // throw new WalletConnectionError(error?.message, error);
223
+ // }
224
+ // const address = wallet.tronWeb.defaultAddress?.base58 || '';
225
+ // this.setAddress(address);
226
+ // this.setState(AdapterState.Connected);
227
+ // this._listenTronLinkEvent();
228
+ // } else if (window.tronWeb) {
229
+ // const wallet = this._wallet as TronLinkWallet;
230
+ // const address = wallet.tronWeb.defaultAddress?.base58 || '';
231
+ // this.setAddress(address);
232
+ // this.setState(AdapterState.Connected);
233
+ // } else {
234
+ // throw new WalletConnectionError('Cannot connect wallet.');
235
+ // }
236
+ // this.connected && this.emit('connect', this.address || '');
237
+ // } catch (error: any) {
238
+ // this.emit('error', error);
239
+ // throw error;
240
+ // } finally {
241
+ // this._connecting = false;
242
+ // }
243
+ // }
244
+ // async disconnect(): Promise<void> {
245
+ // if (this._supportNewTronProtocol) {
246
+ // this._stopListenTronEvent();
247
+ // } else {
248
+ // this._stopListenTronLinkEvent();
249
+ // }
250
+ // if (this.state !== AdapterState.Connected) {
251
+ // return;
252
+ // }
253
+ // this.setAddress(null);
254
+ // this.setState(AdapterState.Disconnect);
255
+ // this.emit('disconnect');
256
+ // }
257
+ // async signTransaction(transaction: Transaction, privateKey?: string): Promise<SignedTransaction> {
258
+ // try {
259
+ // const wallet = await this.checkAndGetWallet();
260
+ // try {
261
+ // return await wallet.tronWeb.trx.sign(transaction, privateKey);
262
+ // } catch (error: any) {
263
+ // if (error instanceof Error) {
264
+ // throw new WalletSignTransactionError(error.message, error);
265
+ // } else {
266
+ // throw new WalletSignTransactionError(error, new Error(error));
267
+ // }
268
+ // }
269
+ // } catch (error: any) {
270
+ // this.emit('error', error);
271
+ // throw error;
272
+ // }
273
+ // }
274
+ // async multiSign(
275
+ // transaction: Transaction,
276
+ // privateKey?: string | false,
277
+ // permissionId?: number
278
+ // ): Promise<SignedTransaction> {
279
+ // try {
280
+ // const wallet = await this.checkAndGetWallet();
281
+ // try {
282
+ // return await wallet.tronWeb.trx.multiSign(transaction, privateKey, permissionId);
283
+ // } catch (error: any) {
284
+ // if (error instanceof Error) {
285
+ // throw new WalletSignTransactionError(error.message, error);
286
+ // } else {
287
+ // throw new WalletSignTransactionError(error, new Error(error));
288
+ // }
289
+ // }
290
+ // } catch (error: any) {
291
+ // this.emit('error', error);
292
+ // throw error;
293
+ // }
294
+ // }
295
+ // async signMessage(message: string, privateKey?: string): Promise<string> {
296
+ // try {
297
+ // const wallet = await this.checkAndGetWallet();
298
+ // try {
299
+ // return await wallet.tronWeb.trx.signMessageV2(message, privateKey);
300
+ // } catch (error: any) {
301
+ // if (error instanceof Error) {
302
+ // throw new WalletSignMessageError(error.message, error);
303
+ // } else {
304
+ // throw new WalletSignMessageError(error, new Error(error));
305
+ // }
306
+ // }
307
+ // } catch (error: any) {
308
+ // this.emit('error', error);
309
+ // throw error;
310
+ // }
311
+ // }
312
+ // /**
313
+ // * Switch to target chain. If current chain is the same as target chain, the call will success immediately.
314
+ // * Available chainIds:
315
+ // * - Mainnet: 0x2b6653dc
316
+ // * - Shasta: 0x94a9059e
317
+ // * - Nile: 0xcd8690dc
318
+ // * @param chainId chainId
319
+ // */
320
+ // async switchChain(chainId: string) {
321
+ // try {
322
+ // await this._checkWallet();
323
+ // if (this.state === AdapterState.NotFound) {
324
+ // if (this.config.openUrlWhenWalletNotFound !== false && isInBrowser()) {
325
+ // window.open(this.url, '_blank');
326
+ // }
327
+ // throw new WalletNotFoundError();
328
+ // }
329
+ // if (!this._supportNewTronProtocol) {
330
+ // throw new WalletSwitchChainError("Current version of TronLink doesn't support switch chain operation.");
331
+ // }
332
+ // const wallet = this._wallet as Tron;
333
+ // try {
334
+ // await wallet.request({
335
+ // method: 'wallet_switchEthereumChain',
336
+ // params: [{ chainId }],
337
+ // });
338
+ // } catch (e: any) {
339
+ // throw new WalletSwitchChainError(e?.message || e, e instanceof Error ? e : new Error(e));
340
+ // }
341
+ // } catch (error: any) {
342
+ // this.emit('error', error);
343
+ // throw error;
344
+ // }
345
+ // }
346
+ // private async checkAndGetWallet() {
347
+ // this.checkIfOpenTronLink();
348
+ // await this._checkWallet();
349
+ // if (this.state !== AdapterState.Connected) throw new WalletDisconnectedError();
350
+ // const wallet = this._wallet;
351
+ // if (!wallet || !wallet.tronWeb) throw new WalletDisconnectedError();
352
+ // return wallet as Tron & { tronWeb: TronWeb };
353
+ // }
354
+ // private _listenTronLinkEvent() {
355
+ // this._stopListenTronLinkEvent();
356
+ // window.addEventListener('message', this._tronLinkMessageHandler);
357
+ // }
358
+ // private _stopListenTronLinkEvent() {
359
+ // window.removeEventListener('message', this._tronLinkMessageHandler);
360
+ // }
361
+ // private _tronLinkMessageHandler = (e: TronLinkMessageEvent) => {
362
+ // const message = e.data?.message;
363
+ // if (!message) {
364
+ // return;
365
+ // }
366
+ // if (message.action === 'accountsChanged') {
367
+ // setTimeout(() => {
368
+ // const preAddr = this.address || '';
369
+ // if ((this._wallet as TronLinkWallet)?.ready) {
370
+ // const address = (message.data as AccountsChangedEventData).address;
371
+ // this.setAddress(address);
372
+ // this.setState(AdapterState.Connected);
373
+ // } else {
374
+ // this.setAddress(null);
375
+ // this.setState(AdapterState.Disconnect);
376
+ // }
377
+ // this.emit('accountsChanged', this.address || '', preAddr);
378
+ // if (!preAddr && this.address) {
379
+ // this.emit('connect', this.address);
380
+ // } else if (preAddr && !this.address) {
381
+ // this.emit('disconnect');
382
+ // }
383
+ // }, 200);
384
+ // } else if (message.action === 'setNode') {
385
+ // this.emit('chainChanged', { chainId: (message.data as NetworkChangedEventData)?.node?.chainId || '' });
386
+ // } else if (message.action === 'connect') {
387
+ // const address = (this._wallet as TronLinkWallet).tronWeb?.defaultAddress?.base58 || '';
388
+ // this.setAddress(address);
389
+ // this.setState(AdapterState.Connected);
390
+ // this.emit('connect', address);
391
+ // } else if (message.action === 'disconnect') {
392
+ // this.setAddress(null);
393
+ // this.setState(AdapterState.Disconnect);
394
+ // this.emit('disconnect');
395
+ // }
396
+ // };
397
+ // private checkIfOpenTronLink() {
398
+ // const { dappName = '', dappIcon = '' } = this.config;
399
+ // if (this.config.openTronLinkAppOnMobile === false) {
400
+ // return;
401
+ // }
402
+ // if (openTronLink({ dappIcon, dappName })) {
403
+ // throw new WalletNotFoundError();
404
+ // }
405
+ // }
406
+ // // following code is for TIP-1193
407
+ // private _listenTronEvent() {
408
+ // this._stopListenTronEvent();
409
+ // this._stopListenTronLinkEvent();
410
+ // const wallet = this._wallet as Tron;
411
+ // wallet.on('chainChanged', this._onChainChanged);
412
+ // wallet.on('accountsChanged', this._onAccountsChanged);
413
+ // }
414
+ // private _stopListenTronEvent() {
415
+ // const wallet = this._wallet as Tron;
416
+ // wallet.removeListener('chainChanged', this._onChainChanged);
417
+ // wallet.removeListener('accountsChanged', this._onAccountsChanged);
418
+ // }
419
+ // private _onChainChanged: TronChainChangedCallback = (data) => {
420
+ // this.emit('chainChanged', data);
421
+ // };
422
+ // private _onAccountsChanged: TronAccountsChangedCallback = () => {
423
+ // const preAddr = this.address || '';
424
+ // const curAddr = (this._wallet?.tronWeb && this._wallet?.tronWeb.defaultAddress?.base58) || '';
425
+ // if (!curAddr) {
426
+ // // change to a new address and if it's disconnected, data will be empty
427
+ // // tronlink will emit accountsChanged many times, only process when connected
428
+ // this.setAddress(null);
429
+ // this.setState(AdapterState.Disconnect);
430
+ // } else {
431
+ // const address = curAddr as string;
432
+ // this.setAddress(address);
433
+ // this.setState(AdapterState.Connected);
434
+ // }
435
+ // this.emit('accountsChanged', this.address || '', preAddr);
436
+ // if (!preAddr && this.address) {
437
+ // this.emit('connect', this.address);
438
+ // } else if (preAddr && !this.address) {
439
+ // this.emit('disconnect');
440
+ // }
441
+ // };
442
+ // private _checkPromise: Promise<boolean> | null = null;
443
+ // /**
444
+ // * check if wallet exists by interval, the promise only resolve when wallet detected or timeout
445
+ // * @returns if wallet exists
446
+ // */
447
+ // private _checkWallet(): Promise<boolean> {
448
+ // if (this.readyState === WalletReadyState.Found) {
449
+ // return Promise.resolve(true);
450
+ // }
451
+ // if (this._checkPromise) {
452
+ // return this._checkPromise;
453
+ // }
454
+ // const interval = 100;
455
+ // const checkTronTimes = Math.floor(2000 / interval);
456
+ // const maxTimes = Math.floor(this.config.checkTimeout / interval);
457
+ // let times = 0,
458
+ // timer: ReturnType<typeof setInterval>;
459
+ // this._checkPromise = new Promise((resolve) => {
460
+ // const check = () => {
461
+ // times++;
462
+ // const isSupport = times < checkTronTimes && !isInMobileBrowser() ? supportTron() : supportTronLink();
463
+ // if (isSupport || times > maxTimes) {
464
+ // timer && clearInterval(timer);
465
+ // this._readyState = isSupport ? WalletReadyState.Found : WalletReadyState.NotFound;
466
+ // this._updateWallet();
467
+ // this.emit('readyStateChanged', this.readyState);
468
+ // resolve(isSupport);
469
+ // }
470
+ // };
471
+ // timer = setInterval(check, interval);
472
+ // check();
473
+ // });
474
+ // return this._checkPromise;
475
+ // }
476
+ // private _updateWallet = () => {
477
+ // let state = this.state;
478
+ // let address = this.address;
479
+ // if (isInMobileBrowser()) {
480
+ // if (window.tronLink) {
481
+ // this._wallet = window.tronLink;
482
+ // } else {
483
+ // this._wallet = {
484
+ // ready: !!window.tronWeb?.defaultAddress,
485
+ // tronWeb: window.tronWeb,
486
+ // request: () => Promise.resolve(true) as any,
487
+ // } as TronLinkWallet;
488
+ // }
489
+ // address = this._wallet.tronWeb?.defaultAddress?.base58 || null;
490
+ // state = address ? AdapterState.Connected : AdapterState.Disconnect;
491
+ // } else if (window.tron && window.tron.isTronLink) {
492
+ // this._supportNewTronProtocol = true;
493
+ // this._wallet = window.tron;
494
+ // this._listenTronEvent();
495
+ // if (state === AdapterState.Connected) {
496
+ // address = (this._wallet.tronWeb && this._wallet.tronWeb?.defaultAddress?.base58) || null;
497
+ // }
498
+ // state = address ? AdapterState.Connected : AdapterState.Disconnect;
499
+ // } else if (window.tronLink) {
500
+ // this._wallet = window.tronLink;
501
+ // this._listenTronLinkEvent();
502
+ // if (state === AdapterState.Connected) {
503
+ // address = this._wallet.tronWeb.defaultAddress?.base58 || null;
504
+ // }
505
+ // state = this._wallet.ready ? AdapterState.Connected : AdapterState.Disconnect;
506
+ // } else if (window.tronWeb) {
507
+ // // fake tronLink
508
+ // this._wallet = {
509
+ // ready: window.tronWeb.ready,
510
+ // tronWeb: window.tronWeb,
511
+ // request: () => Promise.resolve(true) as any,
512
+ // } as TronLinkWallet;
513
+ // address = this._wallet.tronWeb.defaultAddress?.base58 || null;
514
+ // state = this._wallet.ready ? AdapterState.Connected : AdapterState.Disconnect;
515
+ // } else {
516
+ // // no tronlink support
517
+ // this._wallet = null;
518
+ // address = null;
519
+ // state = AdapterState.NotFound;
520
+ // }
521
+ // // In TronLink App, account should be connected
522
+ // if (isInMobileBrowser() && state === AdapterState.Disconnect) {
523
+ // this.checkForWalletReadyForApp();
524
+ // }
525
+ // this.setAddress(address);
526
+ // this.setState(state);
527
+ // };
528
+ // private checkReadyInterval: ReturnType<typeof setInterval> | null = null;
529
+ // private checkForWalletReadyForApp() {
530
+ // if (this.checkReadyInterval) {
531
+ // return;
532
+ // }
533
+ // let times = 0;
534
+ // const maxTimes = Math.floor(this.config.checkTimeout / 200);
535
+ // const check = () => {
536
+ // if (window.tronLink ? window.tronLink.tronWeb?.defaultAddress : window.tronWeb?.defaultAddress) {
537
+ // this.checkReadyInterval && clearInterval(this.checkReadyInterval);
538
+ // this.checkReadyInterval = null;
539
+ // this._updateWallet();
540
+ // this.emit('connect', this.address || '');
541
+ // } else if (times > maxTimes) {
542
+ // this.checkReadyInterval && clearInterval(this.checkReadyInterval);
543
+ // this.checkReadyInterval = null;
544
+ // } else {
545
+ // times++;
546
+ // }
547
+ // };
548
+ // this.checkReadyInterval = setInterval(check, 200);
549
+ // }
550
+ // private setAddress(address: string | null) {
551
+ // this._address = address;
552
+ // }
553
+ // private setState(state: AdapterState) {
554
+ // const preState = this.state;
555
+ // if (state !== preState) {
556
+ // this._state = state;
557
+ // this.emit('stateChanged', state);
558
+ // }
559
+ // }
560
+ // }