// SPDX-License-Identifier: GPL-3.0-or-later
// This file is part of the http://github.com/aaronbloomfield/ccc repository,
// and is released under the GPL 3.0 license.
pragma solidity ^0.8.24;
import "./IERC721Metadata.sol";
import "./IERC165.sol";
interface INFTManager is IERC721Metadata {
// This creates a NFT for `_to` with the pased file name `_uri`. Note
// that `_uri` is just the filename itself -- the prefix is set via
// overriding _baseURI()
function mintWithURI(address _to, string memory _uri) external returns (uint);
// This also creates a NFT, but assumes `msg.sender` is who the NFT is
// for; it can just call the previous function.
function mintWithURI(string memory _uri) external returns (uint);
// This is just a count of how many NFTs have been minted with this
// manager; it can be a public variable.
function count() external view returns (uint);
// Additional functions to implement / override:
// supportsInterface(): for the interfaces specified in the HW writeup
// _baseURI(): the part of the full path name before the filename itself
// tokenURI(): get the file name (with _baseURI() before it) for the passed NFT ID
}