I just realized the incompatibility with EIP-5095 comes from the generic word redeem for specific usages.
I think this ERC could be renamed into either RedeemCode
or RedeemToken
.
For instance:
pragma solidity ^0.8.0;
interface RedeemableToken /* is ERC165 */ {
/** This emits when a code is redeemed */
event RedeemToken(uint256 _tokenId, address indexed _owner, uint256 _amount);
/** Retrieve the token and give it to the new owner */
function redeemToken(string calldata _code, address _owner) external returns (uint256 _tokenId, uint256 _amount);
/** Checks if the code whose hash is provided is redeemable */
function isRedeemableToken(bytes32 _hash) external view returns (bool);
}