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