@0xsquid/react-hooks 2.1.10 → 2.1.11-beta.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 (70) hide show
  1. package/dist/core/constants.js +97 -143
  2. package/dist/core/constants.js.map +1 -1
  3. package/dist/core/types/error.d.ts +1 -2
  4. package/dist/core/types/error.js.map +1 -1
  5. package/dist/core/types/wallet.d.ts +1 -1
  6. package/dist/core/wagmiConfig.d.ts +7 -0
  7. package/dist/core/wagmiConfig.js +48 -0
  8. package/dist/core/wagmiConfig.js.map +1 -0
  9. package/dist/hooks/tokens/useBalance.d.ts +4 -14
  10. package/dist/hooks/tokens/useBalance.js +32 -54
  11. package/dist/hooks/tokens/useBalance.js.map +1 -1
  12. package/dist/hooks/tokens/useMultiChainBalance.d.ts +1 -1
  13. package/dist/hooks/tokens/useMultiChainBalance.js +1 -1
  14. package/dist/hooks/tokens/useMultiChainBalance.js.map +1 -1
  15. package/dist/hooks/transaction/useApproval.js +57 -39
  16. package/dist/hooks/transaction/useApproval.js.map +1 -1
  17. package/dist/hooks/transaction/useEstimate.d.ts +13 -15
  18. package/dist/hooks/transaction/useEstimate.js +21 -144
  19. package/dist/hooks/transaction/useEstimate.js.map +1 -1
  20. package/dist/hooks/transaction/useExecuteTransaction.d.ts +2 -2
  21. package/dist/hooks/transaction/useExecuteTransaction.js +13 -9
  22. package/dist/hooks/transaction/useExecuteTransaction.js.map +1 -1
  23. package/dist/hooks/transaction/useGetRoute.js +4 -5
  24. package/dist/hooks/transaction/useGetRoute.js.map +1 -1
  25. package/dist/hooks/wallet/useAddToken.js +9 -7
  26. package/dist/hooks/wallet/useAddToken.js.map +1 -1
  27. package/dist/hooks/wallet/useMultiChainWallet.js +11 -11
  28. package/dist/hooks/wallet/useMultiChainWallet.js.map +1 -1
  29. package/dist/hooks/wallet/useSigner.d.ts +8 -0
  30. package/dist/hooks/wallet/useSigner.js +21 -0
  31. package/dist/hooks/wallet/useSigner.js.map +1 -0
  32. package/dist/hooks/wallet/useWallet.d.ts +1 -1
  33. package/dist/hooks/wallet/useWallet.js +1 -1
  34. package/dist/hooks/wallet/useWallet.js.map +1 -1
  35. package/dist/provider/index.js +19 -61
  36. package/dist/provider/index.js.map +1 -1
  37. package/dist/services/external/ens.js +2 -2
  38. package/dist/services/external/ens.js.map +1 -1
  39. package/dist/services/external/rpcService.d.ts +0 -6
  40. package/dist/services/external/rpcService.js +10 -61
  41. package/dist/services/external/rpcService.js.map +1 -1
  42. package/dist/services/external/secretService.js +3 -3
  43. package/dist/services/external/secretService.js.map +1 -1
  44. package/dist/services/internal/assetsService.d.ts +2 -0
  45. package/dist/services/internal/assetsService.js +2 -0
  46. package/dist/services/internal/assetsService.js.map +1 -1
  47. package/dist/services/internal/estimateService.d.ts +126 -0
  48. package/dist/services/internal/estimateService.js +204 -0
  49. package/dist/services/internal/estimateService.js.map +1 -0
  50. package/dist/services/internal/numberService.d.ts +17 -2
  51. package/dist/services/internal/numberService.js +52 -5
  52. package/dist/services/internal/numberService.js.map +1 -1
  53. package/dist/services/internal/walletService.d.ts +2 -2
  54. package/dist/services/internal/walletService.js +16 -14
  55. package/dist/services/internal/walletService.js.map +1 -1
  56. package/dist/tests/estimateService.test.d.ts +1 -0
  57. package/dist/tests/estimateService.test.js +112 -0
  58. package/dist/tests/estimateService.test.js.map +1 -0
  59. package/dist/tests/walletService.test.js +18 -0
  60. package/dist/tests/walletService.test.js.map +1 -1
  61. package/package.json +13 -13
  62. package/dist/connectors/ExodusConnector.d.ts +0 -4
  63. package/dist/connectors/ExodusConnector.js +0 -6
  64. package/dist/connectors/ExodusConnector.js.map +0 -1
  65. package/dist/connectors/LedgerLiveConnector.d.ts +0 -40
  66. package/dist/connectors/LedgerLiveConnector.js +0 -177
  67. package/dist/connectors/LedgerLiveConnector.js.map +0 -1
  68. package/dist/contracts/typechain/factories/ERC20__factory.d.ts +0 -56
  69. package/dist/contracts/typechain/factories/ERC20__factory.js +0 -324
  70. package/dist/contracts/typechain/factories/ERC20__factory.js.map +0 -1
