hopr_bindings/codegen/
hopr_stake_base.rs

1pub use hopr_stake_base::*;
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 hopr_stake_base {
13    #[allow(deprecated)]
14    fn __abi() -> ::ethers::core::abi::Abi {
15        ::ethers::core::abi::ethabi::Contract {
16            constructor: ::core::option::Option::Some(::ethers::core::abi::ethabi::Constructor {
17                inputs: ::std::vec![
18                    ::ethers::core::abi::ethabi::Param {
19                        name: ::std::borrow::ToOwned::to_owned("_newOwner"),
20                        kind: ::ethers::core::abi::ethabi::ParamType::Address,
21                        internal_type: ::core::option::Option::Some(
22                            ::std::borrow::ToOwned::to_owned("address"),
23                        ),
24                    },
25                    ::ethers::core::abi::ethabi::Param {
26                        name: ::std::borrow::ToOwned::to_owned("_programStart"),
27                        kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
28                        internal_type: ::core::option::Option::Some(
29                            ::std::borrow::ToOwned::to_owned("uint256"),
30                        ),
31                    },
32                    ::ethers::core::abi::ethabi::Param {
33                        name: ::std::borrow::ToOwned::to_owned("_programEnd"),
34                        kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
35                        internal_type: ::core::option::Option::Some(
36                            ::std::borrow::ToOwned::to_owned("uint256"),
37                        ),
38                    },
39                    ::ethers::core::abi::ethabi::Param {
40                        name: ::std::borrow::ToOwned::to_owned("_basicFactorNumerator"),
41                        kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
42                        internal_type: ::core::option::Option::Some(
43                            ::std::borrow::ToOwned::to_owned("uint256"),
44                        ),
45                    },
46                    ::ethers::core::abi::ethabi::Param {
47                        name: ::std::borrow::ToOwned::to_owned("_boostCap"),
48                        kind: ::ethers::core::abi::ethabi::ParamType::Uint(256usize),
49                        internal_type: ::core::option::Option::Some(
50                            ::std::borrow::ToOwned::to_owned("uint256"),
51                        ),
52                    },
53                    ::ethers::core::abi::ethabi::Param {
54                        name: ::std::borrow::ToOwned::to_owned("_nftAddress"),
55                        kind: ::ethers::core::abi::ethabi::ParamType::Address,
56                        internal_type: ::core::option::Option::Some(
57                            ::std::borrow::ToOwned::to_owned("address"),
58                        ),
59                    },
60                    ::ethers::core::abi::ethabi::Param {
61                        name: ::std::borrow::ToOwned::to_owned("_lockToken"),
62                        kind: ::ethers::core::abi::ethabi::ParamType::Address,
63                        internal_type: ::core::option::Option::Some(
64                            ::std::borrow::ToOwned::to_owned("address"),
65                        ),
66                    },
67                    ::ethers::core::abi::ethabi::Param {
68                        name: ::std::borrow::ToOwned::to_owned("_rewardToken"),
69                        kind: ::ethers::core::abi::ethabi::ParamType::Address,
70                        internal_type: ::core::option::Option::Some(
71                            ::std::borrow::ToOwned::to_owned("address"),
72                        ),
73                    },
74                ],
75            }),
76            functions: ::core::convert::From::from([
77                (
78                    ::std::borrow::ToOwned::to_owned("BASIC_FACTOR_NUMERATOR"),
79                    ::std::vec![
80                        ::ethers::core::abi::ethabi::Function {
81                            name: ::std::borrow::ToOwned::to_owned(
82                                "BASIC_FACTOR_NUMERATOR",
83                            ),
84                            inputs: ::std::vec![],
85                            outputs: ::std::vec![
86                                ::ethers::core::abi::ethabi::Param {
87                                    name: ::std::string::String::new(),
88                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
89                                        256usize,
90                                    ),
91                                    internal_type: ::core::option::Option::Some(
92                                        ::std::borrow::ToOwned::to_owned("uint256"),
93                                    ),
94                                },
95                            ],
96                            constant: ::core::option::Option::None,
97                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
98                        },
99                    ],
100                ),
101                (
102                    ::std::borrow::ToOwned::to_owned("BOOST_CAP"),
103                    ::std::vec![
104                        ::ethers::core::abi::ethabi::Function {
105                            name: ::std::borrow::ToOwned::to_owned("BOOST_CAP"),
106                            inputs: ::std::vec![],
107                            outputs: ::std::vec![
108                                ::ethers::core::abi::ethabi::Param {
109                                    name: ::std::string::String::new(),
110                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
111                                        256usize,
112                                    ),
113                                    internal_type: ::core::option::Option::Some(
114                                        ::std::borrow::ToOwned::to_owned("uint256"),
115                                    ),
116                                },
117                            ],
118                            constant: ::core::option::Option::None,
119                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
120                        },
121                    ],
122                ),
123                (
124                    ::std::borrow::ToOwned::to_owned("FACTOR_DENOMINATOR"),
125                    ::std::vec![
126                        ::ethers::core::abi::ethabi::Function {
127                            name: ::std::borrow::ToOwned::to_owned("FACTOR_DENOMINATOR"),
128                            inputs: ::std::vec![],
129                            outputs: ::std::vec![
130                                ::ethers::core::abi::ethabi::Param {
131                                    name: ::std::string::String::new(),
132                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
133                                        256usize,
134                                    ),
135                                    internal_type: ::core::option::Option::Some(
136                                        ::std::borrow::ToOwned::to_owned("uint256"),
137                                    ),
138                                },
139                            ],
140                            constant: ::core::option::Option::None,
141                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
142                        },
143                    ],
144                ),
145                (
146                    ::std::borrow::ToOwned::to_owned("LOCK_TOKEN"),
147                    ::std::vec![
148                        ::ethers::core::abi::ethabi::Function {
149                            name: ::std::borrow::ToOwned::to_owned("LOCK_TOKEN"),
150                            inputs: ::std::vec![],
151                            outputs: ::std::vec![
152                                ::ethers::core::abi::ethabi::Param {
153                                    name: ::std::string::String::new(),
154                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
155                                    internal_type: ::core::option::Option::Some(
156                                        ::std::borrow::ToOwned::to_owned("address"),
157                                    ),
158                                },
159                            ],
160                            constant: ::core::option::Option::None,
161                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
162                        },
163                    ],
164                ),
165                (
166                    ::std::borrow::ToOwned::to_owned("NFT_CONTRACT"),
167                    ::std::vec![
168                        ::ethers::core::abi::ethabi::Function {
169                            name: ::std::borrow::ToOwned::to_owned("NFT_CONTRACT"),
170                            inputs: ::std::vec![],
171                            outputs: ::std::vec![
172                                ::ethers::core::abi::ethabi::Param {
173                                    name: ::std::string::String::new(),
174                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
175                                    internal_type: ::core::option::Option::Some(
176                                        ::std::borrow::ToOwned::to_owned("contract IHoprBoost"),
177                                    ),
178                                },
179                            ],
180                            constant: ::core::option::Option::None,
181                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
182                        },
183                    ],
184                ),
185                (
186                    ::std::borrow::ToOwned::to_owned("PROGRAM_END"),
187                    ::std::vec![
188                        ::ethers::core::abi::ethabi::Function {
189                            name: ::std::borrow::ToOwned::to_owned("PROGRAM_END"),
190                            inputs: ::std::vec![],
191                            outputs: ::std::vec![
192                                ::ethers::core::abi::ethabi::Param {
193                                    name: ::std::string::String::new(),
194                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
195                                        256usize,
196                                    ),
197                                    internal_type: ::core::option::Option::Some(
198                                        ::std::borrow::ToOwned::to_owned("uint256"),
199                                    ),
200                                },
201                            ],
202                            constant: ::core::option::Option::None,
203                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
204                        },
205                    ],
206                ),
207                (
208                    ::std::borrow::ToOwned::to_owned("PROGRAM_START"),
209                    ::std::vec![
210                        ::ethers::core::abi::ethabi::Function {
211                            name: ::std::borrow::ToOwned::to_owned("PROGRAM_START"),
212                            inputs: ::std::vec![],
213                            outputs: ::std::vec![
214                                ::ethers::core::abi::ethabi::Param {
215                                    name: ::std::string::String::new(),
216                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
217                                        256usize,
218                                    ),
219                                    internal_type: ::core::option::Option::Some(
220                                        ::std::borrow::ToOwned::to_owned("uint256"),
221                                    ),
222                                },
223                            ],
224                            constant: ::core::option::Option::None,
225                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
226                        },
227                    ],
228                ),
229                (
230                    ::std::borrow::ToOwned::to_owned("REWARD_TOKEN"),
231                    ::std::vec![
232                        ::ethers::core::abi::ethabi::Function {
233                            name: ::std::borrow::ToOwned::to_owned("REWARD_TOKEN"),
234                            inputs: ::std::vec![],
235                            outputs: ::std::vec![
236                                ::ethers::core::abi::ethabi::Param {
237                                    name: ::std::string::String::new(),
238                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
239                                    internal_type: ::core::option::Option::Some(
240                                        ::std::borrow::ToOwned::to_owned("address"),
241                                    ),
242                                },
243                            ],
244                            constant: ::core::option::Option::None,
245                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
246                        },
247                    ],
248                ),
249                (
250                    ::std::borrow::ToOwned::to_owned("accounts"),
251                    ::std::vec![
252                        ::ethers::core::abi::ethabi::Function {
253                            name: ::std::borrow::ToOwned::to_owned("accounts"),
254                            inputs: ::std::vec![
255                                ::ethers::core::abi::ethabi::Param {
256                                    name: ::std::string::String::new(),
257                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
258                                    internal_type: ::core::option::Option::Some(
259                                        ::std::borrow::ToOwned::to_owned("address"),
260                                    ),
261                                },
262                            ],
263                            outputs: ::std::vec![
264                                ::ethers::core::abi::ethabi::Param {
265                                    name: ::std::borrow::ToOwned::to_owned(
266                                        "actualLockedTokenAmount",
267                                    ),
268                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
269                                        256usize,
270                                    ),
271                                    internal_type: ::core::option::Option::Some(
272                                        ::std::borrow::ToOwned::to_owned("uint256"),
273                                    ),
274                                },
275                                ::ethers::core::abi::ethabi::Param {
276                                    name: ::std::borrow::ToOwned::to_owned("lastSyncTimestamp"),
277                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
278                                        256usize,
279                                    ),
280                                    internal_type: ::core::option::Option::Some(
281                                        ::std::borrow::ToOwned::to_owned("uint256"),
282                                    ),
283                                },
284                                ::ethers::core::abi::ethabi::Param {
285                                    name: ::std::borrow::ToOwned::to_owned("cumulatedRewards"),
286                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
287                                        256usize,
288                                    ),
289                                    internal_type: ::core::option::Option::Some(
290                                        ::std::borrow::ToOwned::to_owned("uint256"),
291                                    ),
292                                },
293                                ::ethers::core::abi::ethabi::Param {
294                                    name: ::std::borrow::ToOwned::to_owned("claimedRewards"),
295                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
296                                        256usize,
297                                    ),
298                                    internal_type: ::core::option::Option::Some(
299                                        ::std::borrow::ToOwned::to_owned("uint256"),
300                                    ),
301                                },
302                            ],
303                            constant: ::core::option::Option::None,
304                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
305                        },
306                    ],
307                ),
308                (
309                    ::std::borrow::ToOwned::to_owned("availableReward"),
310                    ::std::vec![
311                        ::ethers::core::abi::ethabi::Function {
312                            name: ::std::borrow::ToOwned::to_owned("availableReward"),
313                            inputs: ::std::vec![],
314                            outputs: ::std::vec![
315                                ::ethers::core::abi::ethabi::Param {
316                                    name: ::std::string::String::new(),
317                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
318                                        256usize,
319                                    ),
320                                    internal_type: ::core::option::Option::Some(
321                                        ::std::borrow::ToOwned::to_owned("uint256"),
322                                    ),
323                                },
324                            ],
325                            constant: ::core::option::Option::None,
326                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
327                        },
328                    ],
329                ),
330                (
331                    ::std::borrow::ToOwned::to_owned("claimRewards"),
332                    ::std::vec![
333                        ::ethers::core::abi::ethabi::Function {
334                            name: ::std::borrow::ToOwned::to_owned("claimRewards"),
335                            inputs: ::std::vec![
336                                ::ethers::core::abi::ethabi::Param {
337                                    name: ::std::borrow::ToOwned::to_owned("account"),
338                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
339                                    internal_type: ::core::option::Option::Some(
340                                        ::std::borrow::ToOwned::to_owned("address"),
341                                    ),
342                                },
343                            ],
344                            outputs: ::std::vec![],
345                            constant: ::core::option::Option::None,
346                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
347                        },
348                    ],
349                ),
350                (
351                    ::std::borrow::ToOwned::to_owned("getCumulatedRewardsIncrement"),
352                    ::std::vec![
353                        ::ethers::core::abi::ethabi::Function {
354                            name: ::std::borrow::ToOwned::to_owned(
355                                "getCumulatedRewardsIncrement",
356                            ),
357                            inputs: ::std::vec![
358                                ::ethers::core::abi::ethabi::Param {
359                                    name: ::std::borrow::ToOwned::to_owned("_account"),
360                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
361                                    internal_type: ::core::option::Option::Some(
362                                        ::std::borrow::ToOwned::to_owned("address"),
363                                    ),
364                                },
365                            ],
366                            outputs: ::std::vec![
367                                ::ethers::core::abi::ethabi::Param {
368                                    name: ::std::string::String::new(),
369                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
370                                        256usize,
371                                    ),
372                                    internal_type: ::core::option::Option::Some(
373                                        ::std::borrow::ToOwned::to_owned("uint256"),
374                                    ),
375                                },
376                            ],
377                            constant: ::core::option::Option::None,
378                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
379                        },
380                    ],
381                ),
382                (
383                    ::std::borrow::ToOwned::to_owned("isBlockedNft"),
384                    ::std::vec![
385                        ::ethers::core::abi::ethabi::Function {
386                            name: ::std::borrow::ToOwned::to_owned("isBlockedNft"),
387                            inputs: ::std::vec![
388                                ::ethers::core::abi::ethabi::Param {
389                                    name: ::std::string::String::new(),
390                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
391                                        256usize,
392                                    ),
393                                    internal_type: ::core::option::Option::Some(
394                                        ::std::borrow::ToOwned::to_owned("uint256"),
395                                    ),
396                                },
397                            ],
398                            outputs: ::std::vec![
399                                ::ethers::core::abi::ethabi::Param {
400                                    name: ::std::string::String::new(),
401                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
402                                    internal_type: ::core::option::Option::Some(
403                                        ::std::borrow::ToOwned::to_owned("bool"),
404                                    ),
405                                },
406                            ],
407                            constant: ::core::option::Option::None,
408                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
409                        },
410                    ],
411                ),
412                (
413                    ::std::borrow::ToOwned::to_owned("isNftTypeAndRankRedeemed1"),
414                    ::std::vec![
415                        ::ethers::core::abi::ethabi::Function {
416                            name: ::std::borrow::ToOwned::to_owned(
417                                "isNftTypeAndRankRedeemed1",
418                            ),
419                            inputs: ::std::vec![
420                                ::ethers::core::abi::ethabi::Param {
421                                    name: ::std::borrow::ToOwned::to_owned("nftType"),
422                                    kind: ::ethers::core::abi::ethabi::ParamType::String,
423                                    internal_type: ::core::option::Option::Some(
424                                        ::std::borrow::ToOwned::to_owned("string"),
425                                    ),
426                                },
427                                ::ethers::core::abi::ethabi::Param {
428                                    name: ::std::borrow::ToOwned::to_owned("nftRank"),
429                                    kind: ::ethers::core::abi::ethabi::ParamType::String,
430                                    internal_type: ::core::option::Option::Some(
431                                        ::std::borrow::ToOwned::to_owned("string"),
432                                    ),
433                                },
434                                ::ethers::core::abi::ethabi::Param {
435                                    name: ::std::borrow::ToOwned::to_owned("hodler"),
436                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
437                                    internal_type: ::core::option::Option::Some(
438                                        ::std::borrow::ToOwned::to_owned("address"),
439                                    ),
440                                },
441                            ],
442                            outputs: ::std::vec![
443                                ::ethers::core::abi::ethabi::Param {
444                                    name: ::std::string::String::new(),
445                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
446                                    internal_type: ::core::option::Option::Some(
447                                        ::std::borrow::ToOwned::to_owned("bool"),
448                                    ),
449                                },
450                            ],
451                            constant: ::core::option::Option::None,
452                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
453                        },
454                    ],
455                ),
456                (
457                    ::std::borrow::ToOwned::to_owned("isNftTypeAndRankRedeemed2"),
458                    ::std::vec![
459                        ::ethers::core::abi::ethabi::Function {
460                            name: ::std::borrow::ToOwned::to_owned(
461                                "isNftTypeAndRankRedeemed2",
462                            ),
463                            inputs: ::std::vec![
464                                ::ethers::core::abi::ethabi::Param {
465                                    name: ::std::borrow::ToOwned::to_owned("nftTypeIndex"),
466                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
467                                        256usize,
468                                    ),
469                                    internal_type: ::core::option::Option::Some(
470                                        ::std::borrow::ToOwned::to_owned("uint256"),
471                                    ),
472                                },
473                                ::ethers::core::abi::ethabi::Param {
474                                    name: ::std::borrow::ToOwned::to_owned("nftRank"),
475                                    kind: ::ethers::core::abi::ethabi::ParamType::String,
476                                    internal_type: ::core::option::Option::Some(
477                                        ::std::borrow::ToOwned::to_owned("string"),
478                                    ),
479                                },
480                                ::ethers::core::abi::ethabi::Param {
481                                    name: ::std::borrow::ToOwned::to_owned("hodler"),
482                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
483                                    internal_type: ::core::option::Option::Some(
484                                        ::std::borrow::ToOwned::to_owned("address"),
485                                    ),
486                                },
487                            ],
488                            outputs: ::std::vec![
489                                ::ethers::core::abi::ethabi::Param {
490                                    name: ::std::string::String::new(),
491                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
492                                    internal_type: ::core::option::Option::Some(
493                                        ::std::borrow::ToOwned::to_owned("bool"),
494                                    ),
495                                },
496                            ],
497                            constant: ::core::option::Option::None,
498                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
499                        },
500                    ],
501                ),
502                (
503                    ::std::borrow::ToOwned::to_owned("isNftTypeAndRankRedeemed3"),
504                    ::std::vec![
505                        ::ethers::core::abi::ethabi::Function {
506                            name: ::std::borrow::ToOwned::to_owned(
507                                "isNftTypeAndRankRedeemed3",
508                            ),
509                            inputs: ::std::vec![
510                                ::ethers::core::abi::ethabi::Param {
511                                    name: ::std::borrow::ToOwned::to_owned("nftTypeIndex"),
512                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
513                                        256usize,
514                                    ),
515                                    internal_type: ::core::option::Option::Some(
516                                        ::std::borrow::ToOwned::to_owned("uint256"),
517                                    ),
518                                },
519                                ::ethers::core::abi::ethabi::Param {
520                                    name: ::std::borrow::ToOwned::to_owned("boostNumerator"),
521                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
522                                        256usize,
523                                    ),
524                                    internal_type: ::core::option::Option::Some(
525                                        ::std::borrow::ToOwned::to_owned("uint256"),
526                                    ),
527                                },
528                                ::ethers::core::abi::ethabi::Param {
529                                    name: ::std::borrow::ToOwned::to_owned("hodler"),
530                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
531                                    internal_type: ::core::option::Option::Some(
532                                        ::std::borrow::ToOwned::to_owned("address"),
533                                    ),
534                                },
535                            ],
536                            outputs: ::std::vec![
537                                ::ethers::core::abi::ethabi::Param {
538                                    name: ::std::string::String::new(),
539                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
540                                    internal_type: ::core::option::Option::Some(
541                                        ::std::borrow::ToOwned::to_owned("bool"),
542                                    ),
543                                },
544                            ],
545                            constant: ::core::option::Option::None,
546                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
547                        },
548                    ],
549                ),
550                (
551                    ::std::borrow::ToOwned::to_owned("isNftTypeAndRankRedeemed4"),
552                    ::std::vec![
553                        ::ethers::core::abi::ethabi::Function {
554                            name: ::std::borrow::ToOwned::to_owned(
555                                "isNftTypeAndRankRedeemed4",
556                            ),
557                            inputs: ::std::vec![
558                                ::ethers::core::abi::ethabi::Param {
559                                    name: ::std::borrow::ToOwned::to_owned("nftType"),
560                                    kind: ::ethers::core::abi::ethabi::ParamType::String,
561                                    internal_type: ::core::option::Option::Some(
562                                        ::std::borrow::ToOwned::to_owned("string"),
563                                    ),
564                                },
565                                ::ethers::core::abi::ethabi::Param {
566                                    name: ::std::borrow::ToOwned::to_owned("boostNumerator"),
567                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
568                                        256usize,
569                                    ),
570                                    internal_type: ::core::option::Option::Some(
571                                        ::std::borrow::ToOwned::to_owned("uint256"),
572                                    ),
573                                },
574                                ::ethers::core::abi::ethabi::Param {
575                                    name: ::std::borrow::ToOwned::to_owned("hodler"),
576                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
577                                    internal_type: ::core::option::Option::Some(
578                                        ::std::borrow::ToOwned::to_owned("address"),
579                                    ),
580                                },
581                            ],
582                            outputs: ::std::vec![
583                                ::ethers::core::abi::ethabi::Param {
584                                    name: ::std::string::String::new(),
585                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
586                                    internal_type: ::core::option::Option::Some(
587                                        ::std::borrow::ToOwned::to_owned("bool"),
588                                    ),
589                                },
590                            ],
591                            constant: ::core::option::Option::None,
592                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
593                        },
594                    ],
595                ),
596                (
597                    ::std::borrow::ToOwned::to_owned("onERC721Received"),
598                    ::std::vec![
599                        ::ethers::core::abi::ethabi::Function {
600                            name: ::std::borrow::ToOwned::to_owned("onERC721Received"),
601                            inputs: ::std::vec![
602                                ::ethers::core::abi::ethabi::Param {
603                                    name: ::std::string::String::new(),
604                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
605                                    internal_type: ::core::option::Option::Some(
606                                        ::std::borrow::ToOwned::to_owned("address"),
607                                    ),
608                                },
609                                ::ethers::core::abi::ethabi::Param {
610                                    name: ::std::borrow::ToOwned::to_owned("from"),
611                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
612                                    internal_type: ::core::option::Option::Some(
613                                        ::std::borrow::ToOwned::to_owned("address"),
614                                    ),
615                                },
616                                ::ethers::core::abi::ethabi::Param {
617                                    name: ::std::borrow::ToOwned::to_owned("tokenId"),
618                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
619                                        256usize,
620                                    ),
621                                    internal_type: ::core::option::Option::Some(
622                                        ::std::borrow::ToOwned::to_owned("uint256"),
623                                    ),
624                                },
625                                ::ethers::core::abi::ethabi::Param {
626                                    name: ::std::string::String::new(),
627                                    kind: ::ethers::core::abi::ethabi::ParamType::Bytes,
628                                    internal_type: ::core::option::Option::Some(
629                                        ::std::borrow::ToOwned::to_owned("bytes"),
630                                    ),
631                                },
632                            ],
633                            outputs: ::std::vec![
634                                ::ethers::core::abi::ethabi::Param {
635                                    name: ::std::string::String::new(),
636                                    kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes(
637                                        4usize,
638                                    ),
639                                    internal_type: ::core::option::Option::Some(
640                                        ::std::borrow::ToOwned::to_owned("bytes4"),
641                                    ),
642                                },
643                            ],
644                            constant: ::core::option::Option::None,
645                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
646                        },
647                    ],
648                ),
649                (
650                    ::std::borrow::ToOwned::to_owned("onTokenTransfer"),
651                    ::std::vec![
652                        ::ethers::core::abi::ethabi::Function {
653                            name: ::std::borrow::ToOwned::to_owned("onTokenTransfer"),
654                            inputs: ::std::vec![
655                                ::ethers::core::abi::ethabi::Param {
656                                    name: ::std::borrow::ToOwned::to_owned("_from"),
657                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
658                                    internal_type: ::core::option::Option::Some(
659                                        ::std::borrow::ToOwned::to_owned("address"),
660                                    ),
661                                },
662                                ::ethers::core::abi::ethabi::Param {
663                                    name: ::std::borrow::ToOwned::to_owned("_value"),
664                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
665                                        256usize,
666                                    ),
667                                    internal_type: ::core::option::Option::Some(
668                                        ::std::borrow::ToOwned::to_owned("uint256"),
669                                    ),
670                                },
671                                ::ethers::core::abi::ethabi::Param {
672                                    name: ::std::string::String::new(),
673                                    kind: ::ethers::core::abi::ethabi::ParamType::Bytes,
674                                    internal_type: ::core::option::Option::Some(
675                                        ::std::borrow::ToOwned::to_owned("bytes"),
676                                    ),
677                                },
678                            ],
679                            outputs: ::std::vec![
680                                ::ethers::core::abi::ethabi::Param {
681                                    name: ::std::string::String::new(),
682                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
683                                    internal_type: ::core::option::Option::Some(
684                                        ::std::borrow::ToOwned::to_owned("bool"),
685                                    ),
686                                },
687                            ],
688                            constant: ::core::option::Option::None,
689                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
690                        },
691                    ],
692                ),
693                (
694                    ::std::borrow::ToOwned::to_owned("owner"),
695                    ::std::vec![
696                        ::ethers::core::abi::ethabi::Function {
697                            name: ::std::borrow::ToOwned::to_owned("owner"),
698                            inputs: ::std::vec![],
699                            outputs: ::std::vec![
700                                ::ethers::core::abi::ethabi::Param {
701                                    name: ::std::string::String::new(),
702                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
703                                    internal_type: ::core::option::Option::Some(
704                                        ::std::borrow::ToOwned::to_owned("address"),
705                                    ),
706                                },
707                            ],
708                            constant: ::core::option::Option::None,
709                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
710                        },
711                    ],
712                ),
713                (
714                    ::std::borrow::ToOwned::to_owned("ownerBlockNftType"),
715                    ::std::vec![
716                        ::ethers::core::abi::ethabi::Function {
717                            name: ::std::borrow::ToOwned::to_owned("ownerBlockNftType"),
718                            inputs: ::std::vec![
719                                ::ethers::core::abi::ethabi::Param {
720                                    name: ::std::borrow::ToOwned::to_owned("typeIndex"),
721                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
722                                        256usize,
723                                    ),
724                                    internal_type: ::core::option::Option::Some(
725                                        ::std::borrow::ToOwned::to_owned("uint256"),
726                                    ),
727                                },
728                            ],
729                            outputs: ::std::vec![],
730                            constant: ::core::option::Option::None,
731                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
732                        },
733                    ],
734                ),
735                (
736                    ::std::borrow::ToOwned::to_owned("ownerUnblockNftType"),
737                    ::std::vec![
738                        ::ethers::core::abi::ethabi::Function {
739                            name: ::std::borrow::ToOwned::to_owned(
740                                "ownerUnblockNftType",
741                            ),
742                            inputs: ::std::vec![
743                                ::ethers::core::abi::ethabi::Param {
744                                    name: ::std::borrow::ToOwned::to_owned("typeIndex"),
745                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
746                                        256usize,
747                                    ),
748                                    internal_type: ::core::option::Option::Some(
749                                        ::std::borrow::ToOwned::to_owned("uint256"),
750                                    ),
751                                },
752                            ],
753                            outputs: ::std::vec![],
754                            constant: ::core::option::Option::None,
755                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
756                        },
757                    ],
758                ),
759                (
760                    ::std::borrow::ToOwned::to_owned("reclaimErc20Tokens"),
761                    ::std::vec![
762                        ::ethers::core::abi::ethabi::Function {
763                            name: ::std::borrow::ToOwned::to_owned("reclaimErc20Tokens"),
764                            inputs: ::std::vec![
765                                ::ethers::core::abi::ethabi::Param {
766                                    name: ::std::borrow::ToOwned::to_owned("tokenAddress"),
767                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
768                                    internal_type: ::core::option::Option::Some(
769                                        ::std::borrow::ToOwned::to_owned("address"),
770                                    ),
771                                },
772                            ],
773                            outputs: ::std::vec![],
774                            constant: ::core::option::Option::None,
775                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
776                        },
777                    ],
778                ),
779                (
780                    ::std::borrow::ToOwned::to_owned("reclaimErc721Tokens"),
781                    ::std::vec![
782                        ::ethers::core::abi::ethabi::Function {
783                            name: ::std::borrow::ToOwned::to_owned(
784                                "reclaimErc721Tokens",
785                            ),
786                            inputs: ::std::vec![
787                                ::ethers::core::abi::ethabi::Param {
788                                    name: ::std::borrow::ToOwned::to_owned("tokenAddress"),
789                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
790                                    internal_type: ::core::option::Option::Some(
791                                        ::std::borrow::ToOwned::to_owned("address"),
792                                    ),
793                                },
794                                ::ethers::core::abi::ethabi::Param {
795                                    name: ::std::borrow::ToOwned::to_owned("tokenId"),
796                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
797                                        256usize,
798                                    ),
799                                    internal_type: ::core::option::Option::Some(
800                                        ::std::borrow::ToOwned::to_owned("uint256"),
801                                    ),
802                                },
803                            ],
804                            outputs: ::std::vec![],
805                            constant: ::core::option::Option::None,
806                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
807                        },
808                    ],
809                ),
810                (
811                    ::std::borrow::ToOwned::to_owned("redeemedFactor"),
812                    ::std::vec![
813                        ::ethers::core::abi::ethabi::Function {
814                            name: ::std::borrow::ToOwned::to_owned("redeemedFactor"),
815                            inputs: ::std::vec![
816                                ::ethers::core::abi::ethabi::Param {
817                                    name: ::std::string::String::new(),
818                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
819                                    internal_type: ::core::option::Option::Some(
820                                        ::std::borrow::ToOwned::to_owned("address"),
821                                    ),
822                                },
823                                ::ethers::core::abi::ethabi::Param {
824                                    name: ::std::string::String::new(),
825                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
826                                        256usize,
827                                    ),
828                                    internal_type: ::core::option::Option::Some(
829                                        ::std::borrow::ToOwned::to_owned("uint256"),
830                                    ),
831                                },
832                            ],
833                            outputs: ::std::vec![
834                                ::ethers::core::abi::ethabi::Param {
835                                    name: ::std::string::String::new(),
836                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
837                                        256usize,
838                                    ),
839                                    internal_type: ::core::option::Option::Some(
840                                        ::std::borrow::ToOwned::to_owned("uint256"),
841                                    ),
842                                },
843                            ],
844                            constant: ::core::option::Option::None,
845                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
846                        },
847                    ],
848                ),
849                (
850                    ::std::borrow::ToOwned::to_owned("redeemedFactorIndex"),
851                    ::std::vec![
852                        ::ethers::core::abi::ethabi::Function {
853                            name: ::std::borrow::ToOwned::to_owned(
854                                "redeemedFactorIndex",
855                            ),
856                            inputs: ::std::vec![
857                                ::ethers::core::abi::ethabi::Param {
858                                    name: ::std::string::String::new(),
859                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
860                                    internal_type: ::core::option::Option::Some(
861                                        ::std::borrow::ToOwned::to_owned("address"),
862                                    ),
863                                },
864                            ],
865                            outputs: ::std::vec![
866                                ::ethers::core::abi::ethabi::Param {
867                                    name: ::std::string::String::new(),
868                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
869                                        256usize,
870                                    ),
871                                    internal_type: ::core::option::Option::Some(
872                                        ::std::borrow::ToOwned::to_owned("uint256"),
873                                    ),
874                                },
875                            ],
876                            constant: ::core::option::Option::None,
877                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
878                        },
879                    ],
880                ),
881                (
882                    ::std::borrow::ToOwned::to_owned("redeemedNft"),
883                    ::std::vec![
884                        ::ethers::core::abi::ethabi::Function {
885                            name: ::std::borrow::ToOwned::to_owned("redeemedNft"),
886                            inputs: ::std::vec![
887                                ::ethers::core::abi::ethabi::Param {
888                                    name: ::std::string::String::new(),
889                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
890                                    internal_type: ::core::option::Option::Some(
891                                        ::std::borrow::ToOwned::to_owned("address"),
892                                    ),
893                                },
894                                ::ethers::core::abi::ethabi::Param {
895                                    name: ::std::string::String::new(),
896                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
897                                        256usize,
898                                    ),
899                                    internal_type: ::core::option::Option::Some(
900                                        ::std::borrow::ToOwned::to_owned("uint256"),
901                                    ),
902                                },
903                            ],
904                            outputs: ::std::vec![
905                                ::ethers::core::abi::ethabi::Param {
906                                    name: ::std::string::String::new(),
907                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
908                                        256usize,
909                                    ),
910                                    internal_type: ::core::option::Option::Some(
911                                        ::std::borrow::ToOwned::to_owned("uint256"),
912                                    ),
913                                },
914                            ],
915                            constant: ::core::option::Option::None,
916                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
917                        },
918                    ],
919                ),
920                (
921                    ::std::borrow::ToOwned::to_owned("redeemedNftIndex"),
922                    ::std::vec![
923                        ::ethers::core::abi::ethabi::Function {
924                            name: ::std::borrow::ToOwned::to_owned("redeemedNftIndex"),
925                            inputs: ::std::vec![
926                                ::ethers::core::abi::ethabi::Param {
927                                    name: ::std::string::String::new(),
928                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
929                                    internal_type: ::core::option::Option::Some(
930                                        ::std::borrow::ToOwned::to_owned("address"),
931                                    ),
932                                },
933                            ],
934                            outputs: ::std::vec![
935                                ::ethers::core::abi::ethabi::Param {
936                                    name: ::std::string::String::new(),
937                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
938                                        256usize,
939                                    ),
940                                    internal_type: ::core::option::Option::Some(
941                                        ::std::borrow::ToOwned::to_owned("uint256"),
942                                    ),
943                                },
944                            ],
945                            constant: ::core::option::Option::None,
946                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
947                        },
948                    ],
949                ),
950                (
951                    ::std::borrow::ToOwned::to_owned("renounceOwnership"),
952                    ::std::vec![
953                        ::ethers::core::abi::ethabi::Function {
954                            name: ::std::borrow::ToOwned::to_owned("renounceOwnership"),
955                            inputs: ::std::vec![],
956                            outputs: ::std::vec![],
957                            constant: ::core::option::Option::None,
958                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
959                        },
960                    ],
961                ),
962                (
963                    ::std::borrow::ToOwned::to_owned("stakedHoprTokens"),
964                    ::std::vec![
965                        ::ethers::core::abi::ethabi::Function {
966                            name: ::std::borrow::ToOwned::to_owned("stakedHoprTokens"),
967                            inputs: ::std::vec![
968                                ::ethers::core::abi::ethabi::Param {
969                                    name: ::std::borrow::ToOwned::to_owned("_account"),
970                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
971                                    internal_type: ::core::option::Option::Some(
972                                        ::std::borrow::ToOwned::to_owned("address"),
973                                    ),
974                                },
975                            ],
976                            outputs: ::std::vec![
977                                ::ethers::core::abi::ethabi::Param {
978                                    name: ::std::string::String::new(),
979                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
980                                        256usize,
981                                    ),
982                                    internal_type: ::core::option::Option::Some(
983                                        ::std::borrow::ToOwned::to_owned("uint256"),
984                                    ),
985                                },
986                            ],
987                            constant: ::core::option::Option::None,
988                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
989                        },
990                    ],
991                ),
992                (
993                    ::std::borrow::ToOwned::to_owned("sync"),
994                    ::std::vec![
995                        ::ethers::core::abi::ethabi::Function {
996                            name: ::std::borrow::ToOwned::to_owned("sync"),
997                            inputs: ::std::vec![
998                                ::ethers::core::abi::ethabi::Param {
999                                    name: ::std::borrow::ToOwned::to_owned("account"),
1000                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1001                                    internal_type: ::core::option::Option::Some(
1002                                        ::std::borrow::ToOwned::to_owned("address"),
1003                                    ),
1004                                },
1005                            ],
1006                            outputs: ::std::vec![],
1007                            constant: ::core::option::Option::None,
1008                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
1009                        },
1010                    ],
1011                ),
1012                (
1013                    ::std::borrow::ToOwned::to_owned("tokensReceived"),
1014                    ::std::vec![
1015                        ::ethers::core::abi::ethabi::Function {
1016                            name: ::std::borrow::ToOwned::to_owned("tokensReceived"),
1017                            inputs: ::std::vec![
1018                                ::ethers::core::abi::ethabi::Param {
1019                                    name: ::std::string::String::new(),
1020                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1021                                    internal_type: ::core::option::Option::Some(
1022                                        ::std::borrow::ToOwned::to_owned("address"),
1023                                    ),
1024                                },
1025                                ::ethers::core::abi::ethabi::Param {
1026                                    name: ::std::borrow::ToOwned::to_owned("from"),
1027                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1028                                    internal_type: ::core::option::Option::Some(
1029                                        ::std::borrow::ToOwned::to_owned("address"),
1030                                    ),
1031                                },
1032                                ::ethers::core::abi::ethabi::Param {
1033                                    name: ::std::borrow::ToOwned::to_owned("to"),
1034                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1035                                    internal_type: ::core::option::Option::Some(
1036                                        ::std::borrow::ToOwned::to_owned("address"),
1037                                    ),
1038                                },
1039                                ::ethers::core::abi::ethabi::Param {
1040                                    name: ::std::borrow::ToOwned::to_owned("amount"),
1041                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1042                                        256usize,
1043                                    ),
1044                                    internal_type: ::core::option::Option::Some(
1045                                        ::std::borrow::ToOwned::to_owned("uint256"),
1046                                    ),
1047                                },
1048                                ::ethers::core::abi::ethabi::Param {
1049                                    name: ::std::string::String::new(),
1050                                    kind: ::ethers::core::abi::ethabi::ParamType::Bytes,
1051                                    internal_type: ::core::option::Option::Some(
1052                                        ::std::borrow::ToOwned::to_owned("bytes"),
1053                                    ),
1054                                },
1055                                ::ethers::core::abi::ethabi::Param {
1056                                    name: ::std::string::String::new(),
1057                                    kind: ::ethers::core::abi::ethabi::ParamType::Bytes,
1058                                    internal_type: ::core::option::Option::Some(
1059                                        ::std::borrow::ToOwned::to_owned("bytes"),
1060                                    ),
1061                                },
1062                            ],
1063                            outputs: ::std::vec![],
1064                            constant: ::core::option::Option::None,
1065                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
1066                        },
1067                    ],
1068                ),
1069                (
1070                    ::std::borrow::ToOwned::to_owned("totalLocked"),
1071                    ::std::vec![
1072                        ::ethers::core::abi::ethabi::Function {
1073                            name: ::std::borrow::ToOwned::to_owned("totalLocked"),
1074                            inputs: ::std::vec![],
1075                            outputs: ::std::vec![
1076                                ::ethers::core::abi::ethabi::Param {
1077                                    name: ::std::string::String::new(),
1078                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1079                                        256usize,
1080                                    ),
1081                                    internal_type: ::core::option::Option::Some(
1082                                        ::std::borrow::ToOwned::to_owned("uint256"),
1083                                    ),
1084                                },
1085                            ],
1086                            constant: ::core::option::Option::None,
1087                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::View,
1088                        },
1089                    ],
1090                ),
1091                (
1092                    ::std::borrow::ToOwned::to_owned("transferOwnership"),
1093                    ::std::vec![
1094                        ::ethers::core::abi::ethabi::Function {
1095                            name: ::std::borrow::ToOwned::to_owned("transferOwnership"),
1096                            inputs: ::std::vec![
1097                                ::ethers::core::abi::ethabi::Param {
1098                                    name: ::std::borrow::ToOwned::to_owned("newOwner"),
1099                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1100                                    internal_type: ::core::option::Option::Some(
1101                                        ::std::borrow::ToOwned::to_owned("address"),
1102                                    ),
1103                                },
1104                            ],
1105                            outputs: ::std::vec![],
1106                            constant: ::core::option::Option::None,
1107                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
1108                        },
1109                    ],
1110                ),
1111                (
1112                    ::std::borrow::ToOwned::to_owned("unlock"),
1113                    ::std::vec![
1114                        ::ethers::core::abi::ethabi::Function {
1115                            name: ::std::borrow::ToOwned::to_owned("unlock"),
1116                            inputs: ::std::vec![],
1117                            outputs: ::std::vec![],
1118                            constant: ::core::option::Option::None,
1119                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
1120                        },
1121                    ],
1122                ),
1123                (
1124                    ::std::borrow::ToOwned::to_owned("unlockFor"),
1125                    ::std::vec![
1126                        ::ethers::core::abi::ethabi::Function {
1127                            name: ::std::borrow::ToOwned::to_owned("unlockFor"),
1128                            inputs: ::std::vec![
1129                                ::ethers::core::abi::ethabi::Param {
1130                                    name: ::std::borrow::ToOwned::to_owned("account"),
1131                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1132                                    internal_type: ::core::option::Option::Some(
1133                                        ::std::borrow::ToOwned::to_owned("address"),
1134                                    ),
1135                                },
1136                            ],
1137                            outputs: ::std::vec![],
1138                            constant: ::core::option::Option::None,
1139                            state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable,
1140                        },
1141                    ],
1142                ),
1143            ]),
1144            events: ::core::convert::From::from([
1145                (
1146                    ::std::borrow::ToOwned::to_owned("Claimed"),
1147                    ::std::vec![
1148                        ::ethers::core::abi::ethabi::Event {
1149                            name: ::std::borrow::ToOwned::to_owned("Claimed"),
1150                            inputs: ::std::vec![
1151                                ::ethers::core::abi::ethabi::EventParam {
1152                                    name: ::std::borrow::ToOwned::to_owned("account"),
1153                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1154                                    indexed: true,
1155                                },
1156                                ::ethers::core::abi::ethabi::EventParam {
1157                                    name: ::std::borrow::ToOwned::to_owned("rewardAmount"),
1158                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1159                                        256usize,
1160                                    ),
1161                                    indexed: true,
1162                                },
1163                            ],
1164                            anonymous: false,
1165                        },
1166                    ],
1167                ),
1168                (
1169                    ::std::borrow::ToOwned::to_owned("NftAllowed"),
1170                    ::std::vec![
1171                        ::ethers::core::abi::ethabi::Event {
1172                            name: ::std::borrow::ToOwned::to_owned("NftAllowed"),
1173                            inputs: ::std::vec![
1174                                ::ethers::core::abi::ethabi::EventParam {
1175                                    name: ::std::borrow::ToOwned::to_owned("typeIndex"),
1176                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1177                                        256usize,
1178                                    ),
1179                                    indexed: true,
1180                                },
1181                            ],
1182                            anonymous: false,
1183                        },
1184                    ],
1185                ),
1186                (
1187                    ::std::borrow::ToOwned::to_owned("NftBlocked"),
1188                    ::std::vec![
1189                        ::ethers::core::abi::ethabi::Event {
1190                            name: ::std::borrow::ToOwned::to_owned("NftBlocked"),
1191                            inputs: ::std::vec![
1192                                ::ethers::core::abi::ethabi::EventParam {
1193                                    name: ::std::borrow::ToOwned::to_owned("typeIndex"),
1194                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1195                                        256usize,
1196                                    ),
1197                                    indexed: true,
1198                                },
1199                            ],
1200                            anonymous: false,
1201                        },
1202                    ],
1203                ),
1204                (
1205                    ::std::borrow::ToOwned::to_owned("OwnershipTransferred"),
1206                    ::std::vec![
1207                        ::ethers::core::abi::ethabi::Event {
1208                            name: ::std::borrow::ToOwned::to_owned(
1209                                "OwnershipTransferred",
1210                            ),
1211                            inputs: ::std::vec![
1212                                ::ethers::core::abi::ethabi::EventParam {
1213                                    name: ::std::borrow::ToOwned::to_owned("previousOwner"),
1214                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1215                                    indexed: true,
1216                                },
1217                                ::ethers::core::abi::ethabi::EventParam {
1218                                    name: ::std::borrow::ToOwned::to_owned("newOwner"),
1219                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1220                                    indexed: true,
1221                                },
1222                            ],
1223                            anonymous: false,
1224                        },
1225                    ],
1226                ),
1227                (
1228                    ::std::borrow::ToOwned::to_owned("Redeemed"),
1229                    ::std::vec![
1230                        ::ethers::core::abi::ethabi::Event {
1231                            name: ::std::borrow::ToOwned::to_owned("Redeemed"),
1232                            inputs: ::std::vec![
1233                                ::ethers::core::abi::ethabi::EventParam {
1234                                    name: ::std::borrow::ToOwned::to_owned("account"),
1235                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1236                                    indexed: true,
1237                                },
1238                                ::ethers::core::abi::ethabi::EventParam {
1239                                    name: ::std::borrow::ToOwned::to_owned("boostTokenId"),
1240                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1241                                        256usize,
1242                                    ),
1243                                    indexed: true,
1244                                },
1245                                ::ethers::core::abi::ethabi::EventParam {
1246                                    name: ::std::borrow::ToOwned::to_owned("factorRegistered"),
1247                                    kind: ::ethers::core::abi::ethabi::ParamType::Bool,
1248                                    indexed: true,
1249                                },
1250                            ],
1251                            anonymous: false,
1252                        },
1253                    ],
1254                ),
1255                (
1256                    ::std::borrow::ToOwned::to_owned("Released"),
1257                    ::std::vec![
1258                        ::ethers::core::abi::ethabi::Event {
1259                            name: ::std::borrow::ToOwned::to_owned("Released"),
1260                            inputs: ::std::vec![
1261                                ::ethers::core::abi::ethabi::EventParam {
1262                                    name: ::std::borrow::ToOwned::to_owned("account"),
1263                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1264                                    indexed: true,
1265                                },
1266                                ::ethers::core::abi::ethabi::EventParam {
1267                                    name: ::std::borrow::ToOwned::to_owned("actualAmount"),
1268                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1269                                        256usize,
1270                                    ),
1271                                    indexed: true,
1272                                },
1273                            ],
1274                            anonymous: false,
1275                        },
1276                    ],
1277                ),
1278                (
1279                    ::std::borrow::ToOwned::to_owned("RewardFueled"),
1280                    ::std::vec![
1281                        ::ethers::core::abi::ethabi::Event {
1282                            name: ::std::borrow::ToOwned::to_owned("RewardFueled"),
1283                            inputs: ::std::vec![
1284                                ::ethers::core::abi::ethabi::EventParam {
1285                                    name: ::std::borrow::ToOwned::to_owned("amount"),
1286                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1287                                        256usize,
1288                                    ),
1289                                    indexed: true,
1290                                },
1291                            ],
1292                            anonymous: false,
1293                        },
1294                    ],
1295                ),
1296                (
1297                    ::std::borrow::ToOwned::to_owned("Staked"),
1298                    ::std::vec![
1299                        ::ethers::core::abi::ethabi::Event {
1300                            name: ::std::borrow::ToOwned::to_owned("Staked"),
1301                            inputs: ::std::vec![
1302                                ::ethers::core::abi::ethabi::EventParam {
1303                                    name: ::std::borrow::ToOwned::to_owned("account"),
1304                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1305                                    indexed: true,
1306                                },
1307                                ::ethers::core::abi::ethabi::EventParam {
1308                                    name: ::std::borrow::ToOwned::to_owned("actualAmount"),
1309                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1310                                        256usize,
1311                                    ),
1312                                    indexed: true,
1313                                },
1314                            ],
1315                            anonymous: false,
1316                        },
1317                    ],
1318                ),
1319                (
1320                    ::std::borrow::ToOwned::to_owned("Sync"),
1321                    ::std::vec![
1322                        ::ethers::core::abi::ethabi::Event {
1323                            name: ::std::borrow::ToOwned::to_owned("Sync"),
1324                            inputs: ::std::vec![
1325                                ::ethers::core::abi::ethabi::EventParam {
1326                                    name: ::std::borrow::ToOwned::to_owned("account"),
1327                                    kind: ::ethers::core::abi::ethabi::ParamType::Address,
1328                                    indexed: true,
1329                                },
1330                                ::ethers::core::abi::ethabi::EventParam {
1331                                    name: ::std::borrow::ToOwned::to_owned("increment"),
1332                                    kind: ::ethers::core::abi::ethabi::ParamType::Uint(
1333                                        256usize,
1334                                    ),
1335                                    indexed: true,
1336                                },
1337                            ],
1338                            anonymous: false,
1339                        },
1340                    ],
1341                ),
1342            ]),
1343            errors: ::std::collections::BTreeMap::new(),
1344            receive: false,
1345            fallback: false,
1346        }
1347    }
1348    ///The parsed JSON ABI of the contract.
1349    pub static HOPRSTAKEBASE_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(
1350        __abi,
1351    );
1352    #[rustfmt::skip]
1353    const __BYTECODE: &[u8] = b"a\x01\0`@R`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x90\x81\x16s\xD0W`J\x14\x98/\xE8\xD8\x8C_\xC2Z\xAC2g\xEA\x14*\x08\x17\x90\x91U`\x03\x80T\x82\x16s\xD4\xFD\xECD\xDB\x9DD\xB8\xF2\xB6\xD5)b\x0F\x9C\x0Cpf\xA2\xC1\x17\x90U`\x04\x80T\x90\x91\x16sC\xD1={\x83`\x7F\x143\\\xF2\xCBu\xE8}\xA3i\xD0V\xC7\x17\x90U4\x80\x15b\0\0xW`\0\x80\xFD[P`@Qb\0.B8\x03\x80b\0.B\x839\x81\x01`@\x81\x90Rb\0\0\x9B\x91b\0\x02\xEAV[b\0\0\xA63b\0\x01\xA8V[`\x01\x80U`\x80\x87\x90R`\xA0\x86\x90R`\xC0\x85\x90R`\xE0\x84\x90Rb\0\0\xC9\x88b\0\x01\xF8V[`@Qc)\x96Z\x1D`\xE0\x1B\x81R0`\x04\x82\x01\x81\x90R\x7F\xB2\x81\xFC\x8C\x12\x95M\"TM\xB4]\xE3\x15\x9A9'(\x95\xB1i\xA8R\xB3\x14\xF9\xCCv.D\xC5;`$\x83\x01R`D\x82\x01Rs\x18 \xA4\xB7a\x8B\xDEq\xDC\xE8\xCD\xC7:\xABl\x95\x90_\xAD$\x90c)\x96Z\x1D\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15b\0\x01CW`\0\x80\xFD[PZ\xF1\x15\x80\x15b\0\x01XW=`\0\x80>=`\0\xFD[PP`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x95\x86\x16`\x01`\x01`\xA0\x1B\x03\x19\x91\x82\x16\x17\x90\x91U`\x03\x80T\x94\x86\x16\x94\x82\x16\x94\x90\x94\x17\x90\x93UPP`\x04\x80T\x93\x90\x92\x16\x92\x16\x91\x90\x91\x17\x90UPb\0\x03n\x93PPPPV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14b\0\x02XW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16b\0\x02\xBFW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01b\0\x02OV[b\0\x02\xCA\x81b\0\x01\xA8V[PV[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14b\0\x02\xE5W`\0\x80\xFD[\x91\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15b\0\x03\x08W`\0\x80\xFD[b\0\x03\x13\x89b\0\x02\xCDV[\x97P` \x89\x01Q\x96P`@\x89\x01Q\x95P``\x89\x01Q\x94P`\x80\x89\x01Q\x93Pb\0\x03?`\xA0\x8A\x01b\0\x02\xCDV[\x92Pb\0\x03O`\xC0\x8A\x01b\0\x02\xCDV[\x91Pb\0\x03_`\xE0\x8A\x01b\0\x02\xCDV[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\x80Q`\xA0Q`\xC0Q`\xE0Qa*Mb\0\x03\xF5`\09`\0\x81\x81a\x05\x80\x01Ra\x1B\xE8\x01R`\0\x81\x81a\x04\x08\x01Ra\x1B\x04\x01R`\0\x81\x81a\x05\0\x01R\x81\x81a\x08,\x01R\x81\x81a\x14\xE4\x01R\x81\x81a\x1A\xC4\x01R\x81\x81a\x1CC\x01R\x81\x81a\x1C\xA4\x01Ra\x1E\x0E\x01R`\0\x81\x81a\x03Z\x01R\x81\x81a\x1A\x9A\x01R\x81\x81a\x1Cg\x01Ra\x1C\xC9\x01Ra*M`\0\xF3\xFE`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x1BW`\x005`\xE0\x1C\x80c\x81\x12\x8C\x1D\x11a\x01%W\x80c\xCB\xFF\xA3\xC7\x11a\0\xADW\x80c\xDD\xE4\x99y\x11a\0|W\x80c\xDD\xE4\x99y\x14a\x05hW\x80c\xEF\x05&\xA2\x14a\x05{W\x80c\xEF\\\xFB\x8C\x14a\x05\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\x05\xB5W\x80c\xF9x\xFF\xF1\x14a\x05\xC8W`\0\x80\xFD[\x80c\xCB\xFF\xA3\xC7\x14a\x04\xFBW\x80c\xCE#\x17~\x14a\x05\"W\x80c\xD0\xC0-c\x14a\x055W\x80c\xD0\xDAh\x01\x14a\x05UW`\0\x80\xFD[\x80c\x99$\x8E\xA7\x11a\0\xF4W\x80c\x99$\x8E\xA7\x14a\x04\xA7W\x80c\xA4\xC0\xED6\x14a\x04\xBAW\x80c\xA5\x84\x11\x94\x14a\x04\xCDW\x80c\xA6\x9D\xF4\xB5\x14a\x04\xE0W\x80c\xA8=\x1E\xD6\x14a\x04\xE8W`\0\x80\xFD[\x80c\x81\x12\x8C\x1D\x14a\x04EW\x80c\x8C$\xAD\xD4\x14a\x04pW\x80c\x8D\xA5\xCB[\x14a\x04\x83W\x80c\x96\xA9\xCD}\x14a\x04\x94W`\0\x80\xFD[\x80cV\x89\x14\x12\x11a\x01\xA8W\x80c^\xF7=X\x11a\x01wW\x80c^\xF7=X\x14a\x03\xE4W\x80c`g\xBC\x15\x14a\x03\xF0W\x80cj\xA8\xD4\xCF\x14a\x04\x03W\x80cp\xAF\t4\x14a\x04*W\x80cqP\x18\xA6\x14a\x04=W`\0\x80\xFD[\x80cV\x89\x14\x12\x14a\x03LW\x80c[\xBBc\xA6\x14a\x03UW\x80c^L\x0E\x15\x14a\x03|W\x80c^\\\x06\xE2\x14a\x03\x8FW`\0\x80\xFD[\x80c\x1F\xDA\x9A\x02\x11a\x01\xEFW\x80c\x1F\xDA\x9A\x02\x14a\x02\xBFW\x80c!\xCF\x85\xBA\x14a\x02\xEAW\x80cB\xC93a\x14a\x02\xFDW\x80cH\xC6NA\x14a\x030W\x80cJ\xD8K4\x14a\x03CW`\0\x80\xFD[\x80b#\xDE)\x14a\x02 W\x80c\n\x1A%z\x14a\x025W\x80c\x15\x0Bz\x02\x14a\x02sW\x80c\x1F\x01M\x83\x14a\x02\x9FW[`\0\x80\xFD[a\x023a\x02.6`\x04a#\xB5V[a\x05\xF1V[\0[a\x02`a\x02C6`\x04a$`V[`\x05` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x86a\x02\x816`\x04a$\x8AV[a\x07\x9EV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02jV[a\x02`a\x02\xAD6`\x04a$\xF9V[`\x08` R`\0\x90\x81R`@\x90 T\x81V[`\x04Ta\x02\xD2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02jV[a\x023a\x02\xF86`\x04a%\x14V[a\x0C\xB2V[a\x03 a\x03\x0B6`\x04a%\x14V[`\t` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02jV[a\x023a\x03>6`\x04a$`V[a\r\x85V[a\x02``\x0CT\x81V[a\x02``\x0BT\x81V[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x023a\x03\x8A6`\x04a%\x14V[a\x0F\x03V[a\x03\xC4a\x03\x9D6`\x04a$\xF9V[`\n` R`\0\x90\x81R`@\x90 \x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x90\x93\x01T\x91\x92\x90\x91\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02jV[a\x02`d\xE8\xD4\xA5\x10\0\x81V[a\x023a\x03\xFE6`\x04a$\xF9V[a\x0F\xA7V[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02`a\x0486`\x04a$\xF9V[a\x11ZV[a\x023a\x11kV[a\x02`a\x04S6`\x04a$`V[`\x07` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03 a\x04~6`\x04a%\xFAV[a\x11\xA1V[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xD2V[a\x03 a\x04\xA26`\x04a&QV[a\x13\x13V[`\x03Ta\x02\xD2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03 a\x04\xC86`\x04a&\x9FV[a\x14pV[a\x023a\x04\xDB6`\x04a$\xF9V[a\x15\xF9V[a\x023a\x16\x02V[a\x03 a\x04\xF66`\x04a'\nV[a\x16\x0BV[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03 a\x0506`\x04a'6V[a\x17^V[a\x02`a\x05C6`\x04a$\xF9V[`\x06` R`\0\x90\x81R`@\x90 T\x81V[`\x02Ta\x02\xD2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x023a\x05v6`\x04a$\xF9V[a\x18xV[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x023a\x05\xB06`\x04a$\xF9V[a\x18\x81V[a\x023a\x05\xC36`\x04a$\xF9V[a\x18\x93V[a\x02`a\x05\xD66`\x04a$\xF9V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\n` R`@\x90 T\x90V[`\x03T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06_W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FHoprStake: Sender must be wxHOPR`D\x82\x01Re\x10:7\xB5\xB2\xB7`\xD1\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x160\x14a\x06\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FHoprStake: Must be sending token`D\x82\x01R\x7Fs to HoprStake contract\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06VV[`\0T`\x01`\x01`\xA0\x1B\x03\x88\x81\x16\x91\x16\x14a\x07RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FHoprStake: Only accept owner to `D\x82\x01Rnprovide rewards`\x88\x1B`d\x82\x01R`\x84\x01a\x06VV[\x84`\x0C`\0\x82\x82Ta\x07d\x91\x90a'\xA8V[\x90\x91UPP`@Q\x85\x90\x7F+\xF5+\xCA\xE3\x19`%\x14\xE0/\xF6\x9B\xBEK\x89\xA1\x97\x18\xB9nxg\x04A(\xEC\x87$\x19C|\x90`\0\x90\xA2PPPPPPPPV[`\x04T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FHoprStake: Cannot SafeTransferFr`D\x82\x01R\x7Fom tokens other than HoprBoost.\0`d\x82\x01R`\x84\x01a\x06VV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11\x15a\x08\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FHoprStake: Program ended, cannot`D\x82\x01Rn\x1092\xB22\xB2\xB6\x9017\xB7\xB9\xBA9\x97`\x89\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x08\xBB\x85a\x19+V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x06\x80\x84R\x82\x85 \x80T\x86R\x91\x84R\x91\x84 \x89\x90U\x93\x83R\x90R\x81T`\x01\x92\x91\x90a\t\x02\x90\x84\x90a'\xA8V[\x90\x91UPP`\x04\x80T`@QcV#\x17\xC5`\xE0\x1B\x81R\x91\x82\x01\x86\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\tSW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tw\x91\x90a'\xBBV[`\x04\x80T`@Qc\"[7}`\xE2\x1B\x81R\x91\x82\x01\x88\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xE7\x91\x90a'\xD4V[P`\0\x83\x81R`\t` R`@\x90 T\x90\x91P`\xFF\x16\x15a\ndW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FHoprStake: Can only redeem NFTs `D\x82\x01Rp7\xB3\x100\xB667\xBB\xB2\xB2\x10:<\xB82\xB9\x97`y\x1B`d\x82\x01R`\x84\x01a\x06VV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x08` R`@\x81 T\x90[\x81\x81\x10\x15a\x0C\x15W`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\0\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92QcV#\x17\xC5`\xE0\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x14\x91\x90a'\xBBV[`\x04\x80T`@Qc\"[7}`\xE2\x1B\x81R\x91\x82\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x84\x91\x90a'\xD4V[P\x90P\x86\x82\x03a\x0B\xFFW\x85\x81\x10\x15a\x0B\xBDW`\x01`\x01`\xA0\x1B\x03\x8C\x16`\0\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x87\x84R\x90\x91R\x90 \x8B\x90U[`@Q\x86\x82\x10\x90\x8C\x90`\x01`\x01`\xA0\x1B\x03\x8F\x16\x90\x7F\x06m\x96\xCB(\x0F\xCC\xF3\xA0\xA3\xA5hif\xA8\x01\xB2i\n2\xEC\x98\xFD'\x11\xA4\xE0\x9F4]\x93]\x90`\0\x90\xA4PPPa\x0C\x15V[PPP\x80\x80a\x0C\r\x90a'\xF8V[\x91PPa\n\x7FV[\x81\x81\x03a\x0C\x9CW`\x01`\x01`\xA0\x1B\x03\x89\x16`\0\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x86\x84R\x82R\x80\x83 \x8C\x90U\x92\x82R`\x08\x90R\x90\x81 \x80T`\x01\x92\x90a\x0C]\x90\x84\x90a'\xA8V[\x90\x91UPP`@Q`\x01\x90\x89\x90`\x01`\x01`\xA0\x1B\x03\x8C\x16\x90\x7F\x06m\x96\xCB(\x0F\xCC\xF3\xA0\xA3\xA5hif\xA8\x01\xB2i\n2\xEC\x98\xFD'\x11\xA4\xE0\x9F4]\x93]\x90`\0\x90\xA4[Pc\n\x85\xBD\x01`\xE1\x1B\x99\x98PPPPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\0\x81\x81R`\t` R`@\x90 T`\xFF\x16a\rEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FHoprStake: NFT type is not block`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x01a\x06VV[`\0\x81\x81R`\t` R`@\x80\x82 \x80T`\xFF\x19\x16\x90UQ\x82\x91\x7F\xF7\x8Frf\xAB\x98]\xDB'\x82\xB5/\xC26\xB9\xD2\xF2/\xF2Q\xA3z3j)n\xD4\xB1\x88\xF7\xA9&\x91\xA2PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\r\xAFW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\x02`\x01T\x03a\x0E\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06VV[`\x02`\x01U`\x04T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x83\x16\x03a\x0ErW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FHoprStake: Cannot claim HoprBoos`D\x82\x01Rd\x1D\x08\x13\x91\x95`\xDA\x1B`d\x82\x01R`\x84\x01a\x06VV[\x81`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD0a\x0E\x94`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x04\x82\x01R\x91\x16`$\x82\x01R`D\x81\x01\x84\x90R`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\xF7W=`\0\x80>=`\0\xFD[PP`\x01\x80UPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0F-W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\0\x81\x81R`\t` R`@\x90 T`\xFF\x16\x15a\x0F\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FHoprStake: NFT type is already b`D\x82\x01Re\x1B\x1B\xD8\xDA\xD9Y`\xD2\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x0F\xA4\x81a\x19\xB6V[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0F\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\x02`\x01T\x03a\x10#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06VV[`\x02`\x01\x81\x90UT`\0\x90`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x83\x16\x03a\x10\xC1W`\x0BT`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x8CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xB0\x91\x90a'\xBBV[a\x10\xBA\x91\x90a(FV[\x90Pa\x11,V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11)\x91\x90a'\xBBV[\x90P[a\x11Ra\x11A`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x83a\x19\xF9V[PP`\x01\x80UV[`\0a\x11e\x82a\x1APV[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[a\x11\x9F`\0a\x1D\x13V[V[`\0\x80[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x13\x06W`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\"[7}`\xE2\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12Q\x91\x90a'\xD4V[P\x87Q` \x89\x01 `\x04\x80T`@Qc\xC5\x88\xFF\x8B`\xE0\x1B\x81R\x91\x82\x01\x86\x90R\x92\x93P\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xC5\x88\xFF\x8B\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xA5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x12\xCD\x91\x90\x81\x01\x90a(}V[\x80Q\x90` \x01 \x14\x80\x15a\x12\xE0WP\x80\x86\x14[\x15a\x12\xF1W`\x01\x93PPPPa\x13\x0CV[PP\x80\x80a\x12\xFE\x90a'\xF8V[\x91PPa\x11\xA5V[P`\0\x90P[\x93\x92PPPV[`\0\x80[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x13\x06W`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\xC8{V\xDD`\xE0\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\xC8{V\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x13\xC8\x91\x90\x81\x01\x90a(}V[`\x04\x80T`@QcV#\x17\xC5`\xE0\x1B\x81R\x91\x82\x01\x85\x90R\x91\x92P\x88\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x148\x91\x90a'\xBBV[\x14\x80\x15a\x14JWPa\x14J\x81\x87a\x1DcV[\x15a\x14[W`\x01\x93PPPPa\x13\x0CV[PP\x80\x80a\x14h\x90a'\xF8V[\x91PPa\x13\x17V[`\x02T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FHoprStake: Only accept LOCK_TOKE`D\x82\x01RkN in staking`\xA0\x1B`d\x82\x01R`\x84\x01a\x06VV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11\x15a\x15jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FHoprStake: Program ended, cannot`D\x82\x01Rn\x109\xBA0\xB5\xB2\x900\xB7<\xB6\xB7\xB92\x97`\x89\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x15s\x84a\x19+V[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\n` R`@\x81 \x80T\x85\x92\x90a\x15\x9B\x90\x84\x90a'\xA8V[\x92PP\x81\x90UP\x82`\x0B`\0\x82\x82Ta\x15\xB4\x91\x90a'\xA8V[\x90\x91UPP`@Q\x83\x90`\x01`\x01`\xA0\x1B\x03\x86\x16\x90\x7F\x9Eq\xBC\x8E\xEA\x02\xA69i\xF5\t\x81\x8F-\xAF\xB9%E2\x90C\x19\xF9\xDB\xDAy\xB6{\xD3J_=\x90`\0\x90\xA3P`\x01\x93\x92PPPV[a\x0F\xA4\x81a\x19+V[a\x11\x9F3a\x1E\x0CV[`\0\x80[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x13\x06W`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\"[7}`\xE2\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x97W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBB\x91\x90a'\xD4V[P`\x04\x80T`@QcV#\x17\xC5`\xE0\x1B\x81R\x91\x82\x01\x85\x90R\x91\x92P\x88\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17,\x91\x90a'\xBBV[\x14\x80\x15a\x178WP\x80\x86\x14[\x15a\x17IW`\x01\x93PPPPa\x13\x0CV[PP\x80\x80a\x17V\x90a'\xF8V[\x91PPa\x16\x0FV[`\0\x80\x84\x84`@Q` \x01a\x17t\x92\x91\x90a(\xF4V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x18lW`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\xC8{V\xDD`\xE0\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\xC8{V\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x189\x91\x90\x81\x01\x90a(}V[\x90Pa\x18E\x81\x85a\x1DcV[\x15a\x18WW`\x01\x94PPPPPa\x13\x0CV[PP\x80\x80a\x18d\x90a'\xF8V[\x91PPa\x17\x88V[P`\0\x95\x94PPPPPV[a\x0F\xA4\x81a\x1E\x0CV[a\x18\x8A\x81a\x19+V[a\x0F\xA4\x81a \x06V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x0F\xA4\x81a\x1D\x13V[`\0a\x196\x82a\x1APV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\n` R`@\x81 `\x02\x01\x80T\x92\x93P\x83\x92\x90\x91\x90a\x19f\x90\x84\x90a'\xA8V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\n` R`@\x80\x82 B`\x01\x90\x91\x01UQ\x83\x92\x91\x7F\x99\x86\x9D\x96\x8C\xA3X\x1Af\x1F1\xAB\xB3\xA6\xAAp\xCC\xEC\\\xDCI\x85^\xAB\x17L\xF9\xE0\n$b\xDB\x91\xA3PPV[`\0\x81\x81R`\t` R`@\x80\x82 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x82\x91\x7Fb\r\t\xC7\xC7\xF3\xC5\xC4\x1D\x8B^\xA7\xF2tb-\xDDj\xC6\xB8\x01\xF05\xFCt\x12\x05\xD1\x13\x19\x9C\x0C\x91\xA2PV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x1AK\x90\x84\x90a!MV[PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\n` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T\x81R`\x01\x82\x01T\x93\x81\x01\x93\x90\x93R`\x02\x81\x01T\x91\x83\x01\x91\x90\x91R`\x03\x01T``\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11\x15\x80a\x1A\xEBWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81` \x01Q\x10\x15[\x15a\x1A\xF9WP`\0\x92\x91PPV[\x80Q`\0\x90a\x1B)\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a)0V[\x90P`\0[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x08` R`@\x90 T\x81\x10\x15a\x1C7W`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\0\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\"[7}`\xE2\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1B\xDA\x91\x90a'\xD4V[P\x85Q\x90\x91P\x81\x90a\x1C\x0C\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\"\x1FV[a\x1C\x16\x91\x90a)0V[a\x1C \x90\x85a'\xA8V[\x93PPP\x80\x80a\x1C/\x90a'\xF8V[\x91PPa\x1B.V[Pd\xE8\xD4\xA5\x10\0a\x1C\x9F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1C\x99\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86` \x01Qa\"5\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90a\"\x1FV[a\x1C\xED\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1C\x99B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\"5V[a\x1C\xF7\x91\x90a(FV[a\x1D\x01\x90\x83a)0V[a\x1D\x0B\x91\x90a)GV[\x94\x93PPPPV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x80Q\x82Q`\0\x91\x84\x91\x84\x91\x90\x84\x90a\x1D|\x90\x83\x90a(FV[\x90P`\0\x84a\x1D\x8C`\x01\x84a(FV[\x81Q\x81\x10a\x1D\x9CWa\x1D\x9Ca)iV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P`/`\xF8\x1B\x81\x14a\x1D\xC6W`\0\x95PPPPPPa\x11eV[`\0a\x1D\xD3\x84` a(FV[a\x1D\xDE\x90`\x08a)0V[\x90P`\0\x80a\x1D\xEC\x87a)\x7FV[\x97\x90\x94\x01` \x01Q\x96\x82\x1C\x96\x90\x91\x1C\x95\x90\x95\x14\x95PPPPPP\x92\x91PPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11a\x1E\x97W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FHoprStake: Program is ongoing, c`D\x82\x01Rr0\xB777\xBA\x10:\xB767\xB1\xB5\x909\xBA0\xB5\xB2\x97`i\x1B`d\x82\x01R`\x84\x01a\x06VV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\n` R`@\x90 Ta\x1E\xB9\x82a\x19+V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\n` R`@\x81 \x81\x90U`\x0B\x80T\x83\x92\x90a\x1E\xE6\x90\x84\x90a(FV[\x90\x91UPa\x1E\xF5\x90P\x82a \x06V[`\x02Ta\x1F\x0C\x90`\x01`\x01`\xA0\x1B\x03\x16\x83\x83a\x19\xF9V[`\0[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x1F\xCBW`\x04\x80T`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x88\x84R\x90\x91R\x90\x81\x90 T\x90Qc#\xB8r\xDD`\xE0\x1B\x81R0\x95\x81\x01\x95\x90\x95R`$\x85\x01\x91\x90\x91R`D\x84\x01R\x16\x90c#\xB8r\xDD\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xB4W=`\0\x80>=`\0\xFD[PPPP\x80\x80a\x1F\xC3\x90a'\xF8V[\x91PPa\x1F\x0FV[P`@Q\x81\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xB2\x1F\xB5-WI\xB8\x0F1\x82\xF8\xC6\x99\"6\xB5\xE5Wf\x81\x88\t\x14HM\x7FL\x9B\x06.a\x9E\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\n` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T\x81R`\x01\x82\x01T\x93\x81\x01\x93\x90\x93R`\x02\x81\x01T\x91\x83\x01\x82\x90R`\x03\x01T``\x83\x01\x81\x90R\x91\x92\x91a [\x91a(FV[\x90P\x80\x15a\x1AKW`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\n` R`@\x90 `\x02\x81\x01T`\x03\x90\x91\x01U`\x0CT\x81\x11\x15a \xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FHoprStake: Insufficient reward p`D\x82\x01Rc7\xB7\xB6\x17`\xE1\x1B`d\x82\x01R`\x84\x01a\x06VV[\x80`\x0C`\0\x82\x82Ta \xF6\x91\x90a(FV[\x90\x91UPP`\x03Ta!\x12\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a\x19\xF9V[`@Q\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90\x7F\xD8\x13\x8F\x8A?7|RY\xCAT\x8Ep\xE4\xC2\xDE\x94\xF1)\xF5\xA1\x106\xA1[iQ<\xBA+Bj\x90`\0\x90\xA3PPPV[`\0a!\xA2\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a\"E\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x1AKW\x80\x80` \x01\x90Q\x81\x01\x90a!\xC0\x91\x90a)\xA6V[a\x1AKW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x06VV[`\0\x81\x83\x10a\".W\x81a\x13\x0CV[P\x90\x91\x90PV[`\0\x81\x83\x10\x15a\".W\x81a\x13\x0CV[``a\x1D\x0B\x84\x84`\0\x85\x85\x84;a\"\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x06VV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\"\xBA\x91\x90a)\xC8V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\"\xF7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\"\xFCV[``\x91P[P\x91P\x91Pa#\x0C\x82\x82\x86a#\x17V[\x97\x96PPPPPPPV[``\x83\x15a#&WP\x81a\x13\x0CV[\x82Q\x15a#6W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x91\x90a)\xE4V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#gW`\0\x80\xFD[\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a#~W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x96W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xAEW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15a#\xD1W`\0\x80\xFD[a#\xDA\x89a#PV[\x97Pa#\xE8` \x8A\x01a#PV[\x96Pa#\xF6`@\x8A\x01a#PV[\x95P``\x89\x015\x94P`\x80\x89\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x1AW`\0\x80\xFD[a$&\x8C\x83\x8D\x01a#lV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15a$?W`\0\x80\xFD[Pa$L\x8B\x82\x8C\x01a#lV[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`@\x83\x85\x03\x12\x15a$sW`\0\x80\xFD[a$|\x83a#PV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a$\xA2W`\0\x80\xFD[a$\xAB\x86a#PV[\x94Pa$\xB9` \x87\x01a#PV[\x93P`@\x86\x015\x92P``\x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xDCW`\0\x80\xFD[a$\xE8\x88\x82\x89\x01a#lV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x0BW`\0\x80\xFD[a\x13\x0C\x82a#PV[`\0` \x82\x84\x03\x12\x15a%&W`\0\x80\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a%lWa%la%-V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a%\x8EWa%\x8Ea%-V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0a%\xAFa%\xAA\x84a%tV[a%CV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15a%\xC3W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a%\xEBW`\0\x80\xFD[a\x13\x0C\x83\x835` \x85\x01a%\x9CV[`\0\x80`\0``\x84\x86\x03\x12\x15a&\x0FW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&&W`\0\x80\xFD[a&2\x86\x82\x87\x01a%\xDAV[\x93PP` \x84\x015\x91Pa&H`@\x85\x01a#PV[\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a&fW`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x84W`\0\x80\xFD[a&\x90\x86\x82\x87\x01a%\xDAV[\x92PPa&H`@\x85\x01a#PV[`\0\x80`\0``\x84\x86\x03\x12\x15a&\xB4W`\0\x80\xFD[a&\xBD\x84a#PV[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xE0W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a&\xF1W`\0\x80\xFD[a'\0\x86\x825` \x84\x01a%\x9CV[\x91PP\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a'\x1FW`\0\x80\xFD[\x835\x92P` \x84\x015\x91Pa&H`@\x85\x01a#PV[`\0\x80`\0``\x84\x86\x03\x12\x15a'KW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a'cW`\0\x80\xFD[a'o\x87\x83\x88\x01a%\xDAV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a'\x85W`\0\x80\xFD[Pa&\x90\x86\x82\x87\x01a%\xDAV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x11eWa\x11ea'\x92V[`\0` \x82\x84\x03\x12\x15a'\xCDW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a'\xE7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0`\x01\x82\x01a(\nWa(\na'\x92V[P`\x01\x01\x90V[` \x80\x82R\x81\x81\x01R\x7FOwnable: caller is not the owner`@\x82\x01R``\x01\x90V[\x81\x81\x03\x81\x81\x11\x15a\x11eWa\x11ea'\x92V[`\0[\x83\x81\x10\x15a(tW\x81\x81\x01Q\x83\x82\x01R` \x01a(\\V[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15a(\x8FW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xA6W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xB7W`\0\x80\xFD[\x80Qa(\xC5a%\xAA\x82a%tV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a(\xDAW`\0\x80\xFD[a(\xEB\x82` \x83\x01` \x86\x01a(YV[\x95\x94PPPPPV[`\0\x83Qa)\x06\x81\x84` \x88\x01a(YV[`/`\xF8\x1B\x90\x83\x01\x90\x81R\x83Qa)$\x81`\x01\x84\x01` \x88\x01a(YV[\x01`\x01\x01\x94\x93PPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x11eWa\x11ea'\x92V[`\0\x82a)dWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a)\xA0W`\0\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a)\xB8W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x0CW`\0\x80\xFD[`\0\x82Qa)\xDA\x81\x84` \x87\x01a(YV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra*\x03\x81`@\x85\x01` \x87\x01a(YV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xAFt\x95\x8A{\x1F/W\x7F\x1B\xE2\x1AD\xA2B\x05\x8F\x94\xE4\xBDm\xFE\x93C_Z6\x87Y%\x13\x9DdsolcC\0\x08\x13\x003";
1354    /// The bytecode of the contract.
1355    pub static HOPRSTAKEBASE_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
1356        __BYTECODE,
1357    );
1358    #[rustfmt::skip]
1359    const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`\x046\x10a\x02\x1BW`\x005`\xE0\x1C\x80c\x81\x12\x8C\x1D\x11a\x01%W\x80c\xCB\xFF\xA3\xC7\x11a\0\xADW\x80c\xDD\xE4\x99y\x11a\0|W\x80c\xDD\xE4\x99y\x14a\x05hW\x80c\xEF\x05&\xA2\x14a\x05{W\x80c\xEF\\\xFB\x8C\x14a\x05\xA2W\x80c\xF2\xFD\xE3\x8B\x14a\x05\xB5W\x80c\xF9x\xFF\xF1\x14a\x05\xC8W`\0\x80\xFD[\x80c\xCB\xFF\xA3\xC7\x14a\x04\xFBW\x80c\xCE#\x17~\x14a\x05\"W\x80c\xD0\xC0-c\x14a\x055W\x80c\xD0\xDAh\x01\x14a\x05UW`\0\x80\xFD[\x80c\x99$\x8E\xA7\x11a\0\xF4W\x80c\x99$\x8E\xA7\x14a\x04\xA7W\x80c\xA4\xC0\xED6\x14a\x04\xBAW\x80c\xA5\x84\x11\x94\x14a\x04\xCDW\x80c\xA6\x9D\xF4\xB5\x14a\x04\xE0W\x80c\xA8=\x1E\xD6\x14a\x04\xE8W`\0\x80\xFD[\x80c\x81\x12\x8C\x1D\x14a\x04EW\x80c\x8C$\xAD\xD4\x14a\x04pW\x80c\x8D\xA5\xCB[\x14a\x04\x83W\x80c\x96\xA9\xCD}\x14a\x04\x94W`\0\x80\xFD[\x80cV\x89\x14\x12\x11a\x01\xA8W\x80c^\xF7=X\x11a\x01wW\x80c^\xF7=X\x14a\x03\xE4W\x80c`g\xBC\x15\x14a\x03\xF0W\x80cj\xA8\xD4\xCF\x14a\x04\x03W\x80cp\xAF\t4\x14a\x04*W\x80cqP\x18\xA6\x14a\x04=W`\0\x80\xFD[\x80cV\x89\x14\x12\x14a\x03LW\x80c[\xBBc\xA6\x14a\x03UW\x80c^L\x0E\x15\x14a\x03|W\x80c^\\\x06\xE2\x14a\x03\x8FW`\0\x80\xFD[\x80c\x1F\xDA\x9A\x02\x11a\x01\xEFW\x80c\x1F\xDA\x9A\x02\x14a\x02\xBFW\x80c!\xCF\x85\xBA\x14a\x02\xEAW\x80cB\xC93a\x14a\x02\xFDW\x80cH\xC6NA\x14a\x030W\x80cJ\xD8K4\x14a\x03CW`\0\x80\xFD[\x80b#\xDE)\x14a\x02 W\x80c\n\x1A%z\x14a\x025W\x80c\x15\x0Bz\x02\x14a\x02sW\x80c\x1F\x01M\x83\x14a\x02\x9FW[`\0\x80\xFD[a\x023a\x02.6`\x04a#\xB5V[a\x05\xF1V[\0[a\x02`a\x02C6`\x04a$`V[`\x05` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[`@Q\x90\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[a\x02\x86a\x02\x816`\x04a$\x8AV[a\x07\x9EV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02jV[a\x02`a\x02\xAD6`\x04a$\xF9V[`\x08` R`\0\x90\x81R`@\x90 T\x81V[`\x04Ta\x02\xD2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02jV[a\x023a\x02\xF86`\x04a%\x14V[a\x0C\xB2V[a\x03 a\x03\x0B6`\x04a%\x14V[`\t` R`\0\x90\x81R`@\x90 T`\xFF\x16\x81V[`@Q\x90\x15\x15\x81R` \x01a\x02jV[a\x023a\x03>6`\x04a$`V[a\r\x85V[a\x02``\x0CT\x81V[a\x02``\x0BT\x81V[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x023a\x03\x8A6`\x04a%\x14V[a\x0F\x03V[a\x03\xC4a\x03\x9D6`\x04a$\xF9V[`\n` R`\0\x90\x81R`@\x90 \x80T`\x01\x82\x01T`\x02\x83\x01T`\x03\x90\x93\x01T\x91\x92\x90\x91\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02jV[a\x02`d\xE8\xD4\xA5\x10\0\x81V[a\x023a\x03\xFE6`\x04a$\xF9V[a\x0F\xA7V[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x02`a\x0486`\x04a$\xF9V[a\x11ZV[a\x023a\x11kV[a\x02`a\x04S6`\x04a$`V[`\x07` \x90\x81R`\0\x92\x83R`@\x80\x84 \x90\x91R\x90\x82R\x90 T\x81V[a\x03 a\x04~6`\x04a%\xFAV[a\x11\xA1V[`\0T`\x01`\x01`\xA0\x1B\x03\x16a\x02\xD2V[a\x03 a\x04\xA26`\x04a&QV[a\x13\x13V[`\x03Ta\x02\xD2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x03 a\x04\xC86`\x04a&\x9FV[a\x14pV[a\x023a\x04\xDB6`\x04a$\xF9V[a\x15\xF9V[a\x023a\x16\x02V[a\x03 a\x04\xF66`\x04a'\nV[a\x16\x0BV[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03 a\x0506`\x04a'6V[a\x17^V[a\x02`a\x05C6`\x04a$\xF9V[`\x06` R`\0\x90\x81R`@\x90 T\x81V[`\x02Ta\x02\xD2\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x023a\x05v6`\x04a$\xF9V[a\x18xV[a\x02`\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x023a\x05\xB06`\x04a$\xF9V[a\x18\x81V[a\x023a\x05\xC36`\x04a$\xF9V[a\x18\x93V[a\x02`a\x05\xD66`\x04a$\xF9V[`\x01`\x01`\xA0\x1B\x03\x16`\0\x90\x81R`\n` R`@\x90 T\x90V[`\x03T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x06_W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FHoprStake: Sender must be wxHOPR`D\x82\x01Re\x10:7\xB5\xB2\xB7`\xD1\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x160\x14a\x06\xDDW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`7`$\x82\x01R\x7FHoprStake: Must be sending token`D\x82\x01R\x7Fs to HoprStake contract\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01a\x06VV[`\0T`\x01`\x01`\xA0\x1B\x03\x88\x81\x16\x91\x16\x14a\x07RW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FHoprStake: Only accept owner to `D\x82\x01Rnprovide rewards`\x88\x1B`d\x82\x01R`\x84\x01a\x06VV[\x84`\x0C`\0\x82\x82Ta\x07d\x91\x90a'\xA8V[\x90\x91UPP`@Q\x85\x90\x7F+\xF5+\xCA\xE3\x19`%\x14\xE0/\xF6\x9B\xBEK\x89\xA1\x97\x18\xB9nxg\x04A(\xEC\x87$\x19C|\x90`\0\x90\xA2PPPPPPPPV[`\x04T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x08*W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`?`$\x82\x01R\x7FHoprStake: Cannot SafeTransferFr`D\x82\x01R\x7Fom tokens other than HoprBoost.\0`d\x82\x01R`\x84\x01a\x06VV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11\x15a\x08\xB2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FHoprStake: Program ended, cannot`D\x82\x01Rn\x1092\xB22\xB2\xB6\x9017\xB7\xB9\xBA9\x97`\x89\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x08\xBB\x85a\x19+V[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 `\x06\x80\x84R\x82\x85 \x80T\x86R\x91\x84R\x91\x84 \x89\x90U\x93\x83R\x90R\x81T`\x01\x92\x91\x90a\t\x02\x90\x84\x90a'\xA8V[\x90\x91UPP`\x04\x80T`@QcV#\x17\xC5`\xE0\x1B\x81R\x91\x82\x01\x86\x90R`\0\x91`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\tSW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\tw\x91\x90a'\xBBV[`\x04\x80T`@Qc\"[7}`\xE2\x1B\x81R\x91\x82\x01\x88\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xC3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\t\xE7\x91\x90a'\xD4V[P`\0\x83\x81R`\t` R`@\x90 T\x90\x91P`\xFF\x16\x15a\ndW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`1`$\x82\x01R\x7FHoprStake: Can only redeem NFTs `D\x82\x01Rp7\xB3\x100\xB667\xBB\xB2\xB2\x10:<\xB82\xB9\x97`y\x1B`d\x82\x01R`\x84\x01a\x06VV[`\x01`\x01`\xA0\x1B\x03\x87\x16`\0\x90\x81R`\x08` R`@\x81 T\x90[\x81\x81\x10\x15a\x0C\x15W`\x01`\x01`\xA0\x1B\x03\x89\x81\x16`\0\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92QcV#\x17\xC5`\xE0\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\n\xF0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x14\x91\x90a'\xBBV[`\x04\x80T`@Qc\"[7}`\xE2\x1B\x81R\x91\x82\x01\x85\x90R\x91\x92P`\0\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0B`W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0B\x84\x91\x90a'\xD4V[P\x90P\x86\x82\x03a\x0B\xFFW\x85\x81\x10\x15a\x0B\xBDW`\x01`\x01`\xA0\x1B\x03\x8C\x16`\0\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x87\x84R\x90\x91R\x90 \x8B\x90U[`@Q\x86\x82\x10\x90\x8C\x90`\x01`\x01`\xA0\x1B\x03\x8F\x16\x90\x7F\x06m\x96\xCB(\x0F\xCC\xF3\xA0\xA3\xA5hif\xA8\x01\xB2i\n2\xEC\x98\xFD'\x11\xA4\xE0\x9F4]\x93]\x90`\0\x90\xA4PPPa\x0C\x15V[PPP\x80\x80a\x0C\r\x90a'\xF8V[\x91PPa\n\x7FV[\x81\x81\x03a\x0C\x9CW`\x01`\x01`\xA0\x1B\x03\x89\x16`\0\x81\x81R`\x07` \x90\x81R`@\x80\x83 \x86\x84R\x82R\x80\x83 \x8C\x90U\x92\x82R`\x08\x90R\x90\x81 \x80T`\x01\x92\x90a\x0C]\x90\x84\x90a'\xA8V[\x90\x91UPP`@Q`\x01\x90\x89\x90`\x01`\x01`\xA0\x1B\x03\x8C\x16\x90\x7F\x06m\x96\xCB(\x0F\xCC\xF3\xA0\xA3\xA5hif\xA8\x01\xB2i\n2\xEC\x98\xFD'\x11\xA4\xE0\x9F4]\x93]\x90`\0\x90\xA4[Pc\n\x85\xBD\x01`\xE1\x1B\x99\x98PPPPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0C\xDCW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\0\x81\x81R`\t` R`@\x90 T`\xFF\x16a\rEW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\"`$\x82\x01R\x7FHoprStake: NFT type is not block`D\x82\x01Ra\x19Y`\xF2\x1B`d\x82\x01R`\x84\x01a\x06VV[`\0\x81\x81R`\t` R`@\x80\x82 \x80T`\xFF\x19\x16\x90UQ\x82\x91\x7F\xF7\x8Frf\xAB\x98]\xDB'\x82\xB5/\xC26\xB9\xD2\xF2/\xF2Q\xA3z3j)n\xD4\xB1\x88\xF7\xA9&\x91\xA2PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\r\xAFW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\x02`\x01T\x03a\x0E\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06VV[`\x02`\x01U`\x04T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x83\x16\x03a\x0ErW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`%`$\x82\x01R\x7FHoprStake: Cannot claim HoprBoos`D\x82\x01Rd\x1D\x08\x13\x91\x95`\xDA\x1B`d\x82\x01R`\x84\x01a\x06VV[\x81`\x01`\x01`\xA0\x1B\x03\x16c#\xB8r\xDD0a\x0E\x94`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xE0\x1B\x03\x19`\xE0\x85\x90\x1B\x16\x81R`\x01`\x01`\xA0\x1B\x03\x92\x83\x16`\x04\x82\x01R\x91\x16`$\x82\x01R`D\x81\x01\x84\x90R`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E\xE3W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0E\xF7W=`\0\x80>=`\0\xFD[PP`\x01\x80UPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0F-W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\0\x81\x81R`\t` R`@\x90 T`\xFF\x16\x15a\x0F\x9BW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FHoprStake: NFT type is already b`D\x82\x01Re\x1B\x1B\xD8\xDA\xD9Y`\xD2\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x0F\xA4\x81a\x19\xB6V[PV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x0F\xD1W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\x02`\x01T\x03a\x10#W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1F`$\x82\x01R\x7FReentrancyGuard: reentrant call\0`D\x82\x01R`d\x01a\x06VV[`\x02`\x01\x81\x90UT`\0\x90`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x83\x16\x03a\x10\xC1W`\x0BT`\x02T`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x10\x8CW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xB0\x91\x90a'\xBBV[a\x10\xBA\x91\x90a(FV[\x90Pa\x11,V[`@Qcp\xA0\x821`\xE0\x1B\x81R0`\x04\x82\x01R`\x01`\x01`\xA0\x1B\x03\x83\x16\x90cp\xA0\x821\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11\x05W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11)\x91\x90a'\xBBV[\x90P[a\x11Ra\x11A`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x83a\x19\xF9V[PP`\x01\x80UV[`\0a\x11e\x82a\x1APV[\x92\x91PPV[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x11\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[a\x11\x9F`\0a\x1D\x13V[V[`\0\x80[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x13\x06W`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\"[7}`\xE2\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12-W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x12Q\x91\x90a'\xD4V[P\x87Q` \x89\x01 `\x04\x80T`@Qc\xC5\x88\xFF\x8B`\xE0\x1B\x81R\x91\x82\x01\x86\x90R\x92\x93P\x90\x91`\x01`\x01`\xA0\x1B\x03\x16\x90c\xC5\x88\xFF\x8B\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x12\xA5W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x12\xCD\x91\x90\x81\x01\x90a(}V[\x80Q\x90` \x01 \x14\x80\x15a\x12\xE0WP\x80\x86\x14[\x15a\x12\xF1W`\x01\x93PPPPa\x13\x0CV[PP\x80\x80a\x12\xFE\x90a'\xF8V[\x91PPa\x11\xA5V[P`\0\x90P[\x93\x92PPPV[`\0\x80[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x13\x06W`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\xC8{V\xDD`\xE0\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\xC8{V\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x13\xA0W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x13\xC8\x91\x90\x81\x01\x90a(}V[`\x04\x80T`@QcV#\x17\xC5`\xE0\x1B\x81R\x91\x82\x01\x85\x90R\x91\x92P\x88\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x14\x14W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x148\x91\x90a'\xBBV[\x14\x80\x15a\x14JWPa\x14J\x81\x87a\x1DcV[\x15a\x14[W`\x01\x93PPPPa\x13\x0CV[PP\x80\x80a\x14h\x90a'\xF8V[\x91PPa\x13\x17V[`\x02T`\0\x90`\x01`\x01`\xA0\x1B\x03\x163\x14a\x14\xE2W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`,`$\x82\x01R\x7FHoprStake: Only accept LOCK_TOKE`D\x82\x01RkN in staking`\xA0\x1B`d\x82\x01R`\x84\x01a\x06VV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11\x15a\x15jW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FHoprStake: Program ended, cannot`D\x82\x01Rn\x109\xBA0\xB5\xB2\x900\xB7<\xB6\xB7\xB92\x97`\x89\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x15s\x84a\x19+V[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\n` R`@\x81 \x80T\x85\x92\x90a\x15\x9B\x90\x84\x90a'\xA8V[\x92PP\x81\x90UP\x82`\x0B`\0\x82\x82Ta\x15\xB4\x91\x90a'\xA8V[\x90\x91UPP`@Q\x83\x90`\x01`\x01`\xA0\x1B\x03\x86\x16\x90\x7F\x9Eq\xBC\x8E\xEA\x02\xA69i\xF5\t\x81\x8F-\xAF\xB9%E2\x90C\x19\xF9\xDB\xDAy\xB6{\xD3J_=\x90`\0\x90\xA3P`\x01\x93\x92PPPV[a\x0F\xA4\x81a\x19+V[a\x11\x9F3a\x1E\x0CV[`\0\x80[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x13\x06W`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\"[7}`\xE2\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x16\x97W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x16\xBB\x91\x90a'\xD4V[P`\x04\x80T`@QcV#\x17\xC5`\xE0\x1B\x81R\x91\x82\x01\x85\x90R\x91\x92P\x88\x91`\x01`\x01`\xA0\x1B\x03\x16\x90cV#\x17\xC5\x90`$\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\x08W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17,\x91\x90a'\xBBV[\x14\x80\x15a\x178WP\x80\x86\x14[\x15a\x17IW`\x01\x93PPPPa\x13\x0CV[PP\x80\x80a\x17V\x90a'\xF8V[\x91PPa\x16\x0FV[`\0\x80\x84\x84`@Q` \x01a\x17t\x92\x91\x90a(\xF4V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x90P`\0[`\x01`\x01`\xA0\x1B\x03\x84\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x18lW`\x01`\x01`\xA0\x1B\x03\x84\x81\x16`\0\x90\x81R`\x05` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\xC8{V\xDD`\xE0\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\xC8{V\xDD\x90`$\x01`\0`@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x18\x11W=`\0\x80>=`\0\xFD[PPPP`@Q=`\0\x82>`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01`@Ra\x189\x91\x90\x81\x01\x90a(}V[\x90Pa\x18E\x81\x85a\x1DcV[\x15a\x18WW`\x01\x94PPPPPa\x13\x0CV[PP\x80\x80a\x18d\x90a'\xF8V[\x91PPa\x17\x88V[P`\0\x95\x94PPPPPV[a\x0F\xA4\x81a\x1E\x0CV[a\x18\x8A\x81a\x19+V[a\x0F\xA4\x81a \x06V[`\0T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x18\xBDW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x90a(\x11V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x19\"W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06VV[a\x0F\xA4\x81a\x1D\x13V[`\0a\x196\x82a\x1APV[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\n` R`@\x81 `\x02\x01\x80T\x92\x93P\x83\x92\x90\x91\x90a\x19f\x90\x84\x90a'\xA8V[\x90\x91UPP`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x81\x81R`\n` R`@\x80\x82 B`\x01\x90\x91\x01UQ\x83\x92\x91\x7F\x99\x86\x9D\x96\x8C\xA3X\x1Af\x1F1\xAB\xB3\xA6\xAAp\xCC\xEC\\\xDCI\x85^\xAB\x17L\xF9\xE0\n$b\xDB\x91\xA3PPV[`\0\x81\x81R`\t` R`@\x80\x82 \x80T`\xFF\x19\x16`\x01\x17\x90UQ\x82\x91\x7Fb\r\t\xC7\xC7\xF3\xC5\xC4\x1D\x8B^\xA7\xF2tb-\xDDj\xC6\xB8\x01\xF05\xFCt\x12\x05\xD1\x13\x19\x9C\x0C\x91\xA2PV[`@\x80Q`\x01`\x01`\xA0\x1B\x03\x84\x16`$\x82\x01R`D\x80\x82\x01\x84\x90R\x82Q\x80\x83\x03\x90\x91\x01\x81R`d\x90\x91\x01\x90\x91R` \x81\x01\x80Q`\x01`\x01`\xE0\x1B\x03\x16c\xA9\x05\x9C\xBB`\xE0\x1B\x17\x90Ra\x1AK\x90\x84\x90a!MV[PPPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\n` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T\x81R`\x01\x82\x01T\x93\x81\x01\x93\x90\x93R`\x02\x81\x01T\x91\x83\x01\x91\x90\x91R`\x03\x01T``\x82\x01R\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11\x15\x80a\x1A\xEBWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81` \x01Q\x10\x15[\x15a\x1A\xF9WP`\0\x92\x91PPV[\x80Q`\0\x90a\x1B)\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x90a)0V[\x90P`\0[`\x01`\x01`\xA0\x1B\x03\x85\x16`\0\x90\x81R`\x08` R`@\x90 T\x81\x10\x15a\x1C7W`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\0\x90\x81R`\x07` \x90\x81R`@\x80\x83 \x85\x84R\x90\x91R\x80\x82 T`\x04\x80T\x92Qc\"[7}`\xE2\x1B\x81R\x90\x81\x01\x82\x90R\x90\x93\x91\x90\x91\x16\x90c\x89l\xDD\xF4\x90`$\x01`@\x80Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1B\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1B\xDA\x91\x90a'\xD4V[P\x85Q\x90\x91P\x81\x90a\x1C\x0C\x90\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\"\x1FV[a\x1C\x16\x91\x90a)0V[a\x1C \x90\x85a'\xA8V[\x93PPP\x80\x80a\x1C/\x90a'\xF8V[\x91PPa\x1B.V[Pd\xE8\xD4\xA5\x10\0a\x1C\x9F\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1C\x99\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86` \x01Qa\"5\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x90a\"\x1FV[a\x1C\xED\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\x1C\x99B\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\"5V[a\x1C\xF7\x91\x90a(FV[a\x1D\x01\x90\x83a)0V[a\x1D\x0B\x91\x90a)GV[\x94\x93PPPPV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[\x80Q\x82Q`\0\x91\x84\x91\x84\x91\x90\x84\x90a\x1D|\x90\x83\x90a(FV[\x90P`\0\x84a\x1D\x8C`\x01\x84a(FV[\x81Q\x81\x10a\x1D\x9CWa\x1D\x9Ca)iV[\x01` \x01Q`\x01`\x01`\xF8\x1B\x03\x19\x16\x90P`/`\xF8\x1B\x81\x14a\x1D\xC6W`\0\x95PPPPPPa\x11eV[`\0a\x1D\xD3\x84` a(FV[a\x1D\xDE\x90`\x08a)0V[\x90P`\0\x80a\x1D\xEC\x87a)\x7FV[\x97\x90\x94\x01` \x01Q\x96\x82\x1C\x96\x90\x91\x1C\x95\x90\x95\x14\x95PPPPPP\x92\x91PPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0B\x11a\x1E\x97W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FHoprStake: Program is ongoing, c`D\x82\x01Rr0\xB777\xBA\x10:\xB767\xB1\xB5\x909\xBA0\xB5\xB2\x97`i\x1B`d\x82\x01R`\x84\x01a\x06VV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\n` R`@\x90 Ta\x1E\xB9\x82a\x19+V[`\x01`\x01`\xA0\x1B\x03\x82\x16`\0\x90\x81R`\n` R`@\x81 \x81\x90U`\x0B\x80T\x83\x92\x90a\x1E\xE6\x90\x84\x90a(FV[\x90\x91UPa\x1E\xF5\x90P\x82a \x06V[`\x02Ta\x1F\x0C\x90`\x01`\x01`\xA0\x1B\x03\x16\x83\x83a\x19\xF9V[`\0[`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\x06` R`@\x90 T\x81\x10\x15a\x1F\xCBW`\x04\x80T`\x01`\x01`\xA0\x1B\x03\x85\x81\x16`\0\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x88\x84R\x90\x91R\x90\x81\x90 T\x90Qc#\xB8r\xDD`\xE0\x1B\x81R0\x95\x81\x01\x95\x90\x95R`$\x85\x01\x91\x90\x91R`D\x84\x01R\x16\x90c#\xB8r\xDD\x90`d\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xA0W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xB4W=`\0\x80>=`\0\xFD[PPPP\x80\x80a\x1F\xC3\x90a'\xF8V[\x91PPa\x1F\x0FV[P`@Q\x81\x90`\x01`\x01`\xA0\x1B\x03\x84\x16\x90\x7F\xB2\x1F\xB5-WI\xB8\x0F1\x82\xF8\xC6\x99\"6\xB5\xE5Wf\x81\x88\t\x14HM\x7FL\x9B\x06.a\x9E\x90`\0\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16`\0\x90\x81R`\n` \x90\x81R`@\x80\x83 \x81Q`\x80\x81\x01\x83R\x81T\x81R`\x01\x82\x01T\x93\x81\x01\x93\x90\x93R`\x02\x81\x01T\x91\x83\x01\x82\x90R`\x03\x01T``\x83\x01\x81\x90R\x91\x92\x91a [\x91a(FV[\x90P\x80\x15a\x1AKW`\x01`\x01`\xA0\x1B\x03\x83\x16`\0\x90\x81R`\n` R`@\x90 `\x02\x81\x01T`\x03\x90\x91\x01U`\x0CT\x81\x11\x15a \xE4W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`$\x80\x82\x01R\x7FHoprStake: Insufficient reward p`D\x82\x01Rc7\xB7\xB6\x17`\xE1\x1B`d\x82\x01R`\x84\x01a\x06VV[\x80`\x0C`\0\x82\x82Ta \xF6\x91\x90a(FV[\x90\x91UPP`\x03Ta!\x12\x90`\x01`\x01`\xA0\x1B\x03\x16\x84\x83a\x19\xF9V[`@Q\x81\x90`\x01`\x01`\xA0\x1B\x03\x85\x16\x90\x7F\xD8\x13\x8F\x8A?7|RY\xCAT\x8Ep\xE4\xC2\xDE\x94\xF1)\xF5\xA1\x106\xA1[iQ<\xBA+Bj\x90`\0\x90\xA3PPPV[`\0a!\xA2\x82`@Q\x80`@\x01`@R\x80` \x81R` \x01\x7FSafeERC20: low-level call failed\x81RP\x85`\x01`\x01`\xA0\x1B\x03\x16a\"E\x90\x92\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x80Q\x90\x91P\x15a\x1AKW\x80\x80` \x01\x90Q\x81\x01\x90a!\xC0\x91\x90a)\xA6V[a\x1AKW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`*`$\x82\x01R\x7FSafeERC20: ERC20 operation did n`D\x82\x01Ri\x1B\xDD\x08\x1C\xDDX\xD8\xD9YY`\xB2\x1B`d\x82\x01R`\x84\x01a\x06VV[`\0\x81\x83\x10a\".W\x81a\x13\x0CV[P\x90\x91\x90PV[`\0\x81\x83\x10\x15a\".W\x81a\x13\x0CV[``a\x1D\x0B\x84\x84`\0\x85\x85\x84;a\"\x9EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`\x1D`$\x82\x01R\x7FAddress: call to non-contract\0\0\0`D\x82\x01R`d\x01a\x06VV[`\0\x80\x86`\x01`\x01`\xA0\x1B\x03\x16\x85\x87`@Qa\"\xBA\x91\x90a)\xC8V[`\0`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80`\0\x81\x14a\"\xF7W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=`\0` \x84\x01>a\"\xFCV[``\x91P[P\x91P\x91Pa#\x0C\x82\x82\x86a#\x17V[\x97\x96PPPPPPPV[``\x83\x15a#&WP\x81a\x13\x0CV[\x82Q\x15a#6W\x82Q\x80\x84` \x01\xFD[\x81`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06V\x91\x90a)\xE4V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a#gW`\0\x80\xFD[\x91\x90PV[`\0\x80\x83`\x1F\x84\x01\x12a#~W`\0\x80\xFD[P\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a#\x96W`\0\x80\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a#\xAEW`\0\x80\xFD[\x92P\x92\x90PV[`\0\x80`\0\x80`\0\x80`\0\x80`\xC0\x89\x8B\x03\x12\x15a#\xD1W`\0\x80\xFD[a#\xDA\x89a#PV[\x97Pa#\xE8` \x8A\x01a#PV[\x96Pa#\xF6`@\x8A\x01a#PV[\x95P``\x89\x015\x94P`\x80\x89\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a$\x1AW`\0\x80\xFD[a$&\x8C\x83\x8D\x01a#lV[\x90\x96P\x94P`\xA0\x8B\x015\x91P\x80\x82\x11\x15a$?W`\0\x80\xFD[Pa$L\x8B\x82\x8C\x01a#lV[\x99\x9C\x98\x9BP\x96\x99P\x94\x97\x93\x96\x92\x95\x94PPPV[`\0\x80`@\x83\x85\x03\x12\x15a$sW`\0\x80\xFD[a$|\x83a#PV[\x94` \x93\x90\x93\x015\x93PPPV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a$\xA2W`\0\x80\xFD[a$\xAB\x86a#PV[\x94Pa$\xB9` \x87\x01a#PV[\x93P`@\x86\x015\x92P``\x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a$\xDCW`\0\x80\xFD[a$\xE8\x88\x82\x89\x01a#lV[\x96\x99\x95\x98P\x93\x96P\x92\x94\x93\x92PPPV[`\0` \x82\x84\x03\x12\x15a%\x0BW`\0\x80\xFD[a\x13\x0C\x82a#PV[`\0` \x82\x84\x03\x12\x15a%&W`\0\x80\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a%lWa%la%-V[`@R\x91\x90PV[`\0g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x15a%\x8EWa%\x8Ea%-V[P`\x1F\x01`\x1F\x19\x16` \x01\x90V[`\0a%\xAFa%\xAA\x84a%tV[a%CV[\x90P\x82\x81R\x83\x83\x83\x01\x11\x15a%\xC3W`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a%\xEBW`\0\x80\xFD[a\x13\x0C\x83\x835` \x85\x01a%\x9CV[`\0\x80`\0``\x84\x86\x03\x12\x15a&\x0FW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&&W`\0\x80\xFD[a&2\x86\x82\x87\x01a%\xDAV[\x93PP` \x84\x015\x91Pa&H`@\x85\x01a#PV[\x90P\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a&fW`\0\x80\xFD[\x835\x92P` \x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\x84W`\0\x80\xFD[a&\x90\x86\x82\x87\x01a%\xDAV[\x92PPa&H`@\x85\x01a#PV[`\0\x80`\0``\x84\x86\x03\x12\x15a&\xB4W`\0\x80\xFD[a&\xBD\x84a#PV[\x92P` \x84\x015\x91P`@\x84\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a&\xE0W`\0\x80\xFD[\x84\x01`\x1F\x81\x01\x86\x13a&\xF1W`\0\x80\xFD[a'\0\x86\x825` \x84\x01a%\x9CV[\x91PP\x92P\x92P\x92V[`\0\x80`\0``\x84\x86\x03\x12\x15a'\x1FW`\0\x80\xFD[\x835\x92P` \x84\x015\x91Pa&H`@\x85\x01a#PV[`\0\x80`\0``\x84\x86\x03\x12\x15a'KW`\0\x80\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x80\x82\x11\x15a'cW`\0\x80\xFD[a'o\x87\x83\x88\x01a%\xDAV[\x94P` \x86\x015\x91P\x80\x82\x11\x15a'\x85W`\0\x80\xFD[Pa&\x90\x86\x82\x87\x01a%\xDAV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x01\x80\x82\x11\x15a\x11eWa\x11ea'\x92V[`\0` \x82\x84\x03\x12\x15a'\xCDW`\0\x80\xFD[PQ\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a'\xE7W`\0\x80\xFD[PP\x80Q` \x90\x91\x01Q\x90\x92\x90\x91PV[`\0`\x01\x82\x01a(\nWa(\na'\x92V[P`\x01\x01\x90V[` \x80\x82R\x81\x81\x01R\x7FOwnable: caller is not the owner`@\x82\x01R``\x01\x90V[\x81\x81\x03\x81\x81\x11\x15a\x11eWa\x11ea'\x92V[`\0[\x83\x81\x10\x15a(tW\x81\x81\x01Q\x83\x82\x01R` \x01a(\\V[PP`\0\x91\x01RV[`\0` \x82\x84\x03\x12\x15a(\x8FW`\0\x80\xFD[\x81Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a(\xA6W`\0\x80\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xB7W`\0\x80\xFD[\x80Qa(\xC5a%\xAA\x82a%tV[\x81\x81R\x85` \x83\x85\x01\x01\x11\x15a(\xDAW`\0\x80\xFD[a(\xEB\x82` \x83\x01` \x86\x01a(YV[\x95\x94PPPPPV[`\0\x83Qa)\x06\x81\x84` \x88\x01a(YV[`/`\xF8\x1B\x90\x83\x01\x90\x81R\x83Qa)$\x81`\x01\x84\x01` \x88\x01a(YV[\x01`\x01\x01\x94\x93PPPPV[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x11eWa\x11ea'\x92V[`\0\x82a)dWcNH{q`\xE0\x1B`\0R`\x12`\x04R`$`\0\xFD[P\x04\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[\x80Q` \x80\x83\x01Q\x91\x90\x81\x10\x15a)\xA0W`\0\x19\x81` \x03`\x03\x1B\x1B\x82\x16\x91P[P\x91\x90PV[`\0` \x82\x84\x03\x12\x15a)\xB8W`\0\x80\xFD[\x81Q\x80\x15\x15\x81\x14a\x13\x0CW`\0\x80\xFD[`\0\x82Qa)\xDA\x81\x84` \x87\x01a(YV[\x91\x90\x91\x01\x92\x91PPV[` \x81R`\0\x82Q\x80` \x84\x01Ra*\x03\x81`@\x85\x01` \x87\x01a(YV[`\x1F\x01`\x1F\x19\x16\x91\x90\x91\x01`@\x01\x92\x91PPV\xFE\xA2dipfsX\"\x12 \xAFt\x95\x8A{\x1F/W\x7F\x1B\xE2\x1AD\xA2B\x05\x8F\x94\xE4\xBDm\xFE\x93C_Z6\x87Y%\x13\x9DdsolcC\0\x08\x13\x003";
1360    /// The deployed bytecode of the contract.
1361    pub static HOPRSTAKEBASE_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static(
1362        __DEPLOYED_BYTECODE,
1363    );
1364    pub struct HoprStakeBase<M>(::ethers::contract::Contract<M>);
1365    impl<M> ::core::clone::Clone for HoprStakeBase<M> {
1366        fn clone(&self) -> Self {
1367            Self(::core::clone::Clone::clone(&self.0))
1368        }
1369    }
1370    impl<M> ::core::ops::Deref for HoprStakeBase<M> {
1371        type Target = ::ethers::contract::Contract<M>;
1372        fn deref(&self) -> &Self::Target {
1373            &self.0
1374        }
1375    }
1376    impl<M> ::core::ops::DerefMut for HoprStakeBase<M> {
1377        fn deref_mut(&mut self) -> &mut Self::Target {
1378            &mut self.0
1379        }
1380    }
1381    impl<M> ::core::fmt::Debug for HoprStakeBase<M> {
1382        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1383            f.debug_tuple(::core::stringify!(HoprStakeBase))
1384                .field(&self.address())
1385                .finish()
1386        }
1387    }
1388    impl<M: ::ethers::providers::Middleware> HoprStakeBase<M> {
1389        /// Creates a new contract instance with the specified `ethers` client at
1390        /// `address`. The contract derefs to a `ethers::Contract` object.
1391        pub fn new<T: Into<::ethers::core::types::Address>>(
1392            address: T,
1393            client: ::std::sync::Arc<M>,
1394        ) -> Self {
1395            Self(
1396                ::ethers::contract::Contract::new(
1397                    address.into(),
1398                    HOPRSTAKEBASE_ABI.clone(),
1399                    client,
1400                ),
1401            )
1402        }
1403        /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it.
1404        /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction
1405        ///
1406        /// Notes:
1407        /// - If there are no constructor arguments, you should pass `()` as the argument.
1408        /// - The default poll duration is 7 seconds.
1409        /// - The default number of confirmations is 1 block.
1410        ///
1411        ///
1412        /// # Example
1413        ///
1414        /// Generate contract bindings with `abigen!` and deploy a new contract instance.
1415        ///
1416        /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact.
1417        ///
1418        /// ```ignore
1419        /// # async fn deploy<M: ethers::providers::Middleware>(client: ::std::sync::Arc<M>) {
1420        ///     abigen!(Greeter, "../greeter.json");
1421        ///
1422        ///    let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap();
1423        ///    let msg = greeter_contract.greet().call().await.unwrap();
1424        /// # }
1425        /// ```
1426        pub fn deploy<T: ::ethers::core::abi::Tokenize>(
1427            client: ::std::sync::Arc<M>,
1428            constructor_args: T,
1429        ) -> ::core::result::Result<
1430            ::ethers::contract::builders::ContractDeployer<M, Self>,
1431            ::ethers::contract::ContractError<M>,
1432        > {
1433            let factory = ::ethers::contract::ContractFactory::new(
1434                HOPRSTAKEBASE_ABI.clone(),
1435                HOPRSTAKEBASE_BYTECODE.clone().into(),
1436                client,
1437            );
1438            let deployer = factory.deploy(constructor_args)?;
1439            let deployer = ::ethers::contract::ContractDeployer::new(deployer);
1440            Ok(deployer)
1441        }
1442        ///Calls the contract's `BASIC_FACTOR_NUMERATOR` (0x6aa8d4cf) function
1443        pub fn basic_factor_numerator(
1444            &self,
1445        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1446            self.0
1447                .method_hash([106, 168, 212, 207], ())
1448                .expect("method not found (this should never happen)")
1449        }
1450        ///Calls the contract's `BOOST_CAP` (0xef0526a2) function
1451        pub fn boost_cap(
1452            &self,
1453        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1454            self.0
1455                .method_hash([239, 5, 38, 162], ())
1456                .expect("method not found (this should never happen)")
1457        }
1458        ///Calls the contract's `FACTOR_DENOMINATOR` (0x5ef73d58) function
1459        pub fn factor_denominator(
1460            &self,
1461        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1462            self.0
1463                .method_hash([94, 247, 61, 88], ())
1464                .expect("method not found (this should never happen)")
1465        }
1466        ///Calls the contract's `LOCK_TOKEN` (0xd0da6801) function
1467        pub fn lock_token(
1468            &self,
1469        ) -> ::ethers::contract::builders::ContractCall<
1470            M,
1471            ::ethers::core::types::Address,
1472        > {
1473            self.0
1474                .method_hash([208, 218, 104, 1], ())
1475                .expect("method not found (this should never happen)")
1476        }
1477        ///Calls the contract's `NFT_CONTRACT` (0x1fda9a02) function
1478        pub fn nft_contract(
1479            &self,
1480        ) -> ::ethers::contract::builders::ContractCall<
1481            M,
1482            ::ethers::core::types::Address,
1483        > {
1484            self.0
1485                .method_hash([31, 218, 154, 2], ())
1486                .expect("method not found (this should never happen)")
1487        }
1488        ///Calls the contract's `PROGRAM_END` (0xcbffa3c7) function
1489        pub fn program_end(
1490            &self,
1491        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1492            self.0
1493                .method_hash([203, 255, 163, 199], ())
1494                .expect("method not found (this should never happen)")
1495        }
1496        ///Calls the contract's `PROGRAM_START` (0x5bbb63a6) function
1497        pub fn program_start(
1498            &self,
1499        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1500            self.0
1501                .method_hash([91, 187, 99, 166], ())
1502                .expect("method not found (this should never happen)")
1503        }
1504        ///Calls the contract's `REWARD_TOKEN` (0x99248ea7) function
1505        pub fn reward_token(
1506            &self,
1507        ) -> ::ethers::contract::builders::ContractCall<
1508            M,
1509            ::ethers::core::types::Address,
1510        > {
1511            self.0
1512                .method_hash([153, 36, 142, 167], ())
1513                .expect("method not found (this should never happen)")
1514        }
1515        ///Calls the contract's `accounts` (0x5e5c06e2) function
1516        pub fn accounts(
1517            &self,
1518            p0: ::ethers::core::types::Address,
1519        ) -> ::ethers::contract::builders::ContractCall<
1520            M,
1521            (
1522                ::ethers::core::types::U256,
1523                ::ethers::core::types::U256,
1524                ::ethers::core::types::U256,
1525                ::ethers::core::types::U256,
1526            ),
1527        > {
1528            self.0
1529                .method_hash([94, 92, 6, 226], p0)
1530                .expect("method not found (this should never happen)")
1531        }
1532        ///Calls the contract's `availableReward` (0x4ad84b34) function
1533        pub fn available_reward(
1534            &self,
1535        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1536            self.0
1537                .method_hash([74, 216, 75, 52], ())
1538                .expect("method not found (this should never happen)")
1539        }
1540        ///Calls the contract's `claimRewards` (0xef5cfb8c) function
1541        pub fn claim_rewards(
1542            &self,
1543            account: ::ethers::core::types::Address,
1544        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1545            self.0
1546                .method_hash([239, 92, 251, 140], account)
1547                .expect("method not found (this should never happen)")
1548        }
1549        ///Calls the contract's `getCumulatedRewardsIncrement` (0x70af0934) function
1550        pub fn get_cumulated_rewards_increment(
1551            &self,
1552            account: ::ethers::core::types::Address,
1553        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1554            self.0
1555                .method_hash([112, 175, 9, 52], account)
1556                .expect("method not found (this should never happen)")
1557        }
1558        ///Calls the contract's `isBlockedNft` (0x42c93361) function
1559        pub fn is_blocked_nft(
1560            &self,
1561            p0: ::ethers::core::types::U256,
1562        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
1563            self.0
1564                .method_hash([66, 201, 51, 97], p0)
1565                .expect("method not found (this should never happen)")
1566        }
1567        ///Calls the contract's `isNftTypeAndRankRedeemed1` (0xce23177e) function
1568        pub fn is_nft_type_and_rank_redeemed_1(
1569            &self,
1570            nft_type: ::std::string::String,
1571            nft_rank: ::std::string::String,
1572            hodler: ::ethers::core::types::Address,
1573        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
1574            self.0
1575                .method_hash([206, 35, 23, 126], (nft_type, nft_rank, hodler))
1576                .expect("method not found (this should never happen)")
1577        }
1578        ///Calls the contract's `isNftTypeAndRankRedeemed2` (0x96a9cd7d) function
1579        pub fn is_nft_type_and_rank_redeemed_2(
1580            &self,
1581            nft_type_index: ::ethers::core::types::U256,
1582            nft_rank: ::std::string::String,
1583            hodler: ::ethers::core::types::Address,
1584        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
1585            self.0
1586                .method_hash([150, 169, 205, 125], (nft_type_index, nft_rank, hodler))
1587                .expect("method not found (this should never happen)")
1588        }
1589        ///Calls the contract's `isNftTypeAndRankRedeemed3` (0xa83d1ed6) function
1590        pub fn is_nft_type_and_rank_redeemed_3(
1591            &self,
1592            nft_type_index: ::ethers::core::types::U256,
1593            boost_numerator: ::ethers::core::types::U256,
1594            hodler: ::ethers::core::types::Address,
1595        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
1596            self.0
1597                .method_hash(
1598                    [168, 61, 30, 214],
1599                    (nft_type_index, boost_numerator, hodler),
1600                )
1601                .expect("method not found (this should never happen)")
1602        }
1603        ///Calls the contract's `isNftTypeAndRankRedeemed4` (0x8c24add4) function
1604        pub fn is_nft_type_and_rank_redeemed_4(
1605            &self,
1606            nft_type: ::std::string::String,
1607            boost_numerator: ::ethers::core::types::U256,
1608            hodler: ::ethers::core::types::Address,
1609        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
1610            self.0
1611                .method_hash([140, 36, 173, 212], (nft_type, boost_numerator, hodler))
1612                .expect("method not found (this should never happen)")
1613        }
1614        ///Calls the contract's `onERC721Received` (0x150b7a02) function
1615        pub fn on_erc721_received(
1616            &self,
1617            p0: ::ethers::core::types::Address,
1618            from: ::ethers::core::types::Address,
1619            token_id: ::ethers::core::types::U256,
1620            p3: ::ethers::core::types::Bytes,
1621        ) -> ::ethers::contract::builders::ContractCall<M, [u8; 4]> {
1622            self.0
1623                .method_hash([21, 11, 122, 2], (p0, from, token_id, p3))
1624                .expect("method not found (this should never happen)")
1625        }
1626        ///Calls the contract's `onTokenTransfer` (0xa4c0ed36) function
1627        pub fn on_token_transfer(
1628            &self,
1629            from: ::ethers::core::types::Address,
1630            value: ::ethers::core::types::U256,
1631            p2: ::ethers::core::types::Bytes,
1632        ) -> ::ethers::contract::builders::ContractCall<M, bool> {
1633            self.0
1634                .method_hash([164, 192, 237, 54], (from, value, p2))
1635                .expect("method not found (this should never happen)")
1636        }
1637        ///Calls the contract's `owner` (0x8da5cb5b) function
1638        pub fn owner(
1639            &self,
1640        ) -> ::ethers::contract::builders::ContractCall<
1641            M,
1642            ::ethers::core::types::Address,
1643        > {
1644            self.0
1645                .method_hash([141, 165, 203, 91], ())
1646                .expect("method not found (this should never happen)")
1647        }
1648        ///Calls the contract's `ownerBlockNftType` (0x5e4c0e15) function
1649        pub fn owner_block_nft_type(
1650            &self,
1651            type_index: ::ethers::core::types::U256,
1652        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1653            self.0
1654                .method_hash([94, 76, 14, 21], type_index)
1655                .expect("method not found (this should never happen)")
1656        }
1657        ///Calls the contract's `ownerUnblockNftType` (0x21cf85ba) function
1658        pub fn owner_unblock_nft_type(
1659            &self,
1660            type_index: ::ethers::core::types::U256,
1661        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1662            self.0
1663                .method_hash([33, 207, 133, 186], type_index)
1664                .expect("method not found (this should never happen)")
1665        }
1666        ///Calls the contract's `reclaimErc20Tokens` (0x6067bc15) function
1667        pub fn reclaim_erc_20_tokens(
1668            &self,
1669            token_address: ::ethers::core::types::Address,
1670        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1671            self.0
1672                .method_hash([96, 103, 188, 21], token_address)
1673                .expect("method not found (this should never happen)")
1674        }
1675        ///Calls the contract's `reclaimErc721Tokens` (0x48c64e41) function
1676        pub fn reclaim_erc_721_tokens(
1677            &self,
1678            token_address: ::ethers::core::types::Address,
1679            token_id: ::ethers::core::types::U256,
1680        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1681            self.0
1682                .method_hash([72, 198, 78, 65], (token_address, token_id))
1683                .expect("method not found (this should never happen)")
1684        }
1685        ///Calls the contract's `redeemedFactor` (0x81128c1d) function
1686        pub fn redeemed_factor(
1687            &self,
1688            p0: ::ethers::core::types::Address,
1689            p1: ::ethers::core::types::U256,
1690        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1691            self.0
1692                .method_hash([129, 18, 140, 29], (p0, p1))
1693                .expect("method not found (this should never happen)")
1694        }
1695        ///Calls the contract's `redeemedFactorIndex` (0x1f014d83) function
1696        pub fn redeemed_factor_index(
1697            &self,
1698            p0: ::ethers::core::types::Address,
1699        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1700            self.0
1701                .method_hash([31, 1, 77, 131], p0)
1702                .expect("method not found (this should never happen)")
1703        }
1704        ///Calls the contract's `redeemedNft` (0x0a1a257a) function
1705        pub fn redeemed_nft(
1706            &self,
1707            p0: ::ethers::core::types::Address,
1708            p1: ::ethers::core::types::U256,
1709        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1710            self.0
1711                .method_hash([10, 26, 37, 122], (p0, p1))
1712                .expect("method not found (this should never happen)")
1713        }
1714        ///Calls the contract's `redeemedNftIndex` (0xd0c02d63) function
1715        pub fn redeemed_nft_index(
1716            &self,
1717            p0: ::ethers::core::types::Address,
1718        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1719            self.0
1720                .method_hash([208, 192, 45, 99], p0)
1721                .expect("method not found (this should never happen)")
1722        }
1723        ///Calls the contract's `renounceOwnership` (0x715018a6) function
1724        pub fn renounce_ownership(
1725            &self,
1726        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1727            self.0
1728                .method_hash([113, 80, 24, 166], ())
1729                .expect("method not found (this should never happen)")
1730        }
1731        ///Calls the contract's `stakedHoprTokens` (0xf978fff1) function
1732        pub fn staked_hopr_tokens(
1733            &self,
1734            account: ::ethers::core::types::Address,
1735        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1736            self.0
1737                .method_hash([249, 120, 255, 241], account)
1738                .expect("method not found (this should never happen)")
1739        }
1740        ///Calls the contract's `sync` (0xa5841194) function
1741        pub fn sync(
1742            &self,
1743            account: ::ethers::core::types::Address,
1744        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1745            self.0
1746                .method_hash([165, 132, 17, 148], account)
1747                .expect("method not found (this should never happen)")
1748        }
1749        ///Calls the contract's `tokensReceived` (0x0023de29) function
1750        pub fn tokens_received(
1751            &self,
1752            p0: ::ethers::core::types::Address,
1753            from: ::ethers::core::types::Address,
1754            to: ::ethers::core::types::Address,
1755            amount: ::ethers::core::types::U256,
1756            p4: ::ethers::core::types::Bytes,
1757            p5: ::ethers::core::types::Bytes,
1758        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1759            self.0
1760                .method_hash([0, 35, 222, 41], (p0, from, to, amount, p4, p5))
1761                .expect("method not found (this should never happen)")
1762        }
1763        ///Calls the contract's `totalLocked` (0x56891412) function
1764        pub fn total_locked(
1765            &self,
1766        ) -> ::ethers::contract::builders::ContractCall<M, ::ethers::core::types::U256> {
1767            self.0
1768                .method_hash([86, 137, 20, 18], ())
1769                .expect("method not found (this should never happen)")
1770        }
1771        ///Calls the contract's `transferOwnership` (0xf2fde38b) function
1772        pub fn transfer_ownership(
1773            &self,
1774            new_owner: ::ethers::core::types::Address,
1775        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1776            self.0
1777                .method_hash([242, 253, 227, 139], new_owner)
1778                .expect("method not found (this should never happen)")
1779        }
1780        ///Calls the contract's `unlock` (0xa69df4b5) function
1781        pub fn unlock(&self) -> ::ethers::contract::builders::ContractCall<M, ()> {
1782            self.0
1783                .method_hash([166, 157, 244, 181], ())
1784                .expect("method not found (this should never happen)")
1785        }
1786        ///Calls the contract's `unlockFor` (0xdde49979) function
1787        pub fn unlock_for(
1788            &self,
1789            account: ::ethers::core::types::Address,
1790        ) -> ::ethers::contract::builders::ContractCall<M, ()> {
1791            self.0
1792                .method_hash([221, 228, 153, 121], account)
1793                .expect("method not found (this should never happen)")
1794        }
1795        ///Gets the contract's `Claimed` event
1796        pub fn claimed_filter(
1797            &self,
1798        ) -> ::ethers::contract::builders::Event<::std::sync::Arc<M>, M, ClaimedFilter> {
1799            self.0.event()
1800        }
1801        ///Gets the contract's `NftAllowed` event
1802        pub fn nft_allowed_filter(
1803            &self,
1804        ) -> ::ethers::contract::builders::Event<
1805            ::std::sync::Arc<M>,
1806            M,
1807            NftAllowedFilter,
1808        > {
1809            self.0.event()
1810        }
1811        ///Gets the contract's `NftBlocked` event
1812        pub fn nft_blocked_filter(
1813            &self,
1814        ) -> ::ethers::contract::builders::Event<
1815            ::std::sync::Arc<M>,
1816            M,
1817            NftBlockedFilter,
1818        > {
1819            self.0.event()
1820        }
1821        ///Gets the contract's `OwnershipTransferred` event
1822        pub fn ownership_transferred_filter(
1823            &self,
1824        ) -> ::ethers::contract::builders::Event<
1825            ::std::sync::Arc<M>,
1826            M,
1827            OwnershipTransferredFilter,
1828        > {
1829            self.0.event()
1830        }
1831        ///Gets the contract's `Redeemed` event
1832        pub fn redeemed_filter(
1833            &self,
1834        ) -> ::ethers::contract::builders::Event<
1835            ::std::sync::Arc<M>,
1836            M,
1837            RedeemedFilter,
1838        > {
1839            self.0.event()
1840        }
1841        ///Gets the contract's `Released` event
1842        pub fn released_filter(
1843            &self,
1844        ) -> ::ethers::contract::builders::Event<
1845            ::std::sync::Arc<M>,
1846            M,
1847            ReleasedFilter,
1848        > {
1849            self.0.event()
1850        }
1851        ///Gets the contract's `RewardFueled` event
1852        pub fn reward_fueled_filter(
1853            &self,
1854        ) -> ::ethers::contract::builders::Event<
1855            ::std::sync::Arc<M>,
1856            M,
1857            RewardFueledFilter,
1858        > {
1859            self.0.event()
1860        }
1861        ///Gets the contract's `Staked` event
1862        pub fn staked_filter(
1863            &self,
1864        ) -> ::ethers::contract::builders::Event<::std::sync::Arc<M>, M, StakedFilter> {
1865            self.0.event()
1866        }
1867        ///Gets the contract's `Sync` event
1868        pub fn sync_filter(
1869            &self,
1870        ) -> ::ethers::contract::builders::Event<::std::sync::Arc<M>, M, SyncFilter> {
1871            self.0.event()
1872        }
1873        /// Returns an `Event` builder for all the events of this contract.
1874        pub fn events(
1875            &self,
1876        ) -> ::ethers::contract::builders::Event<
1877            ::std::sync::Arc<M>,
1878            M,
1879            HoprStakeBaseEvents,
1880        > {
1881            self.0.event_with_filter(::core::default::Default::default())
1882        }
1883    }
1884    impl<M: ::ethers::providers::Middleware> From<::ethers::contract::Contract<M>>
1885    for HoprStakeBase<M> {
1886        fn from(contract: ::ethers::contract::Contract<M>) -> Self {
1887            Self::new(contract.address(), contract.client())
1888        }
1889    }
1890    #[derive(
1891        Clone,
1892        ::ethers::contract::EthEvent,
1893        ::ethers::contract::EthDisplay,
1894        serde::Serialize,
1895        serde::Deserialize,
1896        Default,
1897        Debug,
1898        PartialEq,
1899        Eq,
1900        Hash
1901    )]
1902    #[ethevent(name = "Claimed", abi = "Claimed(address,uint256)")]
1903    pub struct ClaimedFilter {
1904        #[ethevent(indexed)]
1905        pub account: ::ethers::core::types::Address,
1906        #[ethevent(indexed)]
1907        pub reward_amount: ::ethers::core::types::U256,
1908    }
1909    #[derive(
1910        Clone,
1911        ::ethers::contract::EthEvent,
1912        ::ethers::contract::EthDisplay,
1913        serde::Serialize,
1914        serde::Deserialize,
1915        Default,
1916        Debug,
1917        PartialEq,
1918        Eq,
1919        Hash
1920    )]
1921    #[ethevent(name = "NftAllowed", abi = "NftAllowed(uint256)")]
1922    pub struct NftAllowedFilter {
1923        #[ethevent(indexed)]
1924        pub type_index: ::ethers::core::types::U256,
1925    }
1926    #[derive(
1927        Clone,
1928        ::ethers::contract::EthEvent,
1929        ::ethers::contract::EthDisplay,
1930        serde::Serialize,
1931        serde::Deserialize,
1932        Default,
1933        Debug,
1934        PartialEq,
1935        Eq,
1936        Hash
1937    )]
1938    #[ethevent(name = "NftBlocked", abi = "NftBlocked(uint256)")]
1939    pub struct NftBlockedFilter {
1940        #[ethevent(indexed)]
1941        pub type_index: ::ethers::core::types::U256,
1942    }
1943    #[derive(
1944        Clone,
1945        ::ethers::contract::EthEvent,
1946        ::ethers::contract::EthDisplay,
1947        serde::Serialize,
1948        serde::Deserialize,
1949        Default,
1950        Debug,
1951        PartialEq,
1952        Eq,
1953        Hash
1954    )]
1955    #[ethevent(
1956        name = "OwnershipTransferred",
1957        abi = "OwnershipTransferred(address,address)"
1958    )]
1959    pub struct OwnershipTransferredFilter {
1960        #[ethevent(indexed)]
1961        pub previous_owner: ::ethers::core::types::Address,
1962        #[ethevent(indexed)]
1963        pub new_owner: ::ethers::core::types::Address,
1964    }
1965    #[derive(
1966        Clone,
1967        ::ethers::contract::EthEvent,
1968        ::ethers::contract::EthDisplay,
1969        serde::Serialize,
1970        serde::Deserialize,
1971        Default,
1972        Debug,
1973        PartialEq,
1974        Eq,
1975        Hash
1976    )]
1977    #[ethevent(name = "Redeemed", abi = "Redeemed(address,uint256,bool)")]
1978    pub struct RedeemedFilter {
1979        #[ethevent(indexed)]
1980        pub account: ::ethers::core::types::Address,
1981        #[ethevent(indexed)]
1982        pub boost_token_id: ::ethers::core::types::U256,
1983        #[ethevent(indexed)]
1984        pub factor_registered: bool,
1985    }
1986    #[derive(
1987        Clone,
1988        ::ethers::contract::EthEvent,
1989        ::ethers::contract::EthDisplay,
1990        serde::Serialize,
1991        serde::Deserialize,
1992        Default,
1993        Debug,
1994        PartialEq,
1995        Eq,
1996        Hash
1997    )]
1998    #[ethevent(name = "Released", abi = "Released(address,uint256)")]
1999    pub struct ReleasedFilter {
2000        #[ethevent(indexed)]
2001        pub account: ::ethers::core::types::Address,
2002        #[ethevent(indexed)]
2003        pub actual_amount: ::ethers::core::types::U256,
2004    }
2005    #[derive(
2006        Clone,
2007        ::ethers::contract::EthEvent,
2008        ::ethers::contract::EthDisplay,
2009        serde::Serialize,
2010        serde::Deserialize,
2011        Default,
2012        Debug,
2013        PartialEq,
2014        Eq,
2015        Hash
2016    )]
2017    #[ethevent(name = "RewardFueled", abi = "RewardFueled(uint256)")]
2018    pub struct RewardFueledFilter {
2019        #[ethevent(indexed)]
2020        pub amount: ::ethers::core::types::U256,
2021    }
2022    #[derive(
2023        Clone,
2024        ::ethers::contract::EthEvent,
2025        ::ethers::contract::EthDisplay,
2026        serde::Serialize,
2027        serde::Deserialize,
2028        Default,
2029        Debug,
2030        PartialEq,
2031        Eq,
2032        Hash
2033    )]
2034    #[ethevent(name = "Staked", abi = "Staked(address,uint256)")]
2035    pub struct StakedFilter {
2036        #[ethevent(indexed)]
2037        pub account: ::ethers::core::types::Address,
2038        #[ethevent(indexed)]
2039        pub actual_amount: ::ethers::core::types::U256,
2040    }
2041    #[derive(
2042        Clone,
2043        ::ethers::contract::EthEvent,
2044        ::ethers::contract::EthDisplay,
2045        serde::Serialize,
2046        serde::Deserialize,
2047        Default,
2048        Debug,
2049        PartialEq,
2050        Eq,
2051        Hash
2052    )]
2053    #[ethevent(name = "Sync", abi = "Sync(address,uint256)")]
2054    pub struct SyncFilter {
2055        #[ethevent(indexed)]
2056        pub account: ::ethers::core::types::Address,
2057        #[ethevent(indexed)]
2058        pub increment: ::ethers::core::types::U256,
2059    }
2060    ///Container type for all of the contract's events
2061    #[derive(
2062        Clone,
2063        ::ethers::contract::EthAbiType,
2064        serde::Serialize,
2065        serde::Deserialize,
2066        Debug,
2067        PartialEq,
2068        Eq,
2069        Hash
2070    )]
2071    pub enum HoprStakeBaseEvents {
2072        ClaimedFilter(ClaimedFilter),
2073        NftAllowedFilter(NftAllowedFilter),
2074        NftBlockedFilter(NftBlockedFilter),
2075        OwnershipTransferredFilter(OwnershipTransferredFilter),
2076        RedeemedFilter(RedeemedFilter),
2077        ReleasedFilter(ReleasedFilter),
2078        RewardFueledFilter(RewardFueledFilter),
2079        StakedFilter(StakedFilter),
2080        SyncFilter(SyncFilter),
2081    }
2082    impl ::ethers::contract::EthLogDecode for HoprStakeBaseEvents {
2083        fn decode_log(
2084            log: &::ethers::core::abi::RawLog,
2085        ) -> ::core::result::Result<Self, ::ethers::core::abi::Error> {
2086            if let Ok(decoded) = ClaimedFilter::decode_log(log) {
2087                return Ok(HoprStakeBaseEvents::ClaimedFilter(decoded));
2088            }
2089            if let Ok(decoded) = NftAllowedFilter::decode_log(log) {
2090                return Ok(HoprStakeBaseEvents::NftAllowedFilter(decoded));
2091            }
2092            if let Ok(decoded) = NftBlockedFilter::decode_log(log) {
2093                return Ok(HoprStakeBaseEvents::NftBlockedFilter(decoded));
2094            }
2095            if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) {
2096                return Ok(HoprStakeBaseEvents::OwnershipTransferredFilter(decoded));
2097            }
2098            if let Ok(decoded) = RedeemedFilter::decode_log(log) {
2099                return Ok(HoprStakeBaseEvents::RedeemedFilter(decoded));
2100            }
2101            if let Ok(decoded) = ReleasedFilter::decode_log(log) {
2102                return Ok(HoprStakeBaseEvents::ReleasedFilter(decoded));
2103            }
2104            if let Ok(decoded) = RewardFueledFilter::decode_log(log) {
2105                return Ok(HoprStakeBaseEvents::RewardFueledFilter(decoded));
2106            }
2107            if let Ok(decoded) = StakedFilter::decode_log(log) {
2108                return Ok(HoprStakeBaseEvents::StakedFilter(decoded));
2109            }
2110            if let Ok(decoded) = SyncFilter::decode_log(log) {
2111                return Ok(HoprStakeBaseEvents::SyncFilter(decoded));
2112            }
2113            Err(::ethers::core::abi::Error::InvalidData)
2114        }
2115    }
2116    impl ::core::fmt::Display for HoprStakeBaseEvents {
2117        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2118            match self {
2119                Self::ClaimedFilter(element) => ::core::fmt::Display::fmt(element, f),
2120                Self::NftAllowedFilter(element) => ::core::fmt::Display::fmt(element, f),
2121                Self::NftBlockedFilter(element) => ::core::fmt::Display::fmt(element, f),
2122                Self::OwnershipTransferredFilter(element) => {
2123                    ::core::fmt::Display::fmt(element, f)
2124                }
2125                Self::RedeemedFilter(element) => ::core::fmt::Display::fmt(element, f),
2126                Self::ReleasedFilter(element) => ::core::fmt::Display::fmt(element, f),
2127                Self::RewardFueledFilter(element) => {
2128                    ::core::fmt::Display::fmt(element, f)
2129                }
2130                Self::StakedFilter(element) => ::core::fmt::Display::fmt(element, f),
2131                Self::SyncFilter(element) => ::core::fmt::Display::fmt(element, f),
2132            }
2133        }
2134    }
2135    impl ::core::convert::From<ClaimedFilter> for HoprStakeBaseEvents {
2136        fn from(value: ClaimedFilter) -> Self {
2137            Self::ClaimedFilter(value)
2138        }
2139    }
2140    impl ::core::convert::From<NftAllowedFilter> for HoprStakeBaseEvents {
2141        fn from(value: NftAllowedFilter) -> Self {
2142            Self::NftAllowedFilter(value)
2143        }
2144    }
2145    impl ::core::convert::From<NftBlockedFilter> for HoprStakeBaseEvents {
2146        fn from(value: NftBlockedFilter) -> Self {
2147            Self::NftBlockedFilter(value)
2148        }
2149    }
2150    impl ::core::convert::From<OwnershipTransferredFilter> for HoprStakeBaseEvents {
2151        fn from(value: OwnershipTransferredFilter) -> Self {
2152            Self::OwnershipTransferredFilter(value)
2153        }
2154    }
2155    impl ::core::convert::From<RedeemedFilter> for HoprStakeBaseEvents {
2156        fn from(value: RedeemedFilter) -> Self {
2157            Self::RedeemedFilter(value)
2158        }
2159    }
2160    impl ::core::convert::From<ReleasedFilter> for HoprStakeBaseEvents {
2161        fn from(value: ReleasedFilter) -> Self {
2162            Self::ReleasedFilter(value)
2163        }
2164    }
2165    impl ::core::convert::From<RewardFueledFilter> for HoprStakeBaseEvents {
2166        fn from(value: RewardFueledFilter) -> Self {
2167            Self::RewardFueledFilter(value)
2168        }
2169    }
2170    impl ::core::convert::From<StakedFilter> for HoprStakeBaseEvents {
2171        fn from(value: StakedFilter) -> Self {
2172            Self::StakedFilter(value)
2173        }
2174    }
2175    impl ::core::convert::From<SyncFilter> for HoprStakeBaseEvents {
2176        fn from(value: SyncFilter) -> Self {
2177            Self::SyncFilter(value)
2178        }
2179    }
2180    ///Container type for all input parameters for the `BASIC_FACTOR_NUMERATOR` function with signature `BASIC_FACTOR_NUMERATOR()` and selector `0x6aa8d4cf`
2181    #[derive(
2182        Clone,
2183        ::ethers::contract::EthCall,
2184        ::ethers::contract::EthDisplay,
2185        serde::Serialize,
2186        serde::Deserialize,
2187        Default,
2188        Debug,
2189        PartialEq,
2190        Eq,
2191        Hash
2192    )]
2193    #[ethcall(name = "BASIC_FACTOR_NUMERATOR", abi = "BASIC_FACTOR_NUMERATOR()")]
2194    pub struct BasicFactorNumeratorCall;
2195    ///Container type for all input parameters for the `BOOST_CAP` function with signature `BOOST_CAP()` and selector `0xef0526a2`
2196    #[derive(
2197        Clone,
2198        ::ethers::contract::EthCall,
2199        ::ethers::contract::EthDisplay,
2200        serde::Serialize,
2201        serde::Deserialize,
2202        Default,
2203        Debug,
2204        PartialEq,
2205        Eq,
2206        Hash
2207    )]
2208    #[ethcall(name = "BOOST_CAP", abi = "BOOST_CAP()")]
2209    pub struct BoostCapCall;
2210    ///Container type for all input parameters for the `FACTOR_DENOMINATOR` function with signature `FACTOR_DENOMINATOR()` and selector `0x5ef73d58`
2211    #[derive(
2212        Clone,
2213        ::ethers::contract::EthCall,
2214        ::ethers::contract::EthDisplay,
2215        serde::Serialize,
2216        serde::Deserialize,
2217        Default,
2218        Debug,
2219        PartialEq,
2220        Eq,
2221        Hash
2222    )]
2223    #[ethcall(name = "FACTOR_DENOMINATOR", abi = "FACTOR_DENOMINATOR()")]
2224    pub struct FactorDenominatorCall;
2225    ///Container type for all input parameters for the `LOCK_TOKEN` function with signature `LOCK_TOKEN()` and selector `0xd0da6801`
2226    #[derive(
2227        Clone,
2228        ::ethers::contract::EthCall,
2229        ::ethers::contract::EthDisplay,
2230        serde::Serialize,
2231        serde::Deserialize,
2232        Default,
2233        Debug,
2234        PartialEq,
2235        Eq,
2236        Hash
2237    )]
2238    #[ethcall(name = "LOCK_TOKEN", abi = "LOCK_TOKEN()")]
2239    pub struct LockTokenCall;
2240    ///Container type for all input parameters for the `NFT_CONTRACT` function with signature `NFT_CONTRACT()` and selector `0x1fda9a02`
2241    #[derive(
2242        Clone,
2243        ::ethers::contract::EthCall,
2244        ::ethers::contract::EthDisplay,
2245        serde::Serialize,
2246        serde::Deserialize,
2247        Default,
2248        Debug,
2249        PartialEq,
2250        Eq,
2251        Hash
2252    )]
2253    #[ethcall(name = "NFT_CONTRACT", abi = "NFT_CONTRACT()")]
2254    pub struct NftContractCall;
2255    ///Container type for all input parameters for the `PROGRAM_END` function with signature `PROGRAM_END()` and selector `0xcbffa3c7`
2256    #[derive(
2257        Clone,
2258        ::ethers::contract::EthCall,
2259        ::ethers::contract::EthDisplay,
2260        serde::Serialize,
2261        serde::Deserialize,
2262        Default,
2263        Debug,
2264        PartialEq,
2265        Eq,
2266        Hash
2267    )]
2268    #[ethcall(name = "PROGRAM_END", abi = "PROGRAM_END()")]
2269    pub struct ProgramEndCall;
2270    ///Container type for all input parameters for the `PROGRAM_START` function with signature `PROGRAM_START()` and selector `0x5bbb63a6`
2271    #[derive(
2272        Clone,
2273        ::ethers::contract::EthCall,
2274        ::ethers::contract::EthDisplay,
2275        serde::Serialize,
2276        serde::Deserialize,
2277        Default,
2278        Debug,
2279        PartialEq,
2280        Eq,
2281        Hash
2282    )]
2283    #[ethcall(name = "PROGRAM_START", abi = "PROGRAM_START()")]
2284    pub struct ProgramStartCall;
2285    ///Container type for all input parameters for the `REWARD_TOKEN` function with signature `REWARD_TOKEN()` and selector `0x99248ea7`
2286    #[derive(
2287        Clone,
2288        ::ethers::contract::EthCall,
2289        ::ethers::contract::EthDisplay,
2290        serde::Serialize,
2291        serde::Deserialize,
2292        Default,
2293        Debug,
2294        PartialEq,
2295        Eq,
2296        Hash
2297    )]
2298    #[ethcall(name = "REWARD_TOKEN", abi = "REWARD_TOKEN()")]
2299    pub struct RewardTokenCall;
2300    ///Container type for all input parameters for the `accounts` function with signature `accounts(address)` and selector `0x5e5c06e2`
2301    #[derive(
2302        Clone,
2303        ::ethers::contract::EthCall,
2304        ::ethers::contract::EthDisplay,
2305        serde::Serialize,
2306        serde::Deserialize,
2307        Default,
2308        Debug,
2309        PartialEq,
2310        Eq,
2311        Hash
2312    )]
2313    #[ethcall(name = "accounts", abi = "accounts(address)")]
2314    pub struct AccountsCall(pub ::ethers::core::types::Address);
2315    ///Container type for all input parameters for the `availableReward` function with signature `availableReward()` and selector `0x4ad84b34`
2316    #[derive(
2317        Clone,
2318        ::ethers::contract::EthCall,
2319        ::ethers::contract::EthDisplay,
2320        serde::Serialize,
2321        serde::Deserialize,
2322        Default,
2323        Debug,
2324        PartialEq,
2325        Eq,
2326        Hash
2327    )]
2328    #[ethcall(name = "availableReward", abi = "availableReward()")]
2329    pub struct AvailableRewardCall;
2330    ///Container type for all input parameters for the `claimRewards` function with signature `claimRewards(address)` and selector `0xef5cfb8c`
2331    #[derive(
2332        Clone,
2333        ::ethers::contract::EthCall,
2334        ::ethers::contract::EthDisplay,
2335        serde::Serialize,
2336        serde::Deserialize,
2337        Default,
2338        Debug,
2339        PartialEq,
2340        Eq,
2341        Hash
2342    )]
2343    #[ethcall(name = "claimRewards", abi = "claimRewards(address)")]
2344    pub struct ClaimRewardsCall {
2345        pub account: ::ethers::core::types::Address,
2346    }
2347    ///Container type for all input parameters for the `getCumulatedRewardsIncrement` function with signature `getCumulatedRewardsIncrement(address)` and selector `0x70af0934`
2348    #[derive(
2349        Clone,
2350        ::ethers::contract::EthCall,
2351        ::ethers::contract::EthDisplay,
2352        serde::Serialize,
2353        serde::Deserialize,
2354        Default,
2355        Debug,
2356        PartialEq,
2357        Eq,
2358        Hash
2359    )]
2360    #[ethcall(
2361        name = "getCumulatedRewardsIncrement",
2362        abi = "getCumulatedRewardsIncrement(address)"
2363    )]
2364    pub struct GetCumulatedRewardsIncrementCall {
2365        pub account: ::ethers::core::types::Address,
2366    }
2367    ///Container type for all input parameters for the `isBlockedNft` function with signature `isBlockedNft(uint256)` and selector `0x42c93361`
2368    #[derive(
2369        Clone,
2370        ::ethers::contract::EthCall,
2371        ::ethers::contract::EthDisplay,
2372        serde::Serialize,
2373        serde::Deserialize,
2374        Default,
2375        Debug,
2376        PartialEq,
2377        Eq,
2378        Hash
2379    )]
2380    #[ethcall(name = "isBlockedNft", abi = "isBlockedNft(uint256)")]
2381    pub struct IsBlockedNftCall(pub ::ethers::core::types::U256);
2382    ///Container type for all input parameters for the `isNftTypeAndRankRedeemed1` function with signature `isNftTypeAndRankRedeemed1(string,string,address)` and selector `0xce23177e`
2383    #[derive(
2384        Clone,
2385        ::ethers::contract::EthCall,
2386        ::ethers::contract::EthDisplay,
2387        serde::Serialize,
2388        serde::Deserialize,
2389        Default,
2390        Debug,
2391        PartialEq,
2392        Eq,
2393        Hash
2394    )]
2395    #[ethcall(
2396        name = "isNftTypeAndRankRedeemed1",
2397        abi = "isNftTypeAndRankRedeemed1(string,string,address)"
2398    )]
2399    pub struct IsNftTypeAndRankRedeemed1Call {
2400        pub nft_type: ::std::string::String,
2401        pub nft_rank: ::std::string::String,
2402        pub hodler: ::ethers::core::types::Address,
2403    }
2404    ///Container type for all input parameters for the `isNftTypeAndRankRedeemed2` function with signature `isNftTypeAndRankRedeemed2(uint256,string,address)` and selector `0x96a9cd7d`
2405    #[derive(
2406        Clone,
2407        ::ethers::contract::EthCall,
2408        ::ethers::contract::EthDisplay,
2409        serde::Serialize,
2410        serde::Deserialize,
2411        Default,
2412        Debug,
2413        PartialEq,
2414        Eq,
2415        Hash
2416    )]
2417    #[ethcall(
2418        name = "isNftTypeAndRankRedeemed2",
2419        abi = "isNftTypeAndRankRedeemed2(uint256,string,address)"
2420    )]
2421    pub struct IsNftTypeAndRankRedeemed2Call {
2422        pub nft_type_index: ::ethers::core::types::U256,
2423        pub nft_rank: ::std::string::String,
2424        pub hodler: ::ethers::core::types::Address,
2425    }
2426    ///Container type for all input parameters for the `isNftTypeAndRankRedeemed3` function with signature `isNftTypeAndRankRedeemed3(uint256,uint256,address)` and selector `0xa83d1ed6`
2427    #[derive(
2428        Clone,
2429        ::ethers::contract::EthCall,
2430        ::ethers::contract::EthDisplay,
2431        serde::Serialize,
2432        serde::Deserialize,
2433        Default,
2434        Debug,
2435        PartialEq,
2436        Eq,
2437        Hash
2438    )]
2439    #[ethcall(
2440        name = "isNftTypeAndRankRedeemed3",
2441        abi = "isNftTypeAndRankRedeemed3(uint256,uint256,address)"
2442    )]
2443    pub struct IsNftTypeAndRankRedeemed3Call {
2444        pub nft_type_index: ::ethers::core::types::U256,
2445        pub boost_numerator: ::ethers::core::types::U256,
2446        pub hodler: ::ethers::core::types::Address,
2447    }
2448    ///Container type for all input parameters for the `isNftTypeAndRankRedeemed4` function with signature `isNftTypeAndRankRedeemed4(string,uint256,address)` and selector `0x8c24add4`
2449    #[derive(
2450        Clone,
2451        ::ethers::contract::EthCall,
2452        ::ethers::contract::EthDisplay,
2453        serde::Serialize,
2454        serde::Deserialize,
2455        Default,
2456        Debug,
2457        PartialEq,
2458        Eq,
2459        Hash
2460    )]
2461    #[ethcall(
2462        name = "isNftTypeAndRankRedeemed4",
2463        abi = "isNftTypeAndRankRedeemed4(string,uint256,address)"
2464    )]
2465    pub struct IsNftTypeAndRankRedeemed4Call {
2466        pub nft_type: ::std::string::String,
2467        pub boost_numerator: ::ethers::core::types::U256,
2468        pub hodler: ::ethers::core::types::Address,
2469    }
2470    ///Container type for all input parameters for the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`
2471    #[derive(
2472        Clone,
2473        ::ethers::contract::EthCall,
2474        ::ethers::contract::EthDisplay,
2475        serde::Serialize,
2476        serde::Deserialize,
2477        Default,
2478        Debug,
2479        PartialEq,
2480        Eq,
2481        Hash
2482    )]
2483    #[ethcall(
2484        name = "onERC721Received",
2485        abi = "onERC721Received(address,address,uint256,bytes)"
2486    )]
2487    pub struct OnERC721ReceivedCall {
2488        pub p0: ::ethers::core::types::Address,
2489        pub from: ::ethers::core::types::Address,
2490        pub token_id: ::ethers::core::types::U256,
2491        pub p3: ::ethers::core::types::Bytes,
2492    }
2493    ///Container type for all input parameters for the `onTokenTransfer` function with signature `onTokenTransfer(address,uint256,bytes)` and selector `0xa4c0ed36`
2494    #[derive(
2495        Clone,
2496        ::ethers::contract::EthCall,
2497        ::ethers::contract::EthDisplay,
2498        serde::Serialize,
2499        serde::Deserialize,
2500        Default,
2501        Debug,
2502        PartialEq,
2503        Eq,
2504        Hash
2505    )]
2506    #[ethcall(name = "onTokenTransfer", abi = "onTokenTransfer(address,uint256,bytes)")]
2507    pub struct OnTokenTransferCall {
2508        pub from: ::ethers::core::types::Address,
2509        pub value: ::ethers::core::types::U256,
2510        pub p2: ::ethers::core::types::Bytes,
2511    }
2512    ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b`
2513    #[derive(
2514        Clone,
2515        ::ethers::contract::EthCall,
2516        ::ethers::contract::EthDisplay,
2517        serde::Serialize,
2518        serde::Deserialize,
2519        Default,
2520        Debug,
2521        PartialEq,
2522        Eq,
2523        Hash
2524    )]
2525    #[ethcall(name = "owner", abi = "owner()")]
2526    pub struct OwnerCall;
2527    ///Container type for all input parameters for the `ownerBlockNftType` function with signature `ownerBlockNftType(uint256)` and selector `0x5e4c0e15`
2528    #[derive(
2529        Clone,
2530        ::ethers::contract::EthCall,
2531        ::ethers::contract::EthDisplay,
2532        serde::Serialize,
2533        serde::Deserialize,
2534        Default,
2535        Debug,
2536        PartialEq,
2537        Eq,
2538        Hash
2539    )]
2540    #[ethcall(name = "ownerBlockNftType", abi = "ownerBlockNftType(uint256)")]
2541    pub struct OwnerBlockNftTypeCall {
2542        pub type_index: ::ethers::core::types::U256,
2543    }
2544    ///Container type for all input parameters for the `ownerUnblockNftType` function with signature `ownerUnblockNftType(uint256)` and selector `0x21cf85ba`
2545    #[derive(
2546        Clone,
2547        ::ethers::contract::EthCall,
2548        ::ethers::contract::EthDisplay,
2549        serde::Serialize,
2550        serde::Deserialize,
2551        Default,
2552        Debug,
2553        PartialEq,
2554        Eq,
2555        Hash
2556    )]
2557    #[ethcall(name = "ownerUnblockNftType", abi = "ownerUnblockNftType(uint256)")]
2558    pub struct OwnerUnblockNftTypeCall {
2559        pub type_index: ::ethers::core::types::U256,
2560    }
2561    ///Container type for all input parameters for the `reclaimErc20Tokens` function with signature `reclaimErc20Tokens(address)` and selector `0x6067bc15`
2562    #[derive(
2563        Clone,
2564        ::ethers::contract::EthCall,
2565        ::ethers::contract::EthDisplay,
2566        serde::Serialize,
2567        serde::Deserialize,
2568        Default,
2569        Debug,
2570        PartialEq,
2571        Eq,
2572        Hash
2573    )]
2574    #[ethcall(name = "reclaimErc20Tokens", abi = "reclaimErc20Tokens(address)")]
2575    pub struct ReclaimErc20TokensCall {
2576        pub token_address: ::ethers::core::types::Address,
2577    }
2578    ///Container type for all input parameters for the `reclaimErc721Tokens` function with signature `reclaimErc721Tokens(address,uint256)` and selector `0x48c64e41`
2579    #[derive(
2580        Clone,
2581        ::ethers::contract::EthCall,
2582        ::ethers::contract::EthDisplay,
2583        serde::Serialize,
2584        serde::Deserialize,
2585        Default,
2586        Debug,
2587        PartialEq,
2588        Eq,
2589        Hash
2590    )]
2591    #[ethcall(
2592        name = "reclaimErc721Tokens",
2593        abi = "reclaimErc721Tokens(address,uint256)"
2594    )]
2595    pub struct ReclaimErc721TokensCall {
2596        pub token_address: ::ethers::core::types::Address,
2597        pub token_id: ::ethers::core::types::U256,
2598    }
2599    ///Container type for all input parameters for the `redeemedFactor` function with signature `redeemedFactor(address,uint256)` and selector `0x81128c1d`
2600    #[derive(
2601        Clone,
2602        ::ethers::contract::EthCall,
2603        ::ethers::contract::EthDisplay,
2604        serde::Serialize,
2605        serde::Deserialize,
2606        Default,
2607        Debug,
2608        PartialEq,
2609        Eq,
2610        Hash
2611    )]
2612    #[ethcall(name = "redeemedFactor", abi = "redeemedFactor(address,uint256)")]
2613    pub struct RedeemedFactorCall(
2614        pub ::ethers::core::types::Address,
2615        pub ::ethers::core::types::U256,
2616    );
2617    ///Container type for all input parameters for the `redeemedFactorIndex` function with signature `redeemedFactorIndex(address)` and selector `0x1f014d83`
2618    #[derive(
2619        Clone,
2620        ::ethers::contract::EthCall,
2621        ::ethers::contract::EthDisplay,
2622        serde::Serialize,
2623        serde::Deserialize,
2624        Default,
2625        Debug,
2626        PartialEq,
2627        Eq,
2628        Hash
2629    )]
2630    #[ethcall(name = "redeemedFactorIndex", abi = "redeemedFactorIndex(address)")]
2631    pub struct RedeemedFactorIndexCall(pub ::ethers::core::types::Address);
2632    ///Container type for all input parameters for the `redeemedNft` function with signature `redeemedNft(address,uint256)` and selector `0x0a1a257a`
2633    #[derive(
2634        Clone,
2635        ::ethers::contract::EthCall,
2636        ::ethers::contract::EthDisplay,
2637        serde::Serialize,
2638        serde::Deserialize,
2639        Default,
2640        Debug,
2641        PartialEq,
2642        Eq,
2643        Hash
2644    )]
2645    #[ethcall(name = "redeemedNft", abi = "redeemedNft(address,uint256)")]
2646    pub struct RedeemedNftCall(
2647        pub ::ethers::core::types::Address,
2648        pub ::ethers::core::types::U256,
2649    );
2650    ///Container type for all input parameters for the `redeemedNftIndex` function with signature `redeemedNftIndex(address)` and selector `0xd0c02d63`
2651    #[derive(
2652        Clone,
2653        ::ethers::contract::EthCall,
2654        ::ethers::contract::EthDisplay,
2655        serde::Serialize,
2656        serde::Deserialize,
2657        Default,
2658        Debug,
2659        PartialEq,
2660        Eq,
2661        Hash
2662    )]
2663    #[ethcall(name = "redeemedNftIndex", abi = "redeemedNftIndex(address)")]
2664    pub struct RedeemedNftIndexCall(pub ::ethers::core::types::Address);
2665    ///Container type for all input parameters for the `renounceOwnership` function with signature `renounceOwnership()` and selector `0x715018a6`
2666    #[derive(
2667        Clone,
2668        ::ethers::contract::EthCall,
2669        ::ethers::contract::EthDisplay,
2670        serde::Serialize,
2671        serde::Deserialize,
2672        Default,
2673        Debug,
2674        PartialEq,
2675        Eq,
2676        Hash
2677    )]
2678    #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")]
2679    pub struct RenounceOwnershipCall;
2680    ///Container type for all input parameters for the `stakedHoprTokens` function with signature `stakedHoprTokens(address)` and selector `0xf978fff1`
2681    #[derive(
2682        Clone,
2683        ::ethers::contract::EthCall,
2684        ::ethers::contract::EthDisplay,
2685        serde::Serialize,
2686        serde::Deserialize,
2687        Default,
2688        Debug,
2689        PartialEq,
2690        Eq,
2691        Hash
2692    )]
2693    #[ethcall(name = "stakedHoprTokens", abi = "stakedHoprTokens(address)")]
2694    pub struct StakedHoprTokensCall {
2695        pub account: ::ethers::core::types::Address,
2696    }
2697    ///Container type for all input parameters for the `sync` function with signature `sync(address)` and selector `0xa5841194`
2698    #[derive(
2699        Clone,
2700        ::ethers::contract::EthCall,
2701        ::ethers::contract::EthDisplay,
2702        serde::Serialize,
2703        serde::Deserialize,
2704        Default,
2705        Debug,
2706        PartialEq,
2707        Eq,
2708        Hash
2709    )]
2710    #[ethcall(name = "sync", abi = "sync(address)")]
2711    pub struct SyncCall {
2712        pub account: ::ethers::core::types::Address,
2713    }
2714    ///Container type for all input parameters for the `tokensReceived` function with signature `tokensReceived(address,address,address,uint256,bytes,bytes)` and selector `0x0023de29`
2715    #[derive(
2716        Clone,
2717        ::ethers::contract::EthCall,
2718        ::ethers::contract::EthDisplay,
2719        serde::Serialize,
2720        serde::Deserialize,
2721        Default,
2722        Debug,
2723        PartialEq,
2724        Eq,
2725        Hash
2726    )]
2727    #[ethcall(
2728        name = "tokensReceived",
2729        abi = "tokensReceived(address,address,address,uint256,bytes,bytes)"
2730    )]
2731    pub struct TokensReceivedCall {
2732        pub p0: ::ethers::core::types::Address,
2733        pub from: ::ethers::core::types::Address,
2734        pub to: ::ethers::core::types::Address,
2735        pub amount: ::ethers::core::types::U256,
2736        pub p4: ::ethers::core::types::Bytes,
2737        pub p5: ::ethers::core::types::Bytes,
2738    }
2739    ///Container type for all input parameters for the `totalLocked` function with signature `totalLocked()` and selector `0x56891412`
2740    #[derive(
2741        Clone,
2742        ::ethers::contract::EthCall,
2743        ::ethers::contract::EthDisplay,
2744        serde::Serialize,
2745        serde::Deserialize,
2746        Default,
2747        Debug,
2748        PartialEq,
2749        Eq,
2750        Hash
2751    )]
2752    #[ethcall(name = "totalLocked", abi = "totalLocked()")]
2753    pub struct TotalLockedCall;
2754    ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b`
2755    #[derive(
2756        Clone,
2757        ::ethers::contract::EthCall,
2758        ::ethers::contract::EthDisplay,
2759        serde::Serialize,
2760        serde::Deserialize,
2761        Default,
2762        Debug,
2763        PartialEq,
2764        Eq,
2765        Hash
2766    )]
2767    #[ethcall(name = "transferOwnership", abi = "transferOwnership(address)")]
2768    pub struct TransferOwnershipCall {
2769        pub new_owner: ::ethers::core::types::Address,
2770    }
2771    ///Container type for all input parameters for the `unlock` function with signature `unlock()` and selector `0xa69df4b5`
2772    #[derive(
2773        Clone,
2774        ::ethers::contract::EthCall,
2775        ::ethers::contract::EthDisplay,
2776        serde::Serialize,
2777        serde::Deserialize,
2778        Default,
2779        Debug,
2780        PartialEq,
2781        Eq,
2782        Hash
2783    )]
2784    #[ethcall(name = "unlock", abi = "unlock()")]
2785    pub struct UnlockCall;
2786    ///Container type for all input parameters for the `unlockFor` function with signature `unlockFor(address)` and selector `0xdde49979`
2787    #[derive(
2788        Clone,
2789        ::ethers::contract::EthCall,
2790        ::ethers::contract::EthDisplay,
2791        serde::Serialize,
2792        serde::Deserialize,
2793        Default,
2794        Debug,
2795        PartialEq,
2796        Eq,
2797        Hash
2798    )]
2799    #[ethcall(name = "unlockFor", abi = "unlockFor(address)")]
2800    pub struct UnlockForCall {
2801        pub account: ::ethers::core::types::Address,
2802    }
2803    ///Container type for all of the contract's call
2804    #[derive(
2805        Clone,
2806        ::ethers::contract::EthAbiType,
2807        serde::Serialize,
2808        serde::Deserialize,
2809        Debug,
2810        PartialEq,
2811        Eq,
2812        Hash
2813    )]
2814    pub enum HoprStakeBaseCalls {
2815        BasicFactorNumerator(BasicFactorNumeratorCall),
2816        BoostCap(BoostCapCall),
2817        FactorDenominator(FactorDenominatorCall),
2818        LockToken(LockTokenCall),
2819        NftContract(NftContractCall),
2820        ProgramEnd(ProgramEndCall),
2821        ProgramStart(ProgramStartCall),
2822        RewardToken(RewardTokenCall),
2823        Accounts(AccountsCall),
2824        AvailableReward(AvailableRewardCall),
2825        ClaimRewards(ClaimRewardsCall),
2826        GetCumulatedRewardsIncrement(GetCumulatedRewardsIncrementCall),
2827        IsBlockedNft(IsBlockedNftCall),
2828        IsNftTypeAndRankRedeemed1(IsNftTypeAndRankRedeemed1Call),
2829        IsNftTypeAndRankRedeemed2(IsNftTypeAndRankRedeemed2Call),
2830        IsNftTypeAndRankRedeemed3(IsNftTypeAndRankRedeemed3Call),
2831        IsNftTypeAndRankRedeemed4(IsNftTypeAndRankRedeemed4Call),
2832        OnERC721Received(OnERC721ReceivedCall),
2833        OnTokenTransfer(OnTokenTransferCall),
2834        Owner(OwnerCall),
2835        OwnerBlockNftType(OwnerBlockNftTypeCall),
2836        OwnerUnblockNftType(OwnerUnblockNftTypeCall),
2837        ReclaimErc20Tokens(ReclaimErc20TokensCall),
2838        ReclaimErc721Tokens(ReclaimErc721TokensCall),
2839        RedeemedFactor(RedeemedFactorCall),
2840        RedeemedFactorIndex(RedeemedFactorIndexCall),
2841        RedeemedNft(RedeemedNftCall),
2842        RedeemedNftIndex(RedeemedNftIndexCall),
2843        RenounceOwnership(RenounceOwnershipCall),
2844        StakedHoprTokens(StakedHoprTokensCall),
2845        Sync(SyncCall),
2846        TokensReceived(TokensReceivedCall),
2847        TotalLocked(TotalLockedCall),
2848        TransferOwnership(TransferOwnershipCall),
2849        Unlock(UnlockCall),
2850        UnlockFor(UnlockForCall),
2851    }
2852    impl ::ethers::core::abi::AbiDecode for HoprStakeBaseCalls {
2853        fn decode(
2854            data: impl AsRef<[u8]>,
2855        ) -> ::core::result::Result<Self, ::ethers::core::abi::AbiError> {
2856            let data = data.as_ref();
2857            if let Ok(decoded) = <BasicFactorNumeratorCall as ::ethers::core::abi::AbiDecode>::decode(
2858                data,
2859            ) {
2860                return Ok(Self::BasicFactorNumerator(decoded));
2861            }
2862            if let Ok(decoded) = <BoostCapCall as ::ethers::core::abi::AbiDecode>::decode(
2863                data,
2864            ) {
2865                return Ok(Self::BoostCap(decoded));
2866            }
2867            if let Ok(decoded) = <FactorDenominatorCall as ::ethers::core::abi::AbiDecode>::decode(
2868                data,
2869            ) {
2870                return Ok(Self::FactorDenominator(decoded));
2871            }
2872            if let Ok(decoded) = <LockTokenCall as ::ethers::core::abi::AbiDecode>::decode(
2873                data,
2874            ) {
2875                return Ok(Self::LockToken(decoded));
2876            }
2877            if let Ok(decoded) = <NftContractCall as ::ethers::core::abi::AbiDecode>::decode(
2878                data,
2879            ) {
2880                return Ok(Self::NftContract(decoded));
2881            }
2882            if let Ok(decoded) = <ProgramEndCall as ::ethers::core::abi::AbiDecode>::decode(
2883                data,
2884            ) {
2885                return Ok(Self::ProgramEnd(decoded));
2886            }
2887            if let Ok(decoded) = <ProgramStartCall as ::ethers::core::abi::AbiDecode>::decode(
2888                data,
2889            ) {
2890                return Ok(Self::ProgramStart(decoded));
2891            }
2892            if let Ok(decoded) = <RewardTokenCall as ::ethers::core::abi::AbiDecode>::decode(
2893                data,
2894            ) {
2895                return Ok(Self::RewardToken(decoded));
2896            }
2897            if let Ok(decoded) = <AccountsCall as ::ethers::core::abi::AbiDecode>::decode(
2898                data,
2899            ) {
2900                return Ok(Self::Accounts(decoded));
2901            }
2902            if let Ok(decoded) = <AvailableRewardCall as ::ethers::core::abi::AbiDecode>::decode(
2903                data,
2904            ) {
2905                return Ok(Self::AvailableReward(decoded));
2906            }
2907            if let Ok(decoded) = <ClaimRewardsCall as ::ethers::core::abi::AbiDecode>::decode(
2908                data,
2909            ) {
2910                return Ok(Self::ClaimRewards(decoded));
2911            }
2912            if let Ok(decoded) = <GetCumulatedRewardsIncrementCall as ::ethers::core::abi::AbiDecode>::decode(
2913                data,
2914            ) {
2915                return Ok(Self::GetCumulatedRewardsIncrement(decoded));
2916            }
2917            if let Ok(decoded) = <IsBlockedNftCall as ::ethers::core::abi::AbiDecode>::decode(
2918                data,
2919            ) {
2920                return Ok(Self::IsBlockedNft(decoded));
2921            }
2922            if let Ok(decoded) = <IsNftTypeAndRankRedeemed1Call as ::ethers::core::abi::AbiDecode>::decode(
2923                data,
2924            ) {
2925                return Ok(Self::IsNftTypeAndRankRedeemed1(decoded));
2926            }
2927            if let Ok(decoded) = <IsNftTypeAndRankRedeemed2Call as ::ethers::core::abi::AbiDecode>::decode(
2928                data,
2929            ) {
2930                return Ok(Self::IsNftTypeAndRankRedeemed2(decoded));
2931            }
2932            if let Ok(decoded) = <IsNftTypeAndRankRedeemed3Call as ::ethers::core::abi::AbiDecode>::decode(
2933                data,
2934            ) {
2935                return Ok(Self::IsNftTypeAndRankRedeemed3(decoded));
2936            }
2937            if let Ok(decoded) = <IsNftTypeAndRankRedeemed4Call as ::ethers::core::abi::AbiDecode>::decode(
2938                data,
2939            ) {
2940                return Ok(Self::IsNftTypeAndRankRedeemed4(decoded));
2941            }
2942            if let Ok(decoded) = <OnERC721ReceivedCall as ::ethers::core::abi::AbiDecode>::decode(
2943                data,
2944            ) {
2945                return Ok(Self::OnERC721Received(decoded));
2946            }
2947            if let Ok(decoded) = <OnTokenTransferCall as ::ethers::core::abi::AbiDecode>::decode(
2948                data,
2949            ) {
2950                return Ok(Self::OnTokenTransfer(decoded));
2951            }
2952            if let Ok(decoded) = <OwnerCall as ::ethers::core::abi::AbiDecode>::decode(
2953                data,
2954            ) {
2955                return Ok(Self::Owner(decoded));
2956            }
2957            if let Ok(decoded) = <OwnerBlockNftTypeCall as ::ethers::core::abi::AbiDecode>::decode(
2958                data,
2959            ) {
2960                return Ok(Self::OwnerBlockNftType(decoded));
2961            }
2962            if let Ok(decoded) = <OwnerUnblockNftTypeCall as ::ethers::core::abi::AbiDecode>::decode(
2963                data,
2964            ) {
2965                return Ok(Self::OwnerUnblockNftType(decoded));
2966            }
2967            if let Ok(decoded) = <ReclaimErc20TokensCall as ::ethers::core::abi::AbiDecode>::decode(
2968                data,
2969            ) {
2970                return Ok(Self::ReclaimErc20Tokens(decoded));
2971            }
2972            if let Ok(decoded) = <ReclaimErc721TokensCall as ::ethers::core::abi::AbiDecode>::decode(
2973                data,
2974            ) {
2975                return Ok(Self::ReclaimErc721Tokens(decoded));
2976            }
2977            if let Ok(decoded) = <RedeemedFactorCall as ::ethers::core::abi::AbiDecode>::decode(
2978                data,
2979            ) {
2980                return Ok(Self::RedeemedFactor(decoded));
2981            }
2982            if let Ok(decoded) = <RedeemedFactorIndexCall as ::ethers::core::abi::AbiDecode>::decode(
2983                data,
2984            ) {
2985                return Ok(Self::RedeemedFactorIndex(decoded));
2986            }
2987            if let Ok(decoded) = <RedeemedNftCall as ::ethers::core::abi::AbiDecode>::decode(
2988                data,
2989            ) {
2990                return Ok(Self::RedeemedNft(decoded));
2991            }
2992            if let Ok(decoded) = <RedeemedNftIndexCall as ::ethers::core::abi::AbiDecode>::decode(
2993                data,
2994            ) {
2995                return Ok(Self::RedeemedNftIndex(decoded));
2996            }
2997            if let Ok(decoded) = <RenounceOwnershipCall as ::ethers::core::abi::AbiDecode>::decode(
2998                data,
2999            ) {
3000                return Ok(Self::RenounceOwnership(decoded));
3001            }
3002            if let Ok(decoded) = <StakedHoprTokensCall as ::ethers::core::abi::AbiDecode>::decode(
3003                data,
3004            ) {
3005                return Ok(Self::StakedHoprTokens(decoded));
3006            }
3007            if let Ok(decoded) = <SyncCall as ::ethers::core::abi::AbiDecode>::decode(
3008                data,
3009            ) {
3010                return Ok(Self::Sync(decoded));
3011            }
3012            if let Ok(decoded) = <TokensReceivedCall as ::ethers::core::abi::AbiDecode>::decode(
3013                data,
3014            ) {
3015                return Ok(Self::TokensReceived(decoded));
3016            }
3017            if let Ok(decoded) = <TotalLockedCall as ::ethers::core::abi::AbiDecode>::decode(
3018                data,
3019            ) {
3020                return Ok(Self::TotalLocked(decoded));
3021            }
3022            if let Ok(decoded) = <TransferOwnershipCall as ::ethers::core::abi::AbiDecode>::decode(
3023                data,
3024            ) {
3025                return Ok(Self::TransferOwnership(decoded));
3026            }
3027            if let Ok(decoded) = <UnlockCall as ::ethers::core::abi::AbiDecode>::decode(
3028                data,
3029            ) {
3030                return Ok(Self::Unlock(decoded));
3031            }
3032            if let Ok(decoded) = <UnlockForCall as ::ethers::core::abi::AbiDecode>::decode(
3033                data,
3034            ) {
3035                return Ok(Self::UnlockFor(decoded));
3036            }
3037            Err(::ethers::core::abi::Error::InvalidData.into())
3038        }
3039    }
3040    impl ::ethers::core::abi::AbiEncode for HoprStakeBaseCalls {
3041        fn encode(self) -> Vec<u8> {
3042            match self {
3043                Self::BasicFactorNumerator(element) => {
3044                    ::ethers::core::abi::AbiEncode::encode(element)
3045                }
3046                Self::BoostCap(element) => {
3047                    ::ethers::core::abi::AbiEncode::encode(element)
3048                }
3049                Self::FactorDenominator(element) => {
3050                    ::ethers::core::abi::AbiEncode::encode(element)
3051                }
3052                Self::LockToken(element) => {
3053                    ::ethers::core::abi::AbiEncode::encode(element)
3054                }
3055                Self::NftContract(element) => {
3056                    ::ethers::core::abi::AbiEncode::encode(element)
3057                }
3058                Self::ProgramEnd(element) => {
3059                    ::ethers::core::abi::AbiEncode::encode(element)
3060                }
3061                Self::ProgramStart(element) => {
3062                    ::ethers::core::abi::AbiEncode::encode(element)
3063                }
3064                Self::RewardToken(element) => {
3065                    ::ethers::core::abi::AbiEncode::encode(element)
3066                }
3067                Self::Accounts(element) => {
3068                    ::ethers::core::abi::AbiEncode::encode(element)
3069                }
3070                Self::AvailableReward(element) => {
3071                    ::ethers::core::abi::AbiEncode::encode(element)
3072                }
3073                Self::ClaimRewards(element) => {
3074                    ::ethers::core::abi::AbiEncode::encode(element)
3075                }
3076                Self::GetCumulatedRewardsIncrement(element) => {
3077                    ::ethers::core::abi::AbiEncode::encode(element)
3078                }
3079                Self::IsBlockedNft(element) => {
3080                    ::ethers::core::abi::AbiEncode::encode(element)
3081                }
3082                Self::IsNftTypeAndRankRedeemed1(element) => {
3083                    ::ethers::core::abi::AbiEncode::encode(element)
3084                }
3085                Self::IsNftTypeAndRankRedeemed2(element) => {
3086                    ::ethers::core::abi::AbiEncode::encode(element)
3087                }
3088                Self::IsNftTypeAndRankRedeemed3(element) => {
3089                    ::ethers::core::abi::AbiEncode::encode(element)
3090                }
3091                Self::IsNftTypeAndRankRedeemed4(element) => {
3092                    ::ethers::core::abi::AbiEncode::encode(element)
3093                }
3094                Self::OnERC721Received(element) => {
3095                    ::ethers::core::abi::AbiEncode::encode(element)
3096                }
3097                Self::OnTokenTransfer(element) => {
3098                    ::ethers::core::abi::AbiEncode::encode(element)
3099                }
3100                Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element),
3101                Self::OwnerBlockNftType(element) => {
3102                    ::ethers::core::abi::AbiEncode::encode(element)
3103                }
3104                Self::OwnerUnblockNftType(element) => {
3105                    ::ethers::core::abi::AbiEncode::encode(element)
3106                }
3107                Self::ReclaimErc20Tokens(element) => {
3108                    ::ethers::core::abi::AbiEncode::encode(element)
3109                }
3110                Self::ReclaimErc721Tokens(element) => {
3111                    ::ethers::core::abi::AbiEncode::encode(element)
3112                }
3113                Self::RedeemedFactor(element) => {
3114                    ::ethers::core::abi::AbiEncode::encode(element)
3115                }
3116                Self::RedeemedFactorIndex(element) => {
3117                    ::ethers::core::abi::AbiEncode::encode(element)
3118                }
3119                Self::RedeemedNft(element) => {
3120                    ::ethers::core::abi::AbiEncode::encode(element)
3121                }
3122                Self::RedeemedNftIndex(element) => {
3123                    ::ethers::core::abi::AbiEncode::encode(element)
3124                }
3125                Self::RenounceOwnership(element) => {
3126                    ::ethers::core::abi::AbiEncode::encode(element)
3127                }
3128                Self::StakedHoprTokens(element) => {
3129                    ::ethers::core::abi::AbiEncode::encode(element)
3130                }
3131                Self::Sync(element) => ::ethers::core::abi::AbiEncode::encode(element),
3132                Self::TokensReceived(element) => {
3133                    ::ethers::core::abi::AbiEncode::encode(element)
3134                }
3135                Self::TotalLocked(element) => {
3136                    ::ethers::core::abi::AbiEncode::encode(element)
3137                }
3138                Self::TransferOwnership(element) => {
3139                    ::ethers::core::abi::AbiEncode::encode(element)
3140                }
3141                Self::Unlock(element) => ::ethers::core::abi::AbiEncode::encode(element),
3142                Self::UnlockFor(element) => {
3143                    ::ethers::core::abi::AbiEncode::encode(element)
3144                }
3145            }
3146        }
3147    }
3148    impl ::core::fmt::Display for HoprStakeBaseCalls {
3149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3150            match self {
3151                Self::BasicFactorNumerator(element) => {
3152                    ::core::fmt::Display::fmt(element, f)
3153                }
3154                Self::BoostCap(element) => ::core::fmt::Display::fmt(element, f),
3155                Self::FactorDenominator(element) => ::core::fmt::Display::fmt(element, f),
3156                Self::LockToken(element) => ::core::fmt::Display::fmt(element, f),
3157                Self::NftContract(element) => ::core::fmt::Display::fmt(element, f),
3158                Self::ProgramEnd(element) => ::core::fmt::Display::fmt(element, f),
3159                Self::ProgramStart(element) => ::core::fmt::Display::fmt(element, f),
3160                Self::RewardToken(element) => ::core::fmt::Display::fmt(element, f),
3161                Self::Accounts(element) => ::core::fmt::Display::fmt(element, f),
3162                Self::AvailableReward(element) => ::core::fmt::Display::fmt(element, f),
3163                Self::ClaimRewards(element) => ::core::fmt::Display::fmt(element, f),
3164                Self::GetCumulatedRewardsIncrement(element) => {
3165                    ::core::fmt::Display::fmt(element, f)
3166                }
3167                Self::IsBlockedNft(element) => ::core::fmt::Display::fmt(element, f),
3168                Self::IsNftTypeAndRankRedeemed1(element) => {
3169                    ::core::fmt::Display::fmt(element, f)
3170                }
3171                Self::IsNftTypeAndRankRedeemed2(element) => {
3172                    ::core::fmt::Display::fmt(element, f)
3173                }
3174                Self::IsNftTypeAndRankRedeemed3(element) => {
3175                    ::core::fmt::Display::fmt(element, f)
3176                }
3177                Self::IsNftTypeAndRankRedeemed4(element) => {
3178                    ::core::fmt::Display::fmt(element, f)
3179                }
3180                Self::OnERC721Received(element) => ::core::fmt::Display::fmt(element, f),
3181                Self::OnTokenTransfer(element) => ::core::fmt::Display::fmt(element, f),
3182                Self::Owner(element) => ::core::fmt::Display::fmt(element, f),
3183                Self::OwnerBlockNftType(element) => ::core::fmt::Display::fmt(element, f),
3184                Self::OwnerUnblockNftType(element) => {
3185                    ::core::fmt::Display::fmt(element, f)
3186                }
3187                Self::ReclaimErc20Tokens(element) => {
3188                    ::core::fmt::Display::fmt(element, f)
3189                }
3190                Self::ReclaimErc721Tokens(element) => {
3191                    ::core::fmt::Display::fmt(element, f)
3192                }
3193                Self::RedeemedFactor(element) => ::core::fmt::Display::fmt(element, f),
3194                Self::RedeemedFactorIndex(element) => {
3195                    ::core::fmt::Display::fmt(element, f)
3196                }
3197                Self::RedeemedNft(element) => ::core::fmt::Display::fmt(element, f),
3198                Self::RedeemedNftIndex(element) => ::core::fmt::Display::fmt(element, f),
3199                Self::RenounceOwnership(element) => ::core::fmt::Display::fmt(element, f),
3200                Self::StakedHoprTokens(element) => ::core::fmt::Display::fmt(element, f),
3201                Self::Sync(element) => ::core::fmt::Display::fmt(element, f),
3202                Self::TokensReceived(element) => ::core::fmt::Display::fmt(element, f),
3203                Self::TotalLocked(element) => ::core::fmt::Display::fmt(element, f),
3204                Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f),
3205                Self::Unlock(element) => ::core::fmt::Display::fmt(element, f),
3206                Self::UnlockFor(element) => ::core::fmt::Display::fmt(element, f),
3207            }
3208        }
3209    }
3210    impl ::core::convert::From<BasicFactorNumeratorCall> for HoprStakeBaseCalls {
3211        fn from(value: BasicFactorNumeratorCall) -> Self {
3212            Self::BasicFactorNumerator(value)
3213        }
3214    }
3215    impl ::core::convert::From<BoostCapCall> for HoprStakeBaseCalls {
3216        fn from(value: BoostCapCall) -> Self {
3217            Self::BoostCap(value)
3218        }
3219    }
3220    impl ::core::convert::From<FactorDenominatorCall> for HoprStakeBaseCalls {
3221        fn from(value: FactorDenominatorCall) -> Self {
3222            Self::FactorDenominator(value)
3223        }
3224    }
3225    impl ::core::convert::From<LockTokenCall> for HoprStakeBaseCalls {
3226        fn from(value: LockTokenCall) -> Self {
3227            Self::LockToken(value)
3228        }
3229    }
3230    impl ::core::convert::From<NftContractCall> for HoprStakeBaseCalls {
3231        fn from(value: NftContractCall) -> Self {
3232            Self::NftContract(value)
3233        }
3234    }
3235    impl ::core::convert::From<ProgramEndCall> for HoprStakeBaseCalls {
3236        fn from(value: ProgramEndCall) -> Self {
3237            Self::ProgramEnd(value)
3238        }
3239    }
3240    impl ::core::convert::From<ProgramStartCall> for HoprStakeBaseCalls {
3241        fn from(value: ProgramStartCall) -> Self {
3242            Self::ProgramStart(value)
3243        }
3244    }
3245    impl ::core::convert::From<RewardTokenCall> for HoprStakeBaseCalls {
3246        fn from(value: RewardTokenCall) -> Self {
3247            Self::RewardToken(value)
3248        }
3249    }
3250    impl ::core::convert::From<AccountsCall> for HoprStakeBaseCalls {
3251        fn from(value: AccountsCall) -> Self {
3252            Self::Accounts(value)
3253        }
3254    }
3255    impl ::core::convert::From<AvailableRewardCall> for HoprStakeBaseCalls {
3256        fn from(value: AvailableRewardCall) -> Self {
3257            Self::AvailableReward(value)
3258        }
3259    }
3260    impl ::core::convert::From<ClaimRewardsCall> for HoprStakeBaseCalls {
3261        fn from(value: ClaimRewardsCall) -> Self {
3262            Self::ClaimRewards(value)
3263        }
3264    }
3265    impl ::core::convert::From<GetCumulatedRewardsIncrementCall> for HoprStakeBaseCalls {
3266        fn from(value: GetCumulatedRewardsIncrementCall) -> Self {
3267            Self::GetCumulatedRewardsIncrement(value)
3268        }
3269    }
3270    impl ::core::convert::From<IsBlockedNftCall> for HoprStakeBaseCalls {
3271        fn from(value: IsBlockedNftCall) -> Self {
3272            Self::IsBlockedNft(value)
3273        }
3274    }
3275    impl ::core::convert::From<IsNftTypeAndRankRedeemed1Call> for HoprStakeBaseCalls {
3276        fn from(value: IsNftTypeAndRankRedeemed1Call) -> Self {
3277            Self::IsNftTypeAndRankRedeemed1(value)
3278        }
3279    }
3280    impl ::core::convert::From<IsNftTypeAndRankRedeemed2Call> for HoprStakeBaseCalls {
3281        fn from(value: IsNftTypeAndRankRedeemed2Call) -> Self {
3282            Self::IsNftTypeAndRankRedeemed2(value)
3283        }
3284    }
3285    impl ::core::convert::From<IsNftTypeAndRankRedeemed3Call> for HoprStakeBaseCalls {
3286        fn from(value: IsNftTypeAndRankRedeemed3Call) -> Self {
3287            Self::IsNftTypeAndRankRedeemed3(value)
3288        }
3289    }
3290    impl ::core::convert::From<IsNftTypeAndRankRedeemed4Call> for HoprStakeBaseCalls {
3291        fn from(value: IsNftTypeAndRankRedeemed4Call) -> Self {
3292            Self::IsNftTypeAndRankRedeemed4(value)
3293        }
3294    }
3295    impl ::core::convert::From<OnERC721ReceivedCall> for HoprStakeBaseCalls {
3296        fn from(value: OnERC721ReceivedCall) -> Self {
3297            Self::OnERC721Received(value)
3298        }
3299    }
3300    impl ::core::convert::From<OnTokenTransferCall> for HoprStakeBaseCalls {
3301        fn from(value: OnTokenTransferCall) -> Self {
3302            Self::OnTokenTransfer(value)
3303        }
3304    }
3305    impl ::core::convert::From<OwnerCall> for HoprStakeBaseCalls {
3306        fn from(value: OwnerCall) -> Self {
3307            Self::Owner(value)
3308        }
3309    }
3310    impl ::core::convert::From<OwnerBlockNftTypeCall> for HoprStakeBaseCalls {
3311        fn from(value: OwnerBlockNftTypeCall) -> Self {
3312            Self::OwnerBlockNftType(value)
3313        }
3314    }
3315    impl ::core::convert::From<OwnerUnblockNftTypeCall> for HoprStakeBaseCalls {
3316        fn from(value: OwnerUnblockNftTypeCall) -> Self {
3317            Self::OwnerUnblockNftType(value)
3318        }
3319    }
3320    impl ::core::convert::From<ReclaimErc20TokensCall> for HoprStakeBaseCalls {
3321        fn from(value: ReclaimErc20TokensCall) -> Self {
3322            Self::ReclaimErc20Tokens(value)
3323        }
3324    }
3325    impl ::core::convert::From<ReclaimErc721TokensCall> for HoprStakeBaseCalls {
3326        fn from(value: ReclaimErc721TokensCall) -> Self {
3327            Self::ReclaimErc721Tokens(value)
3328        }
3329    }
3330    impl ::core::convert::From<RedeemedFactorCall> for HoprStakeBaseCalls {
3331        fn from(value: RedeemedFactorCall) -> Self {
3332            Self::RedeemedFactor(value)
3333        }
3334    }
3335    impl ::core::convert::From<RedeemedFactorIndexCall> for HoprStakeBaseCalls {
3336        fn from(value: RedeemedFactorIndexCall) -> Self {
3337            Self::RedeemedFactorIndex(value)
3338        }
3339    }
3340    impl ::core::convert::From<RedeemedNftCall> for HoprStakeBaseCalls {
3341        fn from(value: RedeemedNftCall) -> Self {
3342            Self::RedeemedNft(value)
3343        }
3344    }
3345    impl ::core::convert::From<RedeemedNftIndexCall> for HoprStakeBaseCalls {
3346        fn from(value: RedeemedNftIndexCall) -> Self {
3347            Self::RedeemedNftIndex(value)
3348        }
3349    }
3350    impl ::core::convert::From<RenounceOwnershipCall> for HoprStakeBaseCalls {
3351        fn from(value: RenounceOwnershipCall) -> Self {
3352            Self::RenounceOwnership(value)
3353        }
3354    }
3355    impl ::core::convert::From<StakedHoprTokensCall> for HoprStakeBaseCalls {
3356        fn from(value: StakedHoprTokensCall) -> Self {
3357            Self::StakedHoprTokens(value)
3358        }
3359    }
3360    impl ::core::convert::From<SyncCall> for HoprStakeBaseCalls {
3361        fn from(value: SyncCall) -> Self {
3362            Self::Sync(value)
3363        }
3364    }
3365    impl ::core::convert::From<TokensReceivedCall> for HoprStakeBaseCalls {
3366        fn from(value: TokensReceivedCall) -> Self {
3367            Self::TokensReceived(value)
3368        }
3369    }
3370    impl ::core::convert::From<TotalLockedCall> for HoprStakeBaseCalls {
3371        fn from(value: TotalLockedCall) -> Self {
3372            Self::TotalLocked(value)
3373        }
3374    }
3375    impl ::core::convert::From<TransferOwnershipCall> for HoprStakeBaseCalls {
3376        fn from(value: TransferOwnershipCall) -> Self {
3377            Self::TransferOwnership(value)
3378        }
3379    }
3380    impl ::core::convert::From<UnlockCall> for HoprStakeBaseCalls {
3381        fn from(value: UnlockCall) -> Self {
3382            Self::Unlock(value)
3383        }
3384    }
3385    impl ::core::convert::From<UnlockForCall> for HoprStakeBaseCalls {
3386        fn from(value: UnlockForCall) -> Self {
3387            Self::UnlockFor(value)
3388        }
3389    }
3390    ///Container type for all return fields from the `BASIC_FACTOR_NUMERATOR` function with signature `BASIC_FACTOR_NUMERATOR()` and selector `0x6aa8d4cf`
3391    #[derive(
3392        Clone,
3393        ::ethers::contract::EthAbiType,
3394        ::ethers::contract::EthAbiCodec,
3395        serde::Serialize,
3396        serde::Deserialize,
3397        Default,
3398        Debug,
3399        PartialEq,
3400        Eq,
3401        Hash
3402    )]
3403    pub struct BasicFactorNumeratorReturn(pub ::ethers::core::types::U256);
3404    ///Container type for all return fields from the `BOOST_CAP` function with signature `BOOST_CAP()` and selector `0xef0526a2`
3405    #[derive(
3406        Clone,
3407        ::ethers::contract::EthAbiType,
3408        ::ethers::contract::EthAbiCodec,
3409        serde::Serialize,
3410        serde::Deserialize,
3411        Default,
3412        Debug,
3413        PartialEq,
3414        Eq,
3415        Hash
3416    )]
3417    pub struct BoostCapReturn(pub ::ethers::core::types::U256);
3418    ///Container type for all return fields from the `FACTOR_DENOMINATOR` function with signature `FACTOR_DENOMINATOR()` and selector `0x5ef73d58`
3419    #[derive(
3420        Clone,
3421        ::ethers::contract::EthAbiType,
3422        ::ethers::contract::EthAbiCodec,
3423        serde::Serialize,
3424        serde::Deserialize,
3425        Default,
3426        Debug,
3427        PartialEq,
3428        Eq,
3429        Hash
3430    )]
3431    pub struct FactorDenominatorReturn(pub ::ethers::core::types::U256);
3432    ///Container type for all return fields from the `LOCK_TOKEN` function with signature `LOCK_TOKEN()` and selector `0xd0da6801`
3433    #[derive(
3434        Clone,
3435        ::ethers::contract::EthAbiType,
3436        ::ethers::contract::EthAbiCodec,
3437        serde::Serialize,
3438        serde::Deserialize,
3439        Default,
3440        Debug,
3441        PartialEq,
3442        Eq,
3443        Hash
3444    )]
3445    pub struct LockTokenReturn(pub ::ethers::core::types::Address);
3446    ///Container type for all return fields from the `NFT_CONTRACT` function with signature `NFT_CONTRACT()` and selector `0x1fda9a02`
3447    #[derive(
3448        Clone,
3449        ::ethers::contract::EthAbiType,
3450        ::ethers::contract::EthAbiCodec,
3451        serde::Serialize,
3452        serde::Deserialize,
3453        Default,
3454        Debug,
3455        PartialEq,
3456        Eq,
3457        Hash
3458    )]
3459    pub struct NftContractReturn(pub ::ethers::core::types::Address);
3460    ///Container type for all return fields from the `PROGRAM_END` function with signature `PROGRAM_END()` and selector `0xcbffa3c7`
3461    #[derive(
3462        Clone,
3463        ::ethers::contract::EthAbiType,
3464        ::ethers::contract::EthAbiCodec,
3465        serde::Serialize,
3466        serde::Deserialize,
3467        Default,
3468        Debug,
3469        PartialEq,
3470        Eq,
3471        Hash
3472    )]
3473    pub struct ProgramEndReturn(pub ::ethers::core::types::U256);
3474    ///Container type for all return fields from the `PROGRAM_START` function with signature `PROGRAM_START()` and selector `0x5bbb63a6`
3475    #[derive(
3476        Clone,
3477        ::ethers::contract::EthAbiType,
3478        ::ethers::contract::EthAbiCodec,
3479        serde::Serialize,
3480        serde::Deserialize,
3481        Default,
3482        Debug,
3483        PartialEq,
3484        Eq,
3485        Hash
3486    )]
3487    pub struct ProgramStartReturn(pub ::ethers::core::types::U256);
3488    ///Container type for all return fields from the `REWARD_TOKEN` function with signature `REWARD_TOKEN()` and selector `0x99248ea7`
3489    #[derive(
3490        Clone,
3491        ::ethers::contract::EthAbiType,
3492        ::ethers::contract::EthAbiCodec,
3493        serde::Serialize,
3494        serde::Deserialize,
3495        Default,
3496        Debug,
3497        PartialEq,
3498        Eq,
3499        Hash
3500    )]
3501    pub struct RewardTokenReturn(pub ::ethers::core::types::Address);
3502    ///Container type for all return fields from the `accounts` function with signature `accounts(address)` and selector `0x5e5c06e2`
3503    #[derive(
3504        Clone,
3505        ::ethers::contract::EthAbiType,
3506        ::ethers::contract::EthAbiCodec,
3507        serde::Serialize,
3508        serde::Deserialize,
3509        Default,
3510        Debug,
3511        PartialEq,
3512        Eq,
3513        Hash
3514    )]
3515    pub struct AccountsReturn {
3516        pub actual_locked_token_amount: ::ethers::core::types::U256,
3517        pub last_sync_timestamp: ::ethers::core::types::U256,
3518        pub cumulated_rewards: ::ethers::core::types::U256,
3519        pub claimed_rewards: ::ethers::core::types::U256,
3520    }
3521    ///Container type for all return fields from the `availableReward` function with signature `availableReward()` and selector `0x4ad84b34`
3522    #[derive(
3523        Clone,
3524        ::ethers::contract::EthAbiType,
3525        ::ethers::contract::EthAbiCodec,
3526        serde::Serialize,
3527        serde::Deserialize,
3528        Default,
3529        Debug,
3530        PartialEq,
3531        Eq,
3532        Hash
3533    )]
3534    pub struct AvailableRewardReturn(pub ::ethers::core::types::U256);
3535    ///Container type for all return fields from the `getCumulatedRewardsIncrement` function with signature `getCumulatedRewardsIncrement(address)` and selector `0x70af0934`
3536    #[derive(
3537        Clone,
3538        ::ethers::contract::EthAbiType,
3539        ::ethers::contract::EthAbiCodec,
3540        serde::Serialize,
3541        serde::Deserialize,
3542        Default,
3543        Debug,
3544        PartialEq,
3545        Eq,
3546        Hash
3547    )]
3548    pub struct GetCumulatedRewardsIncrementReturn(pub ::ethers::core::types::U256);
3549    ///Container type for all return fields from the `isBlockedNft` function with signature `isBlockedNft(uint256)` and selector `0x42c93361`
3550    #[derive(
3551        Clone,
3552        ::ethers::contract::EthAbiType,
3553        ::ethers::contract::EthAbiCodec,
3554        serde::Serialize,
3555        serde::Deserialize,
3556        Default,
3557        Debug,
3558        PartialEq,
3559        Eq,
3560        Hash
3561    )]
3562    pub struct IsBlockedNftReturn(pub bool);
3563    ///Container type for all return fields from the `isNftTypeAndRankRedeemed1` function with signature `isNftTypeAndRankRedeemed1(string,string,address)` and selector `0xce23177e`
3564    #[derive(
3565        Clone,
3566        ::ethers::contract::EthAbiType,
3567        ::ethers::contract::EthAbiCodec,
3568        serde::Serialize,
3569        serde::Deserialize,
3570        Default,
3571        Debug,
3572        PartialEq,
3573        Eq,
3574        Hash
3575    )]
3576    pub struct IsNftTypeAndRankRedeemed1Return(pub bool);
3577    ///Container type for all return fields from the `isNftTypeAndRankRedeemed2` function with signature `isNftTypeAndRankRedeemed2(uint256,string,address)` and selector `0x96a9cd7d`
3578    #[derive(
3579        Clone,
3580        ::ethers::contract::EthAbiType,
3581        ::ethers::contract::EthAbiCodec,
3582        serde::Serialize,
3583        serde::Deserialize,
3584        Default,
3585        Debug,
3586        PartialEq,
3587        Eq,
3588        Hash
3589    )]
3590    pub struct IsNftTypeAndRankRedeemed2Return(pub bool);
3591    ///Container type for all return fields from the `isNftTypeAndRankRedeemed3` function with signature `isNftTypeAndRankRedeemed3(uint256,uint256,address)` and selector `0xa83d1ed6`
3592    #[derive(
3593        Clone,
3594        ::ethers::contract::EthAbiType,
3595        ::ethers::contract::EthAbiCodec,
3596        serde::Serialize,
3597        serde::Deserialize,
3598        Default,
3599        Debug,
3600        PartialEq,
3601        Eq,
3602        Hash
3603    )]
3604    pub struct IsNftTypeAndRankRedeemed3Return(pub bool);
3605    ///Container type for all return fields from the `isNftTypeAndRankRedeemed4` function with signature `isNftTypeAndRankRedeemed4(string,uint256,address)` and selector `0x8c24add4`
3606    #[derive(
3607        Clone,
3608        ::ethers::contract::EthAbiType,
3609        ::ethers::contract::EthAbiCodec,
3610        serde::Serialize,
3611        serde::Deserialize,
3612        Default,
3613        Debug,
3614        PartialEq,
3615        Eq,
3616        Hash
3617    )]
3618    pub struct IsNftTypeAndRankRedeemed4Return(pub bool);
3619    ///Container type for all return fields from the `onERC721Received` function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`
3620    #[derive(
3621        Clone,
3622        ::ethers::contract::EthAbiType,
3623        ::ethers::contract::EthAbiCodec,
3624        serde::Serialize,
3625        serde::Deserialize,
3626        Default,
3627        Debug,
3628        PartialEq,
3629        Eq,
3630        Hash
3631    )]
3632    pub struct OnERC721ReceivedReturn(pub [u8; 4]);
3633    ///Container type for all return fields from the `onTokenTransfer` function with signature `onTokenTransfer(address,uint256,bytes)` and selector `0xa4c0ed36`
3634    #[derive(
3635        Clone,
3636        ::ethers::contract::EthAbiType,
3637        ::ethers::contract::EthAbiCodec,
3638        serde::Serialize,
3639        serde::Deserialize,
3640        Default,
3641        Debug,
3642        PartialEq,
3643        Eq,
3644        Hash
3645    )]
3646    pub struct OnTokenTransferReturn(pub bool);
3647    ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b`
3648    #[derive(
3649        Clone,
3650        ::ethers::contract::EthAbiType,
3651        ::ethers::contract::EthAbiCodec,
3652        serde::Serialize,
3653        serde::Deserialize,
3654        Default,
3655        Debug,
3656        PartialEq,
3657        Eq,
3658        Hash
3659    )]
3660    pub struct OwnerReturn(pub ::ethers::core::types::Address);
3661    ///Container type for all return fields from the `redeemedFactor` function with signature `redeemedFactor(address,uint256)` and selector `0x81128c1d`
3662    #[derive(
3663        Clone,
3664        ::ethers::contract::EthAbiType,
3665        ::ethers::contract::EthAbiCodec,
3666        serde::Serialize,
3667        serde::Deserialize,
3668        Default,
3669        Debug,
3670        PartialEq,
3671        Eq,
3672        Hash
3673    )]
3674    pub struct RedeemedFactorReturn(pub ::ethers::core::types::U256);
3675    ///Container type for all return fields from the `redeemedFactorIndex` function with signature `redeemedFactorIndex(address)` and selector `0x1f014d83`
3676    #[derive(
3677        Clone,
3678        ::ethers::contract::EthAbiType,
3679        ::ethers::contract::EthAbiCodec,
3680        serde::Serialize,
3681        serde::Deserialize,
3682        Default,
3683        Debug,
3684        PartialEq,
3685        Eq,
3686        Hash
3687    )]
3688    pub struct RedeemedFactorIndexReturn(pub ::ethers::core::types::U256);
3689    ///Container type for all return fields from the `redeemedNft` function with signature `redeemedNft(address,uint256)` and selector `0x0a1a257a`
3690    #[derive(
3691        Clone,
3692        ::ethers::contract::EthAbiType,
3693        ::ethers::contract::EthAbiCodec,
3694        serde::Serialize,
3695        serde::Deserialize,
3696        Default,
3697        Debug,
3698        PartialEq,
3699        Eq,
3700        Hash
3701    )]
3702    pub struct RedeemedNftReturn(pub ::ethers::core::types::U256);
3703    ///Container type for all return fields from the `redeemedNftIndex` function with signature `redeemedNftIndex(address)` and selector `0xd0c02d63`
3704    #[derive(
3705        Clone,
3706        ::ethers::contract::EthAbiType,
3707        ::ethers::contract::EthAbiCodec,
3708        serde::Serialize,
3709        serde::Deserialize,
3710        Default,
3711        Debug,
3712        PartialEq,
3713        Eq,
3714        Hash
3715    )]
3716    pub struct RedeemedNftIndexReturn(pub ::ethers::core::types::U256);
3717    ///Container type for all return fields from the `stakedHoprTokens` function with signature `stakedHoprTokens(address)` and selector `0xf978fff1`
3718    #[derive(
3719        Clone,
3720        ::ethers::contract::EthAbiType,
3721        ::ethers::contract::EthAbiCodec,
3722        serde::Serialize,
3723        serde::Deserialize,
3724        Default,
3725        Debug,
3726        PartialEq,
3727        Eq,
3728        Hash
3729    )]
3730    pub struct StakedHoprTokensReturn(pub ::ethers::core::types::U256);
3731    ///Container type for all return fields from the `totalLocked` function with signature `totalLocked()` and selector `0x56891412`
3732    #[derive(
3733        Clone,
3734        ::ethers::contract::EthAbiType,
3735        ::ethers::contract::EthAbiCodec,
3736        serde::Serialize,
3737        serde::Deserialize,
3738        Default,
3739        Debug,
3740        PartialEq,
3741        Eq,
3742        Hash
3743    )]
3744    pub struct TotalLockedReturn(pub ::ethers::core::types::U256);
3745}