# ERC1155Supply compilation error

**URL:** <https://forum.openzeppelin.com/t/erc1155supply-compilation-error/33133>\
**Category:** Contracts\
**Created:** [November 15, 2022, 5:39pm UTC](https://forum.openzeppelin.com/t/erc1155supply-compilation-error/33133 "2022-11-15T17:39:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![zakrad](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/zakrad/32/16961_2.png) [@zakrad](https://forum.openzeppelin.com/u/zakrad)\
**Post date:** [November 15, 2022, 5:39pm UTC](https://forum.openzeppelin.com/t/erc1155supply-compilation-error/33133/1 "2022-11-15T17:39:48Z")

</div>

I tried to compile ERC1155Supply with ERC1155 token with hardhat and got the code from OZ wizard this is the error i get

```auto
TypeError: Invalid contract specified in override list: "ERC1155Supply".
   --> contracts/Proposal.sol:206:9:
    |
206 | override(ERC1155, ERC1155Supply)
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Note: This contract: 
  --> @openzeppelin/contracts/token/ERC1155/extensions/ERC1155Supply.sol:16:1:
   |
16 | abstract contract ERC1155Supply is ERC1155 {
   | ^ (Relevant source part starts here and spans across multiple lines).

Error HH600: Compilation failed

```

Also this is the change i did in beforeTokenTransfer and afterTokenTransfer Hooks

```auto
function _afterTokenTransfer(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
        internal
        override(ERC1155, ERC1155Supply)
    {
        super._afterTokenTransfer(operator, from, to, ids, amounts, data);
        if(from != address(0) && to != address(0)){
            if(balanceOf(from, ids[0]) == 0){
              removeHolder(from, ids[0]);
            } else {
              reduceBalance(from, ids[0]);
            }
        } else if(to == address(0)){
           if(balanceOf(from, ids[0]) == 0){
              removeHolder(from, ids[0]);
            } else {
              reduceBalance(from, ids[0]);
            } 
        }
    }

```

openzeppelin version 4.7.3

---

<div class="post-metadata">

**Author:** ![frangio](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/frangio/32/15251_2.png) [@frangio](https://forum.openzeppelin.com/u/frangio)\
**Post date:** [November 15, 2022, 6:18pm UTC](https://forum.openzeppelin.com/t/erc1155supply-compilation-error/33133/2 "2022-11-15T18:18:25Z")

</div>

In `_afterTokenTransfer` try removing `ERC1155Supply` from `override(ERC1155, ERC1155Supply)`.

---

<div class="post-metadata">

**Author:** ![zakrad](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/zakrad/32/16961_2.png) [@zakrad](https://forum.openzeppelin.com/u/zakrad)\
**Post date:** [November 15, 2022, 6:32pm UTC](https://forum.openzeppelin.com/t/erc1155supply-compilation-error/33133/3 "2022-11-15T18:32:18Z")

</div>

Thanks, worked but why it just affects afterTransferToken ?

---

<div class="post-metadata">

**Author:** ![frangio](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.openzeppelin.com/frangio/32/15251_2.png) [@frangio](https://forum.openzeppelin.com/u/frangio)\
**Post date:** [November 17, 2022, 2:13pm UTC](https://forum.openzeppelin.com/t/erc1155supply-compilation-error/33133/4 "2022-11-17T14:13:22Z")

</div>

`_afterTokenTransfer` is not modified by ERC1155Supply while [`_beforeTokenTransfer`](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/99589794db43c8b285f5b3464d2e0864caab8199/contracts/token/ERC1155/extensions/ERC1155Supply.sol#L36) is.
