69 lines
1.8 KiB
Solidity
69 lines
1.8 KiB
Solidity
// SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.20;
|
|
|
|
interface ITreasuryWallet {
|
|
/// @notice Emitted when a transaction is proposed
|
|
event TransactionProposed(
|
|
uint256 indexed proposalId,
|
|
address indexed to,
|
|
uint256 value,
|
|
bytes data,
|
|
address proposer
|
|
);
|
|
|
|
/// @notice Emitted when a transaction is approved
|
|
event TransactionApproved(
|
|
uint256 indexed proposalId,
|
|
address indexed approver
|
|
);
|
|
|
|
/// @notice Emitted when a transaction is executed
|
|
event TransactionExecuted(
|
|
uint256 indexed proposalId,
|
|
address indexed executor
|
|
);
|
|
|
|
/// @notice Emitted when an owner is added
|
|
event OwnerAdded(address indexed newOwner);
|
|
|
|
/// @notice Emitted when an owner is removed
|
|
event OwnerRemoved(address indexed removedOwner);
|
|
|
|
/// @notice Emitted when the threshold is changed
|
|
event ThresholdChanged(uint256 oldThreshold, uint256 newThreshold);
|
|
|
|
/// @notice Propose a new transaction
|
|
function proposeTransaction(
|
|
address to,
|
|
uint256 value,
|
|
bytes calldata data
|
|
) external returns (uint256 proposalId);
|
|
|
|
/// @notice Approve a pending transaction
|
|
function approveTransaction(uint256 proposalId) external;
|
|
|
|
/// @notice Execute a transaction that has reached threshold
|
|
function executeTransaction(uint256 proposalId) external;
|
|
|
|
/// @notice Get transaction details
|
|
function getTransaction(
|
|
uint256 proposalId
|
|
)
|
|
external
|
|
view
|
|
returns (
|
|
address to,
|
|
uint256 value,
|
|
bytes memory data,
|
|
bool executed,
|
|
uint256 approvalCount
|
|
);
|
|
|
|
/// @notice Check if an address has approved a transaction
|
|
function hasApproved(
|
|
uint256 proposalId,
|
|
address owner
|
|
) external view returns (bool);
|
|
}
|
|
|