Contract Integration
Examples for integrating with YieldFi v3 smart contracts. The v3 contracts use a Manager contract for deposits/redemptions and Vault contracts (ERC-4626) for vault tokens.
Getting V3 Contract ABIs
V3 contract ABIs are included in the SDK package:
import ManagerV3ABI from "yieldfi-sdk/abis/v3/Manager.json";
import VaultABI from "yieldfi-sdk/abis/v3/Vault.json";Or import from the abis directory in your project:
import ManagerV3ABI from "./abis/v3/Manager.json";
import VaultABI from "./abis/v3/Vault.json";Deposit to Vault
Deposit assets to a v3 vault using the Manager contract.
import {
connectManagerV3,
connectVault,
getContractAddresses,
Chain,
} from "yieldfi-sdk";
import { ethers } from "ethers";
import ManagerV3ABI from "yieldfi-sdk/abis/v3/Manager.json";
// Request Redemption (V3)
//Request redemption from a v3 vault. Shares are locked in a queue until processed.
//### Using Wagmi
import { connectManagerV3, getContractAddresses, Chain } from "yieldfi-sdk";
import { ethers } from "ethers";
import { useAccount, useWalletClient } from "wagmi";
import ManagerV3ABI from "yieldfi-sdk/abis/v3/Manager.json";
function RedemptionButton() {
const { address } = useAccount();
const { data: walletClient } = useWalletClient();
const requestRedemption = async (
vaultAddress: string,
shares: bigint,
receiver?: string
) => {
if (!walletClient || !address) {
throw new Error("Wallet not connected");
}
const provider = new ethers.BrowserProvider(walletClient);
const signer = await provider.getSigner();
const contracts = getContractAddresses(Chain.ETHEREUM);
const managerV3 = connectManagerV3(contracts.manager, ManagerV3ABI, signer);
// Request redemption (shares are locked, not burned)
const redeemTx = await managerV3.requestRedemption(
vaultAddress,
shares,
address, // Owner
receiver || address // Receiver (defaults to owner)
);
const receipt = await redeemTx.wait();
console.log(`Redemption requested: ${receipt.hash}`);
return receipt;
};
return (
<button
onClick={() =>
requestRedemption(
"0x5bE91d34FeFbB7554497a74e25dC6df96bFef5DB",
ethers.parseUnits("100", 18)
)
}
>
Request Redemption
</button>
);
}Using Browser Provider
Check Vault Balance (V3)
Check vault token balance and convert between shares and assets.
Using Wagmi
Using Browser Provider
Check Redemption Queue (V3)
Check redemption queue status and entries.
Using Wagmi
Using Browser Provider
Cancel Redemption (V3)
Cancel a pending redemption request.
Using Wagmi
Using Browser Provider
Process Redemption (V3) - Admin/Operator Only
Process a redemption from the queue. This is typically called by vault operators.
Using Wagmi
Using Browser Provider
Complete V3 Integration Example
Complete example showing deposit, balance check, and redemption flow using wagmi:
Using Browser Provider Directly
V3 Contract Features
Manager V3 Contract
Deposit: Deposit assets to vaults with slippage protection (
minShares)Request Redemption: Request redemption (shares are locked, not burned)
Cancel Redemption: Cancel pending redemption requests
Process Redemption: Process redemptions from queue (operator only)
Redemption Queue: Query queue entries and status
Vault Contract (ERC-4626)
Standard ERC-4626: Full ERC-4626 vault interface
Share Locking: Shares can be locked for redemption requests
Asset Conversion:
convertToAssets()andconvertToShares()methodsPreview Functions: Preview deposit/redeem amounts
Getting Contract Addresses
Type Safety
The SDK provides full TypeScript types for v3 contracts:
Wallet Integration Best Practices
Always Check Wallet Connection
Handle User Rejection
Request Account Access
Last updated