interface IZuniTreasury {
    function setZuniBadge(address _zuniBadge) external;

    function setCRP(address _crpAddress) external;

    function setZuniToken(IERC20 _zuni) external;

    function giveZuniReward(address to, uint256 amount) external;

    function issue(uint256 tokenAmountOut) external;

    function buyback(uint256 tokenAmountIn) external;

    function capitalization(address token, uint256 tokenAmountOut) external;

    function withdrawToken(
        address token,
        address to,
        uint256 amount
    ) external;

    // external functions only can be called by owner to config CRP

    function setSwapFee(uint256 swapFee) external;

    function setCap(uint256 newCap) external;

    function setPublicSwap(bool publicSwap) external;

    function updateWeight(address token, uint256 newWeight) external;

    function updateWeightsGradually(
        uint256[] calldata newWeights,
        uint256 startBlock,
        uint256 endBlock
    ) external;

    function pokeWeights() external;

    function commitAddToken(
        address token,
        uint256 balance,
        uint256 denormalizedWeight
    ) external;

    function applyAddToken() external;

    function removeToken(address token) external;

    function whitelistLiquidityProvider(address provider) external;

    function removeWhitelistedLiquidityProvider(address provider) external;
}
function setSwapFee(uint256 swapFee) external;

// external functions only can be called by owner to config CRP