Full integration example
ICoveredMetavault metavault = ICoveredMetavault(0x...);
IERC4626 bbqUSDC = IERC4626(0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB);
// 1. Approve the Metavault.
bbqUSDC.approve(address(metavault), 10_000e18);
// 2. Request to deposit 10,000 bbqUSDC.
metavault.requestDeposit(10_000e18, msg.sender, msg.sender);
// 3. Wait for settlement (typically within 2 blocks).
// 4. [Optional] Claim covered shares (OC-bbqUSDC).
// By default, the Keeper claims and pushes covered shares for depositors;
// or, if preferred, shares can be manually claimed by the depositor via:
uint256 assetsClaimable = metavault.claimableDepositRequest(0, msg.sender);
metavault.deposit(assetsClaimable, msg.sender, msg.sender);
// ... Time passes, user earns insured yield ...
// 5. Get covered metavault share balance of user (OC-bbqUSDC).
uint256 sharesCovered = metavault.balanceOf(msg.sender);
// 6. Request redemption of covered shares.
uint256 reqId = metavault.requestRedeem(sharesCovered, msg.sender, msg.sender);
// 7. Wait for settlement (typically within 2 blocks).
// 8. [Optional] Redeem metavault shares (OC-bbqUSDC) for yield-vault shares (bbqUSDC).
// By default, the Keeper claims and pushes yield-vault shares for depositors;
// or, if preferred, yield-vault shares can manually claimed by the depositor via:
uint256 sharesClaimable = metavault.claimableRedeemRequest(reqId, msg.sender);
metavault.redeem(sharesClaimable, msg.sender, msg.sender);Last updated

