hotshot_contract_adapter/bindings/
safe_exit_timelock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library TimelockController {
6    type OperationState is uint8;
7}
8```*/
9#[allow(
10    non_camel_case_types,
11    non_snake_case,
12    clippy::pub_underscore_fields,
13    clippy::style,
14    clippy::empty_structs_with_brackets
15)]
16pub mod TimelockController {
17    use super::*;
18    use alloy::sol_types as alloy_sol_types;
19    #[derive(serde::Serialize, serde::Deserialize)]
20    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22    #[derive(Clone)]
23    pub struct OperationState(u8);
24    const _: () = {
25        use alloy::sol_types as alloy_sol_types;
26        #[automatically_derived]
27        impl alloy_sol_types::private::SolTypeValue<OperationState> for u8 {
28            #[inline]
29            fn stv_to_tokens(
30                &self,
31            ) -> <alloy::sol_types::sol_data::Uint<
32                8,
33            > as alloy_sol_types::SolType>::Token<'_> {
34                alloy_sol_types::private::SolTypeValue::<
35                    alloy::sol_types::sol_data::Uint<8>,
36                >::stv_to_tokens(self)
37            }
38            #[inline]
39            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
40                <alloy::sol_types::sol_data::Uint<
41                    8,
42                > as alloy_sol_types::SolType>::tokenize(self)
43                    .0
44            }
45            #[inline]
46            fn stv_abi_encode_packed_to(
47                &self,
48                out: &mut alloy_sol_types::private::Vec<u8>,
49            ) {
50                <alloy::sol_types::sol_data::Uint<
51                    8,
52                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
53            }
54            #[inline]
55            fn stv_abi_packed_encoded_size(&self) -> usize {
56                <alloy::sol_types::sol_data::Uint<
57                    8,
58                > as alloy_sol_types::SolType>::abi_encoded_size(self)
59            }
60        }
61        #[automatically_derived]
62        impl OperationState {
63            /// The Solidity type name.
64            pub const NAME: &'static str = stringify!(@ name);
65            /// Convert from the underlying value type.
66            #[inline]
67            pub const fn from_underlying(value: u8) -> Self {
68                Self(value)
69            }
70            /// Return the underlying value.
71            #[inline]
72            pub const fn into_underlying(self) -> u8 {
73                self.0
74            }
75            /// Return the single encoding of this value, delegating to the
76            /// underlying type.
77            #[inline]
78            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
79                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
80            }
81            /// Return the packed encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
86            }
87        }
88        #[automatically_derived]
89        impl From<u8> for OperationState {
90            fn from(value: u8) -> Self {
91                Self::from_underlying(value)
92            }
93        }
94        #[automatically_derived]
95        impl From<OperationState> for u8 {
96            fn from(value: OperationState) -> Self {
97                value.into_underlying()
98            }
99        }
100        #[automatically_derived]
101        impl alloy_sol_types::SolType for OperationState {
102            type RustType = u8;
103            type Token<'a> = <alloy::sol_types::sol_data::Uint<
104                8,
105            > as alloy_sol_types::SolType>::Token<'a>;
106            const SOL_NAME: &'static str = Self::NAME;
107            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
108                8,
109            > as alloy_sol_types::SolType>::ENCODED_SIZE;
110            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
111                8,
112            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
113            #[inline]
114            fn valid_token(token: &Self::Token<'_>) -> bool {
115                Self::type_check(token).is_ok()
116            }
117            #[inline]
118            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
119                <alloy::sol_types::sol_data::Uint<
120                    8,
121                > as alloy_sol_types::SolType>::type_check(token)
122            }
123            #[inline]
124            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
125                <alloy::sol_types::sol_data::Uint<
126                    8,
127                > as alloy_sol_types::SolType>::detokenize(token)
128            }
129        }
130        #[automatically_derived]
131        impl alloy_sol_types::EventTopic for OperationState {
132            #[inline]
133            fn topic_preimage_length(rust: &Self::RustType) -> usize {
134                <alloy::sol_types::sol_data::Uint<
135                    8,
136                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
137            }
138            #[inline]
139            fn encode_topic_preimage(
140                rust: &Self::RustType,
141                out: &mut alloy_sol_types::private::Vec<u8>,
142            ) {
143                <alloy::sol_types::sol_data::Uint<
144                    8,
145                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
146            }
147            #[inline]
148            fn encode_topic(
149                rust: &Self::RustType,
150            ) -> alloy_sol_types::abi::token::WordToken {
151                <alloy::sol_types::sol_data::Uint<
152                    8,
153                > as alloy_sol_types::EventTopic>::encode_topic(rust)
154            }
155        }
156    };
157    use alloy::contract as alloy_contract;
158    /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
159
160See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
161    #[inline]
162    pub const fn new<
163        P: alloy_contract::private::Provider<N>,
164        N: alloy_contract::private::Network,
165    >(
166        address: alloy_sol_types::private::Address,
167        provider: P,
168    ) -> TimelockControllerInstance<P, N> {
169        TimelockControllerInstance::<P, N>::new(address, provider)
170    }
171    /**A [`TimelockController`](self) instance.
172
173Contains type-safe methods for interacting with an on-chain instance of the
174[`TimelockController`](self) contract located at a given `address`, using a given
175provider `P`.
176
177If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
178documentation on how to provide it), the `deploy` and `deploy_builder` methods can
179be used to deploy a new instance of the contract.
180
181See the [module-level documentation](self) for all the available methods.*/
182    #[derive(Clone)]
183    pub struct TimelockControllerInstance<P, N = alloy_contract::private::Ethereum> {
184        address: alloy_sol_types::private::Address,
185        provider: P,
186        _network: ::core::marker::PhantomData<N>,
187    }
188    #[automatically_derived]
189    impl<P, N> ::core::fmt::Debug for TimelockControllerInstance<P, N> {
190        #[inline]
191        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
192            f.debug_tuple("TimelockControllerInstance").field(&self.address).finish()
193        }
194    }
195    /// Instantiation and getters/setters.
196    #[automatically_derived]
197    impl<
198        P: alloy_contract::private::Provider<N>,
199        N: alloy_contract::private::Network,
200    > TimelockControllerInstance<P, N> {
201        /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
202
203See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
204        #[inline]
205        pub const fn new(
206            address: alloy_sol_types::private::Address,
207            provider: P,
208        ) -> Self {
209            Self {
210                address,
211                provider,
212                _network: ::core::marker::PhantomData,
213            }
214        }
215        /// Returns a reference to the address.
216        #[inline]
217        pub const fn address(&self) -> &alloy_sol_types::private::Address {
218            &self.address
219        }
220        /// Sets the address.
221        #[inline]
222        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
223            self.address = address;
224        }
225        /// Sets the address and returns `self`.
226        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
227            self.set_address(address);
228            self
229        }
230        /// Returns a reference to the provider.
231        #[inline]
232        pub const fn provider(&self) -> &P {
233            &self.provider
234        }
235    }
236    impl<P: ::core::clone::Clone, N> TimelockControllerInstance<&P, N> {
237        /// Clones the provider and returns a new instance with the cloned provider.
238        #[inline]
239        pub fn with_cloned_provider(self) -> TimelockControllerInstance<P, N> {
240            TimelockControllerInstance {
241                address: self.address,
242                provider: ::core::clone::Clone::clone(&self.provider),
243                _network: ::core::marker::PhantomData,
244            }
245        }
246    }
247    /// Function calls.
248    #[automatically_derived]
249    impl<
250        P: alloy_contract::private::Provider<N>,
251        N: alloy_contract::private::Network,
252    > TimelockControllerInstance<P, N> {
253        /// Creates a new call builder using this contract instance's provider and address.
254        ///
255        /// Note that the call can be any function call, not just those defined in this
256        /// contract. Prefer using the other methods for building type-safe contract calls.
257        pub fn call_builder<C: alloy_sol_types::SolCall>(
258            &self,
259            call: &C,
260        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
261            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
262        }
263    }
264    /// Event filters.
265    #[automatically_derived]
266    impl<
267        P: alloy_contract::private::Provider<N>,
268        N: alloy_contract::private::Network,
269    > TimelockControllerInstance<P, N> {
270        /// Creates a new event filter using this contract instance's provider and address.
271        ///
272        /// Note that the type can be any event, not just those defined in this contract.
273        /// Prefer using the other methods for building type-safe event filters.
274        pub fn event_filter<E: alloy_sol_types::SolEvent>(
275            &self,
276        ) -> alloy_contract::Event<&P, E, N> {
277            alloy_contract::Event::new_sol(&self.provider, &self.address)
278        }
279    }
280}
281/**
282
283Generated by the following Solidity interface...
284```solidity
285library TimelockController {
286    type OperationState is uint8;
287}
288
289interface SafeExitTimelock {
290    error AccessControlBadConfirmation();
291    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
292    error FailedInnerCall();
293    error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
294    error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
295    error TimelockUnauthorizedCaller(address caller);
296    error TimelockUnexecutedPredecessor(bytes32 predecessorId);
297    error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
298
299    event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
300    event CallSalt(bytes32 indexed id, bytes32 salt);
301    event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
302    event Cancelled(bytes32 indexed id);
303    event MinDelayChange(uint256 oldDuration, uint256 newDuration);
304    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
305    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
306    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
307
308    constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
309
310    receive() external payable;
311
312    function CANCELLER_ROLE() external view returns (bytes32);
313    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
314    function EXECUTOR_ROLE() external view returns (bytes32);
315    function PROPOSER_ROLE() external view returns (bytes32);
316    function cancel(bytes32 id) external;
317    function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
318    function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
319    function getMinDelay() external view returns (uint256);
320    function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
321    function getRoleAdmin(bytes32 role) external view returns (bytes32);
322    function getTimestamp(bytes32 id) external view returns (uint256);
323    function grantRole(bytes32 role, address account) external;
324    function hasRole(bytes32 role, address account) external view returns (bool);
325    function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
326    function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
327    function isOperation(bytes32 id) external view returns (bool);
328    function isOperationDone(bytes32 id) external view returns (bool);
329    function isOperationPending(bytes32 id) external view returns (bool);
330    function isOperationReady(bytes32 id) external view returns (bool);
331    function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
332    function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
333    function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
334    function renounceRole(bytes32 role, address callerConfirmation) external;
335    function revokeRole(bytes32 role, address account) external;
336    function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
337    function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
338    function supportsInterface(bytes4 interfaceId) external view returns (bool);
339    function updateDelay(uint256 newDelay) external;
340}
341```
342
343...which was generated by the following JSON ABI:
344```json
345[
346  {
347    "type": "constructor",
348    "inputs": [
349      {
350        "name": "minDelay",
351        "type": "uint256",
352        "internalType": "uint256"
353      },
354      {
355        "name": "proposers",
356        "type": "address[]",
357        "internalType": "address[]"
358      },
359      {
360        "name": "executors",
361        "type": "address[]",
362        "internalType": "address[]"
363      },
364      {
365        "name": "admin",
366        "type": "address",
367        "internalType": "address"
368      }
369    ],
370    "stateMutability": "nonpayable"
371  },
372  {
373    "type": "receive",
374    "stateMutability": "payable"
375  },
376  {
377    "type": "function",
378    "name": "CANCELLER_ROLE",
379    "inputs": [],
380    "outputs": [
381      {
382        "name": "",
383        "type": "bytes32",
384        "internalType": "bytes32"
385      }
386    ],
387    "stateMutability": "view"
388  },
389  {
390    "type": "function",
391    "name": "DEFAULT_ADMIN_ROLE",
392    "inputs": [],
393    "outputs": [
394      {
395        "name": "",
396        "type": "bytes32",
397        "internalType": "bytes32"
398      }
399    ],
400    "stateMutability": "view"
401  },
402  {
403    "type": "function",
404    "name": "EXECUTOR_ROLE",
405    "inputs": [],
406    "outputs": [
407      {
408        "name": "",
409        "type": "bytes32",
410        "internalType": "bytes32"
411      }
412    ],
413    "stateMutability": "view"
414  },
415  {
416    "type": "function",
417    "name": "PROPOSER_ROLE",
418    "inputs": [],
419    "outputs": [
420      {
421        "name": "",
422        "type": "bytes32",
423        "internalType": "bytes32"
424      }
425    ],
426    "stateMutability": "view"
427  },
428  {
429    "type": "function",
430    "name": "cancel",
431    "inputs": [
432      {
433        "name": "id",
434        "type": "bytes32",
435        "internalType": "bytes32"
436      }
437    ],
438    "outputs": [],
439    "stateMutability": "nonpayable"
440  },
441  {
442    "type": "function",
443    "name": "execute",
444    "inputs": [
445      {
446        "name": "target",
447        "type": "address",
448        "internalType": "address"
449      },
450      {
451        "name": "value",
452        "type": "uint256",
453        "internalType": "uint256"
454      },
455      {
456        "name": "payload",
457        "type": "bytes",
458        "internalType": "bytes"
459      },
460      {
461        "name": "predecessor",
462        "type": "bytes32",
463        "internalType": "bytes32"
464      },
465      {
466        "name": "salt",
467        "type": "bytes32",
468        "internalType": "bytes32"
469      }
470    ],
471    "outputs": [],
472    "stateMutability": "payable"
473  },
474  {
475    "type": "function",
476    "name": "executeBatch",
477    "inputs": [
478      {
479        "name": "targets",
480        "type": "address[]",
481        "internalType": "address[]"
482      },
483      {
484        "name": "values",
485        "type": "uint256[]",
486        "internalType": "uint256[]"
487      },
488      {
489        "name": "payloads",
490        "type": "bytes[]",
491        "internalType": "bytes[]"
492      },
493      {
494        "name": "predecessor",
495        "type": "bytes32",
496        "internalType": "bytes32"
497      },
498      {
499        "name": "salt",
500        "type": "bytes32",
501        "internalType": "bytes32"
502      }
503    ],
504    "outputs": [],
505    "stateMutability": "payable"
506  },
507  {
508    "type": "function",
509    "name": "getMinDelay",
510    "inputs": [],
511    "outputs": [
512      {
513        "name": "",
514        "type": "uint256",
515        "internalType": "uint256"
516      }
517    ],
518    "stateMutability": "view"
519  },
520  {
521    "type": "function",
522    "name": "getOperationState",
523    "inputs": [
524      {
525        "name": "id",
526        "type": "bytes32",
527        "internalType": "bytes32"
528      }
529    ],
530    "outputs": [
531      {
532        "name": "",
533        "type": "uint8",
534        "internalType": "enum TimelockController.OperationState"
535      }
536    ],
537    "stateMutability": "view"
538  },
539  {
540    "type": "function",
541    "name": "getRoleAdmin",
542    "inputs": [
543      {
544        "name": "role",
545        "type": "bytes32",
546        "internalType": "bytes32"
547      }
548    ],
549    "outputs": [
550      {
551        "name": "",
552        "type": "bytes32",
553        "internalType": "bytes32"
554      }
555    ],
556    "stateMutability": "view"
557  },
558  {
559    "type": "function",
560    "name": "getTimestamp",
561    "inputs": [
562      {
563        "name": "id",
564        "type": "bytes32",
565        "internalType": "bytes32"
566      }
567    ],
568    "outputs": [
569      {
570        "name": "",
571        "type": "uint256",
572        "internalType": "uint256"
573      }
574    ],
575    "stateMutability": "view"
576  },
577  {
578    "type": "function",
579    "name": "grantRole",
580    "inputs": [
581      {
582        "name": "role",
583        "type": "bytes32",
584        "internalType": "bytes32"
585      },
586      {
587        "name": "account",
588        "type": "address",
589        "internalType": "address"
590      }
591    ],
592    "outputs": [],
593    "stateMutability": "nonpayable"
594  },
595  {
596    "type": "function",
597    "name": "hasRole",
598    "inputs": [
599      {
600        "name": "role",
601        "type": "bytes32",
602        "internalType": "bytes32"
603      },
604      {
605        "name": "account",
606        "type": "address",
607        "internalType": "address"
608      }
609    ],
610    "outputs": [
611      {
612        "name": "",
613        "type": "bool",
614        "internalType": "bool"
615      }
616    ],
617    "stateMutability": "view"
618  },
619  {
620    "type": "function",
621    "name": "hashOperation",
622    "inputs": [
623      {
624        "name": "target",
625        "type": "address",
626        "internalType": "address"
627      },
628      {
629        "name": "value",
630        "type": "uint256",
631        "internalType": "uint256"
632      },
633      {
634        "name": "data",
635        "type": "bytes",
636        "internalType": "bytes"
637      },
638      {
639        "name": "predecessor",
640        "type": "bytes32",
641        "internalType": "bytes32"
642      },
643      {
644        "name": "salt",
645        "type": "bytes32",
646        "internalType": "bytes32"
647      }
648    ],
649    "outputs": [
650      {
651        "name": "",
652        "type": "bytes32",
653        "internalType": "bytes32"
654      }
655    ],
656    "stateMutability": "pure"
657  },
658  {
659    "type": "function",
660    "name": "hashOperationBatch",
661    "inputs": [
662      {
663        "name": "targets",
664        "type": "address[]",
665        "internalType": "address[]"
666      },
667      {
668        "name": "values",
669        "type": "uint256[]",
670        "internalType": "uint256[]"
671      },
672      {
673        "name": "payloads",
674        "type": "bytes[]",
675        "internalType": "bytes[]"
676      },
677      {
678        "name": "predecessor",
679        "type": "bytes32",
680        "internalType": "bytes32"
681      },
682      {
683        "name": "salt",
684        "type": "bytes32",
685        "internalType": "bytes32"
686      }
687    ],
688    "outputs": [
689      {
690        "name": "",
691        "type": "bytes32",
692        "internalType": "bytes32"
693      }
694    ],
695    "stateMutability": "pure"
696  },
697  {
698    "type": "function",
699    "name": "isOperation",
700    "inputs": [
701      {
702        "name": "id",
703        "type": "bytes32",
704        "internalType": "bytes32"
705      }
706    ],
707    "outputs": [
708      {
709        "name": "",
710        "type": "bool",
711        "internalType": "bool"
712      }
713    ],
714    "stateMutability": "view"
715  },
716  {
717    "type": "function",
718    "name": "isOperationDone",
719    "inputs": [
720      {
721        "name": "id",
722        "type": "bytes32",
723        "internalType": "bytes32"
724      }
725    ],
726    "outputs": [
727      {
728        "name": "",
729        "type": "bool",
730        "internalType": "bool"
731      }
732    ],
733    "stateMutability": "view"
734  },
735  {
736    "type": "function",
737    "name": "isOperationPending",
738    "inputs": [
739      {
740        "name": "id",
741        "type": "bytes32",
742        "internalType": "bytes32"
743      }
744    ],
745    "outputs": [
746      {
747        "name": "",
748        "type": "bool",
749        "internalType": "bool"
750      }
751    ],
752    "stateMutability": "view"
753  },
754  {
755    "type": "function",
756    "name": "isOperationReady",
757    "inputs": [
758      {
759        "name": "id",
760        "type": "bytes32",
761        "internalType": "bytes32"
762      }
763    ],
764    "outputs": [
765      {
766        "name": "",
767        "type": "bool",
768        "internalType": "bool"
769      }
770    ],
771    "stateMutability": "view"
772  },
773  {
774    "type": "function",
775    "name": "onERC1155BatchReceived",
776    "inputs": [
777      {
778        "name": "",
779        "type": "address",
780        "internalType": "address"
781      },
782      {
783        "name": "",
784        "type": "address",
785        "internalType": "address"
786      },
787      {
788        "name": "",
789        "type": "uint256[]",
790        "internalType": "uint256[]"
791      },
792      {
793        "name": "",
794        "type": "uint256[]",
795        "internalType": "uint256[]"
796      },
797      {
798        "name": "",
799        "type": "bytes",
800        "internalType": "bytes"
801      }
802    ],
803    "outputs": [
804      {
805        "name": "",
806        "type": "bytes4",
807        "internalType": "bytes4"
808      }
809    ],
810    "stateMutability": "nonpayable"
811  },
812  {
813    "type": "function",
814    "name": "onERC1155Received",
815    "inputs": [
816      {
817        "name": "",
818        "type": "address",
819        "internalType": "address"
820      },
821      {
822        "name": "",
823        "type": "address",
824        "internalType": "address"
825      },
826      {
827        "name": "",
828        "type": "uint256",
829        "internalType": "uint256"
830      },
831      {
832        "name": "",
833        "type": "uint256",
834        "internalType": "uint256"
835      },
836      {
837        "name": "",
838        "type": "bytes",
839        "internalType": "bytes"
840      }
841    ],
842    "outputs": [
843      {
844        "name": "",
845        "type": "bytes4",
846        "internalType": "bytes4"
847      }
848    ],
849    "stateMutability": "nonpayable"
850  },
851  {
852    "type": "function",
853    "name": "onERC721Received",
854    "inputs": [
855      {
856        "name": "",
857        "type": "address",
858        "internalType": "address"
859      },
860      {
861        "name": "",
862        "type": "address",
863        "internalType": "address"
864      },
865      {
866        "name": "",
867        "type": "uint256",
868        "internalType": "uint256"
869      },
870      {
871        "name": "",
872        "type": "bytes",
873        "internalType": "bytes"
874      }
875    ],
876    "outputs": [
877      {
878        "name": "",
879        "type": "bytes4",
880        "internalType": "bytes4"
881      }
882    ],
883    "stateMutability": "nonpayable"
884  },
885  {
886    "type": "function",
887    "name": "renounceRole",
888    "inputs": [
889      {
890        "name": "role",
891        "type": "bytes32",
892        "internalType": "bytes32"
893      },
894      {
895        "name": "callerConfirmation",
896        "type": "address",
897        "internalType": "address"
898      }
899    ],
900    "outputs": [],
901    "stateMutability": "nonpayable"
902  },
903  {
904    "type": "function",
905    "name": "revokeRole",
906    "inputs": [
907      {
908        "name": "role",
909        "type": "bytes32",
910        "internalType": "bytes32"
911      },
912      {
913        "name": "account",
914        "type": "address",
915        "internalType": "address"
916      }
917    ],
918    "outputs": [],
919    "stateMutability": "nonpayable"
920  },
921  {
922    "type": "function",
923    "name": "schedule",
924    "inputs": [
925      {
926        "name": "target",
927        "type": "address",
928        "internalType": "address"
929      },
930      {
931        "name": "value",
932        "type": "uint256",
933        "internalType": "uint256"
934      },
935      {
936        "name": "data",
937        "type": "bytes",
938        "internalType": "bytes"
939      },
940      {
941        "name": "predecessor",
942        "type": "bytes32",
943        "internalType": "bytes32"
944      },
945      {
946        "name": "salt",
947        "type": "bytes32",
948        "internalType": "bytes32"
949      },
950      {
951        "name": "delay",
952        "type": "uint256",
953        "internalType": "uint256"
954      }
955    ],
956    "outputs": [],
957    "stateMutability": "nonpayable"
958  },
959  {
960    "type": "function",
961    "name": "scheduleBatch",
962    "inputs": [
963      {
964        "name": "targets",
965        "type": "address[]",
966        "internalType": "address[]"
967      },
968      {
969        "name": "values",
970        "type": "uint256[]",
971        "internalType": "uint256[]"
972      },
973      {
974        "name": "payloads",
975        "type": "bytes[]",
976        "internalType": "bytes[]"
977      },
978      {
979        "name": "predecessor",
980        "type": "bytes32",
981        "internalType": "bytes32"
982      },
983      {
984        "name": "salt",
985        "type": "bytes32",
986        "internalType": "bytes32"
987      },
988      {
989        "name": "delay",
990        "type": "uint256",
991        "internalType": "uint256"
992      }
993    ],
994    "outputs": [],
995    "stateMutability": "nonpayable"
996  },
997  {
998    "type": "function",
999    "name": "supportsInterface",
1000    "inputs": [
1001      {
1002        "name": "interfaceId",
1003        "type": "bytes4",
1004        "internalType": "bytes4"
1005      }
1006    ],
1007    "outputs": [
1008      {
1009        "name": "",
1010        "type": "bool",
1011        "internalType": "bool"
1012      }
1013    ],
1014    "stateMutability": "view"
1015  },
1016  {
1017    "type": "function",
1018    "name": "updateDelay",
1019    "inputs": [
1020      {
1021        "name": "newDelay",
1022        "type": "uint256",
1023        "internalType": "uint256"
1024      }
1025    ],
1026    "outputs": [],
1027    "stateMutability": "nonpayable"
1028  },
1029  {
1030    "type": "event",
1031    "name": "CallExecuted",
1032    "inputs": [
1033      {
1034        "name": "id",
1035        "type": "bytes32",
1036        "indexed": true,
1037        "internalType": "bytes32"
1038      },
1039      {
1040        "name": "index",
1041        "type": "uint256",
1042        "indexed": true,
1043        "internalType": "uint256"
1044      },
1045      {
1046        "name": "target",
1047        "type": "address",
1048        "indexed": false,
1049        "internalType": "address"
1050      },
1051      {
1052        "name": "value",
1053        "type": "uint256",
1054        "indexed": false,
1055        "internalType": "uint256"
1056      },
1057      {
1058        "name": "data",
1059        "type": "bytes",
1060        "indexed": false,
1061        "internalType": "bytes"
1062      }
1063    ],
1064    "anonymous": false
1065  },
1066  {
1067    "type": "event",
1068    "name": "CallSalt",
1069    "inputs": [
1070      {
1071        "name": "id",
1072        "type": "bytes32",
1073        "indexed": true,
1074        "internalType": "bytes32"
1075      },
1076      {
1077        "name": "salt",
1078        "type": "bytes32",
1079        "indexed": false,
1080        "internalType": "bytes32"
1081      }
1082    ],
1083    "anonymous": false
1084  },
1085  {
1086    "type": "event",
1087    "name": "CallScheduled",
1088    "inputs": [
1089      {
1090        "name": "id",
1091        "type": "bytes32",
1092        "indexed": true,
1093        "internalType": "bytes32"
1094      },
1095      {
1096        "name": "index",
1097        "type": "uint256",
1098        "indexed": true,
1099        "internalType": "uint256"
1100      },
1101      {
1102        "name": "target",
1103        "type": "address",
1104        "indexed": false,
1105        "internalType": "address"
1106      },
1107      {
1108        "name": "value",
1109        "type": "uint256",
1110        "indexed": false,
1111        "internalType": "uint256"
1112      },
1113      {
1114        "name": "data",
1115        "type": "bytes",
1116        "indexed": false,
1117        "internalType": "bytes"
1118      },
1119      {
1120        "name": "predecessor",
1121        "type": "bytes32",
1122        "indexed": false,
1123        "internalType": "bytes32"
1124      },
1125      {
1126        "name": "delay",
1127        "type": "uint256",
1128        "indexed": false,
1129        "internalType": "uint256"
1130      }
1131    ],
1132    "anonymous": false
1133  },
1134  {
1135    "type": "event",
1136    "name": "Cancelled",
1137    "inputs": [
1138      {
1139        "name": "id",
1140        "type": "bytes32",
1141        "indexed": true,
1142        "internalType": "bytes32"
1143      }
1144    ],
1145    "anonymous": false
1146  },
1147  {
1148    "type": "event",
1149    "name": "MinDelayChange",
1150    "inputs": [
1151      {
1152        "name": "oldDuration",
1153        "type": "uint256",
1154        "indexed": false,
1155        "internalType": "uint256"
1156      },
1157      {
1158        "name": "newDuration",
1159        "type": "uint256",
1160        "indexed": false,
1161        "internalType": "uint256"
1162      }
1163    ],
1164    "anonymous": false
1165  },
1166  {
1167    "type": "event",
1168    "name": "RoleAdminChanged",
1169    "inputs": [
1170      {
1171        "name": "role",
1172        "type": "bytes32",
1173        "indexed": true,
1174        "internalType": "bytes32"
1175      },
1176      {
1177        "name": "previousAdminRole",
1178        "type": "bytes32",
1179        "indexed": true,
1180        "internalType": "bytes32"
1181      },
1182      {
1183        "name": "newAdminRole",
1184        "type": "bytes32",
1185        "indexed": true,
1186        "internalType": "bytes32"
1187      }
1188    ],
1189    "anonymous": false
1190  },
1191  {
1192    "type": "event",
1193    "name": "RoleGranted",
1194    "inputs": [
1195      {
1196        "name": "role",
1197        "type": "bytes32",
1198        "indexed": true,
1199        "internalType": "bytes32"
1200      },
1201      {
1202        "name": "account",
1203        "type": "address",
1204        "indexed": true,
1205        "internalType": "address"
1206      },
1207      {
1208        "name": "sender",
1209        "type": "address",
1210        "indexed": true,
1211        "internalType": "address"
1212      }
1213    ],
1214    "anonymous": false
1215  },
1216  {
1217    "type": "event",
1218    "name": "RoleRevoked",
1219    "inputs": [
1220      {
1221        "name": "role",
1222        "type": "bytes32",
1223        "indexed": true,
1224        "internalType": "bytes32"
1225      },
1226      {
1227        "name": "account",
1228        "type": "address",
1229        "indexed": true,
1230        "internalType": "address"
1231      },
1232      {
1233        "name": "sender",
1234        "type": "address",
1235        "indexed": true,
1236        "internalType": "address"
1237      }
1238    ],
1239    "anonymous": false
1240  },
1241  {
1242    "type": "error",
1243    "name": "AccessControlBadConfirmation",
1244    "inputs": []
1245  },
1246  {
1247    "type": "error",
1248    "name": "AccessControlUnauthorizedAccount",
1249    "inputs": [
1250      {
1251        "name": "account",
1252        "type": "address",
1253        "internalType": "address"
1254      },
1255      {
1256        "name": "neededRole",
1257        "type": "bytes32",
1258        "internalType": "bytes32"
1259      }
1260    ]
1261  },
1262  {
1263    "type": "error",
1264    "name": "FailedInnerCall",
1265    "inputs": []
1266  },
1267  {
1268    "type": "error",
1269    "name": "TimelockInsufficientDelay",
1270    "inputs": [
1271      {
1272        "name": "delay",
1273        "type": "uint256",
1274        "internalType": "uint256"
1275      },
1276      {
1277        "name": "minDelay",
1278        "type": "uint256",
1279        "internalType": "uint256"
1280      }
1281    ]
1282  },
1283  {
1284    "type": "error",
1285    "name": "TimelockInvalidOperationLength",
1286    "inputs": [
1287      {
1288        "name": "targets",
1289        "type": "uint256",
1290        "internalType": "uint256"
1291      },
1292      {
1293        "name": "payloads",
1294        "type": "uint256",
1295        "internalType": "uint256"
1296      },
1297      {
1298        "name": "values",
1299        "type": "uint256",
1300        "internalType": "uint256"
1301      }
1302    ]
1303  },
1304  {
1305    "type": "error",
1306    "name": "TimelockUnauthorizedCaller",
1307    "inputs": [
1308      {
1309        "name": "caller",
1310        "type": "address",
1311        "internalType": "address"
1312      }
1313    ]
1314  },
1315  {
1316    "type": "error",
1317    "name": "TimelockUnexecutedPredecessor",
1318    "inputs": [
1319      {
1320        "name": "predecessorId",
1321        "type": "bytes32",
1322        "internalType": "bytes32"
1323      }
1324    ]
1325  },
1326  {
1327    "type": "error",
1328    "name": "TimelockUnexpectedOperationState",
1329    "inputs": [
1330      {
1331        "name": "operationId",
1332        "type": "bytes32",
1333        "internalType": "bytes32"
1334      },
1335      {
1336        "name": "expectedStates",
1337        "type": "bytes32",
1338        "internalType": "bytes32"
1339      }
1340    ]
1341  }
1342]
1343```*/
1344#[allow(
1345    non_camel_case_types,
1346    non_snake_case,
1347    clippy::pub_underscore_fields,
1348    clippy::style,
1349    clippy::empty_structs_with_brackets
1350)]
1351pub mod SafeExitTimelock {
1352    use super::*;
1353    use alloy::sol_types as alloy_sol_types;
1354    /// The creation / init bytecode of the contract.
1355    ///
1356    /// ```text
1357    ///0x608060405234801561000f575f5ffd5b50604051611d0b380380611d0b83398101604081905261002e916102fe565b8383838361003c5f30610183565b506001600160a01b03811615610058576100565f82610183565b505b5f5b83518110156100ec576100ac7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18583815181106100995761009961037d565b602002602001015161018360201b60201c565b506100e37ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838583815181106100995761009961037d565b5060010161005a565b505f5b82518110156101375761012e7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638483815181106100995761009961037d565b506001016100ef565b506002849055604080515f8152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050610391565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16610223575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101db3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610226565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b0381168114610256575f5ffd5b919050565b5f82601f83011261026a575f5ffd5b81516001600160401b038111156102835761028361022c565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102b1576102b161022c565b6040529182526020818501810192908101868411156102ce575f5ffd5b6020860192505b838310156102f4576102e683610240565b8152602092830192016102d5565b5095945050505050565b5f5f5f5f60808587031215610311575f5ffd5b845160208601519094506001600160401b0381111561032e575f5ffd5b61033a8782880161025b565b604087015190945090506001600160401b03811115610357575f5ffd5b6103638782880161025b565b92505061037260608601610240565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b61196d8061039e5f395ff3fe6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1358    /// ```
1359    #[rustfmt::skip]
1360    #[allow(clippy::all)]
1361    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1362        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1D\x0B8\x03\x80a\x1D\x0B\x839\x81\x01`@\x81\x90Ra\0.\x91a\x02\xFEV[\x83\x83\x83\x83a\0<_0a\x01\x83V[P`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\0XWa\0V_\x82a\x01\x83V[P[_[\x83Q\x81\x10\x15a\0\xECWa\0\xAC\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[` \x02` \x01\x01Qa\x01\x83` \x1B` \x1CV[Pa\0\xE3\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0ZV[P_[\x82Q\x81\x10\x15a\x017Wa\x01.\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x84\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0\xEFV[P`\x02\x84\x90U`@\x80Q_\x81R` \x81\x01\x86\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPPPa\x03\x91V[_\x82\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x84R\x90\x91R\x81 T`\xFF\x16a\x02#W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x01\xDB3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x02&V[P_[\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02VW__\xFD[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02jW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x83Wa\x02\x83a\x02,V[`@Q`\x05\x82\x90\x1B\x90`?\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xB1Wa\x02\xB1a\x02,V[`@R\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x86\x84\x11\x15a\x02\xCEW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x02\xF4Wa\x02\xE6\x83a\x02@V[\x81R` \x92\x83\x01\x92\x01a\x02\xD5V[P\x95\x94PPPPPV[____`\x80\x85\x87\x03\x12\x15a\x03\x11W__\xFD[\x84Q` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03.W__\xFD[a\x03:\x87\x82\x88\x01a\x02[V[`@\x87\x01Q\x90\x94P\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03WW__\xFD[a\x03c\x87\x82\x88\x01a\x02[V[\x92PPa\x03r``\x86\x01a\x02@V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x19m\x80a\x03\x9E_9_\xF3\xFE`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08\x1C\0\n",
1363    );
1364    /// The runtime bytecode of the contract, as deployed on the network.
1365    ///
1366    /// ```text
1367    ///0x6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1368    /// ```
1369    #[rustfmt::skip]
1370    #[allow(clippy::all)]
1371    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1372        b"`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08\x1C\0\n",
1373    );
1374    #[derive(serde::Serialize, serde::Deserialize)]
1375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1376    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
1377```solidity
1378error AccessControlBadConfirmation();
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct AccessControlBadConfirmation;
1383    #[allow(
1384        non_camel_case_types,
1385        non_snake_case,
1386        clippy::pub_underscore_fields,
1387        clippy::style
1388    )]
1389    const _: () = {
1390        use alloy::sol_types as alloy_sol_types;
1391        #[doc(hidden)]
1392        type UnderlyingSolTuple<'a> = ();
1393        #[doc(hidden)]
1394        type UnderlyingRustTuple<'a> = ();
1395        #[cfg(test)]
1396        #[allow(dead_code, unreachable_patterns)]
1397        fn _type_assertion(
1398            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1399        ) {
1400            match _t {
1401                alloy_sol_types::private::AssertTypeEq::<
1402                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1403                >(_) => {}
1404            }
1405        }
1406        #[automatically_derived]
1407        #[doc(hidden)]
1408        impl ::core::convert::From<AccessControlBadConfirmation>
1409        for UnderlyingRustTuple<'_> {
1410            fn from(value: AccessControlBadConfirmation) -> Self {
1411                ()
1412            }
1413        }
1414        #[automatically_derived]
1415        #[doc(hidden)]
1416        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1417        for AccessControlBadConfirmation {
1418            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1419                Self
1420            }
1421        }
1422        #[automatically_derived]
1423        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
1424            type Parameters<'a> = UnderlyingSolTuple<'a>;
1425            type Token<'a> = <Self::Parameters<
1426                'a,
1427            > as alloy_sol_types::SolType>::Token<'a>;
1428            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
1429            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
1430            #[inline]
1431            fn new<'a>(
1432                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1433            ) -> Self {
1434                tuple.into()
1435            }
1436            #[inline]
1437            fn tokenize(&self) -> Self::Token<'_> {
1438                ()
1439            }
1440            #[inline]
1441            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1442                <Self::Parameters<
1443                    '_,
1444                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1445                    .map(Self::new)
1446            }
1447        }
1448    };
1449    #[derive(serde::Serialize, serde::Deserialize)]
1450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1451    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
1452```solidity
1453error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1454```*/
1455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1456    #[derive(Clone)]
1457    pub struct AccessControlUnauthorizedAccount {
1458        #[allow(missing_docs)]
1459        pub account: alloy::sol_types::private::Address,
1460        #[allow(missing_docs)]
1461        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
1462    }
1463    #[allow(
1464        non_camel_case_types,
1465        non_snake_case,
1466        clippy::pub_underscore_fields,
1467        clippy::style
1468    )]
1469    const _: () = {
1470        use alloy::sol_types as alloy_sol_types;
1471        #[doc(hidden)]
1472        type UnderlyingSolTuple<'a> = (
1473            alloy::sol_types::sol_data::Address,
1474            alloy::sol_types::sol_data::FixedBytes<32>,
1475        );
1476        #[doc(hidden)]
1477        type UnderlyingRustTuple<'a> = (
1478            alloy::sol_types::private::Address,
1479            alloy::sol_types::private::FixedBytes<32>,
1480        );
1481        #[cfg(test)]
1482        #[allow(dead_code, unreachable_patterns)]
1483        fn _type_assertion(
1484            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1485        ) {
1486            match _t {
1487                alloy_sol_types::private::AssertTypeEq::<
1488                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1489                >(_) => {}
1490            }
1491        }
1492        #[automatically_derived]
1493        #[doc(hidden)]
1494        impl ::core::convert::From<AccessControlUnauthorizedAccount>
1495        for UnderlyingRustTuple<'_> {
1496            fn from(value: AccessControlUnauthorizedAccount) -> Self {
1497                (value.account, value.neededRole)
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1503        for AccessControlUnauthorizedAccount {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    account: tuple.0,
1507                    neededRole: tuple.1,
1508                }
1509            }
1510        }
1511        #[automatically_derived]
1512        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
1513            type Parameters<'a> = UnderlyingSolTuple<'a>;
1514            type Token<'a> = <Self::Parameters<
1515                'a,
1516            > as alloy_sol_types::SolType>::Token<'a>;
1517            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
1518            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
1519            #[inline]
1520            fn new<'a>(
1521                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1522            ) -> Self {
1523                tuple.into()
1524            }
1525            #[inline]
1526            fn tokenize(&self) -> Self::Token<'_> {
1527                (
1528                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1529                        &self.account,
1530                    ),
1531                    <alloy::sol_types::sol_data::FixedBytes<
1532                        32,
1533                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
1534                )
1535            }
1536            #[inline]
1537            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1538                <Self::Parameters<
1539                    '_,
1540                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1541                    .map(Self::new)
1542            }
1543        }
1544    };
1545    #[derive(serde::Serialize, serde::Deserialize)]
1546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1547    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
1548```solidity
1549error FailedInnerCall();
1550```*/
1551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1552    #[derive(Clone)]
1553    pub struct FailedInnerCall;
1554    #[allow(
1555        non_camel_case_types,
1556        non_snake_case,
1557        clippy::pub_underscore_fields,
1558        clippy::style
1559    )]
1560    const _: () = {
1561        use alloy::sol_types as alloy_sol_types;
1562        #[doc(hidden)]
1563        type UnderlyingSolTuple<'a> = ();
1564        #[doc(hidden)]
1565        type UnderlyingRustTuple<'a> = ();
1566        #[cfg(test)]
1567        #[allow(dead_code, unreachable_patterns)]
1568        fn _type_assertion(
1569            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1570        ) {
1571            match _t {
1572                alloy_sol_types::private::AssertTypeEq::<
1573                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1574                >(_) => {}
1575            }
1576        }
1577        #[automatically_derived]
1578        #[doc(hidden)]
1579        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
1580            fn from(value: FailedInnerCall) -> Self {
1581                ()
1582            }
1583        }
1584        #[automatically_derived]
1585        #[doc(hidden)]
1586        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
1587            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1588                Self
1589            }
1590        }
1591        #[automatically_derived]
1592        impl alloy_sol_types::SolError for FailedInnerCall {
1593            type Parameters<'a> = UnderlyingSolTuple<'a>;
1594            type Token<'a> = <Self::Parameters<
1595                'a,
1596            > as alloy_sol_types::SolType>::Token<'a>;
1597            const SIGNATURE: &'static str = "FailedInnerCall()";
1598            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
1599            #[inline]
1600            fn new<'a>(
1601                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1602            ) -> Self {
1603                tuple.into()
1604            }
1605            #[inline]
1606            fn tokenize(&self) -> Self::Token<'_> {
1607                ()
1608            }
1609            #[inline]
1610            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1611                <Self::Parameters<
1612                    '_,
1613                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1614                    .map(Self::new)
1615            }
1616        }
1617    };
1618    #[derive(serde::Serialize, serde::Deserialize)]
1619    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1620    /**Custom error with signature `TimelockInsufficientDelay(uint256,uint256)` and selector `0x54336609`.
1621```solidity
1622error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
1623```*/
1624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1625    #[derive(Clone)]
1626    pub struct TimelockInsufficientDelay {
1627        #[allow(missing_docs)]
1628        pub delay: alloy::sol_types::private::primitives::aliases::U256,
1629        #[allow(missing_docs)]
1630        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
1631    }
1632    #[allow(
1633        non_camel_case_types,
1634        non_snake_case,
1635        clippy::pub_underscore_fields,
1636        clippy::style
1637    )]
1638    const _: () = {
1639        use alloy::sol_types as alloy_sol_types;
1640        #[doc(hidden)]
1641        type UnderlyingSolTuple<'a> = (
1642            alloy::sol_types::sol_data::Uint<256>,
1643            alloy::sol_types::sol_data::Uint<256>,
1644        );
1645        #[doc(hidden)]
1646        type UnderlyingRustTuple<'a> = (
1647            alloy::sol_types::private::primitives::aliases::U256,
1648            alloy::sol_types::private::primitives::aliases::U256,
1649        );
1650        #[cfg(test)]
1651        #[allow(dead_code, unreachable_patterns)]
1652        fn _type_assertion(
1653            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1654        ) {
1655            match _t {
1656                alloy_sol_types::private::AssertTypeEq::<
1657                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1658                >(_) => {}
1659            }
1660        }
1661        #[automatically_derived]
1662        #[doc(hidden)]
1663        impl ::core::convert::From<TimelockInsufficientDelay>
1664        for UnderlyingRustTuple<'_> {
1665            fn from(value: TimelockInsufficientDelay) -> Self {
1666                (value.delay, value.minDelay)
1667            }
1668        }
1669        #[automatically_derived]
1670        #[doc(hidden)]
1671        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1672        for TimelockInsufficientDelay {
1673            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1674                Self {
1675                    delay: tuple.0,
1676                    minDelay: tuple.1,
1677                }
1678            }
1679        }
1680        #[automatically_derived]
1681        impl alloy_sol_types::SolError for TimelockInsufficientDelay {
1682            type Parameters<'a> = UnderlyingSolTuple<'a>;
1683            type Token<'a> = <Self::Parameters<
1684                'a,
1685            > as alloy_sol_types::SolType>::Token<'a>;
1686            const SIGNATURE: &'static str = "TimelockInsufficientDelay(uint256,uint256)";
1687            const SELECTOR: [u8; 4] = [84u8, 51u8, 102u8, 9u8];
1688            #[inline]
1689            fn new<'a>(
1690                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1691            ) -> Self {
1692                tuple.into()
1693            }
1694            #[inline]
1695            fn tokenize(&self) -> Self::Token<'_> {
1696                (
1697                    <alloy::sol_types::sol_data::Uint<
1698                        256,
1699                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
1700                    <alloy::sol_types::sol_data::Uint<
1701                        256,
1702                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
1703                )
1704            }
1705            #[inline]
1706            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1707                <Self::Parameters<
1708                    '_,
1709                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1710                    .map(Self::new)
1711            }
1712        }
1713    };
1714    #[derive(serde::Serialize, serde::Deserialize)]
1715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1716    /**Custom error with signature `TimelockInvalidOperationLength(uint256,uint256,uint256)` and selector `0xffb03211`.
1717```solidity
1718error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
1719```*/
1720    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1721    #[derive(Clone)]
1722    pub struct TimelockInvalidOperationLength {
1723        #[allow(missing_docs)]
1724        pub targets: alloy::sol_types::private::primitives::aliases::U256,
1725        #[allow(missing_docs)]
1726        pub payloads: alloy::sol_types::private::primitives::aliases::U256,
1727        #[allow(missing_docs)]
1728        pub values: alloy::sol_types::private::primitives::aliases::U256,
1729    }
1730    #[allow(
1731        non_camel_case_types,
1732        non_snake_case,
1733        clippy::pub_underscore_fields,
1734        clippy::style
1735    )]
1736    const _: () = {
1737        use alloy::sol_types as alloy_sol_types;
1738        #[doc(hidden)]
1739        type UnderlyingSolTuple<'a> = (
1740            alloy::sol_types::sol_data::Uint<256>,
1741            alloy::sol_types::sol_data::Uint<256>,
1742            alloy::sol_types::sol_data::Uint<256>,
1743        );
1744        #[doc(hidden)]
1745        type UnderlyingRustTuple<'a> = (
1746            alloy::sol_types::private::primitives::aliases::U256,
1747            alloy::sol_types::private::primitives::aliases::U256,
1748            alloy::sol_types::private::primitives::aliases::U256,
1749        );
1750        #[cfg(test)]
1751        #[allow(dead_code, unreachable_patterns)]
1752        fn _type_assertion(
1753            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1754        ) {
1755            match _t {
1756                alloy_sol_types::private::AssertTypeEq::<
1757                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1758                >(_) => {}
1759            }
1760        }
1761        #[automatically_derived]
1762        #[doc(hidden)]
1763        impl ::core::convert::From<TimelockInvalidOperationLength>
1764        for UnderlyingRustTuple<'_> {
1765            fn from(value: TimelockInvalidOperationLength) -> Self {
1766                (value.targets, value.payloads, value.values)
1767            }
1768        }
1769        #[automatically_derived]
1770        #[doc(hidden)]
1771        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1772        for TimelockInvalidOperationLength {
1773            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1774                Self {
1775                    targets: tuple.0,
1776                    payloads: tuple.1,
1777                    values: tuple.2,
1778                }
1779            }
1780        }
1781        #[automatically_derived]
1782        impl alloy_sol_types::SolError for TimelockInvalidOperationLength {
1783            type Parameters<'a> = UnderlyingSolTuple<'a>;
1784            type Token<'a> = <Self::Parameters<
1785                'a,
1786            > as alloy_sol_types::SolType>::Token<'a>;
1787            const SIGNATURE: &'static str = "TimelockInvalidOperationLength(uint256,uint256,uint256)";
1788            const SELECTOR: [u8; 4] = [255u8, 176u8, 50u8, 17u8];
1789            #[inline]
1790            fn new<'a>(
1791                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1792            ) -> Self {
1793                tuple.into()
1794            }
1795            #[inline]
1796            fn tokenize(&self) -> Self::Token<'_> {
1797                (
1798                    <alloy::sol_types::sol_data::Uint<
1799                        256,
1800                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
1804                    <alloy::sol_types::sol_data::Uint<
1805                        256,
1806                    > as alloy_sol_types::SolType>::tokenize(&self.values),
1807                )
1808            }
1809            #[inline]
1810            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1811                <Self::Parameters<
1812                    '_,
1813                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1814                    .map(Self::new)
1815            }
1816        }
1817    };
1818    #[derive(serde::Serialize, serde::Deserialize)]
1819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1820    /**Custom error with signature `TimelockUnauthorizedCaller(address)` and selector `0xe2850c59`.
1821```solidity
1822error TimelockUnauthorizedCaller(address caller);
1823```*/
1824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1825    #[derive(Clone)]
1826    pub struct TimelockUnauthorizedCaller {
1827        #[allow(missing_docs)]
1828        pub caller: alloy::sol_types::private::Address,
1829    }
1830    #[allow(
1831        non_camel_case_types,
1832        non_snake_case,
1833        clippy::pub_underscore_fields,
1834        clippy::style
1835    )]
1836    const _: () = {
1837        use alloy::sol_types as alloy_sol_types;
1838        #[doc(hidden)]
1839        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1840        #[doc(hidden)]
1841        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1842        #[cfg(test)]
1843        #[allow(dead_code, unreachable_patterns)]
1844        fn _type_assertion(
1845            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1846        ) {
1847            match _t {
1848                alloy_sol_types::private::AssertTypeEq::<
1849                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1850                >(_) => {}
1851            }
1852        }
1853        #[automatically_derived]
1854        #[doc(hidden)]
1855        impl ::core::convert::From<TimelockUnauthorizedCaller>
1856        for UnderlyingRustTuple<'_> {
1857            fn from(value: TimelockUnauthorizedCaller) -> Self {
1858                (value.caller,)
1859            }
1860        }
1861        #[automatically_derived]
1862        #[doc(hidden)]
1863        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1864        for TimelockUnauthorizedCaller {
1865            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1866                Self { caller: tuple.0 }
1867            }
1868        }
1869        #[automatically_derived]
1870        impl alloy_sol_types::SolError for TimelockUnauthorizedCaller {
1871            type Parameters<'a> = UnderlyingSolTuple<'a>;
1872            type Token<'a> = <Self::Parameters<
1873                'a,
1874            > as alloy_sol_types::SolType>::Token<'a>;
1875            const SIGNATURE: &'static str = "TimelockUnauthorizedCaller(address)";
1876            const SELECTOR: [u8; 4] = [226u8, 133u8, 12u8, 89u8];
1877            #[inline]
1878            fn new<'a>(
1879                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1880            ) -> Self {
1881                tuple.into()
1882            }
1883            #[inline]
1884            fn tokenize(&self) -> Self::Token<'_> {
1885                (
1886                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1887                        &self.caller,
1888                    ),
1889                )
1890            }
1891            #[inline]
1892            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1893                <Self::Parameters<
1894                    '_,
1895                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1896                    .map(Self::new)
1897            }
1898        }
1899    };
1900    #[derive(serde::Serialize, serde::Deserialize)]
1901    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1902    /**Custom error with signature `TimelockUnexecutedPredecessor(bytes32)` and selector `0x90a9a618`.
1903```solidity
1904error TimelockUnexecutedPredecessor(bytes32 predecessorId);
1905```*/
1906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1907    #[derive(Clone)]
1908    pub struct TimelockUnexecutedPredecessor {
1909        #[allow(missing_docs)]
1910        pub predecessorId: alloy::sol_types::private::FixedBytes<32>,
1911    }
1912    #[allow(
1913        non_camel_case_types,
1914        non_snake_case,
1915        clippy::pub_underscore_fields,
1916        clippy::style
1917    )]
1918    const _: () = {
1919        use alloy::sol_types as alloy_sol_types;
1920        #[doc(hidden)]
1921        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
1922        #[doc(hidden)]
1923        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
1924        #[cfg(test)]
1925        #[allow(dead_code, unreachable_patterns)]
1926        fn _type_assertion(
1927            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1928        ) {
1929            match _t {
1930                alloy_sol_types::private::AssertTypeEq::<
1931                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1932                >(_) => {}
1933            }
1934        }
1935        #[automatically_derived]
1936        #[doc(hidden)]
1937        impl ::core::convert::From<TimelockUnexecutedPredecessor>
1938        for UnderlyingRustTuple<'_> {
1939            fn from(value: TimelockUnexecutedPredecessor) -> Self {
1940                (value.predecessorId,)
1941            }
1942        }
1943        #[automatically_derived]
1944        #[doc(hidden)]
1945        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1946        for TimelockUnexecutedPredecessor {
1947            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1948                Self { predecessorId: tuple.0 }
1949            }
1950        }
1951        #[automatically_derived]
1952        impl alloy_sol_types::SolError for TimelockUnexecutedPredecessor {
1953            type Parameters<'a> = UnderlyingSolTuple<'a>;
1954            type Token<'a> = <Self::Parameters<
1955                'a,
1956            > as alloy_sol_types::SolType>::Token<'a>;
1957            const SIGNATURE: &'static str = "TimelockUnexecutedPredecessor(bytes32)";
1958            const SELECTOR: [u8; 4] = [144u8, 169u8, 166u8, 24u8];
1959            #[inline]
1960            fn new<'a>(
1961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1962            ) -> Self {
1963                tuple.into()
1964            }
1965            #[inline]
1966            fn tokenize(&self) -> Self::Token<'_> {
1967                (
1968                    <alloy::sol_types::sol_data::FixedBytes<
1969                        32,
1970                    > as alloy_sol_types::SolType>::tokenize(&self.predecessorId),
1971                )
1972            }
1973            #[inline]
1974            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1975                <Self::Parameters<
1976                    '_,
1977                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1978                    .map(Self::new)
1979            }
1980        }
1981    };
1982    #[derive(serde::Serialize, serde::Deserialize)]
1983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1984    /**Custom error with signature `TimelockUnexpectedOperationState(bytes32,bytes32)` and selector `0x5ead8eb5`.
1985```solidity
1986error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
1987```*/
1988    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1989    #[derive(Clone)]
1990    pub struct TimelockUnexpectedOperationState {
1991        #[allow(missing_docs)]
1992        pub operationId: alloy::sol_types::private::FixedBytes<32>,
1993        #[allow(missing_docs)]
1994        pub expectedStates: alloy::sol_types::private::FixedBytes<32>,
1995    }
1996    #[allow(
1997        non_camel_case_types,
1998        non_snake_case,
1999        clippy::pub_underscore_fields,
2000        clippy::style
2001    )]
2002    const _: () = {
2003        use alloy::sol_types as alloy_sol_types;
2004        #[doc(hidden)]
2005        type UnderlyingSolTuple<'a> = (
2006            alloy::sol_types::sol_data::FixedBytes<32>,
2007            alloy::sol_types::sol_data::FixedBytes<32>,
2008        );
2009        #[doc(hidden)]
2010        type UnderlyingRustTuple<'a> = (
2011            alloy::sol_types::private::FixedBytes<32>,
2012            alloy::sol_types::private::FixedBytes<32>,
2013        );
2014        #[cfg(test)]
2015        #[allow(dead_code, unreachable_patterns)]
2016        fn _type_assertion(
2017            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2018        ) {
2019            match _t {
2020                alloy_sol_types::private::AssertTypeEq::<
2021                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2022                >(_) => {}
2023            }
2024        }
2025        #[automatically_derived]
2026        #[doc(hidden)]
2027        impl ::core::convert::From<TimelockUnexpectedOperationState>
2028        for UnderlyingRustTuple<'_> {
2029            fn from(value: TimelockUnexpectedOperationState) -> Self {
2030                (value.operationId, value.expectedStates)
2031            }
2032        }
2033        #[automatically_derived]
2034        #[doc(hidden)]
2035        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2036        for TimelockUnexpectedOperationState {
2037            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2038                Self {
2039                    operationId: tuple.0,
2040                    expectedStates: tuple.1,
2041                }
2042            }
2043        }
2044        #[automatically_derived]
2045        impl alloy_sol_types::SolError for TimelockUnexpectedOperationState {
2046            type Parameters<'a> = UnderlyingSolTuple<'a>;
2047            type Token<'a> = <Self::Parameters<
2048                'a,
2049            > as alloy_sol_types::SolType>::Token<'a>;
2050            const SIGNATURE: &'static str = "TimelockUnexpectedOperationState(bytes32,bytes32)";
2051            const SELECTOR: [u8; 4] = [94u8, 173u8, 142u8, 181u8];
2052            #[inline]
2053            fn new<'a>(
2054                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2055            ) -> Self {
2056                tuple.into()
2057            }
2058            #[inline]
2059            fn tokenize(&self) -> Self::Token<'_> {
2060                (
2061                    <alloy::sol_types::sol_data::FixedBytes<
2062                        32,
2063                    > as alloy_sol_types::SolType>::tokenize(&self.operationId),
2064                    <alloy::sol_types::sol_data::FixedBytes<
2065                        32,
2066                    > as alloy_sol_types::SolType>::tokenize(&self.expectedStates),
2067                )
2068            }
2069            #[inline]
2070            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2071                <Self::Parameters<
2072                    '_,
2073                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2074                    .map(Self::new)
2075            }
2076        }
2077    };
2078    #[derive(serde::Serialize, serde::Deserialize)]
2079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2080    /**Event with signature `CallExecuted(bytes32,uint256,address,uint256,bytes)` and selector `0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58`.
2081```solidity
2082event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
2083```*/
2084    #[allow(
2085        non_camel_case_types,
2086        non_snake_case,
2087        clippy::pub_underscore_fields,
2088        clippy::style
2089    )]
2090    #[derive(Clone)]
2091    pub struct CallExecuted {
2092        #[allow(missing_docs)]
2093        pub id: alloy::sol_types::private::FixedBytes<32>,
2094        #[allow(missing_docs)]
2095        pub index: alloy::sol_types::private::primitives::aliases::U256,
2096        #[allow(missing_docs)]
2097        pub target: alloy::sol_types::private::Address,
2098        #[allow(missing_docs)]
2099        pub value: alloy::sol_types::private::primitives::aliases::U256,
2100        #[allow(missing_docs)]
2101        pub data: alloy::sol_types::private::Bytes,
2102    }
2103    #[allow(
2104        non_camel_case_types,
2105        non_snake_case,
2106        clippy::pub_underscore_fields,
2107        clippy::style
2108    )]
2109    const _: () = {
2110        use alloy::sol_types as alloy_sol_types;
2111        #[automatically_derived]
2112        impl alloy_sol_types::SolEvent for CallExecuted {
2113            type DataTuple<'a> = (
2114                alloy::sol_types::sol_data::Address,
2115                alloy::sol_types::sol_data::Uint<256>,
2116                alloy::sol_types::sol_data::Bytes,
2117            );
2118            type DataToken<'a> = <Self::DataTuple<
2119                'a,
2120            > as alloy_sol_types::SolType>::Token<'a>;
2121            type TopicList = (
2122                alloy_sol_types::sol_data::FixedBytes<32>,
2123                alloy::sol_types::sol_data::FixedBytes<32>,
2124                alloy::sol_types::sol_data::Uint<256>,
2125            );
2126            const SIGNATURE: &'static str = "CallExecuted(bytes32,uint256,address,uint256,bytes)";
2127            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2128                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
2129                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
2130                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
2131            ]);
2132            const ANONYMOUS: bool = false;
2133            #[allow(unused_variables)]
2134            #[inline]
2135            fn new(
2136                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2137                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2138            ) -> Self {
2139                Self {
2140                    id: topics.1,
2141                    index: topics.2,
2142                    target: data.0,
2143                    value: data.1,
2144                    data: data.2,
2145                }
2146            }
2147            #[inline]
2148            fn check_signature(
2149                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2150            ) -> alloy_sol_types::Result<()> {
2151                if topics.0 != Self::SIGNATURE_HASH {
2152                    return Err(
2153                        alloy_sol_types::Error::invalid_event_signature_hash(
2154                            Self::SIGNATURE,
2155                            topics.0,
2156                            Self::SIGNATURE_HASH,
2157                        ),
2158                    );
2159                }
2160                Ok(())
2161            }
2162            #[inline]
2163            fn tokenize_body(&self) -> Self::DataToken<'_> {
2164                (
2165                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2166                        &self.target,
2167                    ),
2168                    <alloy::sol_types::sol_data::Uint<
2169                        256,
2170                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2171                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2172                        &self.data,
2173                    ),
2174                )
2175            }
2176            #[inline]
2177            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2178                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2179            }
2180            #[inline]
2181            fn encode_topics_raw(
2182                &self,
2183                out: &mut [alloy_sol_types::abi::token::WordToken],
2184            ) -> alloy_sol_types::Result<()> {
2185                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2186                    return Err(alloy_sol_types::Error::Overrun);
2187                }
2188                out[0usize] = alloy_sol_types::abi::token::WordToken(
2189                    Self::SIGNATURE_HASH,
2190                );
2191                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2192                    32,
2193                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2194                out[2usize] = <alloy::sol_types::sol_data::Uint<
2195                    256,
2196                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2197                Ok(())
2198            }
2199        }
2200        #[automatically_derived]
2201        impl alloy_sol_types::private::IntoLogData for CallExecuted {
2202            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2203                From::from(self)
2204            }
2205            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2206                From::from(&self)
2207            }
2208        }
2209        #[automatically_derived]
2210        impl From<&CallExecuted> for alloy_sol_types::private::LogData {
2211            #[inline]
2212            fn from(this: &CallExecuted) -> alloy_sol_types::private::LogData {
2213                alloy_sol_types::SolEvent::encode_log_data(this)
2214            }
2215        }
2216    };
2217    #[derive(serde::Serialize, serde::Deserialize)]
2218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2219    /**Event with signature `CallSalt(bytes32,bytes32)` and selector `0x20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387`.
2220```solidity
2221event CallSalt(bytes32 indexed id, bytes32 salt);
2222```*/
2223    #[allow(
2224        non_camel_case_types,
2225        non_snake_case,
2226        clippy::pub_underscore_fields,
2227        clippy::style
2228    )]
2229    #[derive(Clone)]
2230    pub struct CallSalt {
2231        #[allow(missing_docs)]
2232        pub id: alloy::sol_types::private::FixedBytes<32>,
2233        #[allow(missing_docs)]
2234        pub salt: alloy::sol_types::private::FixedBytes<32>,
2235    }
2236    #[allow(
2237        non_camel_case_types,
2238        non_snake_case,
2239        clippy::pub_underscore_fields,
2240        clippy::style
2241    )]
2242    const _: () = {
2243        use alloy::sol_types as alloy_sol_types;
2244        #[automatically_derived]
2245        impl alloy_sol_types::SolEvent for CallSalt {
2246            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
2247            type DataToken<'a> = <Self::DataTuple<
2248                'a,
2249            > as alloy_sol_types::SolType>::Token<'a>;
2250            type TopicList = (
2251                alloy_sol_types::sol_data::FixedBytes<32>,
2252                alloy::sol_types::sol_data::FixedBytes<32>,
2253            );
2254            const SIGNATURE: &'static str = "CallSalt(bytes32,bytes32)";
2255            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2256                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
2257                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
2258                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
2259            ]);
2260            const ANONYMOUS: bool = false;
2261            #[allow(unused_variables)]
2262            #[inline]
2263            fn new(
2264                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2265                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2266            ) -> Self {
2267                Self { id: topics.1, salt: data.0 }
2268            }
2269            #[inline]
2270            fn check_signature(
2271                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2272            ) -> alloy_sol_types::Result<()> {
2273                if topics.0 != Self::SIGNATURE_HASH {
2274                    return Err(
2275                        alloy_sol_types::Error::invalid_event_signature_hash(
2276                            Self::SIGNATURE,
2277                            topics.0,
2278                            Self::SIGNATURE_HASH,
2279                        ),
2280                    );
2281                }
2282                Ok(())
2283            }
2284            #[inline]
2285            fn tokenize_body(&self) -> Self::DataToken<'_> {
2286                (
2287                    <alloy::sol_types::sol_data::FixedBytes<
2288                        32,
2289                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
2290                )
2291            }
2292            #[inline]
2293            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2294                (Self::SIGNATURE_HASH.into(), self.id.clone())
2295            }
2296            #[inline]
2297            fn encode_topics_raw(
2298                &self,
2299                out: &mut [alloy_sol_types::abi::token::WordToken],
2300            ) -> alloy_sol_types::Result<()> {
2301                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2302                    return Err(alloy_sol_types::Error::Overrun);
2303                }
2304                out[0usize] = alloy_sol_types::abi::token::WordToken(
2305                    Self::SIGNATURE_HASH,
2306                );
2307                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2308                    32,
2309                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2310                Ok(())
2311            }
2312        }
2313        #[automatically_derived]
2314        impl alloy_sol_types::private::IntoLogData for CallSalt {
2315            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2316                From::from(self)
2317            }
2318            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2319                From::from(&self)
2320            }
2321        }
2322        #[automatically_derived]
2323        impl From<&CallSalt> for alloy_sol_types::private::LogData {
2324            #[inline]
2325            fn from(this: &CallSalt) -> alloy_sol_types::private::LogData {
2326                alloy_sol_types::SolEvent::encode_log_data(this)
2327            }
2328        }
2329    };
2330    #[derive(serde::Serialize, serde::Deserialize)]
2331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2332    /**Event with signature `CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)` and selector `0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca`.
2333```solidity
2334event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
2335```*/
2336    #[allow(
2337        non_camel_case_types,
2338        non_snake_case,
2339        clippy::pub_underscore_fields,
2340        clippy::style
2341    )]
2342    #[derive(Clone)]
2343    pub struct CallScheduled {
2344        #[allow(missing_docs)]
2345        pub id: alloy::sol_types::private::FixedBytes<32>,
2346        #[allow(missing_docs)]
2347        pub index: alloy::sol_types::private::primitives::aliases::U256,
2348        #[allow(missing_docs)]
2349        pub target: alloy::sol_types::private::Address,
2350        #[allow(missing_docs)]
2351        pub value: alloy::sol_types::private::primitives::aliases::U256,
2352        #[allow(missing_docs)]
2353        pub data: alloy::sol_types::private::Bytes,
2354        #[allow(missing_docs)]
2355        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
2356        #[allow(missing_docs)]
2357        pub delay: alloy::sol_types::private::primitives::aliases::U256,
2358    }
2359    #[allow(
2360        non_camel_case_types,
2361        non_snake_case,
2362        clippy::pub_underscore_fields,
2363        clippy::style
2364    )]
2365    const _: () = {
2366        use alloy::sol_types as alloy_sol_types;
2367        #[automatically_derived]
2368        impl alloy_sol_types::SolEvent for CallScheduled {
2369            type DataTuple<'a> = (
2370                alloy::sol_types::sol_data::Address,
2371                alloy::sol_types::sol_data::Uint<256>,
2372                alloy::sol_types::sol_data::Bytes,
2373                alloy::sol_types::sol_data::FixedBytes<32>,
2374                alloy::sol_types::sol_data::Uint<256>,
2375            );
2376            type DataToken<'a> = <Self::DataTuple<
2377                'a,
2378            > as alloy_sol_types::SolType>::Token<'a>;
2379            type TopicList = (
2380                alloy_sol_types::sol_data::FixedBytes<32>,
2381                alloy::sol_types::sol_data::FixedBytes<32>,
2382                alloy::sol_types::sol_data::Uint<256>,
2383            );
2384            const SIGNATURE: &'static str = "CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)";
2385            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2386                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
2387                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
2388                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
2389            ]);
2390            const ANONYMOUS: bool = false;
2391            #[allow(unused_variables)]
2392            #[inline]
2393            fn new(
2394                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2395                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2396            ) -> Self {
2397                Self {
2398                    id: topics.1,
2399                    index: topics.2,
2400                    target: data.0,
2401                    value: data.1,
2402                    data: data.2,
2403                    predecessor: data.3,
2404                    delay: data.4,
2405                }
2406            }
2407            #[inline]
2408            fn check_signature(
2409                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2410            ) -> alloy_sol_types::Result<()> {
2411                if topics.0 != Self::SIGNATURE_HASH {
2412                    return Err(
2413                        alloy_sol_types::Error::invalid_event_signature_hash(
2414                            Self::SIGNATURE,
2415                            topics.0,
2416                            Self::SIGNATURE_HASH,
2417                        ),
2418                    );
2419                }
2420                Ok(())
2421            }
2422            #[inline]
2423            fn tokenize_body(&self) -> Self::DataToken<'_> {
2424                (
2425                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2426                        &self.target,
2427                    ),
2428                    <alloy::sol_types::sol_data::Uint<
2429                        256,
2430                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2431                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2432                        &self.data,
2433                    ),
2434                    <alloy::sol_types::sol_data::FixedBytes<
2435                        32,
2436                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
2437                    <alloy::sol_types::sol_data::Uint<
2438                        256,
2439                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
2440                )
2441            }
2442            #[inline]
2443            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2444                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2445            }
2446            #[inline]
2447            fn encode_topics_raw(
2448                &self,
2449                out: &mut [alloy_sol_types::abi::token::WordToken],
2450            ) -> alloy_sol_types::Result<()> {
2451                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2452                    return Err(alloy_sol_types::Error::Overrun);
2453                }
2454                out[0usize] = alloy_sol_types::abi::token::WordToken(
2455                    Self::SIGNATURE_HASH,
2456                );
2457                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2458                    32,
2459                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2460                out[2usize] = <alloy::sol_types::sol_data::Uint<
2461                    256,
2462                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2463                Ok(())
2464            }
2465        }
2466        #[automatically_derived]
2467        impl alloy_sol_types::private::IntoLogData for CallScheduled {
2468            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2469                From::from(self)
2470            }
2471            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2472                From::from(&self)
2473            }
2474        }
2475        #[automatically_derived]
2476        impl From<&CallScheduled> for alloy_sol_types::private::LogData {
2477            #[inline]
2478            fn from(this: &CallScheduled) -> alloy_sol_types::private::LogData {
2479                alloy_sol_types::SolEvent::encode_log_data(this)
2480            }
2481        }
2482    };
2483    #[derive(serde::Serialize, serde::Deserialize)]
2484    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2485    /**Event with signature `Cancelled(bytes32)` and selector `0xbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70`.
2486```solidity
2487event Cancelled(bytes32 indexed id);
2488```*/
2489    #[allow(
2490        non_camel_case_types,
2491        non_snake_case,
2492        clippy::pub_underscore_fields,
2493        clippy::style
2494    )]
2495    #[derive(Clone)]
2496    pub struct Cancelled {
2497        #[allow(missing_docs)]
2498        pub id: alloy::sol_types::private::FixedBytes<32>,
2499    }
2500    #[allow(
2501        non_camel_case_types,
2502        non_snake_case,
2503        clippy::pub_underscore_fields,
2504        clippy::style
2505    )]
2506    const _: () = {
2507        use alloy::sol_types as alloy_sol_types;
2508        #[automatically_derived]
2509        impl alloy_sol_types::SolEvent for Cancelled {
2510            type DataTuple<'a> = ();
2511            type DataToken<'a> = <Self::DataTuple<
2512                'a,
2513            > as alloy_sol_types::SolType>::Token<'a>;
2514            type TopicList = (
2515                alloy_sol_types::sol_data::FixedBytes<32>,
2516                alloy::sol_types::sol_data::FixedBytes<32>,
2517            );
2518            const SIGNATURE: &'static str = "Cancelled(bytes32)";
2519            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2520                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
2521                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
2522                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
2523            ]);
2524            const ANONYMOUS: bool = false;
2525            #[allow(unused_variables)]
2526            #[inline]
2527            fn new(
2528                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2529                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2530            ) -> Self {
2531                Self { id: topics.1 }
2532            }
2533            #[inline]
2534            fn check_signature(
2535                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2536            ) -> alloy_sol_types::Result<()> {
2537                if topics.0 != Self::SIGNATURE_HASH {
2538                    return Err(
2539                        alloy_sol_types::Error::invalid_event_signature_hash(
2540                            Self::SIGNATURE,
2541                            topics.0,
2542                            Self::SIGNATURE_HASH,
2543                        ),
2544                    );
2545                }
2546                Ok(())
2547            }
2548            #[inline]
2549            fn tokenize_body(&self) -> Self::DataToken<'_> {
2550                ()
2551            }
2552            #[inline]
2553            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2554                (Self::SIGNATURE_HASH.into(), self.id.clone())
2555            }
2556            #[inline]
2557            fn encode_topics_raw(
2558                &self,
2559                out: &mut [alloy_sol_types::abi::token::WordToken],
2560            ) -> alloy_sol_types::Result<()> {
2561                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2562                    return Err(alloy_sol_types::Error::Overrun);
2563                }
2564                out[0usize] = alloy_sol_types::abi::token::WordToken(
2565                    Self::SIGNATURE_HASH,
2566                );
2567                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2568                    32,
2569                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2570                Ok(())
2571            }
2572        }
2573        #[automatically_derived]
2574        impl alloy_sol_types::private::IntoLogData for Cancelled {
2575            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2576                From::from(self)
2577            }
2578            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2579                From::from(&self)
2580            }
2581        }
2582        #[automatically_derived]
2583        impl From<&Cancelled> for alloy_sol_types::private::LogData {
2584            #[inline]
2585            fn from(this: &Cancelled) -> alloy_sol_types::private::LogData {
2586                alloy_sol_types::SolEvent::encode_log_data(this)
2587            }
2588        }
2589    };
2590    #[derive(serde::Serialize, serde::Deserialize)]
2591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2592    /**Event with signature `MinDelayChange(uint256,uint256)` and selector `0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5`.
2593```solidity
2594event MinDelayChange(uint256 oldDuration, uint256 newDuration);
2595```*/
2596    #[allow(
2597        non_camel_case_types,
2598        non_snake_case,
2599        clippy::pub_underscore_fields,
2600        clippy::style
2601    )]
2602    #[derive(Clone)]
2603    pub struct MinDelayChange {
2604        #[allow(missing_docs)]
2605        pub oldDuration: alloy::sol_types::private::primitives::aliases::U256,
2606        #[allow(missing_docs)]
2607        pub newDuration: alloy::sol_types::private::primitives::aliases::U256,
2608    }
2609    #[allow(
2610        non_camel_case_types,
2611        non_snake_case,
2612        clippy::pub_underscore_fields,
2613        clippy::style
2614    )]
2615    const _: () = {
2616        use alloy::sol_types as alloy_sol_types;
2617        #[automatically_derived]
2618        impl alloy_sol_types::SolEvent for MinDelayChange {
2619            type DataTuple<'a> = (
2620                alloy::sol_types::sol_data::Uint<256>,
2621                alloy::sol_types::sol_data::Uint<256>,
2622            );
2623            type DataToken<'a> = <Self::DataTuple<
2624                'a,
2625            > as alloy_sol_types::SolType>::Token<'a>;
2626            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2627            const SIGNATURE: &'static str = "MinDelayChange(uint256,uint256)";
2628            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2629                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
2630                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
2631                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
2632            ]);
2633            const ANONYMOUS: bool = false;
2634            #[allow(unused_variables)]
2635            #[inline]
2636            fn new(
2637                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2638                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2639            ) -> Self {
2640                Self {
2641                    oldDuration: data.0,
2642                    newDuration: data.1,
2643                }
2644            }
2645            #[inline]
2646            fn check_signature(
2647                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2648            ) -> alloy_sol_types::Result<()> {
2649                if topics.0 != Self::SIGNATURE_HASH {
2650                    return Err(
2651                        alloy_sol_types::Error::invalid_event_signature_hash(
2652                            Self::SIGNATURE,
2653                            topics.0,
2654                            Self::SIGNATURE_HASH,
2655                        ),
2656                    );
2657                }
2658                Ok(())
2659            }
2660            #[inline]
2661            fn tokenize_body(&self) -> Self::DataToken<'_> {
2662                (
2663                    <alloy::sol_types::sol_data::Uint<
2664                        256,
2665                    > as alloy_sol_types::SolType>::tokenize(&self.oldDuration),
2666                    <alloy::sol_types::sol_data::Uint<
2667                        256,
2668                    > as alloy_sol_types::SolType>::tokenize(&self.newDuration),
2669                )
2670            }
2671            #[inline]
2672            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2673                (Self::SIGNATURE_HASH.into(),)
2674            }
2675            #[inline]
2676            fn encode_topics_raw(
2677                &self,
2678                out: &mut [alloy_sol_types::abi::token::WordToken],
2679            ) -> alloy_sol_types::Result<()> {
2680                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2681                    return Err(alloy_sol_types::Error::Overrun);
2682                }
2683                out[0usize] = alloy_sol_types::abi::token::WordToken(
2684                    Self::SIGNATURE_HASH,
2685                );
2686                Ok(())
2687            }
2688        }
2689        #[automatically_derived]
2690        impl alloy_sol_types::private::IntoLogData for MinDelayChange {
2691            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2692                From::from(self)
2693            }
2694            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2695                From::from(&self)
2696            }
2697        }
2698        #[automatically_derived]
2699        impl From<&MinDelayChange> for alloy_sol_types::private::LogData {
2700            #[inline]
2701            fn from(this: &MinDelayChange) -> alloy_sol_types::private::LogData {
2702                alloy_sol_types::SolEvent::encode_log_data(this)
2703            }
2704        }
2705    };
2706    #[derive(serde::Serialize, serde::Deserialize)]
2707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2708    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
2709```solidity
2710event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
2711```*/
2712    #[allow(
2713        non_camel_case_types,
2714        non_snake_case,
2715        clippy::pub_underscore_fields,
2716        clippy::style
2717    )]
2718    #[derive(Clone)]
2719    pub struct RoleAdminChanged {
2720        #[allow(missing_docs)]
2721        pub role: alloy::sol_types::private::FixedBytes<32>,
2722        #[allow(missing_docs)]
2723        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
2724        #[allow(missing_docs)]
2725        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
2726    }
2727    #[allow(
2728        non_camel_case_types,
2729        non_snake_case,
2730        clippy::pub_underscore_fields,
2731        clippy::style
2732    )]
2733    const _: () = {
2734        use alloy::sol_types as alloy_sol_types;
2735        #[automatically_derived]
2736        impl alloy_sol_types::SolEvent for RoleAdminChanged {
2737            type DataTuple<'a> = ();
2738            type DataToken<'a> = <Self::DataTuple<
2739                'a,
2740            > as alloy_sol_types::SolType>::Token<'a>;
2741            type TopicList = (
2742                alloy_sol_types::sol_data::FixedBytes<32>,
2743                alloy::sol_types::sol_data::FixedBytes<32>,
2744                alloy::sol_types::sol_data::FixedBytes<32>,
2745                alloy::sol_types::sol_data::FixedBytes<32>,
2746            );
2747            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
2748            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2749                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
2750                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
2751                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
2752            ]);
2753            const ANONYMOUS: bool = false;
2754            #[allow(unused_variables)]
2755            #[inline]
2756            fn new(
2757                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2758                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2759            ) -> Self {
2760                Self {
2761                    role: topics.1,
2762                    previousAdminRole: topics.2,
2763                    newAdminRole: topics.3,
2764                }
2765            }
2766            #[inline]
2767            fn check_signature(
2768                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2769            ) -> alloy_sol_types::Result<()> {
2770                if topics.0 != Self::SIGNATURE_HASH {
2771                    return Err(
2772                        alloy_sol_types::Error::invalid_event_signature_hash(
2773                            Self::SIGNATURE,
2774                            topics.0,
2775                            Self::SIGNATURE_HASH,
2776                        ),
2777                    );
2778                }
2779                Ok(())
2780            }
2781            #[inline]
2782            fn tokenize_body(&self) -> Self::DataToken<'_> {
2783                ()
2784            }
2785            #[inline]
2786            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2787                (
2788                    Self::SIGNATURE_HASH.into(),
2789                    self.role.clone(),
2790                    self.previousAdminRole.clone(),
2791                    self.newAdminRole.clone(),
2792                )
2793            }
2794            #[inline]
2795            fn encode_topics_raw(
2796                &self,
2797                out: &mut [alloy_sol_types::abi::token::WordToken],
2798            ) -> alloy_sol_types::Result<()> {
2799                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2800                    return Err(alloy_sol_types::Error::Overrun);
2801                }
2802                out[0usize] = alloy_sol_types::abi::token::WordToken(
2803                    Self::SIGNATURE_HASH,
2804                );
2805                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2806                    32,
2807                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2808                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
2809                    32,
2810                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
2811                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
2812                    32,
2813                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
2814                Ok(())
2815            }
2816        }
2817        #[automatically_derived]
2818        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
2819            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2820                From::from(self)
2821            }
2822            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2823                From::from(&self)
2824            }
2825        }
2826        #[automatically_derived]
2827        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
2828            #[inline]
2829            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
2830                alloy_sol_types::SolEvent::encode_log_data(this)
2831            }
2832        }
2833    };
2834    #[derive(serde::Serialize, serde::Deserialize)]
2835    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2836    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
2837```solidity
2838event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
2839```*/
2840    #[allow(
2841        non_camel_case_types,
2842        non_snake_case,
2843        clippy::pub_underscore_fields,
2844        clippy::style
2845    )]
2846    #[derive(Clone)]
2847    pub struct RoleGranted {
2848        #[allow(missing_docs)]
2849        pub role: alloy::sol_types::private::FixedBytes<32>,
2850        #[allow(missing_docs)]
2851        pub account: alloy::sol_types::private::Address,
2852        #[allow(missing_docs)]
2853        pub sender: alloy::sol_types::private::Address,
2854    }
2855    #[allow(
2856        non_camel_case_types,
2857        non_snake_case,
2858        clippy::pub_underscore_fields,
2859        clippy::style
2860    )]
2861    const _: () = {
2862        use alloy::sol_types as alloy_sol_types;
2863        #[automatically_derived]
2864        impl alloy_sol_types::SolEvent for RoleGranted {
2865            type DataTuple<'a> = ();
2866            type DataToken<'a> = <Self::DataTuple<
2867                'a,
2868            > as alloy_sol_types::SolType>::Token<'a>;
2869            type TopicList = (
2870                alloy_sol_types::sol_data::FixedBytes<32>,
2871                alloy::sol_types::sol_data::FixedBytes<32>,
2872                alloy::sol_types::sol_data::Address,
2873                alloy::sol_types::sol_data::Address,
2874            );
2875            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
2876            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2877                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
2878                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
2879                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
2880            ]);
2881            const ANONYMOUS: bool = false;
2882            #[allow(unused_variables)]
2883            #[inline]
2884            fn new(
2885                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2886                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2887            ) -> Self {
2888                Self {
2889                    role: topics.1,
2890                    account: topics.2,
2891                    sender: topics.3,
2892                }
2893            }
2894            #[inline]
2895            fn check_signature(
2896                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2897            ) -> alloy_sol_types::Result<()> {
2898                if topics.0 != Self::SIGNATURE_HASH {
2899                    return Err(
2900                        alloy_sol_types::Error::invalid_event_signature_hash(
2901                            Self::SIGNATURE,
2902                            topics.0,
2903                            Self::SIGNATURE_HASH,
2904                        ),
2905                    );
2906                }
2907                Ok(())
2908            }
2909            #[inline]
2910            fn tokenize_body(&self) -> Self::DataToken<'_> {
2911                ()
2912            }
2913            #[inline]
2914            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2915                (
2916                    Self::SIGNATURE_HASH.into(),
2917                    self.role.clone(),
2918                    self.account.clone(),
2919                    self.sender.clone(),
2920                )
2921            }
2922            #[inline]
2923            fn encode_topics_raw(
2924                &self,
2925                out: &mut [alloy_sol_types::abi::token::WordToken],
2926            ) -> alloy_sol_types::Result<()> {
2927                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2928                    return Err(alloy_sol_types::Error::Overrun);
2929                }
2930                out[0usize] = alloy_sol_types::abi::token::WordToken(
2931                    Self::SIGNATURE_HASH,
2932                );
2933                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2934                    32,
2935                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2936                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2937                    &self.account,
2938                );
2939                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2940                    &self.sender,
2941                );
2942                Ok(())
2943            }
2944        }
2945        #[automatically_derived]
2946        impl alloy_sol_types::private::IntoLogData for RoleGranted {
2947            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2948                From::from(self)
2949            }
2950            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2951                From::from(&self)
2952            }
2953        }
2954        #[automatically_derived]
2955        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
2956            #[inline]
2957            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
2958                alloy_sol_types::SolEvent::encode_log_data(this)
2959            }
2960        }
2961    };
2962    #[derive(serde::Serialize, serde::Deserialize)]
2963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2964    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
2965```solidity
2966event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
2967```*/
2968    #[allow(
2969        non_camel_case_types,
2970        non_snake_case,
2971        clippy::pub_underscore_fields,
2972        clippy::style
2973    )]
2974    #[derive(Clone)]
2975    pub struct RoleRevoked {
2976        #[allow(missing_docs)]
2977        pub role: alloy::sol_types::private::FixedBytes<32>,
2978        #[allow(missing_docs)]
2979        pub account: alloy::sol_types::private::Address,
2980        #[allow(missing_docs)]
2981        pub sender: alloy::sol_types::private::Address,
2982    }
2983    #[allow(
2984        non_camel_case_types,
2985        non_snake_case,
2986        clippy::pub_underscore_fields,
2987        clippy::style
2988    )]
2989    const _: () = {
2990        use alloy::sol_types as alloy_sol_types;
2991        #[automatically_derived]
2992        impl alloy_sol_types::SolEvent for RoleRevoked {
2993            type DataTuple<'a> = ();
2994            type DataToken<'a> = <Self::DataTuple<
2995                'a,
2996            > as alloy_sol_types::SolType>::Token<'a>;
2997            type TopicList = (
2998                alloy_sol_types::sol_data::FixedBytes<32>,
2999                alloy::sol_types::sol_data::FixedBytes<32>,
3000                alloy::sol_types::sol_data::Address,
3001                alloy::sol_types::sol_data::Address,
3002            );
3003            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
3004            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3005                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
3006                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
3007                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
3008            ]);
3009            const ANONYMOUS: bool = false;
3010            #[allow(unused_variables)]
3011            #[inline]
3012            fn new(
3013                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3014                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3015            ) -> Self {
3016                Self {
3017                    role: topics.1,
3018                    account: topics.2,
3019                    sender: topics.3,
3020                }
3021            }
3022            #[inline]
3023            fn check_signature(
3024                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3025            ) -> alloy_sol_types::Result<()> {
3026                if topics.0 != Self::SIGNATURE_HASH {
3027                    return Err(
3028                        alloy_sol_types::Error::invalid_event_signature_hash(
3029                            Self::SIGNATURE,
3030                            topics.0,
3031                            Self::SIGNATURE_HASH,
3032                        ),
3033                    );
3034                }
3035                Ok(())
3036            }
3037            #[inline]
3038            fn tokenize_body(&self) -> Self::DataToken<'_> {
3039                ()
3040            }
3041            #[inline]
3042            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3043                (
3044                    Self::SIGNATURE_HASH.into(),
3045                    self.role.clone(),
3046                    self.account.clone(),
3047                    self.sender.clone(),
3048                )
3049            }
3050            #[inline]
3051            fn encode_topics_raw(
3052                &self,
3053                out: &mut [alloy_sol_types::abi::token::WordToken],
3054            ) -> alloy_sol_types::Result<()> {
3055                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3056                    return Err(alloy_sol_types::Error::Overrun);
3057                }
3058                out[0usize] = alloy_sol_types::abi::token::WordToken(
3059                    Self::SIGNATURE_HASH,
3060                );
3061                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3062                    32,
3063                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3064                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3065                    &self.account,
3066                );
3067                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3068                    &self.sender,
3069                );
3070                Ok(())
3071            }
3072        }
3073        #[automatically_derived]
3074        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
3075            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3076                From::from(self)
3077            }
3078            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3079                From::from(&self)
3080            }
3081        }
3082        #[automatically_derived]
3083        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
3084            #[inline]
3085            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
3086                alloy_sol_types::SolEvent::encode_log_data(this)
3087            }
3088        }
3089    };
3090    /**Constructor`.
3091```solidity
3092constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
3093```*/
3094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3095    #[derive(Clone)]
3096    pub struct constructorCall {
3097        #[allow(missing_docs)]
3098        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
3099        #[allow(missing_docs)]
3100        pub proposers: alloy::sol_types::private::Vec<
3101            alloy::sol_types::private::Address,
3102        >,
3103        #[allow(missing_docs)]
3104        pub executors: alloy::sol_types::private::Vec<
3105            alloy::sol_types::private::Address,
3106        >,
3107        #[allow(missing_docs)]
3108        pub admin: alloy::sol_types::private::Address,
3109    }
3110    const _: () = {
3111        use alloy::sol_types as alloy_sol_types;
3112        {
3113            #[doc(hidden)]
3114            type UnderlyingSolTuple<'a> = (
3115                alloy::sol_types::sol_data::Uint<256>,
3116                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3117                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3118                alloy::sol_types::sol_data::Address,
3119            );
3120            #[doc(hidden)]
3121            type UnderlyingRustTuple<'a> = (
3122                alloy::sol_types::private::primitives::aliases::U256,
3123                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3124                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3125                alloy::sol_types::private::Address,
3126            );
3127            #[cfg(test)]
3128            #[allow(dead_code, unreachable_patterns)]
3129            fn _type_assertion(
3130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3131            ) {
3132                match _t {
3133                    alloy_sol_types::private::AssertTypeEq::<
3134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3135                    >(_) => {}
3136                }
3137            }
3138            #[automatically_derived]
3139            #[doc(hidden)]
3140            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3141                fn from(value: constructorCall) -> Self {
3142                    (value.minDelay, value.proposers, value.executors, value.admin)
3143                }
3144            }
3145            #[automatically_derived]
3146            #[doc(hidden)]
3147            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3149                    Self {
3150                        minDelay: tuple.0,
3151                        proposers: tuple.1,
3152                        executors: tuple.2,
3153                        admin: tuple.3,
3154                    }
3155                }
3156            }
3157        }
3158        #[automatically_derived]
3159        impl alloy_sol_types::SolConstructor for constructorCall {
3160            type Parameters<'a> = (
3161                alloy::sol_types::sol_data::Uint<256>,
3162                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3163                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3164                alloy::sol_types::sol_data::Address,
3165            );
3166            type Token<'a> = <Self::Parameters<
3167                'a,
3168            > as alloy_sol_types::SolType>::Token<'a>;
3169            #[inline]
3170            fn new<'a>(
3171                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3172            ) -> Self {
3173                tuple.into()
3174            }
3175            #[inline]
3176            fn tokenize(&self) -> Self::Token<'_> {
3177                (
3178                    <alloy::sol_types::sol_data::Uint<
3179                        256,
3180                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
3181                    <alloy::sol_types::sol_data::Array<
3182                        alloy::sol_types::sol_data::Address,
3183                    > as alloy_sol_types::SolType>::tokenize(&self.proposers),
3184                    <alloy::sol_types::sol_data::Array<
3185                        alloy::sol_types::sol_data::Address,
3186                    > as alloy_sol_types::SolType>::tokenize(&self.executors),
3187                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3188                        &self.admin,
3189                    ),
3190                )
3191            }
3192        }
3193    };
3194    #[derive(serde::Serialize, serde::Deserialize)]
3195    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3196    /**Function with signature `CANCELLER_ROLE()` and selector `0xb08e51c0`.
3197```solidity
3198function CANCELLER_ROLE() external view returns (bytes32);
3199```*/
3200    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3201    #[derive(Clone)]
3202    pub struct CANCELLER_ROLECall;
3203    #[derive(serde::Serialize, serde::Deserialize)]
3204    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3205    ///Container type for the return parameters of the [`CANCELLER_ROLE()`](CANCELLER_ROLECall) function.
3206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3207    #[derive(Clone)]
3208    pub struct CANCELLER_ROLEReturn {
3209        #[allow(missing_docs)]
3210        pub _0: alloy::sol_types::private::FixedBytes<32>,
3211    }
3212    #[allow(
3213        non_camel_case_types,
3214        non_snake_case,
3215        clippy::pub_underscore_fields,
3216        clippy::style
3217    )]
3218    const _: () = {
3219        use alloy::sol_types as alloy_sol_types;
3220        {
3221            #[doc(hidden)]
3222            type UnderlyingSolTuple<'a> = ();
3223            #[doc(hidden)]
3224            type UnderlyingRustTuple<'a> = ();
3225            #[cfg(test)]
3226            #[allow(dead_code, unreachable_patterns)]
3227            fn _type_assertion(
3228                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3229            ) {
3230                match _t {
3231                    alloy_sol_types::private::AssertTypeEq::<
3232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3233                    >(_) => {}
3234                }
3235            }
3236            #[automatically_derived]
3237            #[doc(hidden)]
3238            impl ::core::convert::From<CANCELLER_ROLECall> for UnderlyingRustTuple<'_> {
3239                fn from(value: CANCELLER_ROLECall) -> Self {
3240                    ()
3241                }
3242            }
3243            #[automatically_derived]
3244            #[doc(hidden)]
3245            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CANCELLER_ROLECall {
3246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3247                    Self
3248                }
3249            }
3250        }
3251        {
3252            #[doc(hidden)]
3253            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3254            #[doc(hidden)]
3255            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3256            #[cfg(test)]
3257            #[allow(dead_code, unreachable_patterns)]
3258            fn _type_assertion(
3259                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3260            ) {
3261                match _t {
3262                    alloy_sol_types::private::AssertTypeEq::<
3263                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3264                    >(_) => {}
3265                }
3266            }
3267            #[automatically_derived]
3268            #[doc(hidden)]
3269            impl ::core::convert::From<CANCELLER_ROLEReturn>
3270            for UnderlyingRustTuple<'_> {
3271                fn from(value: CANCELLER_ROLEReturn) -> Self {
3272                    (value._0,)
3273                }
3274            }
3275            #[automatically_derived]
3276            #[doc(hidden)]
3277            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3278            for CANCELLER_ROLEReturn {
3279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3280                    Self { _0: tuple.0 }
3281                }
3282            }
3283        }
3284        #[automatically_derived]
3285        impl alloy_sol_types::SolCall for CANCELLER_ROLECall {
3286            type Parameters<'a> = ();
3287            type Token<'a> = <Self::Parameters<
3288                'a,
3289            > as alloy_sol_types::SolType>::Token<'a>;
3290            type Return = alloy::sol_types::private::FixedBytes<32>;
3291            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3292            type ReturnToken<'a> = <Self::ReturnTuple<
3293                'a,
3294            > as alloy_sol_types::SolType>::Token<'a>;
3295            const SIGNATURE: &'static str = "CANCELLER_ROLE()";
3296            const SELECTOR: [u8; 4] = [176u8, 142u8, 81u8, 192u8];
3297            #[inline]
3298            fn new<'a>(
3299                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3300            ) -> Self {
3301                tuple.into()
3302            }
3303            #[inline]
3304            fn tokenize(&self) -> Self::Token<'_> {
3305                ()
3306            }
3307            #[inline]
3308            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3309                (
3310                    <alloy::sol_types::sol_data::FixedBytes<
3311                        32,
3312                    > as alloy_sol_types::SolType>::tokenize(ret),
3313                )
3314            }
3315            #[inline]
3316            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3317                <Self::ReturnTuple<
3318                    '_,
3319                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3320                    .map(|r| {
3321                        let r: CANCELLER_ROLEReturn = r.into();
3322                        r._0
3323                    })
3324            }
3325            #[inline]
3326            fn abi_decode_returns_validate(
3327                data: &[u8],
3328            ) -> alloy_sol_types::Result<Self::Return> {
3329                <Self::ReturnTuple<
3330                    '_,
3331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3332                    .map(|r| {
3333                        let r: CANCELLER_ROLEReturn = r.into();
3334                        r._0
3335                    })
3336            }
3337        }
3338    };
3339    #[derive(serde::Serialize, serde::Deserialize)]
3340    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3341    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
3342```solidity
3343function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
3344```*/
3345    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3346    #[derive(Clone)]
3347    pub struct DEFAULT_ADMIN_ROLECall;
3348    #[derive(serde::Serialize, serde::Deserialize)]
3349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3350    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
3351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3352    #[derive(Clone)]
3353    pub struct DEFAULT_ADMIN_ROLEReturn {
3354        #[allow(missing_docs)]
3355        pub _0: alloy::sol_types::private::FixedBytes<32>,
3356    }
3357    #[allow(
3358        non_camel_case_types,
3359        non_snake_case,
3360        clippy::pub_underscore_fields,
3361        clippy::style
3362    )]
3363    const _: () = {
3364        use alloy::sol_types as alloy_sol_types;
3365        {
3366            #[doc(hidden)]
3367            type UnderlyingSolTuple<'a> = ();
3368            #[doc(hidden)]
3369            type UnderlyingRustTuple<'a> = ();
3370            #[cfg(test)]
3371            #[allow(dead_code, unreachable_patterns)]
3372            fn _type_assertion(
3373                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3374            ) {
3375                match _t {
3376                    alloy_sol_types::private::AssertTypeEq::<
3377                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3378                    >(_) => {}
3379                }
3380            }
3381            #[automatically_derived]
3382            #[doc(hidden)]
3383            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
3384            for UnderlyingRustTuple<'_> {
3385                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
3386                    ()
3387                }
3388            }
3389            #[automatically_derived]
3390            #[doc(hidden)]
3391            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3392            for DEFAULT_ADMIN_ROLECall {
3393                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3394                    Self
3395                }
3396            }
3397        }
3398        {
3399            #[doc(hidden)]
3400            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3401            #[doc(hidden)]
3402            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3403            #[cfg(test)]
3404            #[allow(dead_code, unreachable_patterns)]
3405            fn _type_assertion(
3406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3407            ) {
3408                match _t {
3409                    alloy_sol_types::private::AssertTypeEq::<
3410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3411                    >(_) => {}
3412                }
3413            }
3414            #[automatically_derived]
3415            #[doc(hidden)]
3416            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
3417            for UnderlyingRustTuple<'_> {
3418                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
3419                    (value._0,)
3420                }
3421            }
3422            #[automatically_derived]
3423            #[doc(hidden)]
3424            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3425            for DEFAULT_ADMIN_ROLEReturn {
3426                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3427                    Self { _0: tuple.0 }
3428                }
3429            }
3430        }
3431        #[automatically_derived]
3432        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
3433            type Parameters<'a> = ();
3434            type Token<'a> = <Self::Parameters<
3435                'a,
3436            > as alloy_sol_types::SolType>::Token<'a>;
3437            type Return = alloy::sol_types::private::FixedBytes<32>;
3438            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3439            type ReturnToken<'a> = <Self::ReturnTuple<
3440                'a,
3441            > as alloy_sol_types::SolType>::Token<'a>;
3442            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
3443            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
3444            #[inline]
3445            fn new<'a>(
3446                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3447            ) -> Self {
3448                tuple.into()
3449            }
3450            #[inline]
3451            fn tokenize(&self) -> Self::Token<'_> {
3452                ()
3453            }
3454            #[inline]
3455            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3456                (
3457                    <alloy::sol_types::sol_data::FixedBytes<
3458                        32,
3459                    > as alloy_sol_types::SolType>::tokenize(ret),
3460                )
3461            }
3462            #[inline]
3463            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3464                <Self::ReturnTuple<
3465                    '_,
3466                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3467                    .map(|r| {
3468                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3469                        r._0
3470                    })
3471            }
3472            #[inline]
3473            fn abi_decode_returns_validate(
3474                data: &[u8],
3475            ) -> alloy_sol_types::Result<Self::Return> {
3476                <Self::ReturnTuple<
3477                    '_,
3478                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3479                    .map(|r| {
3480                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3481                        r._0
3482                    })
3483            }
3484        }
3485    };
3486    #[derive(serde::Serialize, serde::Deserialize)]
3487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3488    /**Function with signature `EXECUTOR_ROLE()` and selector `0x07bd0265`.
3489```solidity
3490function EXECUTOR_ROLE() external view returns (bytes32);
3491```*/
3492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3493    #[derive(Clone)]
3494    pub struct EXECUTOR_ROLECall;
3495    #[derive(serde::Serialize, serde::Deserialize)]
3496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3497    ///Container type for the return parameters of the [`EXECUTOR_ROLE()`](EXECUTOR_ROLECall) function.
3498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3499    #[derive(Clone)]
3500    pub struct EXECUTOR_ROLEReturn {
3501        #[allow(missing_docs)]
3502        pub _0: alloy::sol_types::private::FixedBytes<32>,
3503    }
3504    #[allow(
3505        non_camel_case_types,
3506        non_snake_case,
3507        clippy::pub_underscore_fields,
3508        clippy::style
3509    )]
3510    const _: () = {
3511        use alloy::sol_types as alloy_sol_types;
3512        {
3513            #[doc(hidden)]
3514            type UnderlyingSolTuple<'a> = ();
3515            #[doc(hidden)]
3516            type UnderlyingRustTuple<'a> = ();
3517            #[cfg(test)]
3518            #[allow(dead_code, unreachable_patterns)]
3519            fn _type_assertion(
3520                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3521            ) {
3522                match _t {
3523                    alloy_sol_types::private::AssertTypeEq::<
3524                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3525                    >(_) => {}
3526                }
3527            }
3528            #[automatically_derived]
3529            #[doc(hidden)]
3530            impl ::core::convert::From<EXECUTOR_ROLECall> for UnderlyingRustTuple<'_> {
3531                fn from(value: EXECUTOR_ROLECall) -> Self {
3532                    ()
3533                }
3534            }
3535            #[automatically_derived]
3536            #[doc(hidden)]
3537            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLECall {
3538                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3539                    Self
3540                }
3541            }
3542        }
3543        {
3544            #[doc(hidden)]
3545            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3546            #[doc(hidden)]
3547            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3548            #[cfg(test)]
3549            #[allow(dead_code, unreachable_patterns)]
3550            fn _type_assertion(
3551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3552            ) {
3553                match _t {
3554                    alloy_sol_types::private::AssertTypeEq::<
3555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3556                    >(_) => {}
3557                }
3558            }
3559            #[automatically_derived]
3560            #[doc(hidden)]
3561            impl ::core::convert::From<EXECUTOR_ROLEReturn> for UnderlyingRustTuple<'_> {
3562                fn from(value: EXECUTOR_ROLEReturn) -> Self {
3563                    (value._0,)
3564                }
3565            }
3566            #[automatically_derived]
3567            #[doc(hidden)]
3568            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLEReturn {
3569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3570                    Self { _0: tuple.0 }
3571                }
3572            }
3573        }
3574        #[automatically_derived]
3575        impl alloy_sol_types::SolCall for EXECUTOR_ROLECall {
3576            type Parameters<'a> = ();
3577            type Token<'a> = <Self::Parameters<
3578                'a,
3579            > as alloy_sol_types::SolType>::Token<'a>;
3580            type Return = alloy::sol_types::private::FixedBytes<32>;
3581            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3582            type ReturnToken<'a> = <Self::ReturnTuple<
3583                'a,
3584            > as alloy_sol_types::SolType>::Token<'a>;
3585            const SIGNATURE: &'static str = "EXECUTOR_ROLE()";
3586            const SELECTOR: [u8; 4] = [7u8, 189u8, 2u8, 101u8];
3587            #[inline]
3588            fn new<'a>(
3589                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3590            ) -> Self {
3591                tuple.into()
3592            }
3593            #[inline]
3594            fn tokenize(&self) -> Self::Token<'_> {
3595                ()
3596            }
3597            #[inline]
3598            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3599                (
3600                    <alloy::sol_types::sol_data::FixedBytes<
3601                        32,
3602                    > as alloy_sol_types::SolType>::tokenize(ret),
3603                )
3604            }
3605            #[inline]
3606            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3607                <Self::ReturnTuple<
3608                    '_,
3609                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3610                    .map(|r| {
3611                        let r: EXECUTOR_ROLEReturn = r.into();
3612                        r._0
3613                    })
3614            }
3615            #[inline]
3616            fn abi_decode_returns_validate(
3617                data: &[u8],
3618            ) -> alloy_sol_types::Result<Self::Return> {
3619                <Self::ReturnTuple<
3620                    '_,
3621                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3622                    .map(|r| {
3623                        let r: EXECUTOR_ROLEReturn = r.into();
3624                        r._0
3625                    })
3626            }
3627        }
3628    };
3629    #[derive(serde::Serialize, serde::Deserialize)]
3630    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3631    /**Function with signature `PROPOSER_ROLE()` and selector `0x8f61f4f5`.
3632```solidity
3633function PROPOSER_ROLE() external view returns (bytes32);
3634```*/
3635    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3636    #[derive(Clone)]
3637    pub struct PROPOSER_ROLECall;
3638    #[derive(serde::Serialize, serde::Deserialize)]
3639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3640    ///Container type for the return parameters of the [`PROPOSER_ROLE()`](PROPOSER_ROLECall) function.
3641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3642    #[derive(Clone)]
3643    pub struct PROPOSER_ROLEReturn {
3644        #[allow(missing_docs)]
3645        pub _0: alloy::sol_types::private::FixedBytes<32>,
3646    }
3647    #[allow(
3648        non_camel_case_types,
3649        non_snake_case,
3650        clippy::pub_underscore_fields,
3651        clippy::style
3652    )]
3653    const _: () = {
3654        use alloy::sol_types as alloy_sol_types;
3655        {
3656            #[doc(hidden)]
3657            type UnderlyingSolTuple<'a> = ();
3658            #[doc(hidden)]
3659            type UnderlyingRustTuple<'a> = ();
3660            #[cfg(test)]
3661            #[allow(dead_code, unreachable_patterns)]
3662            fn _type_assertion(
3663                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3664            ) {
3665                match _t {
3666                    alloy_sol_types::private::AssertTypeEq::<
3667                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3668                    >(_) => {}
3669                }
3670            }
3671            #[automatically_derived]
3672            #[doc(hidden)]
3673            impl ::core::convert::From<PROPOSER_ROLECall> for UnderlyingRustTuple<'_> {
3674                fn from(value: PROPOSER_ROLECall) -> Self {
3675                    ()
3676                }
3677            }
3678            #[automatically_derived]
3679            #[doc(hidden)]
3680            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLECall {
3681                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3682                    Self
3683                }
3684            }
3685        }
3686        {
3687            #[doc(hidden)]
3688            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3689            #[doc(hidden)]
3690            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3691            #[cfg(test)]
3692            #[allow(dead_code, unreachable_patterns)]
3693            fn _type_assertion(
3694                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3695            ) {
3696                match _t {
3697                    alloy_sol_types::private::AssertTypeEq::<
3698                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3699                    >(_) => {}
3700                }
3701            }
3702            #[automatically_derived]
3703            #[doc(hidden)]
3704            impl ::core::convert::From<PROPOSER_ROLEReturn> for UnderlyingRustTuple<'_> {
3705                fn from(value: PROPOSER_ROLEReturn) -> Self {
3706                    (value._0,)
3707                }
3708            }
3709            #[automatically_derived]
3710            #[doc(hidden)]
3711            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLEReturn {
3712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3713                    Self { _0: tuple.0 }
3714                }
3715            }
3716        }
3717        #[automatically_derived]
3718        impl alloy_sol_types::SolCall for PROPOSER_ROLECall {
3719            type Parameters<'a> = ();
3720            type Token<'a> = <Self::Parameters<
3721                'a,
3722            > as alloy_sol_types::SolType>::Token<'a>;
3723            type Return = alloy::sol_types::private::FixedBytes<32>;
3724            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3725            type ReturnToken<'a> = <Self::ReturnTuple<
3726                'a,
3727            > as alloy_sol_types::SolType>::Token<'a>;
3728            const SIGNATURE: &'static str = "PROPOSER_ROLE()";
3729            const SELECTOR: [u8; 4] = [143u8, 97u8, 244u8, 245u8];
3730            #[inline]
3731            fn new<'a>(
3732                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3733            ) -> Self {
3734                tuple.into()
3735            }
3736            #[inline]
3737            fn tokenize(&self) -> Self::Token<'_> {
3738                ()
3739            }
3740            #[inline]
3741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3742                (
3743                    <alloy::sol_types::sol_data::FixedBytes<
3744                        32,
3745                    > as alloy_sol_types::SolType>::tokenize(ret),
3746                )
3747            }
3748            #[inline]
3749            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3750                <Self::ReturnTuple<
3751                    '_,
3752                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3753                    .map(|r| {
3754                        let r: PROPOSER_ROLEReturn = r.into();
3755                        r._0
3756                    })
3757            }
3758            #[inline]
3759            fn abi_decode_returns_validate(
3760                data: &[u8],
3761            ) -> alloy_sol_types::Result<Self::Return> {
3762                <Self::ReturnTuple<
3763                    '_,
3764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3765                    .map(|r| {
3766                        let r: PROPOSER_ROLEReturn = r.into();
3767                        r._0
3768                    })
3769            }
3770        }
3771    };
3772    #[derive(serde::Serialize, serde::Deserialize)]
3773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3774    /**Function with signature `cancel(bytes32)` and selector `0xc4d252f5`.
3775```solidity
3776function cancel(bytes32 id) external;
3777```*/
3778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3779    #[derive(Clone)]
3780    pub struct cancelCall {
3781        #[allow(missing_docs)]
3782        pub id: alloy::sol_types::private::FixedBytes<32>,
3783    }
3784    ///Container type for the return parameters of the [`cancel(bytes32)`](cancelCall) function.
3785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3786    #[derive(Clone)]
3787    pub struct cancelReturn {}
3788    #[allow(
3789        non_camel_case_types,
3790        non_snake_case,
3791        clippy::pub_underscore_fields,
3792        clippy::style
3793    )]
3794    const _: () = {
3795        use alloy::sol_types as alloy_sol_types;
3796        {
3797            #[doc(hidden)]
3798            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3799            #[doc(hidden)]
3800            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3801            #[cfg(test)]
3802            #[allow(dead_code, unreachable_patterns)]
3803            fn _type_assertion(
3804                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3805            ) {
3806                match _t {
3807                    alloy_sol_types::private::AssertTypeEq::<
3808                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3809                    >(_) => {}
3810                }
3811            }
3812            #[automatically_derived]
3813            #[doc(hidden)]
3814            impl ::core::convert::From<cancelCall> for UnderlyingRustTuple<'_> {
3815                fn from(value: cancelCall) -> Self {
3816                    (value.id,)
3817                }
3818            }
3819            #[automatically_derived]
3820            #[doc(hidden)]
3821            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelCall {
3822                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3823                    Self { id: tuple.0 }
3824                }
3825            }
3826        }
3827        {
3828            #[doc(hidden)]
3829            type UnderlyingSolTuple<'a> = ();
3830            #[doc(hidden)]
3831            type UnderlyingRustTuple<'a> = ();
3832            #[cfg(test)]
3833            #[allow(dead_code, unreachable_patterns)]
3834            fn _type_assertion(
3835                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3836            ) {
3837                match _t {
3838                    alloy_sol_types::private::AssertTypeEq::<
3839                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3840                    >(_) => {}
3841                }
3842            }
3843            #[automatically_derived]
3844            #[doc(hidden)]
3845            impl ::core::convert::From<cancelReturn> for UnderlyingRustTuple<'_> {
3846                fn from(value: cancelReturn) -> Self {
3847                    ()
3848                }
3849            }
3850            #[automatically_derived]
3851            #[doc(hidden)]
3852            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelReturn {
3853                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3854                    Self {}
3855                }
3856            }
3857        }
3858        impl cancelReturn {
3859            fn _tokenize(
3860                &self,
3861            ) -> <cancelCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
3862                ()
3863            }
3864        }
3865        #[automatically_derived]
3866        impl alloy_sol_types::SolCall for cancelCall {
3867            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3868            type Token<'a> = <Self::Parameters<
3869                'a,
3870            > as alloy_sol_types::SolType>::Token<'a>;
3871            type Return = cancelReturn;
3872            type ReturnTuple<'a> = ();
3873            type ReturnToken<'a> = <Self::ReturnTuple<
3874                'a,
3875            > as alloy_sol_types::SolType>::Token<'a>;
3876            const SIGNATURE: &'static str = "cancel(bytes32)";
3877            const SELECTOR: [u8; 4] = [196u8, 210u8, 82u8, 245u8];
3878            #[inline]
3879            fn new<'a>(
3880                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3881            ) -> Self {
3882                tuple.into()
3883            }
3884            #[inline]
3885            fn tokenize(&self) -> Self::Token<'_> {
3886                (
3887                    <alloy::sol_types::sol_data::FixedBytes<
3888                        32,
3889                    > as alloy_sol_types::SolType>::tokenize(&self.id),
3890                )
3891            }
3892            #[inline]
3893            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3894                cancelReturn::_tokenize(ret)
3895            }
3896            #[inline]
3897            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3898                <Self::ReturnTuple<
3899                    '_,
3900                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3901                    .map(Into::into)
3902            }
3903            #[inline]
3904            fn abi_decode_returns_validate(
3905                data: &[u8],
3906            ) -> alloy_sol_types::Result<Self::Return> {
3907                <Self::ReturnTuple<
3908                    '_,
3909                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3910                    .map(Into::into)
3911            }
3912        }
3913    };
3914    #[derive(serde::Serialize, serde::Deserialize)]
3915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3916    /**Function with signature `execute(address,uint256,bytes,bytes32,bytes32)` and selector `0x134008d3`.
3917```solidity
3918function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
3919```*/
3920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3921    #[derive(Clone)]
3922    pub struct executeCall {
3923        #[allow(missing_docs)]
3924        pub target: alloy::sol_types::private::Address,
3925        #[allow(missing_docs)]
3926        pub value: alloy::sol_types::private::primitives::aliases::U256,
3927        #[allow(missing_docs)]
3928        pub payload: alloy::sol_types::private::Bytes,
3929        #[allow(missing_docs)]
3930        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
3931        #[allow(missing_docs)]
3932        pub salt: alloy::sol_types::private::FixedBytes<32>,
3933    }
3934    ///Container type for the return parameters of the [`execute(address,uint256,bytes,bytes32,bytes32)`](executeCall) function.
3935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3936    #[derive(Clone)]
3937    pub struct executeReturn {}
3938    #[allow(
3939        non_camel_case_types,
3940        non_snake_case,
3941        clippy::pub_underscore_fields,
3942        clippy::style
3943    )]
3944    const _: () = {
3945        use alloy::sol_types as alloy_sol_types;
3946        {
3947            #[doc(hidden)]
3948            type UnderlyingSolTuple<'a> = (
3949                alloy::sol_types::sol_data::Address,
3950                alloy::sol_types::sol_data::Uint<256>,
3951                alloy::sol_types::sol_data::Bytes,
3952                alloy::sol_types::sol_data::FixedBytes<32>,
3953                alloy::sol_types::sol_data::FixedBytes<32>,
3954            );
3955            #[doc(hidden)]
3956            type UnderlyingRustTuple<'a> = (
3957                alloy::sol_types::private::Address,
3958                alloy::sol_types::private::primitives::aliases::U256,
3959                alloy::sol_types::private::Bytes,
3960                alloy::sol_types::private::FixedBytes<32>,
3961                alloy::sol_types::private::FixedBytes<32>,
3962            );
3963            #[cfg(test)]
3964            #[allow(dead_code, unreachable_patterns)]
3965            fn _type_assertion(
3966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3967            ) {
3968                match _t {
3969                    alloy_sol_types::private::AssertTypeEq::<
3970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3971                    >(_) => {}
3972                }
3973            }
3974            #[automatically_derived]
3975            #[doc(hidden)]
3976            impl ::core::convert::From<executeCall> for UnderlyingRustTuple<'_> {
3977                fn from(value: executeCall) -> Self {
3978                    (
3979                        value.target,
3980                        value.value,
3981                        value.payload,
3982                        value.predecessor,
3983                        value.salt,
3984                    )
3985                }
3986            }
3987            #[automatically_derived]
3988            #[doc(hidden)]
3989            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeCall {
3990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3991                    Self {
3992                        target: tuple.0,
3993                        value: tuple.1,
3994                        payload: tuple.2,
3995                        predecessor: tuple.3,
3996                        salt: tuple.4,
3997                    }
3998                }
3999            }
4000        }
4001        {
4002            #[doc(hidden)]
4003            type UnderlyingSolTuple<'a> = ();
4004            #[doc(hidden)]
4005            type UnderlyingRustTuple<'a> = ();
4006            #[cfg(test)]
4007            #[allow(dead_code, unreachable_patterns)]
4008            fn _type_assertion(
4009                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4010            ) {
4011                match _t {
4012                    alloy_sol_types::private::AssertTypeEq::<
4013                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4014                    >(_) => {}
4015                }
4016            }
4017            #[automatically_derived]
4018            #[doc(hidden)]
4019            impl ::core::convert::From<executeReturn> for UnderlyingRustTuple<'_> {
4020                fn from(value: executeReturn) -> Self {
4021                    ()
4022                }
4023            }
4024            #[automatically_derived]
4025            #[doc(hidden)]
4026            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeReturn {
4027                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4028                    Self {}
4029                }
4030            }
4031        }
4032        impl executeReturn {
4033            fn _tokenize(
4034                &self,
4035            ) -> <executeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4036                ()
4037            }
4038        }
4039        #[automatically_derived]
4040        impl alloy_sol_types::SolCall for executeCall {
4041            type Parameters<'a> = (
4042                alloy::sol_types::sol_data::Address,
4043                alloy::sol_types::sol_data::Uint<256>,
4044                alloy::sol_types::sol_data::Bytes,
4045                alloy::sol_types::sol_data::FixedBytes<32>,
4046                alloy::sol_types::sol_data::FixedBytes<32>,
4047            );
4048            type Token<'a> = <Self::Parameters<
4049                'a,
4050            > as alloy_sol_types::SolType>::Token<'a>;
4051            type Return = executeReturn;
4052            type ReturnTuple<'a> = ();
4053            type ReturnToken<'a> = <Self::ReturnTuple<
4054                'a,
4055            > as alloy_sol_types::SolType>::Token<'a>;
4056            const SIGNATURE: &'static str = "execute(address,uint256,bytes,bytes32,bytes32)";
4057            const SELECTOR: [u8; 4] = [19u8, 64u8, 8u8, 211u8];
4058            #[inline]
4059            fn new<'a>(
4060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4061            ) -> Self {
4062                tuple.into()
4063            }
4064            #[inline]
4065            fn tokenize(&self) -> Self::Token<'_> {
4066                (
4067                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4068                        &self.target,
4069                    ),
4070                    <alloy::sol_types::sol_data::Uint<
4071                        256,
4072                    > as alloy_sol_types::SolType>::tokenize(&self.value),
4073                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4074                        &self.payload,
4075                    ),
4076                    <alloy::sol_types::sol_data::FixedBytes<
4077                        32,
4078                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4079                    <alloy::sol_types::sol_data::FixedBytes<
4080                        32,
4081                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4082                )
4083            }
4084            #[inline]
4085            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4086                executeReturn::_tokenize(ret)
4087            }
4088            #[inline]
4089            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4090                <Self::ReturnTuple<
4091                    '_,
4092                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4093                    .map(Into::into)
4094            }
4095            #[inline]
4096            fn abi_decode_returns_validate(
4097                data: &[u8],
4098            ) -> alloy_sol_types::Result<Self::Return> {
4099                <Self::ReturnTuple<
4100                    '_,
4101                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4102                    .map(Into::into)
4103            }
4104        }
4105    };
4106    #[derive(serde::Serialize, serde::Deserialize)]
4107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4108    /**Function with signature `executeBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xe38335e5`.
4109```solidity
4110function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
4111```*/
4112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4113    #[derive(Clone)]
4114    pub struct executeBatchCall {
4115        #[allow(missing_docs)]
4116        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4117        #[allow(missing_docs)]
4118        pub values: alloy::sol_types::private::Vec<
4119            alloy::sol_types::private::primitives::aliases::U256,
4120        >,
4121        #[allow(missing_docs)]
4122        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4123        #[allow(missing_docs)]
4124        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
4125        #[allow(missing_docs)]
4126        pub salt: alloy::sol_types::private::FixedBytes<32>,
4127    }
4128    ///Container type for the return parameters of the [`executeBatch(address[],uint256[],bytes[],bytes32,bytes32)`](executeBatchCall) function.
4129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4130    #[derive(Clone)]
4131    pub struct executeBatchReturn {}
4132    #[allow(
4133        non_camel_case_types,
4134        non_snake_case,
4135        clippy::pub_underscore_fields,
4136        clippy::style
4137    )]
4138    const _: () = {
4139        use alloy::sol_types as alloy_sol_types;
4140        {
4141            #[doc(hidden)]
4142            type UnderlyingSolTuple<'a> = (
4143                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4144                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4145                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4146                alloy::sol_types::sol_data::FixedBytes<32>,
4147                alloy::sol_types::sol_data::FixedBytes<32>,
4148            );
4149            #[doc(hidden)]
4150            type UnderlyingRustTuple<'a> = (
4151                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4152                alloy::sol_types::private::Vec<
4153                    alloy::sol_types::private::primitives::aliases::U256,
4154                >,
4155                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4156                alloy::sol_types::private::FixedBytes<32>,
4157                alloy::sol_types::private::FixedBytes<32>,
4158            );
4159            #[cfg(test)]
4160            #[allow(dead_code, unreachable_patterns)]
4161            fn _type_assertion(
4162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4163            ) {
4164                match _t {
4165                    alloy_sol_types::private::AssertTypeEq::<
4166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4167                    >(_) => {}
4168                }
4169            }
4170            #[automatically_derived]
4171            #[doc(hidden)]
4172            impl ::core::convert::From<executeBatchCall> for UnderlyingRustTuple<'_> {
4173                fn from(value: executeBatchCall) -> Self {
4174                    (
4175                        value.targets,
4176                        value.values,
4177                        value.payloads,
4178                        value.predecessor,
4179                        value.salt,
4180                    )
4181                }
4182            }
4183            #[automatically_derived]
4184            #[doc(hidden)]
4185            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchCall {
4186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4187                    Self {
4188                        targets: tuple.0,
4189                        values: tuple.1,
4190                        payloads: tuple.2,
4191                        predecessor: tuple.3,
4192                        salt: tuple.4,
4193                    }
4194                }
4195            }
4196        }
4197        {
4198            #[doc(hidden)]
4199            type UnderlyingSolTuple<'a> = ();
4200            #[doc(hidden)]
4201            type UnderlyingRustTuple<'a> = ();
4202            #[cfg(test)]
4203            #[allow(dead_code, unreachable_patterns)]
4204            fn _type_assertion(
4205                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4206            ) {
4207                match _t {
4208                    alloy_sol_types::private::AssertTypeEq::<
4209                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4210                    >(_) => {}
4211                }
4212            }
4213            #[automatically_derived]
4214            #[doc(hidden)]
4215            impl ::core::convert::From<executeBatchReturn> for UnderlyingRustTuple<'_> {
4216                fn from(value: executeBatchReturn) -> Self {
4217                    ()
4218                }
4219            }
4220            #[automatically_derived]
4221            #[doc(hidden)]
4222            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchReturn {
4223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4224                    Self {}
4225                }
4226            }
4227        }
4228        impl executeBatchReturn {
4229            fn _tokenize(
4230                &self,
4231            ) -> <executeBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4232                ()
4233            }
4234        }
4235        #[automatically_derived]
4236        impl alloy_sol_types::SolCall for executeBatchCall {
4237            type Parameters<'a> = (
4238                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4239                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4240                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4241                alloy::sol_types::sol_data::FixedBytes<32>,
4242                alloy::sol_types::sol_data::FixedBytes<32>,
4243            );
4244            type Token<'a> = <Self::Parameters<
4245                'a,
4246            > as alloy_sol_types::SolType>::Token<'a>;
4247            type Return = executeBatchReturn;
4248            type ReturnTuple<'a> = ();
4249            type ReturnToken<'a> = <Self::ReturnTuple<
4250                'a,
4251            > as alloy_sol_types::SolType>::Token<'a>;
4252            const SIGNATURE: &'static str = "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)";
4253            const SELECTOR: [u8; 4] = [227u8, 131u8, 53u8, 229u8];
4254            #[inline]
4255            fn new<'a>(
4256                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4257            ) -> Self {
4258                tuple.into()
4259            }
4260            #[inline]
4261            fn tokenize(&self) -> Self::Token<'_> {
4262                (
4263                    <alloy::sol_types::sol_data::Array<
4264                        alloy::sol_types::sol_data::Address,
4265                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
4266                    <alloy::sol_types::sol_data::Array<
4267                        alloy::sol_types::sol_data::Uint<256>,
4268                    > as alloy_sol_types::SolType>::tokenize(&self.values),
4269                    <alloy::sol_types::sol_data::Array<
4270                        alloy::sol_types::sol_data::Bytes,
4271                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
4272                    <alloy::sol_types::sol_data::FixedBytes<
4273                        32,
4274                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4275                    <alloy::sol_types::sol_data::FixedBytes<
4276                        32,
4277                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4278                )
4279            }
4280            #[inline]
4281            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4282                executeBatchReturn::_tokenize(ret)
4283            }
4284            #[inline]
4285            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4286                <Self::ReturnTuple<
4287                    '_,
4288                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4289                    .map(Into::into)
4290            }
4291            #[inline]
4292            fn abi_decode_returns_validate(
4293                data: &[u8],
4294            ) -> alloy_sol_types::Result<Self::Return> {
4295                <Self::ReturnTuple<
4296                    '_,
4297                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4298                    .map(Into::into)
4299            }
4300        }
4301    };
4302    #[derive(serde::Serialize, serde::Deserialize)]
4303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4304    /**Function with signature `getMinDelay()` and selector `0xf27a0c92`.
4305```solidity
4306function getMinDelay() external view returns (uint256);
4307```*/
4308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4309    #[derive(Clone)]
4310    pub struct getMinDelayCall;
4311    #[derive(serde::Serialize, serde::Deserialize)]
4312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4313    ///Container type for the return parameters of the [`getMinDelay()`](getMinDelayCall) function.
4314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4315    #[derive(Clone)]
4316    pub struct getMinDelayReturn {
4317        #[allow(missing_docs)]
4318        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4319    }
4320    #[allow(
4321        non_camel_case_types,
4322        non_snake_case,
4323        clippy::pub_underscore_fields,
4324        clippy::style
4325    )]
4326    const _: () = {
4327        use alloy::sol_types as alloy_sol_types;
4328        {
4329            #[doc(hidden)]
4330            type UnderlyingSolTuple<'a> = ();
4331            #[doc(hidden)]
4332            type UnderlyingRustTuple<'a> = ();
4333            #[cfg(test)]
4334            #[allow(dead_code, unreachable_patterns)]
4335            fn _type_assertion(
4336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4337            ) {
4338                match _t {
4339                    alloy_sol_types::private::AssertTypeEq::<
4340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4341                    >(_) => {}
4342                }
4343            }
4344            #[automatically_derived]
4345            #[doc(hidden)]
4346            impl ::core::convert::From<getMinDelayCall> for UnderlyingRustTuple<'_> {
4347                fn from(value: getMinDelayCall) -> Self {
4348                    ()
4349                }
4350            }
4351            #[automatically_derived]
4352            #[doc(hidden)]
4353            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayCall {
4354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4355                    Self
4356                }
4357            }
4358        }
4359        {
4360            #[doc(hidden)]
4361            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4362            #[doc(hidden)]
4363            type UnderlyingRustTuple<'a> = (
4364                alloy::sol_types::private::primitives::aliases::U256,
4365            );
4366            #[cfg(test)]
4367            #[allow(dead_code, unreachable_patterns)]
4368            fn _type_assertion(
4369                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4370            ) {
4371                match _t {
4372                    alloy_sol_types::private::AssertTypeEq::<
4373                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4374                    >(_) => {}
4375                }
4376            }
4377            #[automatically_derived]
4378            #[doc(hidden)]
4379            impl ::core::convert::From<getMinDelayReturn> for UnderlyingRustTuple<'_> {
4380                fn from(value: getMinDelayReturn) -> Self {
4381                    (value._0,)
4382                }
4383            }
4384            #[automatically_derived]
4385            #[doc(hidden)]
4386            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayReturn {
4387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4388                    Self { _0: tuple.0 }
4389                }
4390            }
4391        }
4392        #[automatically_derived]
4393        impl alloy_sol_types::SolCall for getMinDelayCall {
4394            type Parameters<'a> = ();
4395            type Token<'a> = <Self::Parameters<
4396                'a,
4397            > as alloy_sol_types::SolType>::Token<'a>;
4398            type Return = alloy::sol_types::private::primitives::aliases::U256;
4399            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4400            type ReturnToken<'a> = <Self::ReturnTuple<
4401                'a,
4402            > as alloy_sol_types::SolType>::Token<'a>;
4403            const SIGNATURE: &'static str = "getMinDelay()";
4404            const SELECTOR: [u8; 4] = [242u8, 122u8, 12u8, 146u8];
4405            #[inline]
4406            fn new<'a>(
4407                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4408            ) -> Self {
4409                tuple.into()
4410            }
4411            #[inline]
4412            fn tokenize(&self) -> Self::Token<'_> {
4413                ()
4414            }
4415            #[inline]
4416            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4417                (
4418                    <alloy::sol_types::sol_data::Uint<
4419                        256,
4420                    > as alloy_sol_types::SolType>::tokenize(ret),
4421                )
4422            }
4423            #[inline]
4424            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4425                <Self::ReturnTuple<
4426                    '_,
4427                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4428                    .map(|r| {
4429                        let r: getMinDelayReturn = r.into();
4430                        r._0
4431                    })
4432            }
4433            #[inline]
4434            fn abi_decode_returns_validate(
4435                data: &[u8],
4436            ) -> alloy_sol_types::Result<Self::Return> {
4437                <Self::ReturnTuple<
4438                    '_,
4439                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4440                    .map(|r| {
4441                        let r: getMinDelayReturn = r.into();
4442                        r._0
4443                    })
4444            }
4445        }
4446    };
4447    #[derive(serde::Serialize, serde::Deserialize)]
4448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4449    /**Function with signature `getOperationState(bytes32)` and selector `0x7958004c`.
4450```solidity
4451function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
4452```*/
4453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4454    #[derive(Clone)]
4455    pub struct getOperationStateCall {
4456        #[allow(missing_docs)]
4457        pub id: alloy::sol_types::private::FixedBytes<32>,
4458    }
4459    #[derive(serde::Serialize, serde::Deserialize)]
4460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4461    ///Container type for the return parameters of the [`getOperationState(bytes32)`](getOperationStateCall) function.
4462    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4463    #[derive(Clone)]
4464    pub struct getOperationStateReturn {
4465        #[allow(missing_docs)]
4466        pub _0: <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4467    }
4468    #[allow(
4469        non_camel_case_types,
4470        non_snake_case,
4471        clippy::pub_underscore_fields,
4472        clippy::style
4473    )]
4474    const _: () = {
4475        use alloy::sol_types as alloy_sol_types;
4476        {
4477            #[doc(hidden)]
4478            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4479            #[doc(hidden)]
4480            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4481            #[cfg(test)]
4482            #[allow(dead_code, unreachable_patterns)]
4483            fn _type_assertion(
4484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4485            ) {
4486                match _t {
4487                    alloy_sol_types::private::AssertTypeEq::<
4488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4489                    >(_) => {}
4490                }
4491            }
4492            #[automatically_derived]
4493            #[doc(hidden)]
4494            impl ::core::convert::From<getOperationStateCall>
4495            for UnderlyingRustTuple<'_> {
4496                fn from(value: getOperationStateCall) -> Self {
4497                    (value.id,)
4498                }
4499            }
4500            #[automatically_derived]
4501            #[doc(hidden)]
4502            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4503            for getOperationStateCall {
4504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4505                    Self { id: tuple.0 }
4506                }
4507            }
4508        }
4509        {
4510            #[doc(hidden)]
4511            type UnderlyingSolTuple<'a> = (TimelockController::OperationState,);
4512            #[doc(hidden)]
4513            type UnderlyingRustTuple<'a> = (
4514                <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4515            );
4516            #[cfg(test)]
4517            #[allow(dead_code, unreachable_patterns)]
4518            fn _type_assertion(
4519                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4520            ) {
4521                match _t {
4522                    alloy_sol_types::private::AssertTypeEq::<
4523                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4524                    >(_) => {}
4525                }
4526            }
4527            #[automatically_derived]
4528            #[doc(hidden)]
4529            impl ::core::convert::From<getOperationStateReturn>
4530            for UnderlyingRustTuple<'_> {
4531                fn from(value: getOperationStateReturn) -> Self {
4532                    (value._0,)
4533                }
4534            }
4535            #[automatically_derived]
4536            #[doc(hidden)]
4537            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4538            for getOperationStateReturn {
4539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4540                    Self { _0: tuple.0 }
4541                }
4542            }
4543        }
4544        #[automatically_derived]
4545        impl alloy_sol_types::SolCall for getOperationStateCall {
4546            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4547            type Token<'a> = <Self::Parameters<
4548                'a,
4549            > as alloy_sol_types::SolType>::Token<'a>;
4550            type Return = <TimelockController::OperationState as alloy::sol_types::SolType>::RustType;
4551            type ReturnTuple<'a> = (TimelockController::OperationState,);
4552            type ReturnToken<'a> = <Self::ReturnTuple<
4553                'a,
4554            > as alloy_sol_types::SolType>::Token<'a>;
4555            const SIGNATURE: &'static str = "getOperationState(bytes32)";
4556            const SELECTOR: [u8; 4] = [121u8, 88u8, 0u8, 76u8];
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::FixedBytes<
4567                        32,
4568                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4569                )
4570            }
4571            #[inline]
4572            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4573                (
4574                    <TimelockController::OperationState as alloy_sol_types::SolType>::tokenize(
4575                        ret,
4576                    ),
4577                )
4578            }
4579            #[inline]
4580            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4581                <Self::ReturnTuple<
4582                    '_,
4583                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4584                    .map(|r| {
4585                        let r: getOperationStateReturn = r.into();
4586                        r._0
4587                    })
4588            }
4589            #[inline]
4590            fn abi_decode_returns_validate(
4591                data: &[u8],
4592            ) -> alloy_sol_types::Result<Self::Return> {
4593                <Self::ReturnTuple<
4594                    '_,
4595                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4596                    .map(|r| {
4597                        let r: getOperationStateReturn = r.into();
4598                        r._0
4599                    })
4600            }
4601        }
4602    };
4603    #[derive(serde::Serialize, serde::Deserialize)]
4604    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4605    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
4606```solidity
4607function getRoleAdmin(bytes32 role) external view returns (bytes32);
4608```*/
4609    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4610    #[derive(Clone)]
4611    pub struct getRoleAdminCall {
4612        #[allow(missing_docs)]
4613        pub role: alloy::sol_types::private::FixedBytes<32>,
4614    }
4615    #[derive(serde::Serialize, serde::Deserialize)]
4616    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4617    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
4618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4619    #[derive(Clone)]
4620    pub struct getRoleAdminReturn {
4621        #[allow(missing_docs)]
4622        pub _0: alloy::sol_types::private::FixedBytes<32>,
4623    }
4624    #[allow(
4625        non_camel_case_types,
4626        non_snake_case,
4627        clippy::pub_underscore_fields,
4628        clippy::style
4629    )]
4630    const _: () = {
4631        use alloy::sol_types as alloy_sol_types;
4632        {
4633            #[doc(hidden)]
4634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4635            #[doc(hidden)]
4636            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4637            #[cfg(test)]
4638            #[allow(dead_code, unreachable_patterns)]
4639            fn _type_assertion(
4640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4641            ) {
4642                match _t {
4643                    alloy_sol_types::private::AssertTypeEq::<
4644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4645                    >(_) => {}
4646                }
4647            }
4648            #[automatically_derived]
4649            #[doc(hidden)]
4650            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
4651                fn from(value: getRoleAdminCall) -> Self {
4652                    (value.role,)
4653                }
4654            }
4655            #[automatically_derived]
4656            #[doc(hidden)]
4657            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
4658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4659                    Self { role: tuple.0 }
4660                }
4661            }
4662        }
4663        {
4664            #[doc(hidden)]
4665            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4666            #[doc(hidden)]
4667            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4668            #[cfg(test)]
4669            #[allow(dead_code, unreachable_patterns)]
4670            fn _type_assertion(
4671                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4672            ) {
4673                match _t {
4674                    alloy_sol_types::private::AssertTypeEq::<
4675                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4676                    >(_) => {}
4677                }
4678            }
4679            #[automatically_derived]
4680            #[doc(hidden)]
4681            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
4682                fn from(value: getRoleAdminReturn) -> Self {
4683                    (value._0,)
4684                }
4685            }
4686            #[automatically_derived]
4687            #[doc(hidden)]
4688            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
4689                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4690                    Self { _0: tuple.0 }
4691                }
4692            }
4693        }
4694        #[automatically_derived]
4695        impl alloy_sol_types::SolCall for getRoleAdminCall {
4696            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4697            type Token<'a> = <Self::Parameters<
4698                'a,
4699            > as alloy_sol_types::SolType>::Token<'a>;
4700            type Return = alloy::sol_types::private::FixedBytes<32>;
4701            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4702            type ReturnToken<'a> = <Self::ReturnTuple<
4703                'a,
4704            > as alloy_sol_types::SolType>::Token<'a>;
4705            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
4706            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
4707            #[inline]
4708            fn new<'a>(
4709                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4710            ) -> Self {
4711                tuple.into()
4712            }
4713            #[inline]
4714            fn tokenize(&self) -> Self::Token<'_> {
4715                (
4716                    <alloy::sol_types::sol_data::FixedBytes<
4717                        32,
4718                    > as alloy_sol_types::SolType>::tokenize(&self.role),
4719                )
4720            }
4721            #[inline]
4722            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4723                (
4724                    <alloy::sol_types::sol_data::FixedBytes<
4725                        32,
4726                    > as alloy_sol_types::SolType>::tokenize(ret),
4727                )
4728            }
4729            #[inline]
4730            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4731                <Self::ReturnTuple<
4732                    '_,
4733                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4734                    .map(|r| {
4735                        let r: getRoleAdminReturn = r.into();
4736                        r._0
4737                    })
4738            }
4739            #[inline]
4740            fn abi_decode_returns_validate(
4741                data: &[u8],
4742            ) -> alloy_sol_types::Result<Self::Return> {
4743                <Self::ReturnTuple<
4744                    '_,
4745                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4746                    .map(|r| {
4747                        let r: getRoleAdminReturn = r.into();
4748                        r._0
4749                    })
4750            }
4751        }
4752    };
4753    #[derive(serde::Serialize, serde::Deserialize)]
4754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4755    /**Function with signature `getTimestamp(bytes32)` and selector `0xd45c4435`.
4756```solidity
4757function getTimestamp(bytes32 id) external view returns (uint256);
4758```*/
4759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4760    #[derive(Clone)]
4761    pub struct getTimestampCall {
4762        #[allow(missing_docs)]
4763        pub id: alloy::sol_types::private::FixedBytes<32>,
4764    }
4765    #[derive(serde::Serialize, serde::Deserialize)]
4766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4767    ///Container type for the return parameters of the [`getTimestamp(bytes32)`](getTimestampCall) function.
4768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4769    #[derive(Clone)]
4770    pub struct getTimestampReturn {
4771        #[allow(missing_docs)]
4772        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4773    }
4774    #[allow(
4775        non_camel_case_types,
4776        non_snake_case,
4777        clippy::pub_underscore_fields,
4778        clippy::style
4779    )]
4780    const _: () = {
4781        use alloy::sol_types as alloy_sol_types;
4782        {
4783            #[doc(hidden)]
4784            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4785            #[doc(hidden)]
4786            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4787            #[cfg(test)]
4788            #[allow(dead_code, unreachable_patterns)]
4789            fn _type_assertion(
4790                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4791            ) {
4792                match _t {
4793                    alloy_sol_types::private::AssertTypeEq::<
4794                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4795                    >(_) => {}
4796                }
4797            }
4798            #[automatically_derived]
4799            #[doc(hidden)]
4800            impl ::core::convert::From<getTimestampCall> for UnderlyingRustTuple<'_> {
4801                fn from(value: getTimestampCall) -> Self {
4802                    (value.id,)
4803                }
4804            }
4805            #[automatically_derived]
4806            #[doc(hidden)]
4807            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampCall {
4808                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4809                    Self { id: tuple.0 }
4810                }
4811            }
4812        }
4813        {
4814            #[doc(hidden)]
4815            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4816            #[doc(hidden)]
4817            type UnderlyingRustTuple<'a> = (
4818                alloy::sol_types::private::primitives::aliases::U256,
4819            );
4820            #[cfg(test)]
4821            #[allow(dead_code, unreachable_patterns)]
4822            fn _type_assertion(
4823                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4824            ) {
4825                match _t {
4826                    alloy_sol_types::private::AssertTypeEq::<
4827                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4828                    >(_) => {}
4829                }
4830            }
4831            #[automatically_derived]
4832            #[doc(hidden)]
4833            impl ::core::convert::From<getTimestampReturn> for UnderlyingRustTuple<'_> {
4834                fn from(value: getTimestampReturn) -> Self {
4835                    (value._0,)
4836                }
4837            }
4838            #[automatically_derived]
4839            #[doc(hidden)]
4840            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampReturn {
4841                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4842                    Self { _0: tuple.0 }
4843                }
4844            }
4845        }
4846        #[automatically_derived]
4847        impl alloy_sol_types::SolCall for getTimestampCall {
4848            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4849            type Token<'a> = <Self::Parameters<
4850                'a,
4851            > as alloy_sol_types::SolType>::Token<'a>;
4852            type Return = alloy::sol_types::private::primitives::aliases::U256;
4853            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4854            type ReturnToken<'a> = <Self::ReturnTuple<
4855                'a,
4856            > as alloy_sol_types::SolType>::Token<'a>;
4857            const SIGNATURE: &'static str = "getTimestamp(bytes32)";
4858            const SELECTOR: [u8; 4] = [212u8, 92u8, 68u8, 53u8];
4859            #[inline]
4860            fn new<'a>(
4861                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4862            ) -> Self {
4863                tuple.into()
4864            }
4865            #[inline]
4866            fn tokenize(&self) -> Self::Token<'_> {
4867                (
4868                    <alloy::sol_types::sol_data::FixedBytes<
4869                        32,
4870                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4871                )
4872            }
4873            #[inline]
4874            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4875                (
4876                    <alloy::sol_types::sol_data::Uint<
4877                        256,
4878                    > as alloy_sol_types::SolType>::tokenize(ret),
4879                )
4880            }
4881            #[inline]
4882            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4883                <Self::ReturnTuple<
4884                    '_,
4885                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4886                    .map(|r| {
4887                        let r: getTimestampReturn = r.into();
4888                        r._0
4889                    })
4890            }
4891            #[inline]
4892            fn abi_decode_returns_validate(
4893                data: &[u8],
4894            ) -> alloy_sol_types::Result<Self::Return> {
4895                <Self::ReturnTuple<
4896                    '_,
4897                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4898                    .map(|r| {
4899                        let r: getTimestampReturn = r.into();
4900                        r._0
4901                    })
4902            }
4903        }
4904    };
4905    #[derive(serde::Serialize, serde::Deserialize)]
4906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4907    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
4908```solidity
4909function grantRole(bytes32 role, address account) external;
4910```*/
4911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4912    #[derive(Clone)]
4913    pub struct grantRoleCall {
4914        #[allow(missing_docs)]
4915        pub role: alloy::sol_types::private::FixedBytes<32>,
4916        #[allow(missing_docs)]
4917        pub account: alloy::sol_types::private::Address,
4918    }
4919    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
4920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4921    #[derive(Clone)]
4922    pub struct grantRoleReturn {}
4923    #[allow(
4924        non_camel_case_types,
4925        non_snake_case,
4926        clippy::pub_underscore_fields,
4927        clippy::style
4928    )]
4929    const _: () = {
4930        use alloy::sol_types as alloy_sol_types;
4931        {
4932            #[doc(hidden)]
4933            type UnderlyingSolTuple<'a> = (
4934                alloy::sol_types::sol_data::FixedBytes<32>,
4935                alloy::sol_types::sol_data::Address,
4936            );
4937            #[doc(hidden)]
4938            type UnderlyingRustTuple<'a> = (
4939                alloy::sol_types::private::FixedBytes<32>,
4940                alloy::sol_types::private::Address,
4941            );
4942            #[cfg(test)]
4943            #[allow(dead_code, unreachable_patterns)]
4944            fn _type_assertion(
4945                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4946            ) {
4947                match _t {
4948                    alloy_sol_types::private::AssertTypeEq::<
4949                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4950                    >(_) => {}
4951                }
4952            }
4953            #[automatically_derived]
4954            #[doc(hidden)]
4955            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
4956                fn from(value: grantRoleCall) -> Self {
4957                    (value.role, value.account)
4958                }
4959            }
4960            #[automatically_derived]
4961            #[doc(hidden)]
4962            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
4963                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4964                    Self {
4965                        role: tuple.0,
4966                        account: tuple.1,
4967                    }
4968                }
4969            }
4970        }
4971        {
4972            #[doc(hidden)]
4973            type UnderlyingSolTuple<'a> = ();
4974            #[doc(hidden)]
4975            type UnderlyingRustTuple<'a> = ();
4976            #[cfg(test)]
4977            #[allow(dead_code, unreachable_patterns)]
4978            fn _type_assertion(
4979                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4980            ) {
4981                match _t {
4982                    alloy_sol_types::private::AssertTypeEq::<
4983                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4984                    >(_) => {}
4985                }
4986            }
4987            #[automatically_derived]
4988            #[doc(hidden)]
4989            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
4990                fn from(value: grantRoleReturn) -> Self {
4991                    ()
4992                }
4993            }
4994            #[automatically_derived]
4995            #[doc(hidden)]
4996            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
4997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4998                    Self {}
4999                }
5000            }
5001        }
5002        impl grantRoleReturn {
5003            fn _tokenize(
5004                &self,
5005            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5006                ()
5007            }
5008        }
5009        #[automatically_derived]
5010        impl alloy_sol_types::SolCall for grantRoleCall {
5011            type Parameters<'a> = (
5012                alloy::sol_types::sol_data::FixedBytes<32>,
5013                alloy::sol_types::sol_data::Address,
5014            );
5015            type Token<'a> = <Self::Parameters<
5016                'a,
5017            > as alloy_sol_types::SolType>::Token<'a>;
5018            type Return = grantRoleReturn;
5019            type ReturnTuple<'a> = ();
5020            type ReturnToken<'a> = <Self::ReturnTuple<
5021                'a,
5022            > as alloy_sol_types::SolType>::Token<'a>;
5023            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
5024            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
5025            #[inline]
5026            fn new<'a>(
5027                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5028            ) -> Self {
5029                tuple.into()
5030            }
5031            #[inline]
5032            fn tokenize(&self) -> Self::Token<'_> {
5033                (
5034                    <alloy::sol_types::sol_data::FixedBytes<
5035                        32,
5036                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5037                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5038                        &self.account,
5039                    ),
5040                )
5041            }
5042            #[inline]
5043            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5044                grantRoleReturn::_tokenize(ret)
5045            }
5046            #[inline]
5047            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5048                <Self::ReturnTuple<
5049                    '_,
5050                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5051                    .map(Into::into)
5052            }
5053            #[inline]
5054            fn abi_decode_returns_validate(
5055                data: &[u8],
5056            ) -> alloy_sol_types::Result<Self::Return> {
5057                <Self::ReturnTuple<
5058                    '_,
5059                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5060                    .map(Into::into)
5061            }
5062        }
5063    };
5064    #[derive(serde::Serialize, serde::Deserialize)]
5065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5066    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
5067```solidity
5068function hasRole(bytes32 role, address account) external view returns (bool);
5069```*/
5070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5071    #[derive(Clone)]
5072    pub struct hasRoleCall {
5073        #[allow(missing_docs)]
5074        pub role: alloy::sol_types::private::FixedBytes<32>,
5075        #[allow(missing_docs)]
5076        pub account: alloy::sol_types::private::Address,
5077    }
5078    #[derive(serde::Serialize, serde::Deserialize)]
5079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5080    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
5081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5082    #[derive(Clone)]
5083    pub struct hasRoleReturn {
5084        #[allow(missing_docs)]
5085        pub _0: bool,
5086    }
5087    #[allow(
5088        non_camel_case_types,
5089        non_snake_case,
5090        clippy::pub_underscore_fields,
5091        clippy::style
5092    )]
5093    const _: () = {
5094        use alloy::sol_types as alloy_sol_types;
5095        {
5096            #[doc(hidden)]
5097            type UnderlyingSolTuple<'a> = (
5098                alloy::sol_types::sol_data::FixedBytes<32>,
5099                alloy::sol_types::sol_data::Address,
5100            );
5101            #[doc(hidden)]
5102            type UnderlyingRustTuple<'a> = (
5103                alloy::sol_types::private::FixedBytes<32>,
5104                alloy::sol_types::private::Address,
5105            );
5106            #[cfg(test)]
5107            #[allow(dead_code, unreachable_patterns)]
5108            fn _type_assertion(
5109                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5110            ) {
5111                match _t {
5112                    alloy_sol_types::private::AssertTypeEq::<
5113                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5114                    >(_) => {}
5115                }
5116            }
5117            #[automatically_derived]
5118            #[doc(hidden)]
5119            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
5120                fn from(value: hasRoleCall) -> Self {
5121                    (value.role, value.account)
5122                }
5123            }
5124            #[automatically_derived]
5125            #[doc(hidden)]
5126            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
5127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5128                    Self {
5129                        role: tuple.0,
5130                        account: tuple.1,
5131                    }
5132                }
5133            }
5134        }
5135        {
5136            #[doc(hidden)]
5137            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5138            #[doc(hidden)]
5139            type UnderlyingRustTuple<'a> = (bool,);
5140            #[cfg(test)]
5141            #[allow(dead_code, unreachable_patterns)]
5142            fn _type_assertion(
5143                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5144            ) {
5145                match _t {
5146                    alloy_sol_types::private::AssertTypeEq::<
5147                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5148                    >(_) => {}
5149                }
5150            }
5151            #[automatically_derived]
5152            #[doc(hidden)]
5153            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
5154                fn from(value: hasRoleReturn) -> Self {
5155                    (value._0,)
5156                }
5157            }
5158            #[automatically_derived]
5159            #[doc(hidden)]
5160            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
5161                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5162                    Self { _0: tuple.0 }
5163                }
5164            }
5165        }
5166        #[automatically_derived]
5167        impl alloy_sol_types::SolCall for hasRoleCall {
5168            type Parameters<'a> = (
5169                alloy::sol_types::sol_data::FixedBytes<32>,
5170                alloy::sol_types::sol_data::Address,
5171            );
5172            type Token<'a> = <Self::Parameters<
5173                'a,
5174            > as alloy_sol_types::SolType>::Token<'a>;
5175            type Return = bool;
5176            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5177            type ReturnToken<'a> = <Self::ReturnTuple<
5178                'a,
5179            > as alloy_sol_types::SolType>::Token<'a>;
5180            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
5181            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
5182            #[inline]
5183            fn new<'a>(
5184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5185            ) -> Self {
5186                tuple.into()
5187            }
5188            #[inline]
5189            fn tokenize(&self) -> Self::Token<'_> {
5190                (
5191                    <alloy::sol_types::sol_data::FixedBytes<
5192                        32,
5193                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5194                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5195                        &self.account,
5196                    ),
5197                )
5198            }
5199            #[inline]
5200            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5201                (
5202                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5203                        ret,
5204                    ),
5205                )
5206            }
5207            #[inline]
5208            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5209                <Self::ReturnTuple<
5210                    '_,
5211                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5212                    .map(|r| {
5213                        let r: hasRoleReturn = r.into();
5214                        r._0
5215                    })
5216            }
5217            #[inline]
5218            fn abi_decode_returns_validate(
5219                data: &[u8],
5220            ) -> alloy_sol_types::Result<Self::Return> {
5221                <Self::ReturnTuple<
5222                    '_,
5223                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5224                    .map(|r| {
5225                        let r: hasRoleReturn = r.into();
5226                        r._0
5227                    })
5228            }
5229        }
5230    };
5231    #[derive(serde::Serialize, serde::Deserialize)]
5232    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5233    /**Function with signature `hashOperation(address,uint256,bytes,bytes32,bytes32)` and selector `0x8065657f`.
5234```solidity
5235function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
5236```*/
5237    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5238    #[derive(Clone)]
5239    pub struct hashOperationCall {
5240        #[allow(missing_docs)]
5241        pub target: alloy::sol_types::private::Address,
5242        #[allow(missing_docs)]
5243        pub value: alloy::sol_types::private::primitives::aliases::U256,
5244        #[allow(missing_docs)]
5245        pub data: alloy::sol_types::private::Bytes,
5246        #[allow(missing_docs)]
5247        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5248        #[allow(missing_docs)]
5249        pub salt: alloy::sol_types::private::FixedBytes<32>,
5250    }
5251    #[derive(serde::Serialize, serde::Deserialize)]
5252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5253    ///Container type for the return parameters of the [`hashOperation(address,uint256,bytes,bytes32,bytes32)`](hashOperationCall) function.
5254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5255    #[derive(Clone)]
5256    pub struct hashOperationReturn {
5257        #[allow(missing_docs)]
5258        pub _0: alloy::sol_types::private::FixedBytes<32>,
5259    }
5260    #[allow(
5261        non_camel_case_types,
5262        non_snake_case,
5263        clippy::pub_underscore_fields,
5264        clippy::style
5265    )]
5266    const _: () = {
5267        use alloy::sol_types as alloy_sol_types;
5268        {
5269            #[doc(hidden)]
5270            type UnderlyingSolTuple<'a> = (
5271                alloy::sol_types::sol_data::Address,
5272                alloy::sol_types::sol_data::Uint<256>,
5273                alloy::sol_types::sol_data::Bytes,
5274                alloy::sol_types::sol_data::FixedBytes<32>,
5275                alloy::sol_types::sol_data::FixedBytes<32>,
5276            );
5277            #[doc(hidden)]
5278            type UnderlyingRustTuple<'a> = (
5279                alloy::sol_types::private::Address,
5280                alloy::sol_types::private::primitives::aliases::U256,
5281                alloy::sol_types::private::Bytes,
5282                alloy::sol_types::private::FixedBytes<32>,
5283                alloy::sol_types::private::FixedBytes<32>,
5284            );
5285            #[cfg(test)]
5286            #[allow(dead_code, unreachable_patterns)]
5287            fn _type_assertion(
5288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5289            ) {
5290                match _t {
5291                    alloy_sol_types::private::AssertTypeEq::<
5292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5293                    >(_) => {}
5294                }
5295            }
5296            #[automatically_derived]
5297            #[doc(hidden)]
5298            impl ::core::convert::From<hashOperationCall> for UnderlyingRustTuple<'_> {
5299                fn from(value: hashOperationCall) -> Self {
5300                    (
5301                        value.target,
5302                        value.value,
5303                        value.data,
5304                        value.predecessor,
5305                        value.salt,
5306                    )
5307                }
5308            }
5309            #[automatically_derived]
5310            #[doc(hidden)]
5311            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationCall {
5312                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5313                    Self {
5314                        target: tuple.0,
5315                        value: tuple.1,
5316                        data: tuple.2,
5317                        predecessor: tuple.3,
5318                        salt: tuple.4,
5319                    }
5320                }
5321            }
5322        }
5323        {
5324            #[doc(hidden)]
5325            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5326            #[doc(hidden)]
5327            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5328            #[cfg(test)]
5329            #[allow(dead_code, unreachable_patterns)]
5330            fn _type_assertion(
5331                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5332            ) {
5333                match _t {
5334                    alloy_sol_types::private::AssertTypeEq::<
5335                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5336                    >(_) => {}
5337                }
5338            }
5339            #[automatically_derived]
5340            #[doc(hidden)]
5341            impl ::core::convert::From<hashOperationReturn> for UnderlyingRustTuple<'_> {
5342                fn from(value: hashOperationReturn) -> Self {
5343                    (value._0,)
5344                }
5345            }
5346            #[automatically_derived]
5347            #[doc(hidden)]
5348            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationReturn {
5349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5350                    Self { _0: tuple.0 }
5351                }
5352            }
5353        }
5354        #[automatically_derived]
5355        impl alloy_sol_types::SolCall for hashOperationCall {
5356            type Parameters<'a> = (
5357                alloy::sol_types::sol_data::Address,
5358                alloy::sol_types::sol_data::Uint<256>,
5359                alloy::sol_types::sol_data::Bytes,
5360                alloy::sol_types::sol_data::FixedBytes<32>,
5361                alloy::sol_types::sol_data::FixedBytes<32>,
5362            );
5363            type Token<'a> = <Self::Parameters<
5364                'a,
5365            > as alloy_sol_types::SolType>::Token<'a>;
5366            type Return = alloy::sol_types::private::FixedBytes<32>;
5367            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5368            type ReturnToken<'a> = <Self::ReturnTuple<
5369                'a,
5370            > as alloy_sol_types::SolType>::Token<'a>;
5371            const SIGNATURE: &'static str = "hashOperation(address,uint256,bytes,bytes32,bytes32)";
5372            const SELECTOR: [u8; 4] = [128u8, 101u8, 101u8, 127u8];
5373            #[inline]
5374            fn new<'a>(
5375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5376            ) -> Self {
5377                tuple.into()
5378            }
5379            #[inline]
5380            fn tokenize(&self) -> Self::Token<'_> {
5381                (
5382                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5383                        &self.target,
5384                    ),
5385                    <alloy::sol_types::sol_data::Uint<
5386                        256,
5387                    > as alloy_sol_types::SolType>::tokenize(&self.value),
5388                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5389                        &self.data,
5390                    ),
5391                    <alloy::sol_types::sol_data::FixedBytes<
5392                        32,
5393                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5394                    <alloy::sol_types::sol_data::FixedBytes<
5395                        32,
5396                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5397                )
5398            }
5399            #[inline]
5400            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5401                (
5402                    <alloy::sol_types::sol_data::FixedBytes<
5403                        32,
5404                    > as alloy_sol_types::SolType>::tokenize(ret),
5405                )
5406            }
5407            #[inline]
5408            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5409                <Self::ReturnTuple<
5410                    '_,
5411                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5412                    .map(|r| {
5413                        let r: hashOperationReturn = r.into();
5414                        r._0
5415                    })
5416            }
5417            #[inline]
5418            fn abi_decode_returns_validate(
5419                data: &[u8],
5420            ) -> alloy_sol_types::Result<Self::Return> {
5421                <Self::ReturnTuple<
5422                    '_,
5423                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5424                    .map(|r| {
5425                        let r: hashOperationReturn = r.into();
5426                        r._0
5427                    })
5428            }
5429        }
5430    };
5431    #[derive(serde::Serialize, serde::Deserialize)]
5432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5433    /**Function with signature `hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xb1c5f427`.
5434```solidity
5435function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
5436```*/
5437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5438    #[derive(Clone)]
5439    pub struct hashOperationBatchCall {
5440        #[allow(missing_docs)]
5441        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5442        #[allow(missing_docs)]
5443        pub values: alloy::sol_types::private::Vec<
5444            alloy::sol_types::private::primitives::aliases::U256,
5445        >,
5446        #[allow(missing_docs)]
5447        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5448        #[allow(missing_docs)]
5449        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5450        #[allow(missing_docs)]
5451        pub salt: alloy::sol_types::private::FixedBytes<32>,
5452    }
5453    #[derive(serde::Serialize, serde::Deserialize)]
5454    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5455    ///Container type for the return parameters of the [`hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)`](hashOperationBatchCall) function.
5456    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5457    #[derive(Clone)]
5458    pub struct hashOperationBatchReturn {
5459        #[allow(missing_docs)]
5460        pub _0: alloy::sol_types::private::FixedBytes<32>,
5461    }
5462    #[allow(
5463        non_camel_case_types,
5464        non_snake_case,
5465        clippy::pub_underscore_fields,
5466        clippy::style
5467    )]
5468    const _: () = {
5469        use alloy::sol_types as alloy_sol_types;
5470        {
5471            #[doc(hidden)]
5472            type UnderlyingSolTuple<'a> = (
5473                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5474                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5475                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5476                alloy::sol_types::sol_data::FixedBytes<32>,
5477                alloy::sol_types::sol_data::FixedBytes<32>,
5478            );
5479            #[doc(hidden)]
5480            type UnderlyingRustTuple<'a> = (
5481                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5482                alloy::sol_types::private::Vec<
5483                    alloy::sol_types::private::primitives::aliases::U256,
5484                >,
5485                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5486                alloy::sol_types::private::FixedBytes<32>,
5487                alloy::sol_types::private::FixedBytes<32>,
5488            );
5489            #[cfg(test)]
5490            #[allow(dead_code, unreachable_patterns)]
5491            fn _type_assertion(
5492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5493            ) {
5494                match _t {
5495                    alloy_sol_types::private::AssertTypeEq::<
5496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5497                    >(_) => {}
5498                }
5499            }
5500            #[automatically_derived]
5501            #[doc(hidden)]
5502            impl ::core::convert::From<hashOperationBatchCall>
5503            for UnderlyingRustTuple<'_> {
5504                fn from(value: hashOperationBatchCall) -> Self {
5505                    (
5506                        value.targets,
5507                        value.values,
5508                        value.payloads,
5509                        value.predecessor,
5510                        value.salt,
5511                    )
5512                }
5513            }
5514            #[automatically_derived]
5515            #[doc(hidden)]
5516            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5517            for hashOperationBatchCall {
5518                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5519                    Self {
5520                        targets: tuple.0,
5521                        values: tuple.1,
5522                        payloads: tuple.2,
5523                        predecessor: tuple.3,
5524                        salt: tuple.4,
5525                    }
5526                }
5527            }
5528        }
5529        {
5530            #[doc(hidden)]
5531            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5532            #[doc(hidden)]
5533            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5534            #[cfg(test)]
5535            #[allow(dead_code, unreachable_patterns)]
5536            fn _type_assertion(
5537                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5538            ) {
5539                match _t {
5540                    alloy_sol_types::private::AssertTypeEq::<
5541                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5542                    >(_) => {}
5543                }
5544            }
5545            #[automatically_derived]
5546            #[doc(hidden)]
5547            impl ::core::convert::From<hashOperationBatchReturn>
5548            for UnderlyingRustTuple<'_> {
5549                fn from(value: hashOperationBatchReturn) -> Self {
5550                    (value._0,)
5551                }
5552            }
5553            #[automatically_derived]
5554            #[doc(hidden)]
5555            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5556            for hashOperationBatchReturn {
5557                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5558                    Self { _0: tuple.0 }
5559                }
5560            }
5561        }
5562        #[automatically_derived]
5563        impl alloy_sol_types::SolCall for hashOperationBatchCall {
5564            type Parameters<'a> = (
5565                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5566                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5567                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5568                alloy::sol_types::sol_data::FixedBytes<32>,
5569                alloy::sol_types::sol_data::FixedBytes<32>,
5570            );
5571            type Token<'a> = <Self::Parameters<
5572                'a,
5573            > as alloy_sol_types::SolType>::Token<'a>;
5574            type Return = alloy::sol_types::private::FixedBytes<32>;
5575            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5576            type ReturnToken<'a> = <Self::ReturnTuple<
5577                'a,
5578            > as alloy_sol_types::SolType>::Token<'a>;
5579            const SIGNATURE: &'static str = "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)";
5580            const SELECTOR: [u8; 4] = [177u8, 197u8, 244u8, 39u8];
5581            #[inline]
5582            fn new<'a>(
5583                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5584            ) -> Self {
5585                tuple.into()
5586            }
5587            #[inline]
5588            fn tokenize(&self) -> Self::Token<'_> {
5589                (
5590                    <alloy::sol_types::sol_data::Array<
5591                        alloy::sol_types::sol_data::Address,
5592                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
5593                    <alloy::sol_types::sol_data::Array<
5594                        alloy::sol_types::sol_data::Uint<256>,
5595                    > as alloy_sol_types::SolType>::tokenize(&self.values),
5596                    <alloy::sol_types::sol_data::Array<
5597                        alloy::sol_types::sol_data::Bytes,
5598                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
5599                    <alloy::sol_types::sol_data::FixedBytes<
5600                        32,
5601                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5602                    <alloy::sol_types::sol_data::FixedBytes<
5603                        32,
5604                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5605                )
5606            }
5607            #[inline]
5608            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5609                (
5610                    <alloy::sol_types::sol_data::FixedBytes<
5611                        32,
5612                    > as alloy_sol_types::SolType>::tokenize(ret),
5613                )
5614            }
5615            #[inline]
5616            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5617                <Self::ReturnTuple<
5618                    '_,
5619                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5620                    .map(|r| {
5621                        let r: hashOperationBatchReturn = r.into();
5622                        r._0
5623                    })
5624            }
5625            #[inline]
5626            fn abi_decode_returns_validate(
5627                data: &[u8],
5628            ) -> alloy_sol_types::Result<Self::Return> {
5629                <Self::ReturnTuple<
5630                    '_,
5631                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5632                    .map(|r| {
5633                        let r: hashOperationBatchReturn = r.into();
5634                        r._0
5635                    })
5636            }
5637        }
5638    };
5639    #[derive(serde::Serialize, serde::Deserialize)]
5640    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5641    /**Function with signature `isOperation(bytes32)` and selector `0x31d50750`.
5642```solidity
5643function isOperation(bytes32 id) external view returns (bool);
5644```*/
5645    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5646    #[derive(Clone)]
5647    pub struct isOperationCall {
5648        #[allow(missing_docs)]
5649        pub id: alloy::sol_types::private::FixedBytes<32>,
5650    }
5651    #[derive(serde::Serialize, serde::Deserialize)]
5652    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5653    ///Container type for the return parameters of the [`isOperation(bytes32)`](isOperationCall) function.
5654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5655    #[derive(Clone)]
5656    pub struct isOperationReturn {
5657        #[allow(missing_docs)]
5658        pub _0: bool,
5659    }
5660    #[allow(
5661        non_camel_case_types,
5662        non_snake_case,
5663        clippy::pub_underscore_fields,
5664        clippy::style
5665    )]
5666    const _: () = {
5667        use alloy::sol_types as alloy_sol_types;
5668        {
5669            #[doc(hidden)]
5670            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5671            #[doc(hidden)]
5672            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5673            #[cfg(test)]
5674            #[allow(dead_code, unreachable_patterns)]
5675            fn _type_assertion(
5676                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5677            ) {
5678                match _t {
5679                    alloy_sol_types::private::AssertTypeEq::<
5680                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5681                    >(_) => {}
5682                }
5683            }
5684            #[automatically_derived]
5685            #[doc(hidden)]
5686            impl ::core::convert::From<isOperationCall> for UnderlyingRustTuple<'_> {
5687                fn from(value: isOperationCall) -> Self {
5688                    (value.id,)
5689                }
5690            }
5691            #[automatically_derived]
5692            #[doc(hidden)]
5693            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationCall {
5694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5695                    Self { id: tuple.0 }
5696                }
5697            }
5698        }
5699        {
5700            #[doc(hidden)]
5701            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5702            #[doc(hidden)]
5703            type UnderlyingRustTuple<'a> = (bool,);
5704            #[cfg(test)]
5705            #[allow(dead_code, unreachable_patterns)]
5706            fn _type_assertion(
5707                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5708            ) {
5709                match _t {
5710                    alloy_sol_types::private::AssertTypeEq::<
5711                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5712                    >(_) => {}
5713                }
5714            }
5715            #[automatically_derived]
5716            #[doc(hidden)]
5717            impl ::core::convert::From<isOperationReturn> for UnderlyingRustTuple<'_> {
5718                fn from(value: isOperationReturn) -> Self {
5719                    (value._0,)
5720                }
5721            }
5722            #[automatically_derived]
5723            #[doc(hidden)]
5724            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationReturn {
5725                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5726                    Self { _0: tuple.0 }
5727                }
5728            }
5729        }
5730        #[automatically_derived]
5731        impl alloy_sol_types::SolCall for isOperationCall {
5732            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5733            type Token<'a> = <Self::Parameters<
5734                'a,
5735            > as alloy_sol_types::SolType>::Token<'a>;
5736            type Return = bool;
5737            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5738            type ReturnToken<'a> = <Self::ReturnTuple<
5739                'a,
5740            > as alloy_sol_types::SolType>::Token<'a>;
5741            const SIGNATURE: &'static str = "isOperation(bytes32)";
5742            const SELECTOR: [u8; 4] = [49u8, 213u8, 7u8, 80u8];
5743            #[inline]
5744            fn new<'a>(
5745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5746            ) -> Self {
5747                tuple.into()
5748            }
5749            #[inline]
5750            fn tokenize(&self) -> Self::Token<'_> {
5751                (
5752                    <alloy::sol_types::sol_data::FixedBytes<
5753                        32,
5754                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5755                )
5756            }
5757            #[inline]
5758            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5759                (
5760                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5761                        ret,
5762                    ),
5763                )
5764            }
5765            #[inline]
5766            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5767                <Self::ReturnTuple<
5768                    '_,
5769                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5770                    .map(|r| {
5771                        let r: isOperationReturn = r.into();
5772                        r._0
5773                    })
5774            }
5775            #[inline]
5776            fn abi_decode_returns_validate(
5777                data: &[u8],
5778            ) -> alloy_sol_types::Result<Self::Return> {
5779                <Self::ReturnTuple<
5780                    '_,
5781                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5782                    .map(|r| {
5783                        let r: isOperationReturn = r.into();
5784                        r._0
5785                    })
5786            }
5787        }
5788    };
5789    #[derive(serde::Serialize, serde::Deserialize)]
5790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5791    /**Function with signature `isOperationDone(bytes32)` and selector `0x2ab0f529`.
5792```solidity
5793function isOperationDone(bytes32 id) external view returns (bool);
5794```*/
5795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5796    #[derive(Clone)]
5797    pub struct isOperationDoneCall {
5798        #[allow(missing_docs)]
5799        pub id: alloy::sol_types::private::FixedBytes<32>,
5800    }
5801    #[derive(serde::Serialize, serde::Deserialize)]
5802    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5803    ///Container type for the return parameters of the [`isOperationDone(bytes32)`](isOperationDoneCall) function.
5804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5805    #[derive(Clone)]
5806    pub struct isOperationDoneReturn {
5807        #[allow(missing_docs)]
5808        pub _0: bool,
5809    }
5810    #[allow(
5811        non_camel_case_types,
5812        non_snake_case,
5813        clippy::pub_underscore_fields,
5814        clippy::style
5815    )]
5816    const _: () = {
5817        use alloy::sol_types as alloy_sol_types;
5818        {
5819            #[doc(hidden)]
5820            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5821            #[doc(hidden)]
5822            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5823            #[cfg(test)]
5824            #[allow(dead_code, unreachable_patterns)]
5825            fn _type_assertion(
5826                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5827            ) {
5828                match _t {
5829                    alloy_sol_types::private::AssertTypeEq::<
5830                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5831                    >(_) => {}
5832                }
5833            }
5834            #[automatically_derived]
5835            #[doc(hidden)]
5836            impl ::core::convert::From<isOperationDoneCall> for UnderlyingRustTuple<'_> {
5837                fn from(value: isOperationDoneCall) -> Self {
5838                    (value.id,)
5839                }
5840            }
5841            #[automatically_derived]
5842            #[doc(hidden)]
5843            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationDoneCall {
5844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5845                    Self { id: tuple.0 }
5846                }
5847            }
5848        }
5849        {
5850            #[doc(hidden)]
5851            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5852            #[doc(hidden)]
5853            type UnderlyingRustTuple<'a> = (bool,);
5854            #[cfg(test)]
5855            #[allow(dead_code, unreachable_patterns)]
5856            fn _type_assertion(
5857                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5858            ) {
5859                match _t {
5860                    alloy_sol_types::private::AssertTypeEq::<
5861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5862                    >(_) => {}
5863                }
5864            }
5865            #[automatically_derived]
5866            #[doc(hidden)]
5867            impl ::core::convert::From<isOperationDoneReturn>
5868            for UnderlyingRustTuple<'_> {
5869                fn from(value: isOperationDoneReturn) -> Self {
5870                    (value._0,)
5871                }
5872            }
5873            #[automatically_derived]
5874            #[doc(hidden)]
5875            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5876            for isOperationDoneReturn {
5877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5878                    Self { _0: tuple.0 }
5879                }
5880            }
5881        }
5882        #[automatically_derived]
5883        impl alloy_sol_types::SolCall for isOperationDoneCall {
5884            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5885            type Token<'a> = <Self::Parameters<
5886                'a,
5887            > as alloy_sol_types::SolType>::Token<'a>;
5888            type Return = bool;
5889            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5890            type ReturnToken<'a> = <Self::ReturnTuple<
5891                'a,
5892            > as alloy_sol_types::SolType>::Token<'a>;
5893            const SIGNATURE: &'static str = "isOperationDone(bytes32)";
5894            const SELECTOR: [u8; 4] = [42u8, 176u8, 245u8, 41u8];
5895            #[inline]
5896            fn new<'a>(
5897                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5898            ) -> Self {
5899                tuple.into()
5900            }
5901            #[inline]
5902            fn tokenize(&self) -> Self::Token<'_> {
5903                (
5904                    <alloy::sol_types::sol_data::FixedBytes<
5905                        32,
5906                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5907                )
5908            }
5909            #[inline]
5910            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5911                (
5912                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5913                        ret,
5914                    ),
5915                )
5916            }
5917            #[inline]
5918            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5919                <Self::ReturnTuple<
5920                    '_,
5921                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5922                    .map(|r| {
5923                        let r: isOperationDoneReturn = r.into();
5924                        r._0
5925                    })
5926            }
5927            #[inline]
5928            fn abi_decode_returns_validate(
5929                data: &[u8],
5930            ) -> alloy_sol_types::Result<Self::Return> {
5931                <Self::ReturnTuple<
5932                    '_,
5933                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5934                    .map(|r| {
5935                        let r: isOperationDoneReturn = r.into();
5936                        r._0
5937                    })
5938            }
5939        }
5940    };
5941    #[derive(serde::Serialize, serde::Deserialize)]
5942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5943    /**Function with signature `isOperationPending(bytes32)` and selector `0x584b153e`.
5944```solidity
5945function isOperationPending(bytes32 id) external view returns (bool);
5946```*/
5947    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5948    #[derive(Clone)]
5949    pub struct isOperationPendingCall {
5950        #[allow(missing_docs)]
5951        pub id: alloy::sol_types::private::FixedBytes<32>,
5952    }
5953    #[derive(serde::Serialize, serde::Deserialize)]
5954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5955    ///Container type for the return parameters of the [`isOperationPending(bytes32)`](isOperationPendingCall) function.
5956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5957    #[derive(Clone)]
5958    pub struct isOperationPendingReturn {
5959        #[allow(missing_docs)]
5960        pub _0: bool,
5961    }
5962    #[allow(
5963        non_camel_case_types,
5964        non_snake_case,
5965        clippy::pub_underscore_fields,
5966        clippy::style
5967    )]
5968    const _: () = {
5969        use alloy::sol_types as alloy_sol_types;
5970        {
5971            #[doc(hidden)]
5972            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5973            #[doc(hidden)]
5974            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5975            #[cfg(test)]
5976            #[allow(dead_code, unreachable_patterns)]
5977            fn _type_assertion(
5978                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5979            ) {
5980                match _t {
5981                    alloy_sol_types::private::AssertTypeEq::<
5982                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5983                    >(_) => {}
5984                }
5985            }
5986            #[automatically_derived]
5987            #[doc(hidden)]
5988            impl ::core::convert::From<isOperationPendingCall>
5989            for UnderlyingRustTuple<'_> {
5990                fn from(value: isOperationPendingCall) -> Self {
5991                    (value.id,)
5992                }
5993            }
5994            #[automatically_derived]
5995            #[doc(hidden)]
5996            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5997            for isOperationPendingCall {
5998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5999                    Self { id: tuple.0 }
6000                }
6001            }
6002        }
6003        {
6004            #[doc(hidden)]
6005            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6006            #[doc(hidden)]
6007            type UnderlyingRustTuple<'a> = (bool,);
6008            #[cfg(test)]
6009            #[allow(dead_code, unreachable_patterns)]
6010            fn _type_assertion(
6011                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6012            ) {
6013                match _t {
6014                    alloy_sol_types::private::AssertTypeEq::<
6015                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6016                    >(_) => {}
6017                }
6018            }
6019            #[automatically_derived]
6020            #[doc(hidden)]
6021            impl ::core::convert::From<isOperationPendingReturn>
6022            for UnderlyingRustTuple<'_> {
6023                fn from(value: isOperationPendingReturn) -> Self {
6024                    (value._0,)
6025                }
6026            }
6027            #[automatically_derived]
6028            #[doc(hidden)]
6029            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6030            for isOperationPendingReturn {
6031                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6032                    Self { _0: tuple.0 }
6033                }
6034            }
6035        }
6036        #[automatically_derived]
6037        impl alloy_sol_types::SolCall for isOperationPendingCall {
6038            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6039            type Token<'a> = <Self::Parameters<
6040                'a,
6041            > as alloy_sol_types::SolType>::Token<'a>;
6042            type Return = bool;
6043            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6044            type ReturnToken<'a> = <Self::ReturnTuple<
6045                'a,
6046            > as alloy_sol_types::SolType>::Token<'a>;
6047            const SIGNATURE: &'static str = "isOperationPending(bytes32)";
6048            const SELECTOR: [u8; 4] = [88u8, 75u8, 21u8, 62u8];
6049            #[inline]
6050            fn new<'a>(
6051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6052            ) -> Self {
6053                tuple.into()
6054            }
6055            #[inline]
6056            fn tokenize(&self) -> Self::Token<'_> {
6057                (
6058                    <alloy::sol_types::sol_data::FixedBytes<
6059                        32,
6060                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6061                )
6062            }
6063            #[inline]
6064            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6065                (
6066                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6067                        ret,
6068                    ),
6069                )
6070            }
6071            #[inline]
6072            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6073                <Self::ReturnTuple<
6074                    '_,
6075                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6076                    .map(|r| {
6077                        let r: isOperationPendingReturn = r.into();
6078                        r._0
6079                    })
6080            }
6081            #[inline]
6082            fn abi_decode_returns_validate(
6083                data: &[u8],
6084            ) -> alloy_sol_types::Result<Self::Return> {
6085                <Self::ReturnTuple<
6086                    '_,
6087                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6088                    .map(|r| {
6089                        let r: isOperationPendingReturn = r.into();
6090                        r._0
6091                    })
6092            }
6093        }
6094    };
6095    #[derive(serde::Serialize, serde::Deserialize)]
6096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6097    /**Function with signature `isOperationReady(bytes32)` and selector `0x13bc9f20`.
6098```solidity
6099function isOperationReady(bytes32 id) external view returns (bool);
6100```*/
6101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6102    #[derive(Clone)]
6103    pub struct isOperationReadyCall {
6104        #[allow(missing_docs)]
6105        pub id: alloy::sol_types::private::FixedBytes<32>,
6106    }
6107    #[derive(serde::Serialize, serde::Deserialize)]
6108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6109    ///Container type for the return parameters of the [`isOperationReady(bytes32)`](isOperationReadyCall) function.
6110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6111    #[derive(Clone)]
6112    pub struct isOperationReadyReturn {
6113        #[allow(missing_docs)]
6114        pub _0: bool,
6115    }
6116    #[allow(
6117        non_camel_case_types,
6118        non_snake_case,
6119        clippy::pub_underscore_fields,
6120        clippy::style
6121    )]
6122    const _: () = {
6123        use alloy::sol_types as alloy_sol_types;
6124        {
6125            #[doc(hidden)]
6126            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6127            #[doc(hidden)]
6128            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6129            #[cfg(test)]
6130            #[allow(dead_code, unreachable_patterns)]
6131            fn _type_assertion(
6132                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6133            ) {
6134                match _t {
6135                    alloy_sol_types::private::AssertTypeEq::<
6136                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6137                    >(_) => {}
6138                }
6139            }
6140            #[automatically_derived]
6141            #[doc(hidden)]
6142            impl ::core::convert::From<isOperationReadyCall>
6143            for UnderlyingRustTuple<'_> {
6144                fn from(value: isOperationReadyCall) -> Self {
6145                    (value.id,)
6146                }
6147            }
6148            #[automatically_derived]
6149            #[doc(hidden)]
6150            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6151            for isOperationReadyCall {
6152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6153                    Self { id: tuple.0 }
6154                }
6155            }
6156        }
6157        {
6158            #[doc(hidden)]
6159            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6160            #[doc(hidden)]
6161            type UnderlyingRustTuple<'a> = (bool,);
6162            #[cfg(test)]
6163            #[allow(dead_code, unreachable_patterns)]
6164            fn _type_assertion(
6165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6166            ) {
6167                match _t {
6168                    alloy_sol_types::private::AssertTypeEq::<
6169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6170                    >(_) => {}
6171                }
6172            }
6173            #[automatically_derived]
6174            #[doc(hidden)]
6175            impl ::core::convert::From<isOperationReadyReturn>
6176            for UnderlyingRustTuple<'_> {
6177                fn from(value: isOperationReadyReturn) -> Self {
6178                    (value._0,)
6179                }
6180            }
6181            #[automatically_derived]
6182            #[doc(hidden)]
6183            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6184            for isOperationReadyReturn {
6185                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6186                    Self { _0: tuple.0 }
6187                }
6188            }
6189        }
6190        #[automatically_derived]
6191        impl alloy_sol_types::SolCall for isOperationReadyCall {
6192            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6193            type Token<'a> = <Self::Parameters<
6194                'a,
6195            > as alloy_sol_types::SolType>::Token<'a>;
6196            type Return = bool;
6197            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6198            type ReturnToken<'a> = <Self::ReturnTuple<
6199                'a,
6200            > as alloy_sol_types::SolType>::Token<'a>;
6201            const SIGNATURE: &'static str = "isOperationReady(bytes32)";
6202            const SELECTOR: [u8; 4] = [19u8, 188u8, 159u8, 32u8];
6203            #[inline]
6204            fn new<'a>(
6205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6206            ) -> Self {
6207                tuple.into()
6208            }
6209            #[inline]
6210            fn tokenize(&self) -> Self::Token<'_> {
6211                (
6212                    <alloy::sol_types::sol_data::FixedBytes<
6213                        32,
6214                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6215                )
6216            }
6217            #[inline]
6218            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6219                (
6220                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6221                        ret,
6222                    ),
6223                )
6224            }
6225            #[inline]
6226            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6227                <Self::ReturnTuple<
6228                    '_,
6229                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6230                    .map(|r| {
6231                        let r: isOperationReadyReturn = r.into();
6232                        r._0
6233                    })
6234            }
6235            #[inline]
6236            fn abi_decode_returns_validate(
6237                data: &[u8],
6238            ) -> alloy_sol_types::Result<Self::Return> {
6239                <Self::ReturnTuple<
6240                    '_,
6241                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6242                    .map(|r| {
6243                        let r: isOperationReadyReturn = r.into();
6244                        r._0
6245                    })
6246            }
6247        }
6248    };
6249    #[derive(serde::Serialize, serde::Deserialize)]
6250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6251    /**Function with signature `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)` and selector `0xbc197c81`.
6252```solidity
6253function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
6254```*/
6255    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6256    #[derive(Clone)]
6257    pub struct onERC1155BatchReceivedCall {
6258        #[allow(missing_docs)]
6259        pub _0: alloy::sol_types::private::Address,
6260        #[allow(missing_docs)]
6261        pub _1: alloy::sol_types::private::Address,
6262        #[allow(missing_docs)]
6263        pub _2: alloy::sol_types::private::Vec<
6264            alloy::sol_types::private::primitives::aliases::U256,
6265        >,
6266        #[allow(missing_docs)]
6267        pub _3: alloy::sol_types::private::Vec<
6268            alloy::sol_types::private::primitives::aliases::U256,
6269        >,
6270        #[allow(missing_docs)]
6271        pub _4: alloy::sol_types::private::Bytes,
6272    }
6273    #[derive(serde::Serialize, serde::Deserialize)]
6274    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6275    ///Container type for the return parameters of the [`onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`](onERC1155BatchReceivedCall) function.
6276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6277    #[derive(Clone)]
6278    pub struct onERC1155BatchReceivedReturn {
6279        #[allow(missing_docs)]
6280        pub _0: alloy::sol_types::private::FixedBytes<4>,
6281    }
6282    #[allow(
6283        non_camel_case_types,
6284        non_snake_case,
6285        clippy::pub_underscore_fields,
6286        clippy::style
6287    )]
6288    const _: () = {
6289        use alloy::sol_types as alloy_sol_types;
6290        {
6291            #[doc(hidden)]
6292            type UnderlyingSolTuple<'a> = (
6293                alloy::sol_types::sol_data::Address,
6294                alloy::sol_types::sol_data::Address,
6295                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6296                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6297                alloy::sol_types::sol_data::Bytes,
6298            );
6299            #[doc(hidden)]
6300            type UnderlyingRustTuple<'a> = (
6301                alloy::sol_types::private::Address,
6302                alloy::sol_types::private::Address,
6303                alloy::sol_types::private::Vec<
6304                    alloy::sol_types::private::primitives::aliases::U256,
6305                >,
6306                alloy::sol_types::private::Vec<
6307                    alloy::sol_types::private::primitives::aliases::U256,
6308                >,
6309                alloy::sol_types::private::Bytes,
6310            );
6311            #[cfg(test)]
6312            #[allow(dead_code, unreachable_patterns)]
6313            fn _type_assertion(
6314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6315            ) {
6316                match _t {
6317                    alloy_sol_types::private::AssertTypeEq::<
6318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6319                    >(_) => {}
6320                }
6321            }
6322            #[automatically_derived]
6323            #[doc(hidden)]
6324            impl ::core::convert::From<onERC1155BatchReceivedCall>
6325            for UnderlyingRustTuple<'_> {
6326                fn from(value: onERC1155BatchReceivedCall) -> Self {
6327                    (value._0, value._1, value._2, value._3, value._4)
6328                }
6329            }
6330            #[automatically_derived]
6331            #[doc(hidden)]
6332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6333            for onERC1155BatchReceivedCall {
6334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6335                    Self {
6336                        _0: tuple.0,
6337                        _1: tuple.1,
6338                        _2: tuple.2,
6339                        _3: tuple.3,
6340                        _4: tuple.4,
6341                    }
6342                }
6343            }
6344        }
6345        {
6346            #[doc(hidden)]
6347            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6348            #[doc(hidden)]
6349            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6350            #[cfg(test)]
6351            #[allow(dead_code, unreachable_patterns)]
6352            fn _type_assertion(
6353                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6354            ) {
6355                match _t {
6356                    alloy_sol_types::private::AssertTypeEq::<
6357                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6358                    >(_) => {}
6359                }
6360            }
6361            #[automatically_derived]
6362            #[doc(hidden)]
6363            impl ::core::convert::From<onERC1155BatchReceivedReturn>
6364            for UnderlyingRustTuple<'_> {
6365                fn from(value: onERC1155BatchReceivedReturn) -> Self {
6366                    (value._0,)
6367                }
6368            }
6369            #[automatically_derived]
6370            #[doc(hidden)]
6371            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6372            for onERC1155BatchReceivedReturn {
6373                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6374                    Self { _0: tuple.0 }
6375                }
6376            }
6377        }
6378        #[automatically_derived]
6379        impl alloy_sol_types::SolCall for onERC1155BatchReceivedCall {
6380            type Parameters<'a> = (
6381                alloy::sol_types::sol_data::Address,
6382                alloy::sol_types::sol_data::Address,
6383                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6384                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6385                alloy::sol_types::sol_data::Bytes,
6386            );
6387            type Token<'a> = <Self::Parameters<
6388                'a,
6389            > as alloy_sol_types::SolType>::Token<'a>;
6390            type Return = alloy::sol_types::private::FixedBytes<4>;
6391            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6392            type ReturnToken<'a> = <Self::ReturnTuple<
6393                'a,
6394            > as alloy_sol_types::SolType>::Token<'a>;
6395            const SIGNATURE: &'static str = "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)";
6396            const SELECTOR: [u8; 4] = [188u8, 25u8, 124u8, 129u8];
6397            #[inline]
6398            fn new<'a>(
6399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6400            ) -> Self {
6401                tuple.into()
6402            }
6403            #[inline]
6404            fn tokenize(&self) -> Self::Token<'_> {
6405                (
6406                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6407                        &self._0,
6408                    ),
6409                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6410                        &self._1,
6411                    ),
6412                    <alloy::sol_types::sol_data::Array<
6413                        alloy::sol_types::sol_data::Uint<256>,
6414                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6415                    <alloy::sol_types::sol_data::Array<
6416                        alloy::sol_types::sol_data::Uint<256>,
6417                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6418                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6419                        &self._4,
6420                    ),
6421                )
6422            }
6423            #[inline]
6424            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6425                (
6426                    <alloy::sol_types::sol_data::FixedBytes<
6427                        4,
6428                    > as alloy_sol_types::SolType>::tokenize(ret),
6429                )
6430            }
6431            #[inline]
6432            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6433                <Self::ReturnTuple<
6434                    '_,
6435                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6436                    .map(|r| {
6437                        let r: onERC1155BatchReceivedReturn = r.into();
6438                        r._0
6439                    })
6440            }
6441            #[inline]
6442            fn abi_decode_returns_validate(
6443                data: &[u8],
6444            ) -> alloy_sol_types::Result<Self::Return> {
6445                <Self::ReturnTuple<
6446                    '_,
6447                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6448                    .map(|r| {
6449                        let r: onERC1155BatchReceivedReturn = r.into();
6450                        r._0
6451                    })
6452            }
6453        }
6454    };
6455    #[derive(serde::Serialize, serde::Deserialize)]
6456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6457    /**Function with signature `onERC1155Received(address,address,uint256,uint256,bytes)` and selector `0xf23a6e61`.
6458```solidity
6459function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
6460```*/
6461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6462    #[derive(Clone)]
6463    pub struct onERC1155ReceivedCall {
6464        #[allow(missing_docs)]
6465        pub _0: alloy::sol_types::private::Address,
6466        #[allow(missing_docs)]
6467        pub _1: alloy::sol_types::private::Address,
6468        #[allow(missing_docs)]
6469        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6470        #[allow(missing_docs)]
6471        pub _3: alloy::sol_types::private::primitives::aliases::U256,
6472        #[allow(missing_docs)]
6473        pub _4: alloy::sol_types::private::Bytes,
6474    }
6475    #[derive(serde::Serialize, serde::Deserialize)]
6476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6477    ///Container type for the return parameters of the [`onERC1155Received(address,address,uint256,uint256,bytes)`](onERC1155ReceivedCall) function.
6478    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6479    #[derive(Clone)]
6480    pub struct onERC1155ReceivedReturn {
6481        #[allow(missing_docs)]
6482        pub _0: alloy::sol_types::private::FixedBytes<4>,
6483    }
6484    #[allow(
6485        non_camel_case_types,
6486        non_snake_case,
6487        clippy::pub_underscore_fields,
6488        clippy::style
6489    )]
6490    const _: () = {
6491        use alloy::sol_types as alloy_sol_types;
6492        {
6493            #[doc(hidden)]
6494            type UnderlyingSolTuple<'a> = (
6495                alloy::sol_types::sol_data::Address,
6496                alloy::sol_types::sol_data::Address,
6497                alloy::sol_types::sol_data::Uint<256>,
6498                alloy::sol_types::sol_data::Uint<256>,
6499                alloy::sol_types::sol_data::Bytes,
6500            );
6501            #[doc(hidden)]
6502            type UnderlyingRustTuple<'a> = (
6503                alloy::sol_types::private::Address,
6504                alloy::sol_types::private::Address,
6505                alloy::sol_types::private::primitives::aliases::U256,
6506                alloy::sol_types::private::primitives::aliases::U256,
6507                alloy::sol_types::private::Bytes,
6508            );
6509            #[cfg(test)]
6510            #[allow(dead_code, unreachable_patterns)]
6511            fn _type_assertion(
6512                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6513            ) {
6514                match _t {
6515                    alloy_sol_types::private::AssertTypeEq::<
6516                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6517                    >(_) => {}
6518                }
6519            }
6520            #[automatically_derived]
6521            #[doc(hidden)]
6522            impl ::core::convert::From<onERC1155ReceivedCall>
6523            for UnderlyingRustTuple<'_> {
6524                fn from(value: onERC1155ReceivedCall) -> Self {
6525                    (value._0, value._1, value._2, value._3, value._4)
6526                }
6527            }
6528            #[automatically_derived]
6529            #[doc(hidden)]
6530            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6531            for onERC1155ReceivedCall {
6532                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6533                    Self {
6534                        _0: tuple.0,
6535                        _1: tuple.1,
6536                        _2: tuple.2,
6537                        _3: tuple.3,
6538                        _4: tuple.4,
6539                    }
6540                }
6541            }
6542        }
6543        {
6544            #[doc(hidden)]
6545            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6546            #[doc(hidden)]
6547            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6548            #[cfg(test)]
6549            #[allow(dead_code, unreachable_patterns)]
6550            fn _type_assertion(
6551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6552            ) {
6553                match _t {
6554                    alloy_sol_types::private::AssertTypeEq::<
6555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6556                    >(_) => {}
6557                }
6558            }
6559            #[automatically_derived]
6560            #[doc(hidden)]
6561            impl ::core::convert::From<onERC1155ReceivedReturn>
6562            for UnderlyingRustTuple<'_> {
6563                fn from(value: onERC1155ReceivedReturn) -> Self {
6564                    (value._0,)
6565                }
6566            }
6567            #[automatically_derived]
6568            #[doc(hidden)]
6569            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6570            for onERC1155ReceivedReturn {
6571                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6572                    Self { _0: tuple.0 }
6573                }
6574            }
6575        }
6576        #[automatically_derived]
6577        impl alloy_sol_types::SolCall for onERC1155ReceivedCall {
6578            type Parameters<'a> = (
6579                alloy::sol_types::sol_data::Address,
6580                alloy::sol_types::sol_data::Address,
6581                alloy::sol_types::sol_data::Uint<256>,
6582                alloy::sol_types::sol_data::Uint<256>,
6583                alloy::sol_types::sol_data::Bytes,
6584            );
6585            type Token<'a> = <Self::Parameters<
6586                'a,
6587            > as alloy_sol_types::SolType>::Token<'a>;
6588            type Return = alloy::sol_types::private::FixedBytes<4>;
6589            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6590            type ReturnToken<'a> = <Self::ReturnTuple<
6591                'a,
6592            > as alloy_sol_types::SolType>::Token<'a>;
6593            const SIGNATURE: &'static str = "onERC1155Received(address,address,uint256,uint256,bytes)";
6594            const SELECTOR: [u8; 4] = [242u8, 58u8, 110u8, 97u8];
6595            #[inline]
6596            fn new<'a>(
6597                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6598            ) -> Self {
6599                tuple.into()
6600            }
6601            #[inline]
6602            fn tokenize(&self) -> Self::Token<'_> {
6603                (
6604                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6605                        &self._0,
6606                    ),
6607                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6608                        &self._1,
6609                    ),
6610                    <alloy::sol_types::sol_data::Uint<
6611                        256,
6612                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6613                    <alloy::sol_types::sol_data::Uint<
6614                        256,
6615                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6616                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6617                        &self._4,
6618                    ),
6619                )
6620            }
6621            #[inline]
6622            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6623                (
6624                    <alloy::sol_types::sol_data::FixedBytes<
6625                        4,
6626                    > as alloy_sol_types::SolType>::tokenize(ret),
6627                )
6628            }
6629            #[inline]
6630            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6631                <Self::ReturnTuple<
6632                    '_,
6633                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6634                    .map(|r| {
6635                        let r: onERC1155ReceivedReturn = r.into();
6636                        r._0
6637                    })
6638            }
6639            #[inline]
6640            fn abi_decode_returns_validate(
6641                data: &[u8],
6642            ) -> alloy_sol_types::Result<Self::Return> {
6643                <Self::ReturnTuple<
6644                    '_,
6645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6646                    .map(|r| {
6647                        let r: onERC1155ReceivedReturn = r.into();
6648                        r._0
6649                    })
6650            }
6651        }
6652    };
6653    #[derive(serde::Serialize, serde::Deserialize)]
6654    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6655    /**Function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`.
6656```solidity
6657function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
6658```*/
6659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6660    #[derive(Clone)]
6661    pub struct onERC721ReceivedCall {
6662        #[allow(missing_docs)]
6663        pub _0: alloy::sol_types::private::Address,
6664        #[allow(missing_docs)]
6665        pub _1: alloy::sol_types::private::Address,
6666        #[allow(missing_docs)]
6667        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6668        #[allow(missing_docs)]
6669        pub _3: alloy::sol_types::private::Bytes,
6670    }
6671    #[derive(serde::Serialize, serde::Deserialize)]
6672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6673    ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function.
6674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6675    #[derive(Clone)]
6676    pub struct onERC721ReceivedReturn {
6677        #[allow(missing_docs)]
6678        pub _0: alloy::sol_types::private::FixedBytes<4>,
6679    }
6680    #[allow(
6681        non_camel_case_types,
6682        non_snake_case,
6683        clippy::pub_underscore_fields,
6684        clippy::style
6685    )]
6686    const _: () = {
6687        use alloy::sol_types as alloy_sol_types;
6688        {
6689            #[doc(hidden)]
6690            type UnderlyingSolTuple<'a> = (
6691                alloy::sol_types::sol_data::Address,
6692                alloy::sol_types::sol_data::Address,
6693                alloy::sol_types::sol_data::Uint<256>,
6694                alloy::sol_types::sol_data::Bytes,
6695            );
6696            #[doc(hidden)]
6697            type UnderlyingRustTuple<'a> = (
6698                alloy::sol_types::private::Address,
6699                alloy::sol_types::private::Address,
6700                alloy::sol_types::private::primitives::aliases::U256,
6701                alloy::sol_types::private::Bytes,
6702            );
6703            #[cfg(test)]
6704            #[allow(dead_code, unreachable_patterns)]
6705            fn _type_assertion(
6706                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6707            ) {
6708                match _t {
6709                    alloy_sol_types::private::AssertTypeEq::<
6710                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6711                    >(_) => {}
6712                }
6713            }
6714            #[automatically_derived]
6715            #[doc(hidden)]
6716            impl ::core::convert::From<onERC721ReceivedCall>
6717            for UnderlyingRustTuple<'_> {
6718                fn from(value: onERC721ReceivedCall) -> Self {
6719                    (value._0, value._1, value._2, value._3)
6720                }
6721            }
6722            #[automatically_derived]
6723            #[doc(hidden)]
6724            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6725            for onERC721ReceivedCall {
6726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6727                    Self {
6728                        _0: tuple.0,
6729                        _1: tuple.1,
6730                        _2: tuple.2,
6731                        _3: tuple.3,
6732                    }
6733                }
6734            }
6735        }
6736        {
6737            #[doc(hidden)]
6738            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6739            #[doc(hidden)]
6740            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6741            #[cfg(test)]
6742            #[allow(dead_code, unreachable_patterns)]
6743            fn _type_assertion(
6744                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6745            ) {
6746                match _t {
6747                    alloy_sol_types::private::AssertTypeEq::<
6748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6749                    >(_) => {}
6750                }
6751            }
6752            #[automatically_derived]
6753            #[doc(hidden)]
6754            impl ::core::convert::From<onERC721ReceivedReturn>
6755            for UnderlyingRustTuple<'_> {
6756                fn from(value: onERC721ReceivedReturn) -> Self {
6757                    (value._0,)
6758                }
6759            }
6760            #[automatically_derived]
6761            #[doc(hidden)]
6762            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6763            for onERC721ReceivedReturn {
6764                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6765                    Self { _0: tuple.0 }
6766                }
6767            }
6768        }
6769        #[automatically_derived]
6770        impl alloy_sol_types::SolCall for onERC721ReceivedCall {
6771            type Parameters<'a> = (
6772                alloy::sol_types::sol_data::Address,
6773                alloy::sol_types::sol_data::Address,
6774                alloy::sol_types::sol_data::Uint<256>,
6775                alloy::sol_types::sol_data::Bytes,
6776            );
6777            type Token<'a> = <Self::Parameters<
6778                'a,
6779            > as alloy_sol_types::SolType>::Token<'a>;
6780            type Return = alloy::sol_types::private::FixedBytes<4>;
6781            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6782            type ReturnToken<'a> = <Self::ReturnTuple<
6783                'a,
6784            > as alloy_sol_types::SolType>::Token<'a>;
6785            const SIGNATURE: &'static str = "onERC721Received(address,address,uint256,bytes)";
6786            const SELECTOR: [u8; 4] = [21u8, 11u8, 122u8, 2u8];
6787            #[inline]
6788            fn new<'a>(
6789                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6790            ) -> Self {
6791                tuple.into()
6792            }
6793            #[inline]
6794            fn tokenize(&self) -> Self::Token<'_> {
6795                (
6796                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6797                        &self._0,
6798                    ),
6799                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6800                        &self._1,
6801                    ),
6802                    <alloy::sol_types::sol_data::Uint<
6803                        256,
6804                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6805                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6806                        &self._3,
6807                    ),
6808                )
6809            }
6810            #[inline]
6811            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6812                (
6813                    <alloy::sol_types::sol_data::FixedBytes<
6814                        4,
6815                    > as alloy_sol_types::SolType>::tokenize(ret),
6816                )
6817            }
6818            #[inline]
6819            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6820                <Self::ReturnTuple<
6821                    '_,
6822                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6823                    .map(|r| {
6824                        let r: onERC721ReceivedReturn = r.into();
6825                        r._0
6826                    })
6827            }
6828            #[inline]
6829            fn abi_decode_returns_validate(
6830                data: &[u8],
6831            ) -> alloy_sol_types::Result<Self::Return> {
6832                <Self::ReturnTuple<
6833                    '_,
6834                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6835                    .map(|r| {
6836                        let r: onERC721ReceivedReturn = r.into();
6837                        r._0
6838                    })
6839            }
6840        }
6841    };
6842    #[derive(serde::Serialize, serde::Deserialize)]
6843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6844    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
6845```solidity
6846function renounceRole(bytes32 role, address callerConfirmation) external;
6847```*/
6848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6849    #[derive(Clone)]
6850    pub struct renounceRoleCall {
6851        #[allow(missing_docs)]
6852        pub role: alloy::sol_types::private::FixedBytes<32>,
6853        #[allow(missing_docs)]
6854        pub callerConfirmation: alloy::sol_types::private::Address,
6855    }
6856    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
6857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6858    #[derive(Clone)]
6859    pub struct renounceRoleReturn {}
6860    #[allow(
6861        non_camel_case_types,
6862        non_snake_case,
6863        clippy::pub_underscore_fields,
6864        clippy::style
6865    )]
6866    const _: () = {
6867        use alloy::sol_types as alloy_sol_types;
6868        {
6869            #[doc(hidden)]
6870            type UnderlyingSolTuple<'a> = (
6871                alloy::sol_types::sol_data::FixedBytes<32>,
6872                alloy::sol_types::sol_data::Address,
6873            );
6874            #[doc(hidden)]
6875            type UnderlyingRustTuple<'a> = (
6876                alloy::sol_types::private::FixedBytes<32>,
6877                alloy::sol_types::private::Address,
6878            );
6879            #[cfg(test)]
6880            #[allow(dead_code, unreachable_patterns)]
6881            fn _type_assertion(
6882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6883            ) {
6884                match _t {
6885                    alloy_sol_types::private::AssertTypeEq::<
6886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6887                    >(_) => {}
6888                }
6889            }
6890            #[automatically_derived]
6891            #[doc(hidden)]
6892            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
6893                fn from(value: renounceRoleCall) -> Self {
6894                    (value.role, value.callerConfirmation)
6895                }
6896            }
6897            #[automatically_derived]
6898            #[doc(hidden)]
6899            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
6900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6901                    Self {
6902                        role: tuple.0,
6903                        callerConfirmation: tuple.1,
6904                    }
6905                }
6906            }
6907        }
6908        {
6909            #[doc(hidden)]
6910            type UnderlyingSolTuple<'a> = ();
6911            #[doc(hidden)]
6912            type UnderlyingRustTuple<'a> = ();
6913            #[cfg(test)]
6914            #[allow(dead_code, unreachable_patterns)]
6915            fn _type_assertion(
6916                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6917            ) {
6918                match _t {
6919                    alloy_sol_types::private::AssertTypeEq::<
6920                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6921                    >(_) => {}
6922                }
6923            }
6924            #[automatically_derived]
6925            #[doc(hidden)]
6926            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
6927                fn from(value: renounceRoleReturn) -> Self {
6928                    ()
6929                }
6930            }
6931            #[automatically_derived]
6932            #[doc(hidden)]
6933            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
6934                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6935                    Self {}
6936                }
6937            }
6938        }
6939        impl renounceRoleReturn {
6940            fn _tokenize(
6941                &self,
6942            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6943                ()
6944            }
6945        }
6946        #[automatically_derived]
6947        impl alloy_sol_types::SolCall for renounceRoleCall {
6948            type Parameters<'a> = (
6949                alloy::sol_types::sol_data::FixedBytes<32>,
6950                alloy::sol_types::sol_data::Address,
6951            );
6952            type Token<'a> = <Self::Parameters<
6953                'a,
6954            > as alloy_sol_types::SolType>::Token<'a>;
6955            type Return = renounceRoleReturn;
6956            type ReturnTuple<'a> = ();
6957            type ReturnToken<'a> = <Self::ReturnTuple<
6958                'a,
6959            > as alloy_sol_types::SolType>::Token<'a>;
6960            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
6961            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
6962            #[inline]
6963            fn new<'a>(
6964                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6965            ) -> Self {
6966                tuple.into()
6967            }
6968            #[inline]
6969            fn tokenize(&self) -> Self::Token<'_> {
6970                (
6971                    <alloy::sol_types::sol_data::FixedBytes<
6972                        32,
6973                    > as alloy_sol_types::SolType>::tokenize(&self.role),
6974                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6975                        &self.callerConfirmation,
6976                    ),
6977                )
6978            }
6979            #[inline]
6980            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6981                renounceRoleReturn::_tokenize(ret)
6982            }
6983            #[inline]
6984            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6985                <Self::ReturnTuple<
6986                    '_,
6987                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6988                    .map(Into::into)
6989            }
6990            #[inline]
6991            fn abi_decode_returns_validate(
6992                data: &[u8],
6993            ) -> alloy_sol_types::Result<Self::Return> {
6994                <Self::ReturnTuple<
6995                    '_,
6996                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6997                    .map(Into::into)
6998            }
6999        }
7000    };
7001    #[derive(serde::Serialize, serde::Deserialize)]
7002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7003    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
7004```solidity
7005function revokeRole(bytes32 role, address account) external;
7006```*/
7007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7008    #[derive(Clone)]
7009    pub struct revokeRoleCall {
7010        #[allow(missing_docs)]
7011        pub role: alloy::sol_types::private::FixedBytes<32>,
7012        #[allow(missing_docs)]
7013        pub account: alloy::sol_types::private::Address,
7014    }
7015    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
7016    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7017    #[derive(Clone)]
7018    pub struct revokeRoleReturn {}
7019    #[allow(
7020        non_camel_case_types,
7021        non_snake_case,
7022        clippy::pub_underscore_fields,
7023        clippy::style
7024    )]
7025    const _: () = {
7026        use alloy::sol_types as alloy_sol_types;
7027        {
7028            #[doc(hidden)]
7029            type UnderlyingSolTuple<'a> = (
7030                alloy::sol_types::sol_data::FixedBytes<32>,
7031                alloy::sol_types::sol_data::Address,
7032            );
7033            #[doc(hidden)]
7034            type UnderlyingRustTuple<'a> = (
7035                alloy::sol_types::private::FixedBytes<32>,
7036                alloy::sol_types::private::Address,
7037            );
7038            #[cfg(test)]
7039            #[allow(dead_code, unreachable_patterns)]
7040            fn _type_assertion(
7041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7042            ) {
7043                match _t {
7044                    alloy_sol_types::private::AssertTypeEq::<
7045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7046                    >(_) => {}
7047                }
7048            }
7049            #[automatically_derived]
7050            #[doc(hidden)]
7051            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
7052                fn from(value: revokeRoleCall) -> Self {
7053                    (value.role, value.account)
7054                }
7055            }
7056            #[automatically_derived]
7057            #[doc(hidden)]
7058            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
7059                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7060                    Self {
7061                        role: tuple.0,
7062                        account: tuple.1,
7063                    }
7064                }
7065            }
7066        }
7067        {
7068            #[doc(hidden)]
7069            type UnderlyingSolTuple<'a> = ();
7070            #[doc(hidden)]
7071            type UnderlyingRustTuple<'a> = ();
7072            #[cfg(test)]
7073            #[allow(dead_code, unreachable_patterns)]
7074            fn _type_assertion(
7075                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7076            ) {
7077                match _t {
7078                    alloy_sol_types::private::AssertTypeEq::<
7079                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7080                    >(_) => {}
7081                }
7082            }
7083            #[automatically_derived]
7084            #[doc(hidden)]
7085            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
7086                fn from(value: revokeRoleReturn) -> Self {
7087                    ()
7088                }
7089            }
7090            #[automatically_derived]
7091            #[doc(hidden)]
7092            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
7093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7094                    Self {}
7095                }
7096            }
7097        }
7098        impl revokeRoleReturn {
7099            fn _tokenize(
7100                &self,
7101            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7102                ()
7103            }
7104        }
7105        #[automatically_derived]
7106        impl alloy_sol_types::SolCall for revokeRoleCall {
7107            type Parameters<'a> = (
7108                alloy::sol_types::sol_data::FixedBytes<32>,
7109                alloy::sol_types::sol_data::Address,
7110            );
7111            type Token<'a> = <Self::Parameters<
7112                'a,
7113            > as alloy_sol_types::SolType>::Token<'a>;
7114            type Return = revokeRoleReturn;
7115            type ReturnTuple<'a> = ();
7116            type ReturnToken<'a> = <Self::ReturnTuple<
7117                'a,
7118            > as alloy_sol_types::SolType>::Token<'a>;
7119            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
7120            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
7121            #[inline]
7122            fn new<'a>(
7123                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7124            ) -> Self {
7125                tuple.into()
7126            }
7127            #[inline]
7128            fn tokenize(&self) -> Self::Token<'_> {
7129                (
7130                    <alloy::sol_types::sol_data::FixedBytes<
7131                        32,
7132                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7133                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7134                        &self.account,
7135                    ),
7136                )
7137            }
7138            #[inline]
7139            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7140                revokeRoleReturn::_tokenize(ret)
7141            }
7142            #[inline]
7143            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7144                <Self::ReturnTuple<
7145                    '_,
7146                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7147                    .map(Into::into)
7148            }
7149            #[inline]
7150            fn abi_decode_returns_validate(
7151                data: &[u8],
7152            ) -> alloy_sol_types::Result<Self::Return> {
7153                <Self::ReturnTuple<
7154                    '_,
7155                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7156                    .map(Into::into)
7157            }
7158        }
7159    };
7160    #[derive(serde::Serialize, serde::Deserialize)]
7161    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7162    /**Function with signature `schedule(address,uint256,bytes,bytes32,bytes32,uint256)` and selector `0x01d5062a`.
7163```solidity
7164function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7165```*/
7166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7167    #[derive(Clone)]
7168    pub struct scheduleCall {
7169        #[allow(missing_docs)]
7170        pub target: alloy::sol_types::private::Address,
7171        #[allow(missing_docs)]
7172        pub value: alloy::sol_types::private::primitives::aliases::U256,
7173        #[allow(missing_docs)]
7174        pub data: alloy::sol_types::private::Bytes,
7175        #[allow(missing_docs)]
7176        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7177        #[allow(missing_docs)]
7178        pub salt: alloy::sol_types::private::FixedBytes<32>,
7179        #[allow(missing_docs)]
7180        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7181    }
7182    ///Container type for the return parameters of the [`schedule(address,uint256,bytes,bytes32,bytes32,uint256)`](scheduleCall) function.
7183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7184    #[derive(Clone)]
7185    pub struct scheduleReturn {}
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> = (
7197                alloy::sol_types::sol_data::Address,
7198                alloy::sol_types::sol_data::Uint<256>,
7199                alloy::sol_types::sol_data::Bytes,
7200                alloy::sol_types::sol_data::FixedBytes<32>,
7201                alloy::sol_types::sol_data::FixedBytes<32>,
7202                alloy::sol_types::sol_data::Uint<256>,
7203            );
7204            #[doc(hidden)]
7205            type UnderlyingRustTuple<'a> = (
7206                alloy::sol_types::private::Address,
7207                alloy::sol_types::private::primitives::aliases::U256,
7208                alloy::sol_types::private::Bytes,
7209                alloy::sol_types::private::FixedBytes<32>,
7210                alloy::sol_types::private::FixedBytes<32>,
7211                alloy::sol_types::private::primitives::aliases::U256,
7212            );
7213            #[cfg(test)]
7214            #[allow(dead_code, unreachable_patterns)]
7215            fn _type_assertion(
7216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7217            ) {
7218                match _t {
7219                    alloy_sol_types::private::AssertTypeEq::<
7220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7221                    >(_) => {}
7222                }
7223            }
7224            #[automatically_derived]
7225            #[doc(hidden)]
7226            impl ::core::convert::From<scheduleCall> for UnderlyingRustTuple<'_> {
7227                fn from(value: scheduleCall) -> Self {
7228                    (
7229                        value.target,
7230                        value.value,
7231                        value.data,
7232                        value.predecessor,
7233                        value.salt,
7234                        value.delay,
7235                    )
7236                }
7237            }
7238            #[automatically_derived]
7239            #[doc(hidden)]
7240            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleCall {
7241                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7242                    Self {
7243                        target: tuple.0,
7244                        value: tuple.1,
7245                        data: tuple.2,
7246                        predecessor: tuple.3,
7247                        salt: tuple.4,
7248                        delay: tuple.5,
7249                    }
7250                }
7251            }
7252        }
7253        {
7254            #[doc(hidden)]
7255            type UnderlyingSolTuple<'a> = ();
7256            #[doc(hidden)]
7257            type UnderlyingRustTuple<'a> = ();
7258            #[cfg(test)]
7259            #[allow(dead_code, unreachable_patterns)]
7260            fn _type_assertion(
7261                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7262            ) {
7263                match _t {
7264                    alloy_sol_types::private::AssertTypeEq::<
7265                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7266                    >(_) => {}
7267                }
7268            }
7269            #[automatically_derived]
7270            #[doc(hidden)]
7271            impl ::core::convert::From<scheduleReturn> for UnderlyingRustTuple<'_> {
7272                fn from(value: scheduleReturn) -> Self {
7273                    ()
7274                }
7275            }
7276            #[automatically_derived]
7277            #[doc(hidden)]
7278            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleReturn {
7279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7280                    Self {}
7281                }
7282            }
7283        }
7284        impl scheduleReturn {
7285            fn _tokenize(
7286                &self,
7287            ) -> <scheduleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7288                ()
7289            }
7290        }
7291        #[automatically_derived]
7292        impl alloy_sol_types::SolCall for scheduleCall {
7293            type Parameters<'a> = (
7294                alloy::sol_types::sol_data::Address,
7295                alloy::sol_types::sol_data::Uint<256>,
7296                alloy::sol_types::sol_data::Bytes,
7297                alloy::sol_types::sol_data::FixedBytes<32>,
7298                alloy::sol_types::sol_data::FixedBytes<32>,
7299                alloy::sol_types::sol_data::Uint<256>,
7300            );
7301            type Token<'a> = <Self::Parameters<
7302                'a,
7303            > as alloy_sol_types::SolType>::Token<'a>;
7304            type Return = scheduleReturn;
7305            type ReturnTuple<'a> = ();
7306            type ReturnToken<'a> = <Self::ReturnTuple<
7307                'a,
7308            > as alloy_sol_types::SolType>::Token<'a>;
7309            const SIGNATURE: &'static str = "schedule(address,uint256,bytes,bytes32,bytes32,uint256)";
7310            const SELECTOR: [u8; 4] = [1u8, 213u8, 6u8, 42u8];
7311            #[inline]
7312            fn new<'a>(
7313                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7314            ) -> Self {
7315                tuple.into()
7316            }
7317            #[inline]
7318            fn tokenize(&self) -> Self::Token<'_> {
7319                (
7320                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7321                        &self.target,
7322                    ),
7323                    <alloy::sol_types::sol_data::Uint<
7324                        256,
7325                    > as alloy_sol_types::SolType>::tokenize(&self.value),
7326                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7327                        &self.data,
7328                    ),
7329                    <alloy::sol_types::sol_data::FixedBytes<
7330                        32,
7331                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7332                    <alloy::sol_types::sol_data::FixedBytes<
7333                        32,
7334                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7335                    <alloy::sol_types::sol_data::Uint<
7336                        256,
7337                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7338                )
7339            }
7340            #[inline]
7341            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7342                scheduleReturn::_tokenize(ret)
7343            }
7344            #[inline]
7345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7346                <Self::ReturnTuple<
7347                    '_,
7348                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7349                    .map(Into::into)
7350            }
7351            #[inline]
7352            fn abi_decode_returns_validate(
7353                data: &[u8],
7354            ) -> alloy_sol_types::Result<Self::Return> {
7355                <Self::ReturnTuple<
7356                    '_,
7357                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7358                    .map(Into::into)
7359            }
7360        }
7361    };
7362    #[derive(serde::Serialize, serde::Deserialize)]
7363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7364    /**Function with signature `scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)` and selector `0x8f2a0bb0`.
7365```solidity
7366function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7367```*/
7368    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7369    #[derive(Clone)]
7370    pub struct scheduleBatchCall {
7371        #[allow(missing_docs)]
7372        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7373        #[allow(missing_docs)]
7374        pub values: alloy::sol_types::private::Vec<
7375            alloy::sol_types::private::primitives::aliases::U256,
7376        >,
7377        #[allow(missing_docs)]
7378        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7379        #[allow(missing_docs)]
7380        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7381        #[allow(missing_docs)]
7382        pub salt: alloy::sol_types::private::FixedBytes<32>,
7383        #[allow(missing_docs)]
7384        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7385    }
7386    ///Container type for the return parameters of the [`scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)`](scheduleBatchCall) function.
7387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7388    #[derive(Clone)]
7389    pub struct scheduleBatchReturn {}
7390    #[allow(
7391        non_camel_case_types,
7392        non_snake_case,
7393        clippy::pub_underscore_fields,
7394        clippy::style
7395    )]
7396    const _: () = {
7397        use alloy::sol_types as alloy_sol_types;
7398        {
7399            #[doc(hidden)]
7400            type UnderlyingSolTuple<'a> = (
7401                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7402                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7403                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7404                alloy::sol_types::sol_data::FixedBytes<32>,
7405                alloy::sol_types::sol_data::FixedBytes<32>,
7406                alloy::sol_types::sol_data::Uint<256>,
7407            );
7408            #[doc(hidden)]
7409            type UnderlyingRustTuple<'a> = (
7410                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7411                alloy::sol_types::private::Vec<
7412                    alloy::sol_types::private::primitives::aliases::U256,
7413                >,
7414                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7415                alloy::sol_types::private::FixedBytes<32>,
7416                alloy::sol_types::private::FixedBytes<32>,
7417                alloy::sol_types::private::primitives::aliases::U256,
7418            );
7419            #[cfg(test)]
7420            #[allow(dead_code, unreachable_patterns)]
7421            fn _type_assertion(
7422                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7423            ) {
7424                match _t {
7425                    alloy_sol_types::private::AssertTypeEq::<
7426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7427                    >(_) => {}
7428                }
7429            }
7430            #[automatically_derived]
7431            #[doc(hidden)]
7432            impl ::core::convert::From<scheduleBatchCall> for UnderlyingRustTuple<'_> {
7433                fn from(value: scheduleBatchCall) -> Self {
7434                    (
7435                        value.targets,
7436                        value.values,
7437                        value.payloads,
7438                        value.predecessor,
7439                        value.salt,
7440                        value.delay,
7441                    )
7442                }
7443            }
7444            #[automatically_derived]
7445            #[doc(hidden)]
7446            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchCall {
7447                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7448                    Self {
7449                        targets: tuple.0,
7450                        values: tuple.1,
7451                        payloads: tuple.2,
7452                        predecessor: tuple.3,
7453                        salt: tuple.4,
7454                        delay: tuple.5,
7455                    }
7456                }
7457            }
7458        }
7459        {
7460            #[doc(hidden)]
7461            type UnderlyingSolTuple<'a> = ();
7462            #[doc(hidden)]
7463            type UnderlyingRustTuple<'a> = ();
7464            #[cfg(test)]
7465            #[allow(dead_code, unreachable_patterns)]
7466            fn _type_assertion(
7467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7468            ) {
7469                match _t {
7470                    alloy_sol_types::private::AssertTypeEq::<
7471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7472                    >(_) => {}
7473                }
7474            }
7475            #[automatically_derived]
7476            #[doc(hidden)]
7477            impl ::core::convert::From<scheduleBatchReturn> for UnderlyingRustTuple<'_> {
7478                fn from(value: scheduleBatchReturn) -> Self {
7479                    ()
7480                }
7481            }
7482            #[automatically_derived]
7483            #[doc(hidden)]
7484            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchReturn {
7485                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7486                    Self {}
7487                }
7488            }
7489        }
7490        impl scheduleBatchReturn {
7491            fn _tokenize(
7492                &self,
7493            ) -> <scheduleBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7494                ()
7495            }
7496        }
7497        #[automatically_derived]
7498        impl alloy_sol_types::SolCall for scheduleBatchCall {
7499            type Parameters<'a> = (
7500                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7501                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7502                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7503                alloy::sol_types::sol_data::FixedBytes<32>,
7504                alloy::sol_types::sol_data::FixedBytes<32>,
7505                alloy::sol_types::sol_data::Uint<256>,
7506            );
7507            type Token<'a> = <Self::Parameters<
7508                'a,
7509            > as alloy_sol_types::SolType>::Token<'a>;
7510            type Return = scheduleBatchReturn;
7511            type ReturnTuple<'a> = ();
7512            type ReturnToken<'a> = <Self::ReturnTuple<
7513                'a,
7514            > as alloy_sol_types::SolType>::Token<'a>;
7515            const SIGNATURE: &'static str = "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)";
7516            const SELECTOR: [u8; 4] = [143u8, 42u8, 11u8, 176u8];
7517            #[inline]
7518            fn new<'a>(
7519                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7520            ) -> Self {
7521                tuple.into()
7522            }
7523            #[inline]
7524            fn tokenize(&self) -> Self::Token<'_> {
7525                (
7526                    <alloy::sol_types::sol_data::Array<
7527                        alloy::sol_types::sol_data::Address,
7528                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
7529                    <alloy::sol_types::sol_data::Array<
7530                        alloy::sol_types::sol_data::Uint<256>,
7531                    > as alloy_sol_types::SolType>::tokenize(&self.values),
7532                    <alloy::sol_types::sol_data::Array<
7533                        alloy::sol_types::sol_data::Bytes,
7534                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
7535                    <alloy::sol_types::sol_data::FixedBytes<
7536                        32,
7537                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7538                    <alloy::sol_types::sol_data::FixedBytes<
7539                        32,
7540                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7541                    <alloy::sol_types::sol_data::Uint<
7542                        256,
7543                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7544                )
7545            }
7546            #[inline]
7547            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7548                scheduleBatchReturn::_tokenize(ret)
7549            }
7550            #[inline]
7551            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7552                <Self::ReturnTuple<
7553                    '_,
7554                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7555                    .map(Into::into)
7556            }
7557            #[inline]
7558            fn abi_decode_returns_validate(
7559                data: &[u8],
7560            ) -> alloy_sol_types::Result<Self::Return> {
7561                <Self::ReturnTuple<
7562                    '_,
7563                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7564                    .map(Into::into)
7565            }
7566        }
7567    };
7568    #[derive(serde::Serialize, serde::Deserialize)]
7569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7570    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
7571```solidity
7572function supportsInterface(bytes4 interfaceId) external view returns (bool);
7573```*/
7574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7575    #[derive(Clone)]
7576    pub struct supportsInterfaceCall {
7577        #[allow(missing_docs)]
7578        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
7579    }
7580    #[derive(serde::Serialize, serde::Deserialize)]
7581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7582    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
7583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7584    #[derive(Clone)]
7585    pub struct supportsInterfaceReturn {
7586        #[allow(missing_docs)]
7587        pub _0: bool,
7588    }
7589    #[allow(
7590        non_camel_case_types,
7591        non_snake_case,
7592        clippy::pub_underscore_fields,
7593        clippy::style
7594    )]
7595    const _: () = {
7596        use alloy::sol_types as alloy_sol_types;
7597        {
7598            #[doc(hidden)]
7599            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7600            #[doc(hidden)]
7601            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
7602            #[cfg(test)]
7603            #[allow(dead_code, unreachable_patterns)]
7604            fn _type_assertion(
7605                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7606            ) {
7607                match _t {
7608                    alloy_sol_types::private::AssertTypeEq::<
7609                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7610                    >(_) => {}
7611                }
7612            }
7613            #[automatically_derived]
7614            #[doc(hidden)]
7615            impl ::core::convert::From<supportsInterfaceCall>
7616            for UnderlyingRustTuple<'_> {
7617                fn from(value: supportsInterfaceCall) -> Self {
7618                    (value.interfaceId,)
7619                }
7620            }
7621            #[automatically_derived]
7622            #[doc(hidden)]
7623            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7624            for supportsInterfaceCall {
7625                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7626                    Self { interfaceId: tuple.0 }
7627                }
7628            }
7629        }
7630        {
7631            #[doc(hidden)]
7632            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7633            #[doc(hidden)]
7634            type UnderlyingRustTuple<'a> = (bool,);
7635            #[cfg(test)]
7636            #[allow(dead_code, unreachable_patterns)]
7637            fn _type_assertion(
7638                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7639            ) {
7640                match _t {
7641                    alloy_sol_types::private::AssertTypeEq::<
7642                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7643                    >(_) => {}
7644                }
7645            }
7646            #[automatically_derived]
7647            #[doc(hidden)]
7648            impl ::core::convert::From<supportsInterfaceReturn>
7649            for UnderlyingRustTuple<'_> {
7650                fn from(value: supportsInterfaceReturn) -> Self {
7651                    (value._0,)
7652                }
7653            }
7654            #[automatically_derived]
7655            #[doc(hidden)]
7656            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7657            for supportsInterfaceReturn {
7658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7659                    Self { _0: tuple.0 }
7660                }
7661            }
7662        }
7663        #[automatically_derived]
7664        impl alloy_sol_types::SolCall for supportsInterfaceCall {
7665            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7666            type Token<'a> = <Self::Parameters<
7667                'a,
7668            > as alloy_sol_types::SolType>::Token<'a>;
7669            type Return = bool;
7670            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7671            type ReturnToken<'a> = <Self::ReturnTuple<
7672                'a,
7673            > as alloy_sol_types::SolType>::Token<'a>;
7674            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
7675            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
7676            #[inline]
7677            fn new<'a>(
7678                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7679            ) -> Self {
7680                tuple.into()
7681            }
7682            #[inline]
7683            fn tokenize(&self) -> Self::Token<'_> {
7684                (
7685                    <alloy::sol_types::sol_data::FixedBytes<
7686                        4,
7687                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
7688                )
7689            }
7690            #[inline]
7691            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7692                (
7693                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
7694                        ret,
7695                    ),
7696                )
7697            }
7698            #[inline]
7699            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7700                <Self::ReturnTuple<
7701                    '_,
7702                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7703                    .map(|r| {
7704                        let r: supportsInterfaceReturn = r.into();
7705                        r._0
7706                    })
7707            }
7708            #[inline]
7709            fn abi_decode_returns_validate(
7710                data: &[u8],
7711            ) -> alloy_sol_types::Result<Self::Return> {
7712                <Self::ReturnTuple<
7713                    '_,
7714                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7715                    .map(|r| {
7716                        let r: supportsInterfaceReturn = r.into();
7717                        r._0
7718                    })
7719            }
7720        }
7721    };
7722    #[derive(serde::Serialize, serde::Deserialize)]
7723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7724    /**Function with signature `updateDelay(uint256)` and selector `0x64d62353`.
7725```solidity
7726function updateDelay(uint256 newDelay) external;
7727```*/
7728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7729    #[derive(Clone)]
7730    pub struct updateDelayCall {
7731        #[allow(missing_docs)]
7732        pub newDelay: alloy::sol_types::private::primitives::aliases::U256,
7733    }
7734    ///Container type for the return parameters of the [`updateDelay(uint256)`](updateDelayCall) function.
7735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7736    #[derive(Clone)]
7737    pub struct updateDelayReturn {}
7738    #[allow(
7739        non_camel_case_types,
7740        non_snake_case,
7741        clippy::pub_underscore_fields,
7742        clippy::style
7743    )]
7744    const _: () = {
7745        use alloy::sol_types as alloy_sol_types;
7746        {
7747            #[doc(hidden)]
7748            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7749            #[doc(hidden)]
7750            type UnderlyingRustTuple<'a> = (
7751                alloy::sol_types::private::primitives::aliases::U256,
7752            );
7753            #[cfg(test)]
7754            #[allow(dead_code, unreachable_patterns)]
7755            fn _type_assertion(
7756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7757            ) {
7758                match _t {
7759                    alloy_sol_types::private::AssertTypeEq::<
7760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7761                    >(_) => {}
7762                }
7763            }
7764            #[automatically_derived]
7765            #[doc(hidden)]
7766            impl ::core::convert::From<updateDelayCall> for UnderlyingRustTuple<'_> {
7767                fn from(value: updateDelayCall) -> Self {
7768                    (value.newDelay,)
7769                }
7770            }
7771            #[automatically_derived]
7772            #[doc(hidden)]
7773            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayCall {
7774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7775                    Self { newDelay: tuple.0 }
7776                }
7777            }
7778        }
7779        {
7780            #[doc(hidden)]
7781            type UnderlyingSolTuple<'a> = ();
7782            #[doc(hidden)]
7783            type UnderlyingRustTuple<'a> = ();
7784            #[cfg(test)]
7785            #[allow(dead_code, unreachable_patterns)]
7786            fn _type_assertion(
7787                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7788            ) {
7789                match _t {
7790                    alloy_sol_types::private::AssertTypeEq::<
7791                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7792                    >(_) => {}
7793                }
7794            }
7795            #[automatically_derived]
7796            #[doc(hidden)]
7797            impl ::core::convert::From<updateDelayReturn> for UnderlyingRustTuple<'_> {
7798                fn from(value: updateDelayReturn) -> Self {
7799                    ()
7800                }
7801            }
7802            #[automatically_derived]
7803            #[doc(hidden)]
7804            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayReturn {
7805                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7806                    Self {}
7807                }
7808            }
7809        }
7810        impl updateDelayReturn {
7811            fn _tokenize(
7812                &self,
7813            ) -> <updateDelayCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7814                ()
7815            }
7816        }
7817        #[automatically_derived]
7818        impl alloy_sol_types::SolCall for updateDelayCall {
7819            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7820            type Token<'a> = <Self::Parameters<
7821                'a,
7822            > as alloy_sol_types::SolType>::Token<'a>;
7823            type Return = updateDelayReturn;
7824            type ReturnTuple<'a> = ();
7825            type ReturnToken<'a> = <Self::ReturnTuple<
7826                'a,
7827            > as alloy_sol_types::SolType>::Token<'a>;
7828            const SIGNATURE: &'static str = "updateDelay(uint256)";
7829            const SELECTOR: [u8; 4] = [100u8, 214u8, 35u8, 83u8];
7830            #[inline]
7831            fn new<'a>(
7832                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7833            ) -> Self {
7834                tuple.into()
7835            }
7836            #[inline]
7837            fn tokenize(&self) -> Self::Token<'_> {
7838                (
7839                    <alloy::sol_types::sol_data::Uint<
7840                        256,
7841                    > as alloy_sol_types::SolType>::tokenize(&self.newDelay),
7842                )
7843            }
7844            #[inline]
7845            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7846                updateDelayReturn::_tokenize(ret)
7847            }
7848            #[inline]
7849            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7850                <Self::ReturnTuple<
7851                    '_,
7852                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7853                    .map(Into::into)
7854            }
7855            #[inline]
7856            fn abi_decode_returns_validate(
7857                data: &[u8],
7858            ) -> alloy_sol_types::Result<Self::Return> {
7859                <Self::ReturnTuple<
7860                    '_,
7861                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7862                    .map(Into::into)
7863            }
7864        }
7865    };
7866    ///Container for all the [`SafeExitTimelock`](self) function calls.
7867    #[derive(serde::Serialize, serde::Deserialize)]
7868    #[derive()]
7869    pub enum SafeExitTimelockCalls {
7870        #[allow(missing_docs)]
7871        CANCELLER_ROLE(CANCELLER_ROLECall),
7872        #[allow(missing_docs)]
7873        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
7874        #[allow(missing_docs)]
7875        EXECUTOR_ROLE(EXECUTOR_ROLECall),
7876        #[allow(missing_docs)]
7877        PROPOSER_ROLE(PROPOSER_ROLECall),
7878        #[allow(missing_docs)]
7879        cancel(cancelCall),
7880        #[allow(missing_docs)]
7881        execute(executeCall),
7882        #[allow(missing_docs)]
7883        executeBatch(executeBatchCall),
7884        #[allow(missing_docs)]
7885        getMinDelay(getMinDelayCall),
7886        #[allow(missing_docs)]
7887        getOperationState(getOperationStateCall),
7888        #[allow(missing_docs)]
7889        getRoleAdmin(getRoleAdminCall),
7890        #[allow(missing_docs)]
7891        getTimestamp(getTimestampCall),
7892        #[allow(missing_docs)]
7893        grantRole(grantRoleCall),
7894        #[allow(missing_docs)]
7895        hasRole(hasRoleCall),
7896        #[allow(missing_docs)]
7897        hashOperation(hashOperationCall),
7898        #[allow(missing_docs)]
7899        hashOperationBatch(hashOperationBatchCall),
7900        #[allow(missing_docs)]
7901        isOperation(isOperationCall),
7902        #[allow(missing_docs)]
7903        isOperationDone(isOperationDoneCall),
7904        #[allow(missing_docs)]
7905        isOperationPending(isOperationPendingCall),
7906        #[allow(missing_docs)]
7907        isOperationReady(isOperationReadyCall),
7908        #[allow(missing_docs)]
7909        onERC1155BatchReceived(onERC1155BatchReceivedCall),
7910        #[allow(missing_docs)]
7911        onERC1155Received(onERC1155ReceivedCall),
7912        #[allow(missing_docs)]
7913        onERC721Received(onERC721ReceivedCall),
7914        #[allow(missing_docs)]
7915        renounceRole(renounceRoleCall),
7916        #[allow(missing_docs)]
7917        revokeRole(revokeRoleCall),
7918        #[allow(missing_docs)]
7919        schedule(scheduleCall),
7920        #[allow(missing_docs)]
7921        scheduleBatch(scheduleBatchCall),
7922        #[allow(missing_docs)]
7923        supportsInterface(supportsInterfaceCall),
7924        #[allow(missing_docs)]
7925        updateDelay(updateDelayCall),
7926    }
7927    #[automatically_derived]
7928    impl SafeExitTimelockCalls {
7929        /// All the selectors of this enum.
7930        ///
7931        /// Note that the selectors might not be in the same order as the variants.
7932        /// No guarantees are made about the order of the selectors.
7933        ///
7934        /// Prefer using `SolInterface` methods instead.
7935        pub const SELECTORS: &'static [[u8; 4usize]] = &[
7936            [1u8, 213u8, 6u8, 42u8],
7937            [1u8, 255u8, 201u8, 167u8],
7938            [7u8, 189u8, 2u8, 101u8],
7939            [19u8, 64u8, 8u8, 211u8],
7940            [19u8, 188u8, 159u8, 32u8],
7941            [21u8, 11u8, 122u8, 2u8],
7942            [36u8, 138u8, 156u8, 163u8],
7943            [42u8, 176u8, 245u8, 41u8],
7944            [47u8, 47u8, 241u8, 93u8],
7945            [49u8, 213u8, 7u8, 80u8],
7946            [54u8, 86u8, 138u8, 190u8],
7947            [88u8, 75u8, 21u8, 62u8],
7948            [100u8, 214u8, 35u8, 83u8],
7949            [121u8, 88u8, 0u8, 76u8],
7950            [128u8, 101u8, 101u8, 127u8],
7951            [143u8, 42u8, 11u8, 176u8],
7952            [143u8, 97u8, 244u8, 245u8],
7953            [145u8, 209u8, 72u8, 84u8],
7954            [162u8, 23u8, 253u8, 223u8],
7955            [176u8, 142u8, 81u8, 192u8],
7956            [177u8, 197u8, 244u8, 39u8],
7957            [188u8, 25u8, 124u8, 129u8],
7958            [196u8, 210u8, 82u8, 245u8],
7959            [212u8, 92u8, 68u8, 53u8],
7960            [213u8, 71u8, 116u8, 31u8],
7961            [227u8, 131u8, 53u8, 229u8],
7962            [242u8, 58u8, 110u8, 97u8],
7963            [242u8, 122u8, 12u8, 146u8],
7964        ];
7965    }
7966    #[automatically_derived]
7967    impl alloy_sol_types::SolInterface for SafeExitTimelockCalls {
7968        const NAME: &'static str = "SafeExitTimelockCalls";
7969        const MIN_DATA_LENGTH: usize = 0usize;
7970        const COUNT: usize = 28usize;
7971        #[inline]
7972        fn selector(&self) -> [u8; 4] {
7973            match self {
7974                Self::CANCELLER_ROLE(_) => {
7975                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7976                }
7977                Self::DEFAULT_ADMIN_ROLE(_) => {
7978                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7979                }
7980                Self::EXECUTOR_ROLE(_) => {
7981                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7982                }
7983                Self::PROPOSER_ROLE(_) => {
7984                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7985                }
7986                Self::cancel(_) => <cancelCall as alloy_sol_types::SolCall>::SELECTOR,
7987                Self::execute(_) => <executeCall as alloy_sol_types::SolCall>::SELECTOR,
7988                Self::executeBatch(_) => {
7989                    <executeBatchCall as alloy_sol_types::SolCall>::SELECTOR
7990                }
7991                Self::getMinDelay(_) => {
7992                    <getMinDelayCall as alloy_sol_types::SolCall>::SELECTOR
7993                }
7994                Self::getOperationState(_) => {
7995                    <getOperationStateCall as alloy_sol_types::SolCall>::SELECTOR
7996                }
7997                Self::getRoleAdmin(_) => {
7998                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
7999                }
8000                Self::getTimestamp(_) => {
8001                    <getTimestampCall as alloy_sol_types::SolCall>::SELECTOR
8002                }
8003                Self::grantRole(_) => {
8004                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
8005                }
8006                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
8007                Self::hashOperation(_) => {
8008                    <hashOperationCall as alloy_sol_types::SolCall>::SELECTOR
8009                }
8010                Self::hashOperationBatch(_) => {
8011                    <hashOperationBatchCall as alloy_sol_types::SolCall>::SELECTOR
8012                }
8013                Self::isOperation(_) => {
8014                    <isOperationCall as alloy_sol_types::SolCall>::SELECTOR
8015                }
8016                Self::isOperationDone(_) => {
8017                    <isOperationDoneCall as alloy_sol_types::SolCall>::SELECTOR
8018                }
8019                Self::isOperationPending(_) => {
8020                    <isOperationPendingCall as alloy_sol_types::SolCall>::SELECTOR
8021                }
8022                Self::isOperationReady(_) => {
8023                    <isOperationReadyCall as alloy_sol_types::SolCall>::SELECTOR
8024                }
8025                Self::onERC1155BatchReceived(_) => {
8026                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8027                }
8028                Self::onERC1155Received(_) => {
8029                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8030                }
8031                Self::onERC721Received(_) => {
8032                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8033                }
8034                Self::renounceRole(_) => {
8035                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
8036                }
8037                Self::revokeRole(_) => {
8038                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
8039                }
8040                Self::schedule(_) => <scheduleCall as alloy_sol_types::SolCall>::SELECTOR,
8041                Self::scheduleBatch(_) => {
8042                    <scheduleBatchCall as alloy_sol_types::SolCall>::SELECTOR
8043                }
8044                Self::supportsInterface(_) => {
8045                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
8046                }
8047                Self::updateDelay(_) => {
8048                    <updateDelayCall as alloy_sol_types::SolCall>::SELECTOR
8049                }
8050            }
8051        }
8052        #[inline]
8053        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8054            Self::SELECTORS.get(i).copied()
8055        }
8056        #[inline]
8057        fn valid_selector(selector: [u8; 4]) -> bool {
8058            Self::SELECTORS.binary_search(&selector).is_ok()
8059        }
8060        #[inline]
8061        #[allow(non_snake_case)]
8062        fn abi_decode_raw(
8063            selector: [u8; 4],
8064            data: &[u8],
8065        ) -> alloy_sol_types::Result<Self> {
8066            static DECODE_SHIMS: &[fn(
8067                &[u8],
8068            ) -> alloy_sol_types::Result<SafeExitTimelockCalls>] = &[
8069                {
8070                    fn schedule(
8071                        data: &[u8],
8072                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8073                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8074                            .map(SafeExitTimelockCalls::schedule)
8075                    }
8076                    schedule
8077                },
8078                {
8079                    fn supportsInterface(
8080                        data: &[u8],
8081                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8082                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
8083                                data,
8084                            )
8085                            .map(SafeExitTimelockCalls::supportsInterface)
8086                    }
8087                    supportsInterface
8088                },
8089                {
8090                    fn EXECUTOR_ROLE(
8091                        data: &[u8],
8092                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8093                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8094                                data,
8095                            )
8096                            .map(SafeExitTimelockCalls::EXECUTOR_ROLE)
8097                    }
8098                    EXECUTOR_ROLE
8099                },
8100                {
8101                    fn execute(
8102                        data: &[u8],
8103                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8104                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8105                            .map(SafeExitTimelockCalls::execute)
8106                    }
8107                    execute
8108                },
8109                {
8110                    fn isOperationReady(
8111                        data: &[u8],
8112                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8113                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw(
8114                                data,
8115                            )
8116                            .map(SafeExitTimelockCalls::isOperationReady)
8117                    }
8118                    isOperationReady
8119                },
8120                {
8121                    fn onERC721Received(
8122                        data: &[u8],
8123                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8124                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8125                                data,
8126                            )
8127                            .map(SafeExitTimelockCalls::onERC721Received)
8128                    }
8129                    onERC721Received
8130                },
8131                {
8132                    fn getRoleAdmin(
8133                        data: &[u8],
8134                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8135                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
8136                                data,
8137                            )
8138                            .map(SafeExitTimelockCalls::getRoleAdmin)
8139                    }
8140                    getRoleAdmin
8141                },
8142                {
8143                    fn isOperationDone(
8144                        data: &[u8],
8145                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8146                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw(
8147                                data,
8148                            )
8149                            .map(SafeExitTimelockCalls::isOperationDone)
8150                    }
8151                    isOperationDone
8152                },
8153                {
8154                    fn grantRole(
8155                        data: &[u8],
8156                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8157                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8158                            .map(SafeExitTimelockCalls::grantRole)
8159                    }
8160                    grantRole
8161                },
8162                {
8163                    fn isOperation(
8164                        data: &[u8],
8165                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8166                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
8167                                data,
8168                            )
8169                            .map(SafeExitTimelockCalls::isOperation)
8170                    }
8171                    isOperation
8172                },
8173                {
8174                    fn renounceRole(
8175                        data: &[u8],
8176                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8177                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8178                                data,
8179                            )
8180                            .map(SafeExitTimelockCalls::renounceRole)
8181                    }
8182                    renounceRole
8183                },
8184                {
8185                    fn isOperationPending(
8186                        data: &[u8],
8187                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8188                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw(
8189                                data,
8190                            )
8191                            .map(SafeExitTimelockCalls::isOperationPending)
8192                    }
8193                    isOperationPending
8194                },
8195                {
8196                    fn updateDelay(
8197                        data: &[u8],
8198                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8199                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
8200                                data,
8201                            )
8202                            .map(SafeExitTimelockCalls::updateDelay)
8203                    }
8204                    updateDelay
8205                },
8206                {
8207                    fn getOperationState(
8208                        data: &[u8],
8209                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8210                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
8211                                data,
8212                            )
8213                            .map(SafeExitTimelockCalls::getOperationState)
8214                    }
8215                    getOperationState
8216                },
8217                {
8218                    fn hashOperation(
8219                        data: &[u8],
8220                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8221                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
8222                                data,
8223                            )
8224                            .map(SafeExitTimelockCalls::hashOperation)
8225                    }
8226                    hashOperation
8227                },
8228                {
8229                    fn scheduleBatch(
8230                        data: &[u8],
8231                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8232                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8233                                data,
8234                            )
8235                            .map(SafeExitTimelockCalls::scheduleBatch)
8236                    }
8237                    scheduleBatch
8238                },
8239                {
8240                    fn PROPOSER_ROLE(
8241                        data: &[u8],
8242                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8243                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8244                                data,
8245                            )
8246                            .map(SafeExitTimelockCalls::PROPOSER_ROLE)
8247                    }
8248                    PROPOSER_ROLE
8249                },
8250                {
8251                    fn hasRole(
8252                        data: &[u8],
8253                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8254                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8255                            .map(SafeExitTimelockCalls::hasRole)
8256                    }
8257                    hasRole
8258                },
8259                {
8260                    fn DEFAULT_ADMIN_ROLE(
8261                        data: &[u8],
8262                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8263                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8264                                data,
8265                            )
8266                            .map(SafeExitTimelockCalls::DEFAULT_ADMIN_ROLE)
8267                    }
8268                    DEFAULT_ADMIN_ROLE
8269                },
8270                {
8271                    fn CANCELLER_ROLE(
8272                        data: &[u8],
8273                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8274                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8275                                data,
8276                            )
8277                            .map(SafeExitTimelockCalls::CANCELLER_ROLE)
8278                    }
8279                    CANCELLER_ROLE
8280                },
8281                {
8282                    fn hashOperationBatch(
8283                        data: &[u8],
8284                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8285                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8286                                data,
8287                            )
8288                            .map(SafeExitTimelockCalls::hashOperationBatch)
8289                    }
8290                    hashOperationBatch
8291                },
8292                {
8293                    fn onERC1155BatchReceived(
8294                        data: &[u8],
8295                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8296                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8297                                data,
8298                            )
8299                            .map(SafeExitTimelockCalls::onERC1155BatchReceived)
8300                    }
8301                    onERC1155BatchReceived
8302                },
8303                {
8304                    fn cancel(
8305                        data: &[u8],
8306                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8307                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8308                            .map(SafeExitTimelockCalls::cancel)
8309                    }
8310                    cancel
8311                },
8312                {
8313                    fn getTimestamp(
8314                        data: &[u8],
8315                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8316                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
8317                                data,
8318                            )
8319                            .map(SafeExitTimelockCalls::getTimestamp)
8320                    }
8321                    getTimestamp
8322                },
8323                {
8324                    fn revokeRole(
8325                        data: &[u8],
8326                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8327                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8328                                data,
8329                            )
8330                            .map(SafeExitTimelockCalls::revokeRole)
8331                    }
8332                    revokeRole
8333                },
8334                {
8335                    fn executeBatch(
8336                        data: &[u8],
8337                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8338                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8339                                data,
8340                            )
8341                            .map(SafeExitTimelockCalls::executeBatch)
8342                    }
8343                    executeBatch
8344                },
8345                {
8346                    fn onERC1155Received(
8347                        data: &[u8],
8348                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8349                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8350                                data,
8351                            )
8352                            .map(SafeExitTimelockCalls::onERC1155Received)
8353                    }
8354                    onERC1155Received
8355                },
8356                {
8357                    fn getMinDelay(
8358                        data: &[u8],
8359                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8360                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
8361                                data,
8362                            )
8363                            .map(SafeExitTimelockCalls::getMinDelay)
8364                    }
8365                    getMinDelay
8366                },
8367            ];
8368            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8369                return Err(
8370                    alloy_sol_types::Error::unknown_selector(
8371                        <Self as alloy_sol_types::SolInterface>::NAME,
8372                        selector,
8373                    ),
8374                );
8375            };
8376            DECODE_SHIMS[idx](data)
8377        }
8378        #[inline]
8379        #[allow(non_snake_case)]
8380        fn abi_decode_raw_validate(
8381            selector: [u8; 4],
8382            data: &[u8],
8383        ) -> alloy_sol_types::Result<Self> {
8384            static DECODE_VALIDATE_SHIMS: &[fn(
8385                &[u8],
8386            ) -> alloy_sol_types::Result<SafeExitTimelockCalls>] = &[
8387                {
8388                    fn schedule(
8389                        data: &[u8],
8390                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8391                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8392                                data,
8393                            )
8394                            .map(SafeExitTimelockCalls::schedule)
8395                    }
8396                    schedule
8397                },
8398                {
8399                    fn supportsInterface(
8400                        data: &[u8],
8401                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8402                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8403                                data,
8404                            )
8405                            .map(SafeExitTimelockCalls::supportsInterface)
8406                    }
8407                    supportsInterface
8408                },
8409                {
8410                    fn EXECUTOR_ROLE(
8411                        data: &[u8],
8412                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8413                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8414                                data,
8415                            )
8416                            .map(SafeExitTimelockCalls::EXECUTOR_ROLE)
8417                    }
8418                    EXECUTOR_ROLE
8419                },
8420                {
8421                    fn execute(
8422                        data: &[u8],
8423                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8424                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8425                                data,
8426                            )
8427                            .map(SafeExitTimelockCalls::execute)
8428                    }
8429                    execute
8430                },
8431                {
8432                    fn isOperationReady(
8433                        data: &[u8],
8434                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8435                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8436                                data,
8437                            )
8438                            .map(SafeExitTimelockCalls::isOperationReady)
8439                    }
8440                    isOperationReady
8441                },
8442                {
8443                    fn onERC721Received(
8444                        data: &[u8],
8445                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8446                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8447                                data,
8448                            )
8449                            .map(SafeExitTimelockCalls::onERC721Received)
8450                    }
8451                    onERC721Received
8452                },
8453                {
8454                    fn getRoleAdmin(
8455                        data: &[u8],
8456                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8457                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8458                                data,
8459                            )
8460                            .map(SafeExitTimelockCalls::getRoleAdmin)
8461                    }
8462                    getRoleAdmin
8463                },
8464                {
8465                    fn isOperationDone(
8466                        data: &[u8],
8467                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8468                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8469                                data,
8470                            )
8471                            .map(SafeExitTimelockCalls::isOperationDone)
8472                    }
8473                    isOperationDone
8474                },
8475                {
8476                    fn grantRole(
8477                        data: &[u8],
8478                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8479                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8480                                data,
8481                            )
8482                            .map(SafeExitTimelockCalls::grantRole)
8483                    }
8484                    grantRole
8485                },
8486                {
8487                    fn isOperation(
8488                        data: &[u8],
8489                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8490                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8491                                data,
8492                            )
8493                            .map(SafeExitTimelockCalls::isOperation)
8494                    }
8495                    isOperation
8496                },
8497                {
8498                    fn renounceRole(
8499                        data: &[u8],
8500                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8501                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8502                                data,
8503                            )
8504                            .map(SafeExitTimelockCalls::renounceRole)
8505                    }
8506                    renounceRole
8507                },
8508                {
8509                    fn isOperationPending(
8510                        data: &[u8],
8511                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8512                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8513                                data,
8514                            )
8515                            .map(SafeExitTimelockCalls::isOperationPending)
8516                    }
8517                    isOperationPending
8518                },
8519                {
8520                    fn updateDelay(
8521                        data: &[u8],
8522                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8523                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8524                                data,
8525                            )
8526                            .map(SafeExitTimelockCalls::updateDelay)
8527                    }
8528                    updateDelay
8529                },
8530                {
8531                    fn getOperationState(
8532                        data: &[u8],
8533                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8534                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8535                                data,
8536                            )
8537                            .map(SafeExitTimelockCalls::getOperationState)
8538                    }
8539                    getOperationState
8540                },
8541                {
8542                    fn hashOperation(
8543                        data: &[u8],
8544                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8545                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8546                                data,
8547                            )
8548                            .map(SafeExitTimelockCalls::hashOperation)
8549                    }
8550                    hashOperation
8551                },
8552                {
8553                    fn scheduleBatch(
8554                        data: &[u8],
8555                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8556                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8557                                data,
8558                            )
8559                            .map(SafeExitTimelockCalls::scheduleBatch)
8560                    }
8561                    scheduleBatch
8562                },
8563                {
8564                    fn PROPOSER_ROLE(
8565                        data: &[u8],
8566                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8567                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8568                                data,
8569                            )
8570                            .map(SafeExitTimelockCalls::PROPOSER_ROLE)
8571                    }
8572                    PROPOSER_ROLE
8573                },
8574                {
8575                    fn hasRole(
8576                        data: &[u8],
8577                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8578                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8579                                data,
8580                            )
8581                            .map(SafeExitTimelockCalls::hasRole)
8582                    }
8583                    hasRole
8584                },
8585                {
8586                    fn DEFAULT_ADMIN_ROLE(
8587                        data: &[u8],
8588                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8589                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8590                                data,
8591                            )
8592                            .map(SafeExitTimelockCalls::DEFAULT_ADMIN_ROLE)
8593                    }
8594                    DEFAULT_ADMIN_ROLE
8595                },
8596                {
8597                    fn CANCELLER_ROLE(
8598                        data: &[u8],
8599                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8600                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8601                                data,
8602                            )
8603                            .map(SafeExitTimelockCalls::CANCELLER_ROLE)
8604                    }
8605                    CANCELLER_ROLE
8606                },
8607                {
8608                    fn hashOperationBatch(
8609                        data: &[u8],
8610                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8611                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8612                                data,
8613                            )
8614                            .map(SafeExitTimelockCalls::hashOperationBatch)
8615                    }
8616                    hashOperationBatch
8617                },
8618                {
8619                    fn onERC1155BatchReceived(
8620                        data: &[u8],
8621                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8622                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8623                                data,
8624                            )
8625                            .map(SafeExitTimelockCalls::onERC1155BatchReceived)
8626                    }
8627                    onERC1155BatchReceived
8628                },
8629                {
8630                    fn cancel(
8631                        data: &[u8],
8632                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8633                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8634                                data,
8635                            )
8636                            .map(SafeExitTimelockCalls::cancel)
8637                    }
8638                    cancel
8639                },
8640                {
8641                    fn getTimestamp(
8642                        data: &[u8],
8643                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8644                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8645                                data,
8646                            )
8647                            .map(SafeExitTimelockCalls::getTimestamp)
8648                    }
8649                    getTimestamp
8650                },
8651                {
8652                    fn revokeRole(
8653                        data: &[u8],
8654                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8655                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8656                                data,
8657                            )
8658                            .map(SafeExitTimelockCalls::revokeRole)
8659                    }
8660                    revokeRole
8661                },
8662                {
8663                    fn executeBatch(
8664                        data: &[u8],
8665                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8666                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8667                                data,
8668                            )
8669                            .map(SafeExitTimelockCalls::executeBatch)
8670                    }
8671                    executeBatch
8672                },
8673                {
8674                    fn onERC1155Received(
8675                        data: &[u8],
8676                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8677                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8678                                data,
8679                            )
8680                            .map(SafeExitTimelockCalls::onERC1155Received)
8681                    }
8682                    onERC1155Received
8683                },
8684                {
8685                    fn getMinDelay(
8686                        data: &[u8],
8687                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8688                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8689                                data,
8690                            )
8691                            .map(SafeExitTimelockCalls::getMinDelay)
8692                    }
8693                    getMinDelay
8694                },
8695            ];
8696            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8697                return Err(
8698                    alloy_sol_types::Error::unknown_selector(
8699                        <Self as alloy_sol_types::SolInterface>::NAME,
8700                        selector,
8701                    ),
8702                );
8703            };
8704            DECODE_VALIDATE_SHIMS[idx](data)
8705        }
8706        #[inline]
8707        fn abi_encoded_size(&self) -> usize {
8708            match self {
8709                Self::CANCELLER_ROLE(inner) => {
8710                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8711                        inner,
8712                    )
8713                }
8714                Self::DEFAULT_ADMIN_ROLE(inner) => {
8715                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8716                        inner,
8717                    )
8718                }
8719                Self::EXECUTOR_ROLE(inner) => {
8720                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8721                        inner,
8722                    )
8723                }
8724                Self::PROPOSER_ROLE(inner) => {
8725                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8726                        inner,
8727                    )
8728                }
8729                Self::cancel(inner) => {
8730                    <cancelCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8731                }
8732                Self::execute(inner) => {
8733                    <executeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8734                }
8735                Self::executeBatch(inner) => {
8736                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8737                        inner,
8738                    )
8739                }
8740                Self::getMinDelay(inner) => {
8741                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
8742                        inner,
8743                    )
8744                }
8745                Self::getOperationState(inner) => {
8746                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
8747                        inner,
8748                    )
8749                }
8750                Self::getRoleAdmin(inner) => {
8751                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
8752                        inner,
8753                    )
8754                }
8755                Self::getTimestamp(inner) => {
8756                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
8757                        inner,
8758                    )
8759                }
8760                Self::grantRole(inner) => {
8761                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8762                }
8763                Self::hasRole(inner) => {
8764                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8765                }
8766                Self::hashOperation(inner) => {
8767                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
8768                        inner,
8769                    )
8770                }
8771                Self::hashOperationBatch(inner) => {
8772                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8773                        inner,
8774                    )
8775                }
8776                Self::isOperation(inner) => {
8777                    <isOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
8778                        inner,
8779                    )
8780                }
8781                Self::isOperationDone(inner) => {
8782                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encoded_size(
8783                        inner,
8784                    )
8785                }
8786                Self::isOperationPending(inner) => {
8787                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encoded_size(
8788                        inner,
8789                    )
8790                }
8791                Self::isOperationReady(inner) => {
8792                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encoded_size(
8793                        inner,
8794                    )
8795                }
8796                Self::onERC1155BatchReceived(inner) => {
8797                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8798                        inner,
8799                    )
8800                }
8801                Self::onERC1155Received(inner) => {
8802                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8803                        inner,
8804                    )
8805                }
8806                Self::onERC721Received(inner) => {
8807                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8808                        inner,
8809                    )
8810                }
8811                Self::renounceRole(inner) => {
8812                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
8813                        inner,
8814                    )
8815                }
8816                Self::revokeRole(inner) => {
8817                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8818                }
8819                Self::schedule(inner) => {
8820                    <scheduleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8821                }
8822                Self::scheduleBatch(inner) => {
8823                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8824                        inner,
8825                    )
8826                }
8827                Self::supportsInterface(inner) => {
8828                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
8829                        inner,
8830                    )
8831                }
8832                Self::updateDelay(inner) => {
8833                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
8834                        inner,
8835                    )
8836                }
8837            }
8838        }
8839        #[inline]
8840        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
8841            match self {
8842                Self::CANCELLER_ROLE(inner) => {
8843                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8844                        inner,
8845                        out,
8846                    )
8847                }
8848                Self::DEFAULT_ADMIN_ROLE(inner) => {
8849                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8850                        inner,
8851                        out,
8852                    )
8853                }
8854                Self::EXECUTOR_ROLE(inner) => {
8855                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8856                        inner,
8857                        out,
8858                    )
8859                }
8860                Self::PROPOSER_ROLE(inner) => {
8861                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8862                        inner,
8863                        out,
8864                    )
8865                }
8866                Self::cancel(inner) => {
8867                    <cancelCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8868                }
8869                Self::execute(inner) => {
8870                    <executeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8871                }
8872                Self::executeBatch(inner) => {
8873                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
8874                        inner,
8875                        out,
8876                    )
8877                }
8878                Self::getMinDelay(inner) => {
8879                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
8880                        inner,
8881                        out,
8882                    )
8883                }
8884                Self::getOperationState(inner) => {
8885                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
8886                        inner,
8887                        out,
8888                    )
8889                }
8890                Self::getRoleAdmin(inner) => {
8891                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
8892                        inner,
8893                        out,
8894                    )
8895                }
8896                Self::getTimestamp(inner) => {
8897                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
8898                        inner,
8899                        out,
8900                    )
8901                }
8902                Self::grantRole(inner) => {
8903                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8904                        inner,
8905                        out,
8906                    )
8907                }
8908                Self::hasRole(inner) => {
8909                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8910                }
8911                Self::hashOperation(inner) => {
8912                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
8913                        inner,
8914                        out,
8915                    )
8916                }
8917                Self::hashOperationBatch(inner) => {
8918                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
8919                        inner,
8920                        out,
8921                    )
8922                }
8923                Self::isOperation(inner) => {
8924                    <isOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
8925                        inner,
8926                        out,
8927                    )
8928                }
8929                Self::isOperationDone(inner) => {
8930                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encode_raw(
8931                        inner,
8932                        out,
8933                    )
8934                }
8935                Self::isOperationPending(inner) => {
8936                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encode_raw(
8937                        inner,
8938                        out,
8939                    )
8940                }
8941                Self::isOperationReady(inner) => {
8942                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encode_raw(
8943                        inner,
8944                        out,
8945                    )
8946                }
8947                Self::onERC1155BatchReceived(inner) => {
8948                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
8949                        inner,
8950                        out,
8951                    )
8952                }
8953                Self::onERC1155Received(inner) => {
8954                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
8955                        inner,
8956                        out,
8957                    )
8958                }
8959                Self::onERC721Received(inner) => {
8960                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
8961                        inner,
8962                        out,
8963                    )
8964                }
8965                Self::renounceRole(inner) => {
8966                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8967                        inner,
8968                        out,
8969                    )
8970                }
8971                Self::revokeRole(inner) => {
8972                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8973                        inner,
8974                        out,
8975                    )
8976                }
8977                Self::schedule(inner) => {
8978                    <scheduleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8979                        inner,
8980                        out,
8981                    )
8982                }
8983                Self::scheduleBatch(inner) => {
8984                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
8985                        inner,
8986                        out,
8987                    )
8988                }
8989                Self::supportsInterface(inner) => {
8990                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
8991                        inner,
8992                        out,
8993                    )
8994                }
8995                Self::updateDelay(inner) => {
8996                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
8997                        inner,
8998                        out,
8999                    )
9000                }
9001            }
9002        }
9003    }
9004    ///Container for all the [`SafeExitTimelock`](self) custom errors.
9005    #[derive(serde::Serialize, serde::Deserialize)]
9006    #[derive(Debug, PartialEq, Eq, Hash)]
9007    pub enum SafeExitTimelockErrors {
9008        #[allow(missing_docs)]
9009        AccessControlBadConfirmation(AccessControlBadConfirmation),
9010        #[allow(missing_docs)]
9011        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
9012        #[allow(missing_docs)]
9013        FailedInnerCall(FailedInnerCall),
9014        #[allow(missing_docs)]
9015        TimelockInsufficientDelay(TimelockInsufficientDelay),
9016        #[allow(missing_docs)]
9017        TimelockInvalidOperationLength(TimelockInvalidOperationLength),
9018        #[allow(missing_docs)]
9019        TimelockUnauthorizedCaller(TimelockUnauthorizedCaller),
9020        #[allow(missing_docs)]
9021        TimelockUnexecutedPredecessor(TimelockUnexecutedPredecessor),
9022        #[allow(missing_docs)]
9023        TimelockUnexpectedOperationState(TimelockUnexpectedOperationState),
9024    }
9025    #[automatically_derived]
9026    impl SafeExitTimelockErrors {
9027        /// All the selectors of this enum.
9028        ///
9029        /// Note that the selectors might not be in the same order as the variants.
9030        /// No guarantees are made about the order of the selectors.
9031        ///
9032        /// Prefer using `SolInterface` methods instead.
9033        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9034            [20u8, 37u8, 234u8, 66u8],
9035            [84u8, 51u8, 102u8, 9u8],
9036            [94u8, 173u8, 142u8, 181u8],
9037            [102u8, 151u8, 178u8, 50u8],
9038            [144u8, 169u8, 166u8, 24u8],
9039            [226u8, 81u8, 125u8, 63u8],
9040            [226u8, 133u8, 12u8, 89u8],
9041            [255u8, 176u8, 50u8, 17u8],
9042        ];
9043    }
9044    #[automatically_derived]
9045    impl alloy_sol_types::SolInterface for SafeExitTimelockErrors {
9046        const NAME: &'static str = "SafeExitTimelockErrors";
9047        const MIN_DATA_LENGTH: usize = 0usize;
9048        const COUNT: usize = 8usize;
9049        #[inline]
9050        fn selector(&self) -> [u8; 4] {
9051            match self {
9052                Self::AccessControlBadConfirmation(_) => {
9053                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
9054                }
9055                Self::AccessControlUnauthorizedAccount(_) => {
9056                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9057                }
9058                Self::FailedInnerCall(_) => {
9059                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9060                }
9061                Self::TimelockInsufficientDelay(_) => {
9062                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::SELECTOR
9063                }
9064                Self::TimelockInvalidOperationLength(_) => {
9065                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::SELECTOR
9066                }
9067                Self::TimelockUnauthorizedCaller(_) => {
9068                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::SELECTOR
9069                }
9070                Self::TimelockUnexecutedPredecessor(_) => {
9071                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::SELECTOR
9072                }
9073                Self::TimelockUnexpectedOperationState(_) => {
9074                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::SELECTOR
9075                }
9076            }
9077        }
9078        #[inline]
9079        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9080            Self::SELECTORS.get(i).copied()
9081        }
9082        #[inline]
9083        fn valid_selector(selector: [u8; 4]) -> bool {
9084            Self::SELECTORS.binary_search(&selector).is_ok()
9085        }
9086        #[inline]
9087        #[allow(non_snake_case)]
9088        fn abi_decode_raw(
9089            selector: [u8; 4],
9090            data: &[u8],
9091        ) -> alloy_sol_types::Result<Self> {
9092            static DECODE_SHIMS: &[fn(
9093                &[u8],
9094            ) -> alloy_sol_types::Result<SafeExitTimelockErrors>] = &[
9095                {
9096                    fn FailedInnerCall(
9097                        data: &[u8],
9098                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9099                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
9100                                data,
9101                            )
9102                            .map(SafeExitTimelockErrors::FailedInnerCall)
9103                    }
9104                    FailedInnerCall
9105                },
9106                {
9107                    fn TimelockInsufficientDelay(
9108                        data: &[u8],
9109                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9110                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw(
9111                                data,
9112                            )
9113                            .map(SafeExitTimelockErrors::TimelockInsufficientDelay)
9114                    }
9115                    TimelockInsufficientDelay
9116                },
9117                {
9118                    fn TimelockUnexpectedOperationState(
9119                        data: &[u8],
9120                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9121                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw(
9122                                data,
9123                            )
9124                            .map(
9125                                SafeExitTimelockErrors::TimelockUnexpectedOperationState,
9126                            )
9127                    }
9128                    TimelockUnexpectedOperationState
9129                },
9130                {
9131                    fn AccessControlBadConfirmation(
9132                        data: &[u8],
9133                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9134                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
9135                                data,
9136                            )
9137                            .map(SafeExitTimelockErrors::AccessControlBadConfirmation)
9138                    }
9139                    AccessControlBadConfirmation
9140                },
9141                {
9142                    fn TimelockUnexecutedPredecessor(
9143                        data: &[u8],
9144                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9145                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw(
9146                                data,
9147                            )
9148                            .map(SafeExitTimelockErrors::TimelockUnexecutedPredecessor)
9149                    }
9150                    TimelockUnexecutedPredecessor
9151                },
9152                {
9153                    fn AccessControlUnauthorizedAccount(
9154                        data: &[u8],
9155                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9156                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9157                                data,
9158                            )
9159                            .map(
9160                                SafeExitTimelockErrors::AccessControlUnauthorizedAccount,
9161                            )
9162                    }
9163                    AccessControlUnauthorizedAccount
9164                },
9165                {
9166                    fn TimelockUnauthorizedCaller(
9167                        data: &[u8],
9168                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9169                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw(
9170                                data,
9171                            )
9172                            .map(SafeExitTimelockErrors::TimelockUnauthorizedCaller)
9173                    }
9174                    TimelockUnauthorizedCaller
9175                },
9176                {
9177                    fn TimelockInvalidOperationLength(
9178                        data: &[u8],
9179                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9180                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw(
9181                                data,
9182                            )
9183                            .map(SafeExitTimelockErrors::TimelockInvalidOperationLength)
9184                    }
9185                    TimelockInvalidOperationLength
9186                },
9187            ];
9188            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9189                return Err(
9190                    alloy_sol_types::Error::unknown_selector(
9191                        <Self as alloy_sol_types::SolInterface>::NAME,
9192                        selector,
9193                    ),
9194                );
9195            };
9196            DECODE_SHIMS[idx](data)
9197        }
9198        #[inline]
9199        #[allow(non_snake_case)]
9200        fn abi_decode_raw_validate(
9201            selector: [u8; 4],
9202            data: &[u8],
9203        ) -> alloy_sol_types::Result<Self> {
9204            static DECODE_VALIDATE_SHIMS: &[fn(
9205                &[u8],
9206            ) -> alloy_sol_types::Result<SafeExitTimelockErrors>] = &[
9207                {
9208                    fn FailedInnerCall(
9209                        data: &[u8],
9210                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9211                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
9212                                data,
9213                            )
9214                            .map(SafeExitTimelockErrors::FailedInnerCall)
9215                    }
9216                    FailedInnerCall
9217                },
9218                {
9219                    fn TimelockInsufficientDelay(
9220                        data: &[u8],
9221                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9222                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw_validate(
9223                                data,
9224                            )
9225                            .map(SafeExitTimelockErrors::TimelockInsufficientDelay)
9226                    }
9227                    TimelockInsufficientDelay
9228                },
9229                {
9230                    fn TimelockUnexpectedOperationState(
9231                        data: &[u8],
9232                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9233                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw_validate(
9234                                data,
9235                            )
9236                            .map(
9237                                SafeExitTimelockErrors::TimelockUnexpectedOperationState,
9238                            )
9239                    }
9240                    TimelockUnexpectedOperationState
9241                },
9242                {
9243                    fn AccessControlBadConfirmation(
9244                        data: &[u8],
9245                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9246                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
9247                                data,
9248                            )
9249                            .map(SafeExitTimelockErrors::AccessControlBadConfirmation)
9250                    }
9251                    AccessControlBadConfirmation
9252                },
9253                {
9254                    fn TimelockUnexecutedPredecessor(
9255                        data: &[u8],
9256                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9257                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw_validate(
9258                                data,
9259                            )
9260                            .map(SafeExitTimelockErrors::TimelockUnexecutedPredecessor)
9261                    }
9262                    TimelockUnexecutedPredecessor
9263                },
9264                {
9265                    fn AccessControlUnauthorizedAccount(
9266                        data: &[u8],
9267                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9268                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
9269                                data,
9270                            )
9271                            .map(
9272                                SafeExitTimelockErrors::AccessControlUnauthorizedAccount,
9273                            )
9274                    }
9275                    AccessControlUnauthorizedAccount
9276                },
9277                {
9278                    fn TimelockUnauthorizedCaller(
9279                        data: &[u8],
9280                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9281                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw_validate(
9282                                data,
9283                            )
9284                            .map(SafeExitTimelockErrors::TimelockUnauthorizedCaller)
9285                    }
9286                    TimelockUnauthorizedCaller
9287                },
9288                {
9289                    fn TimelockInvalidOperationLength(
9290                        data: &[u8],
9291                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9292                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
9293                                data,
9294                            )
9295                            .map(SafeExitTimelockErrors::TimelockInvalidOperationLength)
9296                    }
9297                    TimelockInvalidOperationLength
9298                },
9299            ];
9300            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9301                return Err(
9302                    alloy_sol_types::Error::unknown_selector(
9303                        <Self as alloy_sol_types::SolInterface>::NAME,
9304                        selector,
9305                    ),
9306                );
9307            };
9308            DECODE_VALIDATE_SHIMS[idx](data)
9309        }
9310        #[inline]
9311        fn abi_encoded_size(&self) -> usize {
9312            match self {
9313                Self::AccessControlBadConfirmation(inner) => {
9314                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
9315                        inner,
9316                    )
9317                }
9318                Self::AccessControlUnauthorizedAccount(inner) => {
9319                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
9320                        inner,
9321                    )
9322                }
9323                Self::FailedInnerCall(inner) => {
9324                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
9325                        inner,
9326                    )
9327                }
9328                Self::TimelockInsufficientDelay(inner) => {
9329                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encoded_size(
9330                        inner,
9331                    )
9332                }
9333                Self::TimelockInvalidOperationLength(inner) => {
9334                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encoded_size(
9335                        inner,
9336                    )
9337                }
9338                Self::TimelockUnauthorizedCaller(inner) => {
9339                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encoded_size(
9340                        inner,
9341                    )
9342                }
9343                Self::TimelockUnexecutedPredecessor(inner) => {
9344                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encoded_size(
9345                        inner,
9346                    )
9347                }
9348                Self::TimelockUnexpectedOperationState(inner) => {
9349                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encoded_size(
9350                        inner,
9351                    )
9352                }
9353            }
9354        }
9355        #[inline]
9356        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9357            match self {
9358                Self::AccessControlBadConfirmation(inner) => {
9359                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
9360                        inner,
9361                        out,
9362                    )
9363                }
9364                Self::AccessControlUnauthorizedAccount(inner) => {
9365                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
9366                        inner,
9367                        out,
9368                    )
9369                }
9370                Self::FailedInnerCall(inner) => {
9371                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
9372                        inner,
9373                        out,
9374                    )
9375                }
9376                Self::TimelockInsufficientDelay(inner) => {
9377                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encode_raw(
9378                        inner,
9379                        out,
9380                    )
9381                }
9382                Self::TimelockInvalidOperationLength(inner) => {
9383                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encode_raw(
9384                        inner,
9385                        out,
9386                    )
9387                }
9388                Self::TimelockUnauthorizedCaller(inner) => {
9389                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encode_raw(
9390                        inner,
9391                        out,
9392                    )
9393                }
9394                Self::TimelockUnexecutedPredecessor(inner) => {
9395                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encode_raw(
9396                        inner,
9397                        out,
9398                    )
9399                }
9400                Self::TimelockUnexpectedOperationState(inner) => {
9401                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encode_raw(
9402                        inner,
9403                        out,
9404                    )
9405                }
9406            }
9407        }
9408    }
9409    ///Container for all the [`SafeExitTimelock`](self) events.
9410    #[derive(serde::Serialize, serde::Deserialize)]
9411    #[derive(Debug, PartialEq, Eq, Hash)]
9412    pub enum SafeExitTimelockEvents {
9413        #[allow(missing_docs)]
9414        CallExecuted(CallExecuted),
9415        #[allow(missing_docs)]
9416        CallSalt(CallSalt),
9417        #[allow(missing_docs)]
9418        CallScheduled(CallScheduled),
9419        #[allow(missing_docs)]
9420        Cancelled(Cancelled),
9421        #[allow(missing_docs)]
9422        MinDelayChange(MinDelayChange),
9423        #[allow(missing_docs)]
9424        RoleAdminChanged(RoleAdminChanged),
9425        #[allow(missing_docs)]
9426        RoleGranted(RoleGranted),
9427        #[allow(missing_docs)]
9428        RoleRevoked(RoleRevoked),
9429    }
9430    #[automatically_derived]
9431    impl SafeExitTimelockEvents {
9432        /// All the selectors of this enum.
9433        ///
9434        /// Note that the selectors might not be in the same order as the variants.
9435        /// No guarantees are made about the order of the selectors.
9436        ///
9437        /// Prefer using `SolInterface` methods instead.
9438        pub const SELECTORS: &'static [[u8; 32usize]] = &[
9439            [
9440                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
9441                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
9442                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
9443            ],
9444            [
9445                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
9446                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
9447                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
9448            ],
9449            [
9450                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9451                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9452                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9453            ],
9454            [
9455                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
9456                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
9457                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
9458            ],
9459            [
9460                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
9461                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
9462                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
9463            ],
9464            [
9465                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9466                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9467                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9468            ],
9469            [
9470                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
9471                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
9472                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
9473            ],
9474            [
9475                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9476                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9477                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9478            ],
9479        ];
9480    }
9481    #[automatically_derived]
9482    impl alloy_sol_types::SolEventInterface for SafeExitTimelockEvents {
9483        const NAME: &'static str = "SafeExitTimelockEvents";
9484        const COUNT: usize = 8usize;
9485        fn decode_raw_log(
9486            topics: &[alloy_sol_types::Word],
9487            data: &[u8],
9488        ) -> alloy_sol_types::Result<Self> {
9489            match topics.first().copied() {
9490                Some(<CallExecuted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9491                    <CallExecuted as alloy_sol_types::SolEvent>::decode_raw_log(
9492                            topics,
9493                            data,
9494                        )
9495                        .map(Self::CallExecuted)
9496                }
9497                Some(<CallSalt as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9498                    <CallSalt as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
9499                        .map(Self::CallSalt)
9500                }
9501                Some(<CallScheduled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9502                    <CallScheduled as alloy_sol_types::SolEvent>::decode_raw_log(
9503                            topics,
9504                            data,
9505                        )
9506                        .map(Self::CallScheduled)
9507                }
9508                Some(<Cancelled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9509                    <Cancelled as alloy_sol_types::SolEvent>::decode_raw_log(
9510                            topics,
9511                            data,
9512                        )
9513                        .map(Self::Cancelled)
9514                }
9515                Some(<MinDelayChange as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9516                    <MinDelayChange as alloy_sol_types::SolEvent>::decode_raw_log(
9517                            topics,
9518                            data,
9519                        )
9520                        .map(Self::MinDelayChange)
9521                }
9522                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9523                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
9524                            topics,
9525                            data,
9526                        )
9527                        .map(Self::RoleAdminChanged)
9528                }
9529                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9530                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
9531                            topics,
9532                            data,
9533                        )
9534                        .map(Self::RoleGranted)
9535                }
9536                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9537                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
9538                            topics,
9539                            data,
9540                        )
9541                        .map(Self::RoleRevoked)
9542                }
9543                _ => {
9544                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
9545                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
9546                        log: alloy_sol_types::private::Box::new(
9547                            alloy_sol_types::private::LogData::new_unchecked(
9548                                topics.to_vec(),
9549                                data.to_vec().into(),
9550                            ),
9551                        ),
9552                    })
9553                }
9554            }
9555        }
9556    }
9557    #[automatically_derived]
9558    impl alloy_sol_types::private::IntoLogData for SafeExitTimelockEvents {
9559        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9560            match self {
9561                Self::CallExecuted(inner) => {
9562                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9563                }
9564                Self::CallSalt(inner) => {
9565                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9566                }
9567                Self::CallScheduled(inner) => {
9568                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9569                }
9570                Self::Cancelled(inner) => {
9571                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9572                }
9573                Self::MinDelayChange(inner) => {
9574                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9575                }
9576                Self::RoleAdminChanged(inner) => {
9577                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9578                }
9579                Self::RoleGranted(inner) => {
9580                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9581                }
9582                Self::RoleRevoked(inner) => {
9583                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9584                }
9585            }
9586        }
9587        fn into_log_data(self) -> alloy_sol_types::private::LogData {
9588            match self {
9589                Self::CallExecuted(inner) => {
9590                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9591                }
9592                Self::CallSalt(inner) => {
9593                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9594                }
9595                Self::CallScheduled(inner) => {
9596                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9597                }
9598                Self::Cancelled(inner) => {
9599                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9600                }
9601                Self::MinDelayChange(inner) => {
9602                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9603                }
9604                Self::RoleAdminChanged(inner) => {
9605                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9606                }
9607                Self::RoleGranted(inner) => {
9608                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9609                }
9610                Self::RoleRevoked(inner) => {
9611                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9612                }
9613            }
9614        }
9615    }
9616    use alloy::contract as alloy_contract;
9617    /**Creates a new wrapper around an on-chain [`SafeExitTimelock`](self) contract instance.
9618
9619See the [wrapper's documentation](`SafeExitTimelockInstance`) for more details.*/
9620    #[inline]
9621    pub const fn new<
9622        P: alloy_contract::private::Provider<N>,
9623        N: alloy_contract::private::Network,
9624    >(
9625        address: alloy_sol_types::private::Address,
9626        provider: P,
9627    ) -> SafeExitTimelockInstance<P, N> {
9628        SafeExitTimelockInstance::<P, N>::new(address, provider)
9629    }
9630    /**Deploys this contract using the given `provider` and constructor arguments, if any.
9631
9632Returns a new instance of the contract, if the deployment was successful.
9633
9634For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
9635    #[inline]
9636    pub fn deploy<
9637        P: alloy_contract::private::Provider<N>,
9638        N: alloy_contract::private::Network,
9639    >(
9640        provider: P,
9641        minDelay: alloy::sol_types::private::primitives::aliases::U256,
9642        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9643        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9644        admin: alloy::sol_types::private::Address,
9645    ) -> impl ::core::future::Future<
9646        Output = alloy_contract::Result<SafeExitTimelockInstance<P, N>>,
9647    > {
9648        SafeExitTimelockInstance::<
9649            P,
9650            N,
9651        >::deploy(provider, minDelay, proposers, executors, admin)
9652    }
9653    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
9654and constructor arguments, if any.
9655
9656This is a simple wrapper around creating a `RawCallBuilder` with the data set to
9657the bytecode concatenated with the constructor's ABI-encoded arguments.*/
9658    #[inline]
9659    pub fn deploy_builder<
9660        P: alloy_contract::private::Provider<N>,
9661        N: alloy_contract::private::Network,
9662    >(
9663        provider: P,
9664        minDelay: alloy::sol_types::private::primitives::aliases::U256,
9665        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9666        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9667        admin: alloy::sol_types::private::Address,
9668    ) -> alloy_contract::RawCallBuilder<P, N> {
9669        SafeExitTimelockInstance::<
9670            P,
9671            N,
9672        >::deploy_builder(provider, minDelay, proposers, executors, admin)
9673    }
9674    /**A [`SafeExitTimelock`](self) instance.
9675
9676Contains type-safe methods for interacting with an on-chain instance of the
9677[`SafeExitTimelock`](self) contract located at a given `address`, using a given
9678provider `P`.
9679
9680If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
9681documentation on how to provide it), the `deploy` and `deploy_builder` methods can
9682be used to deploy a new instance of the contract.
9683
9684See the [module-level documentation](self) for all the available methods.*/
9685    #[derive(Clone)]
9686    pub struct SafeExitTimelockInstance<P, N = alloy_contract::private::Ethereum> {
9687        address: alloy_sol_types::private::Address,
9688        provider: P,
9689        _network: ::core::marker::PhantomData<N>,
9690    }
9691    #[automatically_derived]
9692    impl<P, N> ::core::fmt::Debug for SafeExitTimelockInstance<P, N> {
9693        #[inline]
9694        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9695            f.debug_tuple("SafeExitTimelockInstance").field(&self.address).finish()
9696        }
9697    }
9698    /// Instantiation and getters/setters.
9699    #[automatically_derived]
9700    impl<
9701        P: alloy_contract::private::Provider<N>,
9702        N: alloy_contract::private::Network,
9703    > SafeExitTimelockInstance<P, N> {
9704        /**Creates a new wrapper around an on-chain [`SafeExitTimelock`](self) contract instance.
9705
9706See the [wrapper's documentation](`SafeExitTimelockInstance`) for more details.*/
9707        #[inline]
9708        pub const fn new(
9709            address: alloy_sol_types::private::Address,
9710            provider: P,
9711        ) -> Self {
9712            Self {
9713                address,
9714                provider,
9715                _network: ::core::marker::PhantomData,
9716            }
9717        }
9718        /**Deploys this contract using the given `provider` and constructor arguments, if any.
9719
9720Returns a new instance of the contract, if the deployment was successful.
9721
9722For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
9723        #[inline]
9724        pub async fn deploy(
9725            provider: P,
9726            minDelay: alloy::sol_types::private::primitives::aliases::U256,
9727            proposers: alloy::sol_types::private::Vec<
9728                alloy::sol_types::private::Address,
9729            >,
9730            executors: alloy::sol_types::private::Vec<
9731                alloy::sol_types::private::Address,
9732            >,
9733            admin: alloy::sol_types::private::Address,
9734        ) -> alloy_contract::Result<SafeExitTimelockInstance<P, N>> {
9735            let call_builder = Self::deploy_builder(
9736                provider,
9737                minDelay,
9738                proposers,
9739                executors,
9740                admin,
9741            );
9742            let contract_address = call_builder.deploy().await?;
9743            Ok(Self::new(contract_address, call_builder.provider))
9744        }
9745        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
9746and constructor arguments, if any.
9747
9748This is a simple wrapper around creating a `RawCallBuilder` with the data set to
9749the bytecode concatenated with the constructor's ABI-encoded arguments.*/
9750        #[inline]
9751        pub fn deploy_builder(
9752            provider: P,
9753            minDelay: alloy::sol_types::private::primitives::aliases::U256,
9754            proposers: alloy::sol_types::private::Vec<
9755                alloy::sol_types::private::Address,
9756            >,
9757            executors: alloy::sol_types::private::Vec<
9758                alloy::sol_types::private::Address,
9759            >,
9760            admin: alloy::sol_types::private::Address,
9761        ) -> alloy_contract::RawCallBuilder<P, N> {
9762            alloy_contract::RawCallBuilder::new_raw_deploy(
9763                provider,
9764                [
9765                    &BYTECODE[..],
9766                    &alloy_sol_types::SolConstructor::abi_encode(
9767                        &constructorCall {
9768                            minDelay,
9769                            proposers,
9770                            executors,
9771                            admin,
9772                        },
9773                    )[..],
9774                ]
9775                    .concat()
9776                    .into(),
9777            )
9778        }
9779        /// Returns a reference to the address.
9780        #[inline]
9781        pub const fn address(&self) -> &alloy_sol_types::private::Address {
9782            &self.address
9783        }
9784        /// Sets the address.
9785        #[inline]
9786        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
9787            self.address = address;
9788        }
9789        /// Sets the address and returns `self`.
9790        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
9791            self.set_address(address);
9792            self
9793        }
9794        /// Returns a reference to the provider.
9795        #[inline]
9796        pub const fn provider(&self) -> &P {
9797            &self.provider
9798        }
9799    }
9800    impl<P: ::core::clone::Clone, N> SafeExitTimelockInstance<&P, N> {
9801        /// Clones the provider and returns a new instance with the cloned provider.
9802        #[inline]
9803        pub fn with_cloned_provider(self) -> SafeExitTimelockInstance<P, N> {
9804            SafeExitTimelockInstance {
9805                address: self.address,
9806                provider: ::core::clone::Clone::clone(&self.provider),
9807                _network: ::core::marker::PhantomData,
9808            }
9809        }
9810    }
9811    /// Function calls.
9812    #[automatically_derived]
9813    impl<
9814        P: alloy_contract::private::Provider<N>,
9815        N: alloy_contract::private::Network,
9816    > SafeExitTimelockInstance<P, N> {
9817        /// Creates a new call builder using this contract instance's provider and address.
9818        ///
9819        /// Note that the call can be any function call, not just those defined in this
9820        /// contract. Prefer using the other methods for building type-safe contract calls.
9821        pub fn call_builder<C: alloy_sol_types::SolCall>(
9822            &self,
9823            call: &C,
9824        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
9825            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
9826        }
9827        ///Creates a new call builder for the [`CANCELLER_ROLE`] function.
9828        pub fn CANCELLER_ROLE(
9829            &self,
9830        ) -> alloy_contract::SolCallBuilder<&P, CANCELLER_ROLECall, N> {
9831            self.call_builder(&CANCELLER_ROLECall)
9832        }
9833        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
9834        pub fn DEFAULT_ADMIN_ROLE(
9835            &self,
9836        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
9837            self.call_builder(&DEFAULT_ADMIN_ROLECall)
9838        }
9839        ///Creates a new call builder for the [`EXECUTOR_ROLE`] function.
9840        pub fn EXECUTOR_ROLE(
9841            &self,
9842        ) -> alloy_contract::SolCallBuilder<&P, EXECUTOR_ROLECall, N> {
9843            self.call_builder(&EXECUTOR_ROLECall)
9844        }
9845        ///Creates a new call builder for the [`PROPOSER_ROLE`] function.
9846        pub fn PROPOSER_ROLE(
9847            &self,
9848        ) -> alloy_contract::SolCallBuilder<&P, PROPOSER_ROLECall, N> {
9849            self.call_builder(&PROPOSER_ROLECall)
9850        }
9851        ///Creates a new call builder for the [`cancel`] function.
9852        pub fn cancel(
9853            &self,
9854            id: alloy::sol_types::private::FixedBytes<32>,
9855        ) -> alloy_contract::SolCallBuilder<&P, cancelCall, N> {
9856            self.call_builder(&cancelCall { id })
9857        }
9858        ///Creates a new call builder for the [`execute`] function.
9859        pub fn execute(
9860            &self,
9861            target: alloy::sol_types::private::Address,
9862            value: alloy::sol_types::private::primitives::aliases::U256,
9863            payload: alloy::sol_types::private::Bytes,
9864            predecessor: alloy::sol_types::private::FixedBytes<32>,
9865            salt: alloy::sol_types::private::FixedBytes<32>,
9866        ) -> alloy_contract::SolCallBuilder<&P, executeCall, N> {
9867            self.call_builder(
9868                &executeCall {
9869                    target,
9870                    value,
9871                    payload,
9872                    predecessor,
9873                    salt,
9874                },
9875            )
9876        }
9877        ///Creates a new call builder for the [`executeBatch`] function.
9878        pub fn executeBatch(
9879            &self,
9880            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9881            values: alloy::sol_types::private::Vec<
9882                alloy::sol_types::private::primitives::aliases::U256,
9883            >,
9884            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
9885            predecessor: alloy::sol_types::private::FixedBytes<32>,
9886            salt: alloy::sol_types::private::FixedBytes<32>,
9887        ) -> alloy_contract::SolCallBuilder<&P, executeBatchCall, N> {
9888            self.call_builder(
9889                &executeBatchCall {
9890                    targets,
9891                    values,
9892                    payloads,
9893                    predecessor,
9894                    salt,
9895                },
9896            )
9897        }
9898        ///Creates a new call builder for the [`getMinDelay`] function.
9899        pub fn getMinDelay(
9900            &self,
9901        ) -> alloy_contract::SolCallBuilder<&P, getMinDelayCall, N> {
9902            self.call_builder(&getMinDelayCall)
9903        }
9904        ///Creates a new call builder for the [`getOperationState`] function.
9905        pub fn getOperationState(
9906            &self,
9907            id: alloy::sol_types::private::FixedBytes<32>,
9908        ) -> alloy_contract::SolCallBuilder<&P, getOperationStateCall, N> {
9909            self.call_builder(&getOperationStateCall { id })
9910        }
9911        ///Creates a new call builder for the [`getRoleAdmin`] function.
9912        pub fn getRoleAdmin(
9913            &self,
9914            role: alloy::sol_types::private::FixedBytes<32>,
9915        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
9916            self.call_builder(&getRoleAdminCall { role })
9917        }
9918        ///Creates a new call builder for the [`getTimestamp`] function.
9919        pub fn getTimestamp(
9920            &self,
9921            id: alloy::sol_types::private::FixedBytes<32>,
9922        ) -> alloy_contract::SolCallBuilder<&P, getTimestampCall, N> {
9923            self.call_builder(&getTimestampCall { id })
9924        }
9925        ///Creates a new call builder for the [`grantRole`] function.
9926        pub fn grantRole(
9927            &self,
9928            role: alloy::sol_types::private::FixedBytes<32>,
9929            account: alloy::sol_types::private::Address,
9930        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
9931            self.call_builder(&grantRoleCall { role, account })
9932        }
9933        ///Creates a new call builder for the [`hasRole`] function.
9934        pub fn hasRole(
9935            &self,
9936            role: alloy::sol_types::private::FixedBytes<32>,
9937            account: alloy::sol_types::private::Address,
9938        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
9939            self.call_builder(&hasRoleCall { role, account })
9940        }
9941        ///Creates a new call builder for the [`hashOperation`] function.
9942        pub fn hashOperation(
9943            &self,
9944            target: alloy::sol_types::private::Address,
9945            value: alloy::sol_types::private::primitives::aliases::U256,
9946            data: alloy::sol_types::private::Bytes,
9947            predecessor: alloy::sol_types::private::FixedBytes<32>,
9948            salt: alloy::sol_types::private::FixedBytes<32>,
9949        ) -> alloy_contract::SolCallBuilder<&P, hashOperationCall, N> {
9950            self.call_builder(
9951                &hashOperationCall {
9952                    target,
9953                    value,
9954                    data,
9955                    predecessor,
9956                    salt,
9957                },
9958            )
9959        }
9960        ///Creates a new call builder for the [`hashOperationBatch`] function.
9961        pub fn hashOperationBatch(
9962            &self,
9963            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9964            values: alloy::sol_types::private::Vec<
9965                alloy::sol_types::private::primitives::aliases::U256,
9966            >,
9967            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
9968            predecessor: alloy::sol_types::private::FixedBytes<32>,
9969            salt: alloy::sol_types::private::FixedBytes<32>,
9970        ) -> alloy_contract::SolCallBuilder<&P, hashOperationBatchCall, N> {
9971            self.call_builder(
9972                &hashOperationBatchCall {
9973                    targets,
9974                    values,
9975                    payloads,
9976                    predecessor,
9977                    salt,
9978                },
9979            )
9980        }
9981        ///Creates a new call builder for the [`isOperation`] function.
9982        pub fn isOperation(
9983            &self,
9984            id: alloy::sol_types::private::FixedBytes<32>,
9985        ) -> alloy_contract::SolCallBuilder<&P, isOperationCall, N> {
9986            self.call_builder(&isOperationCall { id })
9987        }
9988        ///Creates a new call builder for the [`isOperationDone`] function.
9989        pub fn isOperationDone(
9990            &self,
9991            id: alloy::sol_types::private::FixedBytes<32>,
9992        ) -> alloy_contract::SolCallBuilder<&P, isOperationDoneCall, N> {
9993            self.call_builder(&isOperationDoneCall { id })
9994        }
9995        ///Creates a new call builder for the [`isOperationPending`] function.
9996        pub fn isOperationPending(
9997            &self,
9998            id: alloy::sol_types::private::FixedBytes<32>,
9999        ) -> alloy_contract::SolCallBuilder<&P, isOperationPendingCall, N> {
10000            self.call_builder(&isOperationPendingCall { id })
10001        }
10002        ///Creates a new call builder for the [`isOperationReady`] function.
10003        pub fn isOperationReady(
10004            &self,
10005            id: alloy::sol_types::private::FixedBytes<32>,
10006        ) -> alloy_contract::SolCallBuilder<&P, isOperationReadyCall, N> {
10007            self.call_builder(&isOperationReadyCall { id })
10008        }
10009        ///Creates a new call builder for the [`onERC1155BatchReceived`] function.
10010        pub fn onERC1155BatchReceived(
10011            &self,
10012            _0: alloy::sol_types::private::Address,
10013            _1: alloy::sol_types::private::Address,
10014            _2: alloy::sol_types::private::Vec<
10015                alloy::sol_types::private::primitives::aliases::U256,
10016            >,
10017            _3: alloy::sol_types::private::Vec<
10018                alloy::sol_types::private::primitives::aliases::U256,
10019            >,
10020            _4: alloy::sol_types::private::Bytes,
10021        ) -> alloy_contract::SolCallBuilder<&P, onERC1155BatchReceivedCall, N> {
10022            self.call_builder(
10023                &onERC1155BatchReceivedCall {
10024                    _0,
10025                    _1,
10026                    _2,
10027                    _3,
10028                    _4,
10029                },
10030            )
10031        }
10032        ///Creates a new call builder for the [`onERC1155Received`] function.
10033        pub fn onERC1155Received(
10034            &self,
10035            _0: alloy::sol_types::private::Address,
10036            _1: alloy::sol_types::private::Address,
10037            _2: alloy::sol_types::private::primitives::aliases::U256,
10038            _3: alloy::sol_types::private::primitives::aliases::U256,
10039            _4: alloy::sol_types::private::Bytes,
10040        ) -> alloy_contract::SolCallBuilder<&P, onERC1155ReceivedCall, N> {
10041            self.call_builder(
10042                &onERC1155ReceivedCall {
10043                    _0,
10044                    _1,
10045                    _2,
10046                    _3,
10047                    _4,
10048                },
10049            )
10050        }
10051        ///Creates a new call builder for the [`onERC721Received`] function.
10052        pub fn onERC721Received(
10053            &self,
10054            _0: alloy::sol_types::private::Address,
10055            _1: alloy::sol_types::private::Address,
10056            _2: alloy::sol_types::private::primitives::aliases::U256,
10057            _3: alloy::sol_types::private::Bytes,
10058        ) -> alloy_contract::SolCallBuilder<&P, onERC721ReceivedCall, N> {
10059            self.call_builder(
10060                &onERC721ReceivedCall {
10061                    _0,
10062                    _1,
10063                    _2,
10064                    _3,
10065                },
10066            )
10067        }
10068        ///Creates a new call builder for the [`renounceRole`] function.
10069        pub fn renounceRole(
10070            &self,
10071            role: alloy::sol_types::private::FixedBytes<32>,
10072            callerConfirmation: alloy::sol_types::private::Address,
10073        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
10074            self.call_builder(
10075                &renounceRoleCall {
10076                    role,
10077                    callerConfirmation,
10078                },
10079            )
10080        }
10081        ///Creates a new call builder for the [`revokeRole`] function.
10082        pub fn revokeRole(
10083            &self,
10084            role: alloy::sol_types::private::FixedBytes<32>,
10085            account: alloy::sol_types::private::Address,
10086        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
10087            self.call_builder(&revokeRoleCall { role, account })
10088        }
10089        ///Creates a new call builder for the [`schedule`] function.
10090        pub fn schedule(
10091            &self,
10092            target: alloy::sol_types::private::Address,
10093            value: alloy::sol_types::private::primitives::aliases::U256,
10094            data: alloy::sol_types::private::Bytes,
10095            predecessor: alloy::sol_types::private::FixedBytes<32>,
10096            salt: alloy::sol_types::private::FixedBytes<32>,
10097            delay: alloy::sol_types::private::primitives::aliases::U256,
10098        ) -> alloy_contract::SolCallBuilder<&P, scheduleCall, N> {
10099            self.call_builder(
10100                &scheduleCall {
10101                    target,
10102                    value,
10103                    data,
10104                    predecessor,
10105                    salt,
10106                    delay,
10107                },
10108            )
10109        }
10110        ///Creates a new call builder for the [`scheduleBatch`] function.
10111        pub fn scheduleBatch(
10112            &self,
10113            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10114            values: alloy::sol_types::private::Vec<
10115                alloy::sol_types::private::primitives::aliases::U256,
10116            >,
10117            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10118            predecessor: alloy::sol_types::private::FixedBytes<32>,
10119            salt: alloy::sol_types::private::FixedBytes<32>,
10120            delay: alloy::sol_types::private::primitives::aliases::U256,
10121        ) -> alloy_contract::SolCallBuilder<&P, scheduleBatchCall, N> {
10122            self.call_builder(
10123                &scheduleBatchCall {
10124                    targets,
10125                    values,
10126                    payloads,
10127                    predecessor,
10128                    salt,
10129                    delay,
10130                },
10131            )
10132        }
10133        ///Creates a new call builder for the [`supportsInterface`] function.
10134        pub fn supportsInterface(
10135            &self,
10136            interfaceId: alloy::sol_types::private::FixedBytes<4>,
10137        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
10138            self.call_builder(
10139                &supportsInterfaceCall {
10140                    interfaceId,
10141                },
10142            )
10143        }
10144        ///Creates a new call builder for the [`updateDelay`] function.
10145        pub fn updateDelay(
10146            &self,
10147            newDelay: alloy::sol_types::private::primitives::aliases::U256,
10148        ) -> alloy_contract::SolCallBuilder<&P, updateDelayCall, N> {
10149            self.call_builder(&updateDelayCall { newDelay })
10150        }
10151    }
10152    /// Event filters.
10153    #[automatically_derived]
10154    impl<
10155        P: alloy_contract::private::Provider<N>,
10156        N: alloy_contract::private::Network,
10157    > SafeExitTimelockInstance<P, N> {
10158        /// Creates a new event filter using this contract instance's provider and address.
10159        ///
10160        /// Note that the type can be any event, not just those defined in this contract.
10161        /// Prefer using the other methods for building type-safe event filters.
10162        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10163            &self,
10164        ) -> alloy_contract::Event<&P, E, N> {
10165            alloy_contract::Event::new_sol(&self.provider, &self.address)
10166        }
10167        ///Creates a new event filter for the [`CallExecuted`] event.
10168        pub fn CallExecuted_filter(&self) -> alloy_contract::Event<&P, CallExecuted, N> {
10169            self.event_filter::<CallExecuted>()
10170        }
10171        ///Creates a new event filter for the [`CallSalt`] event.
10172        pub fn CallSalt_filter(&self) -> alloy_contract::Event<&P, CallSalt, N> {
10173            self.event_filter::<CallSalt>()
10174        }
10175        ///Creates a new event filter for the [`CallScheduled`] event.
10176        pub fn CallScheduled_filter(
10177            &self,
10178        ) -> alloy_contract::Event<&P, CallScheduled, N> {
10179            self.event_filter::<CallScheduled>()
10180        }
10181        ///Creates a new event filter for the [`Cancelled`] event.
10182        pub fn Cancelled_filter(&self) -> alloy_contract::Event<&P, Cancelled, N> {
10183            self.event_filter::<Cancelled>()
10184        }
10185        ///Creates a new event filter for the [`MinDelayChange`] event.
10186        pub fn MinDelayChange_filter(
10187            &self,
10188        ) -> alloy_contract::Event<&P, MinDelayChange, N> {
10189            self.event_filter::<MinDelayChange>()
10190        }
10191        ///Creates a new event filter for the [`RoleAdminChanged`] event.
10192        pub fn RoleAdminChanged_filter(
10193            &self,
10194        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
10195            self.event_filter::<RoleAdminChanged>()
10196        }
10197        ///Creates a new event filter for the [`RoleGranted`] event.
10198        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
10199            self.event_filter::<RoleGranted>()
10200        }
10201        ///Creates a new event filter for the [`RoleRevoked`] event.
10202        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
10203            self.event_filter::<RoleRevoked>()
10204        }
10205    }
10206}