contract WeightedPool2TokensFactory is BasePoolFactory, FactoryWidePauseWindow {
    constructor(IVault vault) BasePoolFactory(vault) {
        // solhint-disable-previous-line no-empty-blocks
    }

    /**
     * @dev Deploys a new `WeightedPool2Tokens`.
     */
    function create(
        string memory name,
        string memory symbol,
        IERC20[] memory tokens,
        uint256[] memory weights,
        uint256 swapFeePercentage,
        bool oracleEnabled,
        address owner
    ) external returns (address) {
        // TODO: Do not use arrays in the interface for tokens and weights
        (uint256 pauseWindowDuration, uint256 bufferPeriodDuration) = getPauseConfiguration();

        WeightedPool2Tokens.NewPoolParams memory params = WeightedPool2Tokens.NewPoolParams({
            vault: getVault(),
            name: name,
            symbol: symbol,
            token0: tokens[0],
            token1: tokens[1],
            normalizedWeight0: weights[0],
            normalizedWeight1: weights[1],
            swapFeePercentage: swapFeePercentage,
            pauseWindowDuration: pauseWindowDuration,
            bufferPeriodDuration: bufferPeriodDuration,
            oracleEnabled: oracleEnabled,
            owner: owner
        });

        address pool = address(new WeightedPool2Tokens(params));
        _register(pool);
        return pool;
    }
}
function create(
    string memory name,
    string memory symbol,
    IERC20[] memory tokens,
    uint256[] memory weights,
    uint256 swapFeePercentage,
    bool oracleEnabled,
    address owner
) external returns (address) {
    // TODO: Do not use arrays in the interface for tokens and weights
    (uint256 pauseWindowDuration, uint256 bufferPeriodDuration) = getPauseConfiguration();

    WeightedPool2Tokens.NewPoolParams memory params = WeightedPool2Tokens.NewPoolParams({
        vault: getVault(),
        name: name,
        symbol: symbol,
        token0: tokens[0],
        token1: tokens[1],
        normalizedWeight0: weights[0],
        normalizedWeight1: weights[1],
        swapFeePercentage: swapFeePercentage,
        pauseWindowDuration: pauseWindowDuration,
        bufferPeriodDuration: bufferPeriodDuration,
        oracleEnabled: oracleEnabled,
        owner: owner
    });

    address pool = address(new WeightedPool2Tokens(params));
    _register(pool);
    return pool;
}

/**
 * @dev Deploys a new `WeightedPool2Tokens`.
 */