import { parseAbi } from "viem";
export const routerAbi = parseAbi([
"function previewDeposit(address yVault, uint256 amount) view returns (uint256 expectedShares)",
"function previewRedeem(address yVault, uint256 yShares) view returns (uint256 assets)",
"function previewWithdraw(address yVault, uint256 assets) view returns (uint256 ySharesNeeded)",
"function previewClaim(address yVault, uint256 requestId) view returns (bool isClaimable, uint256 maxAssetsOut)",
"function maxRedeemableShares(address yVault) view returns (uint256 maxShares)",
"function deposit(address yVault, uint256 amount, uint256 minSharesOut) returns (uint256 yShares)",
"function depositWithPermit(address yVault, uint256 amount, address receiver, uint256 minSharesOut, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns (uint256 yShares)",
"function depositWithReferral(address yVault, uint256 amount, uint256 minSharesOut, bytes32 referralCode) returns (uint256 yShares)",
"function depositWithPermitAndReferral(address yVault, uint256 amount, address receiver, uint256 minSharesOut, bytes32 referralCode, uint256 deadline, uint8 v, bytes32 r, bytes32 s) returns (uint256 yShares)",
"function redeem(address yVault, uint256 yShares, uint256 minAssetsOut) returns (uint256 requestId)"
]);
export const erc20Abi = parseAbi([
"function balanceOf(address account) view returns (uint256)",
"function allowance(address owner, address spender) view returns (uint256)",
"function approve(address spender, uint256 amount) returns (bool)",
"function nonces(address owner) view returns (uint256)",
"function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)"
]);
export const vaultReadAbi = parseAbi([
"function token() view returns (address)",
"function pricePerShare() view returns (uint256)",
"function maxAvailableShares() view returns (uint256)",
"function decimals() view returns (uint8)"
]);
export const cooldownVaultAbi = parseAbi([
"function asset() view returns (address)",
"function cooldownPeriod() view returns (uint256)",
"function maxLossThresholdBps() view returns (uint256)",
"function claim(uint256 requestId, uint256 maxLossBps) returns (uint256 claimable)"
]);