Skip to content

Commit e1f97e4

Browse files
authored
fix: usdt abi (#1110)
* fix: usdt abi * chore: rm l2s
1 parent dbcf2fd commit e1f97e4

File tree

7 files changed

+27
-22
lines changed

7 files changed

+27
-22
lines changed

src/components/pages/vaults/components/widget/deposit/ApprovalOverlay.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Button } from '@shared/components/Button'
2+
import { getApproveAbi } from '@shared/utils/approve'
23
import { type FC, useCallback, useEffect, useState } from 'react'
3-
import { erc20Abi, maxUint256 } from 'viem'
4+
import { maxUint256 } from 'viem'
45
import { useAccount, useChainId, useSwitchChain, useWaitForTransactionReceipt, useWriteContract } from 'wagmi'
56
import { InfoOverlay } from '../shared/InfoOverlay'
67
import { AnimatedCheckmark, ErrorIcon, Spinner } from '../shared/TransactionStateIndicators'
@@ -83,7 +84,7 @@ export const ApprovalOverlay: FC<ApprovalOverlayProps> = ({
8384
try {
8485
await writeContractAsync({
8586
address: tokenAddress,
86-
abi: erc20Abi,
87+
abi: getApproveAbi(tokenAddress),
8788
functionName: 'approve',
8889
args: [spenderAddress, amount],
8990
chainId

src/components/pages/vaults/hooks/actions/useDirectDeposit.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import type { UseWidgetDepositFlowReturn } from '@pages/vaults/types'
22
import { erc4626Abi } from '@shared/contracts/abi/4626.abi'
33
import { vaultAbi } from '@shared/contracts/abi/vaultV2.abi'
44
import { toAddress } from '@shared/utils'
5+
import { getApproveAbi } from '@shared/utils/approve'
56
import type { Address } from 'viem'
6-
import { erc20Abi } from 'viem'
77
import { type UseSimulateContractReturnType, useReadContract, useSimulateContract } from 'wagmi'
88
import { useTokenAllowance } from '../useTokenAllowance'
99

@@ -44,7 +44,7 @@ export function useDirectDeposit(params: UseDirectDepositParams): UseWidgetDepos
4444

4545
// Prepare approve transaction using useSimulateContract
4646
const prepareApprove: UseSimulateContractReturnType = useSimulateContract({
47-
abi: erc20Abi,
47+
abi: getApproveAbi(params.assetAddress),
4848
functionName: 'approve',
4949
address: params.assetAddress,
5050
args: params.amount > 0n && params.vaultAddress ? [params.vaultAddress, params.amount] : undefined,

src/components/pages/vaults/hooks/actions/useDirectStake.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { UseWidgetDepositFlowReturn } from '@pages/vaults/types'
2+
import { getApproveAbi } from '@shared/utils/approve'
23
import type { Address } from 'viem'
3-
import { erc20Abi } from 'viem'
44
import { type UseSimulateContractReturnType, useReadContract, useSimulateContract } from 'wagmi'
55
import { useTokenAllowance } from '../useTokenAllowance'
66
import { getDirectStakeCall, getStakePreviewCall, normalizeStakingSource } from './stakingAdapter'
@@ -50,7 +50,7 @@ export function useDirectStake(params: UseDirectStakeParams): UseWidgetDepositFl
5050

5151
// Prepare approve transaction
5252
const prepareApprove: UseSimulateContractReturnType = useSimulateContract({
53-
abi: erc20Abi,
53+
abi: getApproveAbi(params.vaultAddress),
5454
functionName: 'approve',
5555
address: params.vaultAddress,
5656
args: params.amount > 0n && params.stakingAddress ? [params.stakingAddress, params.amount] : undefined,

src/components/pages/vaults/hooks/actions/useYvUsdLockedZapDeposit.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import type { UseWidgetDepositFlowReturn } from '@pages/vaults/types'
22
import { YVUSD_LOCKED_ZAP_ADDRESS } from '@pages/vaults/utils/yvUsd'
33
import { yvUsdLockedZapAbi } from '@shared/contracts/abi/yvUsdLockedZap.abi'
44
import { toAddress } from '@shared/utils'
5+
import { getApproveAbi } from '@shared/utils/approve'
56
import type { Address } from 'viem'
6-
import { erc20Abi } from 'viem'
77
import type { UseSimulateContractReturnType } from 'wagmi'
88
import { useReadContract, useSimulateContract } from 'wagmi'
99
import { useTokenAllowance } from '../useTokenAllowance'
@@ -40,7 +40,7 @@ export function useYvUsdLockedZapDeposit(params: UseYvUsdLockedZapDepositParams)
4040
})
4141

4242
const prepareApprove: UseSimulateContractReturnType = useSimulateContract({
43-
abi: erc20Abi,
43+
abi: getApproveAbi(params.depositToken),
4444
functionName: 'approve',
4545
address: params.depositToken,
4646
args: params.amount > 0n ? [YVUSD_LOCKED_ZAP_ADDRESS, params.amount] : undefined,

src/components/pages/vaults/hooks/solvers/useSolverEnso.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { TNormalizedBN } from '@shared/types'
22
import { isZeroAddress, toNormalizedBN } from '@shared/utils'
3+
import { getApproveAbi } from '@shared/utils/approve'
34
import { useCallback, useState } from 'react'
45
import type { Address, Hex } from 'viem'
5-
import { erc20Abi } from 'viem'
66
import { type UseSimulateContractReturnType, useSimulateContract } from 'wagmi'
77
import { useTokenAllowance } from '../useTokenAllowance'
88

@@ -171,7 +171,7 @@ export const useSolverEnso = ({
171171
const isAllowanceSufficient = !allowanceSpender || allowance >= amountIn
172172
const prepareApproveEnabled = routerAddress && !isAllowanceSufficient && isValidInput && enabled
173173
const prepareApprove: UseSimulateContractReturnType = useSimulateContract({
174-
abi: erc20Abi,
174+
abi: getApproveAbi(tokenIn),
175175
functionName: 'approve',
176176
address: tokenIn,
177177
args: routerAddress ? [routerAddress, amountIn] : undefined,

src/components/shared/contracts/abi/usdt.abi.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,7 @@ export const usdtAbi = [
7676
type: 'uint256'
7777
}
7878
],
79-
outputs: [
80-
{
81-
name: '',
82-
type: 'bool'
83-
}
84-
]
79+
outputs: []
8580
},
8681
{
8782
type: 'function',
@@ -182,12 +177,7 @@ export const usdtAbi = [
182177
type: 'uint256'
183178
}
184179
],
185-
outputs: [
186-
{
187-
name: '',
188-
type: 'bool'
189-
}
190-
]
180+
outputs: []
191181
}
192182
] as const
193183

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { usdtAbi } from '@shared/contracts/abi/usdt.abi'
2+
import { toAddress } from '@shared/utils/tools.address'
3+
import type { Address } from 'viem'
4+
import { erc20Abi } from 'viem'
5+
6+
const TOKENS_WITH_NON_STANDARD_APPROVE_ABI = new Set([toAddress('0xdAC17F958D2ee523a2206206994597C13D831ec7')])
7+
8+
export function getApproveAbi(tokenAddress?: Address) {
9+
if (!tokenAddress) {
10+
return erc20Abi
11+
}
12+
13+
return TOKENS_WITH_NON_STANDARD_APPROVE_ABI.has(toAddress(tokenAddress)) ? usdtAbi : erc20Abi
14+
}

0 commit comments

Comments
 (0)