// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.9; import "./libraries/Types.sol"; import "./interfaces/IERC20.sol"; import { ISablierAirdrop } from "./interfaces/ISablierAirdrop.sol"; // copied from proposal 28 contract Proposal { IERC20 public constant torn = IERC20(0x77777FeDdddFfC19Ff86DB637967013e6C6A116C); ISablierAirdrop public immutable airdrop; uint256 public constant airdropDuration = 180 days; Types.Recipient[] public recipients; constructor(address _airdropContract) { Types.Recipient[1] memory _recipients = [ Types.Recipient({ addr: 0xeb3E49Af2aB5D5D0f83A9289cF5a34d9e1f6C5b4, deposit: 1000 ether, initialLockedBalance: 1000 ether }) ]; airdrop = ISablierAirdrop(_airdropContract); for (uint256 i = 0; i < _recipients.length; i++) { recipients.push(_recipients[i]); } } function executeProposal() external { torn.transfer(address(airdrop), 1000000 ether); require(recipients[0].addr != address(0), "zero"); uint256 startTime = block.timestamp; uint256 endTime = startTime + airdropDuration; airdrop.createAirdrop(recipients, startTime, endTime); } }