// SPDX-License-Identifier: GPL-3.0 pragma solidity 0.6.12; import "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol"; import "./Ticket.sol"; import "../external/openzeppelin/ProxyFactory.sol"; /// @title Controlled ERC20 Token Factory /// @notice Minimal proxy pattern for creating new Controlled ERC20 Tokens contract TicketProxyFactory is ProxyFactory { /// @notice Contract template for deploying proxied tokens Ticket public instance; /// @notice Initializes the Factory with an instance of the Controlled ERC20 Token constructor () public { instance = new Ticket(); } /// @notice Creates a new Controlled ERC20 Token as a proxy of the template instance /// @return A reference to the new proxied Controlled ERC20 Token function create() external returns (Ticket) { return Ticket(deployMinimal(address(instance), "")); } }