1#![allow(dead_code)] 23use evm_coder::{solidity_interface, types::*, ToLog, execution::Result};4use evm_coder_macros::solidity;56struct Impls;78#[solidity_interface(name = "OurInterface")]9impl Impls {10 fn fn_a(&self, input: uint256) -> Result<bool> {11 todo!()12 }13}1415#[solidity_interface(name = "OurInterface1")]16impl Impls {17 fn fn_b(&self, input: uint128) -> Result<uint32> {18 todo!()19 }20}2122#[solidity_interface(name = "OurInterface2", is(OurInterface), inline_is(OurInterface1), events(ERC721Log))]23impl Impls {24 #[solidity(rename_selector = "fnK")]25 fn fn_c(&self, input: uint32) -> Result<uint8> {26 todo!()27 }28 fn fn_d(&self, value: uint32) -> Result<uint32> {29 todo!()30 }3132 fn caller_sensitive(&self, caller: caller) -> Result<uint8> {33 todo!()34 }35 fn payable(&mut self, value: value) -> Result<uint8> {36 todo!()37 }38}3940#[derive(ToLog)]41enum ERC721Log {42 Transfer {43 #[indexed]44 from: address,45 #[indexed]46 to: address,47 value: uint256,48 },49 Eee {50 #[indexed]51 aaa: address,52 bbb: uint256,53 },54}5556struct ERC20;5758#[solidity_interface(name = "ERC20")]59impl ERC20 {60 fn decimals(&self) -> Result<uint8> {61 todo!()62 }63 fn balance_of(&self, owner: address) -> Result<uint256> {64 todo!()65 }66 fn transfer(&mut self, caller: caller, to: address, value: uint256) -> Result<bool> {67 todo!()68 }69 fn transfer_from(70 &mut self,71 caller: caller,72 from: address,73 to: address,74 value: uint256,75 ) -> Result<bool> {76 todo!()77 }78 fn approve(&mut self, caller: caller, spender: address, value: uint256) -> Result<bool> {79 todo!()80 }81 fn allowance(&self, owner: address, spender: address) -> Result<uint256> {82 todo!()83 }84}