| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- // SPDX-License-Identifier: Apache 2
- pragma solidity ^0.8.0;
- import "./SchedulerState.sol";
- import "./SchedulerErrors.sol";
- /**
- * @dev `SchedulerGovernance` defines governance capabilities for the Pulse contract.
- */
- abstract contract SchedulerGovernance is SchedulerState {
- event NewAdminProposed(address oldAdmin, address newAdmin);
- event NewAdminAccepted(address oldAdmin, address newAdmin);
- event SingleUpdateKeeperFeeSet(uint oldFee, uint newFee);
- event MinimumBalancePerFeedSet(uint oldBalance, uint newBalance);
- /**
- * @dev Returns the address of the proposed admin.
- */
- function proposedAdmin() public view virtual returns (address) {
- return _state.proposedAdmin;
- }
- /**
- * @dev Returns the address of the current admin.
- */
- function getAdmin() external view returns (address) {
- return _state.admin;
- }
- /**
- * @dev Proposes a new admin for the contract. Replaces the proposed admin if there is one.
- * Can only be called by either admin or owner.
- */
- function proposeAdmin(address newAdmin) public virtual {
- require(newAdmin != address(0), "newAdmin is zero address");
- _authorizeAdminAction();
- _state.proposedAdmin = newAdmin;
- emit NewAdminProposed(_state.admin, newAdmin);
- }
- /**
- * @dev The proposed admin accepts the admin transfer.
- */
- function acceptAdmin() external {
- if (msg.sender != _state.proposedAdmin) revert Unauthorized();
- address oldAdmin = _state.admin;
- _state.admin = msg.sender;
- _state.proposedAdmin = address(0);
- emit NewAdminAccepted(oldAdmin, msg.sender);
- }
- /**
- * @dev Authorization check for admin actions
- * Must be implemented by the inheriting contract.
- */
- function _authorizeAdminAction() internal virtual;
- /**
- * @dev Set the keeper fee for single updates in Wei.
- * Calls {_authorizeAdminAction}.
- * Emits a {SingleUpdateKeeperFeeSet} event.
- */
- function setSingleUpdateKeeperFeeInWei(uint128 newFee) external {
- _authorizeAdminAction();
- uint oldFee = _state.singleUpdateKeeperFeeInWei;
- _state.singleUpdateKeeperFeeInWei = newFee;
- emit SingleUpdateKeeperFeeSet(oldFee, newFee);
- }
- /**
- * @dev Set the minimum balance required per feed in a subscription.
- * Calls {_authorizeAdminAction}.
- * Emits a {MinimumBalancePerFeedSet} event.
- */
- function setMinimumBalancePerFeed(uint128 newMinimumBalance) external {
- _authorizeAdminAction();
- uint oldBalance = _state.minimumBalancePerFeed;
- _state.minimumBalancePerFeed = newMinimumBalance;
- emit MinimumBalancePerFeedSet(oldBalance, newMinimumBalance);
- }
- }
|