interface IERC1155Receiver is IERC165 {
    /**
        __         ______   ________         ______                                          
|  \       /      \ |        \       /      \                                         
| $$      |  $$$$$$\| $$$$$$$$      |  $$$$$$\  ______    ______   __    __   ______  
| $$       \$$__| $$| $$__          | $$ __\$$ /      \  /      \ |  \  |  \ /      \ 
| $$       /      $$| $$  \         | $$|    \|  $$$$$$\|  $$$$$$\| $$  | $$|  $$$$$$\
| $$      |  $$$$$$ | $$$$$         | $$ \$$$$| $$   \$$| $$  | $$| $$  | $$| $$  | $$
| $$_____ | $$_____ | $$_____       | $$__| $$| $$      | $$__/ $$| $$__/ $$| $$__/ $$
| $$     \| $$     \| $$     \       \$$    $$| $$       \$$    $$ \$$    $$| $$    $$
 \$$$$$$$$ \$$$$$$$$ \$$$$$$$$        \$$$$$$  \$$        \$$$$$$   \$$$$$$ | $$$$$$$ 
                                                                            | $$      
                                                                            | $$      
                                                                             \$$      
    */
    function onERC1155Received(
        address operator,
        address from,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external returns (bytes4);

    /**
      __         ______   ________         ______                                          
|  \       /      \ |        \       /      \                                         
| $$      |  $$$$$$\| $$$$$$$$      |  $$$$$$\  ______    ______   __    __   ______  
| $$       \$$__| $$| $$__          | $$ __\$$ /      \  /      \ |  \  |  \ /      \ 
| $$       /      $$| $$  \         | $$|    \|  $$$$$$\|  $$$$$$\| $$  | $$|  $$$$$$\
| $$      |  $$$$$$ | $$$$$         | $$ \$$$$| $$   \$$| $$  | $$| $$  | $$| $$  | $$
| $$_____ | $$_____ | $$_____       | $$__| $$| $$      | $$__/ $$| $$__/ $$| $$__/ $$
| $$     \| $$     \| $$     \       \$$    $$| $$       \$$    $$ \$$    $$| $$    $$
 \$$$$$$$$ \$$$$$$$$ \$$$$$$$$        \$$$$$$  \$$        \$$$$$$   \$$$$$$ | $$$$$$$ 
                                                                            | $$      
                                                                            | $$      
                                                                             \$$      
    */
    function onERC1155BatchReceived(
        address operator,
        address from,
        uint256[] calldata ids,
        uint256[] calldata values,
        bytes calldata data
    ) external returns (bytes4);
}
/**
 * @dev _Available since v3.1._
 */
function onERC1155Received(
    address operator,
    address from,
    uint256 id,
    uint256 value,
    bytes calldata data
) external returns (bytes4);

/**
 __         ______   ________         ______                                          
 |  \       /      \ |        \       /      \                                         
 | $$      |  $$$$$$\| $$$$$$$$      |  $$$$$$\  ______    ______   __    __   ______  
 | $$       \$$__| $$| $$__          | $$ __\$$ /      \  /      \ |  \  |  \ /      \ 
 | $$       /      $$| $$  \         | $$|    \|  $$$$$$\|  $$$$$$\| $$  | $$|  $$$$$$\
 | $$      |  $$$$$$ | $$$$$         | $$ \$$$$| $$   \$$| $$  | $$| $$  | $$| $$  | $$
 | $$_____ | $$_____ | $$_____       | $$__| $$| $$      | $$__/ $$| $$__/ $$| $$__/ $$
 | $$     \| $$     \| $$     \       \$$    $$| $$       \$$    $$ \$$    $$| $$    $$
 \$$$$$$$$ \$$$$$$$$ \$$$$$$$$        \$$$$$$  \$$        \$$$$$$   \$$$$$$ | $$$$$$$ 
 | $$      
 | $$      
 \$$      
 */