# IERC1155TokenReceiver

## Functions

### onERC1155Received

```solidity
function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes data) external returns (bytes4)
```

*Handles the receipt of a single ERC1155 token type. This function is called at the end of a `safeTransferFrom` after the balance has been updated. To accept the transfer, this must return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` (i.e. 0xf23a6e61, or its own function selector).*

**Parameters**

| Name     | Type    | Description                                                |
| -------- | ------- | ---------------------------------------------------------- |
| operator | address | The address which initiated the transfer (i.e. msg.sender) |
| from     | address | The address which previously owned the token               |
| id       | uint256 | The ID of the token being transferred                      |
| value    | uint256 | The amount of tokens being transferred                     |
| data     | bytes   | Additional data with no specified format                   |

**Return Values**

| Name | Type   | Description                                                                                            |
| ---- | ------ | ------------------------------------------------------------------------------------------------------ |
| \[0] | bytes4 | `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed |

### onERC1155BatchReceived

```solidity
function onERC1155BatchReceived(address operator, address from, uint256[] ids, uint256[] values, bytes data) external returns (bytes4)
```

*Handles the receipt of a multiple ERC1155 token types. This function is called at the end of a `safeBatchTransferFrom` after the balances have been updated. To accept the transfer(s), this must return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` (i.e. 0xbc197c81, or its own function selector).*

**Parameters**

| Name     | Type       | Description                                                                                         |
| -------- | ---------- | --------------------------------------------------------------------------------------------------- |
| operator | address    | The address which initiated the batch transfer (i.e. msg.sender)                                    |
| from     | address    | The address which previously owned the token                                                        |
| ids      | uint256\[] | An array containing ids of each token being transferred (order and length must match values array)  |
| values   | uint256\[] | An array containing amounts of each token being transferred (order and length must match ids array) |
| data     | bytes      | Additional data with no specified format                                                            |

**Return Values**

| Name | Type   | Description                                                                                                     |
| ---- | ------ | --------------------------------------------------------------------------------------------------------------- |
| \[0] | bytes4 | `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed |


---

# 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://seer-3.gitbook.io/seer-documentation/developers/contracts/interaction/conditional-tokens/erc1155/ierc1155tokenreceiver.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.
