# Snapshot report for `src/governor.test.ts`

The actual snapshot is saved in `governor.test.ts.snap`.

Generated by [AVA](https://avajs.dev).

## governor with proposal threshold

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function proposalThreshold() public pure override returns (uint256) {␊
            return 1e18;␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with custom block time

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 100800; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 100800; // 1 week␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with custom decimals

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function quorum(uint256 blockNumber) public pure override returns (uint256) {␊
            return 1e6;␊
        }␊
    ␊
        function proposalThreshold() public pure override returns (uint256) {␊
            return 1e6;␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with 0 decimals

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function quorum(uint256 blockNumber) public pure override returns (uint256) {␊
            return 1;␊
        }␊
    ␊
        function proposalThreshold() public pure override returns (uint256) {␊
            return 1;␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with settings

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorSettings(50400 /* 1 week */, 50400 /* 1 week */, 1e18)␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function votingDelay()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingDelay();␊
        }␊
    ␊
        function votingPeriod()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingPeriod();␊
        }␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function proposalThreshold()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.proposalThreshold();␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with storage

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorStorage.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorStorage, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _propose(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, string memory description, address proposer)␊
            internal␊
            override(Governor, GovernorStorage)␊
            returns (uint256)␊
        {␊
            return super._propose(targets, values, calldatas, description, proposer);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with erc20votes

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with erc721votes

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with erc721votes omit decimals

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function quorum(uint256 blockNumber) public pure override returns (uint256) {␊
            return 5;␊
        }␊
    ␊
        function proposalThreshold() public pure override returns (uint256) {␊
            return 1;␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with erc721votes settings omit decimals

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorSettings(50400 /* 1 week */, 50400 /* 1 week */, 10)␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function votingDelay()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingDelay();␊
        }␊
    ␊
        function votingPeriod()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingPeriod();␊
        }␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function proposalThreshold()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.proposalThreshold();␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with percent quorum

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(6)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with fractional percent quorum

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(5)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function quorumDenominator() public pure override returns (uint256) {␊
            return 1000;␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with openzeppelin timelock

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with compound timelock

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockCompound.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockCompound {␊
        constructor(IVotes _token, ICompoundTimelock _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockCompound(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 50400; // 1 week␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockCompound)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockCompound)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockCompound)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockCompound)␊
        {␊
            super._executeOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _cancel(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockCompound)␊
            returns (uint256)␊
        {␊
            return super._cancel(targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executor()␊
            internal␊
            view␊
            override(Governor, GovernorTimelockCompound)␊
            returns (address)␊
        {␊
            return super._executor();␊
        }␊
    }␊
    `

## governor with blocknumber, updatable settings

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorSettings(7200 /* 1 day */, 100800 /* 2 weeks */, 0)␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function votingDelay()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingDelay();␊
        }␊
    ␊
        function votingPeriod()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingPeriod();␊
        }␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function proposalThreshold()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.proposalThreshold();␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with blocknumber, non-updatable settings

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 1; // 1 block␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 100800; // 2 weeks␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with timestamp clock mode, updatable settings

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorSettings, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorSettings(1 days, 2 weeks, 0)␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function votingDelay()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingDelay();␊
        }␊
    ␊
        function votingPeriod()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.votingPeriod();␊
        }␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function proposalThreshold()␊
            public␊
            view␊
            override(Governor, GovernorSettings)␊
            returns (uint256)␊
        {␊
            return super.proposalThreshold();␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `

## governor with timestamp clock mode, non-updatable settings

> Snapshot 1

    `// SPDX-License-Identifier: MIT␊
    // Compatible with OpenZeppelin Contracts ^5.0.0␊
    pragma solidity ^0.8.22;␊
    ␊
    import "@openzeppelin/contracts/governance/Governor.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorCountingSimple.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotes.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorVotesQuorumFraction.sol";␊
    import "@openzeppelin/contracts/governance/extensions/GovernorTimelockControl.sol";␊
    ␊
    contract MyGovernor is Governor, GovernorCountingSimple, GovernorVotes, GovernorVotesQuorumFraction, GovernorTimelockControl {␊
        constructor(IVotes _token, TimelockController _timelock)␊
            Governor("MyGovernor")␊
            GovernorVotes(_token)␊
            GovernorVotesQuorumFraction(4)␊
            GovernorTimelockControl(_timelock)␊
        {}␊
    ␊
        function votingDelay() public pure override returns (uint256) {␊
            return 1 days;␊
        }␊
    ␊
        function votingPeriod() public pure override returns (uint256) {␊
            return 2 weeks;␊
        }␊
    ␊
        // The following functions are overrides required by Solidity.␊
    ␊
        function quorum(uint256 blockNumber)␊
            public␊
            view␊
            override(Governor, GovernorVotesQuorumFraction)␊
            returns (uint256)␊
        {␊
            return super.quorum(blockNumber);␊
        }␊
    ␊
        function state(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (ProposalState)␊
        {␊
            return super.state(proposalId);␊
        }␊
    ␊
        function proposalNeedsQueuing(uint256 proposalId)␊
            public␊
            view␊
            override(Governor, GovernorTimelockControl)␊
            returns (bool)␊
        {␊
            return super.proposalNeedsQueuing(proposalId);␊
        }␊
    ␊
        function _queueOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
            returns (uint48)␊
        {␊
            return super._queueOperations(proposalId, targets, values, calldatas, descriptionHash);␊
        }␊
    ␊
        function _executeOperations(uint256 proposalId, address[] memory targets, uint256[] memory values, bytes[] memory calldatas, bytes32 descriptionHash)␊
            internal␊
            override(Governor, GovernorTimelockControl)␊
        {␊
            super._executeOperations(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();␊
        }␊
    }␊
    `
