/ test / common / samples / SimplePoolManagementProposal.t.sol
SimplePoolManagementProposal.t.sol
 1  pragma solidity >=0.6.0;
 2  pragma experimental ABIEncoderV2;
 3  
 4  
 5  import "../../../contracts/governance/Proposal.sol";
 6  import "../../../contracts/interfaces/IProposalWrapper.sol";
 7  import "../../../contracts/interfaces/IProtocolSettings.sol";
 8  import "../../../contracts/interfaces/IERC20.sol";
 9  import "../../../contracts/utils/OpenZeppelinOwnable.sol";
10  
11  
12  contract SimplePoolManagementProposal is Proposal, OpenZeppelinOwnable {
13  
14      bytes executionBytes;
15  
16      function setExecutionBytes(bytes memory _executionBytes) onlyOwner public {
17          executionBytes = _executionBytes;
18      }
19  
20      function getExecutionBytes() public view returns (bytes memory) {
21          return executionBytes;
22      }
23  
24      function getExecutionBytesSize() public view returns (uint) {
25          return executionBytes.length;
26      }
27  
28      function getName() public override view returns (string memory) {
29  
30          return "Pool Management Operation";
31      }
32  
33      function execute(IProtocolSettings _settings) public override {
34  
35      }
36  
37      function executePool(IERC20 pool) public override {
38          (bool success, ) = address(pool).call(executionBytes);
39          require(success == true, "failed to sucessfully execute");
40      }
41  }