// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.0; /// @title Enum - Collection of enums used in Safe contracts. /// @author Richard Meissner - @rmeissner abstract contract Enum { enum Operation { Call, DelegateCall } } /// @title IGnosisSafe - Gnosis Safe Interface interface IGnosisSafe { function addOwnerWithThreshold(address owner, uint256 _threshold) external; function approveHash(bytes32 hashToApprove) external; function approvedHashes(address, bytes32) external view returns (uint256); function changeThreshold(uint256 _threshold) external; function checkNSignatures(bytes32 dataHash, bytes memory data, bytes memory signatures, uint256 requiredSignatures) external view; function checkSignatures(bytes32 dataHash, bytes memory data, bytes memory signatures) external view; function encodeTransactionData( address to, uint256 value, bytes memory data, Enum.Operation operation, uint256 safeTxGas, uint256 baseGas, uint256 gasPrice, address gasToken, address refundReceiver, uint256 _nonce ) external view returns (bytes memory); function execTransaction( address to, uint256 value, bytes memory data, Enum.Operation operation, uint256 safeTxGas, uint256 baseGas, uint256 gasPrice, address gasToken, address refundReceiver, bytes memory signatures ) external payable returns (bool success); function getOwners() external view returns (address[] memory); function getThreshold() external view returns (uint256); function isOwner(address owner) external view returns (bool); function nonce() external view returns (uint256); function removeOwner(address prevOwner, address owner, uint256 _threshold) external; function setup( address[] memory _owners, uint256 _threshold, address to, bytes memory data, address fallbackHandler, address paymentToken, uint256 payment, address paymentReceiver ) external; function swapOwner(address prevOwner, address oldOwner, address newOwner) external; }