// SPDX-License-Identifier: MIT pragma solidity 0.8.19; import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; import "../interfaces/IPropelCore.sol"; /** @title Propel Ownable @notice Contracts inheriting `PropelOwnable` have the same owner as `PropelCore`. The ownership cannot be independently modified or renounced. */ contract PropelOwnableUpgradeable is Initializable { IPropelCore public PropelCore; function __InitCore(IPropelCore _PropelCore) internal { PropelCore = _PropelCore; } modifier onlyOwner() { require(msg.sender == owner(), "Only owner"); _; } modifier onlyGuardian() { require(msg.sender == guardian(), "Only guardian"); _; } function owner() public view returns (address) { return PropelCore.owner(); } function guardian() public view returns (address) { return PropelCore.guardian(); } function WETH() public view returns(IWETH) { return PropelCore.WETH(); } function blast() public view returns(IBlast) { return PropelCore.blast(); } }