The Hats contract needs to override the ERC1155.balanceOfBatch function
The Hats contract does not override the ERC1155.balanceOfBatch function\\nThe Hats contract overrides the ERC1155.balanceOf function to return a balance of 0 when the hat is inactive or the wearer is ineligible.\\n```\\n    function balanceOf(address _wearer, uint256 _hatId)\\n        public\\n        view\\n        override(ERC1155, IHats)\\n        returns (uint256 balance)\\n    {\\n        Hat storage hat = _hats[_hatId];\\n\\n        balance = 0;\\n\\n        if (_isActive(hat, _hatId) && _isEligible(_wearer, hat, _hatId)) {\\n            balance = super.balanceOf(_wearer, _hatId);\\n        }\\n    }\\n```\\n\\nBut the Hats contract does not override the ERC1155.balanceOfBatch function, which causes balanceOfBatch to return the actual balance no matter what the circumstances.\\n```\\n    function balanceOfBatch(address[] calldata owners, uint256[] calldata ids)\\n        public\\n        view\\n        virtual\\n        returns (uint256[] memory balances)\\n    {\\n        require(owners.length == ids.length, "LENGTH_MISMATCH");\\n\\n        balances = new uint256[](owners.length);\\n\\n        // Unchecked because the only math done is incrementing\\n        // the array index counter which cannot possibly overflow.\\n        unchecked {\\n            for (uint256 i = 0; i < owners.length; ++i) {\\n                balances[i] = _balanceOf[owners[i]][ids[i]];\\n            }\\n        }\\n    }\\n```\\n
Consider overriding the ERC1155.balanceOfBatch function in Hats contract to return 0 when the hat is inactive or the wearer is ineligible.
This will make balanceOfBatch return a different result than balanceOf, which may cause errors when integrating with other projects
```\\n    function balanceOf(address _wearer, uint256 _hatId)\\n        public\\n        view\\n        override(ERC1155, IHats)\\n        returns (uint256 balance)\\n    {\\n        Hat storage hat = _hats[_hatId];\\n\\n        balance = 0;\\n\\n        if (_isActive(hat, _hatId) && _isEligible(_wearer, hat, _hatId)) {\\n            balance = super.balanceOf(_wearer, _hatId);\\n        }\\n    }\\n```\\n