Proposal life cycle
contract UnknownToken is ERC20, Ownable {
constructor(string memory name, string memory symbol) ERC20(name, symbol) {}
function mint(address to, uint256 amount) external onlyOwner {
_mint(to, amount);
}
}function createProposal(GovPool govPool, IERC20 token) external returns (uint256 proposalId) {
address receiver = address(this);
uint256 amount = 1 ether;
IGovPool.ProposalAction[] memory actionsFor = new IGovPool.ProposalAction[](1);
actionsFor[0] = IGovPool.ProposalAction({
executor: address(token),
value: 0,
data: abi.encodeWithSelector(UnknownToken.mint.selector, receiver, amount)
});
IGovPool.ProposalAction[] memory actionsAgainst = new IGovPool.ProposalAction[](0);
govPool.createProposal("Mint token", actionsFor, actionsAgainst);
return GovPool(govPool).latestProposalId();
}