// 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. }