generated from aragon/osx-plugin-template-hardhat
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Internal suggestions - contract changes
- Loading branch information
Showing
6 changed files
with
670 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
// SPDX-License-Identifier: AGPL-3.0-or-later | ||
|
||
pragma solidity 0.8.17; | ||
|
||
import {IDAO} from "@aragon/osx/core/dao/IDAO.sol"; | ||
|
||
/// @title IMultisig | ||
/// @author Aragon Association - 2023 | ||
/// @notice An interface for an on-chain multisig governance plugin in which a proposal passes if X out of Y approvals are met. | ||
interface IMultisig { | ||
/// @notice Approves and, optionally, executes the proposal. | ||
/// @param _proposalId The ID of the proposal. | ||
function approve(uint256 _proposalId) external; | ||
|
||
/// @notice Checks if an account can participate on a proposal vote. This can be because the vote | ||
/// - was executed, or | ||
/// - the voter is not listed. | ||
/// @param _proposalId The proposal Id. | ||
/// @param _account The address of the user to check. | ||
/// @return Returns true if the account is allowed to vote. | ||
/// @dev The function assumes the queried proposal exists. | ||
function canApprove(uint256 _proposalId, address _account) external view returns (bool); | ||
|
||
/// @notice Checks if a proposal can be executed. | ||
/// @param _proposalId The ID of the proposal to be checked. | ||
/// @return True if the proposal can be executed, false otherwise. | ||
function canExecute(uint256 _proposalId) external view returns (bool); | ||
|
||
/// @notice Returns whether the account has approved the proposal. Note, that this does not check if the account is listed. | ||
/// @param _proposalId The ID of the proposal. | ||
/// @param _account The account address to be checked. | ||
/// @return The vote option cast by a voter for a certain proposal. | ||
function hasApproved(uint256 _proposalId, address _account) external view returns (bool); | ||
|
||
/// @notice Executes a proposal. | ||
/// @param _proposalId The ID of the proposal to be executed. | ||
function execute(uint256 _proposalId) external; | ||
} |
Oops, something went wrong.