openzeppelin_rs/contracts/
ERC20Permit.rs

1pub use erc20_permit::*;
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 erc20_permit {
13    #[rustfmt::skip]
14    const __ABI: &str = "[{\"inputs\":[],\"type\":\"error\",\"name\":\"InvalidShortString\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\",\"components\":[]}],\"type\":\"error\",\"name\":\"StringTooLong\",\"outputs\":[]},{\"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\":[],\"type\":\"event\",\"name\":\"EIP712DomainChanged\",\"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\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\",\"components\":[]}]},{\"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\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\",\"components\":[]},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\",\"components\":[]},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"permit\",\"outputs\":[]},{\"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 ERC20PERMIT_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 ERC20Permit<M>(::ethers_contract::Contract<M>);
19    impl<M> ::core::clone::Clone for ERC20Permit<M> {
20        fn clone(&self) -> Self {
21            Self(::core::clone::Clone::clone(&self.0))
22        }
23    }
24    impl<M> ::core::ops::Deref for ERC20Permit<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 ERC20Permit<M> {
31        fn deref_mut(&mut self) -> &mut Self::Target {
32            &mut self.0
33        }
34    }
35    impl<M> ::core::fmt::Debug for ERC20Permit<M> {
36        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
37            f.debug_tuple(stringify!(ERC20Permit)).field(&self.address()).finish()
38        }
39    }
40    impl<M: ::ethers_providers::Middleware> ERC20Permit<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                    ERC20PERMIT_ABI.clone(),
51                    client,
52                ),
53            )
54        }
55        ///Calls the contract's `DOMAIN_SEPARATOR` (0x3644e515) function
56        pub fn domain_separator(
57            &self,
58        ) -> ::ethers_contract::builders::ContractCall<M, [u8; 32]> {
59            self.0
60                .method_hash([54, 68, 229, 21], ())
61                .expect("method not found (this should never happen)")
62        }
63        ///Calls the contract's `allowance` (0xdd62ed3e) function
64        pub fn allowance(
65            &self,
66            owner: ::ethers_core::types::Address,
67            spender: ::ethers_core::types::Address,
68        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
69            self.0
70                .method_hash([221, 98, 237, 62], (owner, spender))
71                .expect("method not found (this should never happen)")
72        }
73        ///Calls the contract's `approve` (0x095ea7b3) function
74        pub fn approve(
75            &self,
76            spender: ::ethers_core::types::Address,
77            amount: ::ethers_core::types::U256,
78        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
79            self.0
80                .method_hash([9, 94, 167, 179], (spender, amount))
81                .expect("method not found (this should never happen)")
82        }
83        ///Calls the contract's `balanceOf` (0x70a08231) function
84        pub fn balance_of(
85            &self,
86            account: ::ethers_core::types::Address,
87        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
88            self.0
89                .method_hash([112, 160, 130, 49], account)
90                .expect("method not found (this should never happen)")
91        }
92        ///Calls the contract's `decimals` (0x313ce567) function
93        pub fn decimals(&self) -> ::ethers_contract::builders::ContractCall<M, u8> {
94            self.0
95                .method_hash([49, 60, 229, 103], ())
96                .expect("method not found (this should never happen)")
97        }
98        ///Calls the contract's `decreaseAllowance` (0xa457c2d7) function
99        pub fn decrease_allowance(
100            &self,
101            spender: ::ethers_core::types::Address,
102            subtracted_value: ::ethers_core::types::U256,
103        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
104            self.0
105                .method_hash([164, 87, 194, 215], (spender, subtracted_value))
106                .expect("method not found (this should never happen)")
107        }
108        ///Calls the contract's `eip712Domain` (0x84b0196e) function
109        pub fn eip_712_domain(
110            &self,
111        ) -> ::ethers_contract::builders::ContractCall<
112            M,
113            (
114                [u8; 1],
115                ::std::string::String,
116                ::std::string::String,
117                ::ethers_core::types::U256,
118                ::ethers_core::types::Address,
119                [u8; 32],
120                ::std::vec::Vec<::ethers_core::types::U256>,
121            ),
122        > {
123            self.0
124                .method_hash([132, 176, 25, 110], ())
125                .expect("method not found (this should never happen)")
126        }
127        ///Calls the contract's `increaseAllowance` (0x39509351) function
128        pub fn increase_allowance(
129            &self,
130            spender: ::ethers_core::types::Address,
131            added_value: ::ethers_core::types::U256,
132        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
133            self.0
134                .method_hash([57, 80, 147, 81], (spender, added_value))
135                .expect("method not found (this should never happen)")
136        }
137        ///Calls the contract's `name` (0x06fdde03) function
138        pub fn name(
139            &self,
140        ) -> ::ethers_contract::builders::ContractCall<M, ::std::string::String> {
141            self.0
142                .method_hash([6, 253, 222, 3], ())
143                .expect("method not found (this should never happen)")
144        }
145        ///Calls the contract's `nonces` (0x7ecebe00) function
146        pub fn nonces(
147            &self,
148            owner: ::ethers_core::types::Address,
149        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
150            self.0
151                .method_hash([126, 206, 190, 0], owner)
152                .expect("method not found (this should never happen)")
153        }
154        ///Calls the contract's `permit` (0xd505accf) function
155        pub fn permit(
156            &self,
157            owner: ::ethers_core::types::Address,
158            spender: ::ethers_core::types::Address,
159            value: ::ethers_core::types::U256,
160            deadline: ::ethers_core::types::U256,
161            v: u8,
162            r: [u8; 32],
163            s: [u8; 32],
164        ) -> ::ethers_contract::builders::ContractCall<M, ()> {
165            self.0
166                .method_hash(
167                    [213, 5, 172, 207],
168                    (owner, spender, value, deadline, v, r, s),
169                )
170                .expect("method not found (this should never happen)")
171        }
172        ///Calls the contract's `symbol` (0x95d89b41) function
173        pub fn symbol(
174            &self,
175        ) -> ::ethers_contract::builders::ContractCall<M, ::std::string::String> {
176            self.0
177                .method_hash([149, 216, 155, 65], ())
178                .expect("method not found (this should never happen)")
179        }
180        ///Calls the contract's `totalSupply` (0x18160ddd) function
181        pub fn total_supply(
182            &self,
183        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
184            self.0
185                .method_hash([24, 22, 13, 221], ())
186                .expect("method not found (this should never happen)")
187        }
188        ///Calls the contract's `transfer` (0xa9059cbb) function
189        pub fn transfer(
190            &self,
191            to: ::ethers_core::types::Address,
192            amount: ::ethers_core::types::U256,
193        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
194            self.0
195                .method_hash([169, 5, 156, 187], (to, amount))
196                .expect("method not found (this should never happen)")
197        }
198        ///Calls the contract's `transferFrom` (0x23b872dd) function
199        pub fn transfer_from(
200            &self,
201            from: ::ethers_core::types::Address,
202            to: ::ethers_core::types::Address,
203            amount: ::ethers_core::types::U256,
204        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
205            self.0
206                .method_hash([35, 184, 114, 221], (from, to, amount))
207                .expect("method not found (this should never happen)")
208        }
209        ///Gets the contract's `Approval` event
210        pub fn approval_filter(
211            &self,
212        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, ApprovalFilter> {
213            self.0.event()
214        }
215        ///Gets the contract's `EIP712DomainChanged` event
216        pub fn eip712_domain_changed_filter(
217            &self,
218        ) -> ::ethers_contract::builders::Event<
219            ::std::sync::Arc<M>,
220            M,
221            Eip712DomainChangedFilter,
222        > {
223            self.0.event()
224        }
225        ///Gets the contract's `Transfer` event
226        pub fn transfer_filter(
227            &self,
228        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, TransferFilter> {
229            self.0.event()
230        }
231        /// Returns an `Event` builder for all the events of this contract.
232        pub fn events(
233            &self,
234        ) -> ::ethers_contract::builders::Event<
235            ::std::sync::Arc<M>,
236            M,
237            ERC20PermitEvents,
238        > {
239            self.0.event_with_filter(::core::default::Default::default())
240        }
241    }
242    impl<M: ::ethers_providers::Middleware> From<::ethers_contract::Contract<M>>
243    for ERC20Permit<M> {
244        fn from(contract: ::ethers_contract::Contract<M>) -> Self {
245            Self::new(contract.address(), contract.client())
246        }
247    }
248    ///Custom Error type `InvalidShortString` with signature `InvalidShortString()` and selector `0xb3512b0c`
249    #[derive(
250        Clone,
251        ::ethers_contract::EthError,
252        ::ethers_contract::EthDisplay,
253        Default,
254        Debug,
255        PartialEq,
256        Eq,
257        Hash
258    )]
259    #[etherror(name = "InvalidShortString", abi = "InvalidShortString()")]
260    pub struct InvalidShortString;
261    ///Custom Error type `StringTooLong` with signature `StringTooLong(string)` and selector `0x305a27a9`
262    #[derive(
263        Clone,
264        ::ethers_contract::EthError,
265        ::ethers_contract::EthDisplay,
266        Default,
267        Debug,
268        PartialEq,
269        Eq,
270        Hash
271    )]
272    #[etherror(name = "StringTooLong", abi = "StringTooLong(string)")]
273    pub struct StringTooLong {
274        pub str: ::std::string::String,
275    }
276    ///Container type for all of the contract's custom errors
277    #[derive(Clone, ::ethers_contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
278    pub enum ERC20PermitErrors {
279        InvalidShortString(InvalidShortString),
280        StringTooLong(StringTooLong),
281        /// The standard solidity revert string, with selector
282        /// Error(string) -- 0x08c379a0
283        RevertString(::std::string::String),
284    }
285    impl ::ethers_core::abi::AbiDecode for ERC20PermitErrors {
286        fn decode(
287            data: impl AsRef<[u8]>,
288        ) -> ::core::result::Result<Self, ::ethers_core::abi::AbiError> {
289            let data = data.as_ref();
290            if let Ok(decoded)
291                = <::std::string::String as ::ethers_core::abi::AbiDecode>::decode(
292                    data,
293                ) {
294                return Ok(Self::RevertString(decoded));
295            }
296            if let Ok(decoded)
297                = <InvalidShortString as ::ethers_core::abi::AbiDecode>::decode(data) {
298                return Ok(Self::InvalidShortString(decoded));
299            }
300            if let Ok(decoded)
301                = <StringTooLong as ::ethers_core::abi::AbiDecode>::decode(data) {
302                return Ok(Self::StringTooLong(decoded));
303            }
304            Err(::ethers_core::abi::Error::InvalidData.into())
305        }
306    }
307    impl ::ethers_core::abi::AbiEncode for ERC20PermitErrors {
308        fn encode(self) -> ::std::vec::Vec<u8> {
309            match self {
310                Self::InvalidShortString(element) => {
311                    ::ethers_core::abi::AbiEncode::encode(element)
312                }
313                Self::StringTooLong(element) => {
314                    ::ethers_core::abi::AbiEncode::encode(element)
315                }
316                Self::RevertString(s) => ::ethers_core::abi::AbiEncode::encode(s),
317            }
318        }
319    }
320    impl ::ethers_contract::ContractRevert for ERC20PermitErrors {
321        fn valid_selector(selector: [u8; 4]) -> bool {
322            match selector {
323                [0x08, 0xc3, 0x79, 0xa0] => true,
324                _ if selector
325                    == <InvalidShortString as ::ethers_contract::EthError>::selector() => {
326                    true
327                }
328                _ if selector
329                    == <StringTooLong as ::ethers_contract::EthError>::selector() => true,
330                _ => false,
331            }
332        }
333    }
334    impl ::core::fmt::Display for ERC20PermitErrors {
335        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
336            match self {
337                Self::InvalidShortString(element) => {
338                    ::core::fmt::Display::fmt(element, f)
339                }
340                Self::StringTooLong(element) => ::core::fmt::Display::fmt(element, f),
341                Self::RevertString(s) => ::core::fmt::Display::fmt(s, f),
342            }
343        }
344    }
345    impl ::core::convert::From<::std::string::String> for ERC20PermitErrors {
346        fn from(value: String) -> Self {
347            Self::RevertString(value)
348        }
349    }
350    impl ::core::convert::From<InvalidShortString> for ERC20PermitErrors {
351        fn from(value: InvalidShortString) -> Self {
352            Self::InvalidShortString(value)
353        }
354    }
355    impl ::core::convert::From<StringTooLong> for ERC20PermitErrors {
356        fn from(value: StringTooLong) -> Self {
357            Self::StringTooLong(value)
358        }
359    }
360    #[derive(
361        Clone,
362        ::ethers_contract::EthEvent,
363        ::ethers_contract::EthDisplay,
364        Default,
365        Debug,
366        PartialEq,
367        Eq,
368        Hash
369    )]
370    #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")]
371    pub struct ApprovalFilter {
372        #[ethevent(indexed)]
373        pub owner: ::ethers_core::types::Address,
374        #[ethevent(indexed)]
375        pub spender: ::ethers_core::types::Address,
376        pub value: ::ethers_core::types::U256,
377    }
378    #[derive(
379        Clone,
380        ::ethers_contract::EthEvent,
381        ::ethers_contract::EthDisplay,
382        Default,
383        Debug,
384        PartialEq,
385        Eq,
386        Hash
387    )]
388    #[ethevent(name = "EIP712DomainChanged", abi = "EIP712DomainChanged()")]
389    pub struct Eip712DomainChangedFilter;
390    #[derive(
391        Clone,
392        ::ethers_contract::EthEvent,
393        ::ethers_contract::EthDisplay,
394        Default,
395        Debug,
396        PartialEq,
397        Eq,
398        Hash
399    )]
400    #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")]
401    pub struct TransferFilter {
402        #[ethevent(indexed)]
403        pub from: ::ethers_core::types::Address,
404        #[ethevent(indexed)]
405        pub to: ::ethers_core::types::Address,
406        pub value: ::ethers_core::types::U256,
407    }
408    ///Container type for all of the contract's events
409    #[derive(Clone, ::ethers_contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
410    pub enum ERC20PermitEvents {
411        ApprovalFilter(ApprovalFilter),
412        Eip712DomainChangedFilter(Eip712DomainChangedFilter),
413        TransferFilter(TransferFilter),
414    }
415    impl ::ethers_contract::EthLogDecode for ERC20PermitEvents {
416        fn decode_log(
417            log: &::ethers_core::abi::RawLog,
418        ) -> ::core::result::Result<Self, ::ethers_core::abi::Error> {
419            if let Ok(decoded) = ApprovalFilter::decode_log(log) {
420                return Ok(ERC20PermitEvents::ApprovalFilter(decoded));
421            }
422            if let Ok(decoded) = Eip712DomainChangedFilter::decode_log(log) {
423                return Ok(ERC20PermitEvents::Eip712DomainChangedFilter(decoded));
424            }
425            if let Ok(decoded) = TransferFilter::decode_log(log) {
426                return Ok(ERC20PermitEvents::TransferFilter(decoded));
427            }
428            Err(::ethers_core::abi::Error::InvalidData)
429        }
430    }
431    impl ::core::fmt::Display for ERC20PermitEvents {
432        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
433            match self {
434                Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f),
435                Self::Eip712DomainChangedFilter(element) => {
436                    ::core::fmt::Display::fmt(element, f)
437                }
438                Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f),
439            }
440        }
441    }
442    impl ::core::convert::From<ApprovalFilter> for ERC20PermitEvents {
443        fn from(value: ApprovalFilter) -> Self {
444            Self::ApprovalFilter(value)
445        }
446    }
447    impl ::core::convert::From<Eip712DomainChangedFilter> for ERC20PermitEvents {
448        fn from(value: Eip712DomainChangedFilter) -> Self {
449            Self::Eip712DomainChangedFilter(value)
450        }
451    }
452    impl ::core::convert::From<TransferFilter> for ERC20PermitEvents {
453        fn from(value: TransferFilter) -> Self {
454            Self::TransferFilter(value)
455        }
456    }
457    ///Container type for all input parameters for the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`
458    #[derive(
459        Clone,
460        ::ethers_contract::EthCall,
461        ::ethers_contract::EthDisplay,
462        Default,
463        Debug,
464        PartialEq,
465        Eq,
466        Hash
467    )]
468    #[ethcall(name = "DOMAIN_SEPARATOR", abi = "DOMAIN_SEPARATOR()")]
469    pub struct DomainSeparatorCall;
470    ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
471    #[derive(
472        Clone,
473        ::ethers_contract::EthCall,
474        ::ethers_contract::EthDisplay,
475        Default,
476        Debug,
477        PartialEq,
478        Eq,
479        Hash
480    )]
481    #[ethcall(name = "allowance", abi = "allowance(address,address)")]
482    pub struct AllowanceCall {
483        pub owner: ::ethers_core::types::Address,
484        pub spender: ::ethers_core::types::Address,
485    }
486    ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
487    #[derive(
488        Clone,
489        ::ethers_contract::EthCall,
490        ::ethers_contract::EthDisplay,
491        Default,
492        Debug,
493        PartialEq,
494        Eq,
495        Hash
496    )]
497    #[ethcall(name = "approve", abi = "approve(address,uint256)")]
498    pub struct ApproveCall {
499        pub spender: ::ethers_core::types::Address,
500        pub amount: ::ethers_core::types::U256,
501    }
502    ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
503    #[derive(
504        Clone,
505        ::ethers_contract::EthCall,
506        ::ethers_contract::EthDisplay,
507        Default,
508        Debug,
509        PartialEq,
510        Eq,
511        Hash
512    )]
513    #[ethcall(name = "balanceOf", abi = "balanceOf(address)")]
514    pub struct BalanceOfCall {
515        pub account: ::ethers_core::types::Address,
516    }
517    ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567`
518    #[derive(
519        Clone,
520        ::ethers_contract::EthCall,
521        ::ethers_contract::EthDisplay,
522        Default,
523        Debug,
524        PartialEq,
525        Eq,
526        Hash
527    )]
528    #[ethcall(name = "decimals", abi = "decimals()")]
529    pub struct DecimalsCall;
530    ///Container type for all input parameters for the `decreaseAllowance` function with signature `decreaseAllowance(address,uint256)` and selector `0xa457c2d7`
531    #[derive(
532        Clone,
533        ::ethers_contract::EthCall,
534        ::ethers_contract::EthDisplay,
535        Default,
536        Debug,
537        PartialEq,
538        Eq,
539        Hash
540    )]
541    #[ethcall(name = "decreaseAllowance", abi = "decreaseAllowance(address,uint256)")]
542    pub struct DecreaseAllowanceCall {
543        pub spender: ::ethers_core::types::Address,
544        pub subtracted_value: ::ethers_core::types::U256,
545    }
546    ///Container type for all input parameters for the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e`
547    #[derive(
548        Clone,
549        ::ethers_contract::EthCall,
550        ::ethers_contract::EthDisplay,
551        Default,
552        Debug,
553        PartialEq,
554        Eq,
555        Hash
556    )]
557    #[ethcall(name = "eip712Domain", abi = "eip712Domain()")]
558    pub struct Eip712DomainCall;
559    ///Container type for all input parameters for the `increaseAllowance` function with signature `increaseAllowance(address,uint256)` and selector `0x39509351`
560    #[derive(
561        Clone,
562        ::ethers_contract::EthCall,
563        ::ethers_contract::EthDisplay,
564        Default,
565        Debug,
566        PartialEq,
567        Eq,
568        Hash
569    )]
570    #[ethcall(name = "increaseAllowance", abi = "increaseAllowance(address,uint256)")]
571    pub struct IncreaseAllowanceCall {
572        pub spender: ::ethers_core::types::Address,
573        pub added_value: ::ethers_core::types::U256,
574    }
575    ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03`
576    #[derive(
577        Clone,
578        ::ethers_contract::EthCall,
579        ::ethers_contract::EthDisplay,
580        Default,
581        Debug,
582        PartialEq,
583        Eq,
584        Hash
585    )]
586    #[ethcall(name = "name", abi = "name()")]
587    pub struct NameCall;
588    ///Container type for all input parameters for the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00`
589    #[derive(
590        Clone,
591        ::ethers_contract::EthCall,
592        ::ethers_contract::EthDisplay,
593        Default,
594        Debug,
595        PartialEq,
596        Eq,
597        Hash
598    )]
599    #[ethcall(name = "nonces", abi = "nonces(address)")]
600    pub struct NoncesCall {
601        pub owner: ::ethers_core::types::Address,
602    }
603    ///Container type for all input parameters for the `permit` function with signature `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` and selector `0xd505accf`
604    #[derive(
605        Clone,
606        ::ethers_contract::EthCall,
607        ::ethers_contract::EthDisplay,
608        Default,
609        Debug,
610        PartialEq,
611        Eq,
612        Hash
613    )]
614    #[ethcall(
615        name = "permit",
616        abi = "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)"
617    )]
618    pub struct PermitCall {
619        pub owner: ::ethers_core::types::Address,
620        pub spender: ::ethers_core::types::Address,
621        pub value: ::ethers_core::types::U256,
622        pub deadline: ::ethers_core::types::U256,
623        pub v: u8,
624        pub r: [u8; 32],
625        pub s: [u8; 32],
626    }
627    ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41`
628    #[derive(
629        Clone,
630        ::ethers_contract::EthCall,
631        ::ethers_contract::EthDisplay,
632        Default,
633        Debug,
634        PartialEq,
635        Eq,
636        Hash
637    )]
638    #[ethcall(name = "symbol", abi = "symbol()")]
639    pub struct SymbolCall;
640    ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
641    #[derive(
642        Clone,
643        ::ethers_contract::EthCall,
644        ::ethers_contract::EthDisplay,
645        Default,
646        Debug,
647        PartialEq,
648        Eq,
649        Hash
650    )]
651    #[ethcall(name = "totalSupply", abi = "totalSupply()")]
652    pub struct TotalSupplyCall;
653    ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
654    #[derive(
655        Clone,
656        ::ethers_contract::EthCall,
657        ::ethers_contract::EthDisplay,
658        Default,
659        Debug,
660        PartialEq,
661        Eq,
662        Hash
663    )]
664    #[ethcall(name = "transfer", abi = "transfer(address,uint256)")]
665    pub struct TransferCall {
666        pub to: ::ethers_core::types::Address,
667        pub amount: ::ethers_core::types::U256,
668    }
669    ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
670    #[derive(
671        Clone,
672        ::ethers_contract::EthCall,
673        ::ethers_contract::EthDisplay,
674        Default,
675        Debug,
676        PartialEq,
677        Eq,
678        Hash
679    )]
680    #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")]
681    pub struct TransferFromCall {
682        pub from: ::ethers_core::types::Address,
683        pub to: ::ethers_core::types::Address,
684        pub amount: ::ethers_core::types::U256,
685    }
686    ///Container type for all of the contract's call
687    #[derive(Clone, ::ethers_contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
688    pub enum ERC20PermitCalls {
689        DomainSeparator(DomainSeparatorCall),
690        Allowance(AllowanceCall),
691        Approve(ApproveCall),
692        BalanceOf(BalanceOfCall),
693        Decimals(DecimalsCall),
694        DecreaseAllowance(DecreaseAllowanceCall),
695        Eip712Domain(Eip712DomainCall),
696        IncreaseAllowance(IncreaseAllowanceCall),
697        Name(NameCall),
698        Nonces(NoncesCall),
699        Permit(PermitCall),
700        Symbol(SymbolCall),
701        TotalSupply(TotalSupplyCall),
702        Transfer(TransferCall),
703        TransferFrom(TransferFromCall),
704    }
705    impl ::ethers_core::abi::AbiDecode for ERC20PermitCalls {
706        fn decode(
707            data: impl AsRef<[u8]>,
708        ) -> ::core::result::Result<Self, ::ethers_core::abi::AbiError> {
709            let data = data.as_ref();
710            if let Ok(decoded)
711                = <DomainSeparatorCall as ::ethers_core::abi::AbiDecode>::decode(data) {
712                return Ok(Self::DomainSeparator(decoded));
713            }
714            if let Ok(decoded)
715                = <AllowanceCall as ::ethers_core::abi::AbiDecode>::decode(data) {
716                return Ok(Self::Allowance(decoded));
717            }
718            if let Ok(decoded)
719                = <ApproveCall as ::ethers_core::abi::AbiDecode>::decode(data) {
720                return Ok(Self::Approve(decoded));
721            }
722            if let Ok(decoded)
723                = <BalanceOfCall as ::ethers_core::abi::AbiDecode>::decode(data) {
724                return Ok(Self::BalanceOf(decoded));
725            }
726            if let Ok(decoded)
727                = <DecimalsCall as ::ethers_core::abi::AbiDecode>::decode(data) {
728                return Ok(Self::Decimals(decoded));
729            }
730            if let Ok(decoded)
731                = <DecreaseAllowanceCall as ::ethers_core::abi::AbiDecode>::decode(
732                    data,
733                ) {
734                return Ok(Self::DecreaseAllowance(decoded));
735            }
736            if let Ok(decoded)
737                = <Eip712DomainCall as ::ethers_core::abi::AbiDecode>::decode(data) {
738                return Ok(Self::Eip712Domain(decoded));
739            }
740            if let Ok(decoded)
741                = <IncreaseAllowanceCall as ::ethers_core::abi::AbiDecode>::decode(
742                    data,
743                ) {
744                return Ok(Self::IncreaseAllowance(decoded));
745            }
746            if let Ok(decoded)
747                = <NameCall as ::ethers_core::abi::AbiDecode>::decode(data) {
748                return Ok(Self::Name(decoded));
749            }
750            if let Ok(decoded)
751                = <NoncesCall as ::ethers_core::abi::AbiDecode>::decode(data) {
752                return Ok(Self::Nonces(decoded));
753            }
754            if let Ok(decoded)
755                = <PermitCall as ::ethers_core::abi::AbiDecode>::decode(data) {
756                return Ok(Self::Permit(decoded));
757            }
758            if let Ok(decoded)
759                = <SymbolCall as ::ethers_core::abi::AbiDecode>::decode(data) {
760                return Ok(Self::Symbol(decoded));
761            }
762            if let Ok(decoded)
763                = <TotalSupplyCall as ::ethers_core::abi::AbiDecode>::decode(data) {
764                return Ok(Self::TotalSupply(decoded));
765            }
766            if let Ok(decoded)
767                = <TransferCall as ::ethers_core::abi::AbiDecode>::decode(data) {
768                return Ok(Self::Transfer(decoded));
769            }
770            if let Ok(decoded)
771                = <TransferFromCall as ::ethers_core::abi::AbiDecode>::decode(data) {
772                return Ok(Self::TransferFrom(decoded));
773            }
774            Err(::ethers_core::abi::Error::InvalidData.into())
775        }
776    }
777    impl ::ethers_core::abi::AbiEncode for ERC20PermitCalls {
778        fn encode(self) -> Vec<u8> {
779            match self {
780                Self::DomainSeparator(element) => {
781                    ::ethers_core::abi::AbiEncode::encode(element)
782                }
783                Self::Allowance(element) => {
784                    ::ethers_core::abi::AbiEncode::encode(element)
785                }
786                Self::Approve(element) => ::ethers_core::abi::AbiEncode::encode(element),
787                Self::BalanceOf(element) => {
788                    ::ethers_core::abi::AbiEncode::encode(element)
789                }
790                Self::Decimals(element) => ::ethers_core::abi::AbiEncode::encode(element),
791                Self::DecreaseAllowance(element) => {
792                    ::ethers_core::abi::AbiEncode::encode(element)
793                }
794                Self::Eip712Domain(element) => {
795                    ::ethers_core::abi::AbiEncode::encode(element)
796                }
797                Self::IncreaseAllowance(element) => {
798                    ::ethers_core::abi::AbiEncode::encode(element)
799                }
800                Self::Name(element) => ::ethers_core::abi::AbiEncode::encode(element),
801                Self::Nonces(element) => ::ethers_core::abi::AbiEncode::encode(element),
802                Self::Permit(element) => ::ethers_core::abi::AbiEncode::encode(element),
803                Self::Symbol(element) => ::ethers_core::abi::AbiEncode::encode(element),
804                Self::TotalSupply(element) => {
805                    ::ethers_core::abi::AbiEncode::encode(element)
806                }
807                Self::Transfer(element) => ::ethers_core::abi::AbiEncode::encode(element),
808                Self::TransferFrom(element) => {
809                    ::ethers_core::abi::AbiEncode::encode(element)
810                }
811            }
812        }
813    }
814    impl ::core::fmt::Display for ERC20PermitCalls {
815        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
816            match self {
817                Self::DomainSeparator(element) => ::core::fmt::Display::fmt(element, f),
818                Self::Allowance(element) => ::core::fmt::Display::fmt(element, f),
819                Self::Approve(element) => ::core::fmt::Display::fmt(element, f),
820                Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f),
821                Self::Decimals(element) => ::core::fmt::Display::fmt(element, f),
822                Self::DecreaseAllowance(element) => ::core::fmt::Display::fmt(element, f),
823                Self::Eip712Domain(element) => ::core::fmt::Display::fmt(element, f),
824                Self::IncreaseAllowance(element) => ::core::fmt::Display::fmt(element, f),
825                Self::Name(element) => ::core::fmt::Display::fmt(element, f),
826                Self::Nonces(element) => ::core::fmt::Display::fmt(element, f),
827                Self::Permit(element) => ::core::fmt::Display::fmt(element, f),
828                Self::Symbol(element) => ::core::fmt::Display::fmt(element, f),
829                Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f),
830                Self::Transfer(element) => ::core::fmt::Display::fmt(element, f),
831                Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f),
832            }
833        }
834    }
835    impl ::core::convert::From<DomainSeparatorCall> for ERC20PermitCalls {
836        fn from(value: DomainSeparatorCall) -> Self {
837            Self::DomainSeparator(value)
838        }
839    }
840    impl ::core::convert::From<AllowanceCall> for ERC20PermitCalls {
841        fn from(value: AllowanceCall) -> Self {
842            Self::Allowance(value)
843        }
844    }
845    impl ::core::convert::From<ApproveCall> for ERC20PermitCalls {
846        fn from(value: ApproveCall) -> Self {
847            Self::Approve(value)
848        }
849    }
850    impl ::core::convert::From<BalanceOfCall> for ERC20PermitCalls {
851        fn from(value: BalanceOfCall) -> Self {
852            Self::BalanceOf(value)
853        }
854    }
855    impl ::core::convert::From<DecimalsCall> for ERC20PermitCalls {
856        fn from(value: DecimalsCall) -> Self {
857            Self::Decimals(value)
858        }
859    }
860    impl ::core::convert::From<DecreaseAllowanceCall> for ERC20PermitCalls {
861        fn from(value: DecreaseAllowanceCall) -> Self {
862            Self::DecreaseAllowance(value)
863        }
864    }
865    impl ::core::convert::From<Eip712DomainCall> for ERC20PermitCalls {
866        fn from(value: Eip712DomainCall) -> Self {
867            Self::Eip712Domain(value)
868        }
869    }
870    impl ::core::convert::From<IncreaseAllowanceCall> for ERC20PermitCalls {
871        fn from(value: IncreaseAllowanceCall) -> Self {
872            Self::IncreaseAllowance(value)
873        }
874    }
875    impl ::core::convert::From<NameCall> for ERC20PermitCalls {
876        fn from(value: NameCall) -> Self {
877            Self::Name(value)
878        }
879    }
880    impl ::core::convert::From<NoncesCall> for ERC20PermitCalls {
881        fn from(value: NoncesCall) -> Self {
882            Self::Nonces(value)
883        }
884    }
885    impl ::core::convert::From<PermitCall> for ERC20PermitCalls {
886        fn from(value: PermitCall) -> Self {
887            Self::Permit(value)
888        }
889    }
890    impl ::core::convert::From<SymbolCall> for ERC20PermitCalls {
891        fn from(value: SymbolCall) -> Self {
892            Self::Symbol(value)
893        }
894    }
895    impl ::core::convert::From<TotalSupplyCall> for ERC20PermitCalls {
896        fn from(value: TotalSupplyCall) -> Self {
897            Self::TotalSupply(value)
898        }
899    }
900    impl ::core::convert::From<TransferCall> for ERC20PermitCalls {
901        fn from(value: TransferCall) -> Self {
902            Self::Transfer(value)
903        }
904    }
905    impl ::core::convert::From<TransferFromCall> for ERC20PermitCalls {
906        fn from(value: TransferFromCall) -> Self {
907            Self::TransferFrom(value)
908        }
909    }
910    ///Container type for all return fields from the `DOMAIN_SEPARATOR` function with signature `DOMAIN_SEPARATOR()` and selector `0x3644e515`
911    #[derive(
912        Clone,
913        ::ethers_contract::EthAbiType,
914        ::ethers_contract::EthAbiCodec,
915        Default,
916        Debug,
917        PartialEq,
918        Eq,
919        Hash
920    )]
921    pub struct DomainSeparatorReturn(pub [u8; 32]);
922    ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
923    #[derive(
924        Clone,
925        ::ethers_contract::EthAbiType,
926        ::ethers_contract::EthAbiCodec,
927        Default,
928        Debug,
929        PartialEq,
930        Eq,
931        Hash
932    )]
933    pub struct AllowanceReturn(pub ::ethers_core::types::U256);
934    ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
935    #[derive(
936        Clone,
937        ::ethers_contract::EthAbiType,
938        ::ethers_contract::EthAbiCodec,
939        Default,
940        Debug,
941        PartialEq,
942        Eq,
943        Hash
944    )]
945    pub struct ApproveReturn(pub bool);
946    ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
947    #[derive(
948        Clone,
949        ::ethers_contract::EthAbiType,
950        ::ethers_contract::EthAbiCodec,
951        Default,
952        Debug,
953        PartialEq,
954        Eq,
955        Hash
956    )]
957    pub struct BalanceOfReturn(pub ::ethers_core::types::U256);
958    ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567`
959    #[derive(
960        Clone,
961        ::ethers_contract::EthAbiType,
962        ::ethers_contract::EthAbiCodec,
963        Default,
964        Debug,
965        PartialEq,
966        Eq,
967        Hash
968    )]
969    pub struct DecimalsReturn(pub u8);
970    ///Container type for all return fields from the `decreaseAllowance` function with signature `decreaseAllowance(address,uint256)` and selector `0xa457c2d7`
971    #[derive(
972        Clone,
973        ::ethers_contract::EthAbiType,
974        ::ethers_contract::EthAbiCodec,
975        Default,
976        Debug,
977        PartialEq,
978        Eq,
979        Hash
980    )]
981    pub struct DecreaseAllowanceReturn(pub bool);
982    ///Container type for all return fields from the `eip712Domain` function with signature `eip712Domain()` and selector `0x84b0196e`
983    #[derive(
984        Clone,
985        ::ethers_contract::EthAbiType,
986        ::ethers_contract::EthAbiCodec,
987        Default,
988        Debug,
989        PartialEq,
990        Eq,
991        Hash
992    )]
993    pub struct Eip712DomainReturn {
994        pub fields: [u8; 1],
995        pub name: ::std::string::String,
996        pub version: ::std::string::String,
997        pub chain_id: ::ethers_core::types::U256,
998        pub verifying_contract: ::ethers_core::types::Address,
999        pub salt: [u8; 32],
1000        pub extensions: ::std::vec::Vec<::ethers_core::types::U256>,
1001    }
1002    ///Container type for all return fields from the `increaseAllowance` function with signature `increaseAllowance(address,uint256)` and selector `0x39509351`
1003    #[derive(
1004        Clone,
1005        ::ethers_contract::EthAbiType,
1006        ::ethers_contract::EthAbiCodec,
1007        Default,
1008        Debug,
1009        PartialEq,
1010        Eq,
1011        Hash
1012    )]
1013    pub struct IncreaseAllowanceReturn(pub bool);
1014    ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03`
1015    #[derive(
1016        Clone,
1017        ::ethers_contract::EthAbiType,
1018        ::ethers_contract::EthAbiCodec,
1019        Default,
1020        Debug,
1021        PartialEq,
1022        Eq,
1023        Hash
1024    )]
1025    pub struct NameReturn(pub ::std::string::String);
1026    ///Container type for all return fields from the `nonces` function with signature `nonces(address)` and selector `0x7ecebe00`
1027    #[derive(
1028        Clone,
1029        ::ethers_contract::EthAbiType,
1030        ::ethers_contract::EthAbiCodec,
1031        Default,
1032        Debug,
1033        PartialEq,
1034        Eq,
1035        Hash
1036    )]
1037    pub struct NoncesReturn(pub ::ethers_core::types::U256);
1038    ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41`
1039    #[derive(
1040        Clone,
1041        ::ethers_contract::EthAbiType,
1042        ::ethers_contract::EthAbiCodec,
1043        Default,
1044        Debug,
1045        PartialEq,
1046        Eq,
1047        Hash
1048    )]
1049    pub struct SymbolReturn(pub ::std::string::String);
1050    ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
1051    #[derive(
1052        Clone,
1053        ::ethers_contract::EthAbiType,
1054        ::ethers_contract::EthAbiCodec,
1055        Default,
1056        Debug,
1057        PartialEq,
1058        Eq,
1059        Hash
1060    )]
1061    pub struct TotalSupplyReturn(pub ::ethers_core::types::U256);
1062    ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
1063    #[derive(
1064        Clone,
1065        ::ethers_contract::EthAbiType,
1066        ::ethers_contract::EthAbiCodec,
1067        Default,
1068        Debug,
1069        PartialEq,
1070        Eq,
1071        Hash
1072    )]
1073    pub struct TransferReturn(pub bool);
1074    ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
1075    #[derive(
1076        Clone,
1077        ::ethers_contract::EthAbiType,
1078        ::ethers_contract::EthAbiCodec,
1079        Default,
1080        Debug,
1081        PartialEq,
1082        Eq,
1083        Hash
1084    )]
1085    pub struct TransferFromReturn(pub bool);
1086}