Interface

The following is a consolidated interface for the AlchemistV2 contract.

pragma solidity ^0.8.11;

interface IAlchemistV2 {

    event PendingAdminUpdated(address value);

    event AdminUpdated(address sentinel, bool flag);

    event SentinelSet(address keeper, bool flag);

    event KeeperSet(address value);

    event AddUnderlyingToken(address indexed token);

    event AddYieldToken(address indexed token, address adapter);

    event UnderlyingTokenEnabled(address indexed underlyingToken);

    event UnderlyingTokenDisabled(address indexed underlyingToken);

    event YieldTokenEnabled(address indexed yieldToken);

    event YieldTokenDisabled(address indexed yieldToken);

    event RepayLimitUpdated(

        address indexed underlyingToken,

        uint256 maximum,

        uint256 blocks

    );

    event LiquidationLimitUpdated(

        address indexed underlyingToken,

        uint256 maximum,

        uint256 blocks

    );

    event TransmuterUpdated(address value);

    event MinimumCollateralizationUpdated(uint256 value);

    event ProtocolFeeUpdated(uint256 value);

    event ProtocolFeeReceiverUpdated(address value);

    event MintingLimitUpdated(uint256 maximum, uint256 blocks);

    event MaximumLossUpdated(address indexed yieldToken, uint256 value);

    event Snap(address indexed yieldToken, uint256 expectedValue);

    event ApproveMint(

        address indexed owner,

        address indexed spender,

        uint256 amount

    );

    event ApproveWithdraw(

        address indexed owner,

        address indexed spender,

        uint256 amount

    );

    event Harvest(address indexed yieldToken, uint256 minimumAmountOut, uint256 totalHarvested);

    event Deposit(

        address indexed sender,

        address indexed yieldToken,

        uint256 amount,

        address recipient

    );

    event Withdraw(

        address indexed sender,

        address indexed yieldToken,

        uint256 shares,

        address recipient

    );

    event Mint(address indexed owner, uint256 amount, address recipient);

    event Burn(address indexed sender, uint256 amount, address recipient);

    event Repay(

        address indexed sender,

        address indexed underlyingToken,

        uint256 amount,

        address recipient

    );

    event Liquidate(

        address indexed sender,

        address indexed yieldToken,

        uint256 shares

    );

    event Donate(

        address indexed sender,

        address indexed yieldToken,

        uint256 amount

    );

    error SlippageExceeded();

    error ExpectedValueExceeded(

        address yieldToken,

        uint256 expectedValue,

        uint256 maximumExpectedValue

    );

    error LossExceeded(address yieldToken, uint256 loss, uint256 maximumLoss);

    error MintingLimitExceeded(uint256 amount, uint256 mintingLimit);

    error RepayLimitExceeded(

        address underlyingToken,

        uint256 amount,

        uint256 repayLimit

    );

    error LiquidationLimitExceeded(

        address underlyingToken,

        uint256 amount,

        uint256 repayLimit

    );

    error Undercollateralized();

    error UnsupportedToken(address token);

    error IllegalState(string message);

    error IllegalArgument(string message);

    error Unauthorized(string message);

    error TokenDisabled(address token);

    function approveMint(address spender, uint256 amount) external;

    function approveWithdraw(address spender, uint256 amount) external;

    function poke(address owner) external;

    function deposit(

        address yieldToken,

        uint256 amount,

        address recipient

    ) external;

    function depositUnderlying(

        address yieldToken,

        uint256 amount,

        address recipient,

        uint256 minimumAmountOut

    ) external;

    function withdraw(

        address yieldToken,

        uint256 shares,

        address recipient

    ) external;

    function withdrawFrom(

        address owner,

        address token,

        uint256 shares,

        address recipient

    ) external;

    function withdrawUnderlying(

        address yieldToken,

        uint256 shares,

        address recipient,

        uint256 minimumAmountOut

    ) external;

    function withdrawUnderlyingFrom(

        address owner,

        address token,

        uint256 shares,

        address recipient,

        uint256 minimumAmountOut

    ) external;

    function mint(uint256 amount, address recipient) external;

    function mintFrom(

        address owner,

        uint256 amount,

        address recipient

    ) external;

    function burn(uint256 amount, address recipient) external;

    function repay(

        address underlyingToken,

        uint256 amount,

        address recipient

    ) external;

    function liquidate(

        address yieldToken,

        uint256 amountUnderlying,

        uint256 minimumAmountOut

    ) external;

    function donate(address yieldToken, uint256 amount) external;

    function harvest(address yieldToken, uint256 minimumAmountOut) external;

    function debtToken() external view returns (address);

    function admin() external view returns (address);

    function pendingAdmin() external view returns (address);

    function sentinels(address value) external view returns (bool);

    function keepers(address value) external view returns (bool);

    function transmuter() external view returns (address);

    function minimumCollateralization() external view returns (uint256);

    function protocolFee() external view returns (uint256);

    function protocolFeeReceiver() external view returns (address);

    function getUnderlyingTokensPerShare(address yieldToken)

        external

        view

        returns (uint256);

    function getYieldTokensPerShare(address yieldToken)

        external

        view

        returns (uint256);

    function getSupportedUnderlyingTokens()

        external

        view

        returns (address[] memory);

    function getSupportedYieldTokens() external view returns (address[] memory);

    function isSupportedUnderlyingToken(address underlyingToken)

        external

        view

        returns (bool);

    function isSupportedYieldToken(address yieldToken)

        external

        view

        returns (bool);

    function accounts(address owner)

        external

        view

        returns (int256 debt, address[] memory depositedTokens);

    function positions(address owner, address yieldToken)

        external

        view

        returns (uint256 balance, uint256 lastAccruedWeight);

    function getUnderlyingTokenParameters(address underlyingToken)

        external

        view

        returns (

            uint8 decimals,

            uint256 scalingFactor,

            bool enabled

        );

    function getYieldTokenParameters(address yieldToken)

        external

        view

        returns (

            uint8 decimals,

            address underlyingToken,

            address adapter,

            uint256 maximumLoss,

            uint256 balance,

            uint256 totalShares,

            uint256 expectedValue,

            uint256 accruedWeight,

            bool enabled

        );

    function mintAllowance(address owner, address spender)

        external

        view

        returns (uint256);

    function withdrawAllowance(address owner, address spender)

        external

        view

        returns (uint256);

    function convertYieldTokensToShares(address yieldToken, uint256 amount) public view returns (uint256);

    function convertSharesToYieldTokens(address yieldToken, uint256 shares) public view returns (uint256);

    function convertSharesToUnderlyingTokens(address yieldToken, uint256 shares) public view returns (uint256);

    function convertYieldTokensToUnderlying(address yieldToken, uint256 amount) public view returns (uint256);

    function convertUnderlyingTokensToYield(address yieldToken, uint256 amount) public view returns (uint256);

    function convertUnderlyingTokensToShares(address yieldToken, uint256 amount) public view returns (uint256);

    function normalizeUnderlyingTokensToDebt(address underlyingToken, uint256 amount) public view returns (uint256);

    function normalizeDebtTokensToUnderlying(address underlyingToken, uint256 amount) public view returns (uint256);

    function totalValue(address owner) public view returns (uint256);

}

Last updated