// 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 "./IERC165.sol";
import "./IERC20Metadata.sol";
interface ITokenCC is IERC20Metadata, IERC165 {
// You'll need a constructor, which should call the ERC20 constructor
// and _mint(). This sets the name and symbol, so you don't have to
// define those methods (or public variables).
// You have to implement the decimals() function from the IERC20Metadata
// interface. Because of some peculiarities of Solidity inheritance, you
// have to implement these as actual functions, not public variables. And
// it has to use the multi-override version of the `override` keyword, as
// described in the slides (solidity.html#/multioverride) and the
// homework description.
// We will need this function in a future assignment (Arbitrage Trading),
// which is why it is in this interface. For now, it should have a single
// line: `revert();`. You can make your implementation `pure` as well
// (the compiler will warn you about that).
function requestFunds() external;
// You also need to implement supportsInterface(), which is required by
// the IERC165 interface. You support four interfaces!
// The other methods needed by the IERC20 interface are already
// implemented for you in the ERC20.sol contract.
}