// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import "../../../governance/Governor.sol"; import "../../../governance/compatibility/GovernorCompatibilityBravo.sol"; import "../../../governance/extensions/GovernorVotes.sol"; import "../../../governance/extensions/GovernorVotesQuorumFraction.sol"; import "../../../governance/extensions/GovernorTimelockControl.sol"; contract MyGovernor is Governor, GovernorCompatibilityBravo, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl { constructor( IVotes _token, TimelockController _timelock ) Governor("MyGovernor") GovernorVotes(_token) GovernorVotesQuorumFraction(4) GovernorTimelockControl(_timelock) {} function votingDelay() public pure override returns (uint256) { return 7200; // 1 day } function votingPeriod() public pure override returns (uint256) { return 50400; // 1 week } function proposalThreshold() public pure override returns (uint256) { return 0; } // The functions below are overrides required by Solidity. function state( uint256 proposalId ) public view override(Governor, IGovernor, GovernorTimelockControl) returns (ProposalState) { return super.state(proposalId); } function propose( address[] memory targets, uint256[] memory values, bytes[] memory calldatas, string memory description ) public override(Governor, GovernorCompatibilityBravo, IGovernor) returns (uint256) { return super.propose(targets, values, calldatas, description); } function cancel( address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash ) public override(Governor, GovernorCompatibilityBravo, IGovernor) returns (uint256) { return super.cancel(targets, values, calldatas, descriptionHash); } function _execute( uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash ) internal override(Governor, GovernorTimelockControl) { super._execute(proposalId, targets, values, calldatas, descriptionHash); } function _cancel( address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash ) internal override(Governor, GovernorTimelockControl) returns (uint256) { return super._cancel(targets, values, calldatas, descriptionHash); } function _executor() internal view override(Governor, GovernorTimelockControl) returns (address) { return super._executor(); } function supportsInterface( bytes4 interfaceId ) public view override(Governor, IERC165, GovernorTimelockControl) returns (bool) { return super.supportsInterface(interfaceId); } }