// SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.7.0 <0.9.0; /** * @title IOwnerManager - Interface for contract which manages Safe owners and a threshold to authorize transactions. * @author @safe-global/safe-protocol */ interface IOwnerManager { event AddedOwner(address indexed owner); event RemovedOwner(address indexed owner); event ChangedThreshold(uint256 threshold); /** * @notice Adds the owner `owner` to the Safe and updates the threshold to `_threshold`. * @dev This can only be done via a Safe transaction. * @param owner New owner address. * @param _threshold New threshold. */ function addOwnerWithThreshold(address owner, uint256 _threshold) external; /** * @notice Removes the owner `owner` from the Safe and updates the threshold to `_threshold`. * @dev This can only be done via a Safe transaction. * @param prevOwner Owner that pointed to the owner to be removed in the linked list * @param owner Owner address to be removed. * @param _threshold New threshold. */ function removeOwner(address prevOwner, address owner, uint256 _threshold) external; /** * @notice Replaces the owner `oldOwner` in the Safe with `newOwner`. * @dev This can only be done via a Safe transaction. * @param prevOwner Owner that pointed to the owner to be replaced in the linked list * @param oldOwner Owner address to be replaced. * @param newOwner New owner address. */ function swapOwner(address prevOwner, address oldOwner, address newOwner) external; /** * @notice Changes the threshold of the Safe to `_threshold`. * @dev This can only be done via a Safe transaction. * @param _threshold New threshold. */ function changeThreshold(uint256 _threshold) external; /** * @notice Returns the number of required confirmations for a Safe transaction aka the threshold. * @return Threshold number. */ function getThreshold() external view returns (uint256); /** * @notice Returns if `owner` is an owner of the Safe. * @return Boolean if `owner` is an owner of the Safe. */ function isOwner(address owner) external view returns (bool); /** * @notice Returns a list of Safe owners. * @return Array of Safe owners. */ function getOwners() external view returns (address[] memory); }