interface ICurve3Pool {
    // add liquidity (frax) to receive back FRAX3CRV-f
    function add_liquidity(address _pool, uint256[4] memory _deposit_amounts, uint256 _min_mint_amount) external returns(uint256);
    // remove liquidity (FRAX3CRV-f) to recieve back Frax
    function remove_liquidity_one_coin(address _pool, uint256 _burn_amount, int128 i, uint256 _min_amount) external returns(uint256);
}
function add_liquidity(address _pool, uint256[4] memory _deposit_amounts, uint256 _min_mint_amount) external returns(uint256);

// add liquidity (frax) to receive back FRAX3CRV-f