openzeppelin_rs/contracts/
IERC20Metadata.rs

1pub use ierc20_metadata::*;
2/// This module was auto-generated with ethers-rs Abigen.
3/// More information at: <https://github.com/gakonst/ethers-rs>
4#[allow(
5    clippy::enum_variant_names,
6    clippy::too_many_arguments,
7    clippy::upper_case_acronyms,
8    clippy::type_complexity,
9    dead_code,
10    non_camel_case_types,
11)]
12pub mod ierc20_metadata {
13    #[rustfmt::skip]
14    const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]";
15    ///The parsed JSON ABI of the contract.
16    pub static IERC20METADATA_ABI: ::ethers_contract::Lazy<::ethers_core::abi::Abi> = ::ethers_contract::Lazy::new(||
17    ::ethers_core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid"));
18    pub struct IERC20Metadata<M>(::ethers_contract::Contract<M>);
19    impl<M> ::core::clone::Clone for IERC20Metadata<M> {
20        fn clone(&self) -> Self {
21            Self(::core::clone::Clone::clone(&self.0))
22        }
23    }
24    impl<M> ::core::ops::Deref for IERC20Metadata<M> {
25        type Target = ::ethers_contract::Contract<M>;
26        fn deref(&self) -> &Self::Target {
27            &self.0
28        }
29    }
30    impl<M> ::core::ops::DerefMut for IERC20Metadata<M> {
31        fn deref_mut(&mut self) -> &mut Self::Target {
32            &mut self.0
33        }
34    }
35    impl<M> ::core::fmt::Debug for IERC20Metadata<M> {
36        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
37            f.debug_tuple(stringify!(IERC20Metadata)).field(&self.address()).finish()
38        }
39    }
40    impl<M: ::ethers_providers::Middleware> IERC20Metadata<M> {
41        /// Creates a new contract instance with the specified `ethers` client at
42        /// `address`. The contract derefs to a `ethers::Contract` object.
43        pub fn new<T: Into<::ethers_core::types::Address>>(
44            address: T,
45            client: ::std::sync::Arc<M>,
46        ) -> Self {
47            Self(
48                ::ethers_contract::Contract::new(
49                    address.into(),
50                    IERC20METADATA_ABI.clone(),
51                    client,
52                ),
53            )
54        }
55        ///Calls the contract's `allowance` (0xdd62ed3e) function
56        pub fn allowance(
57            &self,
58            owner: ::ethers_core::types::Address,
59            spender: ::ethers_core::types::Address,
60        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
61            self.0
62                .method_hash([221, 98, 237, 62], (owner, spender))
63                .expect("method not found (this should never happen)")
64        }
65        ///Calls the contract's `approve` (0x095ea7b3) function
66        pub fn approve(
67            &self,
68            spender: ::ethers_core::types::Address,
69            amount: ::ethers_core::types::U256,
70        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
71            self.0
72                .method_hash([9, 94, 167, 179], (spender, amount))
73                .expect("method not found (this should never happen)")
74        }
75        ///Calls the contract's `balanceOf` (0x70a08231) function
76        pub fn balance_of(
77            &self,
78            account: ::ethers_core::types::Address,
79        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
80            self.0
81                .method_hash([112, 160, 130, 49], account)
82                .expect("method not found (this should never happen)")
83        }
84        ///Calls the contract's `decimals` (0x313ce567) function
85        pub fn decimals(&self) -> ::ethers_contract::builders::ContractCall<M, u8> {
86            self.0
87                .method_hash([49, 60, 229, 103], ())
88                .expect("method not found (this should never happen)")
89        }
90        ///Calls the contract's `name` (0x06fdde03) function
91        pub fn name(
92            &self,
93        ) -> ::ethers_contract::builders::ContractCall<M, ::std::string::String> {
94            self.0
95                .method_hash([6, 253, 222, 3], ())
96                .expect("method not found (this should never happen)")
97        }
98        ///Calls the contract's `symbol` (0x95d89b41) function
99        pub fn symbol(
100            &self,
101        ) -> ::ethers_contract::builders::ContractCall<M, ::std::string::String> {
102            self.0
103                .method_hash([149, 216, 155, 65], ())
104                .expect("method not found (this should never happen)")
105        }
106        ///Calls the contract's `totalSupply` (0x18160ddd) function
107        pub fn total_supply(
108            &self,
109        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
110            self.0
111                .method_hash([24, 22, 13, 221], ())
112                .expect("method not found (this should never happen)")
113        }
114        ///Calls the contract's `transfer` (0xa9059cbb) function
115        pub fn transfer(
116            &self,
117            to: ::ethers_core::types::Address,
118            amount: ::ethers_core::types::U256,
119        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
120            self.0
121                .method_hash([169, 5, 156, 187], (to, amount))
122                .expect("method not found (this should never happen)")
123        }
124        ///Calls the contract's `transferFrom` (0x23b872dd) function
125        pub fn transfer_from(
126            &self,
127            from: ::ethers_core::types::Address,
128            to: ::ethers_core::types::Address,
129            amount: ::ethers_core::types::U256,
130        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
131            self.0
132                .method_hash([35, 184, 114, 221], (from, to, amount))
133                .expect("method not found (this should never happen)")
134        }
135        ///Gets the contract's `Approval` event
136        pub fn approval_filter(
137            &self,
138        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, ApprovalFilter> {
139            self.0.event()
140        }
141        ///Gets the contract's `Transfer` event
142        pub fn transfer_filter(
143            &self,
144        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, TransferFilter> {
145            self.0.event()
146        }
147        /// Returns an `Event` builder for all the events of this contract.
148        pub fn events(
149            &self,
150        ) -> ::ethers_contract::builders::Event<
151            ::std::sync::Arc<M>,
152            M,
153            IERC20MetadataEvents,
154        > {
155            self.0.event_with_filter(::core::default::Default::default())
156        }
157    }
158    impl<M: ::ethers_providers::Middleware> From<::ethers_contract::Contract<M>>
159    for IERC20Metadata<M> {
160        fn from(contract: ::ethers_contract::Contract<M>) -> Self {
161            Self::new(contract.address(), contract.client())
162        }
163    }
164    #[derive(
165        Clone,
166        ::ethers_contract::EthEvent,
167        ::ethers_contract::EthDisplay,
168        Default,
169        Debug,
170        PartialEq,
171        Eq,
172        Hash
173    )]
174    #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")]
175    pub struct ApprovalFilter {
176        #[ethevent(indexed)]
177        pub owner: ::ethers_core::types::Address,
178        #[ethevent(indexed)]
179        pub spender: ::ethers_core::types::Address,
180        pub value: ::ethers_core::types::U256,
181    }
182    #[derive(
183        Clone,
184        ::ethers_contract::EthEvent,
185        ::ethers_contract::EthDisplay,
186        Default,
187        Debug,
188        PartialEq,
189        Eq,
190        Hash
191    )]
192    #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")]
193    pub struct TransferFilter {
194        #[ethevent(indexed)]
195        pub from: ::ethers_core::types::Address,
196        #[ethevent(indexed)]
197        pub to: ::ethers_core::types::Address,
198        pub value: ::ethers_core::types::U256,
199    }
200    ///Container type for all of the contract's events
201    #[derive(Clone, ::ethers_contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
202    pub enum IERC20MetadataEvents {
203        ApprovalFilter(ApprovalFilter),
204        TransferFilter(TransferFilter),
205    }
206    impl ::ethers_contract::EthLogDecode for IERC20MetadataEvents {
207        fn decode_log(
208            log: &::ethers_core::abi::RawLog,
209        ) -> ::core::result::Result<Self, ::ethers_core::abi::Error> {
210            if let Ok(decoded) = ApprovalFilter::decode_log(log) {
211                return Ok(IERC20MetadataEvents::ApprovalFilter(decoded));
212            }
213            if let Ok(decoded) = TransferFilter::decode_log(log) {
214                return Ok(IERC20MetadataEvents::TransferFilter(decoded));
215            }
216            Err(::ethers_core::abi::Error::InvalidData)
217        }
218    }
219    impl ::core::fmt::Display for IERC20MetadataEvents {
220        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
221            match self {
222                Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f),
223                Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f),
224            }
225        }
226    }
227    impl ::core::convert::From<ApprovalFilter> for IERC20MetadataEvents {
228        fn from(value: ApprovalFilter) -> Self {
229            Self::ApprovalFilter(value)
230        }
231    }
232    impl ::core::convert::From<TransferFilter> for IERC20MetadataEvents {
233        fn from(value: TransferFilter) -> Self {
234            Self::TransferFilter(value)
235        }
236    }
237    ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
238    #[derive(
239        Clone,
240        ::ethers_contract::EthCall,
241        ::ethers_contract::EthDisplay,
242        Default,
243        Debug,
244        PartialEq,
245        Eq,
246        Hash
247    )]
248    #[ethcall(name = "allowance", abi = "allowance(address,address)")]
249    pub struct AllowanceCall {
250        pub owner: ::ethers_core::types::Address,
251        pub spender: ::ethers_core::types::Address,
252    }
253    ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
254    #[derive(
255        Clone,
256        ::ethers_contract::EthCall,
257        ::ethers_contract::EthDisplay,
258        Default,
259        Debug,
260        PartialEq,
261        Eq,
262        Hash
263    )]
264    #[ethcall(name = "approve", abi = "approve(address,uint256)")]
265    pub struct ApproveCall {
266        pub spender: ::ethers_core::types::Address,
267        pub amount: ::ethers_core::types::U256,
268    }
269    ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
270    #[derive(
271        Clone,
272        ::ethers_contract::EthCall,
273        ::ethers_contract::EthDisplay,
274        Default,
275        Debug,
276        PartialEq,
277        Eq,
278        Hash
279    )]
280    #[ethcall(name = "balanceOf", abi = "balanceOf(address)")]
281    pub struct BalanceOfCall {
282        pub account: ::ethers_core::types::Address,
283    }
284    ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567`
285    #[derive(
286        Clone,
287        ::ethers_contract::EthCall,
288        ::ethers_contract::EthDisplay,
289        Default,
290        Debug,
291        PartialEq,
292        Eq,
293        Hash
294    )]
295    #[ethcall(name = "decimals", abi = "decimals()")]
296    pub struct DecimalsCall;
297    ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03`
298    #[derive(
299        Clone,
300        ::ethers_contract::EthCall,
301        ::ethers_contract::EthDisplay,
302        Default,
303        Debug,
304        PartialEq,
305        Eq,
306        Hash
307    )]
308    #[ethcall(name = "name", abi = "name()")]
309    pub struct NameCall;
310    ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41`
311    #[derive(
312        Clone,
313        ::ethers_contract::EthCall,
314        ::ethers_contract::EthDisplay,
315        Default,
316        Debug,
317        PartialEq,
318        Eq,
319        Hash
320    )]
321    #[ethcall(name = "symbol", abi = "symbol()")]
322    pub struct SymbolCall;
323    ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
324    #[derive(
325        Clone,
326        ::ethers_contract::EthCall,
327        ::ethers_contract::EthDisplay,
328        Default,
329        Debug,
330        PartialEq,
331        Eq,
332        Hash
333    )]
334    #[ethcall(name = "totalSupply", abi = "totalSupply()")]
335    pub struct TotalSupplyCall;
336    ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
337    #[derive(
338        Clone,
339        ::ethers_contract::EthCall,
340        ::ethers_contract::EthDisplay,
341        Default,
342        Debug,
343        PartialEq,
344        Eq,
345        Hash
346    )]
347    #[ethcall(name = "transfer", abi = "transfer(address,uint256)")]
348    pub struct TransferCall {
349        pub to: ::ethers_core::types::Address,
350        pub amount: ::ethers_core::types::U256,
351    }
352    ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
353    #[derive(
354        Clone,
355        ::ethers_contract::EthCall,
356        ::ethers_contract::EthDisplay,
357        Default,
358        Debug,
359        PartialEq,
360        Eq,
361        Hash
362    )]
363    #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")]
364    pub struct TransferFromCall {
365        pub from: ::ethers_core::types::Address,
366        pub to: ::ethers_core::types::Address,
367        pub amount: ::ethers_core::types::U256,
368    }
369    ///Container type for all of the contract's call
370    #[derive(Clone, ::ethers_contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
371    pub enum IERC20MetadataCalls {
372        Allowance(AllowanceCall),
373        Approve(ApproveCall),
374        BalanceOf(BalanceOfCall),
375        Decimals(DecimalsCall),
376        Name(NameCall),
377        Symbol(SymbolCall),
378        TotalSupply(TotalSupplyCall),
379        Transfer(TransferCall),
380        TransferFrom(TransferFromCall),
381    }
382    impl ::ethers_core::abi::AbiDecode for IERC20MetadataCalls {
383        fn decode(
384            data: impl AsRef<[u8]>,
385        ) -> ::core::result::Result<Self, ::ethers_core::abi::AbiError> {
386            let data = data.as_ref();
387            if let Ok(decoded)
388                = <AllowanceCall as ::ethers_core::abi::AbiDecode>::decode(data) {
389                return Ok(Self::Allowance(decoded));
390            }
391            if let Ok(decoded)
392                = <ApproveCall as ::ethers_core::abi::AbiDecode>::decode(data) {
393                return Ok(Self::Approve(decoded));
394            }
395            if let Ok(decoded)
396                = <BalanceOfCall as ::ethers_core::abi::AbiDecode>::decode(data) {
397                return Ok(Self::BalanceOf(decoded));
398            }
399            if let Ok(decoded)
400                = <DecimalsCall as ::ethers_core::abi::AbiDecode>::decode(data) {
401                return Ok(Self::Decimals(decoded));
402            }
403            if let Ok(decoded)
404                = <NameCall as ::ethers_core::abi::AbiDecode>::decode(data) {
405                return Ok(Self::Name(decoded));
406            }
407            if let Ok(decoded)
408                = <SymbolCall as ::ethers_core::abi::AbiDecode>::decode(data) {
409                return Ok(Self::Symbol(decoded));
410            }
411            if let Ok(decoded)
412                = <TotalSupplyCall as ::ethers_core::abi::AbiDecode>::decode(data) {
413                return Ok(Self::TotalSupply(decoded));
414            }
415            if let Ok(decoded)
416                = <TransferCall as ::ethers_core::abi::AbiDecode>::decode(data) {
417                return Ok(Self::Transfer(decoded));
418            }
419            if let Ok(decoded)
420                = <TransferFromCall as ::ethers_core::abi::AbiDecode>::decode(data) {
421                return Ok(Self::TransferFrom(decoded));
422            }
423            Err(::ethers_core::abi::Error::InvalidData.into())
424        }
425    }
426    impl ::ethers_core::abi::AbiEncode for IERC20MetadataCalls {
427        fn encode(self) -> Vec<u8> {
428            match self {
429                Self::Allowance(element) => {
430                    ::ethers_core::abi::AbiEncode::encode(element)
431                }
432                Self::Approve(element) => ::ethers_core::abi::AbiEncode::encode(element),
433                Self::BalanceOf(element) => {
434                    ::ethers_core::abi::AbiEncode::encode(element)
435                }
436                Self::Decimals(element) => ::ethers_core::abi::AbiEncode::encode(element),
437                Self::Name(element) => ::ethers_core::abi::AbiEncode::encode(element),
438                Self::Symbol(element) => ::ethers_core::abi::AbiEncode::encode(element),
439                Self::TotalSupply(element) => {
440                    ::ethers_core::abi::AbiEncode::encode(element)
441                }
442                Self::Transfer(element) => ::ethers_core::abi::AbiEncode::encode(element),
443                Self::TransferFrom(element) => {
444                    ::ethers_core::abi::AbiEncode::encode(element)
445                }
446            }
447        }
448    }
449    impl ::core::fmt::Display for IERC20MetadataCalls {
450        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
451            match self {
452                Self::Allowance(element) => ::core::fmt::Display::fmt(element, f),
453                Self::Approve(element) => ::core::fmt::Display::fmt(element, f),
454                Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f),
455                Self::Decimals(element) => ::core::fmt::Display::fmt(element, f),
456                Self::Name(element) => ::core::fmt::Display::fmt(element, f),
457                Self::Symbol(element) => ::core::fmt::Display::fmt(element, f),
458                Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f),
459                Self::Transfer(element) => ::core::fmt::Display::fmt(element, f),
460                Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f),
461            }
462        }
463    }
464    impl ::core::convert::From<AllowanceCall> for IERC20MetadataCalls {
465        fn from(value: AllowanceCall) -> Self {
466            Self::Allowance(value)
467        }
468    }
469    impl ::core::convert::From<ApproveCall> for IERC20MetadataCalls {
470        fn from(value: ApproveCall) -> Self {
471            Self::Approve(value)
472        }
473    }
474    impl ::core::convert::From<BalanceOfCall> for IERC20MetadataCalls {
475        fn from(value: BalanceOfCall) -> Self {
476            Self::BalanceOf(value)
477        }
478    }
479    impl ::core::convert::From<DecimalsCall> for IERC20MetadataCalls {
480        fn from(value: DecimalsCall) -> Self {
481            Self::Decimals(value)
482        }
483    }
484    impl ::core::convert::From<NameCall> for IERC20MetadataCalls {
485        fn from(value: NameCall) -> Self {
486            Self::Name(value)
487        }
488    }
489    impl ::core::convert::From<SymbolCall> for IERC20MetadataCalls {
490        fn from(value: SymbolCall) -> Self {
491            Self::Symbol(value)
492        }
493    }
494    impl ::core::convert::From<TotalSupplyCall> for IERC20MetadataCalls {
495        fn from(value: TotalSupplyCall) -> Self {
496            Self::TotalSupply(value)
497        }
498    }
499    impl ::core::convert::From<TransferCall> for IERC20MetadataCalls {
500        fn from(value: TransferCall) -> Self {
501            Self::Transfer(value)
502        }
503    }
504    impl ::core::convert::From<TransferFromCall> for IERC20MetadataCalls {
505        fn from(value: TransferFromCall) -> Self {
506            Self::TransferFrom(value)
507        }
508    }
509    ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
510    #[derive(
511        Clone,
512        ::ethers_contract::EthAbiType,
513        ::ethers_contract::EthAbiCodec,
514        Default,
515        Debug,
516        PartialEq,
517        Eq,
518        Hash
519    )]
520    pub struct AllowanceReturn(pub ::ethers_core::types::U256);
521    ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
522    #[derive(
523        Clone,
524        ::ethers_contract::EthAbiType,
525        ::ethers_contract::EthAbiCodec,
526        Default,
527        Debug,
528        PartialEq,
529        Eq,
530        Hash
531    )]
532    pub struct ApproveReturn(pub bool);
533    ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
534    #[derive(
535        Clone,
536        ::ethers_contract::EthAbiType,
537        ::ethers_contract::EthAbiCodec,
538        Default,
539        Debug,
540        PartialEq,
541        Eq,
542        Hash
543    )]
544    pub struct BalanceOfReturn(pub ::ethers_core::types::U256);
545    ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567`
546    #[derive(
547        Clone,
548        ::ethers_contract::EthAbiType,
549        ::ethers_contract::EthAbiCodec,
550        Default,
551        Debug,
552        PartialEq,
553        Eq,
554        Hash
555    )]
556    pub struct DecimalsReturn(pub u8);
557    ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03`
558    #[derive(
559        Clone,
560        ::ethers_contract::EthAbiType,
561        ::ethers_contract::EthAbiCodec,
562        Default,
563        Debug,
564        PartialEq,
565        Eq,
566        Hash
567    )]
568    pub struct NameReturn(pub ::std::string::String);
569    ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41`
570    #[derive(
571        Clone,
572        ::ethers_contract::EthAbiType,
573        ::ethers_contract::EthAbiCodec,
574        Default,
575        Debug,
576        PartialEq,
577        Eq,
578        Hash
579    )]
580    pub struct SymbolReturn(pub ::std::string::String);
581    ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
582    #[derive(
583        Clone,
584        ::ethers_contract::EthAbiType,
585        ::ethers_contract::EthAbiCodec,
586        Default,
587        Debug,
588        PartialEq,
589        Eq,
590        Hash
591    )]
592    pub struct TotalSupplyReturn(pub ::ethers_core::types::U256);
593    ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
594    #[derive(
595        Clone,
596        ::ethers_contract::EthAbiType,
597        ::ethers_contract::EthAbiCodec,
598        Default,
599        Debug,
600        PartialEq,
601        Eq,
602        Hash
603    )]
604    pub struct TransferReturn(pub bool);
605    ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
606    #[derive(
607        Clone,
608        ::ethers_contract::EthAbiType,
609        ::ethers_contract::EthAbiCodec,
610        Default,
611        Debug,
612        PartialEq,
613        Eq,
614        Hash
615    )]
616    pub struct TransferFromReturn(pub bool);
617}