contract DfTokenizedStrategyFactory is Initializable {

    // ** EVENTS **

    event TokenizedStrategyCreated(
        address indexed tokenizedStrategy
    );

    // // Initializer – Constructor for Upgradable contracts
    // function initialize() public initializer {}

    // ** PUBLIC PAYABLE function **

    function launchStrategy(
        string memory _tokenName,
        string memory _tokenSymbol,
        uint _extraCoef,
        uint _profitPercent,
        bytes memory _exchangeData,
        uint _usdcToBuyEth,
        uint _ethType,
        bool _onlyWithProfit
    ) public payable {

        address dfTokenizedStrategy = address(
            (new DfTokenizedStrategy)
            .value(msg.value)
            (
                _tokenName,
                _tokenSymbol,
                msg.sender,     // issuer
                _extraCoef,
                _profitPercent,
                _exchangeData,
                _usdcToBuyEth,
                _ethType,
                _onlyWithProfit
            )
        );

        emit TokenizedStrategyCreated(dfTokenizedStrategy);
    }

}
function launchStrategy(
    string memory _tokenName,
    string memory _tokenSymbol,
    uint _extraCoef,
    uint _profitPercent,
    bytes memory _exchangeData,
    uint _usdcToBuyEth,
    uint _ethType,
    bool _onlyWithProfit
) public payable {

    address dfTokenizedStrategy = address(
        (new DfTokenizedStrategy)
        .value(msg.value)
        (
            _tokenName,
            _tokenSymbol,
            msg.sender,     // issuer
            _extraCoef,
            _profitPercent,
            _exchangeData,
            _usdcToBuyEth,
            _ethType,
            _onlyWithProfit
        )
    );

    emit TokenizedStrategyCreated(dfTokenizedStrategy);
}

// // Initializer – Constructor for Upgradable contracts
// function initialize() public initializer {}
// ** PUBLIC PAYABLE function **