onERC1155Received and onERC1155BatchReceived function shows not implemented error

Hi. Below is my code for an ERC1155 upgradeable contract which should be able to receive 1155 token and erc1155 token batches. Even though i have implemented the onERC1155Received and onERC1155BatchReceived functions it gives the following error for both the functions

TypeError: Contract "ERC1155" should be marked as abstract.
--> contracts/ERC1155.sol:13:1:
|
13 | contract ERC1155 is Initializable, ... eable, IERC1155ReceiverUpgradeable{
| ^ (Relevant source part starts here and spans across multiple lines).
Note: Missing implementation:
--> @openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol:27:5:
|
27 | function onERC1155Received(
| ^ (Relevant source part starts here and spans across multiple lines).

Following is my code of the contract

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol";

import "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol";

import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol";

import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155BurnableUpgradeable.sol";

import "@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/ERC1155SupplyUpgradeable.sol";

import "@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol";

import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";

contract ERC1155 is  Initializable, ERC1155Upgradeable, AccessControlUpgradeable, PausableUpgradeable, ERC1155BurnableUpgradeable, ERC1155SupplyUpgradeable, IERC1155ReceiverUpgradeable{

    bytes32 public constant URI_SETTER_ROLE = keccak256("URI_SETTER_ROLE");

    bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");

    /// @custom:oz-upgrades-unsafe-allow constructor

    constructor() initializer {}

    function initialize() initializer public {

        __ERC1155_init("https://akriptt.com/token/");

        __AccessControl_init();

        __Pausable_init();

        __ERC1155Burnable_init();

        __ERC1155Supply_init();

        _grantRole(DEFAULT_ADMIN_ROLE, msg.sender);

        _grantRole(URI_SETTER_ROLE, msg.sender);

        _grantRole(PAUSER_ROLE, msg.sender);

        _grantRole(MINTER_ROLE, msg.sender);

    }

    function setURI(string memory newuri) public onlyRole(URI_SETTER_ROLE) {

        _setURI(newuri);

    }

    function pause() public onlyRole(PAUSER_ROLE) {

        _pause();

    }

    function unpause() public onlyRole(PAUSER_ROLE) {

        _unpause();

    }

    function mint(address account, uint256 id, uint256 amount, bytes memory data)

        public

        onlyRole(MINTER_ROLE)

    {

        _mint(account, id, amount, data);

    }

    function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)

        public

        onlyRole(MINTER_ROLE)

    {

        _mintBatch(to, ids, amounts, data);

    }

    function _beforeTokenTransfer(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)

        internal

        whenNotPaused

        override(ERC1155Upgradeable, ERC1155SupplyUpgradeable)

    {

        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);

    }

    // The following functions are overrides required by Solidity.

    function supportsInterface(bytes4 interfaceId)

        public

        view

        override(IERC165Upgradeable, ERC1155Upgradeable, AccessControlUpgradeable)

        returns (bool)

    {

        return super.supportsInterface(interfaceId);

    }

   

   function onERC1155Received(address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data

    ) external returns (bytes4) {

        return bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"));

    }

    function onERC1155BatchReceived(

        address operator,

        address from,

        uint256[] calldata ids,

        uint256[] calldata values,

        bytes calldata data

    ) external returns (bytes4){

        return bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"));

    }

}

Can someone help me in understanding what is causing this error.