hotshot_contract_adapter/bindings/
reward_claim.rs

1/**
2
3Generated by the following Solidity interface...
4```solidity
5interface RewardClaim {
6    error AccessControlBadConfirmation();
7    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
8    error AddressEmptyCode(address target);
9    error AlreadyClaimed();
10    error DailyLimitExceeded();
11    error ERC1967InvalidImplementation(address implementation);
12    error ERC1967NonPayable();
13    error EnforcedPause();
14    error ExpectedPause();
15    error FailedInnerCall();
16    error InvalidAuthRoot();
17    error InvalidInitialization();
18    error InvalidRewardAmount();
19    error NotInitializing();
20    error OwnableInvalidOwner(address owner);
21    error OwnableUnauthorizedAccount(address account);
22    error ReentrancyGuardReentrantCall();
23    error UUPSUnauthorizedCallContext();
24    error UUPSUnsupportedProxiableUUID(bytes32 slot);
25    error ZeroDailyLimit();
26    error ZeroLightClientAddress();
27    error ZeroPauserAddress();
28    error ZeroTokenAddress();
29    error ZeroTotalSupply();
30
31    event DailyLimitUpdated(uint256 oldLimit, uint256 newLimit);
32    event Initialized(uint64 version);
33    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
34    event Paused(address account);
35    event RewardsClaimed(address indexed user, uint256 amount);
36    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
37    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
38    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
39    event Unpaused(address account);
40    event Upgrade(address implementation);
41    event Upgraded(address indexed implementation);
42
43    constructor();
44
45    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
46    function PAUSER_ROLE() external view returns (bytes32);
47    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
48    function claimRewards(uint256 lifetimeRewards, bytes memory authData) external;
49    function claimedRewards(address claimer) external view returns (uint256 claimed);
50    function dailyLimit() external view returns (uint256);
51    function espToken() external view returns (address);
52    function getRoleAdmin(bytes32 role) external view returns (bytes32);
53    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
54    function grantRole(bytes32 role, address account) external;
55    function hasRole(bytes32 role, address account) external view returns (bool);
56    function initialize(address _owner, address _espToken, address _lightClient, address _pauser) external;
57    function lightClient() external view returns (address);
58    function owner() external view returns (address);
59    function pause() external;
60    function paused() external view returns (bool);
61    function proxiableUUID() external view returns (bytes32);
62    function renounceOwnership() external;
63    function renounceRole(bytes32 role, address callerConfirmation) external;
64    function revokeRole(bytes32 role, address account) external;
65    function setDailyLimit(uint256 newLimit) external;
66    function supportsInterface(bytes4 interfaceId) external view returns (bool);
67    function transferOwnership(address newOwner) external;
68    function unpause() external;
69    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
70}
71```
72
73...which was generated by the following JSON ABI:
74```json
75[
76  {
77    "type": "constructor",
78    "inputs": [],
79    "stateMutability": "nonpayable"
80  },
81  {
82    "type": "function",
83    "name": "DEFAULT_ADMIN_ROLE",
84    "inputs": [],
85    "outputs": [
86      {
87        "name": "",
88        "type": "bytes32",
89        "internalType": "bytes32"
90      }
91    ],
92    "stateMutability": "view"
93  },
94  {
95    "type": "function",
96    "name": "PAUSER_ROLE",
97    "inputs": [],
98    "outputs": [
99      {
100        "name": "",
101        "type": "bytes32",
102        "internalType": "bytes32"
103      }
104    ],
105    "stateMutability": "view"
106  },
107  {
108    "type": "function",
109    "name": "UPGRADE_INTERFACE_VERSION",
110    "inputs": [],
111    "outputs": [
112      {
113        "name": "",
114        "type": "string",
115        "internalType": "string"
116      }
117    ],
118    "stateMutability": "view"
119  },
120  {
121    "type": "function",
122    "name": "claimRewards",
123    "inputs": [
124      {
125        "name": "lifetimeRewards",
126        "type": "uint256",
127        "internalType": "uint256"
128      },
129      {
130        "name": "authData",
131        "type": "bytes",
132        "internalType": "bytes"
133      }
134    ],
135    "outputs": [],
136    "stateMutability": "nonpayable"
137  },
138  {
139    "type": "function",
140    "name": "claimedRewards",
141    "inputs": [
142      {
143        "name": "claimer",
144        "type": "address",
145        "internalType": "address"
146      }
147    ],
148    "outputs": [
149      {
150        "name": "claimed",
151        "type": "uint256",
152        "internalType": "uint256"
153      }
154    ],
155    "stateMutability": "view"
156  },
157  {
158    "type": "function",
159    "name": "dailyLimit",
160    "inputs": [],
161    "outputs": [
162      {
163        "name": "",
164        "type": "uint256",
165        "internalType": "uint256"
166      }
167    ],
168    "stateMutability": "view"
169  },
170  {
171    "type": "function",
172    "name": "espToken",
173    "inputs": [],
174    "outputs": [
175      {
176        "name": "",
177        "type": "address",
178        "internalType": "contract EspTokenV2"
179      }
180    ],
181    "stateMutability": "view"
182  },
183  {
184    "type": "function",
185    "name": "getRoleAdmin",
186    "inputs": [
187      {
188        "name": "role",
189        "type": "bytes32",
190        "internalType": "bytes32"
191      }
192    ],
193    "outputs": [
194      {
195        "name": "",
196        "type": "bytes32",
197        "internalType": "bytes32"
198      }
199    ],
200    "stateMutability": "view"
201  },
202  {
203    "type": "function",
204    "name": "getVersion",
205    "inputs": [],
206    "outputs": [
207      {
208        "name": "majorVersion",
209        "type": "uint8",
210        "internalType": "uint8"
211      },
212      {
213        "name": "minorVersion",
214        "type": "uint8",
215        "internalType": "uint8"
216      },
217      {
218        "name": "patchVersion",
219        "type": "uint8",
220        "internalType": "uint8"
221      }
222    ],
223    "stateMutability": "pure"
224  },
225  {
226    "type": "function",
227    "name": "grantRole",
228    "inputs": [
229      {
230        "name": "role",
231        "type": "bytes32",
232        "internalType": "bytes32"
233      },
234      {
235        "name": "account",
236        "type": "address",
237        "internalType": "address"
238      }
239    ],
240    "outputs": [],
241    "stateMutability": "nonpayable"
242  },
243  {
244    "type": "function",
245    "name": "hasRole",
246    "inputs": [
247      {
248        "name": "role",
249        "type": "bytes32",
250        "internalType": "bytes32"
251      },
252      {
253        "name": "account",
254        "type": "address",
255        "internalType": "address"
256      }
257    ],
258    "outputs": [
259      {
260        "name": "",
261        "type": "bool",
262        "internalType": "bool"
263      }
264    ],
265    "stateMutability": "view"
266  },
267  {
268    "type": "function",
269    "name": "initialize",
270    "inputs": [
271      {
272        "name": "_owner",
273        "type": "address",
274        "internalType": "address"
275      },
276      {
277        "name": "_espToken",
278        "type": "address",
279        "internalType": "address"
280      },
281      {
282        "name": "_lightClient",
283        "type": "address",
284        "internalType": "address"
285      },
286      {
287        "name": "_pauser",
288        "type": "address",
289        "internalType": "address"
290      }
291    ],
292    "outputs": [],
293    "stateMutability": "nonpayable"
294  },
295  {
296    "type": "function",
297    "name": "lightClient",
298    "inputs": [],
299    "outputs": [
300      {
301        "name": "",
302        "type": "address",
303        "internalType": "contract LightClientV3"
304      }
305    ],
306    "stateMutability": "view"
307  },
308  {
309    "type": "function",
310    "name": "owner",
311    "inputs": [],
312    "outputs": [
313      {
314        "name": "",
315        "type": "address",
316        "internalType": "address"
317      }
318    ],
319    "stateMutability": "view"
320  },
321  {
322    "type": "function",
323    "name": "pause",
324    "inputs": [],
325    "outputs": [],
326    "stateMutability": "nonpayable"
327  },
328  {
329    "type": "function",
330    "name": "paused",
331    "inputs": [],
332    "outputs": [
333      {
334        "name": "",
335        "type": "bool",
336        "internalType": "bool"
337      }
338    ],
339    "stateMutability": "view"
340  },
341  {
342    "type": "function",
343    "name": "proxiableUUID",
344    "inputs": [],
345    "outputs": [
346      {
347        "name": "",
348        "type": "bytes32",
349        "internalType": "bytes32"
350      }
351    ],
352    "stateMutability": "view"
353  },
354  {
355    "type": "function",
356    "name": "renounceOwnership",
357    "inputs": [],
358    "outputs": [],
359    "stateMutability": "nonpayable"
360  },
361  {
362    "type": "function",
363    "name": "renounceRole",
364    "inputs": [
365      {
366        "name": "role",
367        "type": "bytes32",
368        "internalType": "bytes32"
369      },
370      {
371        "name": "callerConfirmation",
372        "type": "address",
373        "internalType": "address"
374      }
375    ],
376    "outputs": [],
377    "stateMutability": "nonpayable"
378  },
379  {
380    "type": "function",
381    "name": "revokeRole",
382    "inputs": [
383      {
384        "name": "role",
385        "type": "bytes32",
386        "internalType": "bytes32"
387      },
388      {
389        "name": "account",
390        "type": "address",
391        "internalType": "address"
392      }
393    ],
394    "outputs": [],
395    "stateMutability": "nonpayable"
396  },
397  {
398    "type": "function",
399    "name": "setDailyLimit",
400    "inputs": [
401      {
402        "name": "newLimit",
403        "type": "uint256",
404        "internalType": "uint256"
405      }
406    ],
407    "outputs": [],
408    "stateMutability": "nonpayable"
409  },
410  {
411    "type": "function",
412    "name": "supportsInterface",
413    "inputs": [
414      {
415        "name": "interfaceId",
416        "type": "bytes4",
417        "internalType": "bytes4"
418      }
419    ],
420    "outputs": [
421      {
422        "name": "",
423        "type": "bool",
424        "internalType": "bool"
425      }
426    ],
427    "stateMutability": "view"
428  },
429  {
430    "type": "function",
431    "name": "transferOwnership",
432    "inputs": [
433      {
434        "name": "newOwner",
435        "type": "address",
436        "internalType": "address"
437      }
438    ],
439    "outputs": [],
440    "stateMutability": "nonpayable"
441  },
442  {
443    "type": "function",
444    "name": "unpause",
445    "inputs": [],
446    "outputs": [],
447    "stateMutability": "nonpayable"
448  },
449  {
450    "type": "function",
451    "name": "upgradeToAndCall",
452    "inputs": [
453      {
454        "name": "newImplementation",
455        "type": "address",
456        "internalType": "address"
457      },
458      {
459        "name": "data",
460        "type": "bytes",
461        "internalType": "bytes"
462      }
463    ],
464    "outputs": [],
465    "stateMutability": "payable"
466  },
467  {
468    "type": "event",
469    "name": "DailyLimitUpdated",
470    "inputs": [
471      {
472        "name": "oldLimit",
473        "type": "uint256",
474        "indexed": false,
475        "internalType": "uint256"
476      },
477      {
478        "name": "newLimit",
479        "type": "uint256",
480        "indexed": false,
481        "internalType": "uint256"
482      }
483    ],
484    "anonymous": false
485  },
486  {
487    "type": "event",
488    "name": "Initialized",
489    "inputs": [
490      {
491        "name": "version",
492        "type": "uint64",
493        "indexed": false,
494        "internalType": "uint64"
495      }
496    ],
497    "anonymous": false
498  },
499  {
500    "type": "event",
501    "name": "OwnershipTransferred",
502    "inputs": [
503      {
504        "name": "previousOwner",
505        "type": "address",
506        "indexed": true,
507        "internalType": "address"
508      },
509      {
510        "name": "newOwner",
511        "type": "address",
512        "indexed": true,
513        "internalType": "address"
514      }
515    ],
516    "anonymous": false
517  },
518  {
519    "type": "event",
520    "name": "Paused",
521    "inputs": [
522      {
523        "name": "account",
524        "type": "address",
525        "indexed": false,
526        "internalType": "address"
527      }
528    ],
529    "anonymous": false
530  },
531  {
532    "type": "event",
533    "name": "RewardsClaimed",
534    "inputs": [
535      {
536        "name": "user",
537        "type": "address",
538        "indexed": true,
539        "internalType": "address"
540      },
541      {
542        "name": "amount",
543        "type": "uint256",
544        "indexed": false,
545        "internalType": "uint256"
546      }
547    ],
548    "anonymous": false
549  },
550  {
551    "type": "event",
552    "name": "RoleAdminChanged",
553    "inputs": [
554      {
555        "name": "role",
556        "type": "bytes32",
557        "indexed": true,
558        "internalType": "bytes32"
559      },
560      {
561        "name": "previousAdminRole",
562        "type": "bytes32",
563        "indexed": true,
564        "internalType": "bytes32"
565      },
566      {
567        "name": "newAdminRole",
568        "type": "bytes32",
569        "indexed": true,
570        "internalType": "bytes32"
571      }
572    ],
573    "anonymous": false
574  },
575  {
576    "type": "event",
577    "name": "RoleGranted",
578    "inputs": [
579      {
580        "name": "role",
581        "type": "bytes32",
582        "indexed": true,
583        "internalType": "bytes32"
584      },
585      {
586        "name": "account",
587        "type": "address",
588        "indexed": true,
589        "internalType": "address"
590      },
591      {
592        "name": "sender",
593        "type": "address",
594        "indexed": true,
595        "internalType": "address"
596      }
597    ],
598    "anonymous": false
599  },
600  {
601    "type": "event",
602    "name": "RoleRevoked",
603    "inputs": [
604      {
605        "name": "role",
606        "type": "bytes32",
607        "indexed": true,
608        "internalType": "bytes32"
609      },
610      {
611        "name": "account",
612        "type": "address",
613        "indexed": true,
614        "internalType": "address"
615      },
616      {
617        "name": "sender",
618        "type": "address",
619        "indexed": true,
620        "internalType": "address"
621      }
622    ],
623    "anonymous": false
624  },
625  {
626    "type": "event",
627    "name": "Unpaused",
628    "inputs": [
629      {
630        "name": "account",
631        "type": "address",
632        "indexed": false,
633        "internalType": "address"
634      }
635    ],
636    "anonymous": false
637  },
638  {
639    "type": "event",
640    "name": "Upgrade",
641    "inputs": [
642      {
643        "name": "implementation",
644        "type": "address",
645        "indexed": false,
646        "internalType": "address"
647      }
648    ],
649    "anonymous": false
650  },
651  {
652    "type": "event",
653    "name": "Upgraded",
654    "inputs": [
655      {
656        "name": "implementation",
657        "type": "address",
658        "indexed": true,
659        "internalType": "address"
660      }
661    ],
662    "anonymous": false
663  },
664  {
665    "type": "error",
666    "name": "AccessControlBadConfirmation",
667    "inputs": []
668  },
669  {
670    "type": "error",
671    "name": "AccessControlUnauthorizedAccount",
672    "inputs": [
673      {
674        "name": "account",
675        "type": "address",
676        "internalType": "address"
677      },
678      {
679        "name": "neededRole",
680        "type": "bytes32",
681        "internalType": "bytes32"
682      }
683    ]
684  },
685  {
686    "type": "error",
687    "name": "AddressEmptyCode",
688    "inputs": [
689      {
690        "name": "target",
691        "type": "address",
692        "internalType": "address"
693      }
694    ]
695  },
696  {
697    "type": "error",
698    "name": "AlreadyClaimed",
699    "inputs": []
700  },
701  {
702    "type": "error",
703    "name": "DailyLimitExceeded",
704    "inputs": []
705  },
706  {
707    "type": "error",
708    "name": "ERC1967InvalidImplementation",
709    "inputs": [
710      {
711        "name": "implementation",
712        "type": "address",
713        "internalType": "address"
714      }
715    ]
716  },
717  {
718    "type": "error",
719    "name": "ERC1967NonPayable",
720    "inputs": []
721  },
722  {
723    "type": "error",
724    "name": "EnforcedPause",
725    "inputs": []
726  },
727  {
728    "type": "error",
729    "name": "ExpectedPause",
730    "inputs": []
731  },
732  {
733    "type": "error",
734    "name": "FailedInnerCall",
735    "inputs": []
736  },
737  {
738    "type": "error",
739    "name": "InvalidAuthRoot",
740    "inputs": []
741  },
742  {
743    "type": "error",
744    "name": "InvalidInitialization",
745    "inputs": []
746  },
747  {
748    "type": "error",
749    "name": "InvalidRewardAmount",
750    "inputs": []
751  },
752  {
753    "type": "error",
754    "name": "NotInitializing",
755    "inputs": []
756  },
757  {
758    "type": "error",
759    "name": "OwnableInvalidOwner",
760    "inputs": [
761      {
762        "name": "owner",
763        "type": "address",
764        "internalType": "address"
765      }
766    ]
767  },
768  {
769    "type": "error",
770    "name": "OwnableUnauthorizedAccount",
771    "inputs": [
772      {
773        "name": "account",
774        "type": "address",
775        "internalType": "address"
776      }
777    ]
778  },
779  {
780    "type": "error",
781    "name": "ReentrancyGuardReentrantCall",
782    "inputs": []
783  },
784  {
785    "type": "error",
786    "name": "UUPSUnauthorizedCallContext",
787    "inputs": []
788  },
789  {
790    "type": "error",
791    "name": "UUPSUnsupportedProxiableUUID",
792    "inputs": [
793      {
794        "name": "slot",
795        "type": "bytes32",
796        "internalType": "bytes32"
797      }
798    ]
799  },
800  {
801    "type": "error",
802    "name": "ZeroDailyLimit",
803    "inputs": []
804  },
805  {
806    "type": "error",
807    "name": "ZeroLightClientAddress",
808    "inputs": []
809  },
810  {
811    "type": "error",
812    "name": "ZeroPauserAddress",
813    "inputs": []
814  },
815  {
816    "type": "error",
817    "name": "ZeroTokenAddress",
818    "inputs": []
819  },
820  {
821    "type": "error",
822    "name": "ZeroTotalSupply",
823    "inputs": []
824  }
825]
826```*/
827#[allow(
828    non_camel_case_types,
829    non_snake_case,
830    clippy::pub_underscore_fields,
831    clippy::style,
832    clippy::empty_structs_with_brackets
833)]
834pub mod RewardClaim {
835    use super::*;
836    use alloy::sol_types as alloy_sol_types;
837    /// The creation / init bytecode of the contract.
838    ///
839    /// ```text
840    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516119b96100f95f395f8181610cc801528181610cf10152610e6901526119b95ff3fe608060405260043610610161575f3560e01c80638456cb59116100cd578063b5700e6811610087578063e63ab1e911610062578063e63ab1e914610432578063f092e13a14610452578063f2fde38b14610470578063f8c8765e1461048f575f5ffd5b8063b5700e68146103c9578063bd834345146103e8578063d547741f14610413575f5ffd5b80638456cb59146102d75780638da5cb5b146102eb57806391d148541461033b578063a217fddf1461035a578063ad3cb1cc1461036d578063b20d30a9146103aa575f5ffd5b80634f1ef2861161011e5780634f1ef2861461024557806352d1902d14610258578063549dd8c31461026c5780635c975abb1461028b57806367eeba0c146102ae578063715018a6146102c3575f5ffd5b806301ffc9a7146101655780630d8e6e2c14610199578063248a9ca3146101c45780632f2ff15d146101f157806336568abe146102125780633f4ba83a14610231575b5f5ffd5b348015610170575f5ffd5b5061018461017f36600461157f565b6104ae565b60405190151581526020015b60405180910390f35b3480156101a4575f5ffd5b5060408051600181525f6020820181905291810191909152606001610190565b3480156101cf575f5ffd5b506101e36101de3660046115a6565b6104e4565b604051908152602001610190565b3480156101fc575f5ffd5b5061021061020b3660046115d8565b610504565b005b34801561021d575f5ffd5b5061021061022c3660046115d8565b610526565b34801561023c575f5ffd5b5061021061055e565b6102106102533660046116b3565b610580565b348015610263575f5ffd5b506101e361059f565b348015610277575f5ffd5b506102106102863660046116fe565b6105ba565b348015610296575f5ffd5b505f51602061198d5f395f51905f525460ff16610184565b3480156102b9575f5ffd5b506101e360035481565b3480156102ce575f5ffd5b5061021061074d565b3480156102e2575f5ffd5b50610210610760565b3480156102f6575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610190565b348015610346575f5ffd5b506101846103553660046115d8565b61077f565b348015610365575f5ffd5b506101e35f81565b348015610378575f5ffd5b5061039d604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610190919061172c565b3480156103b5575f5ffd5b506102106103c43660046115a6565b6107b5565b3480156103d4575f5ffd5b50600154610323906001600160a01b031681565b3480156103f3575f5ffd5b506101e3610402366004611761565b60026020525f908152604090205481565b34801561041e575f5ffd5b5061021061042d3660046115d8565b61081e565b34801561043d575f5ffd5b506101e35f51602061194d5f395f51905f5281565b34801561045d575f5ffd5b505f54610323906001600160a01b031681565b34801561047b575f5ffd5b5061021061048a366004611761565b61083a565b34801561049a575f5ffd5b506102106104a936600461177a565b610879565b5f6001600160e01b03198216637965db0b60e01b14806104de57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f9081525f51602061196d5f395f51905f52602052604090206001015490565b61050d826104e4565b61051681610b39565b6105208383610b43565b50505050565b6001600160a01b038116331461054f5760405163334bd91960e11b815260040160405180910390fd5b6105598282610be4565b505050565b5f51602061194d5f395f51905f5261057581610b39565b61057d610c5d565b50565b610588610cbd565b61059182610d61565b61059b8282610da2565b5050565b5f6105a8610e5e565b505f51602061192d5f395f51905f5290565b6105c2610ea7565b6105ca610ed7565b815f036105ea57604051633853986560e01b815260040160405180910390fd5b335f81815260026020526040902054831161061857604051630c8d9eab60e31b815260040160405180910390fd5b6001600160a01b0381165f9081526002602052604081205461063a90856117df565b905061064581610f21565b61064f8484610f7f565b61066c57604051630651710f60e31b815260040160405180910390fd5b6001600160a01b038281165f81815260026020526040808220889055905490516340c10f1960e01b8152600481019290925260248201849052909116906340c10f19906044015f604051808303815f87803b1580156106c9575f5ffd5b505af11580156106db573d5f5f3e3d5ffd5b50505050816001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe8260405161071a91815260200190565b60405180910390a2505061059b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6107556110bd565b61075e5f611118565b565b5f51602061194d5f395f51905f5261077781610b39565b61057d611188565b5f9182525f51602061196d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6107bd6110bd565b5f81116107dd57604051639b11a8bd60e01b815260040160405180910390fd5b60035460408051918252602082018390527f207c4cbdf55ec315a13f0d5e047732ec5d947da056e706593aa509909941cedf910160405180910390a1600355565b610827826104e4565b61083081610b39565b6105208383610be4565b6108426110bd565b6001600160a01b03811661087057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61057d81611118565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156108be5750825b90505f8267ffffffffffffffff1660011480156108da5750303b155b9050811580156108e8575080155b156109065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561093057845460ff60401b1916600160401b1785555b6001600160a01b0387166109575760405163fcabddbd60e01b815260040160405180910390fd5b6001600160a01b03861661097e5760405163a74995ab60e01b815260040160405180910390fd5b6001600160a01b0388166109a557604051636b093aad60e01b815260040160405180910390fd5b5f886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0691906117f2565b90505f8111610a28576040516348b5002360e01b815260040160405180910390fd5b5f610a34606483611809565b90505f8111610a5657604051639b11a8bd60e01b815260040160405180910390fd5b610a5f8b6111d0565b610a676111e1565b610a6f6111e9565b610a776111e1565b610a7f6111f9565b610a895f8c610b43565b50610aa15f51602061194d5f395f51905f5289610b43565b505f80546001600160a01b03808d166001600160a01b03199283161790925560018054928c16929091169190911790556003819055610ae36201518042611809565b60045550508315610b2e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61057d8133611209565b5f5f51602061196d5f395f51905f52610b5c848461077f565b610bdb575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610b913390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506104de565b5f9150506104de565b5f5f51602061196d5f395f51905f52610bfd848461077f565b15610bdb575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506104de565b610c65611242565b5f51602061198d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b0390911681526020015b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610d4357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d375f51602061192d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561075e5760405163703e46dd60e11b815260040160405180910390fd5b610d696110bd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610cb2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610dfc575060408051601f3d908101601f19168201909252610df9918101906117f2565b60015b610e2457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610867565b5f51602061192d5f395f51905f528114610e5457604051632a87526960e21b815260048101829052602401610867565b6105598383611271565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461075e5760405163703e46dd60e11b815260040160405180910390fd5b5f51602061198d5f395f51905f525460ff161561075e5760405163d93c066560e01b815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610f1b57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f610f2f6201518042611809565b90506004548114610f445760048190555f6005555b8160055f828254610f559190611828565b9091555050600354600554111561059b57604051630652f4c560e21b815260040160405180910390fd5b5f5f5f83806020019051810190610f96919061187c565b915091505f610fa63387856112c6565b82516020808501516040808701516060808901516080808b015160a0808d015160c0808f015189519b8c018e9052988b019b909b529489019790975290870193909352938501939093529383019390935260e08201526101008101919091529091505f906101200160408051601f198184030181528282528051602091820120600154631330651d60e31b855292519094506001600160a01b039092169263998328e892600480830193928290030181865afa158015611068573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108c91906117f2565b149695505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b336110ef7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461075e5760405163118cdaa760e01b8152336004820152602401610867565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611190610ea7565b5f51602061198d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610c9e565b6111d8611341565b61057d8161138a565b61075e611341565b6111f1611341565b61075e611392565b611201611341565b61075e6113b2565b611213828261077f565b61059b5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610867565b5f51602061198d5f395f51905f525460ff1661075e57604051638dfc202b60e01b815260040160405180910390fd5b61127a826113ba565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156112be57610559828261141d565b61059b61148f565b5f5f6112d1846114ae565b90505f5b60a0811015611336575f848260a081106112f1576112f1611902565b60200201519050600187831c16801561131a57604080518381526020810186905220935061132c565b60408051858152602081018490522093505b50506001016112d5565b5090505b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661075e57604051631afcd79f60e31b815260040160405180910390fd5b610842611341565b61139a611341565b5f51602061198d5f395f51905f52805460ff19169055565b611097611341565b806001600160a01b03163b5f036113ef57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610867565b5f51602061192d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516114399190611916565b5f60405180830381855af49150503d805f8114611471576040519150601f19603f3d011682016040523d82523d5f602084013e611476565b606091505b50915091506114868583836114fa565b95945050505050565b341561075e5760405163b398979f60e01b815260040160405180910390fd5b5f5f826040516020016114c391815260200190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209392505050565b60608261150f5761150a82611556565b61133a565b815115801561152657506001600160a01b0384163b155b1561154f57604051639996b31560e01b81526001600160a01b0385166004820152602401610867565b508061133a565b8051156115665780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f6020828403121561158f575f5ffd5b81356001600160e01b03198116811461133a575f5ffd5b5f602082840312156115b6575f5ffd5b5035919050565b80356001600160a01b03811681146115d3575f5ffd5b919050565b5f5f604083850312156115e9575f5ffd5b823591506115f9602084016115bd565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561163f5761163f611602565b604052919050565b5f82601f830112611656575f5ffd5b813567ffffffffffffffff81111561167057611670611602565b611683601f8201601f1916602001611616565b818152846020838601011115611697575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156116c4575f5ffd5b6116cd836115bd565b9150602083013567ffffffffffffffff8111156116e8575f5ffd5b6116f485828601611647565b9150509250929050565b5f5f6040838503121561170f575f5ffd5b82359150602083013567ffffffffffffffff8111156116e8575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611771575f5ffd5b61133a826115bd565b5f5f5f5f6080858703121561178d575f5ffd5b611796856115bd565b93506117a4602086016115bd565b92506117b2604086016115bd565b91506117c0606086016115bd565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104de576104de6117cb565b5f60208284031215611802575f5ffd5b5051919050565b5f8261182357634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104de576104de6117cb565b5f61184660e0611616565b90508060e0830184811115611859575f5ffd5b835b8181101561187357805183526020928301920161185b565b50505092915050565b5f5f6114e0838503121561188e575f5ffd5b5f84601f85011261189d575f5ffd5b505f806114006118ac81611616565b92508291508501868111156118bf575f5ffd5b855b818110156118d95780518452602093840193016118c1565b508194508661141f8701126118ec575f5ffd5b6118f6878261183b565b93505050509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a164736f6c634300081c000a
841    /// ```
842    #[rustfmt::skip]
843    #[allow(clippy::all)]
844    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
845        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa\x19\xB9a\0\xF9_9_\x81\x81a\x0C\xC8\x01R\x81\x81a\x0C\xF1\x01Ra\x0Ei\x01Ra\x19\xB9_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x84V\xCBY\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xE6:\xB1\xE9\x11a\0bW\x80c\xE6:\xB1\xE9\x14a\x042W\x80c\xF0\x92\xE1:\x14a\x04RW\x80c\xF2\xFD\xE3\x8B\x14a\x04pW\x80c\xF8\xC8v^\x14a\x04\x8FW__\xFD[\x80c\xB5p\x0Eh\x14a\x03\xC9W\x80c\xBD\x83CE\x14a\x03\xE8W\x80c\xD5Gt\x1F\x14a\x04\x13W__\xFD[\x80c\x84V\xCBY\x14a\x02\xD7W\x80c\x8D\xA5\xCB[\x14a\x02\xEBW\x80c\x91\xD1HT\x14a\x03;W\x80c\xA2\x17\xFD\xDF\x14a\x03ZW\x80c\xAD<\xB1\xCC\x14a\x03mW\x80c\xB2\r0\xA9\x14a\x03\xAAW__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x02EW\x80cR\xD1\x90-\x14a\x02XW\x80cT\x9D\xD8\xC3\x14a\x02lW\x80c\\\x97Z\xBB\x14a\x02\x8BW\x80cg\xEE\xBA\x0C\x14a\x02\xAEW\x80cqP\x18\xA6\x14a\x02\xC3W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01eW\x80c\r\x8En,\x14a\x01\x99W\x80c$\x8A\x9C\xA3\x14a\x01\xC4W\x80c//\xF1]\x14a\x01\xF1W\x80c6V\x8A\xBE\x14a\x02\x12W\x80c?K\xA8:\x14a\x021W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x15\x7FV[a\x04\xAEV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xA4W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\x90V[4\x80\x15a\x01\xCFW__\xFD[Pa\x01\xE3a\x01\xDE6`\x04a\x15\xA6V[a\x04\xE4V[`@Q\x90\x81R` \x01a\x01\x90V[4\x80\x15a\x01\xFCW__\xFD[Pa\x02\x10a\x02\x0B6`\x04a\x15\xD8V[a\x05\x04V[\0[4\x80\x15a\x02\x1DW__\xFD[Pa\x02\x10a\x02,6`\x04a\x15\xD8V[a\x05&V[4\x80\x15a\x02<W__\xFD[Pa\x02\x10a\x05^V[a\x02\x10a\x02S6`\x04a\x16\xB3V[a\x05\x80V[4\x80\x15a\x02cW__\xFD[Pa\x01\xE3a\x05\x9FV[4\x80\x15a\x02wW__\xFD[Pa\x02\x10a\x02\x866`\x04a\x16\xFEV[a\x05\xBAV[4\x80\x15a\x02\x96W__\xFD[P_Q` a\x19\x8D_9_Q\x90_RT`\xFF\x16a\x01\x84V[4\x80\x15a\x02\xB9W__\xFD[Pa\x01\xE3`\x03T\x81V[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\x10a\x07MV[4\x80\x15a\x02\xE2W__\xFD[Pa\x02\x10a\x07`V[4\x80\x15a\x02\xF6W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x90V[4\x80\x15a\x03FW__\xFD[Pa\x01\x84a\x03U6`\x04a\x15\xD8V[a\x07\x7FV[4\x80\x15a\x03eW__\xFD[Pa\x01\xE3_\x81V[4\x80\x15a\x03xW__\xFD[Pa\x03\x9D`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\x90\x91\x90a\x17,V[4\x80\x15a\x03\xB5W__\xFD[Pa\x02\x10a\x03\xC46`\x04a\x15\xA6V[a\x07\xB5V[4\x80\x15a\x03\xD4W__\xFD[P`\x01Ta\x03#\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x03\xF3W__\xFD[Pa\x01\xE3a\x04\x026`\x04a\x17aV[`\x02` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04\x1EW__\xFD[Pa\x02\x10a\x04-6`\x04a\x15\xD8V[a\x08\x1EV[4\x80\x15a\x04=W__\xFD[Pa\x01\xE3_Q` a\x19M_9_Q\x90_R\x81V[4\x80\x15a\x04]W__\xFD[P_Ta\x03#\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04{W__\xFD[Pa\x02\x10a\x04\x8A6`\x04a\x17aV[a\x08:V[4\x80\x15a\x04\x9AW__\xFD[Pa\x02\x10a\x04\xA96`\x04a\x17zV[a\x08yV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\xDEWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[_\x90\x81R_Q` a\x19m_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x05\r\x82a\x04\xE4V[a\x05\x16\x81a\x0B9V[a\x05 \x83\x83a\x0BCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x05OW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05Y\x82\x82a\x0B\xE4V[PPPV[_Q` a\x19M_9_Q\x90_Ra\x05u\x81a\x0B9V[a\x05}a\x0C]V[PV[a\x05\x88a\x0C\xBDV[a\x05\x91\x82a\raV[a\x05\x9B\x82\x82a\r\xA2V[PPV[_a\x05\xA8a\x0E^V[P_Q` a\x19-_9_Q\x90_R\x90V[a\x05\xC2a\x0E\xA7V[a\x05\xCAa\x0E\xD7V[\x81_\x03a\x05\xEAW`@Qc8S\x98e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3_\x81\x81R`\x02` R`@\x90 T\x83\x11a\x06\x18W`@Qc\x0C\x8D\x9E\xAB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x02` R`@\x81 Ta\x06:\x90\x85a\x17\xDFV[\x90Pa\x06E\x81a\x0F!V[a\x06O\x84\x84a\x0F\x7FV[a\x06lW`@Qc\x06Qq\x0F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x81\x16_\x81\x81R`\x02` R`@\x80\x82 \x88\x90U\x90T\x90Qc@\xC1\x0F\x19`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01\x84\x90R\x90\x91\x16\x90c@\xC1\x0F\x19\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xC9W__\xFD[PZ\xF1\x15\x80\x15a\x06\xDBW=__>=_\xFD[PPPP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFC0\xCD\xDE\xA3\x8E+\xF4\xD6\xEA}?\x9E\xD3\xB6\xAD\x7F\x17d\x19\xF4\x96;\xD8\x13\x18\x06zJ\xEEs\xFE\x82`@Qa\x07\x1A\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPa\x05\x9B`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0UV[a\x07Ua\x10\xBDV[a\x07^_a\x11\x18V[V[_Q` a\x19M_9_Q\x90_Ra\x07w\x81a\x0B9V[a\x05}a\x11\x88V[_\x91\x82R_Q` a\x19m_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[a\x07\xBDa\x10\xBDV[_\x81\x11a\x07\xDDW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03T`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F |L\xBD\xF5^\xC3\x15\xA1?\r^\x04w2\xEC]\x94}\xA0V\xE7\x06Y:\xA5\t\x90\x99A\xCE\xDF\x91\x01`@Q\x80\x91\x03\x90\xA1`\x03UV[a\x08'\x82a\x04\xE4V[a\x080\x81a\x0B9V[a\x05 \x83\x83a\x0B\xE4V[a\x08Ba\x10\xBDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08pW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x05}\x81a\x11\x18V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x08\xBEWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x08\xDAWP0;\x15[\x90P\x81\x15\x80\x15a\x08\xE8WP\x80\x15[\x15a\t\x06W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\t0W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[`\x01`\x01`\xA0\x1B\x03\x87\x16a\tWW`@Qc\xFC\xAB\xDD\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x16a\t~W`@Qc\xA7I\x95\xAB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x88\x16a\t\xA5W`@Qck\t:\xAD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x88`\x01`\x01`\xA0\x1B\x03\x16c\x18\x16\r\xDD`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE2W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x06\x91\x90a\x17\xF2V[\x90P_\x81\x11a\n(W`@QcH\xB5\0#`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\n4`d\x83a\x18\tV[\x90P_\x81\x11a\nVW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n_\x8Ba\x11\xD0V[a\nga\x11\xE1V[a\noa\x11\xE9V[a\nwa\x11\xE1V[a\n\x7Fa\x11\xF9V[a\n\x89_\x8Ca\x0BCV[Pa\n\xA1_Q` a\x19M_9_Q\x90_R\x89a\x0BCV[P_\x80T`\x01`\x01`\xA0\x1B\x03\x80\x8D\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x8C\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90U`\x03\x81\x90Ua\n\xE3b\x01Q\x80Ba\x18\tV[`\x04UPP\x83\x15a\x0B.W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x05}\x813a\x12\tV[__Q` a\x19m_9_Q\x90_Ra\x0B\\\x84\x84a\x07\x7FV[a\x0B\xDBW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0B\x913\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x04\xDEV[_\x91PPa\x04\xDEV[__Q` a\x19m_9_Q\x90_Ra\x0B\xFD\x84\x84a\x07\x7FV[\x15a\x0B\xDBW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x04\xDEV[a\x0Cea\x12BV[_Q` a\x19\x8D_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\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\x16\x14\x80a\rCWP\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`\x01`\x01`\xA0\x1B\x03\x16a\r7_Q` a\x19-_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x07^W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\ria\x10\xBDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x0C\xB2V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\r\xFCWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\r\xF9\x91\x81\x01\x90a\x17\xF2V[`\x01[a\x0E$W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x08gV[_Q` a\x19-_9_Q\x90_R\x81\x14a\x0ETW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08gV[a\x05Y\x83\x83a\x12qV[0`\x01`\x01`\xA0\x1B\x03\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\x16\x14a\x07^W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` a\x19\x8D_9_Q\x90_RT`\xFF\x16\x15a\x07^W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\x80T`\x01\x19\x01a\x0F\x1BW`@Qc>\xE5\xAE\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x90UV[_a\x0F/b\x01Q\x80Ba\x18\tV[\x90P`\x04T\x81\x14a\x0FDW`\x04\x81\x90U_`\x05U[\x81`\x05_\x82\x82Ta\x0FU\x91\x90a\x18(V[\x90\x91UPP`\x03T`\x05T\x11\x15a\x05\x9BW`@Qc\x06R\xF4\xC5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___\x83\x80` \x01\x90Q\x81\x01\x90a\x0F\x96\x91\x90a\x18|V[\x91P\x91P_a\x0F\xA63\x87\x85a\x12\xC6V[\x82Q` \x80\x85\x01Q`@\x80\x87\x01Q``\x80\x89\x01Q`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`\xC0\x80\x8F\x01Q\x89Q\x9B\x8C\x01\x8E\x90R\x98\x8B\x01\x9B\x90\x9BR\x94\x89\x01\x97\x90\x97R\x90\x87\x01\x93\x90\x93R\x93\x85\x01\x93\x90\x93R\x93\x83\x01\x93\x90\x93R`\xE0\x82\x01Ra\x01\0\x81\x01\x91\x90\x91R\x90\x91P_\x90a\x01 \x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x01Tc\x130e\x1D`\xE3\x1B\x85R\x92Q\x90\x94P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x92c\x99\x83(\xE8\x92`\x04\x80\x83\x01\x93\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10hW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x8C\x91\x90a\x17\xF2V[\x14\x96\x95PPPPPPV[`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0UV[3a\x10\xEF\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07^W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x08gV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x11\x90a\x0E\xA7V[_Q` a\x19\x8D_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\x0C\x9EV[a\x11\xD8a\x13AV[a\x05}\x81a\x13\x8AV[a\x07^a\x13AV[a\x11\xF1a\x13AV[a\x07^a\x13\x92V[a\x12\x01a\x13AV[a\x07^a\x13\xB2V[a\x12\x13\x82\x82a\x07\x7FV[a\x05\x9BW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08gV[_Q` a\x19\x8D_9_Q\x90_RT`\xFF\x16a\x07^W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12z\x82a\x13\xBAV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x12\xBEWa\x05Y\x82\x82a\x14\x1DV[a\x05\x9Ba\x14\x8FV[__a\x12\xD1\x84a\x14\xAEV[\x90P_[`\xA0\x81\x10\x15a\x136W_\x84\x82`\xA0\x81\x10a\x12\xF1Wa\x12\xF1a\x19\x02V[` \x02\x01Q\x90P`\x01\x87\x83\x1C\x16\x80\x15a\x13\x1AW`@\x80Q\x83\x81R` \x81\x01\x86\x90R \x93Pa\x13,V[`@\x80Q\x85\x81R` \x81\x01\x84\x90R \x93P[PP`\x01\x01a\x12\xD5V[P\x90P[\x93\x92PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x07^W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08Ba\x13AV[a\x13\x9Aa\x13AV[_Q` a\x19\x8D_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a\x10\x97a\x13AV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x13\xEFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x08gV[_Q` a\x19-_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x149\x91\x90a\x19\x16V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x14qW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x14vV[``\x91P[P\x91P\x91Pa\x14\x86\x85\x83\x83a\x14\xFAV[\x95\x94PPPPPV[4\x15a\x07^W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__\x82`@Q` \x01a\x14\xC3\x91\x81R` \x01\x90V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01R\x81Q\x80\x84\x03\x82\x01\x81R\x92\x82\x01\x90\x91R\x81Q\x91\x01 \x93\x92PPPV[``\x82a\x15\x0FWa\x15\n\x82a\x15VV[a\x13:V[\x81Q\x15\x80\x15a\x15&WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x15OW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x08gV[P\x80a\x13:V[\x80Q\x15a\x15fW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a\x15\x8FW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x13:W__\xFD[_` \x82\x84\x03\x12\x15a\x15\xB6W__\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x15\xD3W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x15\xE9W__\xFD[\x825\x91Pa\x15\xF9` \x84\x01a\x15\xBDV[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\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\x16?Wa\x16?a\x16\x02V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x16VW__\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16pWa\x16pa\x16\x02V[a\x16\x83`\x1F\x82\x01`\x1F\x19\x16` \x01a\x16\x16V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x16\x97W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x16\xC4W__\xFD[a\x16\xCD\x83a\x15\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xE8W__\xFD[a\x16\xF4\x85\x82\x86\x01a\x16GV[\x91PP\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a\x17\x0FW__\xFD[\x825\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xE8W__\xFD[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x17qW__\xFD[a\x13:\x82a\x15\xBDV[____`\x80\x85\x87\x03\x12\x15a\x17\x8DW__\xFD[a\x17\x96\x85a\x15\xBDV[\x93Pa\x17\xA4` \x86\x01a\x15\xBDV[\x92Pa\x17\xB2`@\x86\x01a\x15\xBDV[\x91Pa\x17\xC0``\x86\x01a\x15\xBDV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04\xDEWa\x04\xDEa\x17\xCBV[_` \x82\x84\x03\x12\x15a\x18\x02W__\xFD[PQ\x91\x90PV[_\x82a\x18#WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x04\xDEWa\x04\xDEa\x17\xCBV[_a\x18F`\xE0a\x16\x16V[\x90P\x80`\xE0\x83\x01\x84\x81\x11\x15a\x18YW__\xFD[\x83[\x81\x81\x10\x15a\x18sW\x80Q\x83R` \x92\x83\x01\x92\x01a\x18[V[PPP\x92\x91PPV[__a\x14\xE0\x83\x85\x03\x12\x15a\x18\x8EW__\xFD[_\x84`\x1F\x85\x01\x12a\x18\x9DW__\xFD[P_\x80a\x14\0a\x18\xAC\x81a\x16\x16V[\x92P\x82\x91P\x85\x01\x86\x81\x11\x15a\x18\xBFW__\xFD[\x85[\x81\x81\x10\x15a\x18\xD9W\x80Q\x84R` \x93\x84\x01\x93\x01a\x18\xC1V[P\x81\x94P\x86a\x14\x1F\x87\x01\x12a\x18\xECW__\xFD[a\x18\xF6\x87\x82a\x18;V[\x93PPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xA1dsolcC\0\x08\x1C\0\n",
846    );
847    /// The runtime bytecode of the contract, as deployed on the network.
848    ///
849    /// ```text
850    ///0x608060405260043610610161575f3560e01c80638456cb59116100cd578063b5700e6811610087578063e63ab1e911610062578063e63ab1e914610432578063f092e13a14610452578063f2fde38b14610470578063f8c8765e1461048f575f5ffd5b8063b5700e68146103c9578063bd834345146103e8578063d547741f14610413575f5ffd5b80638456cb59146102d75780638da5cb5b146102eb57806391d148541461033b578063a217fddf1461035a578063ad3cb1cc1461036d578063b20d30a9146103aa575f5ffd5b80634f1ef2861161011e5780634f1ef2861461024557806352d1902d14610258578063549dd8c31461026c5780635c975abb1461028b57806367eeba0c146102ae578063715018a6146102c3575f5ffd5b806301ffc9a7146101655780630d8e6e2c14610199578063248a9ca3146101c45780632f2ff15d146101f157806336568abe146102125780633f4ba83a14610231575b5f5ffd5b348015610170575f5ffd5b5061018461017f36600461157f565b6104ae565b60405190151581526020015b60405180910390f35b3480156101a4575f5ffd5b5060408051600181525f6020820181905291810191909152606001610190565b3480156101cf575f5ffd5b506101e36101de3660046115a6565b6104e4565b604051908152602001610190565b3480156101fc575f5ffd5b5061021061020b3660046115d8565b610504565b005b34801561021d575f5ffd5b5061021061022c3660046115d8565b610526565b34801561023c575f5ffd5b5061021061055e565b6102106102533660046116b3565b610580565b348015610263575f5ffd5b506101e361059f565b348015610277575f5ffd5b506102106102863660046116fe565b6105ba565b348015610296575f5ffd5b505f51602061198d5f395f51905f525460ff16610184565b3480156102b9575f5ffd5b506101e360035481565b3480156102ce575f5ffd5b5061021061074d565b3480156102e2575f5ffd5b50610210610760565b3480156102f6575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610190565b348015610346575f5ffd5b506101846103553660046115d8565b61077f565b348015610365575f5ffd5b506101e35f81565b348015610378575f5ffd5b5061039d604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610190919061172c565b3480156103b5575f5ffd5b506102106103c43660046115a6565b6107b5565b3480156103d4575f5ffd5b50600154610323906001600160a01b031681565b3480156103f3575f5ffd5b506101e3610402366004611761565b60026020525f908152604090205481565b34801561041e575f5ffd5b5061021061042d3660046115d8565b61081e565b34801561043d575f5ffd5b506101e35f51602061194d5f395f51905f5281565b34801561045d575f5ffd5b505f54610323906001600160a01b031681565b34801561047b575f5ffd5b5061021061048a366004611761565b61083a565b34801561049a575f5ffd5b506102106104a936600461177a565b610879565b5f6001600160e01b03198216637965db0b60e01b14806104de57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f9081525f51602061196d5f395f51905f52602052604090206001015490565b61050d826104e4565b61051681610b39565b6105208383610b43565b50505050565b6001600160a01b038116331461054f5760405163334bd91960e11b815260040160405180910390fd5b6105598282610be4565b505050565b5f51602061194d5f395f51905f5261057581610b39565b61057d610c5d565b50565b610588610cbd565b61059182610d61565b61059b8282610da2565b5050565b5f6105a8610e5e565b505f51602061192d5f395f51905f5290565b6105c2610ea7565b6105ca610ed7565b815f036105ea57604051633853986560e01b815260040160405180910390fd5b335f81815260026020526040902054831161061857604051630c8d9eab60e31b815260040160405180910390fd5b6001600160a01b0381165f9081526002602052604081205461063a90856117df565b905061064581610f21565b61064f8484610f7f565b61066c57604051630651710f60e31b815260040160405180910390fd5b6001600160a01b038281165f81815260026020526040808220889055905490516340c10f1960e01b8152600481019290925260248201849052909116906340c10f19906044015f604051808303815f87803b1580156106c9575f5ffd5b505af11580156106db573d5f5f3e3d5ffd5b50505050816001600160a01b03167ffc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe8260405161071a91815260200190565b60405180910390a2505061059b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b6107556110bd565b61075e5f611118565b565b5f51602061194d5f395f51905f5261077781610b39565b61057d611188565b5f9182525f51602061196d5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6107bd6110bd565b5f81116107dd57604051639b11a8bd60e01b815260040160405180910390fd5b60035460408051918252602082018390527f207c4cbdf55ec315a13f0d5e047732ec5d947da056e706593aa509909941cedf910160405180910390a1600355565b610827826104e4565b61083081610b39565b6105208383610be4565b6108426110bd565b6001600160a01b03811661087057604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61057d81611118565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156108be5750825b90505f8267ffffffffffffffff1660011480156108da5750303b155b9050811580156108e8575080155b156109065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561093057845460ff60401b1916600160401b1785555b6001600160a01b0387166109575760405163fcabddbd60e01b815260040160405180910390fd5b6001600160a01b03861661097e5760405163a74995ab60e01b815260040160405180910390fd5b6001600160a01b0388166109a557604051636b093aad60e01b815260040160405180910390fd5b5f886001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109e2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a0691906117f2565b90505f8111610a28576040516348b5002360e01b815260040160405180910390fd5b5f610a34606483611809565b90505f8111610a5657604051639b11a8bd60e01b815260040160405180910390fd5b610a5f8b6111d0565b610a676111e1565b610a6f6111e9565b610a776111e1565b610a7f6111f9565b610a895f8c610b43565b50610aa15f51602061194d5f395f51905f5289610b43565b505f80546001600160a01b03808d166001600160a01b03199283161790925560018054928c16929091169190911790556003819055610ae36201518042611809565b60045550508315610b2e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61057d8133611209565b5f5f51602061196d5f395f51905f52610b5c848461077f565b610bdb575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610b913390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506104de565b5f9150506104de565b5f5f51602061196d5f395f51905f52610bfd848461077f565b15610bdb575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506104de565b610c65611242565b5f51602061198d5f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b0390911681526020015b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610d4357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610d375f51602061192d5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561075e5760405163703e46dd60e11b815260040160405180910390fd5b610d696110bd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610cb2565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610dfc575060408051601f3d908101601f19168201909252610df9918101906117f2565b60015b610e2457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610867565b5f51602061192d5f395f51905f528114610e5457604051632a87526960e21b815260048101829052602401610867565b6105598383611271565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461075e5760405163703e46dd60e11b815260040160405180910390fd5b5f51602061198d5f395f51905f525460ff161561075e5760405163d93c066560e01b815260040160405180910390fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00805460011901610f1b57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f610f2f6201518042611809565b90506004548114610f445760048190555f6005555b8160055f828254610f559190611828565b9091555050600354600554111561059b57604051630652f4c560e21b815260040160405180910390fd5b5f5f5f83806020019051810190610f96919061187c565b915091505f610fa63387856112c6565b82516020808501516040808701516060808901516080808b015160a0808d015160c0808f015189519b8c018e9052988b019b909b529489019790975290870193909352938501939093529383019390935260e08201526101008101919091529091505f906101200160408051601f198184030181528282528051602091820120600154631330651d60e31b855292519094506001600160a01b039092169263998328e892600480830193928290030181865afa158015611068573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061108c91906117f2565b149695505050505050565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b336110ef7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161461075e5760405163118cdaa760e01b8152336004820152602401610867565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611190610ea7565b5f51602061198d5f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25833610c9e565b6111d8611341565b61057d8161138a565b61075e611341565b6111f1611341565b61075e611392565b611201611341565b61075e6113b2565b611213828261077f565b61059b5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610867565b5f51602061198d5f395f51905f525460ff1661075e57604051638dfc202b60e01b815260040160405180910390fd5b61127a826113ba565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156112be57610559828261141d565b61059b61148f565b5f5f6112d1846114ae565b90505f5b60a0811015611336575f848260a081106112f1576112f1611902565b60200201519050600187831c16801561131a57604080518381526020810186905220935061132c565b60408051858152602081018490522093505b50506001016112d5565b5090505b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661075e57604051631afcd79f60e31b815260040160405180910390fd5b610842611341565b61139a611341565b5f51602061198d5f395f51905f52805460ff19169055565b611097611341565b806001600160a01b03163b5f036113ef57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610867565b5f51602061192d5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516114399190611916565b5f60405180830381855af49150503d805f8114611471576040519150601f19603f3d011682016040523d82523d5f602084013e611476565b606091505b50915091506114868583836114fa565b95945050505050565b341561075e5760405163b398979f60e01b815260040160405180910390fd5b5f5f826040516020016114c391815260200190565b60408051808303601f1901815282825280516020918201208184015281518084038201815292820190915281519101209392505050565b60608261150f5761150a82611556565b61133a565b815115801561152657506001600160a01b0384163b155b1561154f57604051639996b31560e01b81526001600160a01b0385166004820152602401610867565b508061133a565b8051156115665780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f6020828403121561158f575f5ffd5b81356001600160e01b03198116811461133a575f5ffd5b5f602082840312156115b6575f5ffd5b5035919050565b80356001600160a01b03811681146115d3575f5ffd5b919050565b5f5f604083850312156115e9575f5ffd5b823591506115f9602084016115bd565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561163f5761163f611602565b604052919050565b5f82601f830112611656575f5ffd5b813567ffffffffffffffff81111561167057611670611602565b611683601f8201601f1916602001611616565b818152846020838601011115611697575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156116c4575f5ffd5b6116cd836115bd565b9150602083013567ffffffffffffffff8111156116e8575f5ffd5b6116f485828601611647565b9150509250929050565b5f5f6040838503121561170f575f5ffd5b82359150602083013567ffffffffffffffff8111156116e8575f5ffd5b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f60208284031215611771575f5ffd5b61133a826115bd565b5f5f5f5f6080858703121561178d575f5ffd5b611796856115bd565b93506117a4602086016115bd565b92506117b2604086016115bd565b91506117c0606086016115bd565b905092959194509250565b634e487b7160e01b5f52601160045260245ffd5b818103818111156104de576104de6117cb565b5f60208284031215611802575f5ffd5b5051919050565b5f8261182357634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104de576104de6117cb565b5f61184660e0611616565b90508060e0830184811115611859575f5ffd5b835b8181101561187357805183526020928301920161185b565b50505092915050565b5f5f6114e0838503121561188e575f5ffd5b5f84601f85011261189d575f5ffd5b505f806114006118ac81611616565b92508291508501868111156118bf575f5ffd5b855b818110156118d95780518452602093840193016118c1565b508194508661141f8701126118ec575f5ffd5b6118f6878261183b565b93505050509250929050565b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a164736f6c634300081c000a
851    /// ```
852    #[rustfmt::skip]
853    #[allow(clippy::all)]
854    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
855        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80c\x84V\xCBY\x11a\0\xCDW\x80c\xB5p\x0Eh\x11a\0\x87W\x80c\xE6:\xB1\xE9\x11a\0bW\x80c\xE6:\xB1\xE9\x14a\x042W\x80c\xF0\x92\xE1:\x14a\x04RW\x80c\xF2\xFD\xE3\x8B\x14a\x04pW\x80c\xF8\xC8v^\x14a\x04\x8FW__\xFD[\x80c\xB5p\x0Eh\x14a\x03\xC9W\x80c\xBD\x83CE\x14a\x03\xE8W\x80c\xD5Gt\x1F\x14a\x04\x13W__\xFD[\x80c\x84V\xCBY\x14a\x02\xD7W\x80c\x8D\xA5\xCB[\x14a\x02\xEBW\x80c\x91\xD1HT\x14a\x03;W\x80c\xA2\x17\xFD\xDF\x14a\x03ZW\x80c\xAD<\xB1\xCC\x14a\x03mW\x80c\xB2\r0\xA9\x14a\x03\xAAW__\xFD[\x80cO\x1E\xF2\x86\x11a\x01\x1EW\x80cO\x1E\xF2\x86\x14a\x02EW\x80cR\xD1\x90-\x14a\x02XW\x80cT\x9D\xD8\xC3\x14a\x02lW\x80c\\\x97Z\xBB\x14a\x02\x8BW\x80cg\xEE\xBA\x0C\x14a\x02\xAEW\x80cqP\x18\xA6\x14a\x02\xC3W__\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01eW\x80c\r\x8En,\x14a\x01\x99W\x80c$\x8A\x9C\xA3\x14a\x01\xC4W\x80c//\xF1]\x14a\x01\xF1W\x80c6V\x8A\xBE\x14a\x02\x12W\x80c?K\xA8:\x14a\x021W[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x15\x7FV[a\x04\xAEV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\xA4W__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\x90V[4\x80\x15a\x01\xCFW__\xFD[Pa\x01\xE3a\x01\xDE6`\x04a\x15\xA6V[a\x04\xE4V[`@Q\x90\x81R` \x01a\x01\x90V[4\x80\x15a\x01\xFCW__\xFD[Pa\x02\x10a\x02\x0B6`\x04a\x15\xD8V[a\x05\x04V[\0[4\x80\x15a\x02\x1DW__\xFD[Pa\x02\x10a\x02,6`\x04a\x15\xD8V[a\x05&V[4\x80\x15a\x02<W__\xFD[Pa\x02\x10a\x05^V[a\x02\x10a\x02S6`\x04a\x16\xB3V[a\x05\x80V[4\x80\x15a\x02cW__\xFD[Pa\x01\xE3a\x05\x9FV[4\x80\x15a\x02wW__\xFD[Pa\x02\x10a\x02\x866`\x04a\x16\xFEV[a\x05\xBAV[4\x80\x15a\x02\x96W__\xFD[P_Q` a\x19\x8D_9_Q\x90_RT`\xFF\x16a\x01\x84V[4\x80\x15a\x02\xB9W__\xFD[Pa\x01\xE3`\x03T\x81V[4\x80\x15a\x02\xCEW__\xFD[Pa\x02\x10a\x07MV[4\x80\x15a\x02\xE2W__\xFD[Pa\x02\x10a\x07`V[4\x80\x15a\x02\xF6W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\x90V[4\x80\x15a\x03FW__\xFD[Pa\x01\x84a\x03U6`\x04a\x15\xD8V[a\x07\x7FV[4\x80\x15a\x03eW__\xFD[Pa\x01\xE3_\x81V[4\x80\x15a\x03xW__\xFD[Pa\x03\x9D`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\x90\x91\x90a\x17,V[4\x80\x15a\x03\xB5W__\xFD[Pa\x02\x10a\x03\xC46`\x04a\x15\xA6V[a\x07\xB5V[4\x80\x15a\x03\xD4W__\xFD[P`\x01Ta\x03#\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x03\xF3W__\xFD[Pa\x01\xE3a\x04\x026`\x04a\x17aV[`\x02` R_\x90\x81R`@\x90 T\x81V[4\x80\x15a\x04\x1EW__\xFD[Pa\x02\x10a\x04-6`\x04a\x15\xD8V[a\x08\x1EV[4\x80\x15a\x04=W__\xFD[Pa\x01\xE3_Q` a\x19M_9_Q\x90_R\x81V[4\x80\x15a\x04]W__\xFD[P_Ta\x03#\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x04{W__\xFD[Pa\x02\x10a\x04\x8A6`\x04a\x17aV[a\x08:V[4\x80\x15a\x04\x9AW__\xFD[Pa\x02\x10a\x04\xA96`\x04a\x17zV[a\x08yV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\xDEWPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[_\x90\x81R_Q` a\x19m_9_Q\x90_R` R`@\x90 `\x01\x01T\x90V[a\x05\r\x82a\x04\xE4V[a\x05\x16\x81a\x0B9V[a\x05 \x83\x83a\x0BCV[PPPPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x05OW`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x05Y\x82\x82a\x0B\xE4V[PPPV[_Q` a\x19M_9_Q\x90_Ra\x05u\x81a\x0B9V[a\x05}a\x0C]V[PV[a\x05\x88a\x0C\xBDV[a\x05\x91\x82a\raV[a\x05\x9B\x82\x82a\r\xA2V[PPV[_a\x05\xA8a\x0E^V[P_Q` a\x19-_9_Q\x90_R\x90V[a\x05\xC2a\x0E\xA7V[a\x05\xCAa\x0E\xD7V[\x81_\x03a\x05\xEAW`@Qc8S\x98e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[3_\x81\x81R`\x02` R`@\x90 T\x83\x11a\x06\x18W`@Qc\x0C\x8D\x9E\xAB`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x16_\x90\x81R`\x02` R`@\x81 Ta\x06:\x90\x85a\x17\xDFV[\x90Pa\x06E\x81a\x0F!V[a\x06O\x84\x84a\x0F\x7FV[a\x06lW`@Qc\x06Qq\x0F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x82\x81\x16_\x81\x81R`\x02` R`@\x80\x82 \x88\x90U\x90T\x90Qc@\xC1\x0F\x19`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01\x84\x90R\x90\x91\x16\x90c@\xC1\x0F\x19\x90`D\x01_`@Q\x80\x83\x03\x81_\x87\x80;\x15\x80\x15a\x06\xC9W__\xFD[PZ\xF1\x15\x80\x15a\x06\xDBW=__>=_\xFD[PPPP\x81`\x01`\x01`\xA0\x1B\x03\x16\x7F\xFC0\xCD\xDE\xA3\x8E+\xF4\xD6\xEA}?\x9E\xD3\xB6\xAD\x7F\x17d\x19\xF4\x96;\xD8\x13\x18\x06zJ\xEEs\xFE\x82`@Qa\x07\x1A\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2PPa\x05\x9B`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0UV[a\x07Ua\x10\xBDV[a\x07^_a\x11\x18V[V[_Q` a\x19M_9_Q\x90_Ra\x07w\x81a\x0B9V[a\x05}a\x11\x88V[_\x91\x82R_Q` a\x19m_9_Q\x90_R` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[a\x07\xBDa\x10\xBDV[_\x81\x11a\x07\xDDW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x03T`@\x80Q\x91\x82R` \x82\x01\x83\x90R\x7F |L\xBD\xF5^\xC3\x15\xA1?\r^\x04w2\xEC]\x94}\xA0V\xE7\x06Y:\xA5\t\x90\x99A\xCE\xDF\x91\x01`@Q\x80\x91\x03\x90\xA1`\x03UV[a\x08'\x82a\x04\xE4V[a\x080\x81a\x0B9V[a\x05 \x83\x83a\x0B\xE4V[a\x08Ba\x10\xBDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x08pW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x05}\x81a\x11\x18V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16_\x81\x15\x80\x15a\x08\xBEWP\x82[\x90P_\x82g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`\x01\x14\x80\x15a\x08\xDAWP0;\x15[\x90P\x81\x15\x80\x15a\x08\xE8WP\x80\x15[\x15a\t\x06W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\t0W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[`\x01`\x01`\xA0\x1B\x03\x87\x16a\tWW`@Qc\xFC\xAB\xDD\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x16a\t~W`@Qc\xA7I\x95\xAB`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x88\x16a\t\xA5W`@Qck\t:\xAD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x88`\x01`\x01`\xA0\x1B\x03\x16c\x18\x16\r\xDD`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\t\xE2W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\x06\x91\x90a\x17\xF2V[\x90P_\x81\x11a\n(W`@QcH\xB5\0#`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\n4`d\x83a\x18\tV[\x90P_\x81\x11a\nVW`@Qc\x9B\x11\xA8\xBD`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\n_\x8Ba\x11\xD0V[a\nga\x11\xE1V[a\noa\x11\xE9V[a\nwa\x11\xE1V[a\n\x7Fa\x11\xF9V[a\n\x89_\x8Ca\x0BCV[Pa\n\xA1_Q` a\x19M_9_Q\x90_R\x89a\x0BCV[P_\x80T`\x01`\x01`\xA0\x1B\x03\x80\x8D\x16`\x01`\x01`\xA0\x1B\x03\x19\x92\x83\x16\x17\x90\x92U`\x01\x80T\x92\x8C\x16\x92\x90\x91\x16\x91\x90\x91\x17\x90U`\x03\x81\x90Ua\n\xE3b\x01Q\x80Ba\x18\tV[`\x04UPP\x83\x15a\x0B.W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x05}\x813a\x12\tV[__Q` a\x19m_9_Q\x90_Ra\x0B\\\x84\x84a\x07\x7FV[a\x0B\xDBW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0B\x913\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x83`\x01`\x01`\xA0\x1B\x03\x16\x85\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4`\x01\x91PPa\x04\xDEV[_\x91PPa\x04\xDEV[__Q` a\x19m_9_Q\x90_Ra\x0B\xFD\x84\x84a\x07\x7FV[\x15a\x0B\xDBW_\x84\x81R` \x82\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x87\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x87\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4`\x01\x91PPa\x04\xDEV[a\x0Cea\x12BV[_Q` a\x19\x8D_9_Q\x90_R\x80T`\xFF\x19\x16\x81U\x7F]\xB9\xEE\nI[\xF2\xE6\xFF\x9C\x91\xA7\x83L\x1B\xA4\xFD\xD2D\xA5\xE8\xAANS{\xD3\x8A\xEA\xE4\xB0s\xAA3[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01[`@Q\x80\x91\x03\x90\xA1PV[0`\x01`\x01`\xA0\x1B\x03\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\x16\x14\x80a\rCWP\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`\x01`\x01`\xA0\x1B\x03\x16a\r7_Q` a\x19-_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x07^W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\ria\x10\xBDV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x0C\xB2V[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\r\xFCWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\r\xF9\x91\x81\x01\x90a\x17\xF2V[`\x01[a\x0E$W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x08gV[_Q` a\x19-_9_Q\x90_R\x81\x14a\x0ETW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08gV[a\x05Y\x83\x83a\x12qV[0`\x01`\x01`\xA0\x1B\x03\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\x16\x14a\x07^W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_Q` a\x19\x8D_9_Q\x90_RT`\xFF\x16\x15a\x07^W`@Qc\xD9<\x06e`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0\x80T`\x01\x19\x01a\x0F\x1BW`@Qc>\xE5\xAE\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x02\x90UV[_a\x0F/b\x01Q\x80Ba\x18\tV[\x90P`\x04T\x81\x14a\x0FDW`\x04\x81\x90U_`\x05U[\x81`\x05_\x82\x82Ta\x0FU\x91\x90a\x18(V[\x90\x91UPP`\x03T`\x05T\x11\x15a\x05\x9BW`@Qc\x06R\xF4\xC5`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[___\x83\x80` \x01\x90Q\x81\x01\x90a\x0F\x96\x91\x90a\x18|V[\x91P\x91P_a\x0F\xA63\x87\x85a\x12\xC6V[\x82Q` \x80\x85\x01Q`@\x80\x87\x01Q``\x80\x89\x01Q`\x80\x80\x8B\x01Q`\xA0\x80\x8D\x01Q`\xC0\x80\x8F\x01Q\x89Q\x9B\x8C\x01\x8E\x90R\x98\x8B\x01\x9B\x90\x9BR\x94\x89\x01\x97\x90\x97R\x90\x87\x01\x93\x90\x93R\x93\x85\x01\x93\x90\x93R\x93\x83\x01\x93\x90\x93R`\xE0\x82\x01Ra\x01\0\x81\x01\x91\x90\x91R\x90\x91P_\x90a\x01 \x01`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 `\x01Tc\x130e\x1D`\xE3\x1B\x85R\x92Q\x90\x94P`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x92c\x99\x83(\xE8\x92`\x04\x80\x83\x01\x93\x92\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10hW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\x8C\x91\x90a\x17\xF2V[\x14\x96\x95PPPPPPV[`\x01\x7F\x9Bw\x9B\x17B-\r\xF9\"#\x01\x8B2\xB4\xD1\xFAF\xE0qr=h\x17\xE2Hm\0;\xEC\xC5_\0UV[3a\x10\xEF\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07^W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x08gV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x11\x90a\x0E\xA7V[_Q` a\x19\x8D_9_Q\x90_R\x80T`\xFF\x19\x16`\x01\x17\x81U\x7Fb\xE7\x8C\xEA\x01\xBE\xE3 \xCDNB\x02p\xB5\xEAt\0\r\x11\xB0\xC9\xF7GT\xEB\xDB\xFCTK\x05\xA2X3a\x0C\x9EV[a\x11\xD8a\x13AV[a\x05}\x81a\x13\x8AV[a\x07^a\x13AV[a\x11\xF1a\x13AV[a\x07^a\x13\x92V[a\x12\x01a\x13AV[a\x07^a\x13\xB2V[a\x12\x13\x82\x82a\x07\x7FV[a\x05\x9BW`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08gV[_Q` a\x19\x8D_9_Q\x90_RT`\xFF\x16a\x07^W`@Qc\x8D\xFC +`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x12z\x82a\x13\xBAV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\x12\xBEWa\x05Y\x82\x82a\x14\x1DV[a\x05\x9Ba\x14\x8FV[__a\x12\xD1\x84a\x14\xAEV[\x90P_[`\xA0\x81\x10\x15a\x136W_\x84\x82`\xA0\x81\x10a\x12\xF1Wa\x12\xF1a\x19\x02V[` \x02\x01Q\x90P`\x01\x87\x83\x1C\x16\x80\x15a\x13\x1AW`@\x80Q\x83\x81R` \x81\x01\x86\x90R \x93Pa\x13,V[`@\x80Q\x85\x81R` \x81\x01\x84\x90R \x93P[PP`\x01\x01a\x12\xD5V[P\x90P[\x93\x92PPPV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\x07^W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08Ba\x13AV[a\x13\x9Aa\x13AV[_Q` a\x19\x8D_9_Q\x90_R\x80T`\xFF\x19\x16\x90UV[a\x10\x97a\x13AV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x13\xEFW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x08gV[_Q` a\x19-_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa\x149\x91\x90a\x19\x16V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x14qW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x14vV[``\x91P[P\x91P\x91Pa\x14\x86\x85\x83\x83a\x14\xFAV[\x95\x94PPPPPV[4\x15a\x07^W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[__\x82`@Q` \x01a\x14\xC3\x91\x81R` \x01\x90V[`@\x80Q\x80\x83\x03`\x1F\x19\x01\x81R\x82\x82R\x80Q` \x91\x82\x01 \x81\x84\x01R\x81Q\x80\x84\x03\x82\x01\x81R\x92\x82\x01\x90\x91R\x81Q\x91\x01 \x93\x92PPPV[``\x82a\x15\x0FWa\x15\n\x82a\x15VV[a\x13:V[\x81Q\x15\x80\x15a\x15&WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x15OW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x08gV[P\x80a\x13:V[\x80Q\x15a\x15fW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_` \x82\x84\x03\x12\x15a\x15\x8FW__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x13:W__\xFD[_` \x82\x84\x03\x12\x15a\x15\xB6W__\xFD[P5\x91\x90PV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x15\xD3W__\xFD[\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x15\xE9W__\xFD[\x825\x91Pa\x15\xF9` \x84\x01a\x15\xBDV[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\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\x16?Wa\x16?a\x16\x02V[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x16VW__\xFD[\x815g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16pWa\x16pa\x16\x02V[a\x16\x83`\x1F\x82\x01`\x1F\x19\x16` \x01a\x16\x16V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x16\x97W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[__`@\x83\x85\x03\x12\x15a\x16\xC4W__\xFD[a\x16\xCD\x83a\x15\xBDV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xE8W__\xFD[a\x16\xF4\x85\x82\x86\x01a\x16GV[\x91PP\x92P\x92\x90PV[__`@\x83\x85\x03\x12\x15a\x17\x0FW__\xFD[\x825\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x16\xE8W__\xFD[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x17qW__\xFD[a\x13:\x82a\x15\xBDV[____`\x80\x85\x87\x03\x12\x15a\x17\x8DW__\xFD[a\x17\x96\x85a\x15\xBDV[\x93Pa\x17\xA4` \x86\x01a\x15\xBDV[\x92Pa\x17\xB2`@\x86\x01a\x15\xBDV[\x91Pa\x17\xC0``\x86\x01a\x15\xBDV[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x04\xDEWa\x04\xDEa\x17\xCBV[_` \x82\x84\x03\x12\x15a\x18\x02W__\xFD[PQ\x91\x90PV[_\x82a\x18#WcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x04\x90V[\x80\x82\x01\x80\x82\x11\x15a\x04\xDEWa\x04\xDEa\x17\xCBV[_a\x18F`\xE0a\x16\x16V[\x90P\x80`\xE0\x83\x01\x84\x81\x11\x15a\x18YW__\xFD[\x83[\x81\x81\x10\x15a\x18sW\x80Q\x83R` \x92\x83\x01\x92\x01a\x18[V[PPP\x92\x91PPV[__a\x14\xE0\x83\x85\x03\x12\x15a\x18\x8EW__\xFD[_\x84`\x1F\x85\x01\x12a\x18\x9DW__\xFD[P_\x80a\x14\0a\x18\xAC\x81a\x16\x16V[\x92P\x82\x91P\x85\x01\x86\x81\x11\x15a\x18\xBFW__\xFD[\x85[\x81\x81\x10\x15a\x18\xD9W\x80Q\x84R` \x93\x84\x01\x93\x01a\x18\xC1V[P\x81\x94P\x86a\x14\x1F\x87\x01\x12a\x18\xECW__\xFD[a\x18\xF6\x87\x82a\x18;V[\x93PPPP\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBCe\xD7\xA2\x8E2e\xB3zdt\x92\x9F3e!\xB32\xC1h\x1B\x93?l\xB9\xF37fsD\r\x86*\x02\xDD{\xC7\xDE\xC4\xDC\xEE\xDD\xA7u\xE5\x8D\xD5A\xE0\x8A\x11llS\x81\\\x0B\xD0(\x19/{bh\0\xCD^\xD1\\n\x18~w\xE9\xAE\xE8\x81\x84\xC2\x1FO!\x82\xABX'\xCB;~\x07\xFB\xED\xCDc\xF03\0\xA1dsolcC\0\x08\x1C\0\n",
856    );
857    #[derive(serde::Serialize, serde::Deserialize)]
858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
859    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
860```solidity
861error AccessControlBadConfirmation();
862```*/
863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
864    #[derive(Clone)]
865    pub struct AccessControlBadConfirmation;
866    #[allow(
867        non_camel_case_types,
868        non_snake_case,
869        clippy::pub_underscore_fields,
870        clippy::style
871    )]
872    const _: () = {
873        use alloy::sol_types as alloy_sol_types;
874        #[doc(hidden)]
875        type UnderlyingSolTuple<'a> = ();
876        #[doc(hidden)]
877        type UnderlyingRustTuple<'a> = ();
878        #[cfg(test)]
879        #[allow(dead_code, unreachable_patterns)]
880        fn _type_assertion(
881            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
882        ) {
883            match _t {
884                alloy_sol_types::private::AssertTypeEq::<
885                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
886                >(_) => {}
887            }
888        }
889        #[automatically_derived]
890        #[doc(hidden)]
891        impl ::core::convert::From<AccessControlBadConfirmation>
892        for UnderlyingRustTuple<'_> {
893            fn from(value: AccessControlBadConfirmation) -> Self {
894                ()
895            }
896        }
897        #[automatically_derived]
898        #[doc(hidden)]
899        impl ::core::convert::From<UnderlyingRustTuple<'_>>
900        for AccessControlBadConfirmation {
901            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
902                Self
903            }
904        }
905        #[automatically_derived]
906        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
907            type Parameters<'a> = UnderlyingSolTuple<'a>;
908            type Token<'a> = <Self::Parameters<
909                'a,
910            > as alloy_sol_types::SolType>::Token<'a>;
911            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
912            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
913            #[inline]
914            fn new<'a>(
915                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
916            ) -> Self {
917                tuple.into()
918            }
919            #[inline]
920            fn tokenize(&self) -> Self::Token<'_> {
921                ()
922            }
923            #[inline]
924            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
925                <Self::Parameters<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
928                    .map(Self::new)
929            }
930        }
931    };
932    #[derive(serde::Serialize, serde::Deserialize)]
933    #[derive(Default, Debug, PartialEq, Eq, Hash)]
934    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
935```solidity
936error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
937```*/
938    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
939    #[derive(Clone)]
940    pub struct AccessControlUnauthorizedAccount {
941        #[allow(missing_docs)]
942        pub account: alloy::sol_types::private::Address,
943        #[allow(missing_docs)]
944        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
945    }
946    #[allow(
947        non_camel_case_types,
948        non_snake_case,
949        clippy::pub_underscore_fields,
950        clippy::style
951    )]
952    const _: () = {
953        use alloy::sol_types as alloy_sol_types;
954        #[doc(hidden)]
955        type UnderlyingSolTuple<'a> = (
956            alloy::sol_types::sol_data::Address,
957            alloy::sol_types::sol_data::FixedBytes<32>,
958        );
959        #[doc(hidden)]
960        type UnderlyingRustTuple<'a> = (
961            alloy::sol_types::private::Address,
962            alloy::sol_types::private::FixedBytes<32>,
963        );
964        #[cfg(test)]
965        #[allow(dead_code, unreachable_patterns)]
966        fn _type_assertion(
967            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
968        ) {
969            match _t {
970                alloy_sol_types::private::AssertTypeEq::<
971                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
972                >(_) => {}
973            }
974        }
975        #[automatically_derived]
976        #[doc(hidden)]
977        impl ::core::convert::From<AccessControlUnauthorizedAccount>
978        for UnderlyingRustTuple<'_> {
979            fn from(value: AccessControlUnauthorizedAccount) -> Self {
980                (value.account, value.neededRole)
981            }
982        }
983        #[automatically_derived]
984        #[doc(hidden)]
985        impl ::core::convert::From<UnderlyingRustTuple<'_>>
986        for AccessControlUnauthorizedAccount {
987            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
988                Self {
989                    account: tuple.0,
990                    neededRole: tuple.1,
991                }
992            }
993        }
994        #[automatically_derived]
995        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
996            type Parameters<'a> = UnderlyingSolTuple<'a>;
997            type Token<'a> = <Self::Parameters<
998                'a,
999            > as alloy_sol_types::SolType>::Token<'a>;
1000            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
1001            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
1002            #[inline]
1003            fn new<'a>(
1004                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1005            ) -> Self {
1006                tuple.into()
1007            }
1008            #[inline]
1009            fn tokenize(&self) -> Self::Token<'_> {
1010                (
1011                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1012                        &self.account,
1013                    ),
1014                    <alloy::sol_types::sol_data::FixedBytes<
1015                        32,
1016                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
1017                )
1018            }
1019            #[inline]
1020            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1021                <Self::Parameters<
1022                    '_,
1023                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1024                    .map(Self::new)
1025            }
1026        }
1027    };
1028    #[derive(serde::Serialize, serde::Deserialize)]
1029    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1030    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
1031```solidity
1032error AddressEmptyCode(address target);
1033```*/
1034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1035    #[derive(Clone)]
1036    pub struct AddressEmptyCode {
1037        #[allow(missing_docs)]
1038        pub target: alloy::sol_types::private::Address,
1039    }
1040    #[allow(
1041        non_camel_case_types,
1042        non_snake_case,
1043        clippy::pub_underscore_fields,
1044        clippy::style
1045    )]
1046    const _: () = {
1047        use alloy::sol_types as alloy_sol_types;
1048        #[doc(hidden)]
1049        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1050        #[doc(hidden)]
1051        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1052        #[cfg(test)]
1053        #[allow(dead_code, unreachable_patterns)]
1054        fn _type_assertion(
1055            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1056        ) {
1057            match _t {
1058                alloy_sol_types::private::AssertTypeEq::<
1059                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1060                >(_) => {}
1061            }
1062        }
1063        #[automatically_derived]
1064        #[doc(hidden)]
1065        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
1066            fn from(value: AddressEmptyCode) -> Self {
1067                (value.target,)
1068            }
1069        }
1070        #[automatically_derived]
1071        #[doc(hidden)]
1072        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
1073            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1074                Self { target: tuple.0 }
1075            }
1076        }
1077        #[automatically_derived]
1078        impl alloy_sol_types::SolError for AddressEmptyCode {
1079            type Parameters<'a> = UnderlyingSolTuple<'a>;
1080            type Token<'a> = <Self::Parameters<
1081                'a,
1082            > as alloy_sol_types::SolType>::Token<'a>;
1083            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
1084            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
1085            #[inline]
1086            fn new<'a>(
1087                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1088            ) -> Self {
1089                tuple.into()
1090            }
1091            #[inline]
1092            fn tokenize(&self) -> Self::Token<'_> {
1093                (
1094                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1095                        &self.target,
1096                    ),
1097                )
1098            }
1099            #[inline]
1100            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1101                <Self::Parameters<
1102                    '_,
1103                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1104                    .map(Self::new)
1105            }
1106        }
1107    };
1108    #[derive(serde::Serialize, serde::Deserialize)]
1109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1110    /**Custom error with signature `AlreadyClaimed()` and selector `0x646cf558`.
1111```solidity
1112error AlreadyClaimed();
1113```*/
1114    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1115    #[derive(Clone)]
1116    pub struct AlreadyClaimed;
1117    #[allow(
1118        non_camel_case_types,
1119        non_snake_case,
1120        clippy::pub_underscore_fields,
1121        clippy::style
1122    )]
1123    const _: () = {
1124        use alloy::sol_types as alloy_sol_types;
1125        #[doc(hidden)]
1126        type UnderlyingSolTuple<'a> = ();
1127        #[doc(hidden)]
1128        type UnderlyingRustTuple<'a> = ();
1129        #[cfg(test)]
1130        #[allow(dead_code, unreachable_patterns)]
1131        fn _type_assertion(
1132            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1133        ) {
1134            match _t {
1135                alloy_sol_types::private::AssertTypeEq::<
1136                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1137                >(_) => {}
1138            }
1139        }
1140        #[automatically_derived]
1141        #[doc(hidden)]
1142        impl ::core::convert::From<AlreadyClaimed> for UnderlyingRustTuple<'_> {
1143            fn from(value: AlreadyClaimed) -> Self {
1144                ()
1145            }
1146        }
1147        #[automatically_derived]
1148        #[doc(hidden)]
1149        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AlreadyClaimed {
1150            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1151                Self
1152            }
1153        }
1154        #[automatically_derived]
1155        impl alloy_sol_types::SolError for AlreadyClaimed {
1156            type Parameters<'a> = UnderlyingSolTuple<'a>;
1157            type Token<'a> = <Self::Parameters<
1158                'a,
1159            > as alloy_sol_types::SolType>::Token<'a>;
1160            const SIGNATURE: &'static str = "AlreadyClaimed()";
1161            const SELECTOR: [u8; 4] = [100u8, 108u8, 245u8, 88u8];
1162            #[inline]
1163            fn new<'a>(
1164                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1165            ) -> Self {
1166                tuple.into()
1167            }
1168            #[inline]
1169            fn tokenize(&self) -> Self::Token<'_> {
1170                ()
1171            }
1172            #[inline]
1173            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1174                <Self::Parameters<
1175                    '_,
1176                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1177                    .map(Self::new)
1178            }
1179        }
1180    };
1181    #[derive(serde::Serialize, serde::Deserialize)]
1182    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1183    /**Custom error with signature `DailyLimitExceeded()` and selector `0x194bd314`.
1184```solidity
1185error DailyLimitExceeded();
1186```*/
1187    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1188    #[derive(Clone)]
1189    pub struct DailyLimitExceeded;
1190    #[allow(
1191        non_camel_case_types,
1192        non_snake_case,
1193        clippy::pub_underscore_fields,
1194        clippy::style
1195    )]
1196    const _: () = {
1197        use alloy::sol_types as alloy_sol_types;
1198        #[doc(hidden)]
1199        type UnderlyingSolTuple<'a> = ();
1200        #[doc(hidden)]
1201        type UnderlyingRustTuple<'a> = ();
1202        #[cfg(test)]
1203        #[allow(dead_code, unreachable_patterns)]
1204        fn _type_assertion(
1205            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1206        ) {
1207            match _t {
1208                alloy_sol_types::private::AssertTypeEq::<
1209                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1210                >(_) => {}
1211            }
1212        }
1213        #[automatically_derived]
1214        #[doc(hidden)]
1215        impl ::core::convert::From<DailyLimitExceeded> for UnderlyingRustTuple<'_> {
1216            fn from(value: DailyLimitExceeded) -> Self {
1217                ()
1218            }
1219        }
1220        #[automatically_derived]
1221        #[doc(hidden)]
1222        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DailyLimitExceeded {
1223            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1224                Self
1225            }
1226        }
1227        #[automatically_derived]
1228        impl alloy_sol_types::SolError for DailyLimitExceeded {
1229            type Parameters<'a> = UnderlyingSolTuple<'a>;
1230            type Token<'a> = <Self::Parameters<
1231                'a,
1232            > as alloy_sol_types::SolType>::Token<'a>;
1233            const SIGNATURE: &'static str = "DailyLimitExceeded()";
1234            const SELECTOR: [u8; 4] = [25u8, 75u8, 211u8, 20u8];
1235            #[inline]
1236            fn new<'a>(
1237                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1238            ) -> Self {
1239                tuple.into()
1240            }
1241            #[inline]
1242            fn tokenize(&self) -> Self::Token<'_> {
1243                ()
1244            }
1245            #[inline]
1246            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1247                <Self::Parameters<
1248                    '_,
1249                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1250                    .map(Self::new)
1251            }
1252        }
1253    };
1254    #[derive(serde::Serialize, serde::Deserialize)]
1255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1256    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
1257```solidity
1258error ERC1967InvalidImplementation(address implementation);
1259```*/
1260    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1261    #[derive(Clone)]
1262    pub struct ERC1967InvalidImplementation {
1263        #[allow(missing_docs)]
1264        pub implementation: alloy::sol_types::private::Address,
1265    }
1266    #[allow(
1267        non_camel_case_types,
1268        non_snake_case,
1269        clippy::pub_underscore_fields,
1270        clippy::style
1271    )]
1272    const _: () = {
1273        use alloy::sol_types as alloy_sol_types;
1274        #[doc(hidden)]
1275        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1276        #[doc(hidden)]
1277        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1278        #[cfg(test)]
1279        #[allow(dead_code, unreachable_patterns)]
1280        fn _type_assertion(
1281            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1282        ) {
1283            match _t {
1284                alloy_sol_types::private::AssertTypeEq::<
1285                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1286                >(_) => {}
1287            }
1288        }
1289        #[automatically_derived]
1290        #[doc(hidden)]
1291        impl ::core::convert::From<ERC1967InvalidImplementation>
1292        for UnderlyingRustTuple<'_> {
1293            fn from(value: ERC1967InvalidImplementation) -> Self {
1294                (value.implementation,)
1295            }
1296        }
1297        #[automatically_derived]
1298        #[doc(hidden)]
1299        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1300        for ERC1967InvalidImplementation {
1301            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1302                Self { implementation: tuple.0 }
1303            }
1304        }
1305        #[automatically_derived]
1306        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
1307            type Parameters<'a> = UnderlyingSolTuple<'a>;
1308            type Token<'a> = <Self::Parameters<
1309                'a,
1310            > as alloy_sol_types::SolType>::Token<'a>;
1311            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
1312            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
1313            #[inline]
1314            fn new<'a>(
1315                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1316            ) -> Self {
1317                tuple.into()
1318            }
1319            #[inline]
1320            fn tokenize(&self) -> Self::Token<'_> {
1321                (
1322                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1323                        &self.implementation,
1324                    ),
1325                )
1326            }
1327            #[inline]
1328            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1329                <Self::Parameters<
1330                    '_,
1331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1332                    .map(Self::new)
1333            }
1334        }
1335    };
1336    #[derive(serde::Serialize, serde::Deserialize)]
1337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1338    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
1339```solidity
1340error ERC1967NonPayable();
1341```*/
1342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1343    #[derive(Clone)]
1344    pub struct ERC1967NonPayable;
1345    #[allow(
1346        non_camel_case_types,
1347        non_snake_case,
1348        clippy::pub_underscore_fields,
1349        clippy::style
1350    )]
1351    const _: () = {
1352        use alloy::sol_types as alloy_sol_types;
1353        #[doc(hidden)]
1354        type UnderlyingSolTuple<'a> = ();
1355        #[doc(hidden)]
1356        type UnderlyingRustTuple<'a> = ();
1357        #[cfg(test)]
1358        #[allow(dead_code, unreachable_patterns)]
1359        fn _type_assertion(
1360            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1361        ) {
1362            match _t {
1363                alloy_sol_types::private::AssertTypeEq::<
1364                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1365                >(_) => {}
1366            }
1367        }
1368        #[automatically_derived]
1369        #[doc(hidden)]
1370        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
1371            fn from(value: ERC1967NonPayable) -> Self {
1372                ()
1373            }
1374        }
1375        #[automatically_derived]
1376        #[doc(hidden)]
1377        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
1378            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1379                Self
1380            }
1381        }
1382        #[automatically_derived]
1383        impl alloy_sol_types::SolError for ERC1967NonPayable {
1384            type Parameters<'a> = UnderlyingSolTuple<'a>;
1385            type Token<'a> = <Self::Parameters<
1386                'a,
1387            > as alloy_sol_types::SolType>::Token<'a>;
1388            const SIGNATURE: &'static str = "ERC1967NonPayable()";
1389            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
1390            #[inline]
1391            fn new<'a>(
1392                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1393            ) -> Self {
1394                tuple.into()
1395            }
1396            #[inline]
1397            fn tokenize(&self) -> Self::Token<'_> {
1398                ()
1399            }
1400            #[inline]
1401            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1402                <Self::Parameters<
1403                    '_,
1404                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1405                    .map(Self::new)
1406            }
1407        }
1408    };
1409    #[derive(serde::Serialize, serde::Deserialize)]
1410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1411    /**Custom error with signature `EnforcedPause()` and selector `0xd93c0665`.
1412```solidity
1413error EnforcedPause();
1414```*/
1415    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1416    #[derive(Clone)]
1417    pub struct EnforcedPause;
1418    #[allow(
1419        non_camel_case_types,
1420        non_snake_case,
1421        clippy::pub_underscore_fields,
1422        clippy::style
1423    )]
1424    const _: () = {
1425        use alloy::sol_types as alloy_sol_types;
1426        #[doc(hidden)]
1427        type UnderlyingSolTuple<'a> = ();
1428        #[doc(hidden)]
1429        type UnderlyingRustTuple<'a> = ();
1430        #[cfg(test)]
1431        #[allow(dead_code, unreachable_patterns)]
1432        fn _type_assertion(
1433            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1434        ) {
1435            match _t {
1436                alloy_sol_types::private::AssertTypeEq::<
1437                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1438                >(_) => {}
1439            }
1440        }
1441        #[automatically_derived]
1442        #[doc(hidden)]
1443        impl ::core::convert::From<EnforcedPause> for UnderlyingRustTuple<'_> {
1444            fn from(value: EnforcedPause) -> Self {
1445                ()
1446            }
1447        }
1448        #[automatically_derived]
1449        #[doc(hidden)]
1450        impl ::core::convert::From<UnderlyingRustTuple<'_>> for EnforcedPause {
1451            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1452                Self
1453            }
1454        }
1455        #[automatically_derived]
1456        impl alloy_sol_types::SolError for EnforcedPause {
1457            type Parameters<'a> = UnderlyingSolTuple<'a>;
1458            type Token<'a> = <Self::Parameters<
1459                'a,
1460            > as alloy_sol_types::SolType>::Token<'a>;
1461            const SIGNATURE: &'static str = "EnforcedPause()";
1462            const SELECTOR: [u8; 4] = [217u8, 60u8, 6u8, 101u8];
1463            #[inline]
1464            fn new<'a>(
1465                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1466            ) -> Self {
1467                tuple.into()
1468            }
1469            #[inline]
1470            fn tokenize(&self) -> Self::Token<'_> {
1471                ()
1472            }
1473            #[inline]
1474            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1475                <Self::Parameters<
1476                    '_,
1477                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1478                    .map(Self::new)
1479            }
1480        }
1481    };
1482    #[derive(serde::Serialize, serde::Deserialize)]
1483    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1484    /**Custom error with signature `ExpectedPause()` and selector `0x8dfc202b`.
1485```solidity
1486error ExpectedPause();
1487```*/
1488    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1489    #[derive(Clone)]
1490    pub struct ExpectedPause;
1491    #[allow(
1492        non_camel_case_types,
1493        non_snake_case,
1494        clippy::pub_underscore_fields,
1495        clippy::style
1496    )]
1497    const _: () = {
1498        use alloy::sol_types as alloy_sol_types;
1499        #[doc(hidden)]
1500        type UnderlyingSolTuple<'a> = ();
1501        #[doc(hidden)]
1502        type UnderlyingRustTuple<'a> = ();
1503        #[cfg(test)]
1504        #[allow(dead_code, unreachable_patterns)]
1505        fn _type_assertion(
1506            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1507        ) {
1508            match _t {
1509                alloy_sol_types::private::AssertTypeEq::<
1510                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1511                >(_) => {}
1512            }
1513        }
1514        #[automatically_derived]
1515        #[doc(hidden)]
1516        impl ::core::convert::From<ExpectedPause> for UnderlyingRustTuple<'_> {
1517            fn from(value: ExpectedPause) -> Self {
1518                ()
1519            }
1520        }
1521        #[automatically_derived]
1522        #[doc(hidden)]
1523        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ExpectedPause {
1524            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1525                Self
1526            }
1527        }
1528        #[automatically_derived]
1529        impl alloy_sol_types::SolError for ExpectedPause {
1530            type Parameters<'a> = UnderlyingSolTuple<'a>;
1531            type Token<'a> = <Self::Parameters<
1532                'a,
1533            > as alloy_sol_types::SolType>::Token<'a>;
1534            const SIGNATURE: &'static str = "ExpectedPause()";
1535            const SELECTOR: [u8; 4] = [141u8, 252u8, 32u8, 43u8];
1536            #[inline]
1537            fn new<'a>(
1538                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1539            ) -> Self {
1540                tuple.into()
1541            }
1542            #[inline]
1543            fn tokenize(&self) -> Self::Token<'_> {
1544                ()
1545            }
1546            #[inline]
1547            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1548                <Self::Parameters<
1549                    '_,
1550                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1551                    .map(Self::new)
1552            }
1553        }
1554    };
1555    #[derive(serde::Serialize, serde::Deserialize)]
1556    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1557    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
1558```solidity
1559error FailedInnerCall();
1560```*/
1561    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1562    #[derive(Clone)]
1563    pub struct FailedInnerCall;
1564    #[allow(
1565        non_camel_case_types,
1566        non_snake_case,
1567        clippy::pub_underscore_fields,
1568        clippy::style
1569    )]
1570    const _: () = {
1571        use alloy::sol_types as alloy_sol_types;
1572        #[doc(hidden)]
1573        type UnderlyingSolTuple<'a> = ();
1574        #[doc(hidden)]
1575        type UnderlyingRustTuple<'a> = ();
1576        #[cfg(test)]
1577        #[allow(dead_code, unreachable_patterns)]
1578        fn _type_assertion(
1579            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1580        ) {
1581            match _t {
1582                alloy_sol_types::private::AssertTypeEq::<
1583                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1584                >(_) => {}
1585            }
1586        }
1587        #[automatically_derived]
1588        #[doc(hidden)]
1589        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
1590            fn from(value: FailedInnerCall) -> Self {
1591                ()
1592            }
1593        }
1594        #[automatically_derived]
1595        #[doc(hidden)]
1596        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
1597            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1598                Self
1599            }
1600        }
1601        #[automatically_derived]
1602        impl alloy_sol_types::SolError for FailedInnerCall {
1603            type Parameters<'a> = UnderlyingSolTuple<'a>;
1604            type Token<'a> = <Self::Parameters<
1605                'a,
1606            > as alloy_sol_types::SolType>::Token<'a>;
1607            const SIGNATURE: &'static str = "FailedInnerCall()";
1608            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
1609            #[inline]
1610            fn new<'a>(
1611                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1612            ) -> Self {
1613                tuple.into()
1614            }
1615            #[inline]
1616            fn tokenize(&self) -> Self::Token<'_> {
1617                ()
1618            }
1619            #[inline]
1620            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1621                <Self::Parameters<
1622                    '_,
1623                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1624                    .map(Self::new)
1625            }
1626        }
1627    };
1628    #[derive(serde::Serialize, serde::Deserialize)]
1629    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1630    /**Custom error with signature `InvalidAuthRoot()` and selector `0x328b8878`.
1631```solidity
1632error InvalidAuthRoot();
1633```*/
1634    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1635    #[derive(Clone)]
1636    pub struct InvalidAuthRoot;
1637    #[allow(
1638        non_camel_case_types,
1639        non_snake_case,
1640        clippy::pub_underscore_fields,
1641        clippy::style
1642    )]
1643    const _: () = {
1644        use alloy::sol_types as alloy_sol_types;
1645        #[doc(hidden)]
1646        type UnderlyingSolTuple<'a> = ();
1647        #[doc(hidden)]
1648        type UnderlyingRustTuple<'a> = ();
1649        #[cfg(test)]
1650        #[allow(dead_code, unreachable_patterns)]
1651        fn _type_assertion(
1652            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1653        ) {
1654            match _t {
1655                alloy_sol_types::private::AssertTypeEq::<
1656                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1657                >(_) => {}
1658            }
1659        }
1660        #[automatically_derived]
1661        #[doc(hidden)]
1662        impl ::core::convert::From<InvalidAuthRoot> for UnderlyingRustTuple<'_> {
1663            fn from(value: InvalidAuthRoot) -> Self {
1664                ()
1665            }
1666        }
1667        #[automatically_derived]
1668        #[doc(hidden)]
1669        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAuthRoot {
1670            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1671                Self
1672            }
1673        }
1674        #[automatically_derived]
1675        impl alloy_sol_types::SolError for InvalidAuthRoot {
1676            type Parameters<'a> = UnderlyingSolTuple<'a>;
1677            type Token<'a> = <Self::Parameters<
1678                'a,
1679            > as alloy_sol_types::SolType>::Token<'a>;
1680            const SIGNATURE: &'static str = "InvalidAuthRoot()";
1681            const SELECTOR: [u8; 4] = [50u8, 139u8, 136u8, 120u8];
1682            #[inline]
1683            fn new<'a>(
1684                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1685            ) -> Self {
1686                tuple.into()
1687            }
1688            #[inline]
1689            fn tokenize(&self) -> Self::Token<'_> {
1690                ()
1691            }
1692            #[inline]
1693            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1694                <Self::Parameters<
1695                    '_,
1696                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1697                    .map(Self::new)
1698            }
1699        }
1700    };
1701    #[derive(serde::Serialize, serde::Deserialize)]
1702    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1703    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
1704```solidity
1705error InvalidInitialization();
1706```*/
1707    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1708    #[derive(Clone)]
1709    pub struct InvalidInitialization;
1710    #[allow(
1711        non_camel_case_types,
1712        non_snake_case,
1713        clippy::pub_underscore_fields,
1714        clippy::style
1715    )]
1716    const _: () = {
1717        use alloy::sol_types as alloy_sol_types;
1718        #[doc(hidden)]
1719        type UnderlyingSolTuple<'a> = ();
1720        #[doc(hidden)]
1721        type UnderlyingRustTuple<'a> = ();
1722        #[cfg(test)]
1723        #[allow(dead_code, unreachable_patterns)]
1724        fn _type_assertion(
1725            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1726        ) {
1727            match _t {
1728                alloy_sol_types::private::AssertTypeEq::<
1729                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1730                >(_) => {}
1731            }
1732        }
1733        #[automatically_derived]
1734        #[doc(hidden)]
1735        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
1736            fn from(value: InvalidInitialization) -> Self {
1737                ()
1738            }
1739        }
1740        #[automatically_derived]
1741        #[doc(hidden)]
1742        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
1743            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1744                Self
1745            }
1746        }
1747        #[automatically_derived]
1748        impl alloy_sol_types::SolError for InvalidInitialization {
1749            type Parameters<'a> = UnderlyingSolTuple<'a>;
1750            type Token<'a> = <Self::Parameters<
1751                'a,
1752            > as alloy_sol_types::SolType>::Token<'a>;
1753            const SIGNATURE: &'static str = "InvalidInitialization()";
1754            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
1755            #[inline]
1756            fn new<'a>(
1757                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1758            ) -> Self {
1759                tuple.into()
1760            }
1761            #[inline]
1762            fn tokenize(&self) -> Self::Token<'_> {
1763                ()
1764            }
1765            #[inline]
1766            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1767                <Self::Parameters<
1768                    '_,
1769                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1770                    .map(Self::new)
1771            }
1772        }
1773    };
1774    #[derive(serde::Serialize, serde::Deserialize)]
1775    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1776    /**Custom error with signature `InvalidRewardAmount()` and selector `0x38539865`.
1777```solidity
1778error InvalidRewardAmount();
1779```*/
1780    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1781    #[derive(Clone)]
1782    pub struct InvalidRewardAmount;
1783    #[allow(
1784        non_camel_case_types,
1785        non_snake_case,
1786        clippy::pub_underscore_fields,
1787        clippy::style
1788    )]
1789    const _: () = {
1790        use alloy::sol_types as alloy_sol_types;
1791        #[doc(hidden)]
1792        type UnderlyingSolTuple<'a> = ();
1793        #[doc(hidden)]
1794        type UnderlyingRustTuple<'a> = ();
1795        #[cfg(test)]
1796        #[allow(dead_code, unreachable_patterns)]
1797        fn _type_assertion(
1798            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1799        ) {
1800            match _t {
1801                alloy_sol_types::private::AssertTypeEq::<
1802                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1803                >(_) => {}
1804            }
1805        }
1806        #[automatically_derived]
1807        #[doc(hidden)]
1808        impl ::core::convert::From<InvalidRewardAmount> for UnderlyingRustTuple<'_> {
1809            fn from(value: InvalidRewardAmount) -> Self {
1810                ()
1811            }
1812        }
1813        #[automatically_derived]
1814        #[doc(hidden)]
1815        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidRewardAmount {
1816            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1817                Self
1818            }
1819        }
1820        #[automatically_derived]
1821        impl alloy_sol_types::SolError for InvalidRewardAmount {
1822            type Parameters<'a> = UnderlyingSolTuple<'a>;
1823            type Token<'a> = <Self::Parameters<
1824                'a,
1825            > as alloy_sol_types::SolType>::Token<'a>;
1826            const SIGNATURE: &'static str = "InvalidRewardAmount()";
1827            const SELECTOR: [u8; 4] = [56u8, 83u8, 152u8, 101u8];
1828            #[inline]
1829            fn new<'a>(
1830                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1831            ) -> Self {
1832                tuple.into()
1833            }
1834            #[inline]
1835            fn tokenize(&self) -> Self::Token<'_> {
1836                ()
1837            }
1838            #[inline]
1839            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1840                <Self::Parameters<
1841                    '_,
1842                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1843                    .map(Self::new)
1844            }
1845        }
1846    };
1847    #[derive(serde::Serialize, serde::Deserialize)]
1848    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1849    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
1850```solidity
1851error NotInitializing();
1852```*/
1853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1854    #[derive(Clone)]
1855    pub struct NotInitializing;
1856    #[allow(
1857        non_camel_case_types,
1858        non_snake_case,
1859        clippy::pub_underscore_fields,
1860        clippy::style
1861    )]
1862    const _: () = {
1863        use alloy::sol_types as alloy_sol_types;
1864        #[doc(hidden)]
1865        type UnderlyingSolTuple<'a> = ();
1866        #[doc(hidden)]
1867        type UnderlyingRustTuple<'a> = ();
1868        #[cfg(test)]
1869        #[allow(dead_code, unreachable_patterns)]
1870        fn _type_assertion(
1871            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1872        ) {
1873            match _t {
1874                alloy_sol_types::private::AssertTypeEq::<
1875                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1876                >(_) => {}
1877            }
1878        }
1879        #[automatically_derived]
1880        #[doc(hidden)]
1881        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
1882            fn from(value: NotInitializing) -> Self {
1883                ()
1884            }
1885        }
1886        #[automatically_derived]
1887        #[doc(hidden)]
1888        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
1889            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1890                Self
1891            }
1892        }
1893        #[automatically_derived]
1894        impl alloy_sol_types::SolError for NotInitializing {
1895            type Parameters<'a> = UnderlyingSolTuple<'a>;
1896            type Token<'a> = <Self::Parameters<
1897                'a,
1898            > as alloy_sol_types::SolType>::Token<'a>;
1899            const SIGNATURE: &'static str = "NotInitializing()";
1900            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
1901            #[inline]
1902            fn new<'a>(
1903                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1904            ) -> Self {
1905                tuple.into()
1906            }
1907            #[inline]
1908            fn tokenize(&self) -> Self::Token<'_> {
1909                ()
1910            }
1911            #[inline]
1912            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1913                <Self::Parameters<
1914                    '_,
1915                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1916                    .map(Self::new)
1917            }
1918        }
1919    };
1920    #[derive(serde::Serialize, serde::Deserialize)]
1921    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1922    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
1923```solidity
1924error OwnableInvalidOwner(address owner);
1925```*/
1926    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1927    #[derive(Clone)]
1928    pub struct OwnableInvalidOwner {
1929        #[allow(missing_docs)]
1930        pub owner: alloy::sol_types::private::Address,
1931    }
1932    #[allow(
1933        non_camel_case_types,
1934        non_snake_case,
1935        clippy::pub_underscore_fields,
1936        clippy::style
1937    )]
1938    const _: () = {
1939        use alloy::sol_types as alloy_sol_types;
1940        #[doc(hidden)]
1941        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1942        #[doc(hidden)]
1943        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1944        #[cfg(test)]
1945        #[allow(dead_code, unreachable_patterns)]
1946        fn _type_assertion(
1947            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1948        ) {
1949            match _t {
1950                alloy_sol_types::private::AssertTypeEq::<
1951                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1952                >(_) => {}
1953            }
1954        }
1955        #[automatically_derived]
1956        #[doc(hidden)]
1957        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
1958            fn from(value: OwnableInvalidOwner) -> Self {
1959                (value.owner,)
1960            }
1961        }
1962        #[automatically_derived]
1963        #[doc(hidden)]
1964        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
1965            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1966                Self { owner: tuple.0 }
1967            }
1968        }
1969        #[automatically_derived]
1970        impl alloy_sol_types::SolError for OwnableInvalidOwner {
1971            type Parameters<'a> = UnderlyingSolTuple<'a>;
1972            type Token<'a> = <Self::Parameters<
1973                'a,
1974            > as alloy_sol_types::SolType>::Token<'a>;
1975            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
1976            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
1977            #[inline]
1978            fn new<'a>(
1979                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1980            ) -> Self {
1981                tuple.into()
1982            }
1983            #[inline]
1984            fn tokenize(&self) -> Self::Token<'_> {
1985                (
1986                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1987                        &self.owner,
1988                    ),
1989                )
1990            }
1991            #[inline]
1992            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1993                <Self::Parameters<
1994                    '_,
1995                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1996                    .map(Self::new)
1997            }
1998        }
1999    };
2000    #[derive(serde::Serialize, serde::Deserialize)]
2001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2002    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
2003```solidity
2004error OwnableUnauthorizedAccount(address account);
2005```*/
2006    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2007    #[derive(Clone)]
2008    pub struct OwnableUnauthorizedAccount {
2009        #[allow(missing_docs)]
2010        pub account: alloy::sol_types::private::Address,
2011    }
2012    #[allow(
2013        non_camel_case_types,
2014        non_snake_case,
2015        clippy::pub_underscore_fields,
2016        clippy::style
2017    )]
2018    const _: () = {
2019        use alloy::sol_types as alloy_sol_types;
2020        #[doc(hidden)]
2021        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
2022        #[doc(hidden)]
2023        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
2024        #[cfg(test)]
2025        #[allow(dead_code, unreachable_patterns)]
2026        fn _type_assertion(
2027            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2028        ) {
2029            match _t {
2030                alloy_sol_types::private::AssertTypeEq::<
2031                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2032                >(_) => {}
2033            }
2034        }
2035        #[automatically_derived]
2036        #[doc(hidden)]
2037        impl ::core::convert::From<OwnableUnauthorizedAccount>
2038        for UnderlyingRustTuple<'_> {
2039            fn from(value: OwnableUnauthorizedAccount) -> Self {
2040                (value.account,)
2041            }
2042        }
2043        #[automatically_derived]
2044        #[doc(hidden)]
2045        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2046        for OwnableUnauthorizedAccount {
2047            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2048                Self { account: tuple.0 }
2049            }
2050        }
2051        #[automatically_derived]
2052        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
2053            type Parameters<'a> = UnderlyingSolTuple<'a>;
2054            type Token<'a> = <Self::Parameters<
2055                'a,
2056            > as alloy_sol_types::SolType>::Token<'a>;
2057            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
2058            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
2059            #[inline]
2060            fn new<'a>(
2061                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2062            ) -> Self {
2063                tuple.into()
2064            }
2065            #[inline]
2066            fn tokenize(&self) -> Self::Token<'_> {
2067                (
2068                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2069                        &self.account,
2070                    ),
2071                )
2072            }
2073            #[inline]
2074            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2075                <Self::Parameters<
2076                    '_,
2077                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2078                    .map(Self::new)
2079            }
2080        }
2081    };
2082    #[derive(serde::Serialize, serde::Deserialize)]
2083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2084    /**Custom error with signature `ReentrancyGuardReentrantCall()` and selector `0x3ee5aeb5`.
2085```solidity
2086error ReentrancyGuardReentrantCall();
2087```*/
2088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2089    #[derive(Clone)]
2090    pub struct ReentrancyGuardReentrantCall;
2091    #[allow(
2092        non_camel_case_types,
2093        non_snake_case,
2094        clippy::pub_underscore_fields,
2095        clippy::style
2096    )]
2097    const _: () = {
2098        use alloy::sol_types as alloy_sol_types;
2099        #[doc(hidden)]
2100        type UnderlyingSolTuple<'a> = ();
2101        #[doc(hidden)]
2102        type UnderlyingRustTuple<'a> = ();
2103        #[cfg(test)]
2104        #[allow(dead_code, unreachable_patterns)]
2105        fn _type_assertion(
2106            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2107        ) {
2108            match _t {
2109                alloy_sol_types::private::AssertTypeEq::<
2110                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2111                >(_) => {}
2112            }
2113        }
2114        #[automatically_derived]
2115        #[doc(hidden)]
2116        impl ::core::convert::From<ReentrancyGuardReentrantCall>
2117        for UnderlyingRustTuple<'_> {
2118            fn from(value: ReentrancyGuardReentrantCall) -> Self {
2119                ()
2120            }
2121        }
2122        #[automatically_derived]
2123        #[doc(hidden)]
2124        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2125        for ReentrancyGuardReentrantCall {
2126            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2127                Self
2128            }
2129        }
2130        #[automatically_derived]
2131        impl alloy_sol_types::SolError for ReentrancyGuardReentrantCall {
2132            type Parameters<'a> = UnderlyingSolTuple<'a>;
2133            type Token<'a> = <Self::Parameters<
2134                'a,
2135            > as alloy_sol_types::SolType>::Token<'a>;
2136            const SIGNATURE: &'static str = "ReentrancyGuardReentrantCall()";
2137            const SELECTOR: [u8; 4] = [62u8, 229u8, 174u8, 181u8];
2138            #[inline]
2139            fn new<'a>(
2140                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2141            ) -> Self {
2142                tuple.into()
2143            }
2144            #[inline]
2145            fn tokenize(&self) -> Self::Token<'_> {
2146                ()
2147            }
2148            #[inline]
2149            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2150                <Self::Parameters<
2151                    '_,
2152                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2153                    .map(Self::new)
2154            }
2155        }
2156    };
2157    #[derive(serde::Serialize, serde::Deserialize)]
2158    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2159    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
2160```solidity
2161error UUPSUnauthorizedCallContext();
2162```*/
2163    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2164    #[derive(Clone)]
2165    pub struct UUPSUnauthorizedCallContext;
2166    #[allow(
2167        non_camel_case_types,
2168        non_snake_case,
2169        clippy::pub_underscore_fields,
2170        clippy::style
2171    )]
2172    const _: () = {
2173        use alloy::sol_types as alloy_sol_types;
2174        #[doc(hidden)]
2175        type UnderlyingSolTuple<'a> = ();
2176        #[doc(hidden)]
2177        type UnderlyingRustTuple<'a> = ();
2178        #[cfg(test)]
2179        #[allow(dead_code, unreachable_patterns)]
2180        fn _type_assertion(
2181            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2182        ) {
2183            match _t {
2184                alloy_sol_types::private::AssertTypeEq::<
2185                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2186                >(_) => {}
2187            }
2188        }
2189        #[automatically_derived]
2190        #[doc(hidden)]
2191        impl ::core::convert::From<UUPSUnauthorizedCallContext>
2192        for UnderlyingRustTuple<'_> {
2193            fn from(value: UUPSUnauthorizedCallContext) -> Self {
2194                ()
2195            }
2196        }
2197        #[automatically_derived]
2198        #[doc(hidden)]
2199        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2200        for UUPSUnauthorizedCallContext {
2201            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2202                Self
2203            }
2204        }
2205        #[automatically_derived]
2206        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
2207            type Parameters<'a> = UnderlyingSolTuple<'a>;
2208            type Token<'a> = <Self::Parameters<
2209                'a,
2210            > as alloy_sol_types::SolType>::Token<'a>;
2211            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
2212            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
2213            #[inline]
2214            fn new<'a>(
2215                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2216            ) -> Self {
2217                tuple.into()
2218            }
2219            #[inline]
2220            fn tokenize(&self) -> Self::Token<'_> {
2221                ()
2222            }
2223            #[inline]
2224            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2225                <Self::Parameters<
2226                    '_,
2227                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2228                    .map(Self::new)
2229            }
2230        }
2231    };
2232    #[derive(serde::Serialize, serde::Deserialize)]
2233    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2234    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
2235```solidity
2236error UUPSUnsupportedProxiableUUID(bytes32 slot);
2237```*/
2238    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2239    #[derive(Clone)]
2240    pub struct UUPSUnsupportedProxiableUUID {
2241        #[allow(missing_docs)]
2242        pub slot: alloy::sol_types::private::FixedBytes<32>,
2243    }
2244    #[allow(
2245        non_camel_case_types,
2246        non_snake_case,
2247        clippy::pub_underscore_fields,
2248        clippy::style
2249    )]
2250    const _: () = {
2251        use alloy::sol_types as alloy_sol_types;
2252        #[doc(hidden)]
2253        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
2254        #[doc(hidden)]
2255        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
2256        #[cfg(test)]
2257        #[allow(dead_code, unreachable_patterns)]
2258        fn _type_assertion(
2259            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2260        ) {
2261            match _t {
2262                alloy_sol_types::private::AssertTypeEq::<
2263                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2264                >(_) => {}
2265            }
2266        }
2267        #[automatically_derived]
2268        #[doc(hidden)]
2269        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
2270        for UnderlyingRustTuple<'_> {
2271            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
2272                (value.slot,)
2273            }
2274        }
2275        #[automatically_derived]
2276        #[doc(hidden)]
2277        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2278        for UUPSUnsupportedProxiableUUID {
2279            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2280                Self { slot: tuple.0 }
2281            }
2282        }
2283        #[automatically_derived]
2284        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
2285            type Parameters<'a> = UnderlyingSolTuple<'a>;
2286            type Token<'a> = <Self::Parameters<
2287                'a,
2288            > as alloy_sol_types::SolType>::Token<'a>;
2289            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
2290            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
2291            #[inline]
2292            fn new<'a>(
2293                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2294            ) -> Self {
2295                tuple.into()
2296            }
2297            #[inline]
2298            fn tokenize(&self) -> Self::Token<'_> {
2299                (
2300                    <alloy::sol_types::sol_data::FixedBytes<
2301                        32,
2302                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
2303                )
2304            }
2305            #[inline]
2306            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2307                <Self::Parameters<
2308                    '_,
2309                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2310                    .map(Self::new)
2311            }
2312        }
2313    };
2314    #[derive(serde::Serialize, serde::Deserialize)]
2315    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2316    /**Custom error with signature `ZeroDailyLimit()` and selector `0x9b11a8bd`.
2317```solidity
2318error ZeroDailyLimit();
2319```*/
2320    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2321    #[derive(Clone)]
2322    pub struct ZeroDailyLimit;
2323    #[allow(
2324        non_camel_case_types,
2325        non_snake_case,
2326        clippy::pub_underscore_fields,
2327        clippy::style
2328    )]
2329    const _: () = {
2330        use alloy::sol_types as alloy_sol_types;
2331        #[doc(hidden)]
2332        type UnderlyingSolTuple<'a> = ();
2333        #[doc(hidden)]
2334        type UnderlyingRustTuple<'a> = ();
2335        #[cfg(test)]
2336        #[allow(dead_code, unreachable_patterns)]
2337        fn _type_assertion(
2338            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2339        ) {
2340            match _t {
2341                alloy_sol_types::private::AssertTypeEq::<
2342                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2343                >(_) => {}
2344            }
2345        }
2346        #[automatically_derived]
2347        #[doc(hidden)]
2348        impl ::core::convert::From<ZeroDailyLimit> for UnderlyingRustTuple<'_> {
2349            fn from(value: ZeroDailyLimit) -> Self {
2350                ()
2351            }
2352        }
2353        #[automatically_derived]
2354        #[doc(hidden)]
2355        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroDailyLimit {
2356            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2357                Self
2358            }
2359        }
2360        #[automatically_derived]
2361        impl alloy_sol_types::SolError for ZeroDailyLimit {
2362            type Parameters<'a> = UnderlyingSolTuple<'a>;
2363            type Token<'a> = <Self::Parameters<
2364                'a,
2365            > as alloy_sol_types::SolType>::Token<'a>;
2366            const SIGNATURE: &'static str = "ZeroDailyLimit()";
2367            const SELECTOR: [u8; 4] = [155u8, 17u8, 168u8, 189u8];
2368            #[inline]
2369            fn new<'a>(
2370                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2371            ) -> Self {
2372                tuple.into()
2373            }
2374            #[inline]
2375            fn tokenize(&self) -> Self::Token<'_> {
2376                ()
2377            }
2378            #[inline]
2379            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2380                <Self::Parameters<
2381                    '_,
2382                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2383                    .map(Self::new)
2384            }
2385        }
2386    };
2387    #[derive(serde::Serialize, serde::Deserialize)]
2388    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2389    /**Custom error with signature `ZeroLightClientAddress()` and selector `0xfcabddbd`.
2390```solidity
2391error ZeroLightClientAddress();
2392```*/
2393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2394    #[derive(Clone)]
2395    pub struct ZeroLightClientAddress;
2396    #[allow(
2397        non_camel_case_types,
2398        non_snake_case,
2399        clippy::pub_underscore_fields,
2400        clippy::style
2401    )]
2402    const _: () = {
2403        use alloy::sol_types as alloy_sol_types;
2404        #[doc(hidden)]
2405        type UnderlyingSolTuple<'a> = ();
2406        #[doc(hidden)]
2407        type UnderlyingRustTuple<'a> = ();
2408        #[cfg(test)]
2409        #[allow(dead_code, unreachable_patterns)]
2410        fn _type_assertion(
2411            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2412        ) {
2413            match _t {
2414                alloy_sol_types::private::AssertTypeEq::<
2415                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2416                >(_) => {}
2417            }
2418        }
2419        #[automatically_derived]
2420        #[doc(hidden)]
2421        impl ::core::convert::From<ZeroLightClientAddress> for UnderlyingRustTuple<'_> {
2422            fn from(value: ZeroLightClientAddress) -> Self {
2423                ()
2424            }
2425        }
2426        #[automatically_derived]
2427        #[doc(hidden)]
2428        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroLightClientAddress {
2429            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2430                Self
2431            }
2432        }
2433        #[automatically_derived]
2434        impl alloy_sol_types::SolError for ZeroLightClientAddress {
2435            type Parameters<'a> = UnderlyingSolTuple<'a>;
2436            type Token<'a> = <Self::Parameters<
2437                'a,
2438            > as alloy_sol_types::SolType>::Token<'a>;
2439            const SIGNATURE: &'static str = "ZeroLightClientAddress()";
2440            const SELECTOR: [u8; 4] = [252u8, 171u8, 221u8, 189u8];
2441            #[inline]
2442            fn new<'a>(
2443                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2444            ) -> Self {
2445                tuple.into()
2446            }
2447            #[inline]
2448            fn tokenize(&self) -> Self::Token<'_> {
2449                ()
2450            }
2451            #[inline]
2452            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2453                <Self::Parameters<
2454                    '_,
2455                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2456                    .map(Self::new)
2457            }
2458        }
2459    };
2460    #[derive(serde::Serialize, serde::Deserialize)]
2461    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2462    /**Custom error with signature `ZeroPauserAddress()` and selector `0xa74995ab`.
2463```solidity
2464error ZeroPauserAddress();
2465```*/
2466    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2467    #[derive(Clone)]
2468    pub struct ZeroPauserAddress;
2469    #[allow(
2470        non_camel_case_types,
2471        non_snake_case,
2472        clippy::pub_underscore_fields,
2473        clippy::style
2474    )]
2475    const _: () = {
2476        use alloy::sol_types as alloy_sol_types;
2477        #[doc(hidden)]
2478        type UnderlyingSolTuple<'a> = ();
2479        #[doc(hidden)]
2480        type UnderlyingRustTuple<'a> = ();
2481        #[cfg(test)]
2482        #[allow(dead_code, unreachable_patterns)]
2483        fn _type_assertion(
2484            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2485        ) {
2486            match _t {
2487                alloy_sol_types::private::AssertTypeEq::<
2488                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2489                >(_) => {}
2490            }
2491        }
2492        #[automatically_derived]
2493        #[doc(hidden)]
2494        impl ::core::convert::From<ZeroPauserAddress> for UnderlyingRustTuple<'_> {
2495            fn from(value: ZeroPauserAddress) -> Self {
2496                ()
2497            }
2498        }
2499        #[automatically_derived]
2500        #[doc(hidden)]
2501        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroPauserAddress {
2502            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2503                Self
2504            }
2505        }
2506        #[automatically_derived]
2507        impl alloy_sol_types::SolError for ZeroPauserAddress {
2508            type Parameters<'a> = UnderlyingSolTuple<'a>;
2509            type Token<'a> = <Self::Parameters<
2510                'a,
2511            > as alloy_sol_types::SolType>::Token<'a>;
2512            const SIGNATURE: &'static str = "ZeroPauserAddress()";
2513            const SELECTOR: [u8; 4] = [167u8, 73u8, 149u8, 171u8];
2514            #[inline]
2515            fn new<'a>(
2516                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2517            ) -> Self {
2518                tuple.into()
2519            }
2520            #[inline]
2521            fn tokenize(&self) -> Self::Token<'_> {
2522                ()
2523            }
2524            #[inline]
2525            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2526                <Self::Parameters<
2527                    '_,
2528                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2529                    .map(Self::new)
2530            }
2531        }
2532    };
2533    #[derive(serde::Serialize, serde::Deserialize)]
2534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2535    /**Custom error with signature `ZeroTokenAddress()` and selector `0x6b093aad`.
2536```solidity
2537error ZeroTokenAddress();
2538```*/
2539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2540    #[derive(Clone)]
2541    pub struct ZeroTokenAddress;
2542    #[allow(
2543        non_camel_case_types,
2544        non_snake_case,
2545        clippy::pub_underscore_fields,
2546        clippy::style
2547    )]
2548    const _: () = {
2549        use alloy::sol_types as alloy_sol_types;
2550        #[doc(hidden)]
2551        type UnderlyingSolTuple<'a> = ();
2552        #[doc(hidden)]
2553        type UnderlyingRustTuple<'a> = ();
2554        #[cfg(test)]
2555        #[allow(dead_code, unreachable_patterns)]
2556        fn _type_assertion(
2557            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2558        ) {
2559            match _t {
2560                alloy_sol_types::private::AssertTypeEq::<
2561                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2562                >(_) => {}
2563            }
2564        }
2565        #[automatically_derived]
2566        #[doc(hidden)]
2567        impl ::core::convert::From<ZeroTokenAddress> for UnderlyingRustTuple<'_> {
2568            fn from(value: ZeroTokenAddress) -> Self {
2569                ()
2570            }
2571        }
2572        #[automatically_derived]
2573        #[doc(hidden)]
2574        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroTokenAddress {
2575            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2576                Self
2577            }
2578        }
2579        #[automatically_derived]
2580        impl alloy_sol_types::SolError for ZeroTokenAddress {
2581            type Parameters<'a> = UnderlyingSolTuple<'a>;
2582            type Token<'a> = <Self::Parameters<
2583                'a,
2584            > as alloy_sol_types::SolType>::Token<'a>;
2585            const SIGNATURE: &'static str = "ZeroTokenAddress()";
2586            const SELECTOR: [u8; 4] = [107u8, 9u8, 58u8, 173u8];
2587            #[inline]
2588            fn new<'a>(
2589                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2590            ) -> Self {
2591                tuple.into()
2592            }
2593            #[inline]
2594            fn tokenize(&self) -> Self::Token<'_> {
2595                ()
2596            }
2597            #[inline]
2598            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2599                <Self::Parameters<
2600                    '_,
2601                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2602                    .map(Self::new)
2603            }
2604        }
2605    };
2606    #[derive(serde::Serialize, serde::Deserialize)]
2607    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2608    /**Custom error with signature `ZeroTotalSupply()` and selector `0x48b50023`.
2609```solidity
2610error ZeroTotalSupply();
2611```*/
2612    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2613    #[derive(Clone)]
2614    pub struct ZeroTotalSupply;
2615    #[allow(
2616        non_camel_case_types,
2617        non_snake_case,
2618        clippy::pub_underscore_fields,
2619        clippy::style
2620    )]
2621    const _: () = {
2622        use alloy::sol_types as alloy_sol_types;
2623        #[doc(hidden)]
2624        type UnderlyingSolTuple<'a> = ();
2625        #[doc(hidden)]
2626        type UnderlyingRustTuple<'a> = ();
2627        #[cfg(test)]
2628        #[allow(dead_code, unreachable_patterns)]
2629        fn _type_assertion(
2630            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2631        ) {
2632            match _t {
2633                alloy_sol_types::private::AssertTypeEq::<
2634                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2635                >(_) => {}
2636            }
2637        }
2638        #[automatically_derived]
2639        #[doc(hidden)]
2640        impl ::core::convert::From<ZeroTotalSupply> for UnderlyingRustTuple<'_> {
2641            fn from(value: ZeroTotalSupply) -> Self {
2642                ()
2643            }
2644        }
2645        #[automatically_derived]
2646        #[doc(hidden)]
2647        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroTotalSupply {
2648            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2649                Self
2650            }
2651        }
2652        #[automatically_derived]
2653        impl alloy_sol_types::SolError for ZeroTotalSupply {
2654            type Parameters<'a> = UnderlyingSolTuple<'a>;
2655            type Token<'a> = <Self::Parameters<
2656                'a,
2657            > as alloy_sol_types::SolType>::Token<'a>;
2658            const SIGNATURE: &'static str = "ZeroTotalSupply()";
2659            const SELECTOR: [u8; 4] = [72u8, 181u8, 0u8, 35u8];
2660            #[inline]
2661            fn new<'a>(
2662                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2663            ) -> Self {
2664                tuple.into()
2665            }
2666            #[inline]
2667            fn tokenize(&self) -> Self::Token<'_> {
2668                ()
2669            }
2670            #[inline]
2671            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2672                <Self::Parameters<
2673                    '_,
2674                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2675                    .map(Self::new)
2676            }
2677        }
2678    };
2679    #[derive(serde::Serialize, serde::Deserialize)]
2680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2681    /**Event with signature `DailyLimitUpdated(uint256,uint256)` and selector `0x207c4cbdf55ec315a13f0d5e047732ec5d947da056e706593aa509909941cedf`.
2682```solidity
2683event DailyLimitUpdated(uint256 oldLimit, uint256 newLimit);
2684```*/
2685    #[allow(
2686        non_camel_case_types,
2687        non_snake_case,
2688        clippy::pub_underscore_fields,
2689        clippy::style
2690    )]
2691    #[derive(Clone)]
2692    pub struct DailyLimitUpdated {
2693        #[allow(missing_docs)]
2694        pub oldLimit: alloy::sol_types::private::primitives::aliases::U256,
2695        #[allow(missing_docs)]
2696        pub newLimit: alloy::sol_types::private::primitives::aliases::U256,
2697    }
2698    #[allow(
2699        non_camel_case_types,
2700        non_snake_case,
2701        clippy::pub_underscore_fields,
2702        clippy::style
2703    )]
2704    const _: () = {
2705        use alloy::sol_types as alloy_sol_types;
2706        #[automatically_derived]
2707        impl alloy_sol_types::SolEvent for DailyLimitUpdated {
2708            type DataTuple<'a> = (
2709                alloy::sol_types::sol_data::Uint<256>,
2710                alloy::sol_types::sol_data::Uint<256>,
2711            );
2712            type DataToken<'a> = <Self::DataTuple<
2713                'a,
2714            > as alloy_sol_types::SolType>::Token<'a>;
2715            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2716            const SIGNATURE: &'static str = "DailyLimitUpdated(uint256,uint256)";
2717            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2718                32u8, 124u8, 76u8, 189u8, 245u8, 94u8, 195u8, 21u8, 161u8, 63u8, 13u8,
2719                94u8, 4u8, 119u8, 50u8, 236u8, 93u8, 148u8, 125u8, 160u8, 86u8, 231u8,
2720                6u8, 89u8, 58u8, 165u8, 9u8, 144u8, 153u8, 65u8, 206u8, 223u8,
2721            ]);
2722            const ANONYMOUS: bool = false;
2723            #[allow(unused_variables)]
2724            #[inline]
2725            fn new(
2726                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2727                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2728            ) -> Self {
2729                Self {
2730                    oldLimit: data.0,
2731                    newLimit: data.1,
2732                }
2733            }
2734            #[inline]
2735            fn check_signature(
2736                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2737            ) -> alloy_sol_types::Result<()> {
2738                if topics.0 != Self::SIGNATURE_HASH {
2739                    return Err(
2740                        alloy_sol_types::Error::invalid_event_signature_hash(
2741                            Self::SIGNATURE,
2742                            topics.0,
2743                            Self::SIGNATURE_HASH,
2744                        ),
2745                    );
2746                }
2747                Ok(())
2748            }
2749            #[inline]
2750            fn tokenize_body(&self) -> Self::DataToken<'_> {
2751                (
2752                    <alloy::sol_types::sol_data::Uint<
2753                        256,
2754                    > as alloy_sol_types::SolType>::tokenize(&self.oldLimit),
2755                    <alloy::sol_types::sol_data::Uint<
2756                        256,
2757                    > as alloy_sol_types::SolType>::tokenize(&self.newLimit),
2758                )
2759            }
2760            #[inline]
2761            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2762                (Self::SIGNATURE_HASH.into(),)
2763            }
2764            #[inline]
2765            fn encode_topics_raw(
2766                &self,
2767                out: &mut [alloy_sol_types::abi::token::WordToken],
2768            ) -> alloy_sol_types::Result<()> {
2769                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2770                    return Err(alloy_sol_types::Error::Overrun);
2771                }
2772                out[0usize] = alloy_sol_types::abi::token::WordToken(
2773                    Self::SIGNATURE_HASH,
2774                );
2775                Ok(())
2776            }
2777        }
2778        #[automatically_derived]
2779        impl alloy_sol_types::private::IntoLogData for DailyLimitUpdated {
2780            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2781                From::from(self)
2782            }
2783            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2784                From::from(&self)
2785            }
2786        }
2787        #[automatically_derived]
2788        impl From<&DailyLimitUpdated> for alloy_sol_types::private::LogData {
2789            #[inline]
2790            fn from(this: &DailyLimitUpdated) -> alloy_sol_types::private::LogData {
2791                alloy_sol_types::SolEvent::encode_log_data(this)
2792            }
2793        }
2794    };
2795    #[derive(serde::Serialize, serde::Deserialize)]
2796    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2797    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
2798```solidity
2799event Initialized(uint64 version);
2800```*/
2801    #[allow(
2802        non_camel_case_types,
2803        non_snake_case,
2804        clippy::pub_underscore_fields,
2805        clippy::style
2806    )]
2807    #[derive(Clone)]
2808    pub struct Initialized {
2809        #[allow(missing_docs)]
2810        pub version: u64,
2811    }
2812    #[allow(
2813        non_camel_case_types,
2814        non_snake_case,
2815        clippy::pub_underscore_fields,
2816        clippy::style
2817    )]
2818    const _: () = {
2819        use alloy::sol_types as alloy_sol_types;
2820        #[automatically_derived]
2821        impl alloy_sol_types::SolEvent for Initialized {
2822            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
2823            type DataToken<'a> = <Self::DataTuple<
2824                'a,
2825            > as alloy_sol_types::SolType>::Token<'a>;
2826            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2827            const SIGNATURE: &'static str = "Initialized(uint64)";
2828            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2829                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
2830                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
2831                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
2832            ]);
2833            const ANONYMOUS: bool = false;
2834            #[allow(unused_variables)]
2835            #[inline]
2836            fn new(
2837                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2838                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2839            ) -> Self {
2840                Self { version: data.0 }
2841            }
2842            #[inline]
2843            fn check_signature(
2844                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2845            ) -> alloy_sol_types::Result<()> {
2846                if topics.0 != Self::SIGNATURE_HASH {
2847                    return Err(
2848                        alloy_sol_types::Error::invalid_event_signature_hash(
2849                            Self::SIGNATURE,
2850                            topics.0,
2851                            Self::SIGNATURE_HASH,
2852                        ),
2853                    );
2854                }
2855                Ok(())
2856            }
2857            #[inline]
2858            fn tokenize_body(&self) -> Self::DataToken<'_> {
2859                (
2860                    <alloy::sol_types::sol_data::Uint<
2861                        64,
2862                    > as alloy_sol_types::SolType>::tokenize(&self.version),
2863                )
2864            }
2865            #[inline]
2866            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2867                (Self::SIGNATURE_HASH.into(),)
2868            }
2869            #[inline]
2870            fn encode_topics_raw(
2871                &self,
2872                out: &mut [alloy_sol_types::abi::token::WordToken],
2873            ) -> alloy_sol_types::Result<()> {
2874                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2875                    return Err(alloy_sol_types::Error::Overrun);
2876                }
2877                out[0usize] = alloy_sol_types::abi::token::WordToken(
2878                    Self::SIGNATURE_HASH,
2879                );
2880                Ok(())
2881            }
2882        }
2883        #[automatically_derived]
2884        impl alloy_sol_types::private::IntoLogData for Initialized {
2885            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2886                From::from(self)
2887            }
2888            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2889                From::from(&self)
2890            }
2891        }
2892        #[automatically_derived]
2893        impl From<&Initialized> for alloy_sol_types::private::LogData {
2894            #[inline]
2895            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
2896                alloy_sol_types::SolEvent::encode_log_data(this)
2897            }
2898        }
2899    };
2900    #[derive(serde::Serialize, serde::Deserialize)]
2901    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2902    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
2903```solidity
2904event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2905```*/
2906    #[allow(
2907        non_camel_case_types,
2908        non_snake_case,
2909        clippy::pub_underscore_fields,
2910        clippy::style
2911    )]
2912    #[derive(Clone)]
2913    pub struct OwnershipTransferred {
2914        #[allow(missing_docs)]
2915        pub previousOwner: alloy::sol_types::private::Address,
2916        #[allow(missing_docs)]
2917        pub newOwner: alloy::sol_types::private::Address,
2918    }
2919    #[allow(
2920        non_camel_case_types,
2921        non_snake_case,
2922        clippy::pub_underscore_fields,
2923        clippy::style
2924    )]
2925    const _: () = {
2926        use alloy::sol_types as alloy_sol_types;
2927        #[automatically_derived]
2928        impl alloy_sol_types::SolEvent for OwnershipTransferred {
2929            type DataTuple<'a> = ();
2930            type DataToken<'a> = <Self::DataTuple<
2931                'a,
2932            > as alloy_sol_types::SolType>::Token<'a>;
2933            type TopicList = (
2934                alloy_sol_types::sol_data::FixedBytes<32>,
2935                alloy::sol_types::sol_data::Address,
2936                alloy::sol_types::sol_data::Address,
2937            );
2938            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
2939            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2940                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
2941                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
2942                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
2943            ]);
2944            const ANONYMOUS: bool = false;
2945            #[allow(unused_variables)]
2946            #[inline]
2947            fn new(
2948                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2949                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2950            ) -> Self {
2951                Self {
2952                    previousOwner: topics.1,
2953                    newOwner: topics.2,
2954                }
2955            }
2956            #[inline]
2957            fn check_signature(
2958                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2959            ) -> alloy_sol_types::Result<()> {
2960                if topics.0 != Self::SIGNATURE_HASH {
2961                    return Err(
2962                        alloy_sol_types::Error::invalid_event_signature_hash(
2963                            Self::SIGNATURE,
2964                            topics.0,
2965                            Self::SIGNATURE_HASH,
2966                        ),
2967                    );
2968                }
2969                Ok(())
2970            }
2971            #[inline]
2972            fn tokenize_body(&self) -> Self::DataToken<'_> {
2973                ()
2974            }
2975            #[inline]
2976            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2977                (
2978                    Self::SIGNATURE_HASH.into(),
2979                    self.previousOwner.clone(),
2980                    self.newOwner.clone(),
2981                )
2982            }
2983            #[inline]
2984            fn encode_topics_raw(
2985                &self,
2986                out: &mut [alloy_sol_types::abi::token::WordToken],
2987            ) -> alloy_sol_types::Result<()> {
2988                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2989                    return Err(alloy_sol_types::Error::Overrun);
2990                }
2991                out[0usize] = alloy_sol_types::abi::token::WordToken(
2992                    Self::SIGNATURE_HASH,
2993                );
2994                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2995                    &self.previousOwner,
2996                );
2997                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2998                    &self.newOwner,
2999                );
3000                Ok(())
3001            }
3002        }
3003        #[automatically_derived]
3004        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
3005            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3006                From::from(self)
3007            }
3008            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3009                From::from(&self)
3010            }
3011        }
3012        #[automatically_derived]
3013        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
3014            #[inline]
3015            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
3016                alloy_sol_types::SolEvent::encode_log_data(this)
3017            }
3018        }
3019    };
3020    #[derive(serde::Serialize, serde::Deserialize)]
3021    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3022    /**Event with signature `Paused(address)` and selector `0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258`.
3023```solidity
3024event Paused(address account);
3025```*/
3026    #[allow(
3027        non_camel_case_types,
3028        non_snake_case,
3029        clippy::pub_underscore_fields,
3030        clippy::style
3031    )]
3032    #[derive(Clone)]
3033    pub struct Paused {
3034        #[allow(missing_docs)]
3035        pub account: alloy::sol_types::private::Address,
3036    }
3037    #[allow(
3038        non_camel_case_types,
3039        non_snake_case,
3040        clippy::pub_underscore_fields,
3041        clippy::style
3042    )]
3043    const _: () = {
3044        use alloy::sol_types as alloy_sol_types;
3045        #[automatically_derived]
3046        impl alloy_sol_types::SolEvent for Paused {
3047            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3048            type DataToken<'a> = <Self::DataTuple<
3049                'a,
3050            > as alloy_sol_types::SolType>::Token<'a>;
3051            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3052            const SIGNATURE: &'static str = "Paused(address)";
3053            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3054                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
3055                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
3056                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
3057            ]);
3058            const ANONYMOUS: bool = false;
3059            #[allow(unused_variables)]
3060            #[inline]
3061            fn new(
3062                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3063                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3064            ) -> Self {
3065                Self { account: data.0 }
3066            }
3067            #[inline]
3068            fn check_signature(
3069                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3070            ) -> alloy_sol_types::Result<()> {
3071                if topics.0 != Self::SIGNATURE_HASH {
3072                    return Err(
3073                        alloy_sol_types::Error::invalid_event_signature_hash(
3074                            Self::SIGNATURE,
3075                            topics.0,
3076                            Self::SIGNATURE_HASH,
3077                        ),
3078                    );
3079                }
3080                Ok(())
3081            }
3082            #[inline]
3083            fn tokenize_body(&self) -> Self::DataToken<'_> {
3084                (
3085                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3086                        &self.account,
3087                    ),
3088                )
3089            }
3090            #[inline]
3091            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3092                (Self::SIGNATURE_HASH.into(),)
3093            }
3094            #[inline]
3095            fn encode_topics_raw(
3096                &self,
3097                out: &mut [alloy_sol_types::abi::token::WordToken],
3098            ) -> alloy_sol_types::Result<()> {
3099                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3100                    return Err(alloy_sol_types::Error::Overrun);
3101                }
3102                out[0usize] = alloy_sol_types::abi::token::WordToken(
3103                    Self::SIGNATURE_HASH,
3104                );
3105                Ok(())
3106            }
3107        }
3108        #[automatically_derived]
3109        impl alloy_sol_types::private::IntoLogData for Paused {
3110            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3111                From::from(self)
3112            }
3113            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3114                From::from(&self)
3115            }
3116        }
3117        #[automatically_derived]
3118        impl From<&Paused> for alloy_sol_types::private::LogData {
3119            #[inline]
3120            fn from(this: &Paused) -> alloy_sol_types::private::LogData {
3121                alloy_sol_types::SolEvent::encode_log_data(this)
3122            }
3123        }
3124    };
3125    #[derive(serde::Serialize, serde::Deserialize)]
3126    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3127    /**Event with signature `RewardsClaimed(address,uint256)` and selector `0xfc30cddea38e2bf4d6ea7d3f9ed3b6ad7f176419f4963bd81318067a4aee73fe`.
3128```solidity
3129event RewardsClaimed(address indexed user, uint256 amount);
3130```*/
3131    #[allow(
3132        non_camel_case_types,
3133        non_snake_case,
3134        clippy::pub_underscore_fields,
3135        clippy::style
3136    )]
3137    #[derive(Clone)]
3138    pub struct RewardsClaimed {
3139        #[allow(missing_docs)]
3140        pub user: alloy::sol_types::private::Address,
3141        #[allow(missing_docs)]
3142        pub amount: alloy::sol_types::private::primitives::aliases::U256,
3143    }
3144    #[allow(
3145        non_camel_case_types,
3146        non_snake_case,
3147        clippy::pub_underscore_fields,
3148        clippy::style
3149    )]
3150    const _: () = {
3151        use alloy::sol_types as alloy_sol_types;
3152        #[automatically_derived]
3153        impl alloy_sol_types::SolEvent for RewardsClaimed {
3154            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3155            type DataToken<'a> = <Self::DataTuple<
3156                'a,
3157            > as alloy_sol_types::SolType>::Token<'a>;
3158            type TopicList = (
3159                alloy_sol_types::sol_data::FixedBytes<32>,
3160                alloy::sol_types::sol_data::Address,
3161            );
3162            const SIGNATURE: &'static str = "RewardsClaimed(address,uint256)";
3163            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3164                252u8, 48u8, 205u8, 222u8, 163u8, 142u8, 43u8, 244u8, 214u8, 234u8,
3165                125u8, 63u8, 158u8, 211u8, 182u8, 173u8, 127u8, 23u8, 100u8, 25u8, 244u8,
3166                150u8, 59u8, 216u8, 19u8, 24u8, 6u8, 122u8, 74u8, 238u8, 115u8, 254u8,
3167            ]);
3168            const ANONYMOUS: bool = false;
3169            #[allow(unused_variables)]
3170            #[inline]
3171            fn new(
3172                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3173                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3174            ) -> Self {
3175                Self {
3176                    user: topics.1,
3177                    amount: data.0,
3178                }
3179            }
3180            #[inline]
3181            fn check_signature(
3182                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3183            ) -> alloy_sol_types::Result<()> {
3184                if topics.0 != Self::SIGNATURE_HASH {
3185                    return Err(
3186                        alloy_sol_types::Error::invalid_event_signature_hash(
3187                            Self::SIGNATURE,
3188                            topics.0,
3189                            Self::SIGNATURE_HASH,
3190                        ),
3191                    );
3192                }
3193                Ok(())
3194            }
3195            #[inline]
3196            fn tokenize_body(&self) -> Self::DataToken<'_> {
3197                (
3198                    <alloy::sol_types::sol_data::Uint<
3199                        256,
3200                    > as alloy_sol_types::SolType>::tokenize(&self.amount),
3201                )
3202            }
3203            #[inline]
3204            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3205                (Self::SIGNATURE_HASH.into(), self.user.clone())
3206            }
3207            #[inline]
3208            fn encode_topics_raw(
3209                &self,
3210                out: &mut [alloy_sol_types::abi::token::WordToken],
3211            ) -> alloy_sol_types::Result<()> {
3212                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3213                    return Err(alloy_sol_types::Error::Overrun);
3214                }
3215                out[0usize] = alloy_sol_types::abi::token::WordToken(
3216                    Self::SIGNATURE_HASH,
3217                );
3218                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3219                    &self.user,
3220                );
3221                Ok(())
3222            }
3223        }
3224        #[automatically_derived]
3225        impl alloy_sol_types::private::IntoLogData for RewardsClaimed {
3226            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3227                From::from(self)
3228            }
3229            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3230                From::from(&self)
3231            }
3232        }
3233        #[automatically_derived]
3234        impl From<&RewardsClaimed> for alloy_sol_types::private::LogData {
3235            #[inline]
3236            fn from(this: &RewardsClaimed) -> alloy_sol_types::private::LogData {
3237                alloy_sol_types::SolEvent::encode_log_data(this)
3238            }
3239        }
3240    };
3241    #[derive(serde::Serialize, serde::Deserialize)]
3242    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3243    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
3244```solidity
3245event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
3246```*/
3247    #[allow(
3248        non_camel_case_types,
3249        non_snake_case,
3250        clippy::pub_underscore_fields,
3251        clippy::style
3252    )]
3253    #[derive(Clone)]
3254    pub struct RoleAdminChanged {
3255        #[allow(missing_docs)]
3256        pub role: alloy::sol_types::private::FixedBytes<32>,
3257        #[allow(missing_docs)]
3258        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
3259        #[allow(missing_docs)]
3260        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
3261    }
3262    #[allow(
3263        non_camel_case_types,
3264        non_snake_case,
3265        clippy::pub_underscore_fields,
3266        clippy::style
3267    )]
3268    const _: () = {
3269        use alloy::sol_types as alloy_sol_types;
3270        #[automatically_derived]
3271        impl alloy_sol_types::SolEvent for RoleAdminChanged {
3272            type DataTuple<'a> = ();
3273            type DataToken<'a> = <Self::DataTuple<
3274                'a,
3275            > as alloy_sol_types::SolType>::Token<'a>;
3276            type TopicList = (
3277                alloy_sol_types::sol_data::FixedBytes<32>,
3278                alloy::sol_types::sol_data::FixedBytes<32>,
3279                alloy::sol_types::sol_data::FixedBytes<32>,
3280                alloy::sol_types::sol_data::FixedBytes<32>,
3281            );
3282            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
3283            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3284                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
3285                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
3286                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
3287            ]);
3288            const ANONYMOUS: bool = false;
3289            #[allow(unused_variables)]
3290            #[inline]
3291            fn new(
3292                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3293                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3294            ) -> Self {
3295                Self {
3296                    role: topics.1,
3297                    previousAdminRole: topics.2,
3298                    newAdminRole: topics.3,
3299                }
3300            }
3301            #[inline]
3302            fn check_signature(
3303                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3304            ) -> alloy_sol_types::Result<()> {
3305                if topics.0 != Self::SIGNATURE_HASH {
3306                    return Err(
3307                        alloy_sol_types::Error::invalid_event_signature_hash(
3308                            Self::SIGNATURE,
3309                            topics.0,
3310                            Self::SIGNATURE_HASH,
3311                        ),
3312                    );
3313                }
3314                Ok(())
3315            }
3316            #[inline]
3317            fn tokenize_body(&self) -> Self::DataToken<'_> {
3318                ()
3319            }
3320            #[inline]
3321            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3322                (
3323                    Self::SIGNATURE_HASH.into(),
3324                    self.role.clone(),
3325                    self.previousAdminRole.clone(),
3326                    self.newAdminRole.clone(),
3327                )
3328            }
3329            #[inline]
3330            fn encode_topics_raw(
3331                &self,
3332                out: &mut [alloy_sol_types::abi::token::WordToken],
3333            ) -> alloy_sol_types::Result<()> {
3334                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3335                    return Err(alloy_sol_types::Error::Overrun);
3336                }
3337                out[0usize] = alloy_sol_types::abi::token::WordToken(
3338                    Self::SIGNATURE_HASH,
3339                );
3340                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3341                    32,
3342                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3343                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
3344                    32,
3345                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
3346                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
3347                    32,
3348                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
3349                Ok(())
3350            }
3351        }
3352        #[automatically_derived]
3353        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
3354            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3355                From::from(self)
3356            }
3357            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3358                From::from(&self)
3359            }
3360        }
3361        #[automatically_derived]
3362        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
3363            #[inline]
3364            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
3365                alloy_sol_types::SolEvent::encode_log_data(this)
3366            }
3367        }
3368    };
3369    #[derive(serde::Serialize, serde::Deserialize)]
3370    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3371    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
3372```solidity
3373event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
3374```*/
3375    #[allow(
3376        non_camel_case_types,
3377        non_snake_case,
3378        clippy::pub_underscore_fields,
3379        clippy::style
3380    )]
3381    #[derive(Clone)]
3382    pub struct RoleGranted {
3383        #[allow(missing_docs)]
3384        pub role: alloy::sol_types::private::FixedBytes<32>,
3385        #[allow(missing_docs)]
3386        pub account: alloy::sol_types::private::Address,
3387        #[allow(missing_docs)]
3388        pub sender: alloy::sol_types::private::Address,
3389    }
3390    #[allow(
3391        non_camel_case_types,
3392        non_snake_case,
3393        clippy::pub_underscore_fields,
3394        clippy::style
3395    )]
3396    const _: () = {
3397        use alloy::sol_types as alloy_sol_types;
3398        #[automatically_derived]
3399        impl alloy_sol_types::SolEvent for RoleGranted {
3400            type DataTuple<'a> = ();
3401            type DataToken<'a> = <Self::DataTuple<
3402                'a,
3403            > as alloy_sol_types::SolType>::Token<'a>;
3404            type TopicList = (
3405                alloy_sol_types::sol_data::FixedBytes<32>,
3406                alloy::sol_types::sol_data::FixedBytes<32>,
3407                alloy::sol_types::sol_data::Address,
3408                alloy::sol_types::sol_data::Address,
3409            );
3410            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
3411            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3412                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
3413                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
3414                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
3415            ]);
3416            const ANONYMOUS: bool = false;
3417            #[allow(unused_variables)]
3418            #[inline]
3419            fn new(
3420                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3421                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3422            ) -> Self {
3423                Self {
3424                    role: topics.1,
3425                    account: topics.2,
3426                    sender: topics.3,
3427                }
3428            }
3429            #[inline]
3430            fn check_signature(
3431                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3432            ) -> alloy_sol_types::Result<()> {
3433                if topics.0 != Self::SIGNATURE_HASH {
3434                    return Err(
3435                        alloy_sol_types::Error::invalid_event_signature_hash(
3436                            Self::SIGNATURE,
3437                            topics.0,
3438                            Self::SIGNATURE_HASH,
3439                        ),
3440                    );
3441                }
3442                Ok(())
3443            }
3444            #[inline]
3445            fn tokenize_body(&self) -> Self::DataToken<'_> {
3446                ()
3447            }
3448            #[inline]
3449            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3450                (
3451                    Self::SIGNATURE_HASH.into(),
3452                    self.role.clone(),
3453                    self.account.clone(),
3454                    self.sender.clone(),
3455                )
3456            }
3457            #[inline]
3458            fn encode_topics_raw(
3459                &self,
3460                out: &mut [alloy_sol_types::abi::token::WordToken],
3461            ) -> alloy_sol_types::Result<()> {
3462                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3463                    return Err(alloy_sol_types::Error::Overrun);
3464                }
3465                out[0usize] = alloy_sol_types::abi::token::WordToken(
3466                    Self::SIGNATURE_HASH,
3467                );
3468                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3469                    32,
3470                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3471                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3472                    &self.account,
3473                );
3474                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3475                    &self.sender,
3476                );
3477                Ok(())
3478            }
3479        }
3480        #[automatically_derived]
3481        impl alloy_sol_types::private::IntoLogData for RoleGranted {
3482            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3483                From::from(self)
3484            }
3485            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3486                From::from(&self)
3487            }
3488        }
3489        #[automatically_derived]
3490        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
3491            #[inline]
3492            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
3493                alloy_sol_types::SolEvent::encode_log_data(this)
3494            }
3495        }
3496    };
3497    #[derive(serde::Serialize, serde::Deserialize)]
3498    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3499    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
3500```solidity
3501event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
3502```*/
3503    #[allow(
3504        non_camel_case_types,
3505        non_snake_case,
3506        clippy::pub_underscore_fields,
3507        clippy::style
3508    )]
3509    #[derive(Clone)]
3510    pub struct RoleRevoked {
3511        #[allow(missing_docs)]
3512        pub role: alloy::sol_types::private::FixedBytes<32>,
3513        #[allow(missing_docs)]
3514        pub account: alloy::sol_types::private::Address,
3515        #[allow(missing_docs)]
3516        pub sender: alloy::sol_types::private::Address,
3517    }
3518    #[allow(
3519        non_camel_case_types,
3520        non_snake_case,
3521        clippy::pub_underscore_fields,
3522        clippy::style
3523    )]
3524    const _: () = {
3525        use alloy::sol_types as alloy_sol_types;
3526        #[automatically_derived]
3527        impl alloy_sol_types::SolEvent for RoleRevoked {
3528            type DataTuple<'a> = ();
3529            type DataToken<'a> = <Self::DataTuple<
3530                'a,
3531            > as alloy_sol_types::SolType>::Token<'a>;
3532            type TopicList = (
3533                alloy_sol_types::sol_data::FixedBytes<32>,
3534                alloy::sol_types::sol_data::FixedBytes<32>,
3535                alloy::sol_types::sol_data::Address,
3536                alloy::sol_types::sol_data::Address,
3537            );
3538            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
3539            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3540                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
3541                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
3542                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
3543            ]);
3544            const ANONYMOUS: bool = false;
3545            #[allow(unused_variables)]
3546            #[inline]
3547            fn new(
3548                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3549                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3550            ) -> Self {
3551                Self {
3552                    role: topics.1,
3553                    account: topics.2,
3554                    sender: topics.3,
3555                }
3556            }
3557            #[inline]
3558            fn check_signature(
3559                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3560            ) -> alloy_sol_types::Result<()> {
3561                if topics.0 != Self::SIGNATURE_HASH {
3562                    return Err(
3563                        alloy_sol_types::Error::invalid_event_signature_hash(
3564                            Self::SIGNATURE,
3565                            topics.0,
3566                            Self::SIGNATURE_HASH,
3567                        ),
3568                    );
3569                }
3570                Ok(())
3571            }
3572            #[inline]
3573            fn tokenize_body(&self) -> Self::DataToken<'_> {
3574                ()
3575            }
3576            #[inline]
3577            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3578                (
3579                    Self::SIGNATURE_HASH.into(),
3580                    self.role.clone(),
3581                    self.account.clone(),
3582                    self.sender.clone(),
3583                )
3584            }
3585            #[inline]
3586            fn encode_topics_raw(
3587                &self,
3588                out: &mut [alloy_sol_types::abi::token::WordToken],
3589            ) -> alloy_sol_types::Result<()> {
3590                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3591                    return Err(alloy_sol_types::Error::Overrun);
3592                }
3593                out[0usize] = alloy_sol_types::abi::token::WordToken(
3594                    Self::SIGNATURE_HASH,
3595                );
3596                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3597                    32,
3598                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3599                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3600                    &self.account,
3601                );
3602                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3603                    &self.sender,
3604                );
3605                Ok(())
3606            }
3607        }
3608        #[automatically_derived]
3609        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
3610            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3611                From::from(self)
3612            }
3613            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3614                From::from(&self)
3615            }
3616        }
3617        #[automatically_derived]
3618        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
3619            #[inline]
3620            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
3621                alloy_sol_types::SolEvent::encode_log_data(this)
3622            }
3623        }
3624    };
3625    #[derive(serde::Serialize, serde::Deserialize)]
3626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3627    /**Event with signature `Unpaused(address)` and selector `0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa`.
3628```solidity
3629event Unpaused(address account);
3630```*/
3631    #[allow(
3632        non_camel_case_types,
3633        non_snake_case,
3634        clippy::pub_underscore_fields,
3635        clippy::style
3636    )]
3637    #[derive(Clone)]
3638    pub struct Unpaused {
3639        #[allow(missing_docs)]
3640        pub account: alloy::sol_types::private::Address,
3641    }
3642    #[allow(
3643        non_camel_case_types,
3644        non_snake_case,
3645        clippy::pub_underscore_fields,
3646        clippy::style
3647    )]
3648    const _: () = {
3649        use alloy::sol_types as alloy_sol_types;
3650        #[automatically_derived]
3651        impl alloy_sol_types::SolEvent for Unpaused {
3652            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3653            type DataToken<'a> = <Self::DataTuple<
3654                'a,
3655            > as alloy_sol_types::SolType>::Token<'a>;
3656            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3657            const SIGNATURE: &'static str = "Unpaused(address)";
3658            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3659                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
3660                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
3661                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
3662            ]);
3663            const ANONYMOUS: bool = false;
3664            #[allow(unused_variables)]
3665            #[inline]
3666            fn new(
3667                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3668                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3669            ) -> Self {
3670                Self { account: data.0 }
3671            }
3672            #[inline]
3673            fn check_signature(
3674                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3675            ) -> alloy_sol_types::Result<()> {
3676                if topics.0 != Self::SIGNATURE_HASH {
3677                    return Err(
3678                        alloy_sol_types::Error::invalid_event_signature_hash(
3679                            Self::SIGNATURE,
3680                            topics.0,
3681                            Self::SIGNATURE_HASH,
3682                        ),
3683                    );
3684                }
3685                Ok(())
3686            }
3687            #[inline]
3688            fn tokenize_body(&self) -> Self::DataToken<'_> {
3689                (
3690                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3691                        &self.account,
3692                    ),
3693                )
3694            }
3695            #[inline]
3696            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3697                (Self::SIGNATURE_HASH.into(),)
3698            }
3699            #[inline]
3700            fn encode_topics_raw(
3701                &self,
3702                out: &mut [alloy_sol_types::abi::token::WordToken],
3703            ) -> alloy_sol_types::Result<()> {
3704                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3705                    return Err(alloy_sol_types::Error::Overrun);
3706                }
3707                out[0usize] = alloy_sol_types::abi::token::WordToken(
3708                    Self::SIGNATURE_HASH,
3709                );
3710                Ok(())
3711            }
3712        }
3713        #[automatically_derived]
3714        impl alloy_sol_types::private::IntoLogData for Unpaused {
3715            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3716                From::from(self)
3717            }
3718            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3719                From::from(&self)
3720            }
3721        }
3722        #[automatically_derived]
3723        impl From<&Unpaused> for alloy_sol_types::private::LogData {
3724            #[inline]
3725            fn from(this: &Unpaused) -> alloy_sol_types::private::LogData {
3726                alloy_sol_types::SolEvent::encode_log_data(this)
3727            }
3728        }
3729    };
3730    #[derive(serde::Serialize, serde::Deserialize)]
3731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3732    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
3733```solidity
3734event Upgrade(address implementation);
3735```*/
3736    #[allow(
3737        non_camel_case_types,
3738        non_snake_case,
3739        clippy::pub_underscore_fields,
3740        clippy::style
3741    )]
3742    #[derive(Clone)]
3743    pub struct Upgrade {
3744        #[allow(missing_docs)]
3745        pub implementation: alloy::sol_types::private::Address,
3746    }
3747    #[allow(
3748        non_camel_case_types,
3749        non_snake_case,
3750        clippy::pub_underscore_fields,
3751        clippy::style
3752    )]
3753    const _: () = {
3754        use alloy::sol_types as alloy_sol_types;
3755        #[automatically_derived]
3756        impl alloy_sol_types::SolEvent for Upgrade {
3757            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
3758            type DataToken<'a> = <Self::DataTuple<
3759                'a,
3760            > as alloy_sol_types::SolType>::Token<'a>;
3761            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
3762            const SIGNATURE: &'static str = "Upgrade(address)";
3763            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3764                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
3765                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
3766                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
3767            ]);
3768            const ANONYMOUS: bool = false;
3769            #[allow(unused_variables)]
3770            #[inline]
3771            fn new(
3772                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3773                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3774            ) -> Self {
3775                Self { implementation: data.0 }
3776            }
3777            #[inline]
3778            fn check_signature(
3779                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3780            ) -> alloy_sol_types::Result<()> {
3781                if topics.0 != Self::SIGNATURE_HASH {
3782                    return Err(
3783                        alloy_sol_types::Error::invalid_event_signature_hash(
3784                            Self::SIGNATURE,
3785                            topics.0,
3786                            Self::SIGNATURE_HASH,
3787                        ),
3788                    );
3789                }
3790                Ok(())
3791            }
3792            #[inline]
3793            fn tokenize_body(&self) -> Self::DataToken<'_> {
3794                (
3795                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3796                        &self.implementation,
3797                    ),
3798                )
3799            }
3800            #[inline]
3801            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3802                (Self::SIGNATURE_HASH.into(),)
3803            }
3804            #[inline]
3805            fn encode_topics_raw(
3806                &self,
3807                out: &mut [alloy_sol_types::abi::token::WordToken],
3808            ) -> alloy_sol_types::Result<()> {
3809                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3810                    return Err(alloy_sol_types::Error::Overrun);
3811                }
3812                out[0usize] = alloy_sol_types::abi::token::WordToken(
3813                    Self::SIGNATURE_HASH,
3814                );
3815                Ok(())
3816            }
3817        }
3818        #[automatically_derived]
3819        impl alloy_sol_types::private::IntoLogData for Upgrade {
3820            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3821                From::from(self)
3822            }
3823            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3824                From::from(&self)
3825            }
3826        }
3827        #[automatically_derived]
3828        impl From<&Upgrade> for alloy_sol_types::private::LogData {
3829            #[inline]
3830            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
3831                alloy_sol_types::SolEvent::encode_log_data(this)
3832            }
3833        }
3834    };
3835    #[derive(serde::Serialize, serde::Deserialize)]
3836    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3837    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
3838```solidity
3839event Upgraded(address indexed implementation);
3840```*/
3841    #[allow(
3842        non_camel_case_types,
3843        non_snake_case,
3844        clippy::pub_underscore_fields,
3845        clippy::style
3846    )]
3847    #[derive(Clone)]
3848    pub struct Upgraded {
3849        #[allow(missing_docs)]
3850        pub implementation: alloy::sol_types::private::Address,
3851    }
3852    #[allow(
3853        non_camel_case_types,
3854        non_snake_case,
3855        clippy::pub_underscore_fields,
3856        clippy::style
3857    )]
3858    const _: () = {
3859        use alloy::sol_types as alloy_sol_types;
3860        #[automatically_derived]
3861        impl alloy_sol_types::SolEvent for Upgraded {
3862            type DataTuple<'a> = ();
3863            type DataToken<'a> = <Self::DataTuple<
3864                'a,
3865            > as alloy_sol_types::SolType>::Token<'a>;
3866            type TopicList = (
3867                alloy_sol_types::sol_data::FixedBytes<32>,
3868                alloy::sol_types::sol_data::Address,
3869            );
3870            const SIGNATURE: &'static str = "Upgraded(address)";
3871            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3872                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
3873                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
3874                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
3875            ]);
3876            const ANONYMOUS: bool = false;
3877            #[allow(unused_variables)]
3878            #[inline]
3879            fn new(
3880                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3881                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3882            ) -> Self {
3883                Self { implementation: topics.1 }
3884            }
3885            #[inline]
3886            fn check_signature(
3887                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3888            ) -> alloy_sol_types::Result<()> {
3889                if topics.0 != Self::SIGNATURE_HASH {
3890                    return Err(
3891                        alloy_sol_types::Error::invalid_event_signature_hash(
3892                            Self::SIGNATURE,
3893                            topics.0,
3894                            Self::SIGNATURE_HASH,
3895                        ),
3896                    );
3897                }
3898                Ok(())
3899            }
3900            #[inline]
3901            fn tokenize_body(&self) -> Self::DataToken<'_> {
3902                ()
3903            }
3904            #[inline]
3905            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3906                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
3907            }
3908            #[inline]
3909            fn encode_topics_raw(
3910                &self,
3911                out: &mut [alloy_sol_types::abi::token::WordToken],
3912            ) -> alloy_sol_types::Result<()> {
3913                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3914                    return Err(alloy_sol_types::Error::Overrun);
3915                }
3916                out[0usize] = alloy_sol_types::abi::token::WordToken(
3917                    Self::SIGNATURE_HASH,
3918                );
3919                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3920                    &self.implementation,
3921                );
3922                Ok(())
3923            }
3924        }
3925        #[automatically_derived]
3926        impl alloy_sol_types::private::IntoLogData for Upgraded {
3927            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3928                From::from(self)
3929            }
3930            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3931                From::from(&self)
3932            }
3933        }
3934        #[automatically_derived]
3935        impl From<&Upgraded> for alloy_sol_types::private::LogData {
3936            #[inline]
3937            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
3938                alloy_sol_types::SolEvent::encode_log_data(this)
3939            }
3940        }
3941    };
3942    /**Constructor`.
3943```solidity
3944constructor();
3945```*/
3946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3947    #[derive(Clone)]
3948    pub struct constructorCall {}
3949    const _: () = {
3950        use alloy::sol_types as alloy_sol_types;
3951        {
3952            #[doc(hidden)]
3953            type UnderlyingSolTuple<'a> = ();
3954            #[doc(hidden)]
3955            type UnderlyingRustTuple<'a> = ();
3956            #[cfg(test)]
3957            #[allow(dead_code, unreachable_patterns)]
3958            fn _type_assertion(
3959                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3960            ) {
3961                match _t {
3962                    alloy_sol_types::private::AssertTypeEq::<
3963                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3964                    >(_) => {}
3965                }
3966            }
3967            #[automatically_derived]
3968            #[doc(hidden)]
3969            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3970                fn from(value: constructorCall) -> Self {
3971                    ()
3972                }
3973            }
3974            #[automatically_derived]
3975            #[doc(hidden)]
3976            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3977                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3978                    Self {}
3979                }
3980            }
3981        }
3982        #[automatically_derived]
3983        impl alloy_sol_types::SolConstructor for constructorCall {
3984            type Parameters<'a> = ();
3985            type Token<'a> = <Self::Parameters<
3986                'a,
3987            > as alloy_sol_types::SolType>::Token<'a>;
3988            #[inline]
3989            fn new<'a>(
3990                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3991            ) -> Self {
3992                tuple.into()
3993            }
3994            #[inline]
3995            fn tokenize(&self) -> Self::Token<'_> {
3996                ()
3997            }
3998        }
3999    };
4000    #[derive(serde::Serialize, serde::Deserialize)]
4001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4002    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
4003```solidity
4004function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
4005```*/
4006    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4007    #[derive(Clone)]
4008    pub struct DEFAULT_ADMIN_ROLECall;
4009    #[derive(serde::Serialize, serde::Deserialize)]
4010    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4011    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
4012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4013    #[derive(Clone)]
4014    pub struct DEFAULT_ADMIN_ROLEReturn {
4015        #[allow(missing_docs)]
4016        pub _0: alloy::sol_types::private::FixedBytes<32>,
4017    }
4018    #[allow(
4019        non_camel_case_types,
4020        non_snake_case,
4021        clippy::pub_underscore_fields,
4022        clippy::style
4023    )]
4024    const _: () = {
4025        use alloy::sol_types as alloy_sol_types;
4026        {
4027            #[doc(hidden)]
4028            type UnderlyingSolTuple<'a> = ();
4029            #[doc(hidden)]
4030            type UnderlyingRustTuple<'a> = ();
4031            #[cfg(test)]
4032            #[allow(dead_code, unreachable_patterns)]
4033            fn _type_assertion(
4034                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4035            ) {
4036                match _t {
4037                    alloy_sol_types::private::AssertTypeEq::<
4038                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4039                    >(_) => {}
4040                }
4041            }
4042            #[automatically_derived]
4043            #[doc(hidden)]
4044            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
4045            for UnderlyingRustTuple<'_> {
4046                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
4047                    ()
4048                }
4049            }
4050            #[automatically_derived]
4051            #[doc(hidden)]
4052            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4053            for DEFAULT_ADMIN_ROLECall {
4054                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4055                    Self
4056                }
4057            }
4058        }
4059        {
4060            #[doc(hidden)]
4061            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4062            #[doc(hidden)]
4063            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4064            #[cfg(test)]
4065            #[allow(dead_code, unreachable_patterns)]
4066            fn _type_assertion(
4067                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4068            ) {
4069                match _t {
4070                    alloy_sol_types::private::AssertTypeEq::<
4071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4072                    >(_) => {}
4073                }
4074            }
4075            #[automatically_derived]
4076            #[doc(hidden)]
4077            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
4078            for UnderlyingRustTuple<'_> {
4079                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
4080                    (value._0,)
4081                }
4082            }
4083            #[automatically_derived]
4084            #[doc(hidden)]
4085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4086            for DEFAULT_ADMIN_ROLEReturn {
4087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4088                    Self { _0: tuple.0 }
4089                }
4090            }
4091        }
4092        #[automatically_derived]
4093        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
4094            type Parameters<'a> = ();
4095            type Token<'a> = <Self::Parameters<
4096                'a,
4097            > as alloy_sol_types::SolType>::Token<'a>;
4098            type Return = alloy::sol_types::private::FixedBytes<32>;
4099            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4100            type ReturnToken<'a> = <Self::ReturnTuple<
4101                'a,
4102            > as alloy_sol_types::SolType>::Token<'a>;
4103            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
4104            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
4105            #[inline]
4106            fn new<'a>(
4107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4108            ) -> Self {
4109                tuple.into()
4110            }
4111            #[inline]
4112            fn tokenize(&self) -> Self::Token<'_> {
4113                ()
4114            }
4115            #[inline]
4116            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4117                (
4118                    <alloy::sol_types::sol_data::FixedBytes<
4119                        32,
4120                    > as alloy_sol_types::SolType>::tokenize(ret),
4121                )
4122            }
4123            #[inline]
4124            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4125                <Self::ReturnTuple<
4126                    '_,
4127                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4128                    .map(|r| {
4129                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
4130                        r._0
4131                    })
4132            }
4133            #[inline]
4134            fn abi_decode_returns_validate(
4135                data: &[u8],
4136            ) -> alloy_sol_types::Result<Self::Return> {
4137                <Self::ReturnTuple<
4138                    '_,
4139                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4140                    .map(|r| {
4141                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
4142                        r._0
4143                    })
4144            }
4145        }
4146    };
4147    #[derive(serde::Serialize, serde::Deserialize)]
4148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4149    /**Function with signature `PAUSER_ROLE()` and selector `0xe63ab1e9`.
4150```solidity
4151function PAUSER_ROLE() external view returns (bytes32);
4152```*/
4153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4154    #[derive(Clone)]
4155    pub struct PAUSER_ROLECall;
4156    #[derive(serde::Serialize, serde::Deserialize)]
4157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4158    ///Container type for the return parameters of the [`PAUSER_ROLE()`](PAUSER_ROLECall) function.
4159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4160    #[derive(Clone)]
4161    pub struct PAUSER_ROLEReturn {
4162        #[allow(missing_docs)]
4163        pub _0: alloy::sol_types::private::FixedBytes<32>,
4164    }
4165    #[allow(
4166        non_camel_case_types,
4167        non_snake_case,
4168        clippy::pub_underscore_fields,
4169        clippy::style
4170    )]
4171    const _: () = {
4172        use alloy::sol_types as alloy_sol_types;
4173        {
4174            #[doc(hidden)]
4175            type UnderlyingSolTuple<'a> = ();
4176            #[doc(hidden)]
4177            type UnderlyingRustTuple<'a> = ();
4178            #[cfg(test)]
4179            #[allow(dead_code, unreachable_patterns)]
4180            fn _type_assertion(
4181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4182            ) {
4183                match _t {
4184                    alloy_sol_types::private::AssertTypeEq::<
4185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4186                    >(_) => {}
4187                }
4188            }
4189            #[automatically_derived]
4190            #[doc(hidden)]
4191            impl ::core::convert::From<PAUSER_ROLECall> for UnderlyingRustTuple<'_> {
4192                fn from(value: PAUSER_ROLECall) -> Self {
4193                    ()
4194                }
4195            }
4196            #[automatically_derived]
4197            #[doc(hidden)]
4198            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLECall {
4199                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4200                    Self
4201                }
4202            }
4203        }
4204        {
4205            #[doc(hidden)]
4206            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4207            #[doc(hidden)]
4208            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4209            #[cfg(test)]
4210            #[allow(dead_code, unreachable_patterns)]
4211            fn _type_assertion(
4212                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4213            ) {
4214                match _t {
4215                    alloy_sol_types::private::AssertTypeEq::<
4216                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4217                    >(_) => {}
4218                }
4219            }
4220            #[automatically_derived]
4221            #[doc(hidden)]
4222            impl ::core::convert::From<PAUSER_ROLEReturn> for UnderlyingRustTuple<'_> {
4223                fn from(value: PAUSER_ROLEReturn) -> Self {
4224                    (value._0,)
4225                }
4226            }
4227            #[automatically_derived]
4228            #[doc(hidden)]
4229            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PAUSER_ROLEReturn {
4230                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4231                    Self { _0: tuple.0 }
4232                }
4233            }
4234        }
4235        #[automatically_derived]
4236        impl alloy_sol_types::SolCall for PAUSER_ROLECall {
4237            type Parameters<'a> = ();
4238            type Token<'a> = <Self::Parameters<
4239                'a,
4240            > as alloy_sol_types::SolType>::Token<'a>;
4241            type Return = alloy::sol_types::private::FixedBytes<32>;
4242            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4243            type ReturnToken<'a> = <Self::ReturnTuple<
4244                'a,
4245            > as alloy_sol_types::SolType>::Token<'a>;
4246            const SIGNATURE: &'static str = "PAUSER_ROLE()";
4247            const SELECTOR: [u8; 4] = [230u8, 58u8, 177u8, 233u8];
4248            #[inline]
4249            fn new<'a>(
4250                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4251            ) -> Self {
4252                tuple.into()
4253            }
4254            #[inline]
4255            fn tokenize(&self) -> Self::Token<'_> {
4256                ()
4257            }
4258            #[inline]
4259            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4260                (
4261                    <alloy::sol_types::sol_data::FixedBytes<
4262                        32,
4263                    > as alloy_sol_types::SolType>::tokenize(ret),
4264                )
4265            }
4266            #[inline]
4267            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4268                <Self::ReturnTuple<
4269                    '_,
4270                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4271                    .map(|r| {
4272                        let r: PAUSER_ROLEReturn = r.into();
4273                        r._0
4274                    })
4275            }
4276            #[inline]
4277            fn abi_decode_returns_validate(
4278                data: &[u8],
4279            ) -> alloy_sol_types::Result<Self::Return> {
4280                <Self::ReturnTuple<
4281                    '_,
4282                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4283                    .map(|r| {
4284                        let r: PAUSER_ROLEReturn = r.into();
4285                        r._0
4286                    })
4287            }
4288        }
4289    };
4290    #[derive(serde::Serialize, serde::Deserialize)]
4291    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4292    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
4293```solidity
4294function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
4295```*/
4296    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4297    #[derive(Clone)]
4298    pub struct UPGRADE_INTERFACE_VERSIONCall;
4299    #[derive(serde::Serialize, serde::Deserialize)]
4300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4301    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
4302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4303    #[derive(Clone)]
4304    pub struct UPGRADE_INTERFACE_VERSIONReturn {
4305        #[allow(missing_docs)]
4306        pub _0: alloy::sol_types::private::String,
4307    }
4308    #[allow(
4309        non_camel_case_types,
4310        non_snake_case,
4311        clippy::pub_underscore_fields,
4312        clippy::style
4313    )]
4314    const _: () = {
4315        use alloy::sol_types as alloy_sol_types;
4316        {
4317            #[doc(hidden)]
4318            type UnderlyingSolTuple<'a> = ();
4319            #[doc(hidden)]
4320            type UnderlyingRustTuple<'a> = ();
4321            #[cfg(test)]
4322            #[allow(dead_code, unreachable_patterns)]
4323            fn _type_assertion(
4324                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4325            ) {
4326                match _t {
4327                    alloy_sol_types::private::AssertTypeEq::<
4328                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4329                    >(_) => {}
4330                }
4331            }
4332            #[automatically_derived]
4333            #[doc(hidden)]
4334            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
4335            for UnderlyingRustTuple<'_> {
4336                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
4337                    ()
4338                }
4339            }
4340            #[automatically_derived]
4341            #[doc(hidden)]
4342            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4343            for UPGRADE_INTERFACE_VERSIONCall {
4344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4345                    Self
4346                }
4347            }
4348        }
4349        {
4350            #[doc(hidden)]
4351            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
4352            #[doc(hidden)]
4353            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
4354            #[cfg(test)]
4355            #[allow(dead_code, unreachable_patterns)]
4356            fn _type_assertion(
4357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4358            ) {
4359                match _t {
4360                    alloy_sol_types::private::AssertTypeEq::<
4361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4362                    >(_) => {}
4363                }
4364            }
4365            #[automatically_derived]
4366            #[doc(hidden)]
4367            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
4368            for UnderlyingRustTuple<'_> {
4369                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
4370                    (value._0,)
4371                }
4372            }
4373            #[automatically_derived]
4374            #[doc(hidden)]
4375            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4376            for UPGRADE_INTERFACE_VERSIONReturn {
4377                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4378                    Self { _0: tuple.0 }
4379                }
4380            }
4381        }
4382        #[automatically_derived]
4383        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
4384            type Parameters<'a> = ();
4385            type Token<'a> = <Self::Parameters<
4386                'a,
4387            > as alloy_sol_types::SolType>::Token<'a>;
4388            type Return = alloy::sol_types::private::String;
4389            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
4390            type ReturnToken<'a> = <Self::ReturnTuple<
4391                'a,
4392            > as alloy_sol_types::SolType>::Token<'a>;
4393            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
4394            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
4395            #[inline]
4396            fn new<'a>(
4397                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4398            ) -> Self {
4399                tuple.into()
4400            }
4401            #[inline]
4402            fn tokenize(&self) -> Self::Token<'_> {
4403                ()
4404            }
4405            #[inline]
4406            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4407                (
4408                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
4409                        ret,
4410                    ),
4411                )
4412            }
4413            #[inline]
4414            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4415                <Self::ReturnTuple<
4416                    '_,
4417                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4418                    .map(|r| {
4419                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
4420                        r._0
4421                    })
4422            }
4423            #[inline]
4424            fn abi_decode_returns_validate(
4425                data: &[u8],
4426            ) -> alloy_sol_types::Result<Self::Return> {
4427                <Self::ReturnTuple<
4428                    '_,
4429                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4430                    .map(|r| {
4431                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
4432                        r._0
4433                    })
4434            }
4435        }
4436    };
4437    #[derive(serde::Serialize, serde::Deserialize)]
4438    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4439    /**Function with signature `claimRewards(uint256,bytes)` and selector `0x549dd8c3`.
4440```solidity
4441function claimRewards(uint256 lifetimeRewards, bytes memory authData) external;
4442```*/
4443    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4444    #[derive(Clone)]
4445    pub struct claimRewardsCall {
4446        #[allow(missing_docs)]
4447        pub lifetimeRewards: alloy::sol_types::private::primitives::aliases::U256,
4448        #[allow(missing_docs)]
4449        pub authData: alloy::sol_types::private::Bytes,
4450    }
4451    ///Container type for the return parameters of the [`claimRewards(uint256,bytes)`](claimRewardsCall) function.
4452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4453    #[derive(Clone)]
4454    pub struct claimRewardsReturn {}
4455    #[allow(
4456        non_camel_case_types,
4457        non_snake_case,
4458        clippy::pub_underscore_fields,
4459        clippy::style
4460    )]
4461    const _: () = {
4462        use alloy::sol_types as alloy_sol_types;
4463        {
4464            #[doc(hidden)]
4465            type UnderlyingSolTuple<'a> = (
4466                alloy::sol_types::sol_data::Uint<256>,
4467                alloy::sol_types::sol_data::Bytes,
4468            );
4469            #[doc(hidden)]
4470            type UnderlyingRustTuple<'a> = (
4471                alloy::sol_types::private::primitives::aliases::U256,
4472                alloy::sol_types::private::Bytes,
4473            );
4474            #[cfg(test)]
4475            #[allow(dead_code, unreachable_patterns)]
4476            fn _type_assertion(
4477                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4478            ) {
4479                match _t {
4480                    alloy_sol_types::private::AssertTypeEq::<
4481                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4482                    >(_) => {}
4483                }
4484            }
4485            #[automatically_derived]
4486            #[doc(hidden)]
4487            impl ::core::convert::From<claimRewardsCall> for UnderlyingRustTuple<'_> {
4488                fn from(value: claimRewardsCall) -> Self {
4489                    (value.lifetimeRewards, value.authData)
4490                }
4491            }
4492            #[automatically_derived]
4493            #[doc(hidden)]
4494            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimRewardsCall {
4495                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4496                    Self {
4497                        lifetimeRewards: tuple.0,
4498                        authData: tuple.1,
4499                    }
4500                }
4501            }
4502        }
4503        {
4504            #[doc(hidden)]
4505            type UnderlyingSolTuple<'a> = ();
4506            #[doc(hidden)]
4507            type UnderlyingRustTuple<'a> = ();
4508            #[cfg(test)]
4509            #[allow(dead_code, unreachable_patterns)]
4510            fn _type_assertion(
4511                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4512            ) {
4513                match _t {
4514                    alloy_sol_types::private::AssertTypeEq::<
4515                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4516                    >(_) => {}
4517                }
4518            }
4519            #[automatically_derived]
4520            #[doc(hidden)]
4521            impl ::core::convert::From<claimRewardsReturn> for UnderlyingRustTuple<'_> {
4522                fn from(value: claimRewardsReturn) -> Self {
4523                    ()
4524                }
4525            }
4526            #[automatically_derived]
4527            #[doc(hidden)]
4528            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimRewardsReturn {
4529                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4530                    Self {}
4531                }
4532            }
4533        }
4534        impl claimRewardsReturn {
4535            fn _tokenize(
4536                &self,
4537            ) -> <claimRewardsCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4538                ()
4539            }
4540        }
4541        #[automatically_derived]
4542        impl alloy_sol_types::SolCall for claimRewardsCall {
4543            type Parameters<'a> = (
4544                alloy::sol_types::sol_data::Uint<256>,
4545                alloy::sol_types::sol_data::Bytes,
4546            );
4547            type Token<'a> = <Self::Parameters<
4548                'a,
4549            > as alloy_sol_types::SolType>::Token<'a>;
4550            type Return = claimRewardsReturn;
4551            type ReturnTuple<'a> = ();
4552            type ReturnToken<'a> = <Self::ReturnTuple<
4553                'a,
4554            > as alloy_sol_types::SolType>::Token<'a>;
4555            const SIGNATURE: &'static str = "claimRewards(uint256,bytes)";
4556            const SELECTOR: [u8; 4] = [84u8, 157u8, 216u8, 195u8];
4557            #[inline]
4558            fn new<'a>(
4559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4560            ) -> Self {
4561                tuple.into()
4562            }
4563            #[inline]
4564            fn tokenize(&self) -> Self::Token<'_> {
4565                (
4566                    <alloy::sol_types::sol_data::Uint<
4567                        256,
4568                    > as alloy_sol_types::SolType>::tokenize(&self.lifetimeRewards),
4569                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4570                        &self.authData,
4571                    ),
4572                )
4573            }
4574            #[inline]
4575            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4576                claimRewardsReturn::_tokenize(ret)
4577            }
4578            #[inline]
4579            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4580                <Self::ReturnTuple<
4581                    '_,
4582                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4583                    .map(Into::into)
4584            }
4585            #[inline]
4586            fn abi_decode_returns_validate(
4587                data: &[u8],
4588            ) -> alloy_sol_types::Result<Self::Return> {
4589                <Self::ReturnTuple<
4590                    '_,
4591                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4592                    .map(Into::into)
4593            }
4594        }
4595    };
4596    #[derive(serde::Serialize, serde::Deserialize)]
4597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4598    /**Function with signature `claimedRewards(address)` and selector `0xbd834345`.
4599```solidity
4600function claimedRewards(address claimer) external view returns (uint256 claimed);
4601```*/
4602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4603    #[derive(Clone)]
4604    pub struct claimedRewardsCall {
4605        #[allow(missing_docs)]
4606        pub claimer: alloy::sol_types::private::Address,
4607    }
4608    #[derive(serde::Serialize, serde::Deserialize)]
4609    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4610    ///Container type for the return parameters of the [`claimedRewards(address)`](claimedRewardsCall) function.
4611    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4612    #[derive(Clone)]
4613    pub struct claimedRewardsReturn {
4614        #[allow(missing_docs)]
4615        pub claimed: alloy::sol_types::private::primitives::aliases::U256,
4616    }
4617    #[allow(
4618        non_camel_case_types,
4619        non_snake_case,
4620        clippy::pub_underscore_fields,
4621        clippy::style
4622    )]
4623    const _: () = {
4624        use alloy::sol_types as alloy_sol_types;
4625        {
4626            #[doc(hidden)]
4627            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4628            #[doc(hidden)]
4629            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4630            #[cfg(test)]
4631            #[allow(dead_code, unreachable_patterns)]
4632            fn _type_assertion(
4633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4634            ) {
4635                match _t {
4636                    alloy_sol_types::private::AssertTypeEq::<
4637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4638                    >(_) => {}
4639                }
4640            }
4641            #[automatically_derived]
4642            #[doc(hidden)]
4643            impl ::core::convert::From<claimedRewardsCall> for UnderlyingRustTuple<'_> {
4644                fn from(value: claimedRewardsCall) -> Self {
4645                    (value.claimer,)
4646                }
4647            }
4648            #[automatically_derived]
4649            #[doc(hidden)]
4650            impl ::core::convert::From<UnderlyingRustTuple<'_>> for claimedRewardsCall {
4651                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4652                    Self { claimer: tuple.0 }
4653                }
4654            }
4655        }
4656        {
4657            #[doc(hidden)]
4658            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4659            #[doc(hidden)]
4660            type UnderlyingRustTuple<'a> = (
4661                alloy::sol_types::private::primitives::aliases::U256,
4662            );
4663            #[cfg(test)]
4664            #[allow(dead_code, unreachable_patterns)]
4665            fn _type_assertion(
4666                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4667            ) {
4668                match _t {
4669                    alloy_sol_types::private::AssertTypeEq::<
4670                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4671                    >(_) => {}
4672                }
4673            }
4674            #[automatically_derived]
4675            #[doc(hidden)]
4676            impl ::core::convert::From<claimedRewardsReturn>
4677            for UnderlyingRustTuple<'_> {
4678                fn from(value: claimedRewardsReturn) -> Self {
4679                    (value.claimed,)
4680                }
4681            }
4682            #[automatically_derived]
4683            #[doc(hidden)]
4684            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4685            for claimedRewardsReturn {
4686                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4687                    Self { claimed: tuple.0 }
4688                }
4689            }
4690        }
4691        #[automatically_derived]
4692        impl alloy_sol_types::SolCall for claimedRewardsCall {
4693            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
4694            type Token<'a> = <Self::Parameters<
4695                'a,
4696            > as alloy_sol_types::SolType>::Token<'a>;
4697            type Return = alloy::sol_types::private::primitives::aliases::U256;
4698            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4699            type ReturnToken<'a> = <Self::ReturnTuple<
4700                'a,
4701            > as alloy_sol_types::SolType>::Token<'a>;
4702            const SIGNATURE: &'static str = "claimedRewards(address)";
4703            const SELECTOR: [u8; 4] = [189u8, 131u8, 67u8, 69u8];
4704            #[inline]
4705            fn new<'a>(
4706                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4707            ) -> Self {
4708                tuple.into()
4709            }
4710            #[inline]
4711            fn tokenize(&self) -> Self::Token<'_> {
4712                (
4713                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4714                        &self.claimer,
4715                    ),
4716                )
4717            }
4718            #[inline]
4719            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4720                (
4721                    <alloy::sol_types::sol_data::Uint<
4722                        256,
4723                    > as alloy_sol_types::SolType>::tokenize(ret),
4724                )
4725            }
4726            #[inline]
4727            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4728                <Self::ReturnTuple<
4729                    '_,
4730                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4731                    .map(|r| {
4732                        let r: claimedRewardsReturn = r.into();
4733                        r.claimed
4734                    })
4735            }
4736            #[inline]
4737            fn abi_decode_returns_validate(
4738                data: &[u8],
4739            ) -> alloy_sol_types::Result<Self::Return> {
4740                <Self::ReturnTuple<
4741                    '_,
4742                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4743                    .map(|r| {
4744                        let r: claimedRewardsReturn = r.into();
4745                        r.claimed
4746                    })
4747            }
4748        }
4749    };
4750    #[derive(serde::Serialize, serde::Deserialize)]
4751    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4752    /**Function with signature `dailyLimit()` and selector `0x67eeba0c`.
4753```solidity
4754function dailyLimit() external view returns (uint256);
4755```*/
4756    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4757    #[derive(Clone)]
4758    pub struct dailyLimitCall;
4759    #[derive(serde::Serialize, serde::Deserialize)]
4760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4761    ///Container type for the return parameters of the [`dailyLimit()`](dailyLimitCall) function.
4762    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4763    #[derive(Clone)]
4764    pub struct dailyLimitReturn {
4765        #[allow(missing_docs)]
4766        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4767    }
4768    #[allow(
4769        non_camel_case_types,
4770        non_snake_case,
4771        clippy::pub_underscore_fields,
4772        clippy::style
4773    )]
4774    const _: () = {
4775        use alloy::sol_types as alloy_sol_types;
4776        {
4777            #[doc(hidden)]
4778            type UnderlyingSolTuple<'a> = ();
4779            #[doc(hidden)]
4780            type UnderlyingRustTuple<'a> = ();
4781            #[cfg(test)]
4782            #[allow(dead_code, unreachable_patterns)]
4783            fn _type_assertion(
4784                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4785            ) {
4786                match _t {
4787                    alloy_sol_types::private::AssertTypeEq::<
4788                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4789                    >(_) => {}
4790                }
4791            }
4792            #[automatically_derived]
4793            #[doc(hidden)]
4794            impl ::core::convert::From<dailyLimitCall> for UnderlyingRustTuple<'_> {
4795                fn from(value: dailyLimitCall) -> Self {
4796                    ()
4797                }
4798            }
4799            #[automatically_derived]
4800            #[doc(hidden)]
4801            impl ::core::convert::From<UnderlyingRustTuple<'_>> for dailyLimitCall {
4802                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4803                    Self
4804                }
4805            }
4806        }
4807        {
4808            #[doc(hidden)]
4809            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4810            #[doc(hidden)]
4811            type UnderlyingRustTuple<'a> = (
4812                alloy::sol_types::private::primitives::aliases::U256,
4813            );
4814            #[cfg(test)]
4815            #[allow(dead_code, unreachable_patterns)]
4816            fn _type_assertion(
4817                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4818            ) {
4819                match _t {
4820                    alloy_sol_types::private::AssertTypeEq::<
4821                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4822                    >(_) => {}
4823                }
4824            }
4825            #[automatically_derived]
4826            #[doc(hidden)]
4827            impl ::core::convert::From<dailyLimitReturn> for UnderlyingRustTuple<'_> {
4828                fn from(value: dailyLimitReturn) -> Self {
4829                    (value._0,)
4830                }
4831            }
4832            #[automatically_derived]
4833            #[doc(hidden)]
4834            impl ::core::convert::From<UnderlyingRustTuple<'_>> for dailyLimitReturn {
4835                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4836                    Self { _0: tuple.0 }
4837                }
4838            }
4839        }
4840        #[automatically_derived]
4841        impl alloy_sol_types::SolCall for dailyLimitCall {
4842            type Parameters<'a> = ();
4843            type Token<'a> = <Self::Parameters<
4844                'a,
4845            > as alloy_sol_types::SolType>::Token<'a>;
4846            type Return = alloy::sol_types::private::primitives::aliases::U256;
4847            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4848            type ReturnToken<'a> = <Self::ReturnTuple<
4849                'a,
4850            > as alloy_sol_types::SolType>::Token<'a>;
4851            const SIGNATURE: &'static str = "dailyLimit()";
4852            const SELECTOR: [u8; 4] = [103u8, 238u8, 186u8, 12u8];
4853            #[inline]
4854            fn new<'a>(
4855                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4856            ) -> Self {
4857                tuple.into()
4858            }
4859            #[inline]
4860            fn tokenize(&self) -> Self::Token<'_> {
4861                ()
4862            }
4863            #[inline]
4864            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4865                (
4866                    <alloy::sol_types::sol_data::Uint<
4867                        256,
4868                    > as alloy_sol_types::SolType>::tokenize(ret),
4869                )
4870            }
4871            #[inline]
4872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4873                <Self::ReturnTuple<
4874                    '_,
4875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4876                    .map(|r| {
4877                        let r: dailyLimitReturn = r.into();
4878                        r._0
4879                    })
4880            }
4881            #[inline]
4882            fn abi_decode_returns_validate(
4883                data: &[u8],
4884            ) -> alloy_sol_types::Result<Self::Return> {
4885                <Self::ReturnTuple<
4886                    '_,
4887                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4888                    .map(|r| {
4889                        let r: dailyLimitReturn = r.into();
4890                        r._0
4891                    })
4892            }
4893        }
4894    };
4895    #[derive(serde::Serialize, serde::Deserialize)]
4896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4897    /**Function with signature `espToken()` and selector `0xf092e13a`.
4898```solidity
4899function espToken() external view returns (address);
4900```*/
4901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4902    #[derive(Clone)]
4903    pub struct espTokenCall;
4904    #[derive(serde::Serialize, serde::Deserialize)]
4905    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4906    ///Container type for the return parameters of the [`espToken()`](espTokenCall) function.
4907    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4908    #[derive(Clone)]
4909    pub struct espTokenReturn {
4910        #[allow(missing_docs)]
4911        pub _0: alloy::sol_types::private::Address,
4912    }
4913    #[allow(
4914        non_camel_case_types,
4915        non_snake_case,
4916        clippy::pub_underscore_fields,
4917        clippy::style
4918    )]
4919    const _: () = {
4920        use alloy::sol_types as alloy_sol_types;
4921        {
4922            #[doc(hidden)]
4923            type UnderlyingSolTuple<'a> = ();
4924            #[doc(hidden)]
4925            type UnderlyingRustTuple<'a> = ();
4926            #[cfg(test)]
4927            #[allow(dead_code, unreachable_patterns)]
4928            fn _type_assertion(
4929                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4930            ) {
4931                match _t {
4932                    alloy_sol_types::private::AssertTypeEq::<
4933                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4934                    >(_) => {}
4935                }
4936            }
4937            #[automatically_derived]
4938            #[doc(hidden)]
4939            impl ::core::convert::From<espTokenCall> for UnderlyingRustTuple<'_> {
4940                fn from(value: espTokenCall) -> Self {
4941                    ()
4942                }
4943            }
4944            #[automatically_derived]
4945            #[doc(hidden)]
4946            impl ::core::convert::From<UnderlyingRustTuple<'_>> for espTokenCall {
4947                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4948                    Self
4949                }
4950            }
4951        }
4952        {
4953            #[doc(hidden)]
4954            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4955            #[doc(hidden)]
4956            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4957            #[cfg(test)]
4958            #[allow(dead_code, unreachable_patterns)]
4959            fn _type_assertion(
4960                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4961            ) {
4962                match _t {
4963                    alloy_sol_types::private::AssertTypeEq::<
4964                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4965                    >(_) => {}
4966                }
4967            }
4968            #[automatically_derived]
4969            #[doc(hidden)]
4970            impl ::core::convert::From<espTokenReturn> for UnderlyingRustTuple<'_> {
4971                fn from(value: espTokenReturn) -> Self {
4972                    (value._0,)
4973                }
4974            }
4975            #[automatically_derived]
4976            #[doc(hidden)]
4977            impl ::core::convert::From<UnderlyingRustTuple<'_>> for espTokenReturn {
4978                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4979                    Self { _0: tuple.0 }
4980                }
4981            }
4982        }
4983        #[automatically_derived]
4984        impl alloy_sol_types::SolCall for espTokenCall {
4985            type Parameters<'a> = ();
4986            type Token<'a> = <Self::Parameters<
4987                'a,
4988            > as alloy_sol_types::SolType>::Token<'a>;
4989            type Return = alloy::sol_types::private::Address;
4990            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
4991            type ReturnToken<'a> = <Self::ReturnTuple<
4992                'a,
4993            > as alloy_sol_types::SolType>::Token<'a>;
4994            const SIGNATURE: &'static str = "espToken()";
4995            const SELECTOR: [u8; 4] = [240u8, 146u8, 225u8, 58u8];
4996            #[inline]
4997            fn new<'a>(
4998                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4999            ) -> Self {
5000                tuple.into()
5001            }
5002            #[inline]
5003            fn tokenize(&self) -> Self::Token<'_> {
5004                ()
5005            }
5006            #[inline]
5007            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5008                (
5009                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5010                        ret,
5011                    ),
5012                )
5013            }
5014            #[inline]
5015            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5016                <Self::ReturnTuple<
5017                    '_,
5018                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5019                    .map(|r| {
5020                        let r: espTokenReturn = r.into();
5021                        r._0
5022                    })
5023            }
5024            #[inline]
5025            fn abi_decode_returns_validate(
5026                data: &[u8],
5027            ) -> alloy_sol_types::Result<Self::Return> {
5028                <Self::ReturnTuple<
5029                    '_,
5030                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5031                    .map(|r| {
5032                        let r: espTokenReturn = r.into();
5033                        r._0
5034                    })
5035            }
5036        }
5037    };
5038    #[derive(serde::Serialize, serde::Deserialize)]
5039    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5040    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
5041```solidity
5042function getRoleAdmin(bytes32 role) external view returns (bytes32);
5043```*/
5044    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5045    #[derive(Clone)]
5046    pub struct getRoleAdminCall {
5047        #[allow(missing_docs)]
5048        pub role: alloy::sol_types::private::FixedBytes<32>,
5049    }
5050    #[derive(serde::Serialize, serde::Deserialize)]
5051    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5052    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
5053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5054    #[derive(Clone)]
5055    pub struct getRoleAdminReturn {
5056        #[allow(missing_docs)]
5057        pub _0: alloy::sol_types::private::FixedBytes<32>,
5058    }
5059    #[allow(
5060        non_camel_case_types,
5061        non_snake_case,
5062        clippy::pub_underscore_fields,
5063        clippy::style
5064    )]
5065    const _: () = {
5066        use alloy::sol_types as alloy_sol_types;
5067        {
5068            #[doc(hidden)]
5069            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5070            #[doc(hidden)]
5071            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5072            #[cfg(test)]
5073            #[allow(dead_code, unreachable_patterns)]
5074            fn _type_assertion(
5075                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5076            ) {
5077                match _t {
5078                    alloy_sol_types::private::AssertTypeEq::<
5079                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5080                    >(_) => {}
5081                }
5082            }
5083            #[automatically_derived]
5084            #[doc(hidden)]
5085            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
5086                fn from(value: getRoleAdminCall) -> Self {
5087                    (value.role,)
5088                }
5089            }
5090            #[automatically_derived]
5091            #[doc(hidden)]
5092            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
5093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5094                    Self { role: tuple.0 }
5095                }
5096            }
5097        }
5098        {
5099            #[doc(hidden)]
5100            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5101            #[doc(hidden)]
5102            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5103            #[cfg(test)]
5104            #[allow(dead_code, unreachable_patterns)]
5105            fn _type_assertion(
5106                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5107            ) {
5108                match _t {
5109                    alloy_sol_types::private::AssertTypeEq::<
5110                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5111                    >(_) => {}
5112                }
5113            }
5114            #[automatically_derived]
5115            #[doc(hidden)]
5116            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
5117                fn from(value: getRoleAdminReturn) -> Self {
5118                    (value._0,)
5119                }
5120            }
5121            #[automatically_derived]
5122            #[doc(hidden)]
5123            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
5124                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5125                    Self { _0: tuple.0 }
5126                }
5127            }
5128        }
5129        #[automatically_derived]
5130        impl alloy_sol_types::SolCall for getRoleAdminCall {
5131            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5132            type Token<'a> = <Self::Parameters<
5133                'a,
5134            > as alloy_sol_types::SolType>::Token<'a>;
5135            type Return = alloy::sol_types::private::FixedBytes<32>;
5136            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5137            type ReturnToken<'a> = <Self::ReturnTuple<
5138                'a,
5139            > as alloy_sol_types::SolType>::Token<'a>;
5140            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
5141            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
5142            #[inline]
5143            fn new<'a>(
5144                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5145            ) -> Self {
5146                tuple.into()
5147            }
5148            #[inline]
5149            fn tokenize(&self) -> Self::Token<'_> {
5150                (
5151                    <alloy::sol_types::sol_data::FixedBytes<
5152                        32,
5153                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5154                )
5155            }
5156            #[inline]
5157            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5158                (
5159                    <alloy::sol_types::sol_data::FixedBytes<
5160                        32,
5161                    > as alloy_sol_types::SolType>::tokenize(ret),
5162                )
5163            }
5164            #[inline]
5165            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5166                <Self::ReturnTuple<
5167                    '_,
5168                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5169                    .map(|r| {
5170                        let r: getRoleAdminReturn = r.into();
5171                        r._0
5172                    })
5173            }
5174            #[inline]
5175            fn abi_decode_returns_validate(
5176                data: &[u8],
5177            ) -> alloy_sol_types::Result<Self::Return> {
5178                <Self::ReturnTuple<
5179                    '_,
5180                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5181                    .map(|r| {
5182                        let r: getRoleAdminReturn = r.into();
5183                        r._0
5184                    })
5185            }
5186        }
5187    };
5188    #[derive(serde::Serialize, serde::Deserialize)]
5189    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5190    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
5191```solidity
5192function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
5193```*/
5194    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5195    #[derive(Clone)]
5196    pub struct getVersionCall;
5197    #[derive(serde::Serialize, serde::Deserialize)]
5198    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5199    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
5200    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5201    #[derive(Clone)]
5202    pub struct getVersionReturn {
5203        #[allow(missing_docs)]
5204        pub majorVersion: u8,
5205        #[allow(missing_docs)]
5206        pub minorVersion: u8,
5207        #[allow(missing_docs)]
5208        pub patchVersion: u8,
5209    }
5210    #[allow(
5211        non_camel_case_types,
5212        non_snake_case,
5213        clippy::pub_underscore_fields,
5214        clippy::style
5215    )]
5216    const _: () = {
5217        use alloy::sol_types as alloy_sol_types;
5218        {
5219            #[doc(hidden)]
5220            type UnderlyingSolTuple<'a> = ();
5221            #[doc(hidden)]
5222            type UnderlyingRustTuple<'a> = ();
5223            #[cfg(test)]
5224            #[allow(dead_code, unreachable_patterns)]
5225            fn _type_assertion(
5226                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5227            ) {
5228                match _t {
5229                    alloy_sol_types::private::AssertTypeEq::<
5230                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5231                    >(_) => {}
5232                }
5233            }
5234            #[automatically_derived]
5235            #[doc(hidden)]
5236            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
5237                fn from(value: getVersionCall) -> Self {
5238                    ()
5239                }
5240            }
5241            #[automatically_derived]
5242            #[doc(hidden)]
5243            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
5244                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5245                    Self
5246                }
5247            }
5248        }
5249        {
5250            #[doc(hidden)]
5251            type UnderlyingSolTuple<'a> = (
5252                alloy::sol_types::sol_data::Uint<8>,
5253                alloy::sol_types::sol_data::Uint<8>,
5254                alloy::sol_types::sol_data::Uint<8>,
5255            );
5256            #[doc(hidden)]
5257            type UnderlyingRustTuple<'a> = (u8, u8, u8);
5258            #[cfg(test)]
5259            #[allow(dead_code, unreachable_patterns)]
5260            fn _type_assertion(
5261                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5262            ) {
5263                match _t {
5264                    alloy_sol_types::private::AssertTypeEq::<
5265                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5266                    >(_) => {}
5267                }
5268            }
5269            #[automatically_derived]
5270            #[doc(hidden)]
5271            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
5272                fn from(value: getVersionReturn) -> Self {
5273                    (value.majorVersion, value.minorVersion, value.patchVersion)
5274                }
5275            }
5276            #[automatically_derived]
5277            #[doc(hidden)]
5278            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
5279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5280                    Self {
5281                        majorVersion: tuple.0,
5282                        minorVersion: tuple.1,
5283                        patchVersion: tuple.2,
5284                    }
5285                }
5286            }
5287        }
5288        impl getVersionReturn {
5289            fn _tokenize(
5290                &self,
5291            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5292                (
5293                    <alloy::sol_types::sol_data::Uint<
5294                        8,
5295                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
5296                    <alloy::sol_types::sol_data::Uint<
5297                        8,
5298                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
5299                    <alloy::sol_types::sol_data::Uint<
5300                        8,
5301                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
5302                )
5303            }
5304        }
5305        #[automatically_derived]
5306        impl alloy_sol_types::SolCall for getVersionCall {
5307            type Parameters<'a> = ();
5308            type Token<'a> = <Self::Parameters<
5309                'a,
5310            > as alloy_sol_types::SolType>::Token<'a>;
5311            type Return = getVersionReturn;
5312            type ReturnTuple<'a> = (
5313                alloy::sol_types::sol_data::Uint<8>,
5314                alloy::sol_types::sol_data::Uint<8>,
5315                alloy::sol_types::sol_data::Uint<8>,
5316            );
5317            type ReturnToken<'a> = <Self::ReturnTuple<
5318                'a,
5319            > as alloy_sol_types::SolType>::Token<'a>;
5320            const SIGNATURE: &'static str = "getVersion()";
5321            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
5322            #[inline]
5323            fn new<'a>(
5324                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5325            ) -> Self {
5326                tuple.into()
5327            }
5328            #[inline]
5329            fn tokenize(&self) -> Self::Token<'_> {
5330                ()
5331            }
5332            #[inline]
5333            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5334                getVersionReturn::_tokenize(ret)
5335            }
5336            #[inline]
5337            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5338                <Self::ReturnTuple<
5339                    '_,
5340                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5341                    .map(Into::into)
5342            }
5343            #[inline]
5344            fn abi_decode_returns_validate(
5345                data: &[u8],
5346            ) -> alloy_sol_types::Result<Self::Return> {
5347                <Self::ReturnTuple<
5348                    '_,
5349                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5350                    .map(Into::into)
5351            }
5352        }
5353    };
5354    #[derive(serde::Serialize, serde::Deserialize)]
5355    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5356    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
5357```solidity
5358function grantRole(bytes32 role, address account) external;
5359```*/
5360    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5361    #[derive(Clone)]
5362    pub struct grantRoleCall {
5363        #[allow(missing_docs)]
5364        pub role: alloy::sol_types::private::FixedBytes<32>,
5365        #[allow(missing_docs)]
5366        pub account: alloy::sol_types::private::Address,
5367    }
5368    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
5369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5370    #[derive(Clone)]
5371    pub struct grantRoleReturn {}
5372    #[allow(
5373        non_camel_case_types,
5374        non_snake_case,
5375        clippy::pub_underscore_fields,
5376        clippy::style
5377    )]
5378    const _: () = {
5379        use alloy::sol_types as alloy_sol_types;
5380        {
5381            #[doc(hidden)]
5382            type UnderlyingSolTuple<'a> = (
5383                alloy::sol_types::sol_data::FixedBytes<32>,
5384                alloy::sol_types::sol_data::Address,
5385            );
5386            #[doc(hidden)]
5387            type UnderlyingRustTuple<'a> = (
5388                alloy::sol_types::private::FixedBytes<32>,
5389                alloy::sol_types::private::Address,
5390            );
5391            #[cfg(test)]
5392            #[allow(dead_code, unreachable_patterns)]
5393            fn _type_assertion(
5394                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5395            ) {
5396                match _t {
5397                    alloy_sol_types::private::AssertTypeEq::<
5398                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5399                    >(_) => {}
5400                }
5401            }
5402            #[automatically_derived]
5403            #[doc(hidden)]
5404            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
5405                fn from(value: grantRoleCall) -> Self {
5406                    (value.role, value.account)
5407                }
5408            }
5409            #[automatically_derived]
5410            #[doc(hidden)]
5411            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
5412                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5413                    Self {
5414                        role: tuple.0,
5415                        account: tuple.1,
5416                    }
5417                }
5418            }
5419        }
5420        {
5421            #[doc(hidden)]
5422            type UnderlyingSolTuple<'a> = ();
5423            #[doc(hidden)]
5424            type UnderlyingRustTuple<'a> = ();
5425            #[cfg(test)]
5426            #[allow(dead_code, unreachable_patterns)]
5427            fn _type_assertion(
5428                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5429            ) {
5430                match _t {
5431                    alloy_sol_types::private::AssertTypeEq::<
5432                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5433                    >(_) => {}
5434                }
5435            }
5436            #[automatically_derived]
5437            #[doc(hidden)]
5438            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
5439                fn from(value: grantRoleReturn) -> Self {
5440                    ()
5441                }
5442            }
5443            #[automatically_derived]
5444            #[doc(hidden)]
5445            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
5446                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5447                    Self {}
5448                }
5449            }
5450        }
5451        impl grantRoleReturn {
5452            fn _tokenize(
5453                &self,
5454            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5455                ()
5456            }
5457        }
5458        #[automatically_derived]
5459        impl alloy_sol_types::SolCall for grantRoleCall {
5460            type Parameters<'a> = (
5461                alloy::sol_types::sol_data::FixedBytes<32>,
5462                alloy::sol_types::sol_data::Address,
5463            );
5464            type Token<'a> = <Self::Parameters<
5465                'a,
5466            > as alloy_sol_types::SolType>::Token<'a>;
5467            type Return = grantRoleReturn;
5468            type ReturnTuple<'a> = ();
5469            type ReturnToken<'a> = <Self::ReturnTuple<
5470                'a,
5471            > as alloy_sol_types::SolType>::Token<'a>;
5472            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
5473            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
5474            #[inline]
5475            fn new<'a>(
5476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5477            ) -> Self {
5478                tuple.into()
5479            }
5480            #[inline]
5481            fn tokenize(&self) -> Self::Token<'_> {
5482                (
5483                    <alloy::sol_types::sol_data::FixedBytes<
5484                        32,
5485                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5486                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5487                        &self.account,
5488                    ),
5489                )
5490            }
5491            #[inline]
5492            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5493                grantRoleReturn::_tokenize(ret)
5494            }
5495            #[inline]
5496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5497                <Self::ReturnTuple<
5498                    '_,
5499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5500                    .map(Into::into)
5501            }
5502            #[inline]
5503            fn abi_decode_returns_validate(
5504                data: &[u8],
5505            ) -> alloy_sol_types::Result<Self::Return> {
5506                <Self::ReturnTuple<
5507                    '_,
5508                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5509                    .map(Into::into)
5510            }
5511        }
5512    };
5513    #[derive(serde::Serialize, serde::Deserialize)]
5514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5515    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
5516```solidity
5517function hasRole(bytes32 role, address account) external view returns (bool);
5518```*/
5519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5520    #[derive(Clone)]
5521    pub struct hasRoleCall {
5522        #[allow(missing_docs)]
5523        pub role: alloy::sol_types::private::FixedBytes<32>,
5524        #[allow(missing_docs)]
5525        pub account: alloy::sol_types::private::Address,
5526    }
5527    #[derive(serde::Serialize, serde::Deserialize)]
5528    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5529    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
5530    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5531    #[derive(Clone)]
5532    pub struct hasRoleReturn {
5533        #[allow(missing_docs)]
5534        pub _0: bool,
5535    }
5536    #[allow(
5537        non_camel_case_types,
5538        non_snake_case,
5539        clippy::pub_underscore_fields,
5540        clippy::style
5541    )]
5542    const _: () = {
5543        use alloy::sol_types as alloy_sol_types;
5544        {
5545            #[doc(hidden)]
5546            type UnderlyingSolTuple<'a> = (
5547                alloy::sol_types::sol_data::FixedBytes<32>,
5548                alloy::sol_types::sol_data::Address,
5549            );
5550            #[doc(hidden)]
5551            type UnderlyingRustTuple<'a> = (
5552                alloy::sol_types::private::FixedBytes<32>,
5553                alloy::sol_types::private::Address,
5554            );
5555            #[cfg(test)]
5556            #[allow(dead_code, unreachable_patterns)]
5557            fn _type_assertion(
5558                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5559            ) {
5560                match _t {
5561                    alloy_sol_types::private::AssertTypeEq::<
5562                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5563                    >(_) => {}
5564                }
5565            }
5566            #[automatically_derived]
5567            #[doc(hidden)]
5568            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
5569                fn from(value: hasRoleCall) -> Self {
5570                    (value.role, value.account)
5571                }
5572            }
5573            #[automatically_derived]
5574            #[doc(hidden)]
5575            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
5576                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5577                    Self {
5578                        role: tuple.0,
5579                        account: tuple.1,
5580                    }
5581                }
5582            }
5583        }
5584        {
5585            #[doc(hidden)]
5586            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5587            #[doc(hidden)]
5588            type UnderlyingRustTuple<'a> = (bool,);
5589            #[cfg(test)]
5590            #[allow(dead_code, unreachable_patterns)]
5591            fn _type_assertion(
5592                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5593            ) {
5594                match _t {
5595                    alloy_sol_types::private::AssertTypeEq::<
5596                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5597                    >(_) => {}
5598                }
5599            }
5600            #[automatically_derived]
5601            #[doc(hidden)]
5602            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
5603                fn from(value: hasRoleReturn) -> Self {
5604                    (value._0,)
5605                }
5606            }
5607            #[automatically_derived]
5608            #[doc(hidden)]
5609            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
5610                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5611                    Self { _0: tuple.0 }
5612                }
5613            }
5614        }
5615        #[automatically_derived]
5616        impl alloy_sol_types::SolCall for hasRoleCall {
5617            type Parameters<'a> = (
5618                alloy::sol_types::sol_data::FixedBytes<32>,
5619                alloy::sol_types::sol_data::Address,
5620            );
5621            type Token<'a> = <Self::Parameters<
5622                'a,
5623            > as alloy_sol_types::SolType>::Token<'a>;
5624            type Return = bool;
5625            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5626            type ReturnToken<'a> = <Self::ReturnTuple<
5627                'a,
5628            > as alloy_sol_types::SolType>::Token<'a>;
5629            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
5630            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
5631            #[inline]
5632            fn new<'a>(
5633                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5634            ) -> Self {
5635                tuple.into()
5636            }
5637            #[inline]
5638            fn tokenize(&self) -> Self::Token<'_> {
5639                (
5640                    <alloy::sol_types::sol_data::FixedBytes<
5641                        32,
5642                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5643                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5644                        &self.account,
5645                    ),
5646                )
5647            }
5648            #[inline]
5649            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5650                (
5651                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5652                        ret,
5653                    ),
5654                )
5655            }
5656            #[inline]
5657            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5658                <Self::ReturnTuple<
5659                    '_,
5660                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5661                    .map(|r| {
5662                        let r: hasRoleReturn = r.into();
5663                        r._0
5664                    })
5665            }
5666            #[inline]
5667            fn abi_decode_returns_validate(
5668                data: &[u8],
5669            ) -> alloy_sol_types::Result<Self::Return> {
5670                <Self::ReturnTuple<
5671                    '_,
5672                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5673                    .map(|r| {
5674                        let r: hasRoleReturn = r.into();
5675                        r._0
5676                    })
5677            }
5678        }
5679    };
5680    #[derive(serde::Serialize, serde::Deserialize)]
5681    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5682    /**Function with signature `initialize(address,address,address,address)` and selector `0xf8c8765e`.
5683```solidity
5684function initialize(address _owner, address _espToken, address _lightClient, address _pauser) external;
5685```*/
5686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5687    #[derive(Clone)]
5688    pub struct initializeCall {
5689        #[allow(missing_docs)]
5690        pub _owner: alloy::sol_types::private::Address,
5691        #[allow(missing_docs)]
5692        pub _espToken: alloy::sol_types::private::Address,
5693        #[allow(missing_docs)]
5694        pub _lightClient: alloy::sol_types::private::Address,
5695        #[allow(missing_docs)]
5696        pub _pauser: alloy::sol_types::private::Address,
5697    }
5698    ///Container type for the return parameters of the [`initialize(address,address,address,address)`](initializeCall) function.
5699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5700    #[derive(Clone)]
5701    pub struct initializeReturn {}
5702    #[allow(
5703        non_camel_case_types,
5704        non_snake_case,
5705        clippy::pub_underscore_fields,
5706        clippy::style
5707    )]
5708    const _: () = {
5709        use alloy::sol_types as alloy_sol_types;
5710        {
5711            #[doc(hidden)]
5712            type UnderlyingSolTuple<'a> = (
5713                alloy::sol_types::sol_data::Address,
5714                alloy::sol_types::sol_data::Address,
5715                alloy::sol_types::sol_data::Address,
5716                alloy::sol_types::sol_data::Address,
5717            );
5718            #[doc(hidden)]
5719            type UnderlyingRustTuple<'a> = (
5720                alloy::sol_types::private::Address,
5721                alloy::sol_types::private::Address,
5722                alloy::sol_types::private::Address,
5723                alloy::sol_types::private::Address,
5724            );
5725            #[cfg(test)]
5726            #[allow(dead_code, unreachable_patterns)]
5727            fn _type_assertion(
5728                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5729            ) {
5730                match _t {
5731                    alloy_sol_types::private::AssertTypeEq::<
5732                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5733                    >(_) => {}
5734                }
5735            }
5736            #[automatically_derived]
5737            #[doc(hidden)]
5738            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
5739                fn from(value: initializeCall) -> Self {
5740                    (value._owner, value._espToken, value._lightClient, value._pauser)
5741                }
5742            }
5743            #[automatically_derived]
5744            #[doc(hidden)]
5745            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
5746                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5747                    Self {
5748                        _owner: tuple.0,
5749                        _espToken: tuple.1,
5750                        _lightClient: tuple.2,
5751                        _pauser: tuple.3,
5752                    }
5753                }
5754            }
5755        }
5756        {
5757            #[doc(hidden)]
5758            type UnderlyingSolTuple<'a> = ();
5759            #[doc(hidden)]
5760            type UnderlyingRustTuple<'a> = ();
5761            #[cfg(test)]
5762            #[allow(dead_code, unreachable_patterns)]
5763            fn _type_assertion(
5764                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5765            ) {
5766                match _t {
5767                    alloy_sol_types::private::AssertTypeEq::<
5768                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5769                    >(_) => {}
5770                }
5771            }
5772            #[automatically_derived]
5773            #[doc(hidden)]
5774            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
5775                fn from(value: initializeReturn) -> Self {
5776                    ()
5777                }
5778            }
5779            #[automatically_derived]
5780            #[doc(hidden)]
5781            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
5782                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5783                    Self {}
5784                }
5785            }
5786        }
5787        impl initializeReturn {
5788            fn _tokenize(
5789                &self,
5790            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5791                ()
5792            }
5793        }
5794        #[automatically_derived]
5795        impl alloy_sol_types::SolCall for initializeCall {
5796            type Parameters<'a> = (
5797                alloy::sol_types::sol_data::Address,
5798                alloy::sol_types::sol_data::Address,
5799                alloy::sol_types::sol_data::Address,
5800                alloy::sol_types::sol_data::Address,
5801            );
5802            type Token<'a> = <Self::Parameters<
5803                'a,
5804            > as alloy_sol_types::SolType>::Token<'a>;
5805            type Return = initializeReturn;
5806            type ReturnTuple<'a> = ();
5807            type ReturnToken<'a> = <Self::ReturnTuple<
5808                'a,
5809            > as alloy_sol_types::SolType>::Token<'a>;
5810            const SIGNATURE: &'static str = "initialize(address,address,address,address)";
5811            const SELECTOR: [u8; 4] = [248u8, 200u8, 118u8, 94u8];
5812            #[inline]
5813            fn new<'a>(
5814                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5815            ) -> Self {
5816                tuple.into()
5817            }
5818            #[inline]
5819            fn tokenize(&self) -> Self::Token<'_> {
5820                (
5821                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5822                        &self._owner,
5823                    ),
5824                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5825                        &self._espToken,
5826                    ),
5827                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5828                        &self._lightClient,
5829                    ),
5830                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5831                        &self._pauser,
5832                    ),
5833                )
5834            }
5835            #[inline]
5836            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5837                initializeReturn::_tokenize(ret)
5838            }
5839            #[inline]
5840            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5841                <Self::ReturnTuple<
5842                    '_,
5843                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5844                    .map(Into::into)
5845            }
5846            #[inline]
5847            fn abi_decode_returns_validate(
5848                data: &[u8],
5849            ) -> alloy_sol_types::Result<Self::Return> {
5850                <Self::ReturnTuple<
5851                    '_,
5852                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5853                    .map(Into::into)
5854            }
5855        }
5856    };
5857    #[derive(serde::Serialize, serde::Deserialize)]
5858    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5859    /**Function with signature `lightClient()` and selector `0xb5700e68`.
5860```solidity
5861function lightClient() external view returns (address);
5862```*/
5863    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5864    #[derive(Clone)]
5865    pub struct lightClientCall;
5866    #[derive(serde::Serialize, serde::Deserialize)]
5867    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5868    ///Container type for the return parameters of the [`lightClient()`](lightClientCall) function.
5869    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5870    #[derive(Clone)]
5871    pub struct lightClientReturn {
5872        #[allow(missing_docs)]
5873        pub _0: alloy::sol_types::private::Address,
5874    }
5875    #[allow(
5876        non_camel_case_types,
5877        non_snake_case,
5878        clippy::pub_underscore_fields,
5879        clippy::style
5880    )]
5881    const _: () = {
5882        use alloy::sol_types as alloy_sol_types;
5883        {
5884            #[doc(hidden)]
5885            type UnderlyingSolTuple<'a> = ();
5886            #[doc(hidden)]
5887            type UnderlyingRustTuple<'a> = ();
5888            #[cfg(test)]
5889            #[allow(dead_code, unreachable_patterns)]
5890            fn _type_assertion(
5891                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5892            ) {
5893                match _t {
5894                    alloy_sol_types::private::AssertTypeEq::<
5895                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5896                    >(_) => {}
5897                }
5898            }
5899            #[automatically_derived]
5900            #[doc(hidden)]
5901            impl ::core::convert::From<lightClientCall> for UnderlyingRustTuple<'_> {
5902                fn from(value: lightClientCall) -> Self {
5903                    ()
5904                }
5905            }
5906            #[automatically_derived]
5907            #[doc(hidden)]
5908            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientCall {
5909                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5910                    Self
5911                }
5912            }
5913        }
5914        {
5915            #[doc(hidden)]
5916            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5917            #[doc(hidden)]
5918            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5919            #[cfg(test)]
5920            #[allow(dead_code, unreachable_patterns)]
5921            fn _type_assertion(
5922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5923            ) {
5924                match _t {
5925                    alloy_sol_types::private::AssertTypeEq::<
5926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5927                    >(_) => {}
5928                }
5929            }
5930            #[automatically_derived]
5931            #[doc(hidden)]
5932            impl ::core::convert::From<lightClientReturn> for UnderlyingRustTuple<'_> {
5933                fn from(value: lightClientReturn) -> Self {
5934                    (value._0,)
5935                }
5936            }
5937            #[automatically_derived]
5938            #[doc(hidden)]
5939            impl ::core::convert::From<UnderlyingRustTuple<'_>> for lightClientReturn {
5940                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5941                    Self { _0: tuple.0 }
5942                }
5943            }
5944        }
5945        #[automatically_derived]
5946        impl alloy_sol_types::SolCall for lightClientCall {
5947            type Parameters<'a> = ();
5948            type Token<'a> = <Self::Parameters<
5949                'a,
5950            > as alloy_sol_types::SolType>::Token<'a>;
5951            type Return = alloy::sol_types::private::Address;
5952            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
5953            type ReturnToken<'a> = <Self::ReturnTuple<
5954                'a,
5955            > as alloy_sol_types::SolType>::Token<'a>;
5956            const SIGNATURE: &'static str = "lightClient()";
5957            const SELECTOR: [u8; 4] = [181u8, 112u8, 14u8, 104u8];
5958            #[inline]
5959            fn new<'a>(
5960                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5961            ) -> Self {
5962                tuple.into()
5963            }
5964            #[inline]
5965            fn tokenize(&self) -> Self::Token<'_> {
5966                ()
5967            }
5968            #[inline]
5969            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5970                (
5971                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5972                        ret,
5973                    ),
5974                )
5975            }
5976            #[inline]
5977            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5978                <Self::ReturnTuple<
5979                    '_,
5980                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5981                    .map(|r| {
5982                        let r: lightClientReturn = r.into();
5983                        r._0
5984                    })
5985            }
5986            #[inline]
5987            fn abi_decode_returns_validate(
5988                data: &[u8],
5989            ) -> alloy_sol_types::Result<Self::Return> {
5990                <Self::ReturnTuple<
5991                    '_,
5992                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5993                    .map(|r| {
5994                        let r: lightClientReturn = r.into();
5995                        r._0
5996                    })
5997            }
5998        }
5999    };
6000    #[derive(serde::Serialize, serde::Deserialize)]
6001    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6002    /**Function with signature `owner()` and selector `0x8da5cb5b`.
6003```solidity
6004function owner() external view returns (address);
6005```*/
6006    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6007    #[derive(Clone)]
6008    pub struct ownerCall;
6009    #[derive(serde::Serialize, serde::Deserialize)]
6010    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6011    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
6012    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6013    #[derive(Clone)]
6014    pub struct ownerReturn {
6015        #[allow(missing_docs)]
6016        pub _0: alloy::sol_types::private::Address,
6017    }
6018    #[allow(
6019        non_camel_case_types,
6020        non_snake_case,
6021        clippy::pub_underscore_fields,
6022        clippy::style
6023    )]
6024    const _: () = {
6025        use alloy::sol_types as alloy_sol_types;
6026        {
6027            #[doc(hidden)]
6028            type UnderlyingSolTuple<'a> = ();
6029            #[doc(hidden)]
6030            type UnderlyingRustTuple<'a> = ();
6031            #[cfg(test)]
6032            #[allow(dead_code, unreachable_patterns)]
6033            fn _type_assertion(
6034                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6035            ) {
6036                match _t {
6037                    alloy_sol_types::private::AssertTypeEq::<
6038                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6039                    >(_) => {}
6040                }
6041            }
6042            #[automatically_derived]
6043            #[doc(hidden)]
6044            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
6045                fn from(value: ownerCall) -> Self {
6046                    ()
6047                }
6048            }
6049            #[automatically_derived]
6050            #[doc(hidden)]
6051            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
6052                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6053                    Self
6054                }
6055            }
6056        }
6057        {
6058            #[doc(hidden)]
6059            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6060            #[doc(hidden)]
6061            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6062            #[cfg(test)]
6063            #[allow(dead_code, unreachable_patterns)]
6064            fn _type_assertion(
6065                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6066            ) {
6067                match _t {
6068                    alloy_sol_types::private::AssertTypeEq::<
6069                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6070                    >(_) => {}
6071                }
6072            }
6073            #[automatically_derived]
6074            #[doc(hidden)]
6075            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
6076                fn from(value: ownerReturn) -> Self {
6077                    (value._0,)
6078                }
6079            }
6080            #[automatically_derived]
6081            #[doc(hidden)]
6082            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
6083                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6084                    Self { _0: tuple.0 }
6085                }
6086            }
6087        }
6088        #[automatically_derived]
6089        impl alloy_sol_types::SolCall for ownerCall {
6090            type Parameters<'a> = ();
6091            type Token<'a> = <Self::Parameters<
6092                'a,
6093            > as alloy_sol_types::SolType>::Token<'a>;
6094            type Return = alloy::sol_types::private::Address;
6095            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
6096            type ReturnToken<'a> = <Self::ReturnTuple<
6097                'a,
6098            > as alloy_sol_types::SolType>::Token<'a>;
6099            const SIGNATURE: &'static str = "owner()";
6100            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
6101            #[inline]
6102            fn new<'a>(
6103                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6104            ) -> Self {
6105                tuple.into()
6106            }
6107            #[inline]
6108            fn tokenize(&self) -> Self::Token<'_> {
6109                ()
6110            }
6111            #[inline]
6112            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6113                (
6114                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6115                        ret,
6116                    ),
6117                )
6118            }
6119            #[inline]
6120            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6121                <Self::ReturnTuple<
6122                    '_,
6123                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6124                    .map(|r| {
6125                        let r: ownerReturn = r.into();
6126                        r._0
6127                    })
6128            }
6129            #[inline]
6130            fn abi_decode_returns_validate(
6131                data: &[u8],
6132            ) -> alloy_sol_types::Result<Self::Return> {
6133                <Self::ReturnTuple<
6134                    '_,
6135                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6136                    .map(|r| {
6137                        let r: ownerReturn = r.into();
6138                        r._0
6139                    })
6140            }
6141        }
6142    };
6143    #[derive(serde::Serialize, serde::Deserialize)]
6144    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6145    /**Function with signature `pause()` and selector `0x8456cb59`.
6146```solidity
6147function pause() external;
6148```*/
6149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6150    #[derive(Clone)]
6151    pub struct pauseCall;
6152    ///Container type for the return parameters of the [`pause()`](pauseCall) function.
6153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6154    #[derive(Clone)]
6155    pub struct pauseReturn {}
6156    #[allow(
6157        non_camel_case_types,
6158        non_snake_case,
6159        clippy::pub_underscore_fields,
6160        clippy::style
6161    )]
6162    const _: () = {
6163        use alloy::sol_types as alloy_sol_types;
6164        {
6165            #[doc(hidden)]
6166            type UnderlyingSolTuple<'a> = ();
6167            #[doc(hidden)]
6168            type UnderlyingRustTuple<'a> = ();
6169            #[cfg(test)]
6170            #[allow(dead_code, unreachable_patterns)]
6171            fn _type_assertion(
6172                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6173            ) {
6174                match _t {
6175                    alloy_sol_types::private::AssertTypeEq::<
6176                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6177                    >(_) => {}
6178                }
6179            }
6180            #[automatically_derived]
6181            #[doc(hidden)]
6182            impl ::core::convert::From<pauseCall> for UnderlyingRustTuple<'_> {
6183                fn from(value: pauseCall) -> Self {
6184                    ()
6185                }
6186            }
6187            #[automatically_derived]
6188            #[doc(hidden)]
6189            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseCall {
6190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6191                    Self
6192                }
6193            }
6194        }
6195        {
6196            #[doc(hidden)]
6197            type UnderlyingSolTuple<'a> = ();
6198            #[doc(hidden)]
6199            type UnderlyingRustTuple<'a> = ();
6200            #[cfg(test)]
6201            #[allow(dead_code, unreachable_patterns)]
6202            fn _type_assertion(
6203                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6204            ) {
6205                match _t {
6206                    alloy_sol_types::private::AssertTypeEq::<
6207                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6208                    >(_) => {}
6209                }
6210            }
6211            #[automatically_derived]
6212            #[doc(hidden)]
6213            impl ::core::convert::From<pauseReturn> for UnderlyingRustTuple<'_> {
6214                fn from(value: pauseReturn) -> Self {
6215                    ()
6216                }
6217            }
6218            #[automatically_derived]
6219            #[doc(hidden)]
6220            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pauseReturn {
6221                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6222                    Self {}
6223                }
6224            }
6225        }
6226        impl pauseReturn {
6227            fn _tokenize(
6228                &self,
6229            ) -> <pauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6230                ()
6231            }
6232        }
6233        #[automatically_derived]
6234        impl alloy_sol_types::SolCall for pauseCall {
6235            type Parameters<'a> = ();
6236            type Token<'a> = <Self::Parameters<
6237                'a,
6238            > as alloy_sol_types::SolType>::Token<'a>;
6239            type Return = pauseReturn;
6240            type ReturnTuple<'a> = ();
6241            type ReturnToken<'a> = <Self::ReturnTuple<
6242                'a,
6243            > as alloy_sol_types::SolType>::Token<'a>;
6244            const SIGNATURE: &'static str = "pause()";
6245            const SELECTOR: [u8; 4] = [132u8, 86u8, 203u8, 89u8];
6246            #[inline]
6247            fn new<'a>(
6248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6249            ) -> Self {
6250                tuple.into()
6251            }
6252            #[inline]
6253            fn tokenize(&self) -> Self::Token<'_> {
6254                ()
6255            }
6256            #[inline]
6257            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6258                pauseReturn::_tokenize(ret)
6259            }
6260            #[inline]
6261            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6262                <Self::ReturnTuple<
6263                    '_,
6264                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6265                    .map(Into::into)
6266            }
6267            #[inline]
6268            fn abi_decode_returns_validate(
6269                data: &[u8],
6270            ) -> alloy_sol_types::Result<Self::Return> {
6271                <Self::ReturnTuple<
6272                    '_,
6273                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6274                    .map(Into::into)
6275            }
6276        }
6277    };
6278    #[derive(serde::Serialize, serde::Deserialize)]
6279    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6280    /**Function with signature `paused()` and selector `0x5c975abb`.
6281```solidity
6282function paused() external view returns (bool);
6283```*/
6284    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6285    #[derive(Clone)]
6286    pub struct pausedCall;
6287    #[derive(serde::Serialize, serde::Deserialize)]
6288    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6289    ///Container type for the return parameters of the [`paused()`](pausedCall) function.
6290    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6291    #[derive(Clone)]
6292    pub struct pausedReturn {
6293        #[allow(missing_docs)]
6294        pub _0: bool,
6295    }
6296    #[allow(
6297        non_camel_case_types,
6298        non_snake_case,
6299        clippy::pub_underscore_fields,
6300        clippy::style
6301    )]
6302    const _: () = {
6303        use alloy::sol_types as alloy_sol_types;
6304        {
6305            #[doc(hidden)]
6306            type UnderlyingSolTuple<'a> = ();
6307            #[doc(hidden)]
6308            type UnderlyingRustTuple<'a> = ();
6309            #[cfg(test)]
6310            #[allow(dead_code, unreachable_patterns)]
6311            fn _type_assertion(
6312                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6313            ) {
6314                match _t {
6315                    alloy_sol_types::private::AssertTypeEq::<
6316                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6317                    >(_) => {}
6318                }
6319            }
6320            #[automatically_derived]
6321            #[doc(hidden)]
6322            impl ::core::convert::From<pausedCall> for UnderlyingRustTuple<'_> {
6323                fn from(value: pausedCall) -> Self {
6324                    ()
6325                }
6326            }
6327            #[automatically_derived]
6328            #[doc(hidden)]
6329            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedCall {
6330                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6331                    Self
6332                }
6333            }
6334        }
6335        {
6336            #[doc(hidden)]
6337            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6338            #[doc(hidden)]
6339            type UnderlyingRustTuple<'a> = (bool,);
6340            #[cfg(test)]
6341            #[allow(dead_code, unreachable_patterns)]
6342            fn _type_assertion(
6343                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6344            ) {
6345                match _t {
6346                    alloy_sol_types::private::AssertTypeEq::<
6347                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6348                    >(_) => {}
6349                }
6350            }
6351            #[automatically_derived]
6352            #[doc(hidden)]
6353            impl ::core::convert::From<pausedReturn> for UnderlyingRustTuple<'_> {
6354                fn from(value: pausedReturn) -> Self {
6355                    (value._0,)
6356                }
6357            }
6358            #[automatically_derived]
6359            #[doc(hidden)]
6360            impl ::core::convert::From<UnderlyingRustTuple<'_>> for pausedReturn {
6361                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6362                    Self { _0: tuple.0 }
6363                }
6364            }
6365        }
6366        #[automatically_derived]
6367        impl alloy_sol_types::SolCall for pausedCall {
6368            type Parameters<'a> = ();
6369            type Token<'a> = <Self::Parameters<
6370                'a,
6371            > as alloy_sol_types::SolType>::Token<'a>;
6372            type Return = bool;
6373            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6374            type ReturnToken<'a> = <Self::ReturnTuple<
6375                'a,
6376            > as alloy_sol_types::SolType>::Token<'a>;
6377            const SIGNATURE: &'static str = "paused()";
6378            const SELECTOR: [u8; 4] = [92u8, 151u8, 90u8, 187u8];
6379            #[inline]
6380            fn new<'a>(
6381                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6382            ) -> Self {
6383                tuple.into()
6384            }
6385            #[inline]
6386            fn tokenize(&self) -> Self::Token<'_> {
6387                ()
6388            }
6389            #[inline]
6390            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6391                (
6392                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6393                        ret,
6394                    ),
6395                )
6396            }
6397            #[inline]
6398            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6399                <Self::ReturnTuple<
6400                    '_,
6401                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6402                    .map(|r| {
6403                        let r: pausedReturn = r.into();
6404                        r._0
6405                    })
6406            }
6407            #[inline]
6408            fn abi_decode_returns_validate(
6409                data: &[u8],
6410            ) -> alloy_sol_types::Result<Self::Return> {
6411                <Self::ReturnTuple<
6412                    '_,
6413                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6414                    .map(|r| {
6415                        let r: pausedReturn = r.into();
6416                        r._0
6417                    })
6418            }
6419        }
6420    };
6421    #[derive(serde::Serialize, serde::Deserialize)]
6422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6423    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
6424```solidity
6425function proxiableUUID() external view returns (bytes32);
6426```*/
6427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6428    #[derive(Clone)]
6429    pub struct proxiableUUIDCall;
6430    #[derive(serde::Serialize, serde::Deserialize)]
6431    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6432    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
6433    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6434    #[derive(Clone)]
6435    pub struct proxiableUUIDReturn {
6436        #[allow(missing_docs)]
6437        pub _0: alloy::sol_types::private::FixedBytes<32>,
6438    }
6439    #[allow(
6440        non_camel_case_types,
6441        non_snake_case,
6442        clippy::pub_underscore_fields,
6443        clippy::style
6444    )]
6445    const _: () = {
6446        use alloy::sol_types as alloy_sol_types;
6447        {
6448            #[doc(hidden)]
6449            type UnderlyingSolTuple<'a> = ();
6450            #[doc(hidden)]
6451            type UnderlyingRustTuple<'a> = ();
6452            #[cfg(test)]
6453            #[allow(dead_code, unreachable_patterns)]
6454            fn _type_assertion(
6455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6456            ) {
6457                match _t {
6458                    alloy_sol_types::private::AssertTypeEq::<
6459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6460                    >(_) => {}
6461                }
6462            }
6463            #[automatically_derived]
6464            #[doc(hidden)]
6465            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
6466                fn from(value: proxiableUUIDCall) -> Self {
6467                    ()
6468                }
6469            }
6470            #[automatically_derived]
6471            #[doc(hidden)]
6472            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
6473                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6474                    Self
6475                }
6476            }
6477        }
6478        {
6479            #[doc(hidden)]
6480            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6481            #[doc(hidden)]
6482            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6483            #[cfg(test)]
6484            #[allow(dead_code, unreachable_patterns)]
6485            fn _type_assertion(
6486                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6487            ) {
6488                match _t {
6489                    alloy_sol_types::private::AssertTypeEq::<
6490                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6491                    >(_) => {}
6492                }
6493            }
6494            #[automatically_derived]
6495            #[doc(hidden)]
6496            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
6497                fn from(value: proxiableUUIDReturn) -> Self {
6498                    (value._0,)
6499                }
6500            }
6501            #[automatically_derived]
6502            #[doc(hidden)]
6503            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
6504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6505                    Self { _0: tuple.0 }
6506                }
6507            }
6508        }
6509        #[automatically_derived]
6510        impl alloy_sol_types::SolCall for proxiableUUIDCall {
6511            type Parameters<'a> = ();
6512            type Token<'a> = <Self::Parameters<
6513                'a,
6514            > as alloy_sol_types::SolType>::Token<'a>;
6515            type Return = alloy::sol_types::private::FixedBytes<32>;
6516            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6517            type ReturnToken<'a> = <Self::ReturnTuple<
6518                'a,
6519            > as alloy_sol_types::SolType>::Token<'a>;
6520            const SIGNATURE: &'static str = "proxiableUUID()";
6521            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
6522            #[inline]
6523            fn new<'a>(
6524                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6525            ) -> Self {
6526                tuple.into()
6527            }
6528            #[inline]
6529            fn tokenize(&self) -> Self::Token<'_> {
6530                ()
6531            }
6532            #[inline]
6533            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6534                (
6535                    <alloy::sol_types::sol_data::FixedBytes<
6536                        32,
6537                    > as alloy_sol_types::SolType>::tokenize(ret),
6538                )
6539            }
6540            #[inline]
6541            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6542                <Self::ReturnTuple<
6543                    '_,
6544                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6545                    .map(|r| {
6546                        let r: proxiableUUIDReturn = r.into();
6547                        r._0
6548                    })
6549            }
6550            #[inline]
6551            fn abi_decode_returns_validate(
6552                data: &[u8],
6553            ) -> alloy_sol_types::Result<Self::Return> {
6554                <Self::ReturnTuple<
6555                    '_,
6556                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6557                    .map(|r| {
6558                        let r: proxiableUUIDReturn = r.into();
6559                        r._0
6560                    })
6561            }
6562        }
6563    };
6564    #[derive(serde::Serialize, serde::Deserialize)]
6565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6566    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
6567```solidity
6568function renounceOwnership() external;
6569```*/
6570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6571    #[derive(Clone)]
6572    pub struct renounceOwnershipCall;
6573    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
6574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6575    #[derive(Clone)]
6576    pub struct renounceOwnershipReturn {}
6577    #[allow(
6578        non_camel_case_types,
6579        non_snake_case,
6580        clippy::pub_underscore_fields,
6581        clippy::style
6582    )]
6583    const _: () = {
6584        use alloy::sol_types as alloy_sol_types;
6585        {
6586            #[doc(hidden)]
6587            type UnderlyingSolTuple<'a> = ();
6588            #[doc(hidden)]
6589            type UnderlyingRustTuple<'a> = ();
6590            #[cfg(test)]
6591            #[allow(dead_code, unreachable_patterns)]
6592            fn _type_assertion(
6593                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6594            ) {
6595                match _t {
6596                    alloy_sol_types::private::AssertTypeEq::<
6597                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6598                    >(_) => {}
6599                }
6600            }
6601            #[automatically_derived]
6602            #[doc(hidden)]
6603            impl ::core::convert::From<renounceOwnershipCall>
6604            for UnderlyingRustTuple<'_> {
6605                fn from(value: renounceOwnershipCall) -> Self {
6606                    ()
6607                }
6608            }
6609            #[automatically_derived]
6610            #[doc(hidden)]
6611            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6612            for renounceOwnershipCall {
6613                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6614                    Self
6615                }
6616            }
6617        }
6618        {
6619            #[doc(hidden)]
6620            type UnderlyingSolTuple<'a> = ();
6621            #[doc(hidden)]
6622            type UnderlyingRustTuple<'a> = ();
6623            #[cfg(test)]
6624            #[allow(dead_code, unreachable_patterns)]
6625            fn _type_assertion(
6626                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6627            ) {
6628                match _t {
6629                    alloy_sol_types::private::AssertTypeEq::<
6630                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6631                    >(_) => {}
6632                }
6633            }
6634            #[automatically_derived]
6635            #[doc(hidden)]
6636            impl ::core::convert::From<renounceOwnershipReturn>
6637            for UnderlyingRustTuple<'_> {
6638                fn from(value: renounceOwnershipReturn) -> Self {
6639                    ()
6640                }
6641            }
6642            #[automatically_derived]
6643            #[doc(hidden)]
6644            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6645            for renounceOwnershipReturn {
6646                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6647                    Self {}
6648                }
6649            }
6650        }
6651        impl renounceOwnershipReturn {
6652            fn _tokenize(
6653                &self,
6654            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6655                ()
6656            }
6657        }
6658        #[automatically_derived]
6659        impl alloy_sol_types::SolCall for renounceOwnershipCall {
6660            type Parameters<'a> = ();
6661            type Token<'a> = <Self::Parameters<
6662                'a,
6663            > as alloy_sol_types::SolType>::Token<'a>;
6664            type Return = renounceOwnershipReturn;
6665            type ReturnTuple<'a> = ();
6666            type ReturnToken<'a> = <Self::ReturnTuple<
6667                'a,
6668            > as alloy_sol_types::SolType>::Token<'a>;
6669            const SIGNATURE: &'static str = "renounceOwnership()";
6670            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
6671            #[inline]
6672            fn new<'a>(
6673                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6674            ) -> Self {
6675                tuple.into()
6676            }
6677            #[inline]
6678            fn tokenize(&self) -> Self::Token<'_> {
6679                ()
6680            }
6681            #[inline]
6682            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6683                renounceOwnershipReturn::_tokenize(ret)
6684            }
6685            #[inline]
6686            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6687                <Self::ReturnTuple<
6688                    '_,
6689                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6690                    .map(Into::into)
6691            }
6692            #[inline]
6693            fn abi_decode_returns_validate(
6694                data: &[u8],
6695            ) -> alloy_sol_types::Result<Self::Return> {
6696                <Self::ReturnTuple<
6697                    '_,
6698                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6699                    .map(Into::into)
6700            }
6701        }
6702    };
6703    #[derive(serde::Serialize, serde::Deserialize)]
6704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6705    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
6706```solidity
6707function renounceRole(bytes32 role, address callerConfirmation) external;
6708```*/
6709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6710    #[derive(Clone)]
6711    pub struct renounceRoleCall {
6712        #[allow(missing_docs)]
6713        pub role: alloy::sol_types::private::FixedBytes<32>,
6714        #[allow(missing_docs)]
6715        pub callerConfirmation: alloy::sol_types::private::Address,
6716    }
6717    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
6718    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6719    #[derive(Clone)]
6720    pub struct renounceRoleReturn {}
6721    #[allow(
6722        non_camel_case_types,
6723        non_snake_case,
6724        clippy::pub_underscore_fields,
6725        clippy::style
6726    )]
6727    const _: () = {
6728        use alloy::sol_types as alloy_sol_types;
6729        {
6730            #[doc(hidden)]
6731            type UnderlyingSolTuple<'a> = (
6732                alloy::sol_types::sol_data::FixedBytes<32>,
6733                alloy::sol_types::sol_data::Address,
6734            );
6735            #[doc(hidden)]
6736            type UnderlyingRustTuple<'a> = (
6737                alloy::sol_types::private::FixedBytes<32>,
6738                alloy::sol_types::private::Address,
6739            );
6740            #[cfg(test)]
6741            #[allow(dead_code, unreachable_patterns)]
6742            fn _type_assertion(
6743                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6744            ) {
6745                match _t {
6746                    alloy_sol_types::private::AssertTypeEq::<
6747                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6748                    >(_) => {}
6749                }
6750            }
6751            #[automatically_derived]
6752            #[doc(hidden)]
6753            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
6754                fn from(value: renounceRoleCall) -> Self {
6755                    (value.role, value.callerConfirmation)
6756                }
6757            }
6758            #[automatically_derived]
6759            #[doc(hidden)]
6760            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
6761                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6762                    Self {
6763                        role: tuple.0,
6764                        callerConfirmation: tuple.1,
6765                    }
6766                }
6767            }
6768        }
6769        {
6770            #[doc(hidden)]
6771            type UnderlyingSolTuple<'a> = ();
6772            #[doc(hidden)]
6773            type UnderlyingRustTuple<'a> = ();
6774            #[cfg(test)]
6775            #[allow(dead_code, unreachable_patterns)]
6776            fn _type_assertion(
6777                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6778            ) {
6779                match _t {
6780                    alloy_sol_types::private::AssertTypeEq::<
6781                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6782                    >(_) => {}
6783                }
6784            }
6785            #[automatically_derived]
6786            #[doc(hidden)]
6787            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
6788                fn from(value: renounceRoleReturn) -> Self {
6789                    ()
6790                }
6791            }
6792            #[automatically_derived]
6793            #[doc(hidden)]
6794            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
6795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6796                    Self {}
6797                }
6798            }
6799        }
6800        impl renounceRoleReturn {
6801            fn _tokenize(
6802                &self,
6803            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6804                ()
6805            }
6806        }
6807        #[automatically_derived]
6808        impl alloy_sol_types::SolCall for renounceRoleCall {
6809            type Parameters<'a> = (
6810                alloy::sol_types::sol_data::FixedBytes<32>,
6811                alloy::sol_types::sol_data::Address,
6812            );
6813            type Token<'a> = <Self::Parameters<
6814                'a,
6815            > as alloy_sol_types::SolType>::Token<'a>;
6816            type Return = renounceRoleReturn;
6817            type ReturnTuple<'a> = ();
6818            type ReturnToken<'a> = <Self::ReturnTuple<
6819                'a,
6820            > as alloy_sol_types::SolType>::Token<'a>;
6821            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
6822            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
6823            #[inline]
6824            fn new<'a>(
6825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6826            ) -> Self {
6827                tuple.into()
6828            }
6829            #[inline]
6830            fn tokenize(&self) -> Self::Token<'_> {
6831                (
6832                    <alloy::sol_types::sol_data::FixedBytes<
6833                        32,
6834                    > as alloy_sol_types::SolType>::tokenize(&self.role),
6835                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6836                        &self.callerConfirmation,
6837                    ),
6838                )
6839            }
6840            #[inline]
6841            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6842                renounceRoleReturn::_tokenize(ret)
6843            }
6844            #[inline]
6845            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6846                <Self::ReturnTuple<
6847                    '_,
6848                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6849                    .map(Into::into)
6850            }
6851            #[inline]
6852            fn abi_decode_returns_validate(
6853                data: &[u8],
6854            ) -> alloy_sol_types::Result<Self::Return> {
6855                <Self::ReturnTuple<
6856                    '_,
6857                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6858                    .map(Into::into)
6859            }
6860        }
6861    };
6862    #[derive(serde::Serialize, serde::Deserialize)]
6863    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6864    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
6865```solidity
6866function revokeRole(bytes32 role, address account) external;
6867```*/
6868    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6869    #[derive(Clone)]
6870    pub struct revokeRoleCall {
6871        #[allow(missing_docs)]
6872        pub role: alloy::sol_types::private::FixedBytes<32>,
6873        #[allow(missing_docs)]
6874        pub account: alloy::sol_types::private::Address,
6875    }
6876    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
6877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6878    #[derive(Clone)]
6879    pub struct revokeRoleReturn {}
6880    #[allow(
6881        non_camel_case_types,
6882        non_snake_case,
6883        clippy::pub_underscore_fields,
6884        clippy::style
6885    )]
6886    const _: () = {
6887        use alloy::sol_types as alloy_sol_types;
6888        {
6889            #[doc(hidden)]
6890            type UnderlyingSolTuple<'a> = (
6891                alloy::sol_types::sol_data::FixedBytes<32>,
6892                alloy::sol_types::sol_data::Address,
6893            );
6894            #[doc(hidden)]
6895            type UnderlyingRustTuple<'a> = (
6896                alloy::sol_types::private::FixedBytes<32>,
6897                alloy::sol_types::private::Address,
6898            );
6899            #[cfg(test)]
6900            #[allow(dead_code, unreachable_patterns)]
6901            fn _type_assertion(
6902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6903            ) {
6904                match _t {
6905                    alloy_sol_types::private::AssertTypeEq::<
6906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6907                    >(_) => {}
6908                }
6909            }
6910            #[automatically_derived]
6911            #[doc(hidden)]
6912            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
6913                fn from(value: revokeRoleCall) -> Self {
6914                    (value.role, value.account)
6915                }
6916            }
6917            #[automatically_derived]
6918            #[doc(hidden)]
6919            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
6920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6921                    Self {
6922                        role: tuple.0,
6923                        account: tuple.1,
6924                    }
6925                }
6926            }
6927        }
6928        {
6929            #[doc(hidden)]
6930            type UnderlyingSolTuple<'a> = ();
6931            #[doc(hidden)]
6932            type UnderlyingRustTuple<'a> = ();
6933            #[cfg(test)]
6934            #[allow(dead_code, unreachable_patterns)]
6935            fn _type_assertion(
6936                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6937            ) {
6938                match _t {
6939                    alloy_sol_types::private::AssertTypeEq::<
6940                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6941                    >(_) => {}
6942                }
6943            }
6944            #[automatically_derived]
6945            #[doc(hidden)]
6946            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
6947                fn from(value: revokeRoleReturn) -> Self {
6948                    ()
6949                }
6950            }
6951            #[automatically_derived]
6952            #[doc(hidden)]
6953            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
6954                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6955                    Self {}
6956                }
6957            }
6958        }
6959        impl revokeRoleReturn {
6960            fn _tokenize(
6961                &self,
6962            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6963                ()
6964            }
6965        }
6966        #[automatically_derived]
6967        impl alloy_sol_types::SolCall for revokeRoleCall {
6968            type Parameters<'a> = (
6969                alloy::sol_types::sol_data::FixedBytes<32>,
6970                alloy::sol_types::sol_data::Address,
6971            );
6972            type Token<'a> = <Self::Parameters<
6973                'a,
6974            > as alloy_sol_types::SolType>::Token<'a>;
6975            type Return = revokeRoleReturn;
6976            type ReturnTuple<'a> = ();
6977            type ReturnToken<'a> = <Self::ReturnTuple<
6978                'a,
6979            > as alloy_sol_types::SolType>::Token<'a>;
6980            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
6981            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
6982            #[inline]
6983            fn new<'a>(
6984                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6985            ) -> Self {
6986                tuple.into()
6987            }
6988            #[inline]
6989            fn tokenize(&self) -> Self::Token<'_> {
6990                (
6991                    <alloy::sol_types::sol_data::FixedBytes<
6992                        32,
6993                    > as alloy_sol_types::SolType>::tokenize(&self.role),
6994                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6995                        &self.account,
6996                    ),
6997                )
6998            }
6999            #[inline]
7000            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7001                revokeRoleReturn::_tokenize(ret)
7002            }
7003            #[inline]
7004            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7005                <Self::ReturnTuple<
7006                    '_,
7007                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7008                    .map(Into::into)
7009            }
7010            #[inline]
7011            fn abi_decode_returns_validate(
7012                data: &[u8],
7013            ) -> alloy_sol_types::Result<Self::Return> {
7014                <Self::ReturnTuple<
7015                    '_,
7016                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7017                    .map(Into::into)
7018            }
7019        }
7020    };
7021    #[derive(serde::Serialize, serde::Deserialize)]
7022    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7023    /**Function with signature `setDailyLimit(uint256)` and selector `0xb20d30a9`.
7024```solidity
7025function setDailyLimit(uint256 newLimit) external;
7026```*/
7027    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7028    #[derive(Clone)]
7029    pub struct setDailyLimitCall {
7030        #[allow(missing_docs)]
7031        pub newLimit: alloy::sol_types::private::primitives::aliases::U256,
7032    }
7033    ///Container type for the return parameters of the [`setDailyLimit(uint256)`](setDailyLimitCall) function.
7034    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7035    #[derive(Clone)]
7036    pub struct setDailyLimitReturn {}
7037    #[allow(
7038        non_camel_case_types,
7039        non_snake_case,
7040        clippy::pub_underscore_fields,
7041        clippy::style
7042    )]
7043    const _: () = {
7044        use alloy::sol_types as alloy_sol_types;
7045        {
7046            #[doc(hidden)]
7047            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7048            #[doc(hidden)]
7049            type UnderlyingRustTuple<'a> = (
7050                alloy::sol_types::private::primitives::aliases::U256,
7051            );
7052            #[cfg(test)]
7053            #[allow(dead_code, unreachable_patterns)]
7054            fn _type_assertion(
7055                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7056            ) {
7057                match _t {
7058                    alloy_sol_types::private::AssertTypeEq::<
7059                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7060                    >(_) => {}
7061                }
7062            }
7063            #[automatically_derived]
7064            #[doc(hidden)]
7065            impl ::core::convert::From<setDailyLimitCall> for UnderlyingRustTuple<'_> {
7066                fn from(value: setDailyLimitCall) -> Self {
7067                    (value.newLimit,)
7068                }
7069            }
7070            #[automatically_derived]
7071            #[doc(hidden)]
7072            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setDailyLimitCall {
7073                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7074                    Self { newLimit: tuple.0 }
7075                }
7076            }
7077        }
7078        {
7079            #[doc(hidden)]
7080            type UnderlyingSolTuple<'a> = ();
7081            #[doc(hidden)]
7082            type UnderlyingRustTuple<'a> = ();
7083            #[cfg(test)]
7084            #[allow(dead_code, unreachable_patterns)]
7085            fn _type_assertion(
7086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7087            ) {
7088                match _t {
7089                    alloy_sol_types::private::AssertTypeEq::<
7090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7091                    >(_) => {}
7092                }
7093            }
7094            #[automatically_derived]
7095            #[doc(hidden)]
7096            impl ::core::convert::From<setDailyLimitReturn> for UnderlyingRustTuple<'_> {
7097                fn from(value: setDailyLimitReturn) -> Self {
7098                    ()
7099                }
7100            }
7101            #[automatically_derived]
7102            #[doc(hidden)]
7103            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setDailyLimitReturn {
7104                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7105                    Self {}
7106                }
7107            }
7108        }
7109        impl setDailyLimitReturn {
7110            fn _tokenize(
7111                &self,
7112            ) -> <setDailyLimitCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7113                ()
7114            }
7115        }
7116        #[automatically_derived]
7117        impl alloy_sol_types::SolCall for setDailyLimitCall {
7118            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7119            type Token<'a> = <Self::Parameters<
7120                'a,
7121            > as alloy_sol_types::SolType>::Token<'a>;
7122            type Return = setDailyLimitReturn;
7123            type ReturnTuple<'a> = ();
7124            type ReturnToken<'a> = <Self::ReturnTuple<
7125                'a,
7126            > as alloy_sol_types::SolType>::Token<'a>;
7127            const SIGNATURE: &'static str = "setDailyLimit(uint256)";
7128            const SELECTOR: [u8; 4] = [178u8, 13u8, 48u8, 169u8];
7129            #[inline]
7130            fn new<'a>(
7131                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7132            ) -> Self {
7133                tuple.into()
7134            }
7135            #[inline]
7136            fn tokenize(&self) -> Self::Token<'_> {
7137                (
7138                    <alloy::sol_types::sol_data::Uint<
7139                        256,
7140                    > as alloy_sol_types::SolType>::tokenize(&self.newLimit),
7141                )
7142            }
7143            #[inline]
7144            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7145                setDailyLimitReturn::_tokenize(ret)
7146            }
7147            #[inline]
7148            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7149                <Self::ReturnTuple<
7150                    '_,
7151                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7152                    .map(Into::into)
7153            }
7154            #[inline]
7155            fn abi_decode_returns_validate(
7156                data: &[u8],
7157            ) -> alloy_sol_types::Result<Self::Return> {
7158                <Self::ReturnTuple<
7159                    '_,
7160                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7161                    .map(Into::into)
7162            }
7163        }
7164    };
7165    #[derive(serde::Serialize, serde::Deserialize)]
7166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7167    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
7168```solidity
7169function supportsInterface(bytes4 interfaceId) external view returns (bool);
7170```*/
7171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7172    #[derive(Clone)]
7173    pub struct supportsInterfaceCall {
7174        #[allow(missing_docs)]
7175        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
7176    }
7177    #[derive(serde::Serialize, serde::Deserialize)]
7178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7179    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
7180    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7181    #[derive(Clone)]
7182    pub struct supportsInterfaceReturn {
7183        #[allow(missing_docs)]
7184        pub _0: bool,
7185    }
7186    #[allow(
7187        non_camel_case_types,
7188        non_snake_case,
7189        clippy::pub_underscore_fields,
7190        clippy::style
7191    )]
7192    const _: () = {
7193        use alloy::sol_types as alloy_sol_types;
7194        {
7195            #[doc(hidden)]
7196            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7197            #[doc(hidden)]
7198            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
7199            #[cfg(test)]
7200            #[allow(dead_code, unreachable_patterns)]
7201            fn _type_assertion(
7202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7203            ) {
7204                match _t {
7205                    alloy_sol_types::private::AssertTypeEq::<
7206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7207                    >(_) => {}
7208                }
7209            }
7210            #[automatically_derived]
7211            #[doc(hidden)]
7212            impl ::core::convert::From<supportsInterfaceCall>
7213            for UnderlyingRustTuple<'_> {
7214                fn from(value: supportsInterfaceCall) -> Self {
7215                    (value.interfaceId,)
7216                }
7217            }
7218            #[automatically_derived]
7219            #[doc(hidden)]
7220            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7221            for supportsInterfaceCall {
7222                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7223                    Self { interfaceId: tuple.0 }
7224                }
7225            }
7226        }
7227        {
7228            #[doc(hidden)]
7229            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7230            #[doc(hidden)]
7231            type UnderlyingRustTuple<'a> = (bool,);
7232            #[cfg(test)]
7233            #[allow(dead_code, unreachable_patterns)]
7234            fn _type_assertion(
7235                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7236            ) {
7237                match _t {
7238                    alloy_sol_types::private::AssertTypeEq::<
7239                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7240                    >(_) => {}
7241                }
7242            }
7243            #[automatically_derived]
7244            #[doc(hidden)]
7245            impl ::core::convert::From<supportsInterfaceReturn>
7246            for UnderlyingRustTuple<'_> {
7247                fn from(value: supportsInterfaceReturn) -> Self {
7248                    (value._0,)
7249                }
7250            }
7251            #[automatically_derived]
7252            #[doc(hidden)]
7253            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7254            for supportsInterfaceReturn {
7255                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7256                    Self { _0: tuple.0 }
7257                }
7258            }
7259        }
7260        #[automatically_derived]
7261        impl alloy_sol_types::SolCall for supportsInterfaceCall {
7262            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7263            type Token<'a> = <Self::Parameters<
7264                'a,
7265            > as alloy_sol_types::SolType>::Token<'a>;
7266            type Return = bool;
7267            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7268            type ReturnToken<'a> = <Self::ReturnTuple<
7269                'a,
7270            > as alloy_sol_types::SolType>::Token<'a>;
7271            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
7272            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
7273            #[inline]
7274            fn new<'a>(
7275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7276            ) -> Self {
7277                tuple.into()
7278            }
7279            #[inline]
7280            fn tokenize(&self) -> Self::Token<'_> {
7281                (
7282                    <alloy::sol_types::sol_data::FixedBytes<
7283                        4,
7284                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
7285                )
7286            }
7287            #[inline]
7288            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7289                (
7290                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
7291                        ret,
7292                    ),
7293                )
7294            }
7295            #[inline]
7296            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7297                <Self::ReturnTuple<
7298                    '_,
7299                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7300                    .map(|r| {
7301                        let r: supportsInterfaceReturn = r.into();
7302                        r._0
7303                    })
7304            }
7305            #[inline]
7306            fn abi_decode_returns_validate(
7307                data: &[u8],
7308            ) -> alloy_sol_types::Result<Self::Return> {
7309                <Self::ReturnTuple<
7310                    '_,
7311                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7312                    .map(|r| {
7313                        let r: supportsInterfaceReturn = r.into();
7314                        r._0
7315                    })
7316            }
7317        }
7318    };
7319    #[derive(serde::Serialize, serde::Deserialize)]
7320    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7321    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
7322```solidity
7323function transferOwnership(address newOwner) external;
7324```*/
7325    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7326    #[derive(Clone)]
7327    pub struct transferOwnershipCall {
7328        #[allow(missing_docs)]
7329        pub newOwner: alloy::sol_types::private::Address,
7330    }
7331    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
7332    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7333    #[derive(Clone)]
7334    pub struct transferOwnershipReturn {}
7335    #[allow(
7336        non_camel_case_types,
7337        non_snake_case,
7338        clippy::pub_underscore_fields,
7339        clippy::style
7340    )]
7341    const _: () = {
7342        use alloy::sol_types as alloy_sol_types;
7343        {
7344            #[doc(hidden)]
7345            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
7346            #[doc(hidden)]
7347            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
7348            #[cfg(test)]
7349            #[allow(dead_code, unreachable_patterns)]
7350            fn _type_assertion(
7351                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7352            ) {
7353                match _t {
7354                    alloy_sol_types::private::AssertTypeEq::<
7355                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7356                    >(_) => {}
7357                }
7358            }
7359            #[automatically_derived]
7360            #[doc(hidden)]
7361            impl ::core::convert::From<transferOwnershipCall>
7362            for UnderlyingRustTuple<'_> {
7363                fn from(value: transferOwnershipCall) -> Self {
7364                    (value.newOwner,)
7365                }
7366            }
7367            #[automatically_derived]
7368            #[doc(hidden)]
7369            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7370            for transferOwnershipCall {
7371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7372                    Self { newOwner: tuple.0 }
7373                }
7374            }
7375        }
7376        {
7377            #[doc(hidden)]
7378            type UnderlyingSolTuple<'a> = ();
7379            #[doc(hidden)]
7380            type UnderlyingRustTuple<'a> = ();
7381            #[cfg(test)]
7382            #[allow(dead_code, unreachable_patterns)]
7383            fn _type_assertion(
7384                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7385            ) {
7386                match _t {
7387                    alloy_sol_types::private::AssertTypeEq::<
7388                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7389                    >(_) => {}
7390                }
7391            }
7392            #[automatically_derived]
7393            #[doc(hidden)]
7394            impl ::core::convert::From<transferOwnershipReturn>
7395            for UnderlyingRustTuple<'_> {
7396                fn from(value: transferOwnershipReturn) -> Self {
7397                    ()
7398                }
7399            }
7400            #[automatically_derived]
7401            #[doc(hidden)]
7402            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7403            for transferOwnershipReturn {
7404                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7405                    Self {}
7406                }
7407            }
7408        }
7409        impl transferOwnershipReturn {
7410            fn _tokenize(
7411                &self,
7412            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7413                ()
7414            }
7415        }
7416        #[automatically_derived]
7417        impl alloy_sol_types::SolCall for transferOwnershipCall {
7418            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
7419            type Token<'a> = <Self::Parameters<
7420                'a,
7421            > as alloy_sol_types::SolType>::Token<'a>;
7422            type Return = transferOwnershipReturn;
7423            type ReturnTuple<'a> = ();
7424            type ReturnToken<'a> = <Self::ReturnTuple<
7425                'a,
7426            > as alloy_sol_types::SolType>::Token<'a>;
7427            const SIGNATURE: &'static str = "transferOwnership(address)";
7428            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
7429            #[inline]
7430            fn new<'a>(
7431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7432            ) -> Self {
7433                tuple.into()
7434            }
7435            #[inline]
7436            fn tokenize(&self) -> Self::Token<'_> {
7437                (
7438                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7439                        &self.newOwner,
7440                    ),
7441                )
7442            }
7443            #[inline]
7444            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7445                transferOwnershipReturn::_tokenize(ret)
7446            }
7447            #[inline]
7448            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7449                <Self::ReturnTuple<
7450                    '_,
7451                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7452                    .map(Into::into)
7453            }
7454            #[inline]
7455            fn abi_decode_returns_validate(
7456                data: &[u8],
7457            ) -> alloy_sol_types::Result<Self::Return> {
7458                <Self::ReturnTuple<
7459                    '_,
7460                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7461                    .map(Into::into)
7462            }
7463        }
7464    };
7465    #[derive(serde::Serialize, serde::Deserialize)]
7466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7467    /**Function with signature `unpause()` and selector `0x3f4ba83a`.
7468```solidity
7469function unpause() external;
7470```*/
7471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7472    #[derive(Clone)]
7473    pub struct unpauseCall;
7474    ///Container type for the return parameters of the [`unpause()`](unpauseCall) function.
7475    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7476    #[derive(Clone)]
7477    pub struct unpauseReturn {}
7478    #[allow(
7479        non_camel_case_types,
7480        non_snake_case,
7481        clippy::pub_underscore_fields,
7482        clippy::style
7483    )]
7484    const _: () = {
7485        use alloy::sol_types as alloy_sol_types;
7486        {
7487            #[doc(hidden)]
7488            type UnderlyingSolTuple<'a> = ();
7489            #[doc(hidden)]
7490            type UnderlyingRustTuple<'a> = ();
7491            #[cfg(test)]
7492            #[allow(dead_code, unreachable_patterns)]
7493            fn _type_assertion(
7494                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7495            ) {
7496                match _t {
7497                    alloy_sol_types::private::AssertTypeEq::<
7498                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7499                    >(_) => {}
7500                }
7501            }
7502            #[automatically_derived]
7503            #[doc(hidden)]
7504            impl ::core::convert::From<unpauseCall> for UnderlyingRustTuple<'_> {
7505                fn from(value: unpauseCall) -> Self {
7506                    ()
7507                }
7508            }
7509            #[automatically_derived]
7510            #[doc(hidden)]
7511            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseCall {
7512                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7513                    Self
7514                }
7515            }
7516        }
7517        {
7518            #[doc(hidden)]
7519            type UnderlyingSolTuple<'a> = ();
7520            #[doc(hidden)]
7521            type UnderlyingRustTuple<'a> = ();
7522            #[cfg(test)]
7523            #[allow(dead_code, unreachable_patterns)]
7524            fn _type_assertion(
7525                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7526            ) {
7527                match _t {
7528                    alloy_sol_types::private::AssertTypeEq::<
7529                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7530                    >(_) => {}
7531                }
7532            }
7533            #[automatically_derived]
7534            #[doc(hidden)]
7535            impl ::core::convert::From<unpauseReturn> for UnderlyingRustTuple<'_> {
7536                fn from(value: unpauseReturn) -> Self {
7537                    ()
7538                }
7539            }
7540            #[automatically_derived]
7541            #[doc(hidden)]
7542            impl ::core::convert::From<UnderlyingRustTuple<'_>> for unpauseReturn {
7543                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7544                    Self {}
7545                }
7546            }
7547        }
7548        impl unpauseReturn {
7549            fn _tokenize(
7550                &self,
7551            ) -> <unpauseCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7552                ()
7553            }
7554        }
7555        #[automatically_derived]
7556        impl alloy_sol_types::SolCall for unpauseCall {
7557            type Parameters<'a> = ();
7558            type Token<'a> = <Self::Parameters<
7559                'a,
7560            > as alloy_sol_types::SolType>::Token<'a>;
7561            type Return = unpauseReturn;
7562            type ReturnTuple<'a> = ();
7563            type ReturnToken<'a> = <Self::ReturnTuple<
7564                'a,
7565            > as alloy_sol_types::SolType>::Token<'a>;
7566            const SIGNATURE: &'static str = "unpause()";
7567            const SELECTOR: [u8; 4] = [63u8, 75u8, 168u8, 58u8];
7568            #[inline]
7569            fn new<'a>(
7570                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7571            ) -> Self {
7572                tuple.into()
7573            }
7574            #[inline]
7575            fn tokenize(&self) -> Self::Token<'_> {
7576                ()
7577            }
7578            #[inline]
7579            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7580                unpauseReturn::_tokenize(ret)
7581            }
7582            #[inline]
7583            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7584                <Self::ReturnTuple<
7585                    '_,
7586                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7587                    .map(Into::into)
7588            }
7589            #[inline]
7590            fn abi_decode_returns_validate(
7591                data: &[u8],
7592            ) -> alloy_sol_types::Result<Self::Return> {
7593                <Self::ReturnTuple<
7594                    '_,
7595                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7596                    .map(Into::into)
7597            }
7598        }
7599    };
7600    #[derive(serde::Serialize, serde::Deserialize)]
7601    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7602    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
7603```solidity
7604function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
7605```*/
7606    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7607    #[derive(Clone)]
7608    pub struct upgradeToAndCallCall {
7609        #[allow(missing_docs)]
7610        pub newImplementation: alloy::sol_types::private::Address,
7611        #[allow(missing_docs)]
7612        pub data: alloy::sol_types::private::Bytes,
7613    }
7614    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
7615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7616    #[derive(Clone)]
7617    pub struct upgradeToAndCallReturn {}
7618    #[allow(
7619        non_camel_case_types,
7620        non_snake_case,
7621        clippy::pub_underscore_fields,
7622        clippy::style
7623    )]
7624    const _: () = {
7625        use alloy::sol_types as alloy_sol_types;
7626        {
7627            #[doc(hidden)]
7628            type UnderlyingSolTuple<'a> = (
7629                alloy::sol_types::sol_data::Address,
7630                alloy::sol_types::sol_data::Bytes,
7631            );
7632            #[doc(hidden)]
7633            type UnderlyingRustTuple<'a> = (
7634                alloy::sol_types::private::Address,
7635                alloy::sol_types::private::Bytes,
7636            );
7637            #[cfg(test)]
7638            #[allow(dead_code, unreachable_patterns)]
7639            fn _type_assertion(
7640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7641            ) {
7642                match _t {
7643                    alloy_sol_types::private::AssertTypeEq::<
7644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7645                    >(_) => {}
7646                }
7647            }
7648            #[automatically_derived]
7649            #[doc(hidden)]
7650            impl ::core::convert::From<upgradeToAndCallCall>
7651            for UnderlyingRustTuple<'_> {
7652                fn from(value: upgradeToAndCallCall) -> Self {
7653                    (value.newImplementation, value.data)
7654                }
7655            }
7656            #[automatically_derived]
7657            #[doc(hidden)]
7658            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7659            for upgradeToAndCallCall {
7660                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7661                    Self {
7662                        newImplementation: tuple.0,
7663                        data: tuple.1,
7664                    }
7665                }
7666            }
7667        }
7668        {
7669            #[doc(hidden)]
7670            type UnderlyingSolTuple<'a> = ();
7671            #[doc(hidden)]
7672            type UnderlyingRustTuple<'a> = ();
7673            #[cfg(test)]
7674            #[allow(dead_code, unreachable_patterns)]
7675            fn _type_assertion(
7676                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7677            ) {
7678                match _t {
7679                    alloy_sol_types::private::AssertTypeEq::<
7680                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7681                    >(_) => {}
7682                }
7683            }
7684            #[automatically_derived]
7685            #[doc(hidden)]
7686            impl ::core::convert::From<upgradeToAndCallReturn>
7687            for UnderlyingRustTuple<'_> {
7688                fn from(value: upgradeToAndCallReturn) -> Self {
7689                    ()
7690                }
7691            }
7692            #[automatically_derived]
7693            #[doc(hidden)]
7694            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7695            for upgradeToAndCallReturn {
7696                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7697                    Self {}
7698                }
7699            }
7700        }
7701        impl upgradeToAndCallReturn {
7702            fn _tokenize(
7703                &self,
7704            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7705                ()
7706            }
7707        }
7708        #[automatically_derived]
7709        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
7710            type Parameters<'a> = (
7711                alloy::sol_types::sol_data::Address,
7712                alloy::sol_types::sol_data::Bytes,
7713            );
7714            type Token<'a> = <Self::Parameters<
7715                'a,
7716            > as alloy_sol_types::SolType>::Token<'a>;
7717            type Return = upgradeToAndCallReturn;
7718            type ReturnTuple<'a> = ();
7719            type ReturnToken<'a> = <Self::ReturnTuple<
7720                'a,
7721            > as alloy_sol_types::SolType>::Token<'a>;
7722            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
7723            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
7724            #[inline]
7725            fn new<'a>(
7726                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7727            ) -> Self {
7728                tuple.into()
7729            }
7730            #[inline]
7731            fn tokenize(&self) -> Self::Token<'_> {
7732                (
7733                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7734                        &self.newImplementation,
7735                    ),
7736                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7737                        &self.data,
7738                    ),
7739                )
7740            }
7741            #[inline]
7742            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7743                upgradeToAndCallReturn::_tokenize(ret)
7744            }
7745            #[inline]
7746            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7747                <Self::ReturnTuple<
7748                    '_,
7749                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7750                    .map(Into::into)
7751            }
7752            #[inline]
7753            fn abi_decode_returns_validate(
7754                data: &[u8],
7755            ) -> alloy_sol_types::Result<Self::Return> {
7756                <Self::ReturnTuple<
7757                    '_,
7758                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7759                    .map(Into::into)
7760            }
7761        }
7762    };
7763    ///Container for all the [`RewardClaim`](self) function calls.
7764    #[derive(serde::Serialize, serde::Deserialize)]
7765    #[derive()]
7766    pub enum RewardClaimCalls {
7767        #[allow(missing_docs)]
7768        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
7769        #[allow(missing_docs)]
7770        PAUSER_ROLE(PAUSER_ROLECall),
7771        #[allow(missing_docs)]
7772        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
7773        #[allow(missing_docs)]
7774        claimRewards(claimRewardsCall),
7775        #[allow(missing_docs)]
7776        claimedRewards(claimedRewardsCall),
7777        #[allow(missing_docs)]
7778        dailyLimit(dailyLimitCall),
7779        #[allow(missing_docs)]
7780        espToken(espTokenCall),
7781        #[allow(missing_docs)]
7782        getRoleAdmin(getRoleAdminCall),
7783        #[allow(missing_docs)]
7784        getVersion(getVersionCall),
7785        #[allow(missing_docs)]
7786        grantRole(grantRoleCall),
7787        #[allow(missing_docs)]
7788        hasRole(hasRoleCall),
7789        #[allow(missing_docs)]
7790        initialize(initializeCall),
7791        #[allow(missing_docs)]
7792        lightClient(lightClientCall),
7793        #[allow(missing_docs)]
7794        owner(ownerCall),
7795        #[allow(missing_docs)]
7796        pause(pauseCall),
7797        #[allow(missing_docs)]
7798        paused(pausedCall),
7799        #[allow(missing_docs)]
7800        proxiableUUID(proxiableUUIDCall),
7801        #[allow(missing_docs)]
7802        renounceOwnership(renounceOwnershipCall),
7803        #[allow(missing_docs)]
7804        renounceRole(renounceRoleCall),
7805        #[allow(missing_docs)]
7806        revokeRole(revokeRoleCall),
7807        #[allow(missing_docs)]
7808        setDailyLimit(setDailyLimitCall),
7809        #[allow(missing_docs)]
7810        supportsInterface(supportsInterfaceCall),
7811        #[allow(missing_docs)]
7812        transferOwnership(transferOwnershipCall),
7813        #[allow(missing_docs)]
7814        unpause(unpauseCall),
7815        #[allow(missing_docs)]
7816        upgradeToAndCall(upgradeToAndCallCall),
7817    }
7818    #[automatically_derived]
7819    impl RewardClaimCalls {
7820        /// All the selectors of this enum.
7821        ///
7822        /// Note that the selectors might not be in the same order as the variants.
7823        /// No guarantees are made about the order of the selectors.
7824        ///
7825        /// Prefer using `SolInterface` methods instead.
7826        pub const SELECTORS: &'static [[u8; 4usize]] = &[
7827            [1u8, 255u8, 201u8, 167u8],
7828            [13u8, 142u8, 110u8, 44u8],
7829            [36u8, 138u8, 156u8, 163u8],
7830            [47u8, 47u8, 241u8, 93u8],
7831            [54u8, 86u8, 138u8, 190u8],
7832            [63u8, 75u8, 168u8, 58u8],
7833            [79u8, 30u8, 242u8, 134u8],
7834            [82u8, 209u8, 144u8, 45u8],
7835            [84u8, 157u8, 216u8, 195u8],
7836            [92u8, 151u8, 90u8, 187u8],
7837            [103u8, 238u8, 186u8, 12u8],
7838            [113u8, 80u8, 24u8, 166u8],
7839            [132u8, 86u8, 203u8, 89u8],
7840            [141u8, 165u8, 203u8, 91u8],
7841            [145u8, 209u8, 72u8, 84u8],
7842            [162u8, 23u8, 253u8, 223u8],
7843            [173u8, 60u8, 177u8, 204u8],
7844            [178u8, 13u8, 48u8, 169u8],
7845            [181u8, 112u8, 14u8, 104u8],
7846            [189u8, 131u8, 67u8, 69u8],
7847            [213u8, 71u8, 116u8, 31u8],
7848            [230u8, 58u8, 177u8, 233u8],
7849            [240u8, 146u8, 225u8, 58u8],
7850            [242u8, 253u8, 227u8, 139u8],
7851            [248u8, 200u8, 118u8, 94u8],
7852        ];
7853    }
7854    #[automatically_derived]
7855    impl alloy_sol_types::SolInterface for RewardClaimCalls {
7856        const NAME: &'static str = "RewardClaimCalls";
7857        const MIN_DATA_LENGTH: usize = 0usize;
7858        const COUNT: usize = 25usize;
7859        #[inline]
7860        fn selector(&self) -> [u8; 4] {
7861            match self {
7862                Self::DEFAULT_ADMIN_ROLE(_) => {
7863                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7864                }
7865                Self::PAUSER_ROLE(_) => {
7866                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7867                }
7868                Self::UPGRADE_INTERFACE_VERSION(_) => {
7869                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
7870                }
7871                Self::claimRewards(_) => {
7872                    <claimRewardsCall as alloy_sol_types::SolCall>::SELECTOR
7873                }
7874                Self::claimedRewards(_) => {
7875                    <claimedRewardsCall as alloy_sol_types::SolCall>::SELECTOR
7876                }
7877                Self::dailyLimit(_) => {
7878                    <dailyLimitCall as alloy_sol_types::SolCall>::SELECTOR
7879                }
7880                Self::espToken(_) => <espTokenCall as alloy_sol_types::SolCall>::SELECTOR,
7881                Self::getRoleAdmin(_) => {
7882                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
7883                }
7884                Self::getVersion(_) => {
7885                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
7886                }
7887                Self::grantRole(_) => {
7888                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
7889                }
7890                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
7891                Self::initialize(_) => {
7892                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
7893                }
7894                Self::lightClient(_) => {
7895                    <lightClientCall as alloy_sol_types::SolCall>::SELECTOR
7896                }
7897                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
7898                Self::pause(_) => <pauseCall as alloy_sol_types::SolCall>::SELECTOR,
7899                Self::paused(_) => <pausedCall as alloy_sol_types::SolCall>::SELECTOR,
7900                Self::proxiableUUID(_) => {
7901                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
7902                }
7903                Self::renounceOwnership(_) => {
7904                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
7905                }
7906                Self::renounceRole(_) => {
7907                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
7908                }
7909                Self::revokeRole(_) => {
7910                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
7911                }
7912                Self::setDailyLimit(_) => {
7913                    <setDailyLimitCall as alloy_sol_types::SolCall>::SELECTOR
7914                }
7915                Self::supportsInterface(_) => {
7916                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
7917                }
7918                Self::transferOwnership(_) => {
7919                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
7920                }
7921                Self::unpause(_) => <unpauseCall as alloy_sol_types::SolCall>::SELECTOR,
7922                Self::upgradeToAndCall(_) => {
7923                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
7924                }
7925            }
7926        }
7927        #[inline]
7928        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
7929            Self::SELECTORS.get(i).copied()
7930        }
7931        #[inline]
7932        fn valid_selector(selector: [u8; 4]) -> bool {
7933            Self::SELECTORS.binary_search(&selector).is_ok()
7934        }
7935        #[inline]
7936        #[allow(non_snake_case)]
7937        fn abi_decode_raw(
7938            selector: [u8; 4],
7939            data: &[u8],
7940        ) -> alloy_sol_types::Result<Self> {
7941            static DECODE_SHIMS: &[fn(
7942                &[u8],
7943            ) -> alloy_sol_types::Result<RewardClaimCalls>] = &[
7944                {
7945                    fn supportsInterface(
7946                        data: &[u8],
7947                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
7948                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
7949                                data,
7950                            )
7951                            .map(RewardClaimCalls::supportsInterface)
7952                    }
7953                    supportsInterface
7954                },
7955                {
7956                    fn getVersion(
7957                        data: &[u8],
7958                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
7959                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
7960                                data,
7961                            )
7962                            .map(RewardClaimCalls::getVersion)
7963                    }
7964                    getVersion
7965                },
7966                {
7967                    fn getRoleAdmin(
7968                        data: &[u8],
7969                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
7970                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
7971                                data,
7972                            )
7973                            .map(RewardClaimCalls::getRoleAdmin)
7974                    }
7975                    getRoleAdmin
7976                },
7977                {
7978                    fn grantRole(
7979                        data: &[u8],
7980                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
7981                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
7982                            .map(RewardClaimCalls::grantRole)
7983                    }
7984                    grantRole
7985                },
7986                {
7987                    fn renounceRole(
7988                        data: &[u8],
7989                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
7990                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
7991                                data,
7992                            )
7993                            .map(RewardClaimCalls::renounceRole)
7994                    }
7995                    renounceRole
7996                },
7997                {
7998                    fn unpause(
7999                        data: &[u8],
8000                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8001                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8002                            .map(RewardClaimCalls::unpause)
8003                    }
8004                    unpause
8005                },
8006                {
8007                    fn upgradeToAndCall(
8008                        data: &[u8],
8009                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8010                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
8011                                data,
8012                            )
8013                            .map(RewardClaimCalls::upgradeToAndCall)
8014                    }
8015                    upgradeToAndCall
8016                },
8017                {
8018                    fn proxiableUUID(
8019                        data: &[u8],
8020                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8021                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
8022                                data,
8023                            )
8024                            .map(RewardClaimCalls::proxiableUUID)
8025                    }
8026                    proxiableUUID
8027                },
8028                {
8029                    fn claimRewards(
8030                        data: &[u8],
8031                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8032                        <claimRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8033                                data,
8034                            )
8035                            .map(RewardClaimCalls::claimRewards)
8036                    }
8037                    claimRewards
8038                },
8039                {
8040                    fn paused(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8041                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8042                            .map(RewardClaimCalls::paused)
8043                    }
8044                    paused
8045                },
8046                {
8047                    fn dailyLimit(
8048                        data: &[u8],
8049                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8050                        <dailyLimitCall as alloy_sol_types::SolCall>::abi_decode_raw(
8051                                data,
8052                            )
8053                            .map(RewardClaimCalls::dailyLimit)
8054                    }
8055                    dailyLimit
8056                },
8057                {
8058                    fn renounceOwnership(
8059                        data: &[u8],
8060                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8061                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
8062                                data,
8063                            )
8064                            .map(RewardClaimCalls::renounceOwnership)
8065                    }
8066                    renounceOwnership
8067                },
8068                {
8069                    fn pause(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8070                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8071                            .map(RewardClaimCalls::pause)
8072                    }
8073                    pause
8074                },
8075                {
8076                    fn owner(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8077                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8078                            .map(RewardClaimCalls::owner)
8079                    }
8080                    owner
8081                },
8082                {
8083                    fn hasRole(
8084                        data: &[u8],
8085                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8086                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8087                            .map(RewardClaimCalls::hasRole)
8088                    }
8089                    hasRole
8090                },
8091                {
8092                    fn DEFAULT_ADMIN_ROLE(
8093                        data: &[u8],
8094                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8095                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8096                                data,
8097                            )
8098                            .map(RewardClaimCalls::DEFAULT_ADMIN_ROLE)
8099                    }
8100                    DEFAULT_ADMIN_ROLE
8101                },
8102                {
8103                    fn UPGRADE_INTERFACE_VERSION(
8104                        data: &[u8],
8105                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8106                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
8107                                data,
8108                            )
8109                            .map(RewardClaimCalls::UPGRADE_INTERFACE_VERSION)
8110                    }
8111                    UPGRADE_INTERFACE_VERSION
8112                },
8113                {
8114                    fn setDailyLimit(
8115                        data: &[u8],
8116                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8117                        <setDailyLimitCall as alloy_sol_types::SolCall>::abi_decode_raw(
8118                                data,
8119                            )
8120                            .map(RewardClaimCalls::setDailyLimit)
8121                    }
8122                    setDailyLimit
8123                },
8124                {
8125                    fn lightClient(
8126                        data: &[u8],
8127                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8128                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw(
8129                                data,
8130                            )
8131                            .map(RewardClaimCalls::lightClient)
8132                    }
8133                    lightClient
8134                },
8135                {
8136                    fn claimedRewards(
8137                        data: &[u8],
8138                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8139                        <claimedRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw(
8140                                data,
8141                            )
8142                            .map(RewardClaimCalls::claimedRewards)
8143                    }
8144                    claimedRewards
8145                },
8146                {
8147                    fn revokeRole(
8148                        data: &[u8],
8149                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8150                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8151                                data,
8152                            )
8153                            .map(RewardClaimCalls::revokeRole)
8154                    }
8155                    revokeRole
8156                },
8157                {
8158                    fn PAUSER_ROLE(
8159                        data: &[u8],
8160                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8161                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8162                                data,
8163                            )
8164                            .map(RewardClaimCalls::PAUSER_ROLE)
8165                    }
8166                    PAUSER_ROLE
8167                },
8168                {
8169                    fn espToken(
8170                        data: &[u8],
8171                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8172                        <espTokenCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8173                            .map(RewardClaimCalls::espToken)
8174                    }
8175                    espToken
8176                },
8177                {
8178                    fn transferOwnership(
8179                        data: &[u8],
8180                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8181                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
8182                                data,
8183                            )
8184                            .map(RewardClaimCalls::transferOwnership)
8185                    }
8186                    transferOwnership
8187                },
8188                {
8189                    fn initialize(
8190                        data: &[u8],
8191                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8192                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
8193                                data,
8194                            )
8195                            .map(RewardClaimCalls::initialize)
8196                    }
8197                    initialize
8198                },
8199            ];
8200            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8201                return Err(
8202                    alloy_sol_types::Error::unknown_selector(
8203                        <Self as alloy_sol_types::SolInterface>::NAME,
8204                        selector,
8205                    ),
8206                );
8207            };
8208            DECODE_SHIMS[idx](data)
8209        }
8210        #[inline]
8211        #[allow(non_snake_case)]
8212        fn abi_decode_raw_validate(
8213            selector: [u8; 4],
8214            data: &[u8],
8215        ) -> alloy_sol_types::Result<Self> {
8216            static DECODE_VALIDATE_SHIMS: &[fn(
8217                &[u8],
8218            ) -> alloy_sol_types::Result<RewardClaimCalls>] = &[
8219                {
8220                    fn supportsInterface(
8221                        data: &[u8],
8222                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8223                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8224                                data,
8225                            )
8226                            .map(RewardClaimCalls::supportsInterface)
8227                    }
8228                    supportsInterface
8229                },
8230                {
8231                    fn getVersion(
8232                        data: &[u8],
8233                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8234                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8235                                data,
8236                            )
8237                            .map(RewardClaimCalls::getVersion)
8238                    }
8239                    getVersion
8240                },
8241                {
8242                    fn getRoleAdmin(
8243                        data: &[u8],
8244                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8245                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8246                                data,
8247                            )
8248                            .map(RewardClaimCalls::getRoleAdmin)
8249                    }
8250                    getRoleAdmin
8251                },
8252                {
8253                    fn grantRole(
8254                        data: &[u8],
8255                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8256                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8257                                data,
8258                            )
8259                            .map(RewardClaimCalls::grantRole)
8260                    }
8261                    grantRole
8262                },
8263                {
8264                    fn renounceRole(
8265                        data: &[u8],
8266                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8267                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8268                                data,
8269                            )
8270                            .map(RewardClaimCalls::renounceRole)
8271                    }
8272                    renounceRole
8273                },
8274                {
8275                    fn unpause(
8276                        data: &[u8],
8277                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8278                        <unpauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8279                                data,
8280                            )
8281                            .map(RewardClaimCalls::unpause)
8282                    }
8283                    unpause
8284                },
8285                {
8286                    fn upgradeToAndCall(
8287                        data: &[u8],
8288                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8289                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8290                                data,
8291                            )
8292                            .map(RewardClaimCalls::upgradeToAndCall)
8293                    }
8294                    upgradeToAndCall
8295                },
8296                {
8297                    fn proxiableUUID(
8298                        data: &[u8],
8299                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8300                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8301                                data,
8302                            )
8303                            .map(RewardClaimCalls::proxiableUUID)
8304                    }
8305                    proxiableUUID
8306                },
8307                {
8308                    fn claimRewards(
8309                        data: &[u8],
8310                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8311                        <claimRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8312                                data,
8313                            )
8314                            .map(RewardClaimCalls::claimRewards)
8315                    }
8316                    claimRewards
8317                },
8318                {
8319                    fn paused(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8320                        <pausedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8321                                data,
8322                            )
8323                            .map(RewardClaimCalls::paused)
8324                    }
8325                    paused
8326                },
8327                {
8328                    fn dailyLimit(
8329                        data: &[u8],
8330                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8331                        <dailyLimitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8332                                data,
8333                            )
8334                            .map(RewardClaimCalls::dailyLimit)
8335                    }
8336                    dailyLimit
8337                },
8338                {
8339                    fn renounceOwnership(
8340                        data: &[u8],
8341                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8342                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8343                                data,
8344                            )
8345                            .map(RewardClaimCalls::renounceOwnership)
8346                    }
8347                    renounceOwnership
8348                },
8349                {
8350                    fn pause(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8351                        <pauseCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8352                                data,
8353                            )
8354                            .map(RewardClaimCalls::pause)
8355                    }
8356                    pause
8357                },
8358                {
8359                    fn owner(data: &[u8]) -> alloy_sol_types::Result<RewardClaimCalls> {
8360                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8361                                data,
8362                            )
8363                            .map(RewardClaimCalls::owner)
8364                    }
8365                    owner
8366                },
8367                {
8368                    fn hasRole(
8369                        data: &[u8],
8370                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8371                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8372                                data,
8373                            )
8374                            .map(RewardClaimCalls::hasRole)
8375                    }
8376                    hasRole
8377                },
8378                {
8379                    fn DEFAULT_ADMIN_ROLE(
8380                        data: &[u8],
8381                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8382                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8383                                data,
8384                            )
8385                            .map(RewardClaimCalls::DEFAULT_ADMIN_ROLE)
8386                    }
8387                    DEFAULT_ADMIN_ROLE
8388                },
8389                {
8390                    fn UPGRADE_INTERFACE_VERSION(
8391                        data: &[u8],
8392                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8393                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8394                                data,
8395                            )
8396                            .map(RewardClaimCalls::UPGRADE_INTERFACE_VERSION)
8397                    }
8398                    UPGRADE_INTERFACE_VERSION
8399                },
8400                {
8401                    fn setDailyLimit(
8402                        data: &[u8],
8403                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8404                        <setDailyLimitCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8405                                data,
8406                            )
8407                            .map(RewardClaimCalls::setDailyLimit)
8408                    }
8409                    setDailyLimit
8410                },
8411                {
8412                    fn lightClient(
8413                        data: &[u8],
8414                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8415                        <lightClientCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8416                                data,
8417                            )
8418                            .map(RewardClaimCalls::lightClient)
8419                    }
8420                    lightClient
8421                },
8422                {
8423                    fn claimedRewards(
8424                        data: &[u8],
8425                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8426                        <claimedRewardsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8427                                data,
8428                            )
8429                            .map(RewardClaimCalls::claimedRewards)
8430                    }
8431                    claimedRewards
8432                },
8433                {
8434                    fn revokeRole(
8435                        data: &[u8],
8436                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8437                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8438                                data,
8439                            )
8440                            .map(RewardClaimCalls::revokeRole)
8441                    }
8442                    revokeRole
8443                },
8444                {
8445                    fn PAUSER_ROLE(
8446                        data: &[u8],
8447                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8448                        <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8449                                data,
8450                            )
8451                            .map(RewardClaimCalls::PAUSER_ROLE)
8452                    }
8453                    PAUSER_ROLE
8454                },
8455                {
8456                    fn espToken(
8457                        data: &[u8],
8458                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8459                        <espTokenCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8460                                data,
8461                            )
8462                            .map(RewardClaimCalls::espToken)
8463                    }
8464                    espToken
8465                },
8466                {
8467                    fn transferOwnership(
8468                        data: &[u8],
8469                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8470                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8471                                data,
8472                            )
8473                            .map(RewardClaimCalls::transferOwnership)
8474                    }
8475                    transferOwnership
8476                },
8477                {
8478                    fn initialize(
8479                        data: &[u8],
8480                    ) -> alloy_sol_types::Result<RewardClaimCalls> {
8481                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8482                                data,
8483                            )
8484                            .map(RewardClaimCalls::initialize)
8485                    }
8486                    initialize
8487                },
8488            ];
8489            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8490                return Err(
8491                    alloy_sol_types::Error::unknown_selector(
8492                        <Self as alloy_sol_types::SolInterface>::NAME,
8493                        selector,
8494                    ),
8495                );
8496            };
8497            DECODE_VALIDATE_SHIMS[idx](data)
8498        }
8499        #[inline]
8500        fn abi_encoded_size(&self) -> usize {
8501            match self {
8502                Self::DEFAULT_ADMIN_ROLE(inner) => {
8503                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8504                        inner,
8505                    )
8506                }
8507                Self::PAUSER_ROLE(inner) => {
8508                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8509                        inner,
8510                    )
8511                }
8512                Self::UPGRADE_INTERFACE_VERSION(inner) => {
8513                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
8514                        inner,
8515                    )
8516                }
8517                Self::claimRewards(inner) => {
8518                    <claimRewardsCall as alloy_sol_types::SolCall>::abi_encoded_size(
8519                        inner,
8520                    )
8521                }
8522                Self::claimedRewards(inner) => {
8523                    <claimedRewardsCall as alloy_sol_types::SolCall>::abi_encoded_size(
8524                        inner,
8525                    )
8526                }
8527                Self::dailyLimit(inner) => {
8528                    <dailyLimitCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8529                }
8530                Self::espToken(inner) => {
8531                    <espTokenCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8532                }
8533                Self::getRoleAdmin(inner) => {
8534                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
8535                        inner,
8536                    )
8537                }
8538                Self::getVersion(inner) => {
8539                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8540                }
8541                Self::grantRole(inner) => {
8542                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8543                }
8544                Self::hasRole(inner) => {
8545                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8546                }
8547                Self::initialize(inner) => {
8548                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8549                }
8550                Self::lightClient(inner) => {
8551                    <lightClientCall as alloy_sol_types::SolCall>::abi_encoded_size(
8552                        inner,
8553                    )
8554                }
8555                Self::owner(inner) => {
8556                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8557                }
8558                Self::pause(inner) => {
8559                    <pauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8560                }
8561                Self::paused(inner) => {
8562                    <pausedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8563                }
8564                Self::proxiableUUID(inner) => {
8565                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
8566                        inner,
8567                    )
8568                }
8569                Self::renounceOwnership(inner) => {
8570                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
8571                        inner,
8572                    )
8573                }
8574                Self::renounceRole(inner) => {
8575                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
8576                        inner,
8577                    )
8578                }
8579                Self::revokeRole(inner) => {
8580                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8581                }
8582                Self::setDailyLimit(inner) => {
8583                    <setDailyLimitCall as alloy_sol_types::SolCall>::abi_encoded_size(
8584                        inner,
8585                    )
8586                }
8587                Self::supportsInterface(inner) => {
8588                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
8589                        inner,
8590                    )
8591                }
8592                Self::transferOwnership(inner) => {
8593                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
8594                        inner,
8595                    )
8596                }
8597                Self::unpause(inner) => {
8598                    <unpauseCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8599                }
8600                Self::upgradeToAndCall(inner) => {
8601                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
8602                        inner,
8603                    )
8604                }
8605            }
8606        }
8607        #[inline]
8608        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
8609            match self {
8610                Self::DEFAULT_ADMIN_ROLE(inner) => {
8611                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8612                        inner,
8613                        out,
8614                    )
8615                }
8616                Self::PAUSER_ROLE(inner) => {
8617                    <PAUSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8618                        inner,
8619                        out,
8620                    )
8621                }
8622                Self::UPGRADE_INTERFACE_VERSION(inner) => {
8623                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
8624                        inner,
8625                        out,
8626                    )
8627                }
8628                Self::claimRewards(inner) => {
8629                    <claimRewardsCall as alloy_sol_types::SolCall>::abi_encode_raw(
8630                        inner,
8631                        out,
8632                    )
8633                }
8634                Self::claimedRewards(inner) => {
8635                    <claimedRewardsCall as alloy_sol_types::SolCall>::abi_encode_raw(
8636                        inner,
8637                        out,
8638                    )
8639                }
8640                Self::dailyLimit(inner) => {
8641                    <dailyLimitCall as alloy_sol_types::SolCall>::abi_encode_raw(
8642                        inner,
8643                        out,
8644                    )
8645                }
8646                Self::espToken(inner) => {
8647                    <espTokenCall as alloy_sol_types::SolCall>::abi_encode_raw(
8648                        inner,
8649                        out,
8650                    )
8651                }
8652                Self::getRoleAdmin(inner) => {
8653                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
8654                        inner,
8655                        out,
8656                    )
8657                }
8658                Self::getVersion(inner) => {
8659                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
8660                        inner,
8661                        out,
8662                    )
8663                }
8664                Self::grantRole(inner) => {
8665                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8666                        inner,
8667                        out,
8668                    )
8669                }
8670                Self::hasRole(inner) => {
8671                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8672                }
8673                Self::initialize(inner) => {
8674                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
8675                        inner,
8676                        out,
8677                    )
8678                }
8679                Self::lightClient(inner) => {
8680                    <lightClientCall as alloy_sol_types::SolCall>::abi_encode_raw(
8681                        inner,
8682                        out,
8683                    )
8684                }
8685                Self::owner(inner) => {
8686                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8687                }
8688                Self::pause(inner) => {
8689                    <pauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8690                }
8691                Self::paused(inner) => {
8692                    <pausedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8693                }
8694                Self::proxiableUUID(inner) => {
8695                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
8696                        inner,
8697                        out,
8698                    )
8699                }
8700                Self::renounceOwnership(inner) => {
8701                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
8702                        inner,
8703                        out,
8704                    )
8705                }
8706                Self::renounceRole(inner) => {
8707                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8708                        inner,
8709                        out,
8710                    )
8711                }
8712                Self::revokeRole(inner) => {
8713                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8714                        inner,
8715                        out,
8716                    )
8717                }
8718                Self::setDailyLimit(inner) => {
8719                    <setDailyLimitCall as alloy_sol_types::SolCall>::abi_encode_raw(
8720                        inner,
8721                        out,
8722                    )
8723                }
8724                Self::supportsInterface(inner) => {
8725                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
8726                        inner,
8727                        out,
8728                    )
8729                }
8730                Self::transferOwnership(inner) => {
8731                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
8732                        inner,
8733                        out,
8734                    )
8735                }
8736                Self::unpause(inner) => {
8737                    <unpauseCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8738                }
8739                Self::upgradeToAndCall(inner) => {
8740                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
8741                        inner,
8742                        out,
8743                    )
8744                }
8745            }
8746        }
8747    }
8748    ///Container for all the [`RewardClaim`](self) custom errors.
8749    #[derive(serde::Serialize, serde::Deserialize)]
8750    #[derive(Debug, PartialEq, Eq, Hash)]
8751    pub enum RewardClaimErrors {
8752        #[allow(missing_docs)]
8753        AccessControlBadConfirmation(AccessControlBadConfirmation),
8754        #[allow(missing_docs)]
8755        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
8756        #[allow(missing_docs)]
8757        AddressEmptyCode(AddressEmptyCode),
8758        #[allow(missing_docs)]
8759        AlreadyClaimed(AlreadyClaimed),
8760        #[allow(missing_docs)]
8761        DailyLimitExceeded(DailyLimitExceeded),
8762        #[allow(missing_docs)]
8763        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
8764        #[allow(missing_docs)]
8765        ERC1967NonPayable(ERC1967NonPayable),
8766        #[allow(missing_docs)]
8767        EnforcedPause(EnforcedPause),
8768        #[allow(missing_docs)]
8769        ExpectedPause(ExpectedPause),
8770        #[allow(missing_docs)]
8771        FailedInnerCall(FailedInnerCall),
8772        #[allow(missing_docs)]
8773        InvalidAuthRoot(InvalidAuthRoot),
8774        #[allow(missing_docs)]
8775        InvalidInitialization(InvalidInitialization),
8776        #[allow(missing_docs)]
8777        InvalidRewardAmount(InvalidRewardAmount),
8778        #[allow(missing_docs)]
8779        NotInitializing(NotInitializing),
8780        #[allow(missing_docs)]
8781        OwnableInvalidOwner(OwnableInvalidOwner),
8782        #[allow(missing_docs)]
8783        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
8784        #[allow(missing_docs)]
8785        ReentrancyGuardReentrantCall(ReentrancyGuardReentrantCall),
8786        #[allow(missing_docs)]
8787        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
8788        #[allow(missing_docs)]
8789        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
8790        #[allow(missing_docs)]
8791        ZeroDailyLimit(ZeroDailyLimit),
8792        #[allow(missing_docs)]
8793        ZeroLightClientAddress(ZeroLightClientAddress),
8794        #[allow(missing_docs)]
8795        ZeroPauserAddress(ZeroPauserAddress),
8796        #[allow(missing_docs)]
8797        ZeroTokenAddress(ZeroTokenAddress),
8798        #[allow(missing_docs)]
8799        ZeroTotalSupply(ZeroTotalSupply),
8800    }
8801    #[automatically_derived]
8802    impl RewardClaimErrors {
8803        /// All the selectors of this enum.
8804        ///
8805        /// Note that the selectors might not be in the same order as the variants.
8806        /// No guarantees are made about the order of the selectors.
8807        ///
8808        /// Prefer using `SolInterface` methods instead.
8809        pub const SELECTORS: &'static [[u8; 4usize]] = &[
8810            [17u8, 140u8, 218u8, 167u8],
8811            [20u8, 37u8, 234u8, 66u8],
8812            [25u8, 75u8, 211u8, 20u8],
8813            [30u8, 79u8, 189u8, 247u8],
8814            [50u8, 139u8, 136u8, 120u8],
8815            [56u8, 83u8, 152u8, 101u8],
8816            [62u8, 229u8, 174u8, 181u8],
8817            [72u8, 181u8, 0u8, 35u8],
8818            [76u8, 156u8, 140u8, 227u8],
8819            [100u8, 108u8, 245u8, 88u8],
8820            [102u8, 151u8, 178u8, 50u8],
8821            [107u8, 9u8, 58u8, 173u8],
8822            [141u8, 252u8, 32u8, 43u8],
8823            [153u8, 150u8, 179u8, 21u8],
8824            [155u8, 17u8, 168u8, 189u8],
8825            [167u8, 73u8, 149u8, 171u8],
8826            [170u8, 29u8, 73u8, 164u8],
8827            [179u8, 152u8, 151u8, 159u8],
8828            [215u8, 230u8, 188u8, 248u8],
8829            [217u8, 60u8, 6u8, 101u8],
8830            [224u8, 124u8, 141u8, 186u8],
8831            [226u8, 81u8, 125u8, 63u8],
8832            [249u8, 46u8, 232u8, 169u8],
8833            [252u8, 171u8, 221u8, 189u8],
8834        ];
8835    }
8836    #[automatically_derived]
8837    impl alloy_sol_types::SolInterface for RewardClaimErrors {
8838        const NAME: &'static str = "RewardClaimErrors";
8839        const MIN_DATA_LENGTH: usize = 0usize;
8840        const COUNT: usize = 24usize;
8841        #[inline]
8842        fn selector(&self) -> [u8; 4] {
8843            match self {
8844                Self::AccessControlBadConfirmation(_) => {
8845                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
8846                }
8847                Self::AccessControlUnauthorizedAccount(_) => {
8848                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
8849                }
8850                Self::AddressEmptyCode(_) => {
8851                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
8852                }
8853                Self::AlreadyClaimed(_) => {
8854                    <AlreadyClaimed as alloy_sol_types::SolError>::SELECTOR
8855                }
8856                Self::DailyLimitExceeded(_) => {
8857                    <DailyLimitExceeded as alloy_sol_types::SolError>::SELECTOR
8858                }
8859                Self::ERC1967InvalidImplementation(_) => {
8860                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
8861                }
8862                Self::ERC1967NonPayable(_) => {
8863                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
8864                }
8865                Self::EnforcedPause(_) => {
8866                    <EnforcedPause as alloy_sol_types::SolError>::SELECTOR
8867                }
8868                Self::ExpectedPause(_) => {
8869                    <ExpectedPause as alloy_sol_types::SolError>::SELECTOR
8870                }
8871                Self::FailedInnerCall(_) => {
8872                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
8873                }
8874                Self::InvalidAuthRoot(_) => {
8875                    <InvalidAuthRoot as alloy_sol_types::SolError>::SELECTOR
8876                }
8877                Self::InvalidInitialization(_) => {
8878                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
8879                }
8880                Self::InvalidRewardAmount(_) => {
8881                    <InvalidRewardAmount as alloy_sol_types::SolError>::SELECTOR
8882                }
8883                Self::NotInitializing(_) => {
8884                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
8885                }
8886                Self::OwnableInvalidOwner(_) => {
8887                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
8888                }
8889                Self::OwnableUnauthorizedAccount(_) => {
8890                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
8891                }
8892                Self::ReentrancyGuardReentrantCall(_) => {
8893                    <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::SELECTOR
8894                }
8895                Self::UUPSUnauthorizedCallContext(_) => {
8896                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
8897                }
8898                Self::UUPSUnsupportedProxiableUUID(_) => {
8899                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
8900                }
8901                Self::ZeroDailyLimit(_) => {
8902                    <ZeroDailyLimit as alloy_sol_types::SolError>::SELECTOR
8903                }
8904                Self::ZeroLightClientAddress(_) => {
8905                    <ZeroLightClientAddress as alloy_sol_types::SolError>::SELECTOR
8906                }
8907                Self::ZeroPauserAddress(_) => {
8908                    <ZeroPauserAddress as alloy_sol_types::SolError>::SELECTOR
8909                }
8910                Self::ZeroTokenAddress(_) => {
8911                    <ZeroTokenAddress as alloy_sol_types::SolError>::SELECTOR
8912                }
8913                Self::ZeroTotalSupply(_) => {
8914                    <ZeroTotalSupply as alloy_sol_types::SolError>::SELECTOR
8915                }
8916            }
8917        }
8918        #[inline]
8919        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8920            Self::SELECTORS.get(i).copied()
8921        }
8922        #[inline]
8923        fn valid_selector(selector: [u8; 4]) -> bool {
8924            Self::SELECTORS.binary_search(&selector).is_ok()
8925        }
8926        #[inline]
8927        #[allow(non_snake_case)]
8928        fn abi_decode_raw(
8929            selector: [u8; 4],
8930            data: &[u8],
8931        ) -> alloy_sol_types::Result<Self> {
8932            static DECODE_SHIMS: &[fn(
8933                &[u8],
8934            ) -> alloy_sol_types::Result<RewardClaimErrors>] = &[
8935                {
8936                    fn OwnableUnauthorizedAccount(
8937                        data: &[u8],
8938                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
8939                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
8940                                data,
8941                            )
8942                            .map(RewardClaimErrors::OwnableUnauthorizedAccount)
8943                    }
8944                    OwnableUnauthorizedAccount
8945                },
8946                {
8947                    fn FailedInnerCall(
8948                        data: &[u8],
8949                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
8950                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
8951                                data,
8952                            )
8953                            .map(RewardClaimErrors::FailedInnerCall)
8954                    }
8955                    FailedInnerCall
8956                },
8957                {
8958                    fn DailyLimitExceeded(
8959                        data: &[u8],
8960                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
8961                        <DailyLimitExceeded as alloy_sol_types::SolError>::abi_decode_raw(
8962                                data,
8963                            )
8964                            .map(RewardClaimErrors::DailyLimitExceeded)
8965                    }
8966                    DailyLimitExceeded
8967                },
8968                {
8969                    fn OwnableInvalidOwner(
8970                        data: &[u8],
8971                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
8972                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
8973                                data,
8974                            )
8975                            .map(RewardClaimErrors::OwnableInvalidOwner)
8976                    }
8977                    OwnableInvalidOwner
8978                },
8979                {
8980                    fn InvalidAuthRoot(
8981                        data: &[u8],
8982                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
8983                        <InvalidAuthRoot as alloy_sol_types::SolError>::abi_decode_raw(
8984                                data,
8985                            )
8986                            .map(RewardClaimErrors::InvalidAuthRoot)
8987                    }
8988                    InvalidAuthRoot
8989                },
8990                {
8991                    fn InvalidRewardAmount(
8992                        data: &[u8],
8993                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
8994                        <InvalidRewardAmount as alloy_sol_types::SolError>::abi_decode_raw(
8995                                data,
8996                            )
8997                            .map(RewardClaimErrors::InvalidRewardAmount)
8998                    }
8999                    InvalidRewardAmount
9000                },
9001                {
9002                    fn ReentrancyGuardReentrantCall(
9003                        data: &[u8],
9004                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9005                        <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_decode_raw(
9006                                data,
9007                            )
9008                            .map(RewardClaimErrors::ReentrancyGuardReentrantCall)
9009                    }
9010                    ReentrancyGuardReentrantCall
9011                },
9012                {
9013                    fn ZeroTotalSupply(
9014                        data: &[u8],
9015                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9016                        <ZeroTotalSupply as alloy_sol_types::SolError>::abi_decode_raw(
9017                                data,
9018                            )
9019                            .map(RewardClaimErrors::ZeroTotalSupply)
9020                    }
9021                    ZeroTotalSupply
9022                },
9023                {
9024                    fn ERC1967InvalidImplementation(
9025                        data: &[u8],
9026                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9027                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
9028                                data,
9029                            )
9030                            .map(RewardClaimErrors::ERC1967InvalidImplementation)
9031                    }
9032                    ERC1967InvalidImplementation
9033                },
9034                {
9035                    fn AlreadyClaimed(
9036                        data: &[u8],
9037                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9038                        <AlreadyClaimed as alloy_sol_types::SolError>::abi_decode_raw(
9039                                data,
9040                            )
9041                            .map(RewardClaimErrors::AlreadyClaimed)
9042                    }
9043                    AlreadyClaimed
9044                },
9045                {
9046                    fn AccessControlBadConfirmation(
9047                        data: &[u8],
9048                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9049                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
9050                                data,
9051                            )
9052                            .map(RewardClaimErrors::AccessControlBadConfirmation)
9053                    }
9054                    AccessControlBadConfirmation
9055                },
9056                {
9057                    fn ZeroTokenAddress(
9058                        data: &[u8],
9059                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9060                        <ZeroTokenAddress as alloy_sol_types::SolError>::abi_decode_raw(
9061                                data,
9062                            )
9063                            .map(RewardClaimErrors::ZeroTokenAddress)
9064                    }
9065                    ZeroTokenAddress
9066                },
9067                {
9068                    fn ExpectedPause(
9069                        data: &[u8],
9070                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9071                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw(
9072                                data,
9073                            )
9074                            .map(RewardClaimErrors::ExpectedPause)
9075                    }
9076                    ExpectedPause
9077                },
9078                {
9079                    fn AddressEmptyCode(
9080                        data: &[u8],
9081                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9082                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
9083                                data,
9084                            )
9085                            .map(RewardClaimErrors::AddressEmptyCode)
9086                    }
9087                    AddressEmptyCode
9088                },
9089                {
9090                    fn ZeroDailyLimit(
9091                        data: &[u8],
9092                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9093                        <ZeroDailyLimit as alloy_sol_types::SolError>::abi_decode_raw(
9094                                data,
9095                            )
9096                            .map(RewardClaimErrors::ZeroDailyLimit)
9097                    }
9098                    ZeroDailyLimit
9099                },
9100                {
9101                    fn ZeroPauserAddress(
9102                        data: &[u8],
9103                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9104                        <ZeroPauserAddress as alloy_sol_types::SolError>::abi_decode_raw(
9105                                data,
9106                            )
9107                            .map(RewardClaimErrors::ZeroPauserAddress)
9108                    }
9109                    ZeroPauserAddress
9110                },
9111                {
9112                    fn UUPSUnsupportedProxiableUUID(
9113                        data: &[u8],
9114                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9115                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
9116                                data,
9117                            )
9118                            .map(RewardClaimErrors::UUPSUnsupportedProxiableUUID)
9119                    }
9120                    UUPSUnsupportedProxiableUUID
9121                },
9122                {
9123                    fn ERC1967NonPayable(
9124                        data: &[u8],
9125                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9126                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
9127                                data,
9128                            )
9129                            .map(RewardClaimErrors::ERC1967NonPayable)
9130                    }
9131                    ERC1967NonPayable
9132                },
9133                {
9134                    fn NotInitializing(
9135                        data: &[u8],
9136                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9137                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
9138                                data,
9139                            )
9140                            .map(RewardClaimErrors::NotInitializing)
9141                    }
9142                    NotInitializing
9143                },
9144                {
9145                    fn EnforcedPause(
9146                        data: &[u8],
9147                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9148                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw(
9149                                data,
9150                            )
9151                            .map(RewardClaimErrors::EnforcedPause)
9152                    }
9153                    EnforcedPause
9154                },
9155                {
9156                    fn UUPSUnauthorizedCallContext(
9157                        data: &[u8],
9158                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9159                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
9160                                data,
9161                            )
9162                            .map(RewardClaimErrors::UUPSUnauthorizedCallContext)
9163                    }
9164                    UUPSUnauthorizedCallContext
9165                },
9166                {
9167                    fn AccessControlUnauthorizedAccount(
9168                        data: &[u8],
9169                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9170                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9171                                data,
9172                            )
9173                            .map(RewardClaimErrors::AccessControlUnauthorizedAccount)
9174                    }
9175                    AccessControlUnauthorizedAccount
9176                },
9177                {
9178                    fn InvalidInitialization(
9179                        data: &[u8],
9180                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9181                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
9182                                data,
9183                            )
9184                            .map(RewardClaimErrors::InvalidInitialization)
9185                    }
9186                    InvalidInitialization
9187                },
9188                {
9189                    fn ZeroLightClientAddress(
9190                        data: &[u8],
9191                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9192                        <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_decode_raw(
9193                                data,
9194                            )
9195                            .map(RewardClaimErrors::ZeroLightClientAddress)
9196                    }
9197                    ZeroLightClientAddress
9198                },
9199            ];
9200            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9201                return Err(
9202                    alloy_sol_types::Error::unknown_selector(
9203                        <Self as alloy_sol_types::SolInterface>::NAME,
9204                        selector,
9205                    ),
9206                );
9207            };
9208            DECODE_SHIMS[idx](data)
9209        }
9210        #[inline]
9211        #[allow(non_snake_case)]
9212        fn abi_decode_raw_validate(
9213            selector: [u8; 4],
9214            data: &[u8],
9215        ) -> alloy_sol_types::Result<Self> {
9216            static DECODE_VALIDATE_SHIMS: &[fn(
9217                &[u8],
9218            ) -> alloy_sol_types::Result<RewardClaimErrors>] = &[
9219                {
9220                    fn OwnableUnauthorizedAccount(
9221                        data: &[u8],
9222                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9223                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
9224                                data,
9225                            )
9226                            .map(RewardClaimErrors::OwnableUnauthorizedAccount)
9227                    }
9228                    OwnableUnauthorizedAccount
9229                },
9230                {
9231                    fn FailedInnerCall(
9232                        data: &[u8],
9233                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9234                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
9235                                data,
9236                            )
9237                            .map(RewardClaimErrors::FailedInnerCall)
9238                    }
9239                    FailedInnerCall
9240                },
9241                {
9242                    fn DailyLimitExceeded(
9243                        data: &[u8],
9244                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9245                        <DailyLimitExceeded as alloy_sol_types::SolError>::abi_decode_raw_validate(
9246                                data,
9247                            )
9248                            .map(RewardClaimErrors::DailyLimitExceeded)
9249                    }
9250                    DailyLimitExceeded
9251                },
9252                {
9253                    fn OwnableInvalidOwner(
9254                        data: &[u8],
9255                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9256                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
9257                                data,
9258                            )
9259                            .map(RewardClaimErrors::OwnableInvalidOwner)
9260                    }
9261                    OwnableInvalidOwner
9262                },
9263                {
9264                    fn InvalidAuthRoot(
9265                        data: &[u8],
9266                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9267                        <InvalidAuthRoot as alloy_sol_types::SolError>::abi_decode_raw_validate(
9268                                data,
9269                            )
9270                            .map(RewardClaimErrors::InvalidAuthRoot)
9271                    }
9272                    InvalidAuthRoot
9273                },
9274                {
9275                    fn InvalidRewardAmount(
9276                        data: &[u8],
9277                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9278                        <InvalidRewardAmount as alloy_sol_types::SolError>::abi_decode_raw_validate(
9279                                data,
9280                            )
9281                            .map(RewardClaimErrors::InvalidRewardAmount)
9282                    }
9283                    InvalidRewardAmount
9284                },
9285                {
9286                    fn ReentrancyGuardReentrantCall(
9287                        data: &[u8],
9288                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9289                        <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
9290                                data,
9291                            )
9292                            .map(RewardClaimErrors::ReentrancyGuardReentrantCall)
9293                    }
9294                    ReentrancyGuardReentrantCall
9295                },
9296                {
9297                    fn ZeroTotalSupply(
9298                        data: &[u8],
9299                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9300                        <ZeroTotalSupply as alloy_sol_types::SolError>::abi_decode_raw_validate(
9301                                data,
9302                            )
9303                            .map(RewardClaimErrors::ZeroTotalSupply)
9304                    }
9305                    ZeroTotalSupply
9306                },
9307                {
9308                    fn ERC1967InvalidImplementation(
9309                        data: &[u8],
9310                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9311                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
9312                                data,
9313                            )
9314                            .map(RewardClaimErrors::ERC1967InvalidImplementation)
9315                    }
9316                    ERC1967InvalidImplementation
9317                },
9318                {
9319                    fn AlreadyClaimed(
9320                        data: &[u8],
9321                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9322                        <AlreadyClaimed as alloy_sol_types::SolError>::abi_decode_raw_validate(
9323                                data,
9324                            )
9325                            .map(RewardClaimErrors::AlreadyClaimed)
9326                    }
9327                    AlreadyClaimed
9328                },
9329                {
9330                    fn AccessControlBadConfirmation(
9331                        data: &[u8],
9332                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9333                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
9334                                data,
9335                            )
9336                            .map(RewardClaimErrors::AccessControlBadConfirmation)
9337                    }
9338                    AccessControlBadConfirmation
9339                },
9340                {
9341                    fn ZeroTokenAddress(
9342                        data: &[u8],
9343                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9344                        <ZeroTokenAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
9345                                data,
9346                            )
9347                            .map(RewardClaimErrors::ZeroTokenAddress)
9348                    }
9349                    ZeroTokenAddress
9350                },
9351                {
9352                    fn ExpectedPause(
9353                        data: &[u8],
9354                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9355                        <ExpectedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
9356                                data,
9357                            )
9358                            .map(RewardClaimErrors::ExpectedPause)
9359                    }
9360                    ExpectedPause
9361                },
9362                {
9363                    fn AddressEmptyCode(
9364                        data: &[u8],
9365                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9366                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
9367                                data,
9368                            )
9369                            .map(RewardClaimErrors::AddressEmptyCode)
9370                    }
9371                    AddressEmptyCode
9372                },
9373                {
9374                    fn ZeroDailyLimit(
9375                        data: &[u8],
9376                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9377                        <ZeroDailyLimit as alloy_sol_types::SolError>::abi_decode_raw_validate(
9378                                data,
9379                            )
9380                            .map(RewardClaimErrors::ZeroDailyLimit)
9381                    }
9382                    ZeroDailyLimit
9383                },
9384                {
9385                    fn ZeroPauserAddress(
9386                        data: &[u8],
9387                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9388                        <ZeroPauserAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
9389                                data,
9390                            )
9391                            .map(RewardClaimErrors::ZeroPauserAddress)
9392                    }
9393                    ZeroPauserAddress
9394                },
9395                {
9396                    fn UUPSUnsupportedProxiableUUID(
9397                        data: &[u8],
9398                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9399                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
9400                                data,
9401                            )
9402                            .map(RewardClaimErrors::UUPSUnsupportedProxiableUUID)
9403                    }
9404                    UUPSUnsupportedProxiableUUID
9405                },
9406                {
9407                    fn ERC1967NonPayable(
9408                        data: &[u8],
9409                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9410                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
9411                                data,
9412                            )
9413                            .map(RewardClaimErrors::ERC1967NonPayable)
9414                    }
9415                    ERC1967NonPayable
9416                },
9417                {
9418                    fn NotInitializing(
9419                        data: &[u8],
9420                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9421                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
9422                                data,
9423                            )
9424                            .map(RewardClaimErrors::NotInitializing)
9425                    }
9426                    NotInitializing
9427                },
9428                {
9429                    fn EnforcedPause(
9430                        data: &[u8],
9431                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9432                        <EnforcedPause as alloy_sol_types::SolError>::abi_decode_raw_validate(
9433                                data,
9434                            )
9435                            .map(RewardClaimErrors::EnforcedPause)
9436                    }
9437                    EnforcedPause
9438                },
9439                {
9440                    fn UUPSUnauthorizedCallContext(
9441                        data: &[u8],
9442                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9443                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
9444                                data,
9445                            )
9446                            .map(RewardClaimErrors::UUPSUnauthorizedCallContext)
9447                    }
9448                    UUPSUnauthorizedCallContext
9449                },
9450                {
9451                    fn AccessControlUnauthorizedAccount(
9452                        data: &[u8],
9453                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9454                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
9455                                data,
9456                            )
9457                            .map(RewardClaimErrors::AccessControlUnauthorizedAccount)
9458                    }
9459                    AccessControlUnauthorizedAccount
9460                },
9461                {
9462                    fn InvalidInitialization(
9463                        data: &[u8],
9464                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9465                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
9466                                data,
9467                            )
9468                            .map(RewardClaimErrors::InvalidInitialization)
9469                    }
9470                    InvalidInitialization
9471                },
9472                {
9473                    fn ZeroLightClientAddress(
9474                        data: &[u8],
9475                    ) -> alloy_sol_types::Result<RewardClaimErrors> {
9476                        <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
9477                                data,
9478                            )
9479                            .map(RewardClaimErrors::ZeroLightClientAddress)
9480                    }
9481                    ZeroLightClientAddress
9482                },
9483            ];
9484            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9485                return Err(
9486                    alloy_sol_types::Error::unknown_selector(
9487                        <Self as alloy_sol_types::SolInterface>::NAME,
9488                        selector,
9489                    ),
9490                );
9491            };
9492            DECODE_VALIDATE_SHIMS[idx](data)
9493        }
9494        #[inline]
9495        fn abi_encoded_size(&self) -> usize {
9496            match self {
9497                Self::AccessControlBadConfirmation(inner) => {
9498                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
9499                        inner,
9500                    )
9501                }
9502                Self::AccessControlUnauthorizedAccount(inner) => {
9503                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
9504                        inner,
9505                    )
9506                }
9507                Self::AddressEmptyCode(inner) => {
9508                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
9509                        inner,
9510                    )
9511                }
9512                Self::AlreadyClaimed(inner) => {
9513                    <AlreadyClaimed as alloy_sol_types::SolError>::abi_encoded_size(
9514                        inner,
9515                    )
9516                }
9517                Self::DailyLimitExceeded(inner) => {
9518                    <DailyLimitExceeded as alloy_sol_types::SolError>::abi_encoded_size(
9519                        inner,
9520                    )
9521                }
9522                Self::ERC1967InvalidImplementation(inner) => {
9523                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
9524                        inner,
9525                    )
9526                }
9527                Self::ERC1967NonPayable(inner) => {
9528                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
9529                        inner,
9530                    )
9531                }
9532                Self::EnforcedPause(inner) => {
9533                    <EnforcedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
9534                }
9535                Self::ExpectedPause(inner) => {
9536                    <ExpectedPause as alloy_sol_types::SolError>::abi_encoded_size(inner)
9537                }
9538                Self::FailedInnerCall(inner) => {
9539                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
9540                        inner,
9541                    )
9542                }
9543                Self::InvalidAuthRoot(inner) => {
9544                    <InvalidAuthRoot as alloy_sol_types::SolError>::abi_encoded_size(
9545                        inner,
9546                    )
9547                }
9548                Self::InvalidInitialization(inner) => {
9549                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
9550                        inner,
9551                    )
9552                }
9553                Self::InvalidRewardAmount(inner) => {
9554                    <InvalidRewardAmount as alloy_sol_types::SolError>::abi_encoded_size(
9555                        inner,
9556                    )
9557                }
9558                Self::NotInitializing(inner) => {
9559                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
9560                        inner,
9561                    )
9562                }
9563                Self::OwnableInvalidOwner(inner) => {
9564                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
9565                        inner,
9566                    )
9567                }
9568                Self::OwnableUnauthorizedAccount(inner) => {
9569                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
9570                        inner,
9571                    )
9572                }
9573                Self::ReentrancyGuardReentrantCall(inner) => {
9574                    <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_encoded_size(
9575                        inner,
9576                    )
9577                }
9578                Self::UUPSUnauthorizedCallContext(inner) => {
9579                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
9580                        inner,
9581                    )
9582                }
9583                Self::UUPSUnsupportedProxiableUUID(inner) => {
9584                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
9585                        inner,
9586                    )
9587                }
9588                Self::ZeroDailyLimit(inner) => {
9589                    <ZeroDailyLimit as alloy_sol_types::SolError>::abi_encoded_size(
9590                        inner,
9591                    )
9592                }
9593                Self::ZeroLightClientAddress(inner) => {
9594                    <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_encoded_size(
9595                        inner,
9596                    )
9597                }
9598                Self::ZeroPauserAddress(inner) => {
9599                    <ZeroPauserAddress as alloy_sol_types::SolError>::abi_encoded_size(
9600                        inner,
9601                    )
9602                }
9603                Self::ZeroTokenAddress(inner) => {
9604                    <ZeroTokenAddress as alloy_sol_types::SolError>::abi_encoded_size(
9605                        inner,
9606                    )
9607                }
9608                Self::ZeroTotalSupply(inner) => {
9609                    <ZeroTotalSupply as alloy_sol_types::SolError>::abi_encoded_size(
9610                        inner,
9611                    )
9612                }
9613            }
9614        }
9615        #[inline]
9616        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9617            match self {
9618                Self::AccessControlBadConfirmation(inner) => {
9619                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
9620                        inner,
9621                        out,
9622                    )
9623                }
9624                Self::AccessControlUnauthorizedAccount(inner) => {
9625                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
9626                        inner,
9627                        out,
9628                    )
9629                }
9630                Self::AddressEmptyCode(inner) => {
9631                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
9632                        inner,
9633                        out,
9634                    )
9635                }
9636                Self::AlreadyClaimed(inner) => {
9637                    <AlreadyClaimed as alloy_sol_types::SolError>::abi_encode_raw(
9638                        inner,
9639                        out,
9640                    )
9641                }
9642                Self::DailyLimitExceeded(inner) => {
9643                    <DailyLimitExceeded as alloy_sol_types::SolError>::abi_encode_raw(
9644                        inner,
9645                        out,
9646                    )
9647                }
9648                Self::ERC1967InvalidImplementation(inner) => {
9649                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
9650                        inner,
9651                        out,
9652                    )
9653                }
9654                Self::ERC1967NonPayable(inner) => {
9655                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
9656                        inner,
9657                        out,
9658                    )
9659                }
9660                Self::EnforcedPause(inner) => {
9661                    <EnforcedPause as alloy_sol_types::SolError>::abi_encode_raw(
9662                        inner,
9663                        out,
9664                    )
9665                }
9666                Self::ExpectedPause(inner) => {
9667                    <ExpectedPause as alloy_sol_types::SolError>::abi_encode_raw(
9668                        inner,
9669                        out,
9670                    )
9671                }
9672                Self::FailedInnerCall(inner) => {
9673                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
9674                        inner,
9675                        out,
9676                    )
9677                }
9678                Self::InvalidAuthRoot(inner) => {
9679                    <InvalidAuthRoot as alloy_sol_types::SolError>::abi_encode_raw(
9680                        inner,
9681                        out,
9682                    )
9683                }
9684                Self::InvalidInitialization(inner) => {
9685                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
9686                        inner,
9687                        out,
9688                    )
9689                }
9690                Self::InvalidRewardAmount(inner) => {
9691                    <InvalidRewardAmount as alloy_sol_types::SolError>::abi_encode_raw(
9692                        inner,
9693                        out,
9694                    )
9695                }
9696                Self::NotInitializing(inner) => {
9697                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
9698                        inner,
9699                        out,
9700                    )
9701                }
9702                Self::OwnableInvalidOwner(inner) => {
9703                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
9704                        inner,
9705                        out,
9706                    )
9707                }
9708                Self::OwnableUnauthorizedAccount(inner) => {
9709                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
9710                        inner,
9711                        out,
9712                    )
9713                }
9714                Self::ReentrancyGuardReentrantCall(inner) => {
9715                    <ReentrancyGuardReentrantCall as alloy_sol_types::SolError>::abi_encode_raw(
9716                        inner,
9717                        out,
9718                    )
9719                }
9720                Self::UUPSUnauthorizedCallContext(inner) => {
9721                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
9722                        inner,
9723                        out,
9724                    )
9725                }
9726                Self::UUPSUnsupportedProxiableUUID(inner) => {
9727                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
9728                        inner,
9729                        out,
9730                    )
9731                }
9732                Self::ZeroDailyLimit(inner) => {
9733                    <ZeroDailyLimit as alloy_sol_types::SolError>::abi_encode_raw(
9734                        inner,
9735                        out,
9736                    )
9737                }
9738                Self::ZeroLightClientAddress(inner) => {
9739                    <ZeroLightClientAddress as alloy_sol_types::SolError>::abi_encode_raw(
9740                        inner,
9741                        out,
9742                    )
9743                }
9744                Self::ZeroPauserAddress(inner) => {
9745                    <ZeroPauserAddress as alloy_sol_types::SolError>::abi_encode_raw(
9746                        inner,
9747                        out,
9748                    )
9749                }
9750                Self::ZeroTokenAddress(inner) => {
9751                    <ZeroTokenAddress as alloy_sol_types::SolError>::abi_encode_raw(
9752                        inner,
9753                        out,
9754                    )
9755                }
9756                Self::ZeroTotalSupply(inner) => {
9757                    <ZeroTotalSupply as alloy_sol_types::SolError>::abi_encode_raw(
9758                        inner,
9759                        out,
9760                    )
9761                }
9762            }
9763        }
9764    }
9765    ///Container for all the [`RewardClaim`](self) events.
9766    #[derive(serde::Serialize, serde::Deserialize)]
9767    #[derive(Debug, PartialEq, Eq, Hash)]
9768    pub enum RewardClaimEvents {
9769        #[allow(missing_docs)]
9770        DailyLimitUpdated(DailyLimitUpdated),
9771        #[allow(missing_docs)]
9772        Initialized(Initialized),
9773        #[allow(missing_docs)]
9774        OwnershipTransferred(OwnershipTransferred),
9775        #[allow(missing_docs)]
9776        Paused(Paused),
9777        #[allow(missing_docs)]
9778        RewardsClaimed(RewardsClaimed),
9779        #[allow(missing_docs)]
9780        RoleAdminChanged(RoleAdminChanged),
9781        #[allow(missing_docs)]
9782        RoleGranted(RoleGranted),
9783        #[allow(missing_docs)]
9784        RoleRevoked(RoleRevoked),
9785        #[allow(missing_docs)]
9786        Unpaused(Unpaused),
9787        #[allow(missing_docs)]
9788        Upgrade(Upgrade),
9789        #[allow(missing_docs)]
9790        Upgraded(Upgraded),
9791    }
9792    #[automatically_derived]
9793    impl RewardClaimEvents {
9794        /// All the selectors of this enum.
9795        ///
9796        /// Note that the selectors might not be in the same order as the variants.
9797        /// No guarantees are made about the order of the selectors.
9798        ///
9799        /// Prefer using `SolInterface` methods instead.
9800        pub const SELECTORS: &'static [[u8; 32usize]] = &[
9801            [
9802                32u8, 124u8, 76u8, 189u8, 245u8, 94u8, 195u8, 21u8, 161u8, 63u8, 13u8,
9803                94u8, 4u8, 119u8, 50u8, 236u8, 93u8, 148u8, 125u8, 160u8, 86u8, 231u8,
9804                6u8, 89u8, 58u8, 165u8, 9u8, 144u8, 153u8, 65u8, 206u8, 223u8,
9805            ],
9806            [
9807                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9808                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9809                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9810            ],
9811            [
9812                93u8, 185u8, 238u8, 10u8, 73u8, 91u8, 242u8, 230u8, 255u8, 156u8, 145u8,
9813                167u8, 131u8, 76u8, 27u8, 164u8, 253u8, 210u8, 68u8, 165u8, 232u8, 170u8,
9814                78u8, 83u8, 123u8, 211u8, 138u8, 234u8, 228u8, 176u8, 115u8, 170u8,
9815            ],
9816            [
9817                98u8, 231u8, 140u8, 234u8, 1u8, 190u8, 227u8, 32u8, 205u8, 78u8, 66u8,
9818                2u8, 112u8, 181u8, 234u8, 116u8, 0u8, 13u8, 17u8, 176u8, 201u8, 247u8,
9819                71u8, 84u8, 235u8, 219u8, 252u8, 84u8, 75u8, 5u8, 162u8, 88u8,
9820            ],
9821            [
9822                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
9823                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
9824                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
9825            ],
9826            [
9827                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
9828                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
9829                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
9830            ],
9831            [
9832                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9833                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9834                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9835            ],
9836            [
9837                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
9838                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
9839                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
9840            ],
9841            [
9842                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9843                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9844                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9845            ],
9846            [
9847                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
9848                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
9849                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
9850            ],
9851            [
9852                252u8, 48u8, 205u8, 222u8, 163u8, 142u8, 43u8, 244u8, 214u8, 234u8,
9853                125u8, 63u8, 158u8, 211u8, 182u8, 173u8, 127u8, 23u8, 100u8, 25u8, 244u8,
9854                150u8, 59u8, 216u8, 19u8, 24u8, 6u8, 122u8, 74u8, 238u8, 115u8, 254u8,
9855            ],
9856        ];
9857    }
9858    #[automatically_derived]
9859    impl alloy_sol_types::SolEventInterface for RewardClaimEvents {
9860        const NAME: &'static str = "RewardClaimEvents";
9861        const COUNT: usize = 11usize;
9862        fn decode_raw_log(
9863            topics: &[alloy_sol_types::Word],
9864            data: &[u8],
9865        ) -> alloy_sol_types::Result<Self> {
9866            match topics.first().copied() {
9867                Some(
9868                    <DailyLimitUpdated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
9869                ) => {
9870                    <DailyLimitUpdated as alloy_sol_types::SolEvent>::decode_raw_log(
9871                            topics,
9872                            data,
9873                        )
9874                        .map(Self::DailyLimitUpdated)
9875                }
9876                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9877                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
9878                            topics,
9879                            data,
9880                        )
9881                        .map(Self::Initialized)
9882                }
9883                Some(
9884                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
9885                ) => {
9886                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
9887                            topics,
9888                            data,
9889                        )
9890                        .map(Self::OwnershipTransferred)
9891                }
9892                Some(<Paused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9893                    <Paused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
9894                        .map(Self::Paused)
9895                }
9896                Some(<RewardsClaimed as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9897                    <RewardsClaimed as alloy_sol_types::SolEvent>::decode_raw_log(
9898                            topics,
9899                            data,
9900                        )
9901                        .map(Self::RewardsClaimed)
9902                }
9903                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9904                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
9905                            topics,
9906                            data,
9907                        )
9908                        .map(Self::RoleAdminChanged)
9909                }
9910                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9911                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
9912                            topics,
9913                            data,
9914                        )
9915                        .map(Self::RoleGranted)
9916                }
9917                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9918                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
9919                            topics,
9920                            data,
9921                        )
9922                        .map(Self::RoleRevoked)
9923                }
9924                Some(<Unpaused as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9925                    <Unpaused as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
9926                        .map(Self::Unpaused)
9927                }
9928                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9929                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
9930                        .map(Self::Upgrade)
9931                }
9932                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9933                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
9934                        .map(Self::Upgraded)
9935                }
9936                _ => {
9937                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
9938                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
9939                        log: alloy_sol_types::private::Box::new(
9940                            alloy_sol_types::private::LogData::new_unchecked(
9941                                topics.to_vec(),
9942                                data.to_vec().into(),
9943                            ),
9944                        ),
9945                    })
9946                }
9947            }
9948        }
9949    }
9950    #[automatically_derived]
9951    impl alloy_sol_types::private::IntoLogData for RewardClaimEvents {
9952        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9953            match self {
9954                Self::DailyLimitUpdated(inner) => {
9955                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9956                }
9957                Self::Initialized(inner) => {
9958                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9959                }
9960                Self::OwnershipTransferred(inner) => {
9961                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9962                }
9963                Self::Paused(inner) => {
9964                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9965                }
9966                Self::RewardsClaimed(inner) => {
9967                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9968                }
9969                Self::RoleAdminChanged(inner) => {
9970                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9971                }
9972                Self::RoleGranted(inner) => {
9973                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9974                }
9975                Self::RoleRevoked(inner) => {
9976                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9977                }
9978                Self::Unpaused(inner) => {
9979                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9980                }
9981                Self::Upgrade(inner) => {
9982                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9983                }
9984                Self::Upgraded(inner) => {
9985                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9986                }
9987            }
9988        }
9989        fn into_log_data(self) -> alloy_sol_types::private::LogData {
9990            match self {
9991                Self::DailyLimitUpdated(inner) => {
9992                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9993                }
9994                Self::Initialized(inner) => {
9995                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9996                }
9997                Self::OwnershipTransferred(inner) => {
9998                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9999                }
10000                Self::Paused(inner) => {
10001                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10002                }
10003                Self::RewardsClaimed(inner) => {
10004                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10005                }
10006                Self::RoleAdminChanged(inner) => {
10007                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10008                }
10009                Self::RoleGranted(inner) => {
10010                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10011                }
10012                Self::RoleRevoked(inner) => {
10013                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10014                }
10015                Self::Unpaused(inner) => {
10016                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10017                }
10018                Self::Upgrade(inner) => {
10019                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10020                }
10021                Self::Upgraded(inner) => {
10022                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10023                }
10024            }
10025        }
10026    }
10027    use alloy::contract as alloy_contract;
10028    /**Creates a new wrapper around an on-chain [`RewardClaim`](self) contract instance.
10029
10030See the [wrapper's documentation](`RewardClaimInstance`) for more details.*/
10031    #[inline]
10032    pub const fn new<
10033        P: alloy_contract::private::Provider<N>,
10034        N: alloy_contract::private::Network,
10035    >(
10036        address: alloy_sol_types::private::Address,
10037        provider: P,
10038    ) -> RewardClaimInstance<P, N> {
10039        RewardClaimInstance::<P, N>::new(address, provider)
10040    }
10041    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10042
10043Returns a new instance of the contract, if the deployment was successful.
10044
10045For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10046    #[inline]
10047    pub fn deploy<
10048        P: alloy_contract::private::Provider<N>,
10049        N: alloy_contract::private::Network,
10050    >(
10051        provider: P,
10052    ) -> impl ::core::future::Future<
10053        Output = alloy_contract::Result<RewardClaimInstance<P, N>>,
10054    > {
10055        RewardClaimInstance::<P, N>::deploy(provider)
10056    }
10057    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10058and constructor arguments, if any.
10059
10060This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10061the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10062    #[inline]
10063    pub fn deploy_builder<
10064        P: alloy_contract::private::Provider<N>,
10065        N: alloy_contract::private::Network,
10066    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
10067        RewardClaimInstance::<P, N>::deploy_builder(provider)
10068    }
10069    /**A [`RewardClaim`](self) instance.
10070
10071Contains type-safe methods for interacting with an on-chain instance of the
10072[`RewardClaim`](self) contract located at a given `address`, using a given
10073provider `P`.
10074
10075If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10076documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10077be used to deploy a new instance of the contract.
10078
10079See the [module-level documentation](self) for all the available methods.*/
10080    #[derive(Clone)]
10081    pub struct RewardClaimInstance<P, N = alloy_contract::private::Ethereum> {
10082        address: alloy_sol_types::private::Address,
10083        provider: P,
10084        _network: ::core::marker::PhantomData<N>,
10085    }
10086    #[automatically_derived]
10087    impl<P, N> ::core::fmt::Debug for RewardClaimInstance<P, N> {
10088        #[inline]
10089        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10090            f.debug_tuple("RewardClaimInstance").field(&self.address).finish()
10091        }
10092    }
10093    /// Instantiation and getters/setters.
10094    #[automatically_derived]
10095    impl<
10096        P: alloy_contract::private::Provider<N>,
10097        N: alloy_contract::private::Network,
10098    > RewardClaimInstance<P, N> {
10099        /**Creates a new wrapper around an on-chain [`RewardClaim`](self) contract instance.
10100
10101See the [wrapper's documentation](`RewardClaimInstance`) for more details.*/
10102        #[inline]
10103        pub const fn new(
10104            address: alloy_sol_types::private::Address,
10105            provider: P,
10106        ) -> Self {
10107            Self {
10108                address,
10109                provider,
10110                _network: ::core::marker::PhantomData,
10111            }
10112        }
10113        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10114
10115Returns a new instance of the contract, if the deployment was successful.
10116
10117For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10118        #[inline]
10119        pub async fn deploy(
10120            provider: P,
10121        ) -> alloy_contract::Result<RewardClaimInstance<P, N>> {
10122            let call_builder = Self::deploy_builder(provider);
10123            let contract_address = call_builder.deploy().await?;
10124            Ok(Self::new(contract_address, call_builder.provider))
10125        }
10126        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10127and constructor arguments, if any.
10128
10129This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10130the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10131        #[inline]
10132        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
10133            alloy_contract::RawCallBuilder::new_raw_deploy(
10134                provider,
10135                ::core::clone::Clone::clone(&BYTECODE),
10136            )
10137        }
10138        /// Returns a reference to the address.
10139        #[inline]
10140        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10141            &self.address
10142        }
10143        /// Sets the address.
10144        #[inline]
10145        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10146            self.address = address;
10147        }
10148        /// Sets the address and returns `self`.
10149        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10150            self.set_address(address);
10151            self
10152        }
10153        /// Returns a reference to the provider.
10154        #[inline]
10155        pub const fn provider(&self) -> &P {
10156            &self.provider
10157        }
10158    }
10159    impl<P: ::core::clone::Clone, N> RewardClaimInstance<&P, N> {
10160        /// Clones the provider and returns a new instance with the cloned provider.
10161        #[inline]
10162        pub fn with_cloned_provider(self) -> RewardClaimInstance<P, N> {
10163            RewardClaimInstance {
10164                address: self.address,
10165                provider: ::core::clone::Clone::clone(&self.provider),
10166                _network: ::core::marker::PhantomData,
10167            }
10168        }
10169    }
10170    /// Function calls.
10171    #[automatically_derived]
10172    impl<
10173        P: alloy_contract::private::Provider<N>,
10174        N: alloy_contract::private::Network,
10175    > RewardClaimInstance<P, N> {
10176        /// Creates a new call builder using this contract instance's provider and address.
10177        ///
10178        /// Note that the call can be any function call, not just those defined in this
10179        /// contract. Prefer using the other methods for building type-safe contract calls.
10180        pub fn call_builder<C: alloy_sol_types::SolCall>(
10181            &self,
10182            call: &C,
10183        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
10184            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10185        }
10186        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
10187        pub fn DEFAULT_ADMIN_ROLE(
10188            &self,
10189        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
10190            self.call_builder(&DEFAULT_ADMIN_ROLECall)
10191        }
10192        ///Creates a new call builder for the [`PAUSER_ROLE`] function.
10193        pub fn PAUSER_ROLE(
10194            &self,
10195        ) -> alloy_contract::SolCallBuilder<&P, PAUSER_ROLECall, N> {
10196            self.call_builder(&PAUSER_ROLECall)
10197        }
10198        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
10199        pub fn UPGRADE_INTERFACE_VERSION(
10200            &self,
10201        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
10202            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
10203        }
10204        ///Creates a new call builder for the [`claimRewards`] function.
10205        pub fn claimRewards(
10206            &self,
10207            lifetimeRewards: alloy::sol_types::private::primitives::aliases::U256,
10208            authData: alloy::sol_types::private::Bytes,
10209        ) -> alloy_contract::SolCallBuilder<&P, claimRewardsCall, N> {
10210            self.call_builder(
10211                &claimRewardsCall {
10212                    lifetimeRewards,
10213                    authData,
10214                },
10215            )
10216        }
10217        ///Creates a new call builder for the [`claimedRewards`] function.
10218        pub fn claimedRewards(
10219            &self,
10220            claimer: alloy::sol_types::private::Address,
10221        ) -> alloy_contract::SolCallBuilder<&P, claimedRewardsCall, N> {
10222            self.call_builder(&claimedRewardsCall { claimer })
10223        }
10224        ///Creates a new call builder for the [`dailyLimit`] function.
10225        pub fn dailyLimit(
10226            &self,
10227        ) -> alloy_contract::SolCallBuilder<&P, dailyLimitCall, N> {
10228            self.call_builder(&dailyLimitCall)
10229        }
10230        ///Creates a new call builder for the [`espToken`] function.
10231        pub fn espToken(&self) -> alloy_contract::SolCallBuilder<&P, espTokenCall, N> {
10232            self.call_builder(&espTokenCall)
10233        }
10234        ///Creates a new call builder for the [`getRoleAdmin`] function.
10235        pub fn getRoleAdmin(
10236            &self,
10237            role: alloy::sol_types::private::FixedBytes<32>,
10238        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
10239            self.call_builder(&getRoleAdminCall { role })
10240        }
10241        ///Creates a new call builder for the [`getVersion`] function.
10242        pub fn getVersion(
10243            &self,
10244        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
10245            self.call_builder(&getVersionCall)
10246        }
10247        ///Creates a new call builder for the [`grantRole`] function.
10248        pub fn grantRole(
10249            &self,
10250            role: alloy::sol_types::private::FixedBytes<32>,
10251            account: alloy::sol_types::private::Address,
10252        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
10253            self.call_builder(&grantRoleCall { role, account })
10254        }
10255        ///Creates a new call builder for the [`hasRole`] function.
10256        pub fn hasRole(
10257            &self,
10258            role: alloy::sol_types::private::FixedBytes<32>,
10259            account: alloy::sol_types::private::Address,
10260        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
10261            self.call_builder(&hasRoleCall { role, account })
10262        }
10263        ///Creates a new call builder for the [`initialize`] function.
10264        pub fn initialize(
10265            &self,
10266            _owner: alloy::sol_types::private::Address,
10267            _espToken: alloy::sol_types::private::Address,
10268            _lightClient: alloy::sol_types::private::Address,
10269            _pauser: alloy::sol_types::private::Address,
10270        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
10271            self.call_builder(
10272                &initializeCall {
10273                    _owner,
10274                    _espToken,
10275                    _lightClient,
10276                    _pauser,
10277                },
10278            )
10279        }
10280        ///Creates a new call builder for the [`lightClient`] function.
10281        pub fn lightClient(
10282            &self,
10283        ) -> alloy_contract::SolCallBuilder<&P, lightClientCall, N> {
10284            self.call_builder(&lightClientCall)
10285        }
10286        ///Creates a new call builder for the [`owner`] function.
10287        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
10288            self.call_builder(&ownerCall)
10289        }
10290        ///Creates a new call builder for the [`pause`] function.
10291        pub fn pause(&self) -> alloy_contract::SolCallBuilder<&P, pauseCall, N> {
10292            self.call_builder(&pauseCall)
10293        }
10294        ///Creates a new call builder for the [`paused`] function.
10295        pub fn paused(&self) -> alloy_contract::SolCallBuilder<&P, pausedCall, N> {
10296            self.call_builder(&pausedCall)
10297        }
10298        ///Creates a new call builder for the [`proxiableUUID`] function.
10299        pub fn proxiableUUID(
10300            &self,
10301        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
10302            self.call_builder(&proxiableUUIDCall)
10303        }
10304        ///Creates a new call builder for the [`renounceOwnership`] function.
10305        pub fn renounceOwnership(
10306            &self,
10307        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
10308            self.call_builder(&renounceOwnershipCall)
10309        }
10310        ///Creates a new call builder for the [`renounceRole`] function.
10311        pub fn renounceRole(
10312            &self,
10313            role: alloy::sol_types::private::FixedBytes<32>,
10314            callerConfirmation: alloy::sol_types::private::Address,
10315        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
10316            self.call_builder(
10317                &renounceRoleCall {
10318                    role,
10319                    callerConfirmation,
10320                },
10321            )
10322        }
10323        ///Creates a new call builder for the [`revokeRole`] function.
10324        pub fn revokeRole(
10325            &self,
10326            role: alloy::sol_types::private::FixedBytes<32>,
10327            account: alloy::sol_types::private::Address,
10328        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
10329            self.call_builder(&revokeRoleCall { role, account })
10330        }
10331        ///Creates a new call builder for the [`setDailyLimit`] function.
10332        pub fn setDailyLimit(
10333            &self,
10334            newLimit: alloy::sol_types::private::primitives::aliases::U256,
10335        ) -> alloy_contract::SolCallBuilder<&P, setDailyLimitCall, N> {
10336            self.call_builder(&setDailyLimitCall { newLimit })
10337        }
10338        ///Creates a new call builder for the [`supportsInterface`] function.
10339        pub fn supportsInterface(
10340            &self,
10341            interfaceId: alloy::sol_types::private::FixedBytes<4>,
10342        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
10343            self.call_builder(
10344                &supportsInterfaceCall {
10345                    interfaceId,
10346                },
10347            )
10348        }
10349        ///Creates a new call builder for the [`transferOwnership`] function.
10350        pub fn transferOwnership(
10351            &self,
10352            newOwner: alloy::sol_types::private::Address,
10353        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
10354            self.call_builder(&transferOwnershipCall { newOwner })
10355        }
10356        ///Creates a new call builder for the [`unpause`] function.
10357        pub fn unpause(&self) -> alloy_contract::SolCallBuilder<&P, unpauseCall, N> {
10358            self.call_builder(&unpauseCall)
10359        }
10360        ///Creates a new call builder for the [`upgradeToAndCall`] function.
10361        pub fn upgradeToAndCall(
10362            &self,
10363            newImplementation: alloy::sol_types::private::Address,
10364            data: alloy::sol_types::private::Bytes,
10365        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
10366            self.call_builder(
10367                &upgradeToAndCallCall {
10368                    newImplementation,
10369                    data,
10370                },
10371            )
10372        }
10373    }
10374    /// Event filters.
10375    #[automatically_derived]
10376    impl<
10377        P: alloy_contract::private::Provider<N>,
10378        N: alloy_contract::private::Network,
10379    > RewardClaimInstance<P, N> {
10380        /// Creates a new event filter using this contract instance's provider and address.
10381        ///
10382        /// Note that the type can be any event, not just those defined in this contract.
10383        /// Prefer using the other methods for building type-safe event filters.
10384        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10385            &self,
10386        ) -> alloy_contract::Event<&P, E, N> {
10387            alloy_contract::Event::new_sol(&self.provider, &self.address)
10388        }
10389        ///Creates a new event filter for the [`DailyLimitUpdated`] event.
10390        pub fn DailyLimitUpdated_filter(
10391            &self,
10392        ) -> alloy_contract::Event<&P, DailyLimitUpdated, N> {
10393            self.event_filter::<DailyLimitUpdated>()
10394        }
10395        ///Creates a new event filter for the [`Initialized`] event.
10396        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
10397            self.event_filter::<Initialized>()
10398        }
10399        ///Creates a new event filter for the [`OwnershipTransferred`] event.
10400        pub fn OwnershipTransferred_filter(
10401            &self,
10402        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
10403            self.event_filter::<OwnershipTransferred>()
10404        }
10405        ///Creates a new event filter for the [`Paused`] event.
10406        pub fn Paused_filter(&self) -> alloy_contract::Event<&P, Paused, N> {
10407            self.event_filter::<Paused>()
10408        }
10409        ///Creates a new event filter for the [`RewardsClaimed`] event.
10410        pub fn RewardsClaimed_filter(
10411            &self,
10412        ) -> alloy_contract::Event<&P, RewardsClaimed, N> {
10413            self.event_filter::<RewardsClaimed>()
10414        }
10415        ///Creates a new event filter for the [`RoleAdminChanged`] event.
10416        pub fn RoleAdminChanged_filter(
10417            &self,
10418        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
10419            self.event_filter::<RoleAdminChanged>()
10420        }
10421        ///Creates a new event filter for the [`RoleGranted`] event.
10422        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
10423            self.event_filter::<RoleGranted>()
10424        }
10425        ///Creates a new event filter for the [`RoleRevoked`] event.
10426        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
10427            self.event_filter::<RoleRevoked>()
10428        }
10429        ///Creates a new event filter for the [`Unpaused`] event.
10430        pub fn Unpaused_filter(&self) -> alloy_contract::Event<&P, Unpaused, N> {
10431            self.event_filter::<Unpaused>()
10432        }
10433        ///Creates a new event filter for the [`Upgrade`] event.
10434        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
10435            self.event_filter::<Upgrade>()
10436        }
10437        ///Creates a new event filter for the [`Upgraded`] event.
10438        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
10439            self.event_filter::<Upgraded>()
10440        }
10441    }
10442}