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