You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.6 KiB
Solidity
51 lines
1.6 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
|
|
pragma solidity ^0.8.0;
|
|
|
|
import "../../governance/extensions/GovernorCountingSimple.sol";
|
|
import "../../governance/extensions/GovernorVotes.sol";
|
|
|
|
abstract contract GovernorWithParamsMock is GovernorVotes, GovernorCountingSimple {
|
|
event CountParams(uint256 uintParam, string strParam);
|
|
|
|
function quorum(uint256) public pure override returns (uint256) {
|
|
return 0;
|
|
}
|
|
|
|
function votingDelay() public pure override returns (uint256) {
|
|
return 4;
|
|
}
|
|
|
|
function votingPeriod() public pure override returns (uint256) {
|
|
return 16;
|
|
}
|
|
|
|
function _getVotes(
|
|
address account,
|
|
uint256 blockNumber,
|
|
bytes memory params
|
|
) internal view override(Governor, GovernorVotes) returns (uint256) {
|
|
uint256 reduction = 0;
|
|
// If the user provides parameters, we reduce the voting weight by the amount of the integer param
|
|
if (params.length > 0) {
|
|
(reduction, ) = abi.decode(params, (uint256, string));
|
|
}
|
|
// reverts on overflow
|
|
return super._getVotes(account, blockNumber, params) - reduction;
|
|
}
|
|
|
|
function _countVote(
|
|
uint256 proposalId,
|
|
address account,
|
|
uint8 support,
|
|
uint256 weight,
|
|
bytes memory params
|
|
) internal override(Governor, GovernorCountingSimple) {
|
|
if (params.length > 0) {
|
|
(uint256 _uintParam, string memory _strParam) = abi.decode(params, (uint256, string));
|
|
emit CountParams(_uintParam, _strParam);
|
|
}
|
|
return super._countVote(proposalId, account, support, weight, params);
|
|
}
|
|
}
|