interface ICurveDeposit {
    function get_virtual_price() external view returns (uint256);

    function add_liquidity(
        // renBTC pool
        uint256[2] calldata amounts,
        uint256 min_mint_amount
    ) external;

    function add_liquidity(
        // sBTC pool
        uint256[3] calldata amounts,
        uint256 min_mint_amount
    ) external;

    function add_liquidity(
        // bUSD pool
        uint256[4] calldata amounts,
        uint256 min_mint_amount
    ) external;

    function remove_liquidity_one_coin(uint256 _amount, int128 _i, uint256 _min_uamount) external;

    // function remove_liquidity_one_coin(uint256 _amount, int128 _i, uint256 _min_uamount, bool _donate_dust) external;

    function remove_liquidity(uint256 _amount, uint256[4] calldata amounts) external;

    function exchange(
        int128 from,
        int128 to,
        uint256 _from_amount,
        uint256 _min_to_amount
    ) external;

    function calc_withdraw_one_coin(uint256 _amount, int128 _index) external view returns(uint256);
}
function remove_liquidity(uint256 _amount, uint256[4] calldata amounts) external;

// function remove_liquidity_one_coin(uint256 _amount, int128 _i, uint256 _min_uamount, bool _donate_dust) external;