@@ -1,78 +1,56 @@
1
1
  import { useQuery } from "@tanstack/react-query";
2
- import { ethers, utils } from "ethers";
3
- import { useAccount } from "wagmi";
2
+ import { useAccount, usePublicClient } from "wagmi";
4
3
  import { ChainType } from "@0xsquid/squid-types";
5
- import { getProvider } from "@wagmi/core";
6
4
  import { useMemo } from "react";
7
- import { ERC20__factory } from "../../contracts/typechain/factories/ERC20__factory";
5
+ import { useBalance } from "wagmi";
6
+ import { useCosmosContext } from "../../core";
8
7
  import { nativeEvmTokenAddress } from "../../core/constants";
9
- import { useCosmosContext } from "../../core/providers/CosmosProvider";
10
8
  import { keys } from "../../core/queries/queries-keys";
11
- import { useCosmosForChain } from "../../hooks/cosmos/useCosmosForChain";
12
- import { useSwap } from "../../hooks/swap/useSwap";
13
- import { useAllTokensWithBalanceForChain } from "../../hooks/tokens/useTokensWithBalance";
9
+ import { formatBNToReadable } from "../../services";
10
+ import { useCosmosForChain } from "../cosmos/useCosmosForChain";
11
+ import { useSwap } from "../swap/useSwap";
12
+ import { useAllTokensWithBalanceForChain } from "./useTokensWithBalance";
14
13
  const defaultRefreshIntervalMs = 15000;
