contract UniV3PairManagerFactory is IPairManagerFactory, Governable {
  mapping(address => address) public override pairManagers;

  constructor() Governable(msg.sender) {}

  ///@inheritdoc IPairManagerFactory
  function createPairManager(address _pool) external override returns (address _pairManager) {
    if (pairManagers[_pool] != address(0)) revert AlreadyInitialized();
    _pairManager = address(new UniV3PairManager(_pool, governance));
    pairManagers[_pool] = _pairManager;
    emit PairCreated(_pool, _pairManager);
  }
}
/// @title Factory of Pair Managers
/// @notice This contract creates new pair managers
function createPairManager(address _pool) external override returns (address _pairManager) {
  if (pairManagers[_pool] != address(0)) revert AlreadyInitialized();
  _pairManager = address(new UniV3PairManager(_pool, governance));
  pairManagers[_pool] = _pairManager;
  emit PairCreated(_pool, _pairManager);
}

///@inheritdoc IPairManagerFactory