# IERC721Permit

Extension to ERC721 that includes a permit function for signature based approvals

### Functions[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IERC721Permit#functions) <a href="#functions" id="functions"></a>

#### PERMIT\_TYPEHASH[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IERC721Permit#permit_typehash) <a href="#permit_typehash" id="permit_typehash"></a>

```solidity
  function PERMIT_TYPEHASH(
  ) external returns (bytes32)
```

The permit typehash used in the permit signature

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IERC721Permit#return-values)

| Type    | Description             |
| ------- | ----------------------- |
| bytes32 | typehash for the permit |

#### DOMAIN\_SEPARATOR[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IERC721Permit#domain_separator) <a href="#domain_separator" id="domain_separator"></a>

```solidity
  function DOMAIN_SEPARATOR(
  ) external returns (bytes32)
```

The domain separator used in the permit signature

**Return Values:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IERC721Permit#return-values-1)

| Name  | Type | Description                                           |
| ----- | ---- | ----------------------------------------------------- |
| `The` |      | domain seperator used in encoding of permit signature |

#### permit[​](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IERC721Permit#permit) <a href="#permit" id="permit"></a>

```solidity
  function permit(
    address spender,
    uint256 tokenId,
    uint256 deadline,
    uint8 v,
    bytes32 r,
    bytes32 s
  ) external
```

Approve of a specific token ID for spending by spender via signature

**Parameters:**[**​**](https://docs.uniswap.org/contracts/v3/reference/periphery/interfaces/IERC721Permit#parameters)

| Name       | Type    | Description                                                                    |
| ---------- | ------- | ------------------------------------------------------------------------------ |
| `spender`  | address | The account that is being approved                                             |
| `tokenId`  | uint256 | The ID of the token that is being approved for spending                        |
| `deadline` | uint256 | The deadline timestamp by which the call must be mined for the approve to work |
| `v`        | uint8   | Must produce valid secp256k1 signature from the holder along with `r` and `s`  |
| `r`        | bytes32 | Must produce valid secp256k1 signature from the holder along with `v` and `s`  |
| `s`        | bytes32 | Must produce valid secp256k1 signature from the holder along with `r` and `v`  |
