# IERC721

## IERC721

*Developer note: Required interface of an ERC721 compliant contract.*

### Events

#### Transfer

`Transfer(address,address,uint256)`

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### Approval

`Approval(address,address,uint256)`

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| approved | address |             |
| tokenId  | uint256 |             |

#### ApprovalForAll

`ApprovalForAll(address,address,bool)`

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| operator | address |             |
| approved | bool    |             |

### Functions

#### balanceOf

`balanceOf(address)` view external

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| owner | address |             |

**Returns:**

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| balance | uint256 |             |

#### ownerOf

`ownerOf(uint256)` view external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| tokenId | uint256 |             |

**Returns:**

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| owner | address |             |

#### safeTransferFrom

`safeTransferFrom(address,address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### transferFrom

`transferFrom(address,address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### approve

`approve(address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| to      | address |             |
| tokenId | uint256 |             |

#### getApproved

`getApproved(uint256)` view external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| tokenId | uint256 |             |

**Returns:**

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| operator | address |             |

#### setApprovalForAll

`setApprovalForAll(address,bool)` external

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| operator   | address |             |
| \_approved | bool    |             |

#### isApprovedForAll

`isApprovedForAll(address,address)` view external

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| operator | address |             |

**Returns:**

| Name | Type | Description |
| ---- | ---- | ----------- |
| \[0] | bool |             |

#### safeTransferFrom

`safeTransferFrom(address,address,uint256,bytes)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |
| data    | bytes   |             |

***

## IERC721

*Developer note: Required interface of an ERC721 compliant contract.*

### Events

#### Transfer

`Transfer(address,address,uint256)`

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### Approval

`Approval(address,address,uint256)`

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| approved | address |             |
| tokenId  | uint256 |             |

#### ApprovalForAll

`ApprovalForAll(address,address,bool)`

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| operator | address |             |
| approved | bool    |             |

### Functions

#### balanceOf

`balanceOf(address)` view external

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| owner | address |             |

**Returns:**

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| balance | uint256 |             |

#### ownerOf

`ownerOf(uint256)` view external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| tokenId | uint256 |             |

**Returns:**

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| owner | address |             |

#### safeTransferFrom

`safeTransferFrom(address,address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### transferFrom

`transferFrom(address,address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### approve

`approve(address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| to      | address |             |
| tokenId | uint256 |             |

#### getApproved

`getApproved(uint256)` view external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| tokenId | uint256 |             |

**Returns:**

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| operator | address |             |

#### setApprovalForAll

`setApprovalForAll(address,bool)` external

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| operator   | address |             |
| \_approved | bool    |             |

#### isApprovedForAll

`isApprovedForAll(address,address)` view external

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| operator | address |             |

**Returns:**

| Name | Type | Description |
| ---- | ---- | ----------- |
| \[0] | bool |             |

#### safeTransferFrom

`safeTransferFrom(address,address,uint256,bytes)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |
| data    | bytes   |             |

***

## IERC721

*Developer note: Required interface of an ERC721 compliant contract.*

### Events

#### Transfer

`Transfer(address,address,uint256)`

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### Approval

`Approval(address,address,uint256)`

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| approved | address |             |
| tokenId  | uint256 |             |

#### ApprovalForAll

`ApprovalForAll(address,address,bool)`

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| operator | address |             |
| approved | bool    |             |

### Functions

#### balanceOf

`balanceOf(address)` view external

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| owner | address |             |

**Returns:**

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| balance | uint256 |             |

#### ownerOf

`ownerOf(uint256)` view external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| tokenId | uint256 |             |

**Returns:**

| Name  | Type    | Description |
| ----- | ------- | ----------- |
| owner | address |             |

#### safeTransferFrom

`safeTransferFrom(address,address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### transferFrom

`transferFrom(address,address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |

#### approve

`approve(address,uint256)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| to      | address |             |
| tokenId | uint256 |             |

#### getApproved

`getApproved(uint256)` view external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| tokenId | uint256 |             |

**Returns:**

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| operator | address |             |

#### setApprovalForAll

`setApprovalForAll(address,bool)` external

| Name       | Type    | Description |
| ---------- | ------- | ----------- |
| operator   | address |             |
| \_approved | bool    |             |

#### isApprovedForAll

`isApprovedForAll(address,address)` view external

| Name     | Type    | Description |
| -------- | ------- | ----------- |
| owner    | address |             |
| operator | address |             |

**Returns:**

| Name | Type | Description |
| ---- | ---- | ----------- |
| \[0] | bool |             |

#### safeTransferFrom

`safeTransferFrom(address,address,uint256,bytes)` external

| Name    | Type    | Description |
| ------- | ------- | ----------- |
| from    | address |             |
| to      | address |             |
| tokenId | uint256 |             |
| data    | bytes   |             |

***


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.algebra.finance/algebra-integral-documentation/algebra-v1-technical-reference/contracts/api-reference-v1.0/v1.0-periphery/ierc721.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
