Skip to content

VaultLiquidatorImplementationV1 ​

Git Source

State Variables ​

X19 ​

solidity
uint256 internal constant X19 = 0x7ffff

X20 ​

solidity
uint256 internal constant X20 = 0xfffff

ETH_ADDRESS ​

solidity
address public constant ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE

FLA ​

solidity
InstaFlashInterface public immutable FLA

WETH ​

solidity
IWETH9 public immutable WETH

ADDRESS_THIS ​

solidity
address internal immutable ADDRESS_THIS = address(this)

Functions ​

constructor ​

solidity
constructor(address fla_, address weth_) ;

_onlyDelegateCall ​

solidity
modifier _onlyDelegateCall() ;

_tickHelper ​

solidity
function _tickHelper(uint256 tickRaw_) internal pure returns (int256 tick);

_validateParams ​

solidity
function _validateParams(LiquidationParams memory params_) internal view;

liquidateDust ​

solidity
function liquidateDust(LiquidationDustParams memory params_) public _onlyDelegateCall;

liquidation ​

solidity
function liquidation(LiquidationParams memory params_) public _onlyDelegateCall;

executeOperation ​

solidity
function executeOperation(
    address[] calldata assets,
    uint256[] calldata amounts,
    uint256[] calldata premiums,
    address initiator,
    bytes calldata _data
) external returns (bool);

receive ​

solidity
receive() external payable;

Events ​

Liquidated ​

solidity
event Liquidated(address indexed vault, uint256 collateral, uint256 debt);

Errors ​

FluidVaultLiquidator__InvalidOperation ​

solidity
error FluidVaultLiquidator__InvalidOperation();

FluidVaultLiquidator__InvalidTimestamp ​

solidity
error FluidVaultLiquidator__InvalidTimestamp();

FluidVaultLiquidator__InvalidTopTick ​

solidity
error FluidVaultLiquidator__InvalidTopTick();

Structs ​

LiquidationParams ​

solidity
struct LiquidationParams {
    address vault; // address of the vault to liquidate
    uint256 vaultType; // 1 for T1, 2 for T2, 3 for T3, 4 for T4
    uint256 expiration; // 0 if no expiration
    int256 topTick; // type(int256).min if no topTick

    uint256 route; // Flashloan Route
    address flashloanToken; // Debt Token
    uint256 flashloanAmount; // Amount of debt token to payback

    uint256 token0DebtAmt;
    uint256 token1DebtAmt;
    uint256 debtSharesMin;
    uint256 colPerUnitDebt; // col per unit is w.r.t debt shares and not token0/1 debt amount
    uint256 token0ColAmtPerUnitShares; // in 1e18
    uint256 token1ColAmtPerUnitShares; // in 1e18
    bool absorb;

    address swapToken; // Collateral Token
    uint256 swapAmount; // Collateral amount to swap
    address swapRouter; // Dex Aggregator Router Contract
    address swapApproval; // Dex Aggregator Approval Contract
    bytes swapData; // Data to swap collateral token
}

LiquidationDustParams ​

solidity
struct LiquidationDustParams {
    address vault; // address of the vault to liquidate
    uint256 vaultType; // 1 for T1, 2 for T2, 3 for T3, 4 for T4
    uint256 expiration; // 0 if no expiration
    int256 topTick; // type(int256).min if no topTick

    address debtToken; // Debt Token
    uint256 debtAmount; // Amount of debt token to payback

    uint256 token0DebtAmt;
    uint256 token1DebtAmt;
    uint256 debtSharesMin;
    uint256 colPerUnitDebt; // col per unit is w.r.t debt shares and not token0/1 debt amount
    uint256 token0ColAmtPerUnitShares; // in 1e18
    uint256 token1ColAmtPerUnitShares; // in 1e18
    bool absorb;
}