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