Hello guys I was wondering why using Strings for uint256
still works in my contract even though I didnt import the Strings library from Openzeppelin.
On remix it gives me the error DeclarationError: Identifier not found or not unique and it wont let me compile unless I import Strings.sol = but when I deployed it from vs code, I got no errors and it worked just fine.
pragma solidity >=0.8.9 <0.9.0;
import "erc721a/contracts/extensions/ERC721ABurnable.sol";
import 'erc721a/contracts/extensions/ERC721AQueryable.sol';
import '@openzeppelin/contracts/access/Ownable.sol';
import '@openzeppelin/contracts/utils/cryptography/MerkleProof.sol';
contract Free is ERC721ABurnable, ERC721AQueryable, Ownable{
using Strings for uint256;
and this is where its being used
function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');
if (isRevealed == false) {
return hiddenMetadata;
}
string memory baseURI = _baseURI();
return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, _tokenId.toString(), ".json")) : '';
}
Can anyone help me understand why I am able to do this without importing the library. I am big nooba and would appreciate the help. Excuse my writing guys England is not my first language. Much love