dsa-connectors/contracts/mainnet/connectors/INST/main.sol
2022-03-22 20:54:40 +05:30

62 lines
2.2 KiB
Solidity

//SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
/**
* @title Instadapp Governance.
* @dev Governance.
*/
import { TokenInterface } from "../../common/interfaces.sol";
import { Stores } from "../../common/stores.sol";
import { Helpers } from "./helpers.sol";
import { Events } from "./events.sol";
abstract contract Resolver is Events, Helpers {
/**
* @dev Delegate votes.
* @notice Delegating votes to delegatee.
* @param delegatee The address to delegate the votes.
*/
function delegate(address delegatee) external payable returns (string memory _eventName, bytes memory _eventParam) {
require(instToken.delegates(address(this)) != delegatee, "Already delegated to same delegatee.");
instToken.delegate(delegatee);
_eventName = "LogDelegate(address)";
_eventParam = abi.encode(delegatee);
}
/**
* @dev Cast vote.
* @notice Casting vote for a proposal
* @param proposalId The id of the proposal to vote on
* @param support The support value for the vote. 0=against, 1=for, 2=abstain
*/
function voteCast(uint256 proposalId, uint256 support) external payable returns (string memory _eventName, bytes memory _eventParam) {
instaGovernor.castVoteWithReason(proposalId, uint8(support), "");
_eventName = "LogVoteCast(uint256,uint256,string)";
_eventParam = abi.encode(proposalId, support, "");
}
/**
* @dev Cast vote with reason.
* @notice Casting vote for a proposal
* @param proposalId The id of the proposal to vote on
* @param support The support value for the vote. 0=against, 1=for, 2=abstain
* @param reason The reason given for the vote
*/
function voteCastWithReason(uint256 proposalId, uint256 support, string calldata reason) external payable returns (string memory _eventName, bytes memory _eventParam) {
instaGovernor.castVoteWithReason(proposalId, uint8(support), reason);
_eventName = "LogVoteCast(uint256,uint256,string)";
_eventParam = abi.encode(proposalId, support, reason);
}
}
contract ConnectV2InstadappGovernanceBravo is Resolver {
string public constant name = "Instadapp-governance-bravo-v1";
}