interface IERC165 {
	/**
	 * @dev Returns true if this contract implements the interface defined by
	 * `interfaceId`. See the corresponding
	 * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
	 * to learn more about how these ids are created.
	 *
	 * This function call must use less than 30 000 gas.
	 */
	function supportsInterface(bytes4 interfaceId) external view returns (bool);
}
/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
function supportsInterface(bytes4 interfaceId) external view returns (bool);
/**
 	 * @dev Returns true if this contract implements the interface defined by
 	 * `interfaceId`. See the corresponding
 	 * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
 	 * to learn more about how these ids are created.
 	 *
 	 * This function call must use less than 30 000 gas.
 	 */