58 lines
2.5 KiB
Solidity
58 lines
2.5 KiB
Solidity
// SPDX-License-Identifier: CC0-1.0
|
|
pragma solidity ^0.7.1;
|
|
|
|
import "@openzeppelin/contracts/introspection/IERC165.sol";
|
|
|
|
/**
|
|
@title ERC-1155 Multi Token Receiver Interface
|
|
@dev See https://eips.ethereum.org/EIPS/eip-1155
|
|
*/
|
|
abstract contract IERC1155TokenReceiver is IERC165 {
|
|
|
|
/**
|
|
@dev 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).
|
|
@param operator The address which initiated the transfer (i.e. msg.sender)
|
|
@param from The address which previously owned the token
|
|
@param id The ID of the token being transferred
|
|
@param value The amount of tokens being transferred
|
|
@param data Additional data with no specified format
|
|
@return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed
|
|
*/
|
|
function onERC1155Received(
|
|
address operator,
|
|
address from,
|
|
uint256 id,
|
|
uint256 value,
|
|
bytes calldata data
|
|
)
|
|
external virtual
|
|
returns(bytes4);
|
|
|
|
/**
|
|
@dev 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).
|
|
@param operator The address which initiated the batch transfer (i.e. msg.sender)
|
|
@param from The address which previously owned the token
|
|
@param ids An array containing ids of each token being transferred (order and length must match values array)
|
|
@param values An array containing amounts of each token being transferred (order and length must match ids array)
|
|
@param data Additional data with no specified format
|
|
@return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed
|
|
*/
|
|
function onERC1155BatchReceived(
|
|
address operator,
|
|
address from,
|
|
uint256[] calldata ids,
|
|
uint256[] calldata values,
|
|
bytes calldata data
|
|
)
|
|
external virtual
|
|
returns(bytes4);
|
|
}
|