// SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.7.6; pragma abicoder v2; import { SafeOwnable } from "./SafeOwnable.sol"; abstract contract ClearingHouseCallee is SafeOwnable { // // STATE // address internal _clearingHouse; // __gap is reserved storage uint256[50] private __gap; // // EVENT // event ClearingHouseChanged(address indexed clearingHouse); // // CONSTRUCTOR // // solhint-disable-next-line func-order function __ClearingHouseCallee_init() internal initializer { __SafeOwnable_init(); } function setClearingHouse(address clearingHouseArg) external onlyOwner { _clearingHouse = clearingHouseArg; emit ClearingHouseChanged(clearingHouseArg); } function getClearingHouse() external view returns (address) { return _clearingHouse; } function _requireOnlyClearingHouse() internal view { // only ClearingHouse require(_msgSender() == _clearingHouse, "CHD_OCH"); } }