// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.9; pragma abicoder v2; import "../../IGovernor.sol"; import "./IIGovernorProposer.sol"; interface IIPollingFoundation is IGovernor, IIGovernorProposer { struct GovernorSettingsWithoutExecParams { bool accept; uint256 votingDelaySeconds; uint256 votingPeriodSeconds; uint256 vpBlockPeriodSeconds; uint256 thresholdConditionBIPS; uint256 majorityConditionBIPS; } /** * @notice Creates a new proposal without execution parameters * @param _description String description of the proposal * @param _settings Settings of the poposal * @return Proposal id (unique identifier obtained by hashing proposal data) * @notice Emits a ProposalCreated event */ function propose( string memory _description, GovernorSettingsWithoutExecParams memory _settings ) external returns (uint256); /** * @notice Creates a new proposal with execution parameters * @param _targets Array of target addresses on which the calls are to be invoked * @param _values Array of values with which the calls are to be invoked * @param _calldatas Array of call data to be invoked * @param _description String description of the proposal * @param _settings Settings of the poposal * @return Proposal id (unique identifier obtained by hashing proposal data) * @notice Emits a ProposalCreated event */ function propose( address[] memory _targets, uint256[] memory _values, bytes[] memory _calldatas, string memory _description, GovernorSettings memory _settings ) external returns (uint256); }