// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (governance/compatibility/IGovernorCompatibilityBravo.sol) pragma solidity ^0.8.0; import "../IGovernor.sol"; /** * @dev Interface extension that adds missing functions to the {Governor} core to provide `GovernorBravo` compatibility. * * _Available since v4.3._ */ abstract contract IGovernorCompatibilityBravo is IGovernor { /** * @dev Proposal structure from Compound Governor Bravo. Not actually used by the compatibility layer, as * {{proposal}} returns a very different structure. */ struct Proposal { uint256 id; address proposer; uint256 eta; address[] targets; uint256[] values; string[] signatures; bytes[] calldatas; uint256 startBlock; uint256 endBlock; uint256 forVotes; uint256 againstVotes; uint256 abstainVotes; bool canceled; bool executed; mapping(address => Receipt) receipts; } /** * @dev Receipt structure from Compound Governor Bravo */ struct Receipt { bool hasVoted; uint8 support; uint96 votes; } /** * @dev Part of the Governor Bravo's interface. */ function quorumVotes() public view virtual returns (uint256); /** * @dev Part of the Governor Bravo's interface: _"The official record of all proposals ever proposed"_. */ function proposals( uint256 ) public view virtual returns ( uint256 id, address proposer, uint256 eta, uint256 startBlock, uint256 endBlock, uint256 forVotes, uint256 againstVotes, uint256 abstainVotes, bool canceled, bool executed ); /** * @dev Part of the Governor Bravo's interface: _"Function used to propose a new proposal"_. */ function propose( address[] memory targets, uint256[] memory values, string[] memory signatures, bytes[] memory calldatas, string memory description ) public virtual returns (uint256); /** * @dev Part of the Governor Bravo's interface: _"Queues a proposal of state succeeded"_. */ function queue(uint256 proposalId) public virtual; /** * @dev Part of the Governor Bravo's interface: _"Executes a queued proposal if eta has passed"_. */ function execute(uint256 proposalId) public payable virtual; /** * @dev Cancels a proposal only if sender is the proposer, or proposer delegates dropped below proposal threshold. */ function cancel(uint256 proposalId) public virtual; /** * @dev Part of the Governor Bravo's interface: _"Gets actions of a proposal"_. */ function getActions( uint256 proposalId ) public view virtual returns ( address[] memory targets, uint256[] memory values, string[] memory signatures, bytes[] memory calldatas ); /** * @dev Part of the Governor Bravo's interface: _"Gets the receipt for a voter on a given proposal"_. */ function getReceipt(uint256 proposalId, address voter) public view virtual returns (Receipt memory); }