DOVZapRouter
Inherits: FlashLoanBase, ReentrancyGuard, Ownable2Step
Title: DOVZapRouter
Coordinates USDC→splDXY zaps across BEAR and BULL DOVs.
Mints pairs for the overlapping USDC amount (zero slippage), routes excess through Curve or flash mint.
Note: security-contact: contact@plether.com
Constants
USDC_INDEX
uint256 public constant USDC_INDEX = 0
PLDXY_BEAR_INDEX
uint256 public constant PLDXY_BEAR_INDEX = 1
SAFETY_BUFFER_BPS
uint256 public constant SAFETY_BUFFER_BPS = 50
SPLITTER
ISyntheticSplitter public immutable SPLITTER
CURVE_POOL
ICurvePool public immutable CURVE_POOL
USDC
IERC20 public immutable USDC
PLDXY_BEAR
IERC20 public immutable PLDXY_BEAR
PLDXY_BULL
IERC20 public immutable PLDXY_BULL
STAKED_BEAR
IERC4626 public immutable STAKED_BEAR
STAKED_BULL
IERC4626 public immutable STAKED_BULL
BEAR_DOV
PletherDOV public immutable BEAR_DOV
BULL_DOV
PletherDOV public immutable BULL_DOV
CAP
uint256 public immutable CAP
CAP_PRICE
uint256 public immutable CAP_PRICE
Functions
constructor
constructor(
address _splitter,
address _curvePool,
address _usdc,
address _plDxyBear,
address _plDxyBull,
address _stakedBear,
address _stakedBull,
address _bearDov,
address _bullDov
) Ownable(msg.sender);
coordinatedZapAndStartEpochs
Pulls USDC from both DOVs, mints matched pairs, routes excess, starts epoch auctions.
function coordinatedZapAndStartEpochs(
EpochParams calldata bearParams,
EpochParams calldata bullParams,
uint256 minBearSwapOut,
uint256 minBullSwapOut
) external onlyOwner nonReentrant;
_flashZapBull
function _flashZapBull(
uint256 usdcAmount,
uint256 minSwapOut
) internal;
onFlashLoan
function onFlashLoan(
address initiator,
address,
uint256 amount,
uint256 fee,
bytes calldata data
) external override returns (bytes32);
onMorphoFlashLoan
function onMorphoFlashLoan(
uint256,
bytes calldata
) external pure override;
Events
CoordinatedZap
event CoordinatedZap(uint256 bearUsdc, uint256 bullUsdc, uint256 matchedAmount);
Errors
DOVZapRouter__SolvencyBreach
error DOVZapRouter__SolvencyBreach();
DOVZapRouter__BearPriceAboveCap
error DOVZapRouter__BearPriceAboveCap();
Structs
EpochParams
struct EpochParams {
uint256 strike;
uint256 expiry;
uint256 maxPremium;
uint256 minPremium;
uint256 duration;
}