interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    // SMARTXXX: function feeTo() external view returns (address);
    // SMARTXXX: function feeToSetter() external view returns (address);
    function feeInfoSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    // SMARTXXX: function setFeeTo(address) external;
    function setFeeInfo(address, uint32, uint32) external;
    // SMARTXXX: function setFeeToSetter(address) external;
    function setFeeInfoSetter(address) external;

    // SMARTXXX: fee info getter
    function getFeeInfo() external view returns (address, uint32, uint32);
}
function setFeeInfo(address, uint32, uint32) external;

// SMARTXXX: function setFeeTo(address) external;