// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.0; /** * @title SOMA ERC721 Permit Upgradeable Contract. * @author SOMA.finance. * @notice Interface of the {ERC721PermitUpgradeable} contract. */ interface IERC721PermitUpgradeable { /** * @notice The permit typehash used in the permit signature. * @return The typehash for the permit. */ function PERMIT_TYPEHASH() external pure returns (bytes32); /** * @notice The domain separator used in the permit signature. * @return The domain separator used in encoding of permit signature. */ function DOMAIN_SEPARATOR() external view returns (bytes32); /** * @notice Approve of a specific token ID for spending by spender via signature. * @param spender The account that is being approved. * @param tokenId The ID of the token that is being approved for spending. * @param deadline The deadline timestamp by which the call must be mined for the approve to work. * @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`. * @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`. * @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`. */ function permit(address spender, uint256 tokenId, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external payable; }