interface IGAMEEVoucherInventoryTransferable {
    /**
     * Safely transfers some token.
     * @dev Reverts if `to` is the zero address.
     * @dev Reverts if the sender is not approved.
     * @dev Reverts if `from` has an insufficient balance.
     * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.
     * @dev Emits a `TransferSingle` event.
     * @param from Current token owner.
     * @param to Address of the new token owner.
     * @param id Identifier of the token to transfer.
     * @param value Amount of token to transfer.
     * @param data Optional data to send along to a receiver contract.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        uint256 value,
        bytes calldata data
    ) external;
}
/**
 * @dev Interface for the transfer function of the GAMEE voucher inventory contract.
 */
function safeTransferFrom(
    address from,
    address to,
    uint256 id,
    uint256 value,
    bytes calldata data
) external;

/**
 * Safely transfers some token.
 * @dev Reverts if `to` is the zero address.
 * @dev Reverts if the sender is not approved.
 * @dev Reverts if `from` has an insufficient balance.
 * @dev Reverts if `to` is a contract and the call to {IERC1155TokenReceiver-onERC1155received} fails or is refused.
 * @dev Emits a `TransferSingle` event.
 * @param from Current token owner.
 * @param to Address of the new token owner.
 * @param id Identifier of the token to transfer.
 * @param value Amount of token to transfer.
 * @param data Optional data to send along to a receiver contract.
 */