1// SPDX-License-Identifier: OTHER23pragma solidity >=0.8.0 <0.9.0;45contract ERC20 {6 uint8 _dummy = 0;7 string stub_error = "this contract does not exists, code for collections is implemented at pallet side";89 // 0x18160ddd10 function totalSupply() external view returns (uint256) {11 require(false, stub_error);12 _dummy;13 return 0;14 }1516 // 0x70a0823117 function balanceOf(address account) external view returns (uint256) {18 require(false, stub_error);19 account;20 _dummy;21 return 0;22 }2324 // 0xa9059cbb25 function transfer(address recipient, uint256 amount) external returns (bool) {26 require(false, stub_error);27 recipient;28 amount;29 _dummy = 0;30 return false;31 }3233 // 0xdd62ed3e34 function allowance(address owner, address spender) external view returns (uint256) {35 require(false, stub_error);36 owner;37 spender;38 return _dummy;39 }4041 // 0x095ea7b342 function approve(address spender, uint256 amount) external returns (bool) {43 require(false, stub_error);44 spender;45 amount;46 _dummy = 0;47 return false;48 }4950 // 0x23b872dd51 function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {52 require(false, stub_error);53 sender;54 recipient;55 amount;56 _dummy = 0;57 return false;58 }5960 // While ERC165 is not required by spec of ERC20, better implement it61 // 0x01ffc9a762 function supportsInterface(bytes4 interfaceID) public pure returns (bool) {63 return 64 // ERC2065 interfaceID == 0x36372b07 || 66 // ERC16567 interfaceID == 0x01ffc9a7;68 }69}