15
- /**
16
- * Fetches the balance of a user on an EVM chain.
17
- * The balance fetching only happens if the chain and token data are available, the user is connected, and the chain type is EVM.
18
- *
19
- * @param {boolean} enabled A flag indicating whether the balance fetching is enabled or not. Defaults to true.
20
- * @param {boolean} refreshIntervalMs The interval in milliseconds at which the balance is fetched. Defaults to 15000 ms.
21
- *
22
- * @returns {Object} The react query object containing the balance data (defaults to "0").
23
- *
24
- */
25
14
  export const useEvmBalance = ({ chain, token, userAddress, enabled = true, refreshIntervalMs = defaultRefreshIntervalMs, }) => {
26
15
  const { isConnected } = useAccount();
27
- const balance = useQuery(keys().balance(chain?.chainId, token?.address, userAddress), async () => {
28
- if (!!chain &&
29
- isConnected &&
30
- !!token?.address &&
31
- chain.chainType === ChainType.EVM) {
32
- const srcProvider = getProvider({ chainId: +(chain.chainId ?? 1) });
33
- const srcTokenContract = new ethers.Contract(token?.address, ERC20__factory.abi, srcProvider);
34
- if (token.address.toLowerCase() === nativeEvmTokenAddress) {
35
- const nativeCurrencyBalance = await srcProvider.getBalance(userAddress);
36
- return utils.formatUnits(nativeCurrencyBalance, token?.decimals);
37
- }
38
- try {
39
- const tokenBalance = await srcTokenContract.balanceOf(userAddress);
40
- return utils.formatUnits(tokenBalance, token?.decimals);
41
- }
42
- catch (error) {
43
- return "0";
44
- }
45
- }
46
- else {
47
- return "0";
48
- }
49
- }, {
50
- enabled: isConnected && enabled,
51
- refetchInterval: 0 ? false : refreshIntervalMs,
52
- retry: 2,
16
+ const { data: nativeOrTokenBalance } = useBalance({
17
+ address: userAddress,
18
+ chainId: Number(chain?.chainId),
19
+ token: token?.address === nativeEvmTokenAddress
20
+ ? undefined
21
+ : token?.address,
22
+ query: {
23
+ enabled: isConnected && enabled && !!userAddress,
24
+ refetchInterval: refreshIntervalMs,
25
+ retry: 2,
26
+ },
53
27
  });
28
+ const balance = formatBNToReadable(nativeOrTokenBalance?.value ?? "0", nativeOrTokenBalance?.decimals ?? 0);
54
29
  return { balance };
55
30
  };
56
31
  export const useNativeTokenBalanceFromChain = () => {
57
- const { isConnected, address } = useAccount();
32
+ const { address, isConnected } = useAccount();
58
33
  const { fromChain } = useSwap();
59
34
  const chainId = fromChain?.chainId;
60
- const balance = useQuery(keys().nativeBalanceBigNumber(address, chainId), async () => {
61
- const srcProvider = getProvider({ chainId: +(chainId ?? 1) });
62
- const nativeCurrencyBalance = await srcProvider.getBalance(address);
63
- return nativeCurrencyBalance;
64
- }, {
65
- enabled: isConnected,
35
+ const { data: nativeBalanceWei } = useBalance({
36
+ address: address,
37
+ chainId: Number(chainId),
38
+ query: {
39
+ enabled: isConnected,
40
+ },
66
41
  });
67
- return { balance };
42
+ const nativeBalanceFormatted = formatBNToReadable(nativeBalanceWei?.value ?? "0", nativeBalanceWei?.decimals ?? 0);
43
+ return { nativeBalanceWei: nativeBalanceWei?.value, nativeBalanceFormatted };
68
44
  };
69
45
  export const useNativeTokenBalanceDestinationChain = () => {
70
46
  const { isConnected, address } = useAccount();
71
47
  const { toChain } = useSwap();
72
48
  const chainId = toChain?.chainId;
49
+ const publicClient = usePublicClient({ chainId: +(chainId ?? 1) });
73
50
  const balance = useQuery(keys().nativeBalanceBigNumber(address, chainId), async () => {
74
- const srcProvider = getProvider({ chainId: +(chainId ?? 1) });
75
- const nativeCurrencyBalance = await srcProvider.getBalance(address);
51
+ const nativeCurrencyBalance = await publicClient?.getBalance({
52
+ address: address,
53
+ });
76
54
  return nativeCurrencyBalance;
77
55
  }, {
78
56
  enabled: isConnected,
@@ -1 +1 @@
1
- {"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useBalance.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,5 @@ export declare const useMultiChainBalance: ({ chain, token, userAddress, enabled
13
13
  userAddress?: string | undefined;
14
14
  enabled?: boolean | undefined;
15
15
  }) => {
16
- balance: string | undefined;
16
+ balance: string;
17
17
  };
@@ -30,7 +30,7 @@ export const useMultiChainBalance = ({ chain, token, userAddress, enabled = true
30
30
  /**
31
31
  * Get either EVM or cosmos Balance
32
32
  */
33
- const balance = useMemo(() => chain?.chainType === ChainType.EVM ? evmBalance.data : cosmosBalance, [evmBalance.data, chain, cosmosBalance]);
33
+ const balance = useMemo(() => (chain?.chainType === ChainType.EVM ? evmBalance : cosmosBalance), [evmBalance, chain, cosmosBalance]);
34
34
  return { balance };
35
35
  };
36
36
  //# sourceMappingURL=useMultiChainBalance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMultiChainBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useMultiChainBalance.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,GAAG,IAAI,GAMf,EAAE,EAAE;IACH;;OAEG;IACH,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;QAC5C,KAAK,EAAE,KAAiB;QACxB,KAAK;QACL,WAAW,EAAE,WAAW,IAAI,EAAE;QAC9B,OAAO,EAAE,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,IAAI,OAAO;KACvD,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC;QAClD,SAAS,EAAE,KAAoB;QAC/B,KAAK;QACL,WAAW;KACZ,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EACtE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CACxC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC"}
1
+ {"version":3,"file":"useMultiChainBalance.js","sourceRoot":"","sources":["../../../src/hooks/tokens/useMultiChainBalance.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,KAAK,EACL,KAAK,EACL,WAAW,EACX,OAAO,GAAG,IAAI,GAMf,EAAE,EAAE;IACH;;OAEG;IACH,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC;QAC5C,KAAK,EAAE,KAAiB;QACxB,KAAK;QACL,WAAW,EAAE,WAAW,IAAI,EAAE;QAC9B,OAAO,EAAE,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,IAAI,OAAO;KACvD,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC;QAClD,SAAS,EAAE,KAAoB;QAC/B,KAAK;QACL,WAAW;KACZ,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,EACvE,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,CAAC,CACnC,CAAC;IAEF,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC,CAAC"}
@@ -1,15 +1,17 @@
1
- // import type { TransactionResponse } from "@0xsquid/squid-types/ethers";
2
1
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
- import { constants, ethers } from "ethers";
4
- import { useSigner } from "wagmi";
2
+ import { usePublicClient, useWalletClient } from "wagmi";
5
3
  import { getPrefixKey, keys, QueryKeys } from "../../core/queries/queries-keys";
4
+ import { nativeEvmTokenAddress } from "../../core/constants";
6
5
  import { useSquidStore } from "../store/useSquidStore";
7
6
  import { useSwap } from "../swap/useSwap";
8
7
  import { useMultiChainWallet } from "../wallet/useMultiChainWallet";
8
+ import { useSigner } from "../wallet/useSigner";
9
9
  export const useApproval = ({ squidRoute, }) => {
10
- const signer = useSigner();
10
+ const { data: walletClient } = useWalletClient();
11
+ const publicClient = usePublicClient();
11
12
  const queryClient = useQueryClient();
12
13
  const squid = useSquidStore((state) => state.squid);
14
+ const { evmSigner } = useSigner();
13
15
  const { fromChain, fromToken } = useSwap();
14
16
  const { connectedAddress: { address: sourceUserAddress }, } = useMultiChainWallet(fromChain);
15
17
  /**
@@ -20,6 +22,9 @@ export const useApproval = ({ squidRoute, }) => {
20
22
  */
21
23
  const routeApproved = useQuery(keys().routeApproved(squidRoute), async () => {
22
24
  try {
25
+ if (squidRoute?.params.fromToken === nativeEvmTokenAddress) {
26
+ return true;
27
+ }
23
28
  const { isApproved } = await squid.isRouteApproved({
24
29
  route: squidRoute,
25
30
  sender: sourceUserAddress,
@@ -41,44 +46,54 @@ export const useApproval = ({ squidRoute, }) => {
41
46
  // ```
42
47
  // This is why we had an unpredictable gas error for USDT approvals
43
48
  // So it needs a custom gas limit
49
+ //
50
+ // TODO: We're only doing it for USDT on Ethereum Mainnet, need to check if it's needed for USDT on other chains
44
51
  const approveSpecificTokenToZero = async (token) => {
45
- if (signer.data &&
52
+ if (walletClient &&
46
53
  token.symbol.toLowerCase() === "usdt" &&
47
54
  token.chainId === "1" &&
48
55
  fromToken) {
49
- const squidRouter = "0xce16F69375520ab01377ce7B88f5BA8C48F8D666";
50
- const usdtContract = new ethers.Contract(fromToken.address, [
51
- {
52
- constant: false,
53
- inputs: [
54
- { name: "_spender", type: "address" },
55
- { name: "_value", type: "uint256" },
56
- ],
57
- name: "approve",
58
- outputs: [],
59
- payable: false,
60
- stateMutability: "nonpayable",
61
- type: "function",
62
- },
63
- {
64
- constant: true,
65
- inputs: [
66
- { name: "_owner", type: "address" },
67
- { name: "_spender", type: "address" },
56
+ const fromChainRouterAddress = fromChain?.squidContracts.squidRouter;
57
+ const allowance = await publicClient?.readContract({
58
+ address: fromToken.address,
59
+ abi: [
60
+ {
61
+ constant: true,
62
+ inputs: [
63
+ { name: "_owner", type: "address" },
64
+ { name: "_spender", type: "address" },
65
+ ],
66
+ name: "allowance",
67
+ outputs: [{ name: "remaining", type: "uint256" }],
68
+ type: "function",
69
+ },
70
+ ],
71
+ functionName: "allowance",
72
+ args: [
73
+ sourceUserAddress,
74
+ fromChainRouterAddress,
75
+ ],
76
+ });
77
+ if (allowance && BigInt(allowance) > 0n && publicClient) {
78
+ const { request } = await publicClient.simulateContract({
79
+ address: fromToken.address,
80
+ abi: [
81
+ {
82
+ constant: false,
83
+ inputs: [
84
+ { name: "_spender", type: "address" },
85
+ { name: "_value", type: "uint256" },
86
+ ],
87
+ name: "approve",
88
+ outputs: [],
89
+ type: "function",
90
+ },
68
91
  ],
69
- name: "allowance",
70
- outputs: [{ name: "remaining", type: "uint256" }],
71
- payable: false,
72
- stateMutability: "view",
73
- type: "function",
74
- },
75
- ], signer.data);
76
- // Get approval amount from usdt contract
77
- const allowance = (await usdtContract.allowance(sourceUserAddress, squidRouter));
78
- // If allowance is greater than 0, set it to 0
79
- if (allowance.gt(constants.Zero)) {
80
- const approveTx = await usdtContract.approve(squidRouter, constants.Zero);
81
- await approveTx.wait();
92
+ functionName: "approve",
93
+ args: [fromChainRouterAddress, 0n],
94
+ account: sourceUserAddress,
95
+ });
96
+ await walletClient.writeContract(request);
82
97
  }
83
98
  }
84
99
  return true;
@@ -88,11 +103,14 @@ export const useApproval = ({ squidRoute, }) => {
88
103
  */
89
104
  const approveRoute = useMutation(async () => {
90
105
  try {
91
- if (!!squidRoute && signer.data && fromToken) {
106
+ if (fromToken?.address === nativeEvmTokenAddress) {
107
+ return true;
108
+ }
109
+ if (!!squidRoute && walletClient && fromToken && evmSigner) {
92
110
  await approveSpecificTokenToZero(fromToken);
93
111
  const approved = await squid?.approveRoute({
94
112
  route: squidRoute,
95
- signer: signer.data,
113
+ signer: evmSigner,
96
114
  // For security reasons, we don't want to allow infinite approvals in our frontends
97
115
  executionSettings: {
98
116
  infiniteApproval: false,
@@ -1 +1 @@
1
- {"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useApproval.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAGhF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,UAAU,GAGX,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC;IAE3C,MAAM,EACJ,gBAAgB,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,GACjD,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,aAAa,GAAG,QAAQ,CAC5B,IAAI,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,EAChC,KAAK,IAAI,EAAE;QACT,IAAI;YACF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,KAAM,CAAC,eAAe,CAAC;gBAClD,KAAK,EAAE,UAAW;gBAClB,MAAM,EAAE,iBAAkB;aAC3B,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;SACnB;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,KAAK,CAAC;SACd;IACH,CAAC,EACD;QACE,OAAO,EAAE,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,iBAAiB;KAC7C,CACF,CAAC;IAEF,qDAAqD;IACrD,MAAM;IACN,wEAAwE;IACxE,oEAAoE;IACpE,4DAA4D;IAC5D,qEAAqE;IACrE,MAAM;IACN,mEAAmE;IACnE,iCAAiC;IACjC,MAAM,0BAA0B,GAAG,KAAK,EAAE,KAAY,EAAE,EAAE;QACxD,IACE,MAAM,CAAC,IAAI;YACX,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM;YACrC,KAAK,CAAC,OAAO,KAAK,GAAG;YACrB,SAAS,EACT;YACA,MAAM,WAAW,GAAG,4CAA4C,CAAC;YACjE,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CACtC,SAAS,CAAC,OAAO,EACjB;gBACE;oBACE,QAAQ,EAAE,KAAK;oBACf,MAAM,EAAE;wBACN,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;wBACrC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;qBACpC;oBACD,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,KAAK;oBACd,eAAe,EAAE,YAAY;oBAC7B,IAAI,EAAE,UAAU;iBACjB;gBACD;oBACE,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE;wBACN,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;wBACnC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;qBACtC;oBACD,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;oBACjD,OAAO,EAAE,KAAK;oBACd,eAAe,EAAE,MAAM;oBACvB,IAAI,EAAE,UAAU;iBACjB;aACF,EACD,MAAM,CAAC,IAAI,CACZ,CAAC;YAEF,yCAAyC;YACzC,MAAM,SAAS,GAAG,CAAC,MAAM,YAAY,CAAC,SAAS,CAC7C,iBAAiB,EACjB,WAAW,CACZ,CAAc,CAAC;YAEhB,8CAA8C;YAC9C,IAAI,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAChC,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAC1C,WAAW,EACX,SAAS,CAAC,IAAI,CACf,CAAC;gBACF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;aACxB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF;;OAEG;IACH,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,IAAI,EAAE;QACT,IAAI;YACF,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE;gBAC5C,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;gBAE5C,MAAM,QAAQ,GAAG,MAAM,KAAK,EAAE,YAAY,CAAC;oBACzC,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,MAAM,CAAC,IAAI;oBACnB,mFAAmF;oBACnF,iBAAiB,EAAE;wBACjB,gBAAgB,EAAE,KAAK;qBACxB;iBACF,CAAC,CAAC;gBAEH,OAAO,QAAQ,CAAC;aACjB;YACD,OAAO,KAAK,CAAC;SACd;QAAC,OAAO,KAAK,EAAE;YACd,uDAAuD;YACvD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;SACd;IACH,CAAC,EACD;QACE,SAAS,EAAE,GAAG,EAAE;YACd,WAAW,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACvE,CAAC;KACF,CACF,CAAC;IAEF,OAAO;QACL,aAAa;QACb,YAAY;KACb,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"useApproval.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useApproval.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,10 @@
1
1
  import { RouteResponse } from "@0xsquid/sdk/dist/types";
2
- import type { FeeCost, GasCost } from "@0xsquid/squid-types";
3
- import { BigNumber } from "ethers";
4
2
  export declare const useEstimate: (squidRoute?: RouteResponse["route"]) => {
5
3
  balanceFormatted: string;
6
4
  totalWithRefundEstimate: {
7
5
  totalAmount: string;
8
6
  totalAmountUSD: number;
9
- feeToken: import("@0xsquid/squid-types").Token | undefined;
7
+ feeToken: import("@0xsquid/squid-types/dist/tokens").Token | undefined;
10
8
  };
11
9
  proposedGasDestinationAmount: {
12
10
  value: number;
@@ -14,29 +12,29 @@ export declare const useEstimate: (squidRoute?: RouteResponse["route"]) => {
14
12
  };
15
13
  swapAmountExceedsLimit: boolean;
16
14
  enoughBalanceToSwap: boolean;
17
- fromToken: import("@0xsquid/squid-types").Token | undefined;
15
+ fromToken: any;
18
16
  fromAmount: string | undefined;
19
17
  fromAmountFormatted: string;
20
- sourceChainNativeToken: import("@0xsquid/squid-types").Token | undefined;
21
- destChainNativeToken: import("@0xsquid/squid-types").Token | undefined;
18
+ sourceChainNativeToken: any;
19
+ destChainNativeToken: any;
22
20
  toAmountUSD: string | undefined;
23
21
  toAmountUSDFloat: number;
24
22
  exchangeRate: string;
25
23
  toAmountMinUSD: string;
26
24
  toAmountMin: string;
27
25
  toAmount: string;
28
- allFeeCosts: FeeCost[];
29
- allGasCosts: GasCost[];
30
- firstFeeCost: FeeCost | undefined;
31
- firstGasCost: GasCost | undefined;
32
- expressFeeCost: FeeCost | undefined;
33
- integratorFeeCost: FeeCost | undefined;
34
- expectedGasRefundCost: BigNumber;
26
+ allFeeCosts: import("@0xsquid/squid-types/dist/fees").FeeCost[];
27
+ allGasCosts: import("@0xsquid/squid-types/dist/fees").GasCost[];
28
+ firstFeeCost: import("@0xsquid/squid-types/dist/fees").FeeCost | undefined;
29
+ firstGasCost: import("@0xsquid/squid-types/dist/fees").GasCost | undefined;
30
+ expressFeeCost: import("@0xsquid/squid-types/dist/fees").FeeCost | undefined;
31
+ integratorFeeCost: import("@0xsquid/squid-types/dist/fees").FeeCost | undefined;
32
+ expectedGasRefundCost: bigint;
35
33
  expectedGasRefundCostUSD: string;
36
34
  sameTokenBetweenFees: boolean;
37
35
  isFromTokenNative: boolean;
38
- totalNativeFees: BigNumber;
39
- totalFeesInNativeTokenPlusRatio: BigNumber;
36
+ totalNativeFees: bigint;
37
+ totalFeesInNativeTokenPlusRatio: bigint;
40
38
  fromBalanceEnoughToSwap: boolean;
41
39
  minAmountValueWarnMsg: string | undefined;
42
40
  estimatedRouteDuration: {
@@ -1,131 +1,34 @@
1
- import { ChainType } from "@0xsquid/squid-types";
2
- import { BigNumber, constants } from "ethers";
3
- import { formatUnits } from "ethers/lib/utils";
4
1
  import { useMemo } from "react";
5
- import { gasRefundMultiplier, limitTradeSizeUsd } from "../../core/constants";
6
- import { useNativeTokenBalanceFromChain } from "../../hooks/tokens/useBalance";
2
+ import { limitTradeSizeUsd } from "../../core/constants";
7
3
  import { useSquidTokens } from "../../hooks/tokens/useSquidTokens";
8
- import { convertTokenAmountToUSD, formatSeconds } from "../../services";
9
- import { formatUnitsRounded } from "../../services/internal/numberService";
4
+ import { calculateEstimateResults, calculateTotalWithRefundEstimate, getProposedGasDestinationAmount, } from "../../services/internal/estimateService";
10
5
  import { useConfigStore } from "../store/useSquidStore";
11
6
  import { useSwap } from "../swap/useSwap";
7
+ import { useNativeTokenBalanceFromChain } from "../tokens/useBalance";
12
8
  import { useMultiChainBalance } from "../tokens/useMultiChainBalance";
13
9
  import { useSingleTokenPrice } from "../tokens/useSingleTokenPrice";
14
10
  import { useEstimateExpress } from "./useExpress";
15
11
  export const useEstimate = (squidRoute) => {
16
12
  const { collectFees, advanced } = useConfigStore((state) => state.config);
17
- const { balance: nativeTokenBalanceFromChain } = useNativeTokenBalanceFromChain();
13
+ const { nativeBalanceWei } = useNativeTokenBalanceFromChain();
18
14
  const { tokens } = useSquidTokens();
19
15
  const { fromChain, toChain } = useSwap();
20
16
  const { expressActivatedUI } = useEstimateExpress();
21
- const estimateResults = useMemo(() => {
22
- const fromToken = tokens.find((t) => t.chainId === squidRoute?.params.fromChain &&
23
- t.address === squidRoute?.params.fromToken);
24
- const fromAmount = squidRoute?.estimate?.fromAmount;
25
- const fromAmountFormatted = fromAmount
26
- ? formatUnits(fromAmount, fromToken?.decimals)
27
- : "";
28
- const sourceChainNativeToken = tokens.find((t) => t.symbol === fromChain?.nativeCurrency.symbol &&
29
- t.chainId == fromChain?.chainId);
30
- const destChainNativeToken = tokens.find((t) => t.symbol === toChain?.nativeCurrency.symbol &&
31
- t.chainId == toChain?.chainId);
32
- const toAmountUSD = squidRoute?.estimate?.toAmountUSD;
33
- const toAmountUSDFloat = toAmountUSD
34
- ? parseFloat(toAmountUSD.replace(/,/g, ""))
35
- : 0;
36
- const exchangeRate = squidRoute?.estimate.exchangeRate ?? "0";
37
- const toAmountMinUSD = squidRoute?.estimate.toAmountMinUSD ?? "0";
38
- const toAmountMin = formatUnits(squidRoute?.estimate.toAmountMin ?? "0", squidRoute?.estimate.toToken.decimals);
39
- const toAmount = formatUnitsRounded(squidRoute?.estimate.toAmount ?? "0", squidRoute?.estimate.toToken.decimals, 14);
40
- const estimate = squidRoute?.estimate;
41
- const allFeeCosts = estimate?.feeCosts ?? [];
42
- const allGasCosts = estimate?.gasCosts ?? [];
43
- const firstFeeCost = allFeeCosts.length > 0 ? allFeeCosts[0] : undefined;
44
- const firstGasCost = allGasCosts.length > 0 ? allGasCosts[0] : undefined;
45
- const expressFeeCost = allFeeCosts.find((f) => f.name === "Boost fee");
46
- const integratorFeeCost = allFeeCosts.length > 0 && collectFees
47
- ? allFeeCosts.find((f) => f.name === "Integrator Fee")
48
- : undefined;
49
- const expectedGasRefundCost = BigNumber.from(firstFeeCost?.amount ?? "0")
50
- .mul(fromChain?.chainType === ChainType.COSMOS ? 0 : gasRefundMultiplier)
51
- .div(100);
52
- const expectedGasRefundCostUSD = convertTokenAmountToUSD(formatUnits(expectedGasRefundCost, firstFeeCost?.token.decimals ?? "0"), firstFeeCost?.token.usdPrice ?? "0");
53
- const sameTokenBetweenFees = firstFeeCost?.token.address === firstGasCost?.token.address &&
54
- firstFeeCost?.token.chainId === firstGasCost?.token.chainId;
55
- const isFromTokenNative = fromToken?.symbol === fromChain?.nativeCurrency.symbol;
56
- const totalNativeFees = BigNumber.from(expressFeeCost?.amount ?? constants.Zero).add(sameTokenBetweenFees
57
- ? BigNumber.from(firstFeeCost?.amount ?? constants.Zero).add(BigNumber.from(firstGasCost?.amount ?? constants.Zero))
58
- : BigNumber.from(firstGasCost?.amount ?? constants.Zero));
59
- const totalFeesInNativeTokenPlusRatio = totalNativeFees.mul(105).div(100);
60
- const fromBalanceEnoughToSwap = isFromTokenNative
61
- ? BigNumber.from(fromAmount ?? constants.Zero)
62
- .add(totalFeesInNativeTokenPlusRatio)
63
- .lte(nativeTokenBalanceFromChain.data ?? constants.Zero)
64
- : totalFeesInNativeTokenPlusRatio.lte(nativeTokenBalanceFromChain.data ?? constants.Zero);
65
- const minAmountValueWarnMsg = isFromTokenNative
66
- ? (() => {
67
- const fromBalance = nativeTokenBalanceFromChain.data ?? constants.Zero;
68
- const minAmount = fromBalance.sub(totalFeesInNativeTokenPlusRatio);
69
- return minAmount.gt(constants.Zero)
70
- ? formatUnits(minAmount, sourceChainNativeToken?.decimals ?? 18)
71
- : "0";
72
- })()
73
- : undefined;
74
- const isSingleChainRoute = fromChain?.chainId === toChain?.chainId;
75
- const estimatedRouteDuration = (() => {
76
- const fallbackDuration = 20;
77
- let durationInSeconds = fallbackDuration;
78
- if (squidRoute?.estimate?.estimatedRouteDuration) {
79
- durationInSeconds = squidRoute.estimate.estimatedRouteDuration;
80
- }
81
- else if (isSingleChainRoute) {
82
- durationInSeconds = 1;
83
- }
84
- else {
85
- durationInSeconds = expressActivatedUI
86
- ? fromChain?.estimatedBoostRouteDuration ?? fallbackDuration
87
- : fromChain?.estimatedRouteDuration ?? fallbackDuration;
88
- }
89
- return {
90
- seconds: durationInSeconds,
91
- format: (sTemplate = "s", mTemplate = "m", hTemplate = "h") => formatSeconds(durationInSeconds, sTemplate, mTemplate, hTemplate),
92
- };
93
- })();
94
- return {
95
- fromToken,
96
- fromAmount,
97
- fromAmountFormatted,
98
- sourceChainNativeToken,
99
- destChainNativeToken,
100
- toAmountUSD,
101
- toAmountUSDFloat,
102
- exchangeRate,
103
- toAmountMinUSD,
104
- toAmountMin,
105
- toAmount,
106
- allFeeCosts,
107
- allGasCosts,
108
- firstFeeCost,
109
- firstGasCost,
110
- expressFeeCost,
111
- integratorFeeCost,
112
- expectedGasRefundCost,
113
- expectedGasRefundCostUSD,
114
- sameTokenBetweenFees,
115
- isFromTokenNative,
116
- totalNativeFees,
117
- totalFeesInNativeTokenPlusRatio,
118
- fromBalanceEnoughToSwap,
119
- minAmountValueWarnMsg,
120
- estimatedRouteDuration,
121
- };
122
- }, [
17
+ const estimateResults = useMemo(() => calculateEstimateResults({
18
+ squidRoute,
19
+ tokens,
20
+ fromChain,
21
+ toChain,
22
+ collectFees: !!collectFees && collectFees.fee > 0,
23
+ nativeTokenBalanceFromChainWei: nativeBalanceWei ?? BigInt("0"),
24
+ expressActivatedUI,
25
+ }), [
123
26
  squidRoute,
124
27
  tokens,
125
28
  fromChain,
126
29
  toChain,
127
30
  collectFees,
128
- nativeTokenBalanceFromChain,
31
+ nativeBalanceWei,
129
32
  expressActivatedUI,
130
33
  ]);
131
34
  const balanceFormatted = useMultiChainBalance({
@@ -135,39 +38,13 @@ export const useEstimate = (squidRoute) => {
135
38
  enabled: !!squidRoute,
136
39
  }).balance ?? "0";
137
40
  const { getUSDValue } = useSingleTokenPrice(estimateResults.firstFeeCost?.token);
138
- const totalWithRefundEstimate = useMemo(() => {
139
- const { firstFeeCost, expressFeeCost, expectedGasRefundCost } = estimateResults;
140
- const firstFee = {
141
- BN: BigNumber.from(firstFeeCost?.amount ?? "0"),
142
- token: firstFeeCost?.token,
143
- };
144
- const expressFee = {
145
- BN: BigNumber.from(expressFeeCost?.amount ?? "0"),
146
- token: expressFeeCost?.token,
147
- };
148
- const totalBnbAmount = firstFee.BN.add(expressFee.BN).sub(expectedGasRefundCost);
149
- const totalAmount = formatUnits(totalBnbAmount, firstFee.token?.decimals ?? 18);
150
- const formattedRefundCost = formatUnits(expectedGasRefundCost, firstFeeCost?.token.decimals);
151
- const formattedRefundCostUSD = getUSDValue(formattedRefundCost);
152
- const totalAmountUSD = +(firstFeeCost?.amountUsd ?? 0) +
153
- +(expressFeeCost?.amountUsd ?? 0) -
154
- +(formattedRefundCostUSD ?? 0);
155
- return { totalAmount, totalAmountUSD, feeToken: firstFeeCost?.token };
156
- }, [estimateResults, getUSDValue]);
157
- const proposedGasDestinationAmount = useMemo(() => {
158
- const nativeToken = estimateResults.destChainNativeToken?.symbol;
159
- const gasAmounts = {
160
- GLMR: 5.289,
161
- ETH: 0.0009,
162
- AVAX: 0.115,
163
- BNB: 0.00425,
164
- FTM: 4.45,
165
- CELO: 3.052,
166
- KAVA: 2.339,
167
- MATIC: 1.795,
168
- };
169
- return { value: gasAmounts[nativeToken ?? ""] ?? 0, currency: nativeToken };
170
- }, [estimateResults.destChainNativeToken]);
41
+ const totalWithRefundEstimate = useMemo(() => calculateTotalWithRefundEstimate(estimateResults.firstFeeCost, estimateResults.expressFeeCost, estimateResults.expectedGasRefundCost, getUSDValue), [
42
+ estimateResults.firstFeeCost,
43
+ estimateResults.expressFeeCost,
44
+ estimateResults.expectedGasRefundCost,
45
+ getUSDValue,
46
+ ]);
47
+ const proposedGasDestinationAmount = useMemo(() => getProposedGasDestinationAmount(estimateResults.destChainNativeToken?.symbol), [estimateResults.destChainNativeToken]);
171
48
  const swapAmountExceedsLimit = advanced?.disableTradeLimit
172
49
  ? false
173
50
  : estimateResults.toAmountUSDFloat > limitTradeSizeUsd;
@@ -1 +1 @@
1
- {"version":3,"file":"useEstimate.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useEstimate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useEstimate.js","sourceRoot":"","sources":["../../../src/hooks/transaction/useEstimate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { RouteResponse } from "@0xsquid/squid-types";
2
- import type { TransactionReceipt } from "@ethersproject/abstract-provider";
2
+ import { TransactionReceipt } from "ethers";
3
3
  import type { TransactionParams } from "../../core/types/transaction";
4
4
  declare enum ExecutionState {
5
5
  NOT_ENOUGH_BALANCE = "NOT_ENOUGH_BALANCE",
@@ -7,7 +7,7 @@ declare enum ExecutionState {
7
7
  READY = "READY"
8
8
  }
9
9
  export declare const useExecuteTransaction: (squidRoute?: RouteResponse["route"]) => {
10
- swapQuery: import("@tanstack/react-query").UseMutationResult<boolean | TransactionReceipt, any, void, unknown>;
10
+ swapQuery: import("@tanstack/react-query").UseMutationResult<boolean | TransactionReceipt | null, any, void, unknown>;
11
11
  currentTransaction: TransactionParams | undefined;
12
12
  fromToken: import("@0xsquid/squid-types").Token | undefined;
13
13
  toToken: import("@0xsquid/squid-types").Token | undefined;