// SPDX-License-Identifier: MIT pragma solidity ^0.8.24; interface IAddressSet { function add(address[] memory _set, address _value) external pure returns (address[] memory newSet); function remove(address[] memory _set, address _value) external pure returns (address[] memory newSet); function removeAll(address[] memory _set, address[] memory _values) external pure returns (address[] memory newSet); function cardinality(address[] memory _set) external pure returns (uint256); function contains(address[] memory _set, address _value) external pure returns (bool); function containsAll(address[] memory _set, address[] memory _values) external pure returns (bool); function containsAny(address[] memory _set, address[] memory _values) external pure returns (bool); function difference(address[] memory _set, address[] memory _values) external pure returns (address[] memory); function equal(address[] memory _set, address[] memory _values) external pure returns (bool); function intersect(address[] memory _set, address[] memory _values) external pure returns (address[] memory); function union(address[] memory _set, address[] memory _values) external pure returns (address[] memory); function isSubset(address[] memory _set, address[] memory _values) external pure returns (bool); function isSuperset(address[] memory _set, address[] memory _values) external pure returns (bool); function isProperSubset(address[] memory _set, address[] memory _values) external pure returns (bool); function isProperSuperset(address[] memory _set, address[] memory _values) external pure returns (bool); }