Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

DOVZapRouter

Git Source

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;
}