46 lines
1.3 KiB
Solidity
46 lines
1.3 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
import {IGhostAuthority} from "./interfaces/IGhostAuthority.sol";
|
|
import {GhostAccessControlled} from "./types/GhostAccessControlled.sol";
|
|
|
|
contract GhostAuthority is IGhostAuthority, GhostAccessControlled {
|
|
address public override governor;
|
|
address public override guardian;
|
|
address public override policy;
|
|
address public override vault;
|
|
|
|
constructor(
|
|
address _governor,
|
|
address _guardian,
|
|
address _policy,
|
|
address _vault
|
|
) GhostAccessControlled(IGhostAuthority(address(this))) {
|
|
governor = _governor;
|
|
guardian = _guardian;
|
|
policy = _policy;
|
|
vault = _vault;
|
|
}
|
|
|
|
function pushGovernor(address newGovernor) external onlyGovernor {
|
|
emit GovernorPushed(governor, newGovernor);
|
|
governor = newGovernor;
|
|
}
|
|
|
|
function pushGuardian(address newGuardian) external onlyGovernor {
|
|
emit GuardianPushed(guardian, newGuardian);
|
|
guardian = newGuardian;
|
|
}
|
|
|
|
function pushPolicy(address newPolicy) external onlyGovernor {
|
|
emit PolicyPushed(policy, newPolicy);
|
|
policy = newPolicy;
|
|
}
|
|
|
|
function pushVault(address newVault) external onlyGovernor {
|
|
emit VaultPushed(vault, newVault);
|
|
vault = newVault;
|
|
}
|
|
|
|
}
|