1pub use ierc20_metadata::*;
2#[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 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 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 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 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 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 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 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 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 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 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 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 pub fn approval_filter(
137 &self,
138 ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, ApprovalFilter> {
139 self.0.event()
140 }
141 pub fn transfer_filter(
143 &self,
144 ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, TransferFilter> {
145 self.0.event()
146 }
147 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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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 #[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}