function isPublicSwap() external view returns (bool);
function isFinalized() external view returns (bool);
function isBound(address t) external view returns (bool);
function getNumTokens() external view returns (uint);
function getCurrentTokens() external view returns (address[] memory tokens);
function getFinalTokens() external view returns (address[] memory tokens);
function getDenormalizedWeight(address token) external view returns (uint);
function getTotalDenormalizedWeight() external view returns (uint);
function getNormalizedWeight(address token) external view returns (uint);
function getBalance(address token) external view returns (uint);
function getSwapFee() external view returns (uint);
function getController() external view returns (address);
function setSwapFee(uint swapFee) external;
function setController(address manager) external;
function setPublicSwap(bool public_) external;
function finalize() external;
function bind(address token, uint balance, uint denorm) external;
function rebind(address token, uint balance, uint denorm) public;
function unbind(address token) external;
function gulp(address token) external;
function getSpotPrice(address tokenIn, address tokenOut) external view returns (uint spotPrice);
function getSpotPriceSansFee(address tokenIn, address tokenOut) external view returns (uint spotPrice);
function joinPool(uint poolAmountOut, uint[] calldata maxAmountsIn) external;
function exitPool(uint poolAmountIn, uint[] calldata minAmountsOut) external;
function swapExactAmountIn(
) external returns (uint tokenAmountOut, uint spotPriceAfter);
function swapExactAmountOut(
) external returns (uint tokenAmountIn, uint spotPriceAfter);
function joinswapExternAmountIn(
) external returns (uint poolAmountOut);
function joinswapPoolAmountOut(
) external returns (uint tokenAmountIn);
function exitswapPoolAmountIn(
) external returns (uint tokenAmountOut);
function exitswapExternAmountOut(
) external returns (uint poolAmountIn);
function totalSupply() external view returns (uint);
function balanceOf(address whom) external view returns (uint);
function allowance(address src, address dst) external view returns (uint);
function approve(address dst, uint amt) external returns (bool);
function transfer(address dst, uint amt) external returns (bool);
address src, address dst, uint amt
) external returns (bool);
) public pure returns (uint spotPrice);
) public pure returns (uint tokenAmountOut);
) public pure returns (uint tokenAmountIn);
function calcPoolOutGivenSingleIn(
) public pure returns (uint poolAmountOut);
function calcSingleInGivenPoolOut(
) public pure returns (uint tokenAmountIn)
function calcSingleOutGivenPoolIn(
) public pure returns (uint tokenAmountOut)
function calcPoolInGivenSingleOut(
) public pure returns (uint poolAmountIn)