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        impl OperationState {
62            /// The Solidity type name.
63            pub const NAME: &'static str = stringify!(@ name);
64            /// Convert from the underlying value type.
65            #[inline]
66            pub const fn from_underlying(value: u8) -> Self {
67                Self(value)
68            }
69            /// Return the underlying value.
70            #[inline]
71            pub const fn into_underlying(self) -> u8 {
72                self.0
73            }
74            /// Return the single encoding of this value, delegating to the
75            /// underlying type.
76            #[inline]
77            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
78                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
79            }
80            /// Return the packed encoding of this value, delegating to the
81            /// underlying type.
82            #[inline]
83            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
84                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
85            }
86        }
87        #[automatically_derived]
88        impl From<u8> for OperationState {
89            fn from(value: u8) -> Self {
90                Self::from_underlying(value)
91            }
92        }
93        #[automatically_derived]
94        impl From<OperationState> for u8 {
95            fn from(value: OperationState) -> Self {
96                value.into_underlying()
97            }
98        }
99        #[automatically_derived]
100        impl alloy_sol_types::SolType for OperationState {
101            type RustType = u8;
102            type Token<'a> = <alloy::sol_types::sol_data::Uint<
103                8,
104            > as alloy_sol_types::SolType>::Token<'a>;
105            const SOL_NAME: &'static str = Self::NAME;
106            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
107                8,
108            > as alloy_sol_types::SolType>::ENCODED_SIZE;
109            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
110                8,
111            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
112            #[inline]
113            fn valid_token(token: &Self::Token<'_>) -> bool {
114                Self::type_check(token).is_ok()
115            }
116            #[inline]
117            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
118                <alloy::sol_types::sol_data::Uint<
119                    8,
120                > as alloy_sol_types::SolType>::type_check(token)
121            }
122            #[inline]
123            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
124                <alloy::sol_types::sol_data::Uint<
125                    8,
126                > as alloy_sol_types::SolType>::detokenize(token)
127            }
128        }
129        #[automatically_derived]
130        impl alloy_sol_types::EventTopic for OperationState {
131            #[inline]
132            fn topic_preimage_length(rust: &Self::RustType) -> usize {
133                <alloy::sol_types::sol_data::Uint<
134                    8,
135                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
136            }
137            #[inline]
138            fn encode_topic_preimage(
139                rust: &Self::RustType,
140                out: &mut alloy_sol_types::private::Vec<u8>,
141            ) {
142                <alloy::sol_types::sol_data::Uint<
143                    8,
144                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
145            }
146            #[inline]
147            fn encode_topic(
148                rust: &Self::RustType,
149            ) -> alloy_sol_types::abi::token::WordToken {
150                <alloy::sol_types::sol_data::Uint<
151                    8,
152                > as alloy_sol_types::EventTopic>::encode_topic(rust)
153            }
154        }
155    };
156    use alloy::contract as alloy_contract;
157    /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
158
159See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
160    #[inline]
161    pub const fn new<
162        P: alloy_contract::private::Provider<N>,
163        N: alloy_contract::private::Network,
164    >(
165        address: alloy_sol_types::private::Address,
166        __provider: P,
167    ) -> TimelockControllerInstance<P, N> {
168        TimelockControllerInstance::<P, N>::new(address, __provider)
169    }
170    /**A [`TimelockController`](self) instance.
171
172Contains type-safe methods for interacting with an on-chain instance of the
173[`TimelockController`](self) contract located at a given `address`, using a given
174provider `P`.
175
176If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
177documentation on how to provide it), the `deploy` and `deploy_builder` methods can
178be used to deploy a new instance of the contract.
179
180See the [module-level documentation](self) for all the available methods.*/
181    #[derive(Clone)]
182    pub struct TimelockControllerInstance<P, N = alloy_contract::private::Ethereum> {
183        address: alloy_sol_types::private::Address,
184        provider: P,
185        _network: ::core::marker::PhantomData<N>,
186    }
187    #[automatically_derived]
188    impl<P, N> ::core::fmt::Debug for TimelockControllerInstance<P, N> {
189        #[inline]
190        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
191            f.debug_tuple("TimelockControllerInstance").field(&self.address).finish()
192        }
193    }
194    /// Instantiation and getters/setters.
195    impl<
196        P: alloy_contract::private::Provider<N>,
197        N: alloy_contract::private::Network,
198    > TimelockControllerInstance<P, N> {
199        /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
200
201See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
202        #[inline]
203        pub const fn new(
204            address: alloy_sol_types::private::Address,
205            __provider: P,
206        ) -> Self {
207            Self {
208                address,
209                provider: __provider,
210                _network: ::core::marker::PhantomData,
211            }
212        }
213        /// Returns a reference to the address.
214        #[inline]
215        pub const fn address(&self) -> &alloy_sol_types::private::Address {
216            &self.address
217        }
218        /// Sets the address.
219        #[inline]
220        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
221            self.address = address;
222        }
223        /// Sets the address and returns `self`.
224        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
225            self.set_address(address);
226            self
227        }
228        /// Returns a reference to the provider.
229        #[inline]
230        pub const fn provider(&self) -> &P {
231            &self.provider
232        }
233    }
234    impl<P: ::core::clone::Clone, N> TimelockControllerInstance<&P, N> {
235        /// Clones the provider and returns a new instance with the cloned provider.
236        #[inline]
237        pub fn with_cloned_provider(self) -> TimelockControllerInstance<P, N> {
238            TimelockControllerInstance {
239                address: self.address,
240                provider: ::core::clone::Clone::clone(&self.provider),
241                _network: ::core::marker::PhantomData,
242            }
243        }
244    }
245    /// Function calls.
246    impl<
247        P: alloy_contract::private::Provider<N>,
248        N: alloy_contract::private::Network,
249    > TimelockControllerInstance<P, N> {
250        /// Creates a new call builder using this contract instance's provider and address.
251        ///
252        /// Note that the call can be any function call, not just those defined in this
253        /// contract. Prefer using the other methods for building type-safe contract calls.
254        pub fn call_builder<C: alloy_sol_types::SolCall>(
255            &self,
256            call: &C,
257        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
258            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
259        }
260    }
261    /// Event filters.
262    impl<
263        P: alloy_contract::private::Provider<N>,
264        N: alloy_contract::private::Network,
265    > TimelockControllerInstance<P, N> {
266        /// Creates a new event filter using this contract instance's provider and address.
267        ///
268        /// Note that the type can be any event, not just those defined in this contract.
269        /// Prefer using the other methods for building type-safe event filters.
270        pub fn event_filter<E: alloy_sol_types::SolEvent>(
271            &self,
272        ) -> alloy_contract::Event<&P, E, N> {
273            alloy_contract::Event::new_sol(&self.provider, &self.address)
274        }
275    }
276}
277/**
278
279Generated by the following Solidity interface...
280```solidity
281library TimelockController {
282    type OperationState is uint8;
283}
284
285interface SafeExitTimelock {
286    error AccessControlBadConfirmation();
287    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
288    error FailedInnerCall();
289    error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
290    error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
291    error TimelockUnauthorizedCaller(address caller);
292    error TimelockUnexecutedPredecessor(bytes32 predecessorId);
293    error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
294
295    event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
296    event CallSalt(bytes32 indexed id, bytes32 salt);
297    event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
298    event Cancelled(bytes32 indexed id);
299    event MinDelayChange(uint256 oldDuration, uint256 newDuration);
300    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
301    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
302    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
303
304    constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
305
306    receive() external payable;
307
308    function CANCELLER_ROLE() external view returns (bytes32);
309    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
310    function EXECUTOR_ROLE() external view returns (bytes32);
311    function PROPOSER_ROLE() external view returns (bytes32);
312    function cancel(bytes32 id) external;
313    function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
314    function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
315    function getMinDelay() external view returns (uint256);
316    function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
317    function getRoleAdmin(bytes32 role) external view returns (bytes32);
318    function getTimestamp(bytes32 id) external view returns (uint256);
319    function grantRole(bytes32 role, address account) external;
320    function hasRole(bytes32 role, address account) external view returns (bool);
321    function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
322    function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
323    function isOperation(bytes32 id) external view returns (bool);
324    function isOperationDone(bytes32 id) external view returns (bool);
325    function isOperationPending(bytes32 id) external view returns (bool);
326    function isOperationReady(bytes32 id) external view returns (bool);
327    function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
328    function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
329    function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
330    function renounceRole(bytes32 role, address callerConfirmation) external;
331    function revokeRole(bytes32 role, address account) external;
332    function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
333    function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
334    function supportsInterface(bytes4 interfaceId) external view returns (bool);
335    function updateDelay(uint256 newDelay) external;
336}
337```
338
339...which was generated by the following JSON ABI:
340```json
341[
342  {
343    "type": "constructor",
344    "inputs": [
345      {
346        "name": "minDelay",
347        "type": "uint256",
348        "internalType": "uint256"
349      },
350      {
351        "name": "proposers",
352        "type": "address[]",
353        "internalType": "address[]"
354      },
355      {
356        "name": "executors",
357        "type": "address[]",
358        "internalType": "address[]"
359      },
360      {
361        "name": "admin",
362        "type": "address",
363        "internalType": "address"
364      }
365    ],
366    "stateMutability": "nonpayable"
367  },
368  {
369    "type": "receive",
370    "stateMutability": "payable"
371  },
372  {
373    "type": "function",
374    "name": "CANCELLER_ROLE",
375    "inputs": [],
376    "outputs": [
377      {
378        "name": "",
379        "type": "bytes32",
380        "internalType": "bytes32"
381      }
382    ],
383    "stateMutability": "view"
384  },
385  {
386    "type": "function",
387    "name": "DEFAULT_ADMIN_ROLE",
388    "inputs": [],
389    "outputs": [
390      {
391        "name": "",
392        "type": "bytes32",
393        "internalType": "bytes32"
394      }
395    ],
396    "stateMutability": "view"
397  },
398  {
399    "type": "function",
400    "name": "EXECUTOR_ROLE",
401    "inputs": [],
402    "outputs": [
403      {
404        "name": "",
405        "type": "bytes32",
406        "internalType": "bytes32"
407      }
408    ],
409    "stateMutability": "view"
410  },
411  {
412    "type": "function",
413    "name": "PROPOSER_ROLE",
414    "inputs": [],
415    "outputs": [
416      {
417        "name": "",
418        "type": "bytes32",
419        "internalType": "bytes32"
420      }
421    ],
422    "stateMutability": "view"
423  },
424  {
425    "type": "function",
426    "name": "cancel",
427    "inputs": [
428      {
429        "name": "id",
430        "type": "bytes32",
431        "internalType": "bytes32"
432      }
433    ],
434    "outputs": [],
435    "stateMutability": "nonpayable"
436  },
437  {
438    "type": "function",
439    "name": "execute",
440    "inputs": [
441      {
442        "name": "target",
443        "type": "address",
444        "internalType": "address"
445      },
446      {
447        "name": "value",
448        "type": "uint256",
449        "internalType": "uint256"
450      },
451      {
452        "name": "payload",
453        "type": "bytes",
454        "internalType": "bytes"
455      },
456      {
457        "name": "predecessor",
458        "type": "bytes32",
459        "internalType": "bytes32"
460      },
461      {
462        "name": "salt",
463        "type": "bytes32",
464        "internalType": "bytes32"
465      }
466    ],
467    "outputs": [],
468    "stateMutability": "payable"
469  },
470  {
471    "type": "function",
472    "name": "executeBatch",
473    "inputs": [
474      {
475        "name": "targets",
476        "type": "address[]",
477        "internalType": "address[]"
478      },
479      {
480        "name": "values",
481        "type": "uint256[]",
482        "internalType": "uint256[]"
483      },
484      {
485        "name": "payloads",
486        "type": "bytes[]",
487        "internalType": "bytes[]"
488      },
489      {
490        "name": "predecessor",
491        "type": "bytes32",
492        "internalType": "bytes32"
493      },
494      {
495        "name": "salt",
496        "type": "bytes32",
497        "internalType": "bytes32"
498      }
499    ],
500    "outputs": [],
501    "stateMutability": "payable"
502  },
503  {
504    "type": "function",
505    "name": "getMinDelay",
506    "inputs": [],
507    "outputs": [
508      {
509        "name": "",
510        "type": "uint256",
511        "internalType": "uint256"
512      }
513    ],
514    "stateMutability": "view"
515  },
516  {
517    "type": "function",
518    "name": "getOperationState",
519    "inputs": [
520      {
521        "name": "id",
522        "type": "bytes32",
523        "internalType": "bytes32"
524      }
525    ],
526    "outputs": [
527      {
528        "name": "",
529        "type": "uint8",
530        "internalType": "enum TimelockController.OperationState"
531      }
532    ],
533    "stateMutability": "view"
534  },
535  {
536    "type": "function",
537    "name": "getRoleAdmin",
538    "inputs": [
539      {
540        "name": "role",
541        "type": "bytes32",
542        "internalType": "bytes32"
543      }
544    ],
545    "outputs": [
546      {
547        "name": "",
548        "type": "bytes32",
549        "internalType": "bytes32"
550      }
551    ],
552    "stateMutability": "view"
553  },
554  {
555    "type": "function",
556    "name": "getTimestamp",
557    "inputs": [
558      {
559        "name": "id",
560        "type": "bytes32",
561        "internalType": "bytes32"
562      }
563    ],
564    "outputs": [
565      {
566        "name": "",
567        "type": "uint256",
568        "internalType": "uint256"
569      }
570    ],
571    "stateMutability": "view"
572  },
573  {
574    "type": "function",
575    "name": "grantRole",
576    "inputs": [
577      {
578        "name": "role",
579        "type": "bytes32",
580        "internalType": "bytes32"
581      },
582      {
583        "name": "account",
584        "type": "address",
585        "internalType": "address"
586      }
587    ],
588    "outputs": [],
589    "stateMutability": "nonpayable"
590  },
591  {
592    "type": "function",
593    "name": "hasRole",
594    "inputs": [
595      {
596        "name": "role",
597        "type": "bytes32",
598        "internalType": "bytes32"
599      },
600      {
601        "name": "account",
602        "type": "address",
603        "internalType": "address"
604      }
605    ],
606    "outputs": [
607      {
608        "name": "",
609        "type": "bool",
610        "internalType": "bool"
611      }
612    ],
613    "stateMutability": "view"
614  },
615  {
616    "type": "function",
617    "name": "hashOperation",
618    "inputs": [
619      {
620        "name": "target",
621        "type": "address",
622        "internalType": "address"
623      },
624      {
625        "name": "value",
626        "type": "uint256",
627        "internalType": "uint256"
628      },
629      {
630        "name": "data",
631        "type": "bytes",
632        "internalType": "bytes"
633      },
634      {
635        "name": "predecessor",
636        "type": "bytes32",
637        "internalType": "bytes32"
638      },
639      {
640        "name": "salt",
641        "type": "bytes32",
642        "internalType": "bytes32"
643      }
644    ],
645    "outputs": [
646      {
647        "name": "",
648        "type": "bytes32",
649        "internalType": "bytes32"
650      }
651    ],
652    "stateMutability": "pure"
653  },
654  {
655    "type": "function",
656    "name": "hashOperationBatch",
657    "inputs": [
658      {
659        "name": "targets",
660        "type": "address[]",
661        "internalType": "address[]"
662      },
663      {
664        "name": "values",
665        "type": "uint256[]",
666        "internalType": "uint256[]"
667      },
668      {
669        "name": "payloads",
670        "type": "bytes[]",
671        "internalType": "bytes[]"
672      },
673      {
674        "name": "predecessor",
675        "type": "bytes32",
676        "internalType": "bytes32"
677      },
678      {
679        "name": "salt",
680        "type": "bytes32",
681        "internalType": "bytes32"
682      }
683    ],
684    "outputs": [
685      {
686        "name": "",
687        "type": "bytes32",
688        "internalType": "bytes32"
689      }
690    ],
691    "stateMutability": "pure"
692  },
693  {
694    "type": "function",
695    "name": "isOperation",
696    "inputs": [
697      {
698        "name": "id",
699        "type": "bytes32",
700        "internalType": "bytes32"
701      }
702    ],
703    "outputs": [
704      {
705        "name": "",
706        "type": "bool",
707        "internalType": "bool"
708      }
709    ],
710    "stateMutability": "view"
711  },
712  {
713    "type": "function",
714    "name": "isOperationDone",
715    "inputs": [
716      {
717        "name": "id",
718        "type": "bytes32",
719        "internalType": "bytes32"
720      }
721    ],
722    "outputs": [
723      {
724        "name": "",
725        "type": "bool",
726        "internalType": "bool"
727      }
728    ],
729    "stateMutability": "view"
730  },
731  {
732    "type": "function",
733    "name": "isOperationPending",
734    "inputs": [
735      {
736        "name": "id",
737        "type": "bytes32",
738        "internalType": "bytes32"
739      }
740    ],
741    "outputs": [
742      {
743        "name": "",
744        "type": "bool",
745        "internalType": "bool"
746      }
747    ],
748    "stateMutability": "view"
749  },
750  {
751    "type": "function",
752    "name": "isOperationReady",
753    "inputs": [
754      {
755        "name": "id",
756        "type": "bytes32",
757        "internalType": "bytes32"
758      }
759    ],
760    "outputs": [
761      {
762        "name": "",
763        "type": "bool",
764        "internalType": "bool"
765      }
766    ],
767    "stateMutability": "view"
768  },
769  {
770    "type": "function",
771    "name": "onERC1155BatchReceived",
772    "inputs": [
773      {
774        "name": "",
775        "type": "address",
776        "internalType": "address"
777      },
778      {
779        "name": "",
780        "type": "address",
781        "internalType": "address"
782      },
783      {
784        "name": "",
785        "type": "uint256[]",
786        "internalType": "uint256[]"
787      },
788      {
789        "name": "",
790        "type": "uint256[]",
791        "internalType": "uint256[]"
792      },
793      {
794        "name": "",
795        "type": "bytes",
796        "internalType": "bytes"
797      }
798    ],
799    "outputs": [
800      {
801        "name": "",
802        "type": "bytes4",
803        "internalType": "bytes4"
804      }
805    ],
806    "stateMutability": "nonpayable"
807  },
808  {
809    "type": "function",
810    "name": "onERC1155Received",
811    "inputs": [
812      {
813        "name": "",
814        "type": "address",
815        "internalType": "address"
816      },
817      {
818        "name": "",
819        "type": "address",
820        "internalType": "address"
821      },
822      {
823        "name": "",
824        "type": "uint256",
825        "internalType": "uint256"
826      },
827      {
828        "name": "",
829        "type": "uint256",
830        "internalType": "uint256"
831      },
832      {
833        "name": "",
834        "type": "bytes",
835        "internalType": "bytes"
836      }
837    ],
838    "outputs": [
839      {
840        "name": "",
841        "type": "bytes4",
842        "internalType": "bytes4"
843      }
844    ],
845    "stateMutability": "nonpayable"
846  },
847  {
848    "type": "function",
849    "name": "onERC721Received",
850    "inputs": [
851      {
852        "name": "",
853        "type": "address",
854        "internalType": "address"
855      },
856      {
857        "name": "",
858        "type": "address",
859        "internalType": "address"
860      },
861      {
862        "name": "",
863        "type": "uint256",
864        "internalType": "uint256"
865      },
866      {
867        "name": "",
868        "type": "bytes",
869        "internalType": "bytes"
870      }
871    ],
872    "outputs": [
873      {
874        "name": "",
875        "type": "bytes4",
876        "internalType": "bytes4"
877      }
878    ],
879    "stateMutability": "nonpayable"
880  },
881  {
882    "type": "function",
883    "name": "renounceRole",
884    "inputs": [
885      {
886        "name": "role",
887        "type": "bytes32",
888        "internalType": "bytes32"
889      },
890      {
891        "name": "callerConfirmation",
892        "type": "address",
893        "internalType": "address"
894      }
895    ],
896    "outputs": [],
897    "stateMutability": "nonpayable"
898  },
899  {
900    "type": "function",
901    "name": "revokeRole",
902    "inputs": [
903      {
904        "name": "role",
905        "type": "bytes32",
906        "internalType": "bytes32"
907      },
908      {
909        "name": "account",
910        "type": "address",
911        "internalType": "address"
912      }
913    ],
914    "outputs": [],
915    "stateMutability": "nonpayable"
916  },
917  {
918    "type": "function",
919    "name": "schedule",
920    "inputs": [
921      {
922        "name": "target",
923        "type": "address",
924        "internalType": "address"
925      },
926      {
927        "name": "value",
928        "type": "uint256",
929        "internalType": "uint256"
930      },
931      {
932        "name": "data",
933        "type": "bytes",
934        "internalType": "bytes"
935      },
936      {
937        "name": "predecessor",
938        "type": "bytes32",
939        "internalType": "bytes32"
940      },
941      {
942        "name": "salt",
943        "type": "bytes32",
944        "internalType": "bytes32"
945      },
946      {
947        "name": "delay",
948        "type": "uint256",
949        "internalType": "uint256"
950      }
951    ],
952    "outputs": [],
953    "stateMutability": "nonpayable"
954  },
955  {
956    "type": "function",
957    "name": "scheduleBatch",
958    "inputs": [
959      {
960        "name": "targets",
961        "type": "address[]",
962        "internalType": "address[]"
963      },
964      {
965        "name": "values",
966        "type": "uint256[]",
967        "internalType": "uint256[]"
968      },
969      {
970        "name": "payloads",
971        "type": "bytes[]",
972        "internalType": "bytes[]"
973      },
974      {
975        "name": "predecessor",
976        "type": "bytes32",
977        "internalType": "bytes32"
978      },
979      {
980        "name": "salt",
981        "type": "bytes32",
982        "internalType": "bytes32"
983      },
984      {
985        "name": "delay",
986        "type": "uint256",
987        "internalType": "uint256"
988      }
989    ],
990    "outputs": [],
991    "stateMutability": "nonpayable"
992  },
993  {
994    "type": "function",
995    "name": "supportsInterface",
996    "inputs": [
997      {
998        "name": "interfaceId",
999        "type": "bytes4",
1000        "internalType": "bytes4"
1001      }
1002    ],
1003    "outputs": [
1004      {
1005        "name": "",
1006        "type": "bool",
1007        "internalType": "bool"
1008      }
1009    ],
1010    "stateMutability": "view"
1011  },
1012  {
1013    "type": "function",
1014    "name": "updateDelay",
1015    "inputs": [
1016      {
1017        "name": "newDelay",
1018        "type": "uint256",
1019        "internalType": "uint256"
1020      }
1021    ],
1022    "outputs": [],
1023    "stateMutability": "nonpayable"
1024  },
1025  {
1026    "type": "event",
1027    "name": "CallExecuted",
1028    "inputs": [
1029      {
1030        "name": "id",
1031        "type": "bytes32",
1032        "indexed": true,
1033        "internalType": "bytes32"
1034      },
1035      {
1036        "name": "index",
1037        "type": "uint256",
1038        "indexed": true,
1039        "internalType": "uint256"
1040      },
1041      {
1042        "name": "target",
1043        "type": "address",
1044        "indexed": false,
1045        "internalType": "address"
1046      },
1047      {
1048        "name": "value",
1049        "type": "uint256",
1050        "indexed": false,
1051        "internalType": "uint256"
1052      },
1053      {
1054        "name": "data",
1055        "type": "bytes",
1056        "indexed": false,
1057        "internalType": "bytes"
1058      }
1059    ],
1060    "anonymous": false
1061  },
1062  {
1063    "type": "event",
1064    "name": "CallSalt",
1065    "inputs": [
1066      {
1067        "name": "id",
1068        "type": "bytes32",
1069        "indexed": true,
1070        "internalType": "bytes32"
1071      },
1072      {
1073        "name": "salt",
1074        "type": "bytes32",
1075        "indexed": false,
1076        "internalType": "bytes32"
1077      }
1078    ],
1079    "anonymous": false
1080  },
1081  {
1082    "type": "event",
1083    "name": "CallScheduled",
1084    "inputs": [
1085      {
1086        "name": "id",
1087        "type": "bytes32",
1088        "indexed": true,
1089        "internalType": "bytes32"
1090      },
1091      {
1092        "name": "index",
1093        "type": "uint256",
1094        "indexed": true,
1095        "internalType": "uint256"
1096      },
1097      {
1098        "name": "target",
1099        "type": "address",
1100        "indexed": false,
1101        "internalType": "address"
1102      },
1103      {
1104        "name": "value",
1105        "type": "uint256",
1106        "indexed": false,
1107        "internalType": "uint256"
1108      },
1109      {
1110        "name": "data",
1111        "type": "bytes",
1112        "indexed": false,
1113        "internalType": "bytes"
1114      },
1115      {
1116        "name": "predecessor",
1117        "type": "bytes32",
1118        "indexed": false,
1119        "internalType": "bytes32"
1120      },
1121      {
1122        "name": "delay",
1123        "type": "uint256",
1124        "indexed": false,
1125        "internalType": "uint256"
1126      }
1127    ],
1128    "anonymous": false
1129  },
1130  {
1131    "type": "event",
1132    "name": "Cancelled",
1133    "inputs": [
1134      {
1135        "name": "id",
1136        "type": "bytes32",
1137        "indexed": true,
1138        "internalType": "bytes32"
1139      }
1140    ],
1141    "anonymous": false
1142  },
1143  {
1144    "type": "event",
1145    "name": "MinDelayChange",
1146    "inputs": [
1147      {
1148        "name": "oldDuration",
1149        "type": "uint256",
1150        "indexed": false,
1151        "internalType": "uint256"
1152      },
1153      {
1154        "name": "newDuration",
1155        "type": "uint256",
1156        "indexed": false,
1157        "internalType": "uint256"
1158      }
1159    ],
1160    "anonymous": false
1161  },
1162  {
1163    "type": "event",
1164    "name": "RoleAdminChanged",
1165    "inputs": [
1166      {
1167        "name": "role",
1168        "type": "bytes32",
1169        "indexed": true,
1170        "internalType": "bytes32"
1171      },
1172      {
1173        "name": "previousAdminRole",
1174        "type": "bytes32",
1175        "indexed": true,
1176        "internalType": "bytes32"
1177      },
1178      {
1179        "name": "newAdminRole",
1180        "type": "bytes32",
1181        "indexed": true,
1182        "internalType": "bytes32"
1183      }
1184    ],
1185    "anonymous": false
1186  },
1187  {
1188    "type": "event",
1189    "name": "RoleGranted",
1190    "inputs": [
1191      {
1192        "name": "role",
1193        "type": "bytes32",
1194        "indexed": true,
1195        "internalType": "bytes32"
1196      },
1197      {
1198        "name": "account",
1199        "type": "address",
1200        "indexed": true,
1201        "internalType": "address"
1202      },
1203      {
1204        "name": "sender",
1205        "type": "address",
1206        "indexed": true,
1207        "internalType": "address"
1208      }
1209    ],
1210    "anonymous": false
1211  },
1212  {
1213    "type": "event",
1214    "name": "RoleRevoked",
1215    "inputs": [
1216      {
1217        "name": "role",
1218        "type": "bytes32",
1219        "indexed": true,
1220        "internalType": "bytes32"
1221      },
1222      {
1223        "name": "account",
1224        "type": "address",
1225        "indexed": true,
1226        "internalType": "address"
1227      },
1228      {
1229        "name": "sender",
1230        "type": "address",
1231        "indexed": true,
1232        "internalType": "address"
1233      }
1234    ],
1235    "anonymous": false
1236  },
1237  {
1238    "type": "error",
1239    "name": "AccessControlBadConfirmation",
1240    "inputs": []
1241  },
1242  {
1243    "type": "error",
1244    "name": "AccessControlUnauthorizedAccount",
1245    "inputs": [
1246      {
1247        "name": "account",
1248        "type": "address",
1249        "internalType": "address"
1250      },
1251      {
1252        "name": "neededRole",
1253        "type": "bytes32",
1254        "internalType": "bytes32"
1255      }
1256    ]
1257  },
1258  {
1259    "type": "error",
1260    "name": "FailedInnerCall",
1261    "inputs": []
1262  },
1263  {
1264    "type": "error",
1265    "name": "TimelockInsufficientDelay",
1266    "inputs": [
1267      {
1268        "name": "delay",
1269        "type": "uint256",
1270        "internalType": "uint256"
1271      },
1272      {
1273        "name": "minDelay",
1274        "type": "uint256",
1275        "internalType": "uint256"
1276      }
1277    ]
1278  },
1279  {
1280    "type": "error",
1281    "name": "TimelockInvalidOperationLength",
1282    "inputs": [
1283      {
1284        "name": "targets",
1285        "type": "uint256",
1286        "internalType": "uint256"
1287      },
1288      {
1289        "name": "payloads",
1290        "type": "uint256",
1291        "internalType": "uint256"
1292      },
1293      {
1294        "name": "values",
1295        "type": "uint256",
1296        "internalType": "uint256"
1297      }
1298    ]
1299  },
1300  {
1301    "type": "error",
1302    "name": "TimelockUnauthorizedCaller",
1303    "inputs": [
1304      {
1305        "name": "caller",
1306        "type": "address",
1307        "internalType": "address"
1308      }
1309    ]
1310  },
1311  {
1312    "type": "error",
1313    "name": "TimelockUnexecutedPredecessor",
1314    "inputs": [
1315      {
1316        "name": "predecessorId",
1317        "type": "bytes32",
1318        "internalType": "bytes32"
1319      }
1320    ]
1321  },
1322  {
1323    "type": "error",
1324    "name": "TimelockUnexpectedOperationState",
1325    "inputs": [
1326      {
1327        "name": "operationId",
1328        "type": "bytes32",
1329        "internalType": "bytes32"
1330      },
1331      {
1332        "name": "expectedStates",
1333        "type": "bytes32",
1334        "internalType": "bytes32"
1335      }
1336    ]
1337  }
1338]
1339```*/
1340#[allow(
1341    non_camel_case_types,
1342    non_snake_case,
1343    clippy::pub_underscore_fields,
1344    clippy::style,
1345    clippy::empty_structs_with_brackets
1346)]
1347pub mod SafeExitTimelock {
1348    use super::*;
1349    use alloy::sol_types as alloy_sol_types;
1350    /// The creation / init bytecode of the contract.
1351    ///
1352    /// ```text
1353    ///0x608060405234801561000f575f5ffd5b50604051611d0b380380611d0b83398101604081905261002e916102fe565b8383838361003c5f30610183565b506001600160a01b03811615610058576100565f82610183565b505b5f5b83518110156100ec576100ac7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18583815181106100995761009961037d565b602002602001015161018360201b60201c565b506100e37ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838583815181106100995761009961037d565b5060010161005a565b505f5b82518110156101375761012e7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638483815181106100995761009961037d565b506001016100ef565b506002849055604080515f8152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050610391565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16610223575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101db3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610226565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b0381168114610256575f5ffd5b919050565b5f82601f83011261026a575f5ffd5b81516001600160401b038111156102835761028361022c565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102b1576102b161022c565b6040529182526020818501810192908101868411156102ce575f5ffd5b6020860192505b838310156102f4576102e683610240565b8152602092830192016102d5565b5095945050505050565b5f5f5f5f60808587031215610311575f5ffd5b845160208601519094506001600160401b0381111561032e575f5ffd5b61033a8782880161025b565b604087015190945090506001600160401b03811115610357575f5ffd5b6103638782880161025b565b92505061037260608601610240565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b61196d8061039e5f395ff3fe6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1354    /// ```
1355    #[rustfmt::skip]
1356    #[allow(clippy::all)]
1357    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1358        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",
1359    );
1360    /// The runtime bytecode of the contract, as deployed on the network.
1361    ///
1362    /// ```text
1363    ///0x6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1364    /// ```
1365    #[rustfmt::skip]
1366    #[allow(clippy::all)]
1367    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1368        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",
1369    );
1370    #[derive(serde::Serialize, serde::Deserialize)]
1371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1372    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
1373```solidity
1374error AccessControlBadConfirmation();
1375```*/
1376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1377    #[derive(Clone)]
1378    pub struct AccessControlBadConfirmation;
1379    #[allow(
1380        non_camel_case_types,
1381        non_snake_case,
1382        clippy::pub_underscore_fields,
1383        clippy::style
1384    )]
1385    const _: () = {
1386        use alloy::sol_types as alloy_sol_types;
1387        #[doc(hidden)]
1388        #[allow(dead_code)]
1389        type UnderlyingSolTuple<'a> = ();
1390        #[doc(hidden)]
1391        type UnderlyingRustTuple<'a> = ();
1392        #[cfg(test)]
1393        #[allow(dead_code, unreachable_patterns)]
1394        fn _type_assertion(
1395            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1396        ) {
1397            match _t {
1398                alloy_sol_types::private::AssertTypeEq::<
1399                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1400                >(_) => {}
1401            }
1402        }
1403        #[automatically_derived]
1404        #[doc(hidden)]
1405        impl ::core::convert::From<AccessControlBadConfirmation>
1406        for UnderlyingRustTuple<'_> {
1407            fn from(value: AccessControlBadConfirmation) -> Self {
1408                ()
1409            }
1410        }
1411        #[automatically_derived]
1412        #[doc(hidden)]
1413        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1414        for AccessControlBadConfirmation {
1415            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1416                Self
1417            }
1418        }
1419        #[automatically_derived]
1420        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
1421            type Parameters<'a> = UnderlyingSolTuple<'a>;
1422            type Token<'a> = <Self::Parameters<
1423                'a,
1424            > as alloy_sol_types::SolType>::Token<'a>;
1425            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
1426            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
1427            #[inline]
1428            fn new<'a>(
1429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1430            ) -> Self {
1431                tuple.into()
1432            }
1433            #[inline]
1434            fn tokenize(&self) -> Self::Token<'_> {
1435                ()
1436            }
1437            #[inline]
1438            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1439                <Self::Parameters<
1440                    '_,
1441                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1442                    .map(Self::new)
1443            }
1444        }
1445    };
1446    #[derive(serde::Serialize, serde::Deserialize)]
1447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1448    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
1449```solidity
1450error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1451```*/
1452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1453    #[derive(Clone)]
1454    pub struct AccessControlUnauthorizedAccount {
1455        #[allow(missing_docs)]
1456        pub account: alloy::sol_types::private::Address,
1457        #[allow(missing_docs)]
1458        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
1459    }
1460    #[allow(
1461        non_camel_case_types,
1462        non_snake_case,
1463        clippy::pub_underscore_fields,
1464        clippy::style
1465    )]
1466    const _: () = {
1467        use alloy::sol_types as alloy_sol_types;
1468        #[doc(hidden)]
1469        #[allow(dead_code)]
1470        type UnderlyingSolTuple<'a> = (
1471            alloy::sol_types::sol_data::Address,
1472            alloy::sol_types::sol_data::FixedBytes<32>,
1473        );
1474        #[doc(hidden)]
1475        type UnderlyingRustTuple<'a> = (
1476            alloy::sol_types::private::Address,
1477            alloy::sol_types::private::FixedBytes<32>,
1478        );
1479        #[cfg(test)]
1480        #[allow(dead_code, unreachable_patterns)]
1481        fn _type_assertion(
1482            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1483        ) {
1484            match _t {
1485                alloy_sol_types::private::AssertTypeEq::<
1486                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1487                >(_) => {}
1488            }
1489        }
1490        #[automatically_derived]
1491        #[doc(hidden)]
1492        impl ::core::convert::From<AccessControlUnauthorizedAccount>
1493        for UnderlyingRustTuple<'_> {
1494            fn from(value: AccessControlUnauthorizedAccount) -> Self {
1495                (value.account, value.neededRole)
1496            }
1497        }
1498        #[automatically_derived]
1499        #[doc(hidden)]
1500        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1501        for AccessControlUnauthorizedAccount {
1502            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1503                Self {
1504                    account: tuple.0,
1505                    neededRole: tuple.1,
1506                }
1507            }
1508        }
1509        #[automatically_derived]
1510        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
1511            type Parameters<'a> = UnderlyingSolTuple<'a>;
1512            type Token<'a> = <Self::Parameters<
1513                'a,
1514            > as alloy_sol_types::SolType>::Token<'a>;
1515            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
1516            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
1517            #[inline]
1518            fn new<'a>(
1519                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1520            ) -> Self {
1521                tuple.into()
1522            }
1523            #[inline]
1524            fn tokenize(&self) -> Self::Token<'_> {
1525                (
1526                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1527                        &self.account,
1528                    ),
1529                    <alloy::sol_types::sol_data::FixedBytes<
1530                        32,
1531                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
1532                )
1533            }
1534            #[inline]
1535            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1536                <Self::Parameters<
1537                    '_,
1538                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1539                    .map(Self::new)
1540            }
1541        }
1542    };
1543    #[derive(serde::Serialize, serde::Deserialize)]
1544    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1545    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
1546```solidity
1547error FailedInnerCall();
1548```*/
1549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1550    #[derive(Clone)]
1551    pub struct FailedInnerCall;
1552    #[allow(
1553        non_camel_case_types,
1554        non_snake_case,
1555        clippy::pub_underscore_fields,
1556        clippy::style
1557    )]
1558    const _: () = {
1559        use alloy::sol_types as alloy_sol_types;
1560        #[doc(hidden)]
1561        #[allow(dead_code)]
1562        type UnderlyingSolTuple<'a> = ();
1563        #[doc(hidden)]
1564        type UnderlyingRustTuple<'a> = ();
1565        #[cfg(test)]
1566        #[allow(dead_code, unreachable_patterns)]
1567        fn _type_assertion(
1568            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1569        ) {
1570            match _t {
1571                alloy_sol_types::private::AssertTypeEq::<
1572                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1573                >(_) => {}
1574            }
1575        }
1576        #[automatically_derived]
1577        #[doc(hidden)]
1578        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
1579            fn from(value: FailedInnerCall) -> Self {
1580                ()
1581            }
1582        }
1583        #[automatically_derived]
1584        #[doc(hidden)]
1585        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
1586            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1587                Self
1588            }
1589        }
1590        #[automatically_derived]
1591        impl alloy_sol_types::SolError for FailedInnerCall {
1592            type Parameters<'a> = UnderlyingSolTuple<'a>;
1593            type Token<'a> = <Self::Parameters<
1594                'a,
1595            > as alloy_sol_types::SolType>::Token<'a>;
1596            const SIGNATURE: &'static str = "FailedInnerCall()";
1597            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
1598            #[inline]
1599            fn new<'a>(
1600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1601            ) -> Self {
1602                tuple.into()
1603            }
1604            #[inline]
1605            fn tokenize(&self) -> Self::Token<'_> {
1606                ()
1607            }
1608            #[inline]
1609            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1610                <Self::Parameters<
1611                    '_,
1612                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1613                    .map(Self::new)
1614            }
1615        }
1616    };
1617    #[derive(serde::Serialize, serde::Deserialize)]
1618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1619    /**Custom error with signature `TimelockInsufficientDelay(uint256,uint256)` and selector `0x54336609`.
1620```solidity
1621error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
1622```*/
1623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1624    #[derive(Clone)]
1625    pub struct TimelockInsufficientDelay {
1626        #[allow(missing_docs)]
1627        pub delay: alloy::sol_types::private::primitives::aliases::U256,
1628        #[allow(missing_docs)]
1629        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
1630    }
1631    #[allow(
1632        non_camel_case_types,
1633        non_snake_case,
1634        clippy::pub_underscore_fields,
1635        clippy::style
1636    )]
1637    const _: () = {
1638        use alloy::sol_types as alloy_sol_types;
1639        #[doc(hidden)]
1640        #[allow(dead_code)]
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        #[allow(dead_code)]
1740        type UnderlyingSolTuple<'a> = (
1741            alloy::sol_types::sol_data::Uint<256>,
1742            alloy::sol_types::sol_data::Uint<256>,
1743            alloy::sol_types::sol_data::Uint<256>,
1744        );
1745        #[doc(hidden)]
1746        type UnderlyingRustTuple<'a> = (
1747            alloy::sol_types::private::primitives::aliases::U256,
1748            alloy::sol_types::private::primitives::aliases::U256,
1749            alloy::sol_types::private::primitives::aliases::U256,
1750        );
1751        #[cfg(test)]
1752        #[allow(dead_code, unreachable_patterns)]
1753        fn _type_assertion(
1754            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1755        ) {
1756            match _t {
1757                alloy_sol_types::private::AssertTypeEq::<
1758                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1759                >(_) => {}
1760            }
1761        }
1762        #[automatically_derived]
1763        #[doc(hidden)]
1764        impl ::core::convert::From<TimelockInvalidOperationLength>
1765        for UnderlyingRustTuple<'_> {
1766            fn from(value: TimelockInvalidOperationLength) -> Self {
1767                (value.targets, value.payloads, value.values)
1768            }
1769        }
1770        #[automatically_derived]
1771        #[doc(hidden)]
1772        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1773        for TimelockInvalidOperationLength {
1774            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1775                Self {
1776                    targets: tuple.0,
1777                    payloads: tuple.1,
1778                    values: tuple.2,
1779                }
1780            }
1781        }
1782        #[automatically_derived]
1783        impl alloy_sol_types::SolError for TimelockInvalidOperationLength {
1784            type Parameters<'a> = UnderlyingSolTuple<'a>;
1785            type Token<'a> = <Self::Parameters<
1786                'a,
1787            > as alloy_sol_types::SolType>::Token<'a>;
1788            const SIGNATURE: &'static str = "TimelockInvalidOperationLength(uint256,uint256,uint256)";
1789            const SELECTOR: [u8; 4] = [255u8, 176u8, 50u8, 17u8];
1790            #[inline]
1791            fn new<'a>(
1792                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1793            ) -> Self {
1794                tuple.into()
1795            }
1796            #[inline]
1797            fn tokenize(&self) -> Self::Token<'_> {
1798                (
1799                    <alloy::sol_types::sol_data::Uint<
1800                        256,
1801                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
1802                    <alloy::sol_types::sol_data::Uint<
1803                        256,
1804                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::tokenize(&self.values),
1808                )
1809            }
1810            #[inline]
1811            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1812                <Self::Parameters<
1813                    '_,
1814                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1815                    .map(Self::new)
1816            }
1817        }
1818    };
1819    #[derive(serde::Serialize, serde::Deserialize)]
1820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1821    /**Custom error with signature `TimelockUnauthorizedCaller(address)` and selector `0xe2850c59`.
1822```solidity
1823error TimelockUnauthorizedCaller(address caller);
1824```*/
1825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1826    #[derive(Clone)]
1827    pub struct TimelockUnauthorizedCaller {
1828        #[allow(missing_docs)]
1829        pub caller: alloy::sol_types::private::Address,
1830    }
1831    #[allow(
1832        non_camel_case_types,
1833        non_snake_case,
1834        clippy::pub_underscore_fields,
1835        clippy::style
1836    )]
1837    const _: () = {
1838        use alloy::sol_types as alloy_sol_types;
1839        #[doc(hidden)]
1840        #[allow(dead_code)]
1841        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1842        #[doc(hidden)]
1843        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1844        #[cfg(test)]
1845        #[allow(dead_code, unreachable_patterns)]
1846        fn _type_assertion(
1847            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1848        ) {
1849            match _t {
1850                alloy_sol_types::private::AssertTypeEq::<
1851                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1852                >(_) => {}
1853            }
1854        }
1855        #[automatically_derived]
1856        #[doc(hidden)]
1857        impl ::core::convert::From<TimelockUnauthorizedCaller>
1858        for UnderlyingRustTuple<'_> {
1859            fn from(value: TimelockUnauthorizedCaller) -> Self {
1860                (value.caller,)
1861            }
1862        }
1863        #[automatically_derived]
1864        #[doc(hidden)]
1865        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1866        for TimelockUnauthorizedCaller {
1867            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1868                Self { caller: tuple.0 }
1869            }
1870        }
1871        #[automatically_derived]
1872        impl alloy_sol_types::SolError for TimelockUnauthorizedCaller {
1873            type Parameters<'a> = UnderlyingSolTuple<'a>;
1874            type Token<'a> = <Self::Parameters<
1875                'a,
1876            > as alloy_sol_types::SolType>::Token<'a>;
1877            const SIGNATURE: &'static str = "TimelockUnauthorizedCaller(address)";
1878            const SELECTOR: [u8; 4] = [226u8, 133u8, 12u8, 89u8];
1879            #[inline]
1880            fn new<'a>(
1881                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1882            ) -> Self {
1883                tuple.into()
1884            }
1885            #[inline]
1886            fn tokenize(&self) -> Self::Token<'_> {
1887                (
1888                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1889                        &self.caller,
1890                    ),
1891                )
1892            }
1893            #[inline]
1894            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1895                <Self::Parameters<
1896                    '_,
1897                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1898                    .map(Self::new)
1899            }
1900        }
1901    };
1902    #[derive(serde::Serialize, serde::Deserialize)]
1903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1904    /**Custom error with signature `TimelockUnexecutedPredecessor(bytes32)` and selector `0x90a9a618`.
1905```solidity
1906error TimelockUnexecutedPredecessor(bytes32 predecessorId);
1907```*/
1908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1909    #[derive(Clone)]
1910    pub struct TimelockUnexecutedPredecessor {
1911        #[allow(missing_docs)]
1912        pub predecessorId: alloy::sol_types::private::FixedBytes<32>,
1913    }
1914    #[allow(
1915        non_camel_case_types,
1916        non_snake_case,
1917        clippy::pub_underscore_fields,
1918        clippy::style
1919    )]
1920    const _: () = {
1921        use alloy::sol_types as alloy_sol_types;
1922        #[doc(hidden)]
1923        #[allow(dead_code)]
1924        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
1925        #[doc(hidden)]
1926        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
1927        #[cfg(test)]
1928        #[allow(dead_code, unreachable_patterns)]
1929        fn _type_assertion(
1930            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1931        ) {
1932            match _t {
1933                alloy_sol_types::private::AssertTypeEq::<
1934                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1935                >(_) => {}
1936            }
1937        }
1938        #[automatically_derived]
1939        #[doc(hidden)]
1940        impl ::core::convert::From<TimelockUnexecutedPredecessor>
1941        for UnderlyingRustTuple<'_> {
1942            fn from(value: TimelockUnexecutedPredecessor) -> Self {
1943                (value.predecessorId,)
1944            }
1945        }
1946        #[automatically_derived]
1947        #[doc(hidden)]
1948        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1949        for TimelockUnexecutedPredecessor {
1950            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1951                Self { predecessorId: tuple.0 }
1952            }
1953        }
1954        #[automatically_derived]
1955        impl alloy_sol_types::SolError for TimelockUnexecutedPredecessor {
1956            type Parameters<'a> = UnderlyingSolTuple<'a>;
1957            type Token<'a> = <Self::Parameters<
1958                'a,
1959            > as alloy_sol_types::SolType>::Token<'a>;
1960            const SIGNATURE: &'static str = "TimelockUnexecutedPredecessor(bytes32)";
1961            const SELECTOR: [u8; 4] = [144u8, 169u8, 166u8, 24u8];
1962            #[inline]
1963            fn new<'a>(
1964                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1965            ) -> Self {
1966                tuple.into()
1967            }
1968            #[inline]
1969            fn tokenize(&self) -> Self::Token<'_> {
1970                (
1971                    <alloy::sol_types::sol_data::FixedBytes<
1972                        32,
1973                    > as alloy_sol_types::SolType>::tokenize(&self.predecessorId),
1974                )
1975            }
1976            #[inline]
1977            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1978                <Self::Parameters<
1979                    '_,
1980                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1981                    .map(Self::new)
1982            }
1983        }
1984    };
1985    #[derive(serde::Serialize, serde::Deserialize)]
1986    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1987    /**Custom error with signature `TimelockUnexpectedOperationState(bytes32,bytes32)` and selector `0x5ead8eb5`.
1988```solidity
1989error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
1990```*/
1991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1992    #[derive(Clone)]
1993    pub struct TimelockUnexpectedOperationState {
1994        #[allow(missing_docs)]
1995        pub operationId: alloy::sol_types::private::FixedBytes<32>,
1996        #[allow(missing_docs)]
1997        pub expectedStates: alloy::sol_types::private::FixedBytes<32>,
1998    }
1999    #[allow(
2000        non_camel_case_types,
2001        non_snake_case,
2002        clippy::pub_underscore_fields,
2003        clippy::style
2004    )]
2005    const _: () = {
2006        use alloy::sol_types as alloy_sol_types;
2007        #[doc(hidden)]
2008        #[allow(dead_code)]
2009        type UnderlyingSolTuple<'a> = (
2010            alloy::sol_types::sol_data::FixedBytes<32>,
2011            alloy::sol_types::sol_data::FixedBytes<32>,
2012        );
2013        #[doc(hidden)]
2014        type UnderlyingRustTuple<'a> = (
2015            alloy::sol_types::private::FixedBytes<32>,
2016            alloy::sol_types::private::FixedBytes<32>,
2017        );
2018        #[cfg(test)]
2019        #[allow(dead_code, unreachable_patterns)]
2020        fn _type_assertion(
2021            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2022        ) {
2023            match _t {
2024                alloy_sol_types::private::AssertTypeEq::<
2025                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2026                >(_) => {}
2027            }
2028        }
2029        #[automatically_derived]
2030        #[doc(hidden)]
2031        impl ::core::convert::From<TimelockUnexpectedOperationState>
2032        for UnderlyingRustTuple<'_> {
2033            fn from(value: TimelockUnexpectedOperationState) -> Self {
2034                (value.operationId, value.expectedStates)
2035            }
2036        }
2037        #[automatically_derived]
2038        #[doc(hidden)]
2039        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2040        for TimelockUnexpectedOperationState {
2041            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2042                Self {
2043                    operationId: tuple.0,
2044                    expectedStates: tuple.1,
2045                }
2046            }
2047        }
2048        #[automatically_derived]
2049        impl alloy_sol_types::SolError for TimelockUnexpectedOperationState {
2050            type Parameters<'a> = UnderlyingSolTuple<'a>;
2051            type Token<'a> = <Self::Parameters<
2052                'a,
2053            > as alloy_sol_types::SolType>::Token<'a>;
2054            const SIGNATURE: &'static str = "TimelockUnexpectedOperationState(bytes32,bytes32)";
2055            const SELECTOR: [u8; 4] = [94u8, 173u8, 142u8, 181u8];
2056            #[inline]
2057            fn new<'a>(
2058                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2059            ) -> Self {
2060                tuple.into()
2061            }
2062            #[inline]
2063            fn tokenize(&self) -> Self::Token<'_> {
2064                (
2065                    <alloy::sol_types::sol_data::FixedBytes<
2066                        32,
2067                    > as alloy_sol_types::SolType>::tokenize(&self.operationId),
2068                    <alloy::sol_types::sol_data::FixedBytes<
2069                        32,
2070                    > as alloy_sol_types::SolType>::tokenize(&self.expectedStates),
2071                )
2072            }
2073            #[inline]
2074            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2075                <Self::Parameters<
2076                    '_,
2077                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2078                    .map(Self::new)
2079            }
2080        }
2081    };
2082    #[derive(serde::Serialize, serde::Deserialize)]
2083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2084    /**Event with signature `CallExecuted(bytes32,uint256,address,uint256,bytes)` and selector `0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58`.
2085```solidity
2086event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
2087```*/
2088    #[allow(
2089        non_camel_case_types,
2090        non_snake_case,
2091        clippy::pub_underscore_fields,
2092        clippy::style
2093    )]
2094    #[derive(Clone)]
2095    pub struct CallExecuted {
2096        #[allow(missing_docs)]
2097        pub id: alloy::sol_types::private::FixedBytes<32>,
2098        #[allow(missing_docs)]
2099        pub index: alloy::sol_types::private::primitives::aliases::U256,
2100        #[allow(missing_docs)]
2101        pub target: alloy::sol_types::private::Address,
2102        #[allow(missing_docs)]
2103        pub value: alloy::sol_types::private::primitives::aliases::U256,
2104        #[allow(missing_docs)]
2105        pub data: alloy::sol_types::private::Bytes,
2106    }
2107    #[allow(
2108        non_camel_case_types,
2109        non_snake_case,
2110        clippy::pub_underscore_fields,
2111        clippy::style
2112    )]
2113    const _: () = {
2114        use alloy::sol_types as alloy_sol_types;
2115        #[automatically_derived]
2116        impl alloy_sol_types::SolEvent for CallExecuted {
2117            type DataTuple<'a> = (
2118                alloy::sol_types::sol_data::Address,
2119                alloy::sol_types::sol_data::Uint<256>,
2120                alloy::sol_types::sol_data::Bytes,
2121            );
2122            type DataToken<'a> = <Self::DataTuple<
2123                'a,
2124            > as alloy_sol_types::SolType>::Token<'a>;
2125            type TopicList = (
2126                alloy_sol_types::sol_data::FixedBytes<32>,
2127                alloy::sol_types::sol_data::FixedBytes<32>,
2128                alloy::sol_types::sol_data::Uint<256>,
2129            );
2130            const SIGNATURE: &'static str = "CallExecuted(bytes32,uint256,address,uint256,bytes)";
2131            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2132                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
2133                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
2134                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
2135            ]);
2136            const ANONYMOUS: bool = false;
2137            #[allow(unused_variables)]
2138            #[inline]
2139            fn new(
2140                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2141                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2142            ) -> Self {
2143                Self {
2144                    id: topics.1,
2145                    index: topics.2,
2146                    target: data.0,
2147                    value: data.1,
2148                    data: data.2,
2149                }
2150            }
2151            #[inline]
2152            fn check_signature(
2153                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2154            ) -> alloy_sol_types::Result<()> {
2155                if topics.0 != Self::SIGNATURE_HASH {
2156                    return Err(
2157                        alloy_sol_types::Error::invalid_event_signature_hash(
2158                            Self::SIGNATURE,
2159                            topics.0,
2160                            Self::SIGNATURE_HASH,
2161                        ),
2162                    );
2163                }
2164                Ok(())
2165            }
2166            #[inline]
2167            fn tokenize_body(&self) -> Self::DataToken<'_> {
2168                (
2169                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2170                        &self.target,
2171                    ),
2172                    <alloy::sol_types::sol_data::Uint<
2173                        256,
2174                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2175                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2176                        &self.data,
2177                    ),
2178                )
2179            }
2180            #[inline]
2181            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2182                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2183            }
2184            #[inline]
2185            fn encode_topics_raw(
2186                &self,
2187                out: &mut [alloy_sol_types::abi::token::WordToken],
2188            ) -> alloy_sol_types::Result<()> {
2189                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2190                    return Err(alloy_sol_types::Error::Overrun);
2191                }
2192                out[0usize] = alloy_sol_types::abi::token::WordToken(
2193                    Self::SIGNATURE_HASH,
2194                );
2195                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2196                    32,
2197                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2198                out[2usize] = <alloy::sol_types::sol_data::Uint<
2199                    256,
2200                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2201                Ok(())
2202            }
2203        }
2204        #[automatically_derived]
2205        impl alloy_sol_types::private::IntoLogData for CallExecuted {
2206            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2207                From::from(self)
2208            }
2209            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2210                From::from(&self)
2211            }
2212        }
2213        #[automatically_derived]
2214        impl From<&CallExecuted> for alloy_sol_types::private::LogData {
2215            #[inline]
2216            fn from(this: &CallExecuted) -> alloy_sol_types::private::LogData {
2217                alloy_sol_types::SolEvent::encode_log_data(this)
2218            }
2219        }
2220    };
2221    #[derive(serde::Serialize, serde::Deserialize)]
2222    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2223    /**Event with signature `CallSalt(bytes32,bytes32)` and selector `0x20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387`.
2224```solidity
2225event CallSalt(bytes32 indexed id, bytes32 salt);
2226```*/
2227    #[allow(
2228        non_camel_case_types,
2229        non_snake_case,
2230        clippy::pub_underscore_fields,
2231        clippy::style
2232    )]
2233    #[derive(Clone)]
2234    pub struct CallSalt {
2235        #[allow(missing_docs)]
2236        pub id: alloy::sol_types::private::FixedBytes<32>,
2237        #[allow(missing_docs)]
2238        pub salt: alloy::sol_types::private::FixedBytes<32>,
2239    }
2240    #[allow(
2241        non_camel_case_types,
2242        non_snake_case,
2243        clippy::pub_underscore_fields,
2244        clippy::style
2245    )]
2246    const _: () = {
2247        use alloy::sol_types as alloy_sol_types;
2248        #[automatically_derived]
2249        impl alloy_sol_types::SolEvent for CallSalt {
2250            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
2251            type DataToken<'a> = <Self::DataTuple<
2252                'a,
2253            > as alloy_sol_types::SolType>::Token<'a>;
2254            type TopicList = (
2255                alloy_sol_types::sol_data::FixedBytes<32>,
2256                alloy::sol_types::sol_data::FixedBytes<32>,
2257            );
2258            const SIGNATURE: &'static str = "CallSalt(bytes32,bytes32)";
2259            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2260                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
2261                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
2262                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
2263            ]);
2264            const ANONYMOUS: bool = false;
2265            #[allow(unused_variables)]
2266            #[inline]
2267            fn new(
2268                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2269                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2270            ) -> Self {
2271                Self { id: topics.1, salt: data.0 }
2272            }
2273            #[inline]
2274            fn check_signature(
2275                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2276            ) -> alloy_sol_types::Result<()> {
2277                if topics.0 != Self::SIGNATURE_HASH {
2278                    return Err(
2279                        alloy_sol_types::Error::invalid_event_signature_hash(
2280                            Self::SIGNATURE,
2281                            topics.0,
2282                            Self::SIGNATURE_HASH,
2283                        ),
2284                    );
2285                }
2286                Ok(())
2287            }
2288            #[inline]
2289            fn tokenize_body(&self) -> Self::DataToken<'_> {
2290                (
2291                    <alloy::sol_types::sol_data::FixedBytes<
2292                        32,
2293                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
2294                )
2295            }
2296            #[inline]
2297            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2298                (Self::SIGNATURE_HASH.into(), self.id.clone())
2299            }
2300            #[inline]
2301            fn encode_topics_raw(
2302                &self,
2303                out: &mut [alloy_sol_types::abi::token::WordToken],
2304            ) -> alloy_sol_types::Result<()> {
2305                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2306                    return Err(alloy_sol_types::Error::Overrun);
2307                }
2308                out[0usize] = alloy_sol_types::abi::token::WordToken(
2309                    Self::SIGNATURE_HASH,
2310                );
2311                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2312                    32,
2313                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2314                Ok(())
2315            }
2316        }
2317        #[automatically_derived]
2318        impl alloy_sol_types::private::IntoLogData for CallSalt {
2319            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2320                From::from(self)
2321            }
2322            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2323                From::from(&self)
2324            }
2325        }
2326        #[automatically_derived]
2327        impl From<&CallSalt> for alloy_sol_types::private::LogData {
2328            #[inline]
2329            fn from(this: &CallSalt) -> alloy_sol_types::private::LogData {
2330                alloy_sol_types::SolEvent::encode_log_data(this)
2331            }
2332        }
2333    };
2334    #[derive(serde::Serialize, serde::Deserialize)]
2335    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2336    /**Event with signature `CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)` and selector `0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca`.
2337```solidity
2338event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
2339```*/
2340    #[allow(
2341        non_camel_case_types,
2342        non_snake_case,
2343        clippy::pub_underscore_fields,
2344        clippy::style
2345    )]
2346    #[derive(Clone)]
2347    pub struct CallScheduled {
2348        #[allow(missing_docs)]
2349        pub id: alloy::sol_types::private::FixedBytes<32>,
2350        #[allow(missing_docs)]
2351        pub index: alloy::sol_types::private::primitives::aliases::U256,
2352        #[allow(missing_docs)]
2353        pub target: alloy::sol_types::private::Address,
2354        #[allow(missing_docs)]
2355        pub value: alloy::sol_types::private::primitives::aliases::U256,
2356        #[allow(missing_docs)]
2357        pub data: alloy::sol_types::private::Bytes,
2358        #[allow(missing_docs)]
2359        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
2360        #[allow(missing_docs)]
2361        pub delay: alloy::sol_types::private::primitives::aliases::U256,
2362    }
2363    #[allow(
2364        non_camel_case_types,
2365        non_snake_case,
2366        clippy::pub_underscore_fields,
2367        clippy::style
2368    )]
2369    const _: () = {
2370        use alloy::sol_types as alloy_sol_types;
2371        #[automatically_derived]
2372        impl alloy_sol_types::SolEvent for CallScheduled {
2373            type DataTuple<'a> = (
2374                alloy::sol_types::sol_data::Address,
2375                alloy::sol_types::sol_data::Uint<256>,
2376                alloy::sol_types::sol_data::Bytes,
2377                alloy::sol_types::sol_data::FixedBytes<32>,
2378                alloy::sol_types::sol_data::Uint<256>,
2379            );
2380            type DataToken<'a> = <Self::DataTuple<
2381                'a,
2382            > as alloy_sol_types::SolType>::Token<'a>;
2383            type TopicList = (
2384                alloy_sol_types::sol_data::FixedBytes<32>,
2385                alloy::sol_types::sol_data::FixedBytes<32>,
2386                alloy::sol_types::sol_data::Uint<256>,
2387            );
2388            const SIGNATURE: &'static str = "CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)";
2389            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2390                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
2391                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
2392                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
2393            ]);
2394            const ANONYMOUS: bool = false;
2395            #[allow(unused_variables)]
2396            #[inline]
2397            fn new(
2398                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2399                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2400            ) -> Self {
2401                Self {
2402                    id: topics.1,
2403                    index: topics.2,
2404                    target: data.0,
2405                    value: data.1,
2406                    data: data.2,
2407                    predecessor: data.3,
2408                    delay: data.4,
2409                }
2410            }
2411            #[inline]
2412            fn check_signature(
2413                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2414            ) -> alloy_sol_types::Result<()> {
2415                if topics.0 != Self::SIGNATURE_HASH {
2416                    return Err(
2417                        alloy_sol_types::Error::invalid_event_signature_hash(
2418                            Self::SIGNATURE,
2419                            topics.0,
2420                            Self::SIGNATURE_HASH,
2421                        ),
2422                    );
2423                }
2424                Ok(())
2425            }
2426            #[inline]
2427            fn tokenize_body(&self) -> Self::DataToken<'_> {
2428                (
2429                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2430                        &self.target,
2431                    ),
2432                    <alloy::sol_types::sol_data::Uint<
2433                        256,
2434                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2435                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2436                        &self.data,
2437                    ),
2438                    <alloy::sol_types::sol_data::FixedBytes<
2439                        32,
2440                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
2441                    <alloy::sol_types::sol_data::Uint<
2442                        256,
2443                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
2444                )
2445            }
2446            #[inline]
2447            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2448                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2449            }
2450            #[inline]
2451            fn encode_topics_raw(
2452                &self,
2453                out: &mut [alloy_sol_types::abi::token::WordToken],
2454            ) -> alloy_sol_types::Result<()> {
2455                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2456                    return Err(alloy_sol_types::Error::Overrun);
2457                }
2458                out[0usize] = alloy_sol_types::abi::token::WordToken(
2459                    Self::SIGNATURE_HASH,
2460                );
2461                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2462                    32,
2463                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2464                out[2usize] = <alloy::sol_types::sol_data::Uint<
2465                    256,
2466                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2467                Ok(())
2468            }
2469        }
2470        #[automatically_derived]
2471        impl alloy_sol_types::private::IntoLogData for CallScheduled {
2472            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2473                From::from(self)
2474            }
2475            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2476                From::from(&self)
2477            }
2478        }
2479        #[automatically_derived]
2480        impl From<&CallScheduled> for alloy_sol_types::private::LogData {
2481            #[inline]
2482            fn from(this: &CallScheduled) -> alloy_sol_types::private::LogData {
2483                alloy_sol_types::SolEvent::encode_log_data(this)
2484            }
2485        }
2486    };
2487    #[derive(serde::Serialize, serde::Deserialize)]
2488    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2489    /**Event with signature `Cancelled(bytes32)` and selector `0xbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70`.
2490```solidity
2491event Cancelled(bytes32 indexed id);
2492```*/
2493    #[allow(
2494        non_camel_case_types,
2495        non_snake_case,
2496        clippy::pub_underscore_fields,
2497        clippy::style
2498    )]
2499    #[derive(Clone)]
2500    pub struct Cancelled {
2501        #[allow(missing_docs)]
2502        pub id: alloy::sol_types::private::FixedBytes<32>,
2503    }
2504    #[allow(
2505        non_camel_case_types,
2506        non_snake_case,
2507        clippy::pub_underscore_fields,
2508        clippy::style
2509    )]
2510    const _: () = {
2511        use alloy::sol_types as alloy_sol_types;
2512        #[automatically_derived]
2513        impl alloy_sol_types::SolEvent for Cancelled {
2514            type DataTuple<'a> = ();
2515            type DataToken<'a> = <Self::DataTuple<
2516                'a,
2517            > as alloy_sol_types::SolType>::Token<'a>;
2518            type TopicList = (
2519                alloy_sol_types::sol_data::FixedBytes<32>,
2520                alloy::sol_types::sol_data::FixedBytes<32>,
2521            );
2522            const SIGNATURE: &'static str = "Cancelled(bytes32)";
2523            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2524                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
2525                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
2526                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
2527            ]);
2528            const ANONYMOUS: bool = false;
2529            #[allow(unused_variables)]
2530            #[inline]
2531            fn new(
2532                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2533                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2534            ) -> Self {
2535                Self { id: topics.1 }
2536            }
2537            #[inline]
2538            fn check_signature(
2539                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2540            ) -> alloy_sol_types::Result<()> {
2541                if topics.0 != Self::SIGNATURE_HASH {
2542                    return Err(
2543                        alloy_sol_types::Error::invalid_event_signature_hash(
2544                            Self::SIGNATURE,
2545                            topics.0,
2546                            Self::SIGNATURE_HASH,
2547                        ),
2548                    );
2549                }
2550                Ok(())
2551            }
2552            #[inline]
2553            fn tokenize_body(&self) -> Self::DataToken<'_> {
2554                ()
2555            }
2556            #[inline]
2557            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2558                (Self::SIGNATURE_HASH.into(), self.id.clone())
2559            }
2560            #[inline]
2561            fn encode_topics_raw(
2562                &self,
2563                out: &mut [alloy_sol_types::abi::token::WordToken],
2564            ) -> alloy_sol_types::Result<()> {
2565                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2566                    return Err(alloy_sol_types::Error::Overrun);
2567                }
2568                out[0usize] = alloy_sol_types::abi::token::WordToken(
2569                    Self::SIGNATURE_HASH,
2570                );
2571                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2572                    32,
2573                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2574                Ok(())
2575            }
2576        }
2577        #[automatically_derived]
2578        impl alloy_sol_types::private::IntoLogData for Cancelled {
2579            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2580                From::from(self)
2581            }
2582            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2583                From::from(&self)
2584            }
2585        }
2586        #[automatically_derived]
2587        impl From<&Cancelled> for alloy_sol_types::private::LogData {
2588            #[inline]
2589            fn from(this: &Cancelled) -> alloy_sol_types::private::LogData {
2590                alloy_sol_types::SolEvent::encode_log_data(this)
2591            }
2592        }
2593    };
2594    #[derive(serde::Serialize, serde::Deserialize)]
2595    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2596    /**Event with signature `MinDelayChange(uint256,uint256)` and selector `0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5`.
2597```solidity
2598event MinDelayChange(uint256 oldDuration, uint256 newDuration);
2599```*/
2600    #[allow(
2601        non_camel_case_types,
2602        non_snake_case,
2603        clippy::pub_underscore_fields,
2604        clippy::style
2605    )]
2606    #[derive(Clone)]
2607    pub struct MinDelayChange {
2608        #[allow(missing_docs)]
2609        pub oldDuration: alloy::sol_types::private::primitives::aliases::U256,
2610        #[allow(missing_docs)]
2611        pub newDuration: alloy::sol_types::private::primitives::aliases::U256,
2612    }
2613    #[allow(
2614        non_camel_case_types,
2615        non_snake_case,
2616        clippy::pub_underscore_fields,
2617        clippy::style
2618    )]
2619    const _: () = {
2620        use alloy::sol_types as alloy_sol_types;
2621        #[automatically_derived]
2622        impl alloy_sol_types::SolEvent for MinDelayChange {
2623            type DataTuple<'a> = (
2624                alloy::sol_types::sol_data::Uint<256>,
2625                alloy::sol_types::sol_data::Uint<256>,
2626            );
2627            type DataToken<'a> = <Self::DataTuple<
2628                'a,
2629            > as alloy_sol_types::SolType>::Token<'a>;
2630            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2631            const SIGNATURE: &'static str = "MinDelayChange(uint256,uint256)";
2632            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2633                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
2634                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
2635                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
2636            ]);
2637            const ANONYMOUS: bool = false;
2638            #[allow(unused_variables)]
2639            #[inline]
2640            fn new(
2641                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2642                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2643            ) -> Self {
2644                Self {
2645                    oldDuration: data.0,
2646                    newDuration: data.1,
2647                }
2648            }
2649            #[inline]
2650            fn check_signature(
2651                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2652            ) -> alloy_sol_types::Result<()> {
2653                if topics.0 != Self::SIGNATURE_HASH {
2654                    return Err(
2655                        alloy_sol_types::Error::invalid_event_signature_hash(
2656                            Self::SIGNATURE,
2657                            topics.0,
2658                            Self::SIGNATURE_HASH,
2659                        ),
2660                    );
2661                }
2662                Ok(())
2663            }
2664            #[inline]
2665            fn tokenize_body(&self) -> Self::DataToken<'_> {
2666                (
2667                    <alloy::sol_types::sol_data::Uint<
2668                        256,
2669                    > as alloy_sol_types::SolType>::tokenize(&self.oldDuration),
2670                    <alloy::sol_types::sol_data::Uint<
2671                        256,
2672                    > as alloy_sol_types::SolType>::tokenize(&self.newDuration),
2673                )
2674            }
2675            #[inline]
2676            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2677                (Self::SIGNATURE_HASH.into(),)
2678            }
2679            #[inline]
2680            fn encode_topics_raw(
2681                &self,
2682                out: &mut [alloy_sol_types::abi::token::WordToken],
2683            ) -> alloy_sol_types::Result<()> {
2684                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2685                    return Err(alloy_sol_types::Error::Overrun);
2686                }
2687                out[0usize] = alloy_sol_types::abi::token::WordToken(
2688                    Self::SIGNATURE_HASH,
2689                );
2690                Ok(())
2691            }
2692        }
2693        #[automatically_derived]
2694        impl alloy_sol_types::private::IntoLogData for MinDelayChange {
2695            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2696                From::from(self)
2697            }
2698            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2699                From::from(&self)
2700            }
2701        }
2702        #[automatically_derived]
2703        impl From<&MinDelayChange> for alloy_sol_types::private::LogData {
2704            #[inline]
2705            fn from(this: &MinDelayChange) -> alloy_sol_types::private::LogData {
2706                alloy_sol_types::SolEvent::encode_log_data(this)
2707            }
2708        }
2709    };
2710    #[derive(serde::Serialize, serde::Deserialize)]
2711    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2712    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
2713```solidity
2714event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
2715```*/
2716    #[allow(
2717        non_camel_case_types,
2718        non_snake_case,
2719        clippy::pub_underscore_fields,
2720        clippy::style
2721    )]
2722    #[derive(Clone)]
2723    pub struct RoleAdminChanged {
2724        #[allow(missing_docs)]
2725        pub role: alloy::sol_types::private::FixedBytes<32>,
2726        #[allow(missing_docs)]
2727        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
2728        #[allow(missing_docs)]
2729        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
2730    }
2731    #[allow(
2732        non_camel_case_types,
2733        non_snake_case,
2734        clippy::pub_underscore_fields,
2735        clippy::style
2736    )]
2737    const _: () = {
2738        use alloy::sol_types as alloy_sol_types;
2739        #[automatically_derived]
2740        impl alloy_sol_types::SolEvent for RoleAdminChanged {
2741            type DataTuple<'a> = ();
2742            type DataToken<'a> = <Self::DataTuple<
2743                'a,
2744            > as alloy_sol_types::SolType>::Token<'a>;
2745            type TopicList = (
2746                alloy_sol_types::sol_data::FixedBytes<32>,
2747                alloy::sol_types::sol_data::FixedBytes<32>,
2748                alloy::sol_types::sol_data::FixedBytes<32>,
2749                alloy::sol_types::sol_data::FixedBytes<32>,
2750            );
2751            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
2752            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2753                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
2754                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
2755                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
2756            ]);
2757            const ANONYMOUS: bool = false;
2758            #[allow(unused_variables)]
2759            #[inline]
2760            fn new(
2761                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2762                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2763            ) -> Self {
2764                Self {
2765                    role: topics.1,
2766                    previousAdminRole: topics.2,
2767                    newAdminRole: topics.3,
2768                }
2769            }
2770            #[inline]
2771            fn check_signature(
2772                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2773            ) -> alloy_sol_types::Result<()> {
2774                if topics.0 != Self::SIGNATURE_HASH {
2775                    return Err(
2776                        alloy_sol_types::Error::invalid_event_signature_hash(
2777                            Self::SIGNATURE,
2778                            topics.0,
2779                            Self::SIGNATURE_HASH,
2780                        ),
2781                    );
2782                }
2783                Ok(())
2784            }
2785            #[inline]
2786            fn tokenize_body(&self) -> Self::DataToken<'_> {
2787                ()
2788            }
2789            #[inline]
2790            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2791                (
2792                    Self::SIGNATURE_HASH.into(),
2793                    self.role.clone(),
2794                    self.previousAdminRole.clone(),
2795                    self.newAdminRole.clone(),
2796                )
2797            }
2798            #[inline]
2799            fn encode_topics_raw(
2800                &self,
2801                out: &mut [alloy_sol_types::abi::token::WordToken],
2802            ) -> alloy_sol_types::Result<()> {
2803                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2804                    return Err(alloy_sol_types::Error::Overrun);
2805                }
2806                out[0usize] = alloy_sol_types::abi::token::WordToken(
2807                    Self::SIGNATURE_HASH,
2808                );
2809                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2810                    32,
2811                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2812                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
2813                    32,
2814                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
2815                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
2816                    32,
2817                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
2818                Ok(())
2819            }
2820        }
2821        #[automatically_derived]
2822        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
2823            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2824                From::from(self)
2825            }
2826            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2827                From::from(&self)
2828            }
2829        }
2830        #[automatically_derived]
2831        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
2832            #[inline]
2833            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
2834                alloy_sol_types::SolEvent::encode_log_data(this)
2835            }
2836        }
2837    };
2838    #[derive(serde::Serialize, serde::Deserialize)]
2839    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2840    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
2841```solidity
2842event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
2843```*/
2844    #[allow(
2845        non_camel_case_types,
2846        non_snake_case,
2847        clippy::pub_underscore_fields,
2848        clippy::style
2849    )]
2850    #[derive(Clone)]
2851    pub struct RoleGranted {
2852        #[allow(missing_docs)]
2853        pub role: alloy::sol_types::private::FixedBytes<32>,
2854        #[allow(missing_docs)]
2855        pub account: alloy::sol_types::private::Address,
2856        #[allow(missing_docs)]
2857        pub sender: alloy::sol_types::private::Address,
2858    }
2859    #[allow(
2860        non_camel_case_types,
2861        non_snake_case,
2862        clippy::pub_underscore_fields,
2863        clippy::style
2864    )]
2865    const _: () = {
2866        use alloy::sol_types as alloy_sol_types;
2867        #[automatically_derived]
2868        impl alloy_sol_types::SolEvent for RoleGranted {
2869            type DataTuple<'a> = ();
2870            type DataToken<'a> = <Self::DataTuple<
2871                'a,
2872            > as alloy_sol_types::SolType>::Token<'a>;
2873            type TopicList = (
2874                alloy_sol_types::sol_data::FixedBytes<32>,
2875                alloy::sol_types::sol_data::FixedBytes<32>,
2876                alloy::sol_types::sol_data::Address,
2877                alloy::sol_types::sol_data::Address,
2878            );
2879            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
2880            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2881                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
2882                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
2883                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
2884            ]);
2885            const ANONYMOUS: bool = false;
2886            #[allow(unused_variables)]
2887            #[inline]
2888            fn new(
2889                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2890                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2891            ) -> Self {
2892                Self {
2893                    role: topics.1,
2894                    account: topics.2,
2895                    sender: topics.3,
2896                }
2897            }
2898            #[inline]
2899            fn check_signature(
2900                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2901            ) -> alloy_sol_types::Result<()> {
2902                if topics.0 != Self::SIGNATURE_HASH {
2903                    return Err(
2904                        alloy_sol_types::Error::invalid_event_signature_hash(
2905                            Self::SIGNATURE,
2906                            topics.0,
2907                            Self::SIGNATURE_HASH,
2908                        ),
2909                    );
2910                }
2911                Ok(())
2912            }
2913            #[inline]
2914            fn tokenize_body(&self) -> Self::DataToken<'_> {
2915                ()
2916            }
2917            #[inline]
2918            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2919                (
2920                    Self::SIGNATURE_HASH.into(),
2921                    self.role.clone(),
2922                    self.account.clone(),
2923                    self.sender.clone(),
2924                )
2925            }
2926            #[inline]
2927            fn encode_topics_raw(
2928                &self,
2929                out: &mut [alloy_sol_types::abi::token::WordToken],
2930            ) -> alloy_sol_types::Result<()> {
2931                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2932                    return Err(alloy_sol_types::Error::Overrun);
2933                }
2934                out[0usize] = alloy_sol_types::abi::token::WordToken(
2935                    Self::SIGNATURE_HASH,
2936                );
2937                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2938                    32,
2939                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2940                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2941                    &self.account,
2942                );
2943                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2944                    &self.sender,
2945                );
2946                Ok(())
2947            }
2948        }
2949        #[automatically_derived]
2950        impl alloy_sol_types::private::IntoLogData for RoleGranted {
2951            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2952                From::from(self)
2953            }
2954            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2955                From::from(&self)
2956            }
2957        }
2958        #[automatically_derived]
2959        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
2960            #[inline]
2961            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
2962                alloy_sol_types::SolEvent::encode_log_data(this)
2963            }
2964        }
2965    };
2966    #[derive(serde::Serialize, serde::Deserialize)]
2967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2968    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
2969```solidity
2970event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
2971```*/
2972    #[allow(
2973        non_camel_case_types,
2974        non_snake_case,
2975        clippy::pub_underscore_fields,
2976        clippy::style
2977    )]
2978    #[derive(Clone)]
2979    pub struct RoleRevoked {
2980        #[allow(missing_docs)]
2981        pub role: alloy::sol_types::private::FixedBytes<32>,
2982        #[allow(missing_docs)]
2983        pub account: alloy::sol_types::private::Address,
2984        #[allow(missing_docs)]
2985        pub sender: alloy::sol_types::private::Address,
2986    }
2987    #[allow(
2988        non_camel_case_types,
2989        non_snake_case,
2990        clippy::pub_underscore_fields,
2991        clippy::style
2992    )]
2993    const _: () = {
2994        use alloy::sol_types as alloy_sol_types;
2995        #[automatically_derived]
2996        impl alloy_sol_types::SolEvent for RoleRevoked {
2997            type DataTuple<'a> = ();
2998            type DataToken<'a> = <Self::DataTuple<
2999                'a,
3000            > as alloy_sol_types::SolType>::Token<'a>;
3001            type TopicList = (
3002                alloy_sol_types::sol_data::FixedBytes<32>,
3003                alloy::sol_types::sol_data::FixedBytes<32>,
3004                alloy::sol_types::sol_data::Address,
3005                alloy::sol_types::sol_data::Address,
3006            );
3007            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
3008            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3009                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
3010                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
3011                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
3012            ]);
3013            const ANONYMOUS: bool = false;
3014            #[allow(unused_variables)]
3015            #[inline]
3016            fn new(
3017                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3018                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3019            ) -> Self {
3020                Self {
3021                    role: topics.1,
3022                    account: topics.2,
3023                    sender: topics.3,
3024                }
3025            }
3026            #[inline]
3027            fn check_signature(
3028                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3029            ) -> alloy_sol_types::Result<()> {
3030                if topics.0 != Self::SIGNATURE_HASH {
3031                    return Err(
3032                        alloy_sol_types::Error::invalid_event_signature_hash(
3033                            Self::SIGNATURE,
3034                            topics.0,
3035                            Self::SIGNATURE_HASH,
3036                        ),
3037                    );
3038                }
3039                Ok(())
3040            }
3041            #[inline]
3042            fn tokenize_body(&self) -> Self::DataToken<'_> {
3043                ()
3044            }
3045            #[inline]
3046            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3047                (
3048                    Self::SIGNATURE_HASH.into(),
3049                    self.role.clone(),
3050                    self.account.clone(),
3051                    self.sender.clone(),
3052                )
3053            }
3054            #[inline]
3055            fn encode_topics_raw(
3056                &self,
3057                out: &mut [alloy_sol_types::abi::token::WordToken],
3058            ) -> alloy_sol_types::Result<()> {
3059                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3060                    return Err(alloy_sol_types::Error::Overrun);
3061                }
3062                out[0usize] = alloy_sol_types::abi::token::WordToken(
3063                    Self::SIGNATURE_HASH,
3064                );
3065                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3066                    32,
3067                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3068                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3069                    &self.account,
3070                );
3071                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3072                    &self.sender,
3073                );
3074                Ok(())
3075            }
3076        }
3077        #[automatically_derived]
3078        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
3079            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3080                From::from(self)
3081            }
3082            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3083                From::from(&self)
3084            }
3085        }
3086        #[automatically_derived]
3087        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
3088            #[inline]
3089            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
3090                alloy_sol_types::SolEvent::encode_log_data(this)
3091            }
3092        }
3093    };
3094    /**Constructor`.
3095```solidity
3096constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
3097```*/
3098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3099    #[derive(Clone)]
3100    pub struct constructorCall {
3101        #[allow(missing_docs)]
3102        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
3103        #[allow(missing_docs)]
3104        pub proposers: alloy::sol_types::private::Vec<
3105            alloy::sol_types::private::Address,
3106        >,
3107        #[allow(missing_docs)]
3108        pub executors: alloy::sol_types::private::Vec<
3109            alloy::sol_types::private::Address,
3110        >,
3111        #[allow(missing_docs)]
3112        pub admin: alloy::sol_types::private::Address,
3113    }
3114    const _: () = {
3115        use alloy::sol_types as alloy_sol_types;
3116        {
3117            #[doc(hidden)]
3118            #[allow(dead_code)]
3119            type UnderlyingSolTuple<'a> = (
3120                alloy::sol_types::sol_data::Uint<256>,
3121                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3122                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3123                alloy::sol_types::sol_data::Address,
3124            );
3125            #[doc(hidden)]
3126            type UnderlyingRustTuple<'a> = (
3127                alloy::sol_types::private::primitives::aliases::U256,
3128                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3129                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3130                alloy::sol_types::private::Address,
3131            );
3132            #[cfg(test)]
3133            #[allow(dead_code, unreachable_patterns)]
3134            fn _type_assertion(
3135                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3136            ) {
3137                match _t {
3138                    alloy_sol_types::private::AssertTypeEq::<
3139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3140                    >(_) => {}
3141                }
3142            }
3143            #[automatically_derived]
3144            #[doc(hidden)]
3145            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3146                fn from(value: constructorCall) -> Self {
3147                    (value.minDelay, value.proposers, value.executors, value.admin)
3148                }
3149            }
3150            #[automatically_derived]
3151            #[doc(hidden)]
3152            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3154                    Self {
3155                        minDelay: tuple.0,
3156                        proposers: tuple.1,
3157                        executors: tuple.2,
3158                        admin: tuple.3,
3159                    }
3160                }
3161            }
3162        }
3163        #[automatically_derived]
3164        impl alloy_sol_types::SolConstructor for constructorCall {
3165            type Parameters<'a> = (
3166                alloy::sol_types::sol_data::Uint<256>,
3167                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3168                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3169                alloy::sol_types::sol_data::Address,
3170            );
3171            type Token<'a> = <Self::Parameters<
3172                'a,
3173            > as alloy_sol_types::SolType>::Token<'a>;
3174            #[inline]
3175            fn new<'a>(
3176                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3177            ) -> Self {
3178                tuple.into()
3179            }
3180            #[inline]
3181            fn tokenize(&self) -> Self::Token<'_> {
3182                (
3183                    <alloy::sol_types::sol_data::Uint<
3184                        256,
3185                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
3186                    <alloy::sol_types::sol_data::Array<
3187                        alloy::sol_types::sol_data::Address,
3188                    > as alloy_sol_types::SolType>::tokenize(&self.proposers),
3189                    <alloy::sol_types::sol_data::Array<
3190                        alloy::sol_types::sol_data::Address,
3191                    > as alloy_sol_types::SolType>::tokenize(&self.executors),
3192                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3193                        &self.admin,
3194                    ),
3195                )
3196            }
3197        }
3198    };
3199    #[derive(serde::Serialize, serde::Deserialize)]
3200    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3201    /**Function with signature `CANCELLER_ROLE()` and selector `0xb08e51c0`.
3202```solidity
3203function CANCELLER_ROLE() external view returns (bytes32);
3204```*/
3205    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3206    #[derive(Clone)]
3207    pub struct CANCELLER_ROLECall;
3208    #[derive(serde::Serialize, serde::Deserialize)]
3209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3210    ///Container type for the return parameters of the [`CANCELLER_ROLE()`](CANCELLER_ROLECall) function.
3211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3212    #[derive(Clone)]
3213    pub struct CANCELLER_ROLEReturn {
3214        #[allow(missing_docs)]
3215        pub _0: alloy::sol_types::private::FixedBytes<32>,
3216    }
3217    #[allow(
3218        non_camel_case_types,
3219        non_snake_case,
3220        clippy::pub_underscore_fields,
3221        clippy::style
3222    )]
3223    const _: () = {
3224        use alloy::sol_types as alloy_sol_types;
3225        {
3226            #[doc(hidden)]
3227            #[allow(dead_code)]
3228            type UnderlyingSolTuple<'a> = ();
3229            #[doc(hidden)]
3230            type UnderlyingRustTuple<'a> = ();
3231            #[cfg(test)]
3232            #[allow(dead_code, unreachable_patterns)]
3233            fn _type_assertion(
3234                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3235            ) {
3236                match _t {
3237                    alloy_sol_types::private::AssertTypeEq::<
3238                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3239                    >(_) => {}
3240                }
3241            }
3242            #[automatically_derived]
3243            #[doc(hidden)]
3244            impl ::core::convert::From<CANCELLER_ROLECall> for UnderlyingRustTuple<'_> {
3245                fn from(value: CANCELLER_ROLECall) -> Self {
3246                    ()
3247                }
3248            }
3249            #[automatically_derived]
3250            #[doc(hidden)]
3251            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CANCELLER_ROLECall {
3252                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3253                    Self
3254                }
3255            }
3256        }
3257        {
3258            #[doc(hidden)]
3259            #[allow(dead_code)]
3260            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3261            #[doc(hidden)]
3262            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3263            #[cfg(test)]
3264            #[allow(dead_code, unreachable_patterns)]
3265            fn _type_assertion(
3266                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3267            ) {
3268                match _t {
3269                    alloy_sol_types::private::AssertTypeEq::<
3270                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3271                    >(_) => {}
3272                }
3273            }
3274            #[automatically_derived]
3275            #[doc(hidden)]
3276            impl ::core::convert::From<CANCELLER_ROLEReturn>
3277            for UnderlyingRustTuple<'_> {
3278                fn from(value: CANCELLER_ROLEReturn) -> Self {
3279                    (value._0,)
3280                }
3281            }
3282            #[automatically_derived]
3283            #[doc(hidden)]
3284            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3285            for CANCELLER_ROLEReturn {
3286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3287                    Self { _0: tuple.0 }
3288                }
3289            }
3290        }
3291        #[automatically_derived]
3292        impl alloy_sol_types::SolCall for CANCELLER_ROLECall {
3293            type Parameters<'a> = ();
3294            type Token<'a> = <Self::Parameters<
3295                'a,
3296            > as alloy_sol_types::SolType>::Token<'a>;
3297            type Return = alloy::sol_types::private::FixedBytes<32>;
3298            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3299            type ReturnToken<'a> = <Self::ReturnTuple<
3300                'a,
3301            > as alloy_sol_types::SolType>::Token<'a>;
3302            const SIGNATURE: &'static str = "CANCELLER_ROLE()";
3303            const SELECTOR: [u8; 4] = [176u8, 142u8, 81u8, 192u8];
3304            #[inline]
3305            fn new<'a>(
3306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3307            ) -> Self {
3308                tuple.into()
3309            }
3310            #[inline]
3311            fn tokenize(&self) -> Self::Token<'_> {
3312                ()
3313            }
3314            #[inline]
3315            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3316                (
3317                    <alloy::sol_types::sol_data::FixedBytes<
3318                        32,
3319                    > as alloy_sol_types::SolType>::tokenize(ret),
3320                )
3321            }
3322            #[inline]
3323            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3324                <Self::ReturnTuple<
3325                    '_,
3326                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3327                    .map(|r| {
3328                        let r: CANCELLER_ROLEReturn = r.into();
3329                        r._0
3330                    })
3331            }
3332            #[inline]
3333            fn abi_decode_returns_validate(
3334                data: &[u8],
3335            ) -> alloy_sol_types::Result<Self::Return> {
3336                <Self::ReturnTuple<
3337                    '_,
3338                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3339                    .map(|r| {
3340                        let r: CANCELLER_ROLEReturn = r.into();
3341                        r._0
3342                    })
3343            }
3344        }
3345    };
3346    #[derive(serde::Serialize, serde::Deserialize)]
3347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3348    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
3349```solidity
3350function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
3351```*/
3352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3353    #[derive(Clone)]
3354    pub struct DEFAULT_ADMIN_ROLECall;
3355    #[derive(serde::Serialize, serde::Deserialize)]
3356    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3357    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
3358    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3359    #[derive(Clone)]
3360    pub struct DEFAULT_ADMIN_ROLEReturn {
3361        #[allow(missing_docs)]
3362        pub _0: alloy::sol_types::private::FixedBytes<32>,
3363    }
3364    #[allow(
3365        non_camel_case_types,
3366        non_snake_case,
3367        clippy::pub_underscore_fields,
3368        clippy::style
3369    )]
3370    const _: () = {
3371        use alloy::sol_types as alloy_sol_types;
3372        {
3373            #[doc(hidden)]
3374            #[allow(dead_code)]
3375            type UnderlyingSolTuple<'a> = ();
3376            #[doc(hidden)]
3377            type UnderlyingRustTuple<'a> = ();
3378            #[cfg(test)]
3379            #[allow(dead_code, unreachable_patterns)]
3380            fn _type_assertion(
3381                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3382            ) {
3383                match _t {
3384                    alloy_sol_types::private::AssertTypeEq::<
3385                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3386                    >(_) => {}
3387                }
3388            }
3389            #[automatically_derived]
3390            #[doc(hidden)]
3391            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
3392            for UnderlyingRustTuple<'_> {
3393                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
3394                    ()
3395                }
3396            }
3397            #[automatically_derived]
3398            #[doc(hidden)]
3399            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3400            for DEFAULT_ADMIN_ROLECall {
3401                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3402                    Self
3403                }
3404            }
3405        }
3406        {
3407            #[doc(hidden)]
3408            #[allow(dead_code)]
3409            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3410            #[doc(hidden)]
3411            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3412            #[cfg(test)]
3413            #[allow(dead_code, unreachable_patterns)]
3414            fn _type_assertion(
3415                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3416            ) {
3417                match _t {
3418                    alloy_sol_types::private::AssertTypeEq::<
3419                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3420                    >(_) => {}
3421                }
3422            }
3423            #[automatically_derived]
3424            #[doc(hidden)]
3425            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
3426            for UnderlyingRustTuple<'_> {
3427                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
3428                    (value._0,)
3429                }
3430            }
3431            #[automatically_derived]
3432            #[doc(hidden)]
3433            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3434            for DEFAULT_ADMIN_ROLEReturn {
3435                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3436                    Self { _0: tuple.0 }
3437                }
3438            }
3439        }
3440        #[automatically_derived]
3441        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
3442            type Parameters<'a> = ();
3443            type Token<'a> = <Self::Parameters<
3444                'a,
3445            > as alloy_sol_types::SolType>::Token<'a>;
3446            type Return = alloy::sol_types::private::FixedBytes<32>;
3447            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3448            type ReturnToken<'a> = <Self::ReturnTuple<
3449                'a,
3450            > as alloy_sol_types::SolType>::Token<'a>;
3451            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
3452            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
3453            #[inline]
3454            fn new<'a>(
3455                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3456            ) -> Self {
3457                tuple.into()
3458            }
3459            #[inline]
3460            fn tokenize(&self) -> Self::Token<'_> {
3461                ()
3462            }
3463            #[inline]
3464            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3465                (
3466                    <alloy::sol_types::sol_data::FixedBytes<
3467                        32,
3468                    > as alloy_sol_types::SolType>::tokenize(ret),
3469                )
3470            }
3471            #[inline]
3472            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3473                <Self::ReturnTuple<
3474                    '_,
3475                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3476                    .map(|r| {
3477                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3478                        r._0
3479                    })
3480            }
3481            #[inline]
3482            fn abi_decode_returns_validate(
3483                data: &[u8],
3484            ) -> alloy_sol_types::Result<Self::Return> {
3485                <Self::ReturnTuple<
3486                    '_,
3487                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3488                    .map(|r| {
3489                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3490                        r._0
3491                    })
3492            }
3493        }
3494    };
3495    #[derive(serde::Serialize, serde::Deserialize)]
3496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3497    /**Function with signature `EXECUTOR_ROLE()` and selector `0x07bd0265`.
3498```solidity
3499function EXECUTOR_ROLE() external view returns (bytes32);
3500```*/
3501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3502    #[derive(Clone)]
3503    pub struct EXECUTOR_ROLECall;
3504    #[derive(serde::Serialize, serde::Deserialize)]
3505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3506    ///Container type for the return parameters of the [`EXECUTOR_ROLE()`](EXECUTOR_ROLECall) function.
3507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3508    #[derive(Clone)]
3509    pub struct EXECUTOR_ROLEReturn {
3510        #[allow(missing_docs)]
3511        pub _0: alloy::sol_types::private::FixedBytes<32>,
3512    }
3513    #[allow(
3514        non_camel_case_types,
3515        non_snake_case,
3516        clippy::pub_underscore_fields,
3517        clippy::style
3518    )]
3519    const _: () = {
3520        use alloy::sol_types as alloy_sol_types;
3521        {
3522            #[doc(hidden)]
3523            #[allow(dead_code)]
3524            type UnderlyingSolTuple<'a> = ();
3525            #[doc(hidden)]
3526            type UnderlyingRustTuple<'a> = ();
3527            #[cfg(test)]
3528            #[allow(dead_code, unreachable_patterns)]
3529            fn _type_assertion(
3530                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3531            ) {
3532                match _t {
3533                    alloy_sol_types::private::AssertTypeEq::<
3534                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3535                    >(_) => {}
3536                }
3537            }
3538            #[automatically_derived]
3539            #[doc(hidden)]
3540            impl ::core::convert::From<EXECUTOR_ROLECall> for UnderlyingRustTuple<'_> {
3541                fn from(value: EXECUTOR_ROLECall) -> Self {
3542                    ()
3543                }
3544            }
3545            #[automatically_derived]
3546            #[doc(hidden)]
3547            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLECall {
3548                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3549                    Self
3550                }
3551            }
3552        }
3553        {
3554            #[doc(hidden)]
3555            #[allow(dead_code)]
3556            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3557            #[doc(hidden)]
3558            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3559            #[cfg(test)]
3560            #[allow(dead_code, unreachable_patterns)]
3561            fn _type_assertion(
3562                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3563            ) {
3564                match _t {
3565                    alloy_sol_types::private::AssertTypeEq::<
3566                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3567                    >(_) => {}
3568                }
3569            }
3570            #[automatically_derived]
3571            #[doc(hidden)]
3572            impl ::core::convert::From<EXECUTOR_ROLEReturn> for UnderlyingRustTuple<'_> {
3573                fn from(value: EXECUTOR_ROLEReturn) -> Self {
3574                    (value._0,)
3575                }
3576            }
3577            #[automatically_derived]
3578            #[doc(hidden)]
3579            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLEReturn {
3580                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3581                    Self { _0: tuple.0 }
3582                }
3583            }
3584        }
3585        #[automatically_derived]
3586        impl alloy_sol_types::SolCall for EXECUTOR_ROLECall {
3587            type Parameters<'a> = ();
3588            type Token<'a> = <Self::Parameters<
3589                'a,
3590            > as alloy_sol_types::SolType>::Token<'a>;
3591            type Return = alloy::sol_types::private::FixedBytes<32>;
3592            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3593            type ReturnToken<'a> = <Self::ReturnTuple<
3594                'a,
3595            > as alloy_sol_types::SolType>::Token<'a>;
3596            const SIGNATURE: &'static str = "EXECUTOR_ROLE()";
3597            const SELECTOR: [u8; 4] = [7u8, 189u8, 2u8, 101u8];
3598            #[inline]
3599            fn new<'a>(
3600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3601            ) -> Self {
3602                tuple.into()
3603            }
3604            #[inline]
3605            fn tokenize(&self) -> Self::Token<'_> {
3606                ()
3607            }
3608            #[inline]
3609            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3610                (
3611                    <alloy::sol_types::sol_data::FixedBytes<
3612                        32,
3613                    > as alloy_sol_types::SolType>::tokenize(ret),
3614                )
3615            }
3616            #[inline]
3617            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3618                <Self::ReturnTuple<
3619                    '_,
3620                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3621                    .map(|r| {
3622                        let r: EXECUTOR_ROLEReturn = r.into();
3623                        r._0
3624                    })
3625            }
3626            #[inline]
3627            fn abi_decode_returns_validate(
3628                data: &[u8],
3629            ) -> alloy_sol_types::Result<Self::Return> {
3630                <Self::ReturnTuple<
3631                    '_,
3632                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3633                    .map(|r| {
3634                        let r: EXECUTOR_ROLEReturn = r.into();
3635                        r._0
3636                    })
3637            }
3638        }
3639    };
3640    #[derive(serde::Serialize, serde::Deserialize)]
3641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3642    /**Function with signature `PROPOSER_ROLE()` and selector `0x8f61f4f5`.
3643```solidity
3644function PROPOSER_ROLE() external view returns (bytes32);
3645```*/
3646    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3647    #[derive(Clone)]
3648    pub struct PROPOSER_ROLECall;
3649    #[derive(serde::Serialize, serde::Deserialize)]
3650    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3651    ///Container type for the return parameters of the [`PROPOSER_ROLE()`](PROPOSER_ROLECall) function.
3652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3653    #[derive(Clone)]
3654    pub struct PROPOSER_ROLEReturn {
3655        #[allow(missing_docs)]
3656        pub _0: alloy::sol_types::private::FixedBytes<32>,
3657    }
3658    #[allow(
3659        non_camel_case_types,
3660        non_snake_case,
3661        clippy::pub_underscore_fields,
3662        clippy::style
3663    )]
3664    const _: () = {
3665        use alloy::sol_types as alloy_sol_types;
3666        {
3667            #[doc(hidden)]
3668            #[allow(dead_code)]
3669            type UnderlyingSolTuple<'a> = ();
3670            #[doc(hidden)]
3671            type UnderlyingRustTuple<'a> = ();
3672            #[cfg(test)]
3673            #[allow(dead_code, unreachable_patterns)]
3674            fn _type_assertion(
3675                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3676            ) {
3677                match _t {
3678                    alloy_sol_types::private::AssertTypeEq::<
3679                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3680                    >(_) => {}
3681                }
3682            }
3683            #[automatically_derived]
3684            #[doc(hidden)]
3685            impl ::core::convert::From<PROPOSER_ROLECall> for UnderlyingRustTuple<'_> {
3686                fn from(value: PROPOSER_ROLECall) -> Self {
3687                    ()
3688                }
3689            }
3690            #[automatically_derived]
3691            #[doc(hidden)]
3692            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLECall {
3693                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3694                    Self
3695                }
3696            }
3697        }
3698        {
3699            #[doc(hidden)]
3700            #[allow(dead_code)]
3701            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3702            #[doc(hidden)]
3703            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3704            #[cfg(test)]
3705            #[allow(dead_code, unreachable_patterns)]
3706            fn _type_assertion(
3707                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3708            ) {
3709                match _t {
3710                    alloy_sol_types::private::AssertTypeEq::<
3711                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3712                    >(_) => {}
3713                }
3714            }
3715            #[automatically_derived]
3716            #[doc(hidden)]
3717            impl ::core::convert::From<PROPOSER_ROLEReturn> for UnderlyingRustTuple<'_> {
3718                fn from(value: PROPOSER_ROLEReturn) -> Self {
3719                    (value._0,)
3720                }
3721            }
3722            #[automatically_derived]
3723            #[doc(hidden)]
3724            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLEReturn {
3725                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3726                    Self { _0: tuple.0 }
3727                }
3728            }
3729        }
3730        #[automatically_derived]
3731        impl alloy_sol_types::SolCall for PROPOSER_ROLECall {
3732            type Parameters<'a> = ();
3733            type Token<'a> = <Self::Parameters<
3734                'a,
3735            > as alloy_sol_types::SolType>::Token<'a>;
3736            type Return = alloy::sol_types::private::FixedBytes<32>;
3737            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3738            type ReturnToken<'a> = <Self::ReturnTuple<
3739                'a,
3740            > as alloy_sol_types::SolType>::Token<'a>;
3741            const SIGNATURE: &'static str = "PROPOSER_ROLE()";
3742            const SELECTOR: [u8; 4] = [143u8, 97u8, 244u8, 245u8];
3743            #[inline]
3744            fn new<'a>(
3745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3746            ) -> Self {
3747                tuple.into()
3748            }
3749            #[inline]
3750            fn tokenize(&self) -> Self::Token<'_> {
3751                ()
3752            }
3753            #[inline]
3754            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3755                (
3756                    <alloy::sol_types::sol_data::FixedBytes<
3757                        32,
3758                    > as alloy_sol_types::SolType>::tokenize(ret),
3759                )
3760            }
3761            #[inline]
3762            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3763                <Self::ReturnTuple<
3764                    '_,
3765                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3766                    .map(|r| {
3767                        let r: PROPOSER_ROLEReturn = r.into();
3768                        r._0
3769                    })
3770            }
3771            #[inline]
3772            fn abi_decode_returns_validate(
3773                data: &[u8],
3774            ) -> alloy_sol_types::Result<Self::Return> {
3775                <Self::ReturnTuple<
3776                    '_,
3777                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3778                    .map(|r| {
3779                        let r: PROPOSER_ROLEReturn = r.into();
3780                        r._0
3781                    })
3782            }
3783        }
3784    };
3785    #[derive(serde::Serialize, serde::Deserialize)]
3786    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3787    /**Function with signature `cancel(bytes32)` and selector `0xc4d252f5`.
3788```solidity
3789function cancel(bytes32 id) external;
3790```*/
3791    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3792    #[derive(Clone)]
3793    pub struct cancelCall {
3794        #[allow(missing_docs)]
3795        pub id: alloy::sol_types::private::FixedBytes<32>,
3796    }
3797    ///Container type for the return parameters of the [`cancel(bytes32)`](cancelCall) function.
3798    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3799    #[derive(Clone)]
3800    pub struct cancelReturn {}
3801    #[allow(
3802        non_camel_case_types,
3803        non_snake_case,
3804        clippy::pub_underscore_fields,
3805        clippy::style
3806    )]
3807    const _: () = {
3808        use alloy::sol_types as alloy_sol_types;
3809        {
3810            #[doc(hidden)]
3811            #[allow(dead_code)]
3812            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3813            #[doc(hidden)]
3814            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3815            #[cfg(test)]
3816            #[allow(dead_code, unreachable_patterns)]
3817            fn _type_assertion(
3818                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3819            ) {
3820                match _t {
3821                    alloy_sol_types::private::AssertTypeEq::<
3822                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3823                    >(_) => {}
3824                }
3825            }
3826            #[automatically_derived]
3827            #[doc(hidden)]
3828            impl ::core::convert::From<cancelCall> for UnderlyingRustTuple<'_> {
3829                fn from(value: cancelCall) -> Self {
3830                    (value.id,)
3831                }
3832            }
3833            #[automatically_derived]
3834            #[doc(hidden)]
3835            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelCall {
3836                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3837                    Self { id: tuple.0 }
3838                }
3839            }
3840        }
3841        {
3842            #[doc(hidden)]
3843            #[allow(dead_code)]
3844            type UnderlyingSolTuple<'a> = ();
3845            #[doc(hidden)]
3846            type UnderlyingRustTuple<'a> = ();
3847            #[cfg(test)]
3848            #[allow(dead_code, unreachable_patterns)]
3849            fn _type_assertion(
3850                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3851            ) {
3852                match _t {
3853                    alloy_sol_types::private::AssertTypeEq::<
3854                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3855                    >(_) => {}
3856                }
3857            }
3858            #[automatically_derived]
3859            #[doc(hidden)]
3860            impl ::core::convert::From<cancelReturn> for UnderlyingRustTuple<'_> {
3861                fn from(value: cancelReturn) -> Self {
3862                    ()
3863                }
3864            }
3865            #[automatically_derived]
3866            #[doc(hidden)]
3867            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelReturn {
3868                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3869                    Self {}
3870                }
3871            }
3872        }
3873        impl cancelReturn {
3874            fn _tokenize(
3875                &self,
3876            ) -> <cancelCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
3877                ()
3878            }
3879        }
3880        #[automatically_derived]
3881        impl alloy_sol_types::SolCall for cancelCall {
3882            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3883            type Token<'a> = <Self::Parameters<
3884                'a,
3885            > as alloy_sol_types::SolType>::Token<'a>;
3886            type Return = cancelReturn;
3887            type ReturnTuple<'a> = ();
3888            type ReturnToken<'a> = <Self::ReturnTuple<
3889                'a,
3890            > as alloy_sol_types::SolType>::Token<'a>;
3891            const SIGNATURE: &'static str = "cancel(bytes32)";
3892            const SELECTOR: [u8; 4] = [196u8, 210u8, 82u8, 245u8];
3893            #[inline]
3894            fn new<'a>(
3895                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3896            ) -> Self {
3897                tuple.into()
3898            }
3899            #[inline]
3900            fn tokenize(&self) -> Self::Token<'_> {
3901                (
3902                    <alloy::sol_types::sol_data::FixedBytes<
3903                        32,
3904                    > as alloy_sol_types::SolType>::tokenize(&self.id),
3905                )
3906            }
3907            #[inline]
3908            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3909                cancelReturn::_tokenize(ret)
3910            }
3911            #[inline]
3912            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3913                <Self::ReturnTuple<
3914                    '_,
3915                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3916                    .map(Into::into)
3917            }
3918            #[inline]
3919            fn abi_decode_returns_validate(
3920                data: &[u8],
3921            ) -> alloy_sol_types::Result<Self::Return> {
3922                <Self::ReturnTuple<
3923                    '_,
3924                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3925                    .map(Into::into)
3926            }
3927        }
3928    };
3929    #[derive(serde::Serialize, serde::Deserialize)]
3930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3931    /**Function with signature `execute(address,uint256,bytes,bytes32,bytes32)` and selector `0x134008d3`.
3932```solidity
3933function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
3934```*/
3935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3936    #[derive(Clone)]
3937    pub struct executeCall {
3938        #[allow(missing_docs)]
3939        pub target: alloy::sol_types::private::Address,
3940        #[allow(missing_docs)]
3941        pub value: alloy::sol_types::private::primitives::aliases::U256,
3942        #[allow(missing_docs)]
3943        pub payload: alloy::sol_types::private::Bytes,
3944        #[allow(missing_docs)]
3945        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
3946        #[allow(missing_docs)]
3947        pub salt: alloy::sol_types::private::FixedBytes<32>,
3948    }
3949    ///Container type for the return parameters of the [`execute(address,uint256,bytes,bytes32,bytes32)`](executeCall) function.
3950    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3951    #[derive(Clone)]
3952    pub struct executeReturn {}
3953    #[allow(
3954        non_camel_case_types,
3955        non_snake_case,
3956        clippy::pub_underscore_fields,
3957        clippy::style
3958    )]
3959    const _: () = {
3960        use alloy::sol_types as alloy_sol_types;
3961        {
3962            #[doc(hidden)]
3963            #[allow(dead_code)]
3964            type UnderlyingSolTuple<'a> = (
3965                alloy::sol_types::sol_data::Address,
3966                alloy::sol_types::sol_data::Uint<256>,
3967                alloy::sol_types::sol_data::Bytes,
3968                alloy::sol_types::sol_data::FixedBytes<32>,
3969                alloy::sol_types::sol_data::FixedBytes<32>,
3970            );
3971            #[doc(hidden)]
3972            type UnderlyingRustTuple<'a> = (
3973                alloy::sol_types::private::Address,
3974                alloy::sol_types::private::primitives::aliases::U256,
3975                alloy::sol_types::private::Bytes,
3976                alloy::sol_types::private::FixedBytes<32>,
3977                alloy::sol_types::private::FixedBytes<32>,
3978            );
3979            #[cfg(test)]
3980            #[allow(dead_code, unreachable_patterns)]
3981            fn _type_assertion(
3982                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3983            ) {
3984                match _t {
3985                    alloy_sol_types::private::AssertTypeEq::<
3986                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3987                    >(_) => {}
3988                }
3989            }
3990            #[automatically_derived]
3991            #[doc(hidden)]
3992            impl ::core::convert::From<executeCall> for UnderlyingRustTuple<'_> {
3993                fn from(value: executeCall) -> Self {
3994                    (
3995                        value.target,
3996                        value.value,
3997                        value.payload,
3998                        value.predecessor,
3999                        value.salt,
4000                    )
4001                }
4002            }
4003            #[automatically_derived]
4004            #[doc(hidden)]
4005            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeCall {
4006                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4007                    Self {
4008                        target: tuple.0,
4009                        value: tuple.1,
4010                        payload: tuple.2,
4011                        predecessor: tuple.3,
4012                        salt: tuple.4,
4013                    }
4014                }
4015            }
4016        }
4017        {
4018            #[doc(hidden)]
4019            #[allow(dead_code)]
4020            type UnderlyingSolTuple<'a> = ();
4021            #[doc(hidden)]
4022            type UnderlyingRustTuple<'a> = ();
4023            #[cfg(test)]
4024            #[allow(dead_code, unreachable_patterns)]
4025            fn _type_assertion(
4026                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4027            ) {
4028                match _t {
4029                    alloy_sol_types::private::AssertTypeEq::<
4030                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4031                    >(_) => {}
4032                }
4033            }
4034            #[automatically_derived]
4035            #[doc(hidden)]
4036            impl ::core::convert::From<executeReturn> for UnderlyingRustTuple<'_> {
4037                fn from(value: executeReturn) -> Self {
4038                    ()
4039                }
4040            }
4041            #[automatically_derived]
4042            #[doc(hidden)]
4043            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeReturn {
4044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4045                    Self {}
4046                }
4047            }
4048        }
4049        impl executeReturn {
4050            fn _tokenize(
4051                &self,
4052            ) -> <executeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4053                ()
4054            }
4055        }
4056        #[automatically_derived]
4057        impl alloy_sol_types::SolCall for executeCall {
4058            type Parameters<'a> = (
4059                alloy::sol_types::sol_data::Address,
4060                alloy::sol_types::sol_data::Uint<256>,
4061                alloy::sol_types::sol_data::Bytes,
4062                alloy::sol_types::sol_data::FixedBytes<32>,
4063                alloy::sol_types::sol_data::FixedBytes<32>,
4064            );
4065            type Token<'a> = <Self::Parameters<
4066                'a,
4067            > as alloy_sol_types::SolType>::Token<'a>;
4068            type Return = executeReturn;
4069            type ReturnTuple<'a> = ();
4070            type ReturnToken<'a> = <Self::ReturnTuple<
4071                'a,
4072            > as alloy_sol_types::SolType>::Token<'a>;
4073            const SIGNATURE: &'static str = "execute(address,uint256,bytes,bytes32,bytes32)";
4074            const SELECTOR: [u8; 4] = [19u8, 64u8, 8u8, 211u8];
4075            #[inline]
4076            fn new<'a>(
4077                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4078            ) -> Self {
4079                tuple.into()
4080            }
4081            #[inline]
4082            fn tokenize(&self) -> Self::Token<'_> {
4083                (
4084                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4085                        &self.target,
4086                    ),
4087                    <alloy::sol_types::sol_data::Uint<
4088                        256,
4089                    > as alloy_sol_types::SolType>::tokenize(&self.value),
4090                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4091                        &self.payload,
4092                    ),
4093                    <alloy::sol_types::sol_data::FixedBytes<
4094                        32,
4095                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4096                    <alloy::sol_types::sol_data::FixedBytes<
4097                        32,
4098                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4099                )
4100            }
4101            #[inline]
4102            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4103                executeReturn::_tokenize(ret)
4104            }
4105            #[inline]
4106            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4107                <Self::ReturnTuple<
4108                    '_,
4109                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4110                    .map(Into::into)
4111            }
4112            #[inline]
4113            fn abi_decode_returns_validate(
4114                data: &[u8],
4115            ) -> alloy_sol_types::Result<Self::Return> {
4116                <Self::ReturnTuple<
4117                    '_,
4118                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4119                    .map(Into::into)
4120            }
4121        }
4122    };
4123    #[derive(serde::Serialize, serde::Deserialize)]
4124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4125    /**Function with signature `executeBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xe38335e5`.
4126```solidity
4127function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
4128```*/
4129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4130    #[derive(Clone)]
4131    pub struct executeBatchCall {
4132        #[allow(missing_docs)]
4133        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4134        #[allow(missing_docs)]
4135        pub values: alloy::sol_types::private::Vec<
4136            alloy::sol_types::private::primitives::aliases::U256,
4137        >,
4138        #[allow(missing_docs)]
4139        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4140        #[allow(missing_docs)]
4141        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
4142        #[allow(missing_docs)]
4143        pub salt: alloy::sol_types::private::FixedBytes<32>,
4144    }
4145    ///Container type for the return parameters of the [`executeBatch(address[],uint256[],bytes[],bytes32,bytes32)`](executeBatchCall) function.
4146    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4147    #[derive(Clone)]
4148    pub struct executeBatchReturn {}
4149    #[allow(
4150        non_camel_case_types,
4151        non_snake_case,
4152        clippy::pub_underscore_fields,
4153        clippy::style
4154    )]
4155    const _: () = {
4156        use alloy::sol_types as alloy_sol_types;
4157        {
4158            #[doc(hidden)]
4159            #[allow(dead_code)]
4160            type UnderlyingSolTuple<'a> = (
4161                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4162                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4163                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4164                alloy::sol_types::sol_data::FixedBytes<32>,
4165                alloy::sol_types::sol_data::FixedBytes<32>,
4166            );
4167            #[doc(hidden)]
4168            type UnderlyingRustTuple<'a> = (
4169                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4170                alloy::sol_types::private::Vec<
4171                    alloy::sol_types::private::primitives::aliases::U256,
4172                >,
4173                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4174                alloy::sol_types::private::FixedBytes<32>,
4175                alloy::sol_types::private::FixedBytes<32>,
4176            );
4177            #[cfg(test)]
4178            #[allow(dead_code, unreachable_patterns)]
4179            fn _type_assertion(
4180                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4181            ) {
4182                match _t {
4183                    alloy_sol_types::private::AssertTypeEq::<
4184                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4185                    >(_) => {}
4186                }
4187            }
4188            #[automatically_derived]
4189            #[doc(hidden)]
4190            impl ::core::convert::From<executeBatchCall> for UnderlyingRustTuple<'_> {
4191                fn from(value: executeBatchCall) -> Self {
4192                    (
4193                        value.targets,
4194                        value.values,
4195                        value.payloads,
4196                        value.predecessor,
4197                        value.salt,
4198                    )
4199                }
4200            }
4201            #[automatically_derived]
4202            #[doc(hidden)]
4203            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchCall {
4204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4205                    Self {
4206                        targets: tuple.0,
4207                        values: tuple.1,
4208                        payloads: tuple.2,
4209                        predecessor: tuple.3,
4210                        salt: tuple.4,
4211                    }
4212                }
4213            }
4214        }
4215        {
4216            #[doc(hidden)]
4217            #[allow(dead_code)]
4218            type UnderlyingSolTuple<'a> = ();
4219            #[doc(hidden)]
4220            type UnderlyingRustTuple<'a> = ();
4221            #[cfg(test)]
4222            #[allow(dead_code, unreachable_patterns)]
4223            fn _type_assertion(
4224                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4225            ) {
4226                match _t {
4227                    alloy_sol_types::private::AssertTypeEq::<
4228                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4229                    >(_) => {}
4230                }
4231            }
4232            #[automatically_derived]
4233            #[doc(hidden)]
4234            impl ::core::convert::From<executeBatchReturn> for UnderlyingRustTuple<'_> {
4235                fn from(value: executeBatchReturn) -> Self {
4236                    ()
4237                }
4238            }
4239            #[automatically_derived]
4240            #[doc(hidden)]
4241            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchReturn {
4242                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4243                    Self {}
4244                }
4245            }
4246        }
4247        impl executeBatchReturn {
4248            fn _tokenize(
4249                &self,
4250            ) -> <executeBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4251                ()
4252            }
4253        }
4254        #[automatically_derived]
4255        impl alloy_sol_types::SolCall for executeBatchCall {
4256            type Parameters<'a> = (
4257                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4258                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4259                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4260                alloy::sol_types::sol_data::FixedBytes<32>,
4261                alloy::sol_types::sol_data::FixedBytes<32>,
4262            );
4263            type Token<'a> = <Self::Parameters<
4264                'a,
4265            > as alloy_sol_types::SolType>::Token<'a>;
4266            type Return = executeBatchReturn;
4267            type ReturnTuple<'a> = ();
4268            type ReturnToken<'a> = <Self::ReturnTuple<
4269                'a,
4270            > as alloy_sol_types::SolType>::Token<'a>;
4271            const SIGNATURE: &'static str = "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)";
4272            const SELECTOR: [u8; 4] = [227u8, 131u8, 53u8, 229u8];
4273            #[inline]
4274            fn new<'a>(
4275                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4276            ) -> Self {
4277                tuple.into()
4278            }
4279            #[inline]
4280            fn tokenize(&self) -> Self::Token<'_> {
4281                (
4282                    <alloy::sol_types::sol_data::Array<
4283                        alloy::sol_types::sol_data::Address,
4284                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
4285                    <alloy::sol_types::sol_data::Array<
4286                        alloy::sol_types::sol_data::Uint<256>,
4287                    > as alloy_sol_types::SolType>::tokenize(&self.values),
4288                    <alloy::sol_types::sol_data::Array<
4289                        alloy::sol_types::sol_data::Bytes,
4290                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
4291                    <alloy::sol_types::sol_data::FixedBytes<
4292                        32,
4293                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4294                    <alloy::sol_types::sol_data::FixedBytes<
4295                        32,
4296                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4297                )
4298            }
4299            #[inline]
4300            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4301                executeBatchReturn::_tokenize(ret)
4302            }
4303            #[inline]
4304            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4305                <Self::ReturnTuple<
4306                    '_,
4307                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4308                    .map(Into::into)
4309            }
4310            #[inline]
4311            fn abi_decode_returns_validate(
4312                data: &[u8],
4313            ) -> alloy_sol_types::Result<Self::Return> {
4314                <Self::ReturnTuple<
4315                    '_,
4316                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4317                    .map(Into::into)
4318            }
4319        }
4320    };
4321    #[derive(serde::Serialize, serde::Deserialize)]
4322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4323    /**Function with signature `getMinDelay()` and selector `0xf27a0c92`.
4324```solidity
4325function getMinDelay() external view returns (uint256);
4326```*/
4327    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4328    #[derive(Clone)]
4329    pub struct getMinDelayCall;
4330    #[derive(serde::Serialize, serde::Deserialize)]
4331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4332    ///Container type for the return parameters of the [`getMinDelay()`](getMinDelayCall) function.
4333    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4334    #[derive(Clone)]
4335    pub struct getMinDelayReturn {
4336        #[allow(missing_docs)]
4337        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4338    }
4339    #[allow(
4340        non_camel_case_types,
4341        non_snake_case,
4342        clippy::pub_underscore_fields,
4343        clippy::style
4344    )]
4345    const _: () = {
4346        use alloy::sol_types as alloy_sol_types;
4347        {
4348            #[doc(hidden)]
4349            #[allow(dead_code)]
4350            type UnderlyingSolTuple<'a> = ();
4351            #[doc(hidden)]
4352            type UnderlyingRustTuple<'a> = ();
4353            #[cfg(test)]
4354            #[allow(dead_code, unreachable_patterns)]
4355            fn _type_assertion(
4356                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4357            ) {
4358                match _t {
4359                    alloy_sol_types::private::AssertTypeEq::<
4360                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4361                    >(_) => {}
4362                }
4363            }
4364            #[automatically_derived]
4365            #[doc(hidden)]
4366            impl ::core::convert::From<getMinDelayCall> for UnderlyingRustTuple<'_> {
4367                fn from(value: getMinDelayCall) -> Self {
4368                    ()
4369                }
4370            }
4371            #[automatically_derived]
4372            #[doc(hidden)]
4373            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayCall {
4374                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4375                    Self
4376                }
4377            }
4378        }
4379        {
4380            #[doc(hidden)]
4381            #[allow(dead_code)]
4382            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4383            #[doc(hidden)]
4384            type UnderlyingRustTuple<'a> = (
4385                alloy::sol_types::private::primitives::aliases::U256,
4386            );
4387            #[cfg(test)]
4388            #[allow(dead_code, unreachable_patterns)]
4389            fn _type_assertion(
4390                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4391            ) {
4392                match _t {
4393                    alloy_sol_types::private::AssertTypeEq::<
4394                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4395                    >(_) => {}
4396                }
4397            }
4398            #[automatically_derived]
4399            #[doc(hidden)]
4400            impl ::core::convert::From<getMinDelayReturn> for UnderlyingRustTuple<'_> {
4401                fn from(value: getMinDelayReturn) -> Self {
4402                    (value._0,)
4403                }
4404            }
4405            #[automatically_derived]
4406            #[doc(hidden)]
4407            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayReturn {
4408                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4409                    Self { _0: tuple.0 }
4410                }
4411            }
4412        }
4413        #[automatically_derived]
4414        impl alloy_sol_types::SolCall for getMinDelayCall {
4415            type Parameters<'a> = ();
4416            type Token<'a> = <Self::Parameters<
4417                'a,
4418            > as alloy_sol_types::SolType>::Token<'a>;
4419            type Return = alloy::sol_types::private::primitives::aliases::U256;
4420            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4421            type ReturnToken<'a> = <Self::ReturnTuple<
4422                'a,
4423            > as alloy_sol_types::SolType>::Token<'a>;
4424            const SIGNATURE: &'static str = "getMinDelay()";
4425            const SELECTOR: [u8; 4] = [242u8, 122u8, 12u8, 146u8];
4426            #[inline]
4427            fn new<'a>(
4428                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4429            ) -> Self {
4430                tuple.into()
4431            }
4432            #[inline]
4433            fn tokenize(&self) -> Self::Token<'_> {
4434                ()
4435            }
4436            #[inline]
4437            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4438                (
4439                    <alloy::sol_types::sol_data::Uint<
4440                        256,
4441                    > as alloy_sol_types::SolType>::tokenize(ret),
4442                )
4443            }
4444            #[inline]
4445            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4446                <Self::ReturnTuple<
4447                    '_,
4448                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4449                    .map(|r| {
4450                        let r: getMinDelayReturn = r.into();
4451                        r._0
4452                    })
4453            }
4454            #[inline]
4455            fn abi_decode_returns_validate(
4456                data: &[u8],
4457            ) -> alloy_sol_types::Result<Self::Return> {
4458                <Self::ReturnTuple<
4459                    '_,
4460                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4461                    .map(|r| {
4462                        let r: getMinDelayReturn = r.into();
4463                        r._0
4464                    })
4465            }
4466        }
4467    };
4468    #[derive(serde::Serialize, serde::Deserialize)]
4469    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4470    /**Function with signature `getOperationState(bytes32)` and selector `0x7958004c`.
4471```solidity
4472function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
4473```*/
4474    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4475    #[derive(Clone)]
4476    pub struct getOperationStateCall {
4477        #[allow(missing_docs)]
4478        pub id: alloy::sol_types::private::FixedBytes<32>,
4479    }
4480    #[derive(serde::Serialize, serde::Deserialize)]
4481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4482    ///Container type for the return parameters of the [`getOperationState(bytes32)`](getOperationStateCall) function.
4483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4484    #[derive(Clone)]
4485    pub struct getOperationStateReturn {
4486        #[allow(missing_docs)]
4487        pub _0: <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4488    }
4489    #[allow(
4490        non_camel_case_types,
4491        non_snake_case,
4492        clippy::pub_underscore_fields,
4493        clippy::style
4494    )]
4495    const _: () = {
4496        use alloy::sol_types as alloy_sol_types;
4497        {
4498            #[doc(hidden)]
4499            #[allow(dead_code)]
4500            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4501            #[doc(hidden)]
4502            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4503            #[cfg(test)]
4504            #[allow(dead_code, unreachable_patterns)]
4505            fn _type_assertion(
4506                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4507            ) {
4508                match _t {
4509                    alloy_sol_types::private::AssertTypeEq::<
4510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4511                    >(_) => {}
4512                }
4513            }
4514            #[automatically_derived]
4515            #[doc(hidden)]
4516            impl ::core::convert::From<getOperationStateCall>
4517            for UnderlyingRustTuple<'_> {
4518                fn from(value: getOperationStateCall) -> Self {
4519                    (value.id,)
4520                }
4521            }
4522            #[automatically_derived]
4523            #[doc(hidden)]
4524            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4525            for getOperationStateCall {
4526                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4527                    Self { id: tuple.0 }
4528                }
4529            }
4530        }
4531        {
4532            #[doc(hidden)]
4533            #[allow(dead_code)]
4534            type UnderlyingSolTuple<'a> = (TimelockController::OperationState,);
4535            #[doc(hidden)]
4536            type UnderlyingRustTuple<'a> = (
4537                <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4538            );
4539            #[cfg(test)]
4540            #[allow(dead_code, unreachable_patterns)]
4541            fn _type_assertion(
4542                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4543            ) {
4544                match _t {
4545                    alloy_sol_types::private::AssertTypeEq::<
4546                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4547                    >(_) => {}
4548                }
4549            }
4550            #[automatically_derived]
4551            #[doc(hidden)]
4552            impl ::core::convert::From<getOperationStateReturn>
4553            for UnderlyingRustTuple<'_> {
4554                fn from(value: getOperationStateReturn) -> Self {
4555                    (value._0,)
4556                }
4557            }
4558            #[automatically_derived]
4559            #[doc(hidden)]
4560            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4561            for getOperationStateReturn {
4562                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4563                    Self { _0: tuple.0 }
4564                }
4565            }
4566        }
4567        #[automatically_derived]
4568        impl alloy_sol_types::SolCall for getOperationStateCall {
4569            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4570            type Token<'a> = <Self::Parameters<
4571                'a,
4572            > as alloy_sol_types::SolType>::Token<'a>;
4573            type Return = <TimelockController::OperationState as alloy::sol_types::SolType>::RustType;
4574            type ReturnTuple<'a> = (TimelockController::OperationState,);
4575            type ReturnToken<'a> = <Self::ReturnTuple<
4576                'a,
4577            > as alloy_sol_types::SolType>::Token<'a>;
4578            const SIGNATURE: &'static str = "getOperationState(bytes32)";
4579            const SELECTOR: [u8; 4] = [121u8, 88u8, 0u8, 76u8];
4580            #[inline]
4581            fn new<'a>(
4582                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4583            ) -> Self {
4584                tuple.into()
4585            }
4586            #[inline]
4587            fn tokenize(&self) -> Self::Token<'_> {
4588                (
4589                    <alloy::sol_types::sol_data::FixedBytes<
4590                        32,
4591                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4592                )
4593            }
4594            #[inline]
4595            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4596                (
4597                    <TimelockController::OperationState as alloy_sol_types::SolType>::tokenize(
4598                        ret,
4599                    ),
4600                )
4601            }
4602            #[inline]
4603            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4604                <Self::ReturnTuple<
4605                    '_,
4606                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4607                    .map(|r| {
4608                        let r: getOperationStateReturn = r.into();
4609                        r._0
4610                    })
4611            }
4612            #[inline]
4613            fn abi_decode_returns_validate(
4614                data: &[u8],
4615            ) -> alloy_sol_types::Result<Self::Return> {
4616                <Self::ReturnTuple<
4617                    '_,
4618                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4619                    .map(|r| {
4620                        let r: getOperationStateReturn = r.into();
4621                        r._0
4622                    })
4623            }
4624        }
4625    };
4626    #[derive(serde::Serialize, serde::Deserialize)]
4627    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4628    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
4629```solidity
4630function getRoleAdmin(bytes32 role) external view returns (bytes32);
4631```*/
4632    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4633    #[derive(Clone)]
4634    pub struct getRoleAdminCall {
4635        #[allow(missing_docs)]
4636        pub role: alloy::sol_types::private::FixedBytes<32>,
4637    }
4638    #[derive(serde::Serialize, serde::Deserialize)]
4639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4640    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
4641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4642    #[derive(Clone)]
4643    pub struct getRoleAdminReturn {
4644        #[allow(missing_docs)]
4645        pub _0: alloy::sol_types::private::FixedBytes<32>,
4646    }
4647    #[allow(
4648        non_camel_case_types,
4649        non_snake_case,
4650        clippy::pub_underscore_fields,
4651        clippy::style
4652    )]
4653    const _: () = {
4654        use alloy::sol_types as alloy_sol_types;
4655        {
4656            #[doc(hidden)]
4657            #[allow(dead_code)]
4658            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4659            #[doc(hidden)]
4660            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4661            #[cfg(test)]
4662            #[allow(dead_code, unreachable_patterns)]
4663            fn _type_assertion(
4664                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4665            ) {
4666                match _t {
4667                    alloy_sol_types::private::AssertTypeEq::<
4668                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4669                    >(_) => {}
4670                }
4671            }
4672            #[automatically_derived]
4673            #[doc(hidden)]
4674            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
4675                fn from(value: getRoleAdminCall) -> Self {
4676                    (value.role,)
4677                }
4678            }
4679            #[automatically_derived]
4680            #[doc(hidden)]
4681            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
4682                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4683                    Self { role: tuple.0 }
4684                }
4685            }
4686        }
4687        {
4688            #[doc(hidden)]
4689            #[allow(dead_code)]
4690            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4691            #[doc(hidden)]
4692            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4693            #[cfg(test)]
4694            #[allow(dead_code, unreachable_patterns)]
4695            fn _type_assertion(
4696                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4697            ) {
4698                match _t {
4699                    alloy_sol_types::private::AssertTypeEq::<
4700                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4701                    >(_) => {}
4702                }
4703            }
4704            #[automatically_derived]
4705            #[doc(hidden)]
4706            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
4707                fn from(value: getRoleAdminReturn) -> Self {
4708                    (value._0,)
4709                }
4710            }
4711            #[automatically_derived]
4712            #[doc(hidden)]
4713            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
4714                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4715                    Self { _0: tuple.0 }
4716                }
4717            }
4718        }
4719        #[automatically_derived]
4720        impl alloy_sol_types::SolCall for getRoleAdminCall {
4721            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4722            type Token<'a> = <Self::Parameters<
4723                'a,
4724            > as alloy_sol_types::SolType>::Token<'a>;
4725            type Return = alloy::sol_types::private::FixedBytes<32>;
4726            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4727            type ReturnToken<'a> = <Self::ReturnTuple<
4728                'a,
4729            > as alloy_sol_types::SolType>::Token<'a>;
4730            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
4731            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
4732            #[inline]
4733            fn new<'a>(
4734                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4735            ) -> Self {
4736                tuple.into()
4737            }
4738            #[inline]
4739            fn tokenize(&self) -> Self::Token<'_> {
4740                (
4741                    <alloy::sol_types::sol_data::FixedBytes<
4742                        32,
4743                    > as alloy_sol_types::SolType>::tokenize(&self.role),
4744                )
4745            }
4746            #[inline]
4747            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4748                (
4749                    <alloy::sol_types::sol_data::FixedBytes<
4750                        32,
4751                    > as alloy_sol_types::SolType>::tokenize(ret),
4752                )
4753            }
4754            #[inline]
4755            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4756                <Self::ReturnTuple<
4757                    '_,
4758                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4759                    .map(|r| {
4760                        let r: getRoleAdminReturn = r.into();
4761                        r._0
4762                    })
4763            }
4764            #[inline]
4765            fn abi_decode_returns_validate(
4766                data: &[u8],
4767            ) -> alloy_sol_types::Result<Self::Return> {
4768                <Self::ReturnTuple<
4769                    '_,
4770                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4771                    .map(|r| {
4772                        let r: getRoleAdminReturn = r.into();
4773                        r._0
4774                    })
4775            }
4776        }
4777    };
4778    #[derive(serde::Serialize, serde::Deserialize)]
4779    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4780    /**Function with signature `getTimestamp(bytes32)` and selector `0xd45c4435`.
4781```solidity
4782function getTimestamp(bytes32 id) external view returns (uint256);
4783```*/
4784    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4785    #[derive(Clone)]
4786    pub struct getTimestampCall {
4787        #[allow(missing_docs)]
4788        pub id: alloy::sol_types::private::FixedBytes<32>,
4789    }
4790    #[derive(serde::Serialize, serde::Deserialize)]
4791    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4792    ///Container type for the return parameters of the [`getTimestamp(bytes32)`](getTimestampCall) function.
4793    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4794    #[derive(Clone)]
4795    pub struct getTimestampReturn {
4796        #[allow(missing_docs)]
4797        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4798    }
4799    #[allow(
4800        non_camel_case_types,
4801        non_snake_case,
4802        clippy::pub_underscore_fields,
4803        clippy::style
4804    )]
4805    const _: () = {
4806        use alloy::sol_types as alloy_sol_types;
4807        {
4808            #[doc(hidden)]
4809            #[allow(dead_code)]
4810            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4811            #[doc(hidden)]
4812            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4813            #[cfg(test)]
4814            #[allow(dead_code, unreachable_patterns)]
4815            fn _type_assertion(
4816                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4817            ) {
4818                match _t {
4819                    alloy_sol_types::private::AssertTypeEq::<
4820                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4821                    >(_) => {}
4822                }
4823            }
4824            #[automatically_derived]
4825            #[doc(hidden)]
4826            impl ::core::convert::From<getTimestampCall> for UnderlyingRustTuple<'_> {
4827                fn from(value: getTimestampCall) -> Self {
4828                    (value.id,)
4829                }
4830            }
4831            #[automatically_derived]
4832            #[doc(hidden)]
4833            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampCall {
4834                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4835                    Self { id: tuple.0 }
4836                }
4837            }
4838        }
4839        {
4840            #[doc(hidden)]
4841            #[allow(dead_code)]
4842            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4843            #[doc(hidden)]
4844            type UnderlyingRustTuple<'a> = (
4845                alloy::sol_types::private::primitives::aliases::U256,
4846            );
4847            #[cfg(test)]
4848            #[allow(dead_code, unreachable_patterns)]
4849            fn _type_assertion(
4850                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4851            ) {
4852                match _t {
4853                    alloy_sol_types::private::AssertTypeEq::<
4854                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4855                    >(_) => {}
4856                }
4857            }
4858            #[automatically_derived]
4859            #[doc(hidden)]
4860            impl ::core::convert::From<getTimestampReturn> for UnderlyingRustTuple<'_> {
4861                fn from(value: getTimestampReturn) -> Self {
4862                    (value._0,)
4863                }
4864            }
4865            #[automatically_derived]
4866            #[doc(hidden)]
4867            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampReturn {
4868                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4869                    Self { _0: tuple.0 }
4870                }
4871            }
4872        }
4873        #[automatically_derived]
4874        impl alloy_sol_types::SolCall for getTimestampCall {
4875            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4876            type Token<'a> = <Self::Parameters<
4877                'a,
4878            > as alloy_sol_types::SolType>::Token<'a>;
4879            type Return = alloy::sol_types::private::primitives::aliases::U256;
4880            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4881            type ReturnToken<'a> = <Self::ReturnTuple<
4882                'a,
4883            > as alloy_sol_types::SolType>::Token<'a>;
4884            const SIGNATURE: &'static str = "getTimestamp(bytes32)";
4885            const SELECTOR: [u8; 4] = [212u8, 92u8, 68u8, 53u8];
4886            #[inline]
4887            fn new<'a>(
4888                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4889            ) -> Self {
4890                tuple.into()
4891            }
4892            #[inline]
4893            fn tokenize(&self) -> Self::Token<'_> {
4894                (
4895                    <alloy::sol_types::sol_data::FixedBytes<
4896                        32,
4897                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4898                )
4899            }
4900            #[inline]
4901            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4902                (
4903                    <alloy::sol_types::sol_data::Uint<
4904                        256,
4905                    > as alloy_sol_types::SolType>::tokenize(ret),
4906                )
4907            }
4908            #[inline]
4909            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4910                <Self::ReturnTuple<
4911                    '_,
4912                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4913                    .map(|r| {
4914                        let r: getTimestampReturn = r.into();
4915                        r._0
4916                    })
4917            }
4918            #[inline]
4919            fn abi_decode_returns_validate(
4920                data: &[u8],
4921            ) -> alloy_sol_types::Result<Self::Return> {
4922                <Self::ReturnTuple<
4923                    '_,
4924                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4925                    .map(|r| {
4926                        let r: getTimestampReturn = r.into();
4927                        r._0
4928                    })
4929            }
4930        }
4931    };
4932    #[derive(serde::Serialize, serde::Deserialize)]
4933    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4934    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
4935```solidity
4936function grantRole(bytes32 role, address account) external;
4937```*/
4938    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4939    #[derive(Clone)]
4940    pub struct grantRoleCall {
4941        #[allow(missing_docs)]
4942        pub role: alloy::sol_types::private::FixedBytes<32>,
4943        #[allow(missing_docs)]
4944        pub account: alloy::sol_types::private::Address,
4945    }
4946    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
4947    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4948    #[derive(Clone)]
4949    pub struct grantRoleReturn {}
4950    #[allow(
4951        non_camel_case_types,
4952        non_snake_case,
4953        clippy::pub_underscore_fields,
4954        clippy::style
4955    )]
4956    const _: () = {
4957        use alloy::sol_types as alloy_sol_types;
4958        {
4959            #[doc(hidden)]
4960            #[allow(dead_code)]
4961            type UnderlyingSolTuple<'a> = (
4962                alloy::sol_types::sol_data::FixedBytes<32>,
4963                alloy::sol_types::sol_data::Address,
4964            );
4965            #[doc(hidden)]
4966            type UnderlyingRustTuple<'a> = (
4967                alloy::sol_types::private::FixedBytes<32>,
4968                alloy::sol_types::private::Address,
4969            );
4970            #[cfg(test)]
4971            #[allow(dead_code, unreachable_patterns)]
4972            fn _type_assertion(
4973                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4974            ) {
4975                match _t {
4976                    alloy_sol_types::private::AssertTypeEq::<
4977                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4978                    >(_) => {}
4979                }
4980            }
4981            #[automatically_derived]
4982            #[doc(hidden)]
4983            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
4984                fn from(value: grantRoleCall) -> Self {
4985                    (value.role, value.account)
4986                }
4987            }
4988            #[automatically_derived]
4989            #[doc(hidden)]
4990            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
4991                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4992                    Self {
4993                        role: tuple.0,
4994                        account: tuple.1,
4995                    }
4996                }
4997            }
4998        }
4999        {
5000            #[doc(hidden)]
5001            #[allow(dead_code)]
5002            type UnderlyingSolTuple<'a> = ();
5003            #[doc(hidden)]
5004            type UnderlyingRustTuple<'a> = ();
5005            #[cfg(test)]
5006            #[allow(dead_code, unreachable_patterns)]
5007            fn _type_assertion(
5008                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5009            ) {
5010                match _t {
5011                    alloy_sol_types::private::AssertTypeEq::<
5012                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5013                    >(_) => {}
5014                }
5015            }
5016            #[automatically_derived]
5017            #[doc(hidden)]
5018            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
5019                fn from(value: grantRoleReturn) -> Self {
5020                    ()
5021                }
5022            }
5023            #[automatically_derived]
5024            #[doc(hidden)]
5025            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
5026                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5027                    Self {}
5028                }
5029            }
5030        }
5031        impl grantRoleReturn {
5032            fn _tokenize(
5033                &self,
5034            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5035                ()
5036            }
5037        }
5038        #[automatically_derived]
5039        impl alloy_sol_types::SolCall for grantRoleCall {
5040            type Parameters<'a> = (
5041                alloy::sol_types::sol_data::FixedBytes<32>,
5042                alloy::sol_types::sol_data::Address,
5043            );
5044            type Token<'a> = <Self::Parameters<
5045                'a,
5046            > as alloy_sol_types::SolType>::Token<'a>;
5047            type Return = grantRoleReturn;
5048            type ReturnTuple<'a> = ();
5049            type ReturnToken<'a> = <Self::ReturnTuple<
5050                'a,
5051            > as alloy_sol_types::SolType>::Token<'a>;
5052            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
5053            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
5054            #[inline]
5055            fn new<'a>(
5056                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5057            ) -> Self {
5058                tuple.into()
5059            }
5060            #[inline]
5061            fn tokenize(&self) -> Self::Token<'_> {
5062                (
5063                    <alloy::sol_types::sol_data::FixedBytes<
5064                        32,
5065                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5066                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5067                        &self.account,
5068                    ),
5069                )
5070            }
5071            #[inline]
5072            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5073                grantRoleReturn::_tokenize(ret)
5074            }
5075            #[inline]
5076            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5077                <Self::ReturnTuple<
5078                    '_,
5079                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5080                    .map(Into::into)
5081            }
5082            #[inline]
5083            fn abi_decode_returns_validate(
5084                data: &[u8],
5085            ) -> alloy_sol_types::Result<Self::Return> {
5086                <Self::ReturnTuple<
5087                    '_,
5088                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5089                    .map(Into::into)
5090            }
5091        }
5092    };
5093    #[derive(serde::Serialize, serde::Deserialize)]
5094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5095    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
5096```solidity
5097function hasRole(bytes32 role, address account) external view returns (bool);
5098```*/
5099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5100    #[derive(Clone)]
5101    pub struct hasRoleCall {
5102        #[allow(missing_docs)]
5103        pub role: alloy::sol_types::private::FixedBytes<32>,
5104        #[allow(missing_docs)]
5105        pub account: alloy::sol_types::private::Address,
5106    }
5107    #[derive(serde::Serialize, serde::Deserialize)]
5108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5109    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
5110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5111    #[derive(Clone)]
5112    pub struct hasRoleReturn {
5113        #[allow(missing_docs)]
5114        pub _0: bool,
5115    }
5116    #[allow(
5117        non_camel_case_types,
5118        non_snake_case,
5119        clippy::pub_underscore_fields,
5120        clippy::style
5121    )]
5122    const _: () = {
5123        use alloy::sol_types as alloy_sol_types;
5124        {
5125            #[doc(hidden)]
5126            #[allow(dead_code)]
5127            type UnderlyingSolTuple<'a> = (
5128                alloy::sol_types::sol_data::FixedBytes<32>,
5129                alloy::sol_types::sol_data::Address,
5130            );
5131            #[doc(hidden)]
5132            type UnderlyingRustTuple<'a> = (
5133                alloy::sol_types::private::FixedBytes<32>,
5134                alloy::sol_types::private::Address,
5135            );
5136            #[cfg(test)]
5137            #[allow(dead_code, unreachable_patterns)]
5138            fn _type_assertion(
5139                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5140            ) {
5141                match _t {
5142                    alloy_sol_types::private::AssertTypeEq::<
5143                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5144                    >(_) => {}
5145                }
5146            }
5147            #[automatically_derived]
5148            #[doc(hidden)]
5149            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
5150                fn from(value: hasRoleCall) -> Self {
5151                    (value.role, value.account)
5152                }
5153            }
5154            #[automatically_derived]
5155            #[doc(hidden)]
5156            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
5157                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5158                    Self {
5159                        role: tuple.0,
5160                        account: tuple.1,
5161                    }
5162                }
5163            }
5164        }
5165        {
5166            #[doc(hidden)]
5167            #[allow(dead_code)]
5168            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5169            #[doc(hidden)]
5170            type UnderlyingRustTuple<'a> = (bool,);
5171            #[cfg(test)]
5172            #[allow(dead_code, unreachable_patterns)]
5173            fn _type_assertion(
5174                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5175            ) {
5176                match _t {
5177                    alloy_sol_types::private::AssertTypeEq::<
5178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5179                    >(_) => {}
5180                }
5181            }
5182            #[automatically_derived]
5183            #[doc(hidden)]
5184            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
5185                fn from(value: hasRoleReturn) -> Self {
5186                    (value._0,)
5187                }
5188            }
5189            #[automatically_derived]
5190            #[doc(hidden)]
5191            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
5192                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5193                    Self { _0: tuple.0 }
5194                }
5195            }
5196        }
5197        #[automatically_derived]
5198        impl alloy_sol_types::SolCall for hasRoleCall {
5199            type Parameters<'a> = (
5200                alloy::sol_types::sol_data::FixedBytes<32>,
5201                alloy::sol_types::sol_data::Address,
5202            );
5203            type Token<'a> = <Self::Parameters<
5204                'a,
5205            > as alloy_sol_types::SolType>::Token<'a>;
5206            type Return = bool;
5207            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5208            type ReturnToken<'a> = <Self::ReturnTuple<
5209                'a,
5210            > as alloy_sol_types::SolType>::Token<'a>;
5211            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
5212            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
5213            #[inline]
5214            fn new<'a>(
5215                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5216            ) -> Self {
5217                tuple.into()
5218            }
5219            #[inline]
5220            fn tokenize(&self) -> Self::Token<'_> {
5221                (
5222                    <alloy::sol_types::sol_data::FixedBytes<
5223                        32,
5224                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5225                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5226                        &self.account,
5227                    ),
5228                )
5229            }
5230            #[inline]
5231            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5232                (
5233                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5234                        ret,
5235                    ),
5236                )
5237            }
5238            #[inline]
5239            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5240                <Self::ReturnTuple<
5241                    '_,
5242                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5243                    .map(|r| {
5244                        let r: hasRoleReturn = r.into();
5245                        r._0
5246                    })
5247            }
5248            #[inline]
5249            fn abi_decode_returns_validate(
5250                data: &[u8],
5251            ) -> alloy_sol_types::Result<Self::Return> {
5252                <Self::ReturnTuple<
5253                    '_,
5254                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5255                    .map(|r| {
5256                        let r: hasRoleReturn = r.into();
5257                        r._0
5258                    })
5259            }
5260        }
5261    };
5262    #[derive(serde::Serialize, serde::Deserialize)]
5263    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5264    /**Function with signature `hashOperation(address,uint256,bytes,bytes32,bytes32)` and selector `0x8065657f`.
5265```solidity
5266function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
5267```*/
5268    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5269    #[derive(Clone)]
5270    pub struct hashOperationCall {
5271        #[allow(missing_docs)]
5272        pub target: alloy::sol_types::private::Address,
5273        #[allow(missing_docs)]
5274        pub value: alloy::sol_types::private::primitives::aliases::U256,
5275        #[allow(missing_docs)]
5276        pub data: alloy::sol_types::private::Bytes,
5277        #[allow(missing_docs)]
5278        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5279        #[allow(missing_docs)]
5280        pub salt: alloy::sol_types::private::FixedBytes<32>,
5281    }
5282    #[derive(serde::Serialize, serde::Deserialize)]
5283    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5284    ///Container type for the return parameters of the [`hashOperation(address,uint256,bytes,bytes32,bytes32)`](hashOperationCall) function.
5285    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5286    #[derive(Clone)]
5287    pub struct hashOperationReturn {
5288        #[allow(missing_docs)]
5289        pub _0: alloy::sol_types::private::FixedBytes<32>,
5290    }
5291    #[allow(
5292        non_camel_case_types,
5293        non_snake_case,
5294        clippy::pub_underscore_fields,
5295        clippy::style
5296    )]
5297    const _: () = {
5298        use alloy::sol_types as alloy_sol_types;
5299        {
5300            #[doc(hidden)]
5301            #[allow(dead_code)]
5302            type UnderlyingSolTuple<'a> = (
5303                alloy::sol_types::sol_data::Address,
5304                alloy::sol_types::sol_data::Uint<256>,
5305                alloy::sol_types::sol_data::Bytes,
5306                alloy::sol_types::sol_data::FixedBytes<32>,
5307                alloy::sol_types::sol_data::FixedBytes<32>,
5308            );
5309            #[doc(hidden)]
5310            type UnderlyingRustTuple<'a> = (
5311                alloy::sol_types::private::Address,
5312                alloy::sol_types::private::primitives::aliases::U256,
5313                alloy::sol_types::private::Bytes,
5314                alloy::sol_types::private::FixedBytes<32>,
5315                alloy::sol_types::private::FixedBytes<32>,
5316            );
5317            #[cfg(test)]
5318            #[allow(dead_code, unreachable_patterns)]
5319            fn _type_assertion(
5320                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5321            ) {
5322                match _t {
5323                    alloy_sol_types::private::AssertTypeEq::<
5324                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5325                    >(_) => {}
5326                }
5327            }
5328            #[automatically_derived]
5329            #[doc(hidden)]
5330            impl ::core::convert::From<hashOperationCall> for UnderlyingRustTuple<'_> {
5331                fn from(value: hashOperationCall) -> Self {
5332                    (
5333                        value.target,
5334                        value.value,
5335                        value.data,
5336                        value.predecessor,
5337                        value.salt,
5338                    )
5339                }
5340            }
5341            #[automatically_derived]
5342            #[doc(hidden)]
5343            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationCall {
5344                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5345                    Self {
5346                        target: tuple.0,
5347                        value: tuple.1,
5348                        data: tuple.2,
5349                        predecessor: tuple.3,
5350                        salt: tuple.4,
5351                    }
5352                }
5353            }
5354        }
5355        {
5356            #[doc(hidden)]
5357            #[allow(dead_code)]
5358            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5359            #[doc(hidden)]
5360            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5361            #[cfg(test)]
5362            #[allow(dead_code, unreachable_patterns)]
5363            fn _type_assertion(
5364                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5365            ) {
5366                match _t {
5367                    alloy_sol_types::private::AssertTypeEq::<
5368                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5369                    >(_) => {}
5370                }
5371            }
5372            #[automatically_derived]
5373            #[doc(hidden)]
5374            impl ::core::convert::From<hashOperationReturn> for UnderlyingRustTuple<'_> {
5375                fn from(value: hashOperationReturn) -> Self {
5376                    (value._0,)
5377                }
5378            }
5379            #[automatically_derived]
5380            #[doc(hidden)]
5381            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationReturn {
5382                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5383                    Self { _0: tuple.0 }
5384                }
5385            }
5386        }
5387        #[automatically_derived]
5388        impl alloy_sol_types::SolCall for hashOperationCall {
5389            type Parameters<'a> = (
5390                alloy::sol_types::sol_data::Address,
5391                alloy::sol_types::sol_data::Uint<256>,
5392                alloy::sol_types::sol_data::Bytes,
5393                alloy::sol_types::sol_data::FixedBytes<32>,
5394                alloy::sol_types::sol_data::FixedBytes<32>,
5395            );
5396            type Token<'a> = <Self::Parameters<
5397                'a,
5398            > as alloy_sol_types::SolType>::Token<'a>;
5399            type Return = alloy::sol_types::private::FixedBytes<32>;
5400            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5401            type ReturnToken<'a> = <Self::ReturnTuple<
5402                'a,
5403            > as alloy_sol_types::SolType>::Token<'a>;
5404            const SIGNATURE: &'static str = "hashOperation(address,uint256,bytes,bytes32,bytes32)";
5405            const SELECTOR: [u8; 4] = [128u8, 101u8, 101u8, 127u8];
5406            #[inline]
5407            fn new<'a>(
5408                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5409            ) -> Self {
5410                tuple.into()
5411            }
5412            #[inline]
5413            fn tokenize(&self) -> Self::Token<'_> {
5414                (
5415                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5416                        &self.target,
5417                    ),
5418                    <alloy::sol_types::sol_data::Uint<
5419                        256,
5420                    > as alloy_sol_types::SolType>::tokenize(&self.value),
5421                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5422                        &self.data,
5423                    ),
5424                    <alloy::sol_types::sol_data::FixedBytes<
5425                        32,
5426                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5427                    <alloy::sol_types::sol_data::FixedBytes<
5428                        32,
5429                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5430                )
5431            }
5432            #[inline]
5433            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5434                (
5435                    <alloy::sol_types::sol_data::FixedBytes<
5436                        32,
5437                    > as alloy_sol_types::SolType>::tokenize(ret),
5438                )
5439            }
5440            #[inline]
5441            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5442                <Self::ReturnTuple<
5443                    '_,
5444                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5445                    .map(|r| {
5446                        let r: hashOperationReturn = r.into();
5447                        r._0
5448                    })
5449            }
5450            #[inline]
5451            fn abi_decode_returns_validate(
5452                data: &[u8],
5453            ) -> alloy_sol_types::Result<Self::Return> {
5454                <Self::ReturnTuple<
5455                    '_,
5456                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5457                    .map(|r| {
5458                        let r: hashOperationReturn = r.into();
5459                        r._0
5460                    })
5461            }
5462        }
5463    };
5464    #[derive(serde::Serialize, serde::Deserialize)]
5465    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5466    /**Function with signature `hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xb1c5f427`.
5467```solidity
5468function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
5469```*/
5470    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5471    #[derive(Clone)]
5472    pub struct hashOperationBatchCall {
5473        #[allow(missing_docs)]
5474        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5475        #[allow(missing_docs)]
5476        pub values: alloy::sol_types::private::Vec<
5477            alloy::sol_types::private::primitives::aliases::U256,
5478        >,
5479        #[allow(missing_docs)]
5480        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5481        #[allow(missing_docs)]
5482        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5483        #[allow(missing_docs)]
5484        pub salt: alloy::sol_types::private::FixedBytes<32>,
5485    }
5486    #[derive(serde::Serialize, serde::Deserialize)]
5487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5488    ///Container type for the return parameters of the [`hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)`](hashOperationBatchCall) function.
5489    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5490    #[derive(Clone)]
5491    pub struct hashOperationBatchReturn {
5492        #[allow(missing_docs)]
5493        pub _0: alloy::sol_types::private::FixedBytes<32>,
5494    }
5495    #[allow(
5496        non_camel_case_types,
5497        non_snake_case,
5498        clippy::pub_underscore_fields,
5499        clippy::style
5500    )]
5501    const _: () = {
5502        use alloy::sol_types as alloy_sol_types;
5503        {
5504            #[doc(hidden)]
5505            #[allow(dead_code)]
5506            type UnderlyingSolTuple<'a> = (
5507                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5508                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5509                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5510                alloy::sol_types::sol_data::FixedBytes<32>,
5511                alloy::sol_types::sol_data::FixedBytes<32>,
5512            );
5513            #[doc(hidden)]
5514            type UnderlyingRustTuple<'a> = (
5515                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5516                alloy::sol_types::private::Vec<
5517                    alloy::sol_types::private::primitives::aliases::U256,
5518                >,
5519                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5520                alloy::sol_types::private::FixedBytes<32>,
5521                alloy::sol_types::private::FixedBytes<32>,
5522            );
5523            #[cfg(test)]
5524            #[allow(dead_code, unreachable_patterns)]
5525            fn _type_assertion(
5526                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5527            ) {
5528                match _t {
5529                    alloy_sol_types::private::AssertTypeEq::<
5530                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5531                    >(_) => {}
5532                }
5533            }
5534            #[automatically_derived]
5535            #[doc(hidden)]
5536            impl ::core::convert::From<hashOperationBatchCall>
5537            for UnderlyingRustTuple<'_> {
5538                fn from(value: hashOperationBatchCall) -> Self {
5539                    (
5540                        value.targets,
5541                        value.values,
5542                        value.payloads,
5543                        value.predecessor,
5544                        value.salt,
5545                    )
5546                }
5547            }
5548            #[automatically_derived]
5549            #[doc(hidden)]
5550            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5551            for hashOperationBatchCall {
5552                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5553                    Self {
5554                        targets: tuple.0,
5555                        values: tuple.1,
5556                        payloads: tuple.2,
5557                        predecessor: tuple.3,
5558                        salt: tuple.4,
5559                    }
5560                }
5561            }
5562        }
5563        {
5564            #[doc(hidden)]
5565            #[allow(dead_code)]
5566            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5567            #[doc(hidden)]
5568            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5569            #[cfg(test)]
5570            #[allow(dead_code, unreachable_patterns)]
5571            fn _type_assertion(
5572                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5573            ) {
5574                match _t {
5575                    alloy_sol_types::private::AssertTypeEq::<
5576                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5577                    >(_) => {}
5578                }
5579            }
5580            #[automatically_derived]
5581            #[doc(hidden)]
5582            impl ::core::convert::From<hashOperationBatchReturn>
5583            for UnderlyingRustTuple<'_> {
5584                fn from(value: hashOperationBatchReturn) -> Self {
5585                    (value._0,)
5586                }
5587            }
5588            #[automatically_derived]
5589            #[doc(hidden)]
5590            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5591            for hashOperationBatchReturn {
5592                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5593                    Self { _0: tuple.0 }
5594                }
5595            }
5596        }
5597        #[automatically_derived]
5598        impl alloy_sol_types::SolCall for hashOperationBatchCall {
5599            type Parameters<'a> = (
5600                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5601                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5602                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5603                alloy::sol_types::sol_data::FixedBytes<32>,
5604                alloy::sol_types::sol_data::FixedBytes<32>,
5605            );
5606            type Token<'a> = <Self::Parameters<
5607                'a,
5608            > as alloy_sol_types::SolType>::Token<'a>;
5609            type Return = alloy::sol_types::private::FixedBytes<32>;
5610            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5611            type ReturnToken<'a> = <Self::ReturnTuple<
5612                'a,
5613            > as alloy_sol_types::SolType>::Token<'a>;
5614            const SIGNATURE: &'static str = "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)";
5615            const SELECTOR: [u8; 4] = [177u8, 197u8, 244u8, 39u8];
5616            #[inline]
5617            fn new<'a>(
5618                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5619            ) -> Self {
5620                tuple.into()
5621            }
5622            #[inline]
5623            fn tokenize(&self) -> Self::Token<'_> {
5624                (
5625                    <alloy::sol_types::sol_data::Array<
5626                        alloy::sol_types::sol_data::Address,
5627                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
5628                    <alloy::sol_types::sol_data::Array<
5629                        alloy::sol_types::sol_data::Uint<256>,
5630                    > as alloy_sol_types::SolType>::tokenize(&self.values),
5631                    <alloy::sol_types::sol_data::Array<
5632                        alloy::sol_types::sol_data::Bytes,
5633                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
5634                    <alloy::sol_types::sol_data::FixedBytes<
5635                        32,
5636                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5637                    <alloy::sol_types::sol_data::FixedBytes<
5638                        32,
5639                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5640                )
5641            }
5642            #[inline]
5643            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5644                (
5645                    <alloy::sol_types::sol_data::FixedBytes<
5646                        32,
5647                    > as alloy_sol_types::SolType>::tokenize(ret),
5648                )
5649            }
5650            #[inline]
5651            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5652                <Self::ReturnTuple<
5653                    '_,
5654                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5655                    .map(|r| {
5656                        let r: hashOperationBatchReturn = r.into();
5657                        r._0
5658                    })
5659            }
5660            #[inline]
5661            fn abi_decode_returns_validate(
5662                data: &[u8],
5663            ) -> alloy_sol_types::Result<Self::Return> {
5664                <Self::ReturnTuple<
5665                    '_,
5666                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5667                    .map(|r| {
5668                        let r: hashOperationBatchReturn = r.into();
5669                        r._0
5670                    })
5671            }
5672        }
5673    };
5674    #[derive(serde::Serialize, serde::Deserialize)]
5675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5676    /**Function with signature `isOperation(bytes32)` and selector `0x31d50750`.
5677```solidity
5678function isOperation(bytes32 id) external view returns (bool);
5679```*/
5680    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5681    #[derive(Clone)]
5682    pub struct isOperationCall {
5683        #[allow(missing_docs)]
5684        pub id: alloy::sol_types::private::FixedBytes<32>,
5685    }
5686    #[derive(serde::Serialize, serde::Deserialize)]
5687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5688    ///Container type for the return parameters of the [`isOperation(bytes32)`](isOperationCall) function.
5689    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5690    #[derive(Clone)]
5691    pub struct isOperationReturn {
5692        #[allow(missing_docs)]
5693        pub _0: bool,
5694    }
5695    #[allow(
5696        non_camel_case_types,
5697        non_snake_case,
5698        clippy::pub_underscore_fields,
5699        clippy::style
5700    )]
5701    const _: () = {
5702        use alloy::sol_types as alloy_sol_types;
5703        {
5704            #[doc(hidden)]
5705            #[allow(dead_code)]
5706            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5707            #[doc(hidden)]
5708            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5709            #[cfg(test)]
5710            #[allow(dead_code, unreachable_patterns)]
5711            fn _type_assertion(
5712                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5713            ) {
5714                match _t {
5715                    alloy_sol_types::private::AssertTypeEq::<
5716                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5717                    >(_) => {}
5718                }
5719            }
5720            #[automatically_derived]
5721            #[doc(hidden)]
5722            impl ::core::convert::From<isOperationCall> for UnderlyingRustTuple<'_> {
5723                fn from(value: isOperationCall) -> Self {
5724                    (value.id,)
5725                }
5726            }
5727            #[automatically_derived]
5728            #[doc(hidden)]
5729            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationCall {
5730                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5731                    Self { id: tuple.0 }
5732                }
5733            }
5734        }
5735        {
5736            #[doc(hidden)]
5737            #[allow(dead_code)]
5738            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5739            #[doc(hidden)]
5740            type UnderlyingRustTuple<'a> = (bool,);
5741            #[cfg(test)]
5742            #[allow(dead_code, unreachable_patterns)]
5743            fn _type_assertion(
5744                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5745            ) {
5746                match _t {
5747                    alloy_sol_types::private::AssertTypeEq::<
5748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5749                    >(_) => {}
5750                }
5751            }
5752            #[automatically_derived]
5753            #[doc(hidden)]
5754            impl ::core::convert::From<isOperationReturn> for UnderlyingRustTuple<'_> {
5755                fn from(value: isOperationReturn) -> Self {
5756                    (value._0,)
5757                }
5758            }
5759            #[automatically_derived]
5760            #[doc(hidden)]
5761            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationReturn {
5762                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5763                    Self { _0: tuple.0 }
5764                }
5765            }
5766        }
5767        #[automatically_derived]
5768        impl alloy_sol_types::SolCall for isOperationCall {
5769            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5770            type Token<'a> = <Self::Parameters<
5771                'a,
5772            > as alloy_sol_types::SolType>::Token<'a>;
5773            type Return = bool;
5774            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5775            type ReturnToken<'a> = <Self::ReturnTuple<
5776                'a,
5777            > as alloy_sol_types::SolType>::Token<'a>;
5778            const SIGNATURE: &'static str = "isOperation(bytes32)";
5779            const SELECTOR: [u8; 4] = [49u8, 213u8, 7u8, 80u8];
5780            #[inline]
5781            fn new<'a>(
5782                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5783            ) -> Self {
5784                tuple.into()
5785            }
5786            #[inline]
5787            fn tokenize(&self) -> Self::Token<'_> {
5788                (
5789                    <alloy::sol_types::sol_data::FixedBytes<
5790                        32,
5791                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5792                )
5793            }
5794            #[inline]
5795            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5796                (
5797                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5798                        ret,
5799                    ),
5800                )
5801            }
5802            #[inline]
5803            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5804                <Self::ReturnTuple<
5805                    '_,
5806                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5807                    .map(|r| {
5808                        let r: isOperationReturn = r.into();
5809                        r._0
5810                    })
5811            }
5812            #[inline]
5813            fn abi_decode_returns_validate(
5814                data: &[u8],
5815            ) -> alloy_sol_types::Result<Self::Return> {
5816                <Self::ReturnTuple<
5817                    '_,
5818                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5819                    .map(|r| {
5820                        let r: isOperationReturn = r.into();
5821                        r._0
5822                    })
5823            }
5824        }
5825    };
5826    #[derive(serde::Serialize, serde::Deserialize)]
5827    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5828    /**Function with signature `isOperationDone(bytes32)` and selector `0x2ab0f529`.
5829```solidity
5830function isOperationDone(bytes32 id) external view returns (bool);
5831```*/
5832    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5833    #[derive(Clone)]
5834    pub struct isOperationDoneCall {
5835        #[allow(missing_docs)]
5836        pub id: alloy::sol_types::private::FixedBytes<32>,
5837    }
5838    #[derive(serde::Serialize, serde::Deserialize)]
5839    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5840    ///Container type for the return parameters of the [`isOperationDone(bytes32)`](isOperationDoneCall) function.
5841    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5842    #[derive(Clone)]
5843    pub struct isOperationDoneReturn {
5844        #[allow(missing_docs)]
5845        pub _0: bool,
5846    }
5847    #[allow(
5848        non_camel_case_types,
5849        non_snake_case,
5850        clippy::pub_underscore_fields,
5851        clippy::style
5852    )]
5853    const _: () = {
5854        use alloy::sol_types as alloy_sol_types;
5855        {
5856            #[doc(hidden)]
5857            #[allow(dead_code)]
5858            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5859            #[doc(hidden)]
5860            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5861            #[cfg(test)]
5862            #[allow(dead_code, unreachable_patterns)]
5863            fn _type_assertion(
5864                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5865            ) {
5866                match _t {
5867                    alloy_sol_types::private::AssertTypeEq::<
5868                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5869                    >(_) => {}
5870                }
5871            }
5872            #[automatically_derived]
5873            #[doc(hidden)]
5874            impl ::core::convert::From<isOperationDoneCall> for UnderlyingRustTuple<'_> {
5875                fn from(value: isOperationDoneCall) -> Self {
5876                    (value.id,)
5877                }
5878            }
5879            #[automatically_derived]
5880            #[doc(hidden)]
5881            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationDoneCall {
5882                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5883                    Self { id: tuple.0 }
5884                }
5885            }
5886        }
5887        {
5888            #[doc(hidden)]
5889            #[allow(dead_code)]
5890            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5891            #[doc(hidden)]
5892            type UnderlyingRustTuple<'a> = (bool,);
5893            #[cfg(test)]
5894            #[allow(dead_code, unreachable_patterns)]
5895            fn _type_assertion(
5896                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5897            ) {
5898                match _t {
5899                    alloy_sol_types::private::AssertTypeEq::<
5900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5901                    >(_) => {}
5902                }
5903            }
5904            #[automatically_derived]
5905            #[doc(hidden)]
5906            impl ::core::convert::From<isOperationDoneReturn>
5907            for UnderlyingRustTuple<'_> {
5908                fn from(value: isOperationDoneReturn) -> Self {
5909                    (value._0,)
5910                }
5911            }
5912            #[automatically_derived]
5913            #[doc(hidden)]
5914            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5915            for isOperationDoneReturn {
5916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5917                    Self { _0: tuple.0 }
5918                }
5919            }
5920        }
5921        #[automatically_derived]
5922        impl alloy_sol_types::SolCall for isOperationDoneCall {
5923            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5924            type Token<'a> = <Self::Parameters<
5925                'a,
5926            > as alloy_sol_types::SolType>::Token<'a>;
5927            type Return = bool;
5928            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5929            type ReturnToken<'a> = <Self::ReturnTuple<
5930                'a,
5931            > as alloy_sol_types::SolType>::Token<'a>;
5932            const SIGNATURE: &'static str = "isOperationDone(bytes32)";
5933            const SELECTOR: [u8; 4] = [42u8, 176u8, 245u8, 41u8];
5934            #[inline]
5935            fn new<'a>(
5936                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5937            ) -> Self {
5938                tuple.into()
5939            }
5940            #[inline]
5941            fn tokenize(&self) -> Self::Token<'_> {
5942                (
5943                    <alloy::sol_types::sol_data::FixedBytes<
5944                        32,
5945                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5946                )
5947            }
5948            #[inline]
5949            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5950                (
5951                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5952                        ret,
5953                    ),
5954                )
5955            }
5956            #[inline]
5957            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5958                <Self::ReturnTuple<
5959                    '_,
5960                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5961                    .map(|r| {
5962                        let r: isOperationDoneReturn = r.into();
5963                        r._0
5964                    })
5965            }
5966            #[inline]
5967            fn abi_decode_returns_validate(
5968                data: &[u8],
5969            ) -> alloy_sol_types::Result<Self::Return> {
5970                <Self::ReturnTuple<
5971                    '_,
5972                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5973                    .map(|r| {
5974                        let r: isOperationDoneReturn = r.into();
5975                        r._0
5976                    })
5977            }
5978        }
5979    };
5980    #[derive(serde::Serialize, serde::Deserialize)]
5981    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5982    /**Function with signature `isOperationPending(bytes32)` and selector `0x584b153e`.
5983```solidity
5984function isOperationPending(bytes32 id) external view returns (bool);
5985```*/
5986    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5987    #[derive(Clone)]
5988    pub struct isOperationPendingCall {
5989        #[allow(missing_docs)]
5990        pub id: alloy::sol_types::private::FixedBytes<32>,
5991    }
5992    #[derive(serde::Serialize, serde::Deserialize)]
5993    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5994    ///Container type for the return parameters of the [`isOperationPending(bytes32)`](isOperationPendingCall) function.
5995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5996    #[derive(Clone)]
5997    pub struct isOperationPendingReturn {
5998        #[allow(missing_docs)]
5999        pub _0: bool,
6000    }
6001    #[allow(
6002        non_camel_case_types,
6003        non_snake_case,
6004        clippy::pub_underscore_fields,
6005        clippy::style
6006    )]
6007    const _: () = {
6008        use alloy::sol_types as alloy_sol_types;
6009        {
6010            #[doc(hidden)]
6011            #[allow(dead_code)]
6012            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6013            #[doc(hidden)]
6014            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6015            #[cfg(test)]
6016            #[allow(dead_code, unreachable_patterns)]
6017            fn _type_assertion(
6018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6019            ) {
6020                match _t {
6021                    alloy_sol_types::private::AssertTypeEq::<
6022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6023                    >(_) => {}
6024                }
6025            }
6026            #[automatically_derived]
6027            #[doc(hidden)]
6028            impl ::core::convert::From<isOperationPendingCall>
6029            for UnderlyingRustTuple<'_> {
6030                fn from(value: isOperationPendingCall) -> Self {
6031                    (value.id,)
6032                }
6033            }
6034            #[automatically_derived]
6035            #[doc(hidden)]
6036            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6037            for isOperationPendingCall {
6038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6039                    Self { id: tuple.0 }
6040                }
6041            }
6042        }
6043        {
6044            #[doc(hidden)]
6045            #[allow(dead_code)]
6046            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6047            #[doc(hidden)]
6048            type UnderlyingRustTuple<'a> = (bool,);
6049            #[cfg(test)]
6050            #[allow(dead_code, unreachable_patterns)]
6051            fn _type_assertion(
6052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6053            ) {
6054                match _t {
6055                    alloy_sol_types::private::AssertTypeEq::<
6056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6057                    >(_) => {}
6058                }
6059            }
6060            #[automatically_derived]
6061            #[doc(hidden)]
6062            impl ::core::convert::From<isOperationPendingReturn>
6063            for UnderlyingRustTuple<'_> {
6064                fn from(value: isOperationPendingReturn) -> Self {
6065                    (value._0,)
6066                }
6067            }
6068            #[automatically_derived]
6069            #[doc(hidden)]
6070            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6071            for isOperationPendingReturn {
6072                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6073                    Self { _0: tuple.0 }
6074                }
6075            }
6076        }
6077        #[automatically_derived]
6078        impl alloy_sol_types::SolCall for isOperationPendingCall {
6079            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6080            type Token<'a> = <Self::Parameters<
6081                'a,
6082            > as alloy_sol_types::SolType>::Token<'a>;
6083            type Return = bool;
6084            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6085            type ReturnToken<'a> = <Self::ReturnTuple<
6086                'a,
6087            > as alloy_sol_types::SolType>::Token<'a>;
6088            const SIGNATURE: &'static str = "isOperationPending(bytes32)";
6089            const SELECTOR: [u8; 4] = [88u8, 75u8, 21u8, 62u8];
6090            #[inline]
6091            fn new<'a>(
6092                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6093            ) -> Self {
6094                tuple.into()
6095            }
6096            #[inline]
6097            fn tokenize(&self) -> Self::Token<'_> {
6098                (
6099                    <alloy::sol_types::sol_data::FixedBytes<
6100                        32,
6101                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6102                )
6103            }
6104            #[inline]
6105            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6106                (
6107                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6108                        ret,
6109                    ),
6110                )
6111            }
6112            #[inline]
6113            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6114                <Self::ReturnTuple<
6115                    '_,
6116                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6117                    .map(|r| {
6118                        let r: isOperationPendingReturn = r.into();
6119                        r._0
6120                    })
6121            }
6122            #[inline]
6123            fn abi_decode_returns_validate(
6124                data: &[u8],
6125            ) -> alloy_sol_types::Result<Self::Return> {
6126                <Self::ReturnTuple<
6127                    '_,
6128                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6129                    .map(|r| {
6130                        let r: isOperationPendingReturn = r.into();
6131                        r._0
6132                    })
6133            }
6134        }
6135    };
6136    #[derive(serde::Serialize, serde::Deserialize)]
6137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6138    /**Function with signature `isOperationReady(bytes32)` and selector `0x13bc9f20`.
6139```solidity
6140function isOperationReady(bytes32 id) external view returns (bool);
6141```*/
6142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6143    #[derive(Clone)]
6144    pub struct isOperationReadyCall {
6145        #[allow(missing_docs)]
6146        pub id: alloy::sol_types::private::FixedBytes<32>,
6147    }
6148    #[derive(serde::Serialize, serde::Deserialize)]
6149    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6150    ///Container type for the return parameters of the [`isOperationReady(bytes32)`](isOperationReadyCall) function.
6151    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6152    #[derive(Clone)]
6153    pub struct isOperationReadyReturn {
6154        #[allow(missing_docs)]
6155        pub _0: bool,
6156    }
6157    #[allow(
6158        non_camel_case_types,
6159        non_snake_case,
6160        clippy::pub_underscore_fields,
6161        clippy::style
6162    )]
6163    const _: () = {
6164        use alloy::sol_types as alloy_sol_types;
6165        {
6166            #[doc(hidden)]
6167            #[allow(dead_code)]
6168            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6169            #[doc(hidden)]
6170            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6171            #[cfg(test)]
6172            #[allow(dead_code, unreachable_patterns)]
6173            fn _type_assertion(
6174                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6175            ) {
6176                match _t {
6177                    alloy_sol_types::private::AssertTypeEq::<
6178                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6179                    >(_) => {}
6180                }
6181            }
6182            #[automatically_derived]
6183            #[doc(hidden)]
6184            impl ::core::convert::From<isOperationReadyCall>
6185            for UnderlyingRustTuple<'_> {
6186                fn from(value: isOperationReadyCall) -> Self {
6187                    (value.id,)
6188                }
6189            }
6190            #[automatically_derived]
6191            #[doc(hidden)]
6192            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6193            for isOperationReadyCall {
6194                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6195                    Self { id: tuple.0 }
6196                }
6197            }
6198        }
6199        {
6200            #[doc(hidden)]
6201            #[allow(dead_code)]
6202            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6203            #[doc(hidden)]
6204            type UnderlyingRustTuple<'a> = (bool,);
6205            #[cfg(test)]
6206            #[allow(dead_code, unreachable_patterns)]
6207            fn _type_assertion(
6208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6209            ) {
6210                match _t {
6211                    alloy_sol_types::private::AssertTypeEq::<
6212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6213                    >(_) => {}
6214                }
6215            }
6216            #[automatically_derived]
6217            #[doc(hidden)]
6218            impl ::core::convert::From<isOperationReadyReturn>
6219            for UnderlyingRustTuple<'_> {
6220                fn from(value: isOperationReadyReturn) -> Self {
6221                    (value._0,)
6222                }
6223            }
6224            #[automatically_derived]
6225            #[doc(hidden)]
6226            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6227            for isOperationReadyReturn {
6228                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6229                    Self { _0: tuple.0 }
6230                }
6231            }
6232        }
6233        #[automatically_derived]
6234        impl alloy_sol_types::SolCall for isOperationReadyCall {
6235            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6236            type Token<'a> = <Self::Parameters<
6237                'a,
6238            > as alloy_sol_types::SolType>::Token<'a>;
6239            type Return = bool;
6240            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6241            type ReturnToken<'a> = <Self::ReturnTuple<
6242                'a,
6243            > as alloy_sol_types::SolType>::Token<'a>;
6244            const SIGNATURE: &'static str = "isOperationReady(bytes32)";
6245            const SELECTOR: [u8; 4] = [19u8, 188u8, 159u8, 32u8];
6246            #[inline]
6247            fn new<'a>(
6248                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6249            ) -> Self {
6250                tuple.into()
6251            }
6252            #[inline]
6253            fn tokenize(&self) -> Self::Token<'_> {
6254                (
6255                    <alloy::sol_types::sol_data::FixedBytes<
6256                        32,
6257                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6258                )
6259            }
6260            #[inline]
6261            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6262                (
6263                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6264                        ret,
6265                    ),
6266                )
6267            }
6268            #[inline]
6269            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6270                <Self::ReturnTuple<
6271                    '_,
6272                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6273                    .map(|r| {
6274                        let r: isOperationReadyReturn = r.into();
6275                        r._0
6276                    })
6277            }
6278            #[inline]
6279            fn abi_decode_returns_validate(
6280                data: &[u8],
6281            ) -> alloy_sol_types::Result<Self::Return> {
6282                <Self::ReturnTuple<
6283                    '_,
6284                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6285                    .map(|r| {
6286                        let r: isOperationReadyReturn = r.into();
6287                        r._0
6288                    })
6289            }
6290        }
6291    };
6292    #[derive(serde::Serialize, serde::Deserialize)]
6293    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6294    /**Function with signature `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)` and selector `0xbc197c81`.
6295```solidity
6296function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
6297```*/
6298    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6299    #[derive(Clone)]
6300    pub struct onERC1155BatchReceivedCall {
6301        #[allow(missing_docs)]
6302        pub _0: alloy::sol_types::private::Address,
6303        #[allow(missing_docs)]
6304        pub _1: alloy::sol_types::private::Address,
6305        #[allow(missing_docs)]
6306        pub _2: alloy::sol_types::private::Vec<
6307            alloy::sol_types::private::primitives::aliases::U256,
6308        >,
6309        #[allow(missing_docs)]
6310        pub _3: alloy::sol_types::private::Vec<
6311            alloy::sol_types::private::primitives::aliases::U256,
6312        >,
6313        #[allow(missing_docs)]
6314        pub _4: alloy::sol_types::private::Bytes,
6315    }
6316    #[derive(serde::Serialize, serde::Deserialize)]
6317    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6318    ///Container type for the return parameters of the [`onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`](onERC1155BatchReceivedCall) function.
6319    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6320    #[derive(Clone)]
6321    pub struct onERC1155BatchReceivedReturn {
6322        #[allow(missing_docs)]
6323        pub _0: alloy::sol_types::private::FixedBytes<4>,
6324    }
6325    #[allow(
6326        non_camel_case_types,
6327        non_snake_case,
6328        clippy::pub_underscore_fields,
6329        clippy::style
6330    )]
6331    const _: () = {
6332        use alloy::sol_types as alloy_sol_types;
6333        {
6334            #[doc(hidden)]
6335            #[allow(dead_code)]
6336            type UnderlyingSolTuple<'a> = (
6337                alloy::sol_types::sol_data::Address,
6338                alloy::sol_types::sol_data::Address,
6339                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6340                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6341                alloy::sol_types::sol_data::Bytes,
6342            );
6343            #[doc(hidden)]
6344            type UnderlyingRustTuple<'a> = (
6345                alloy::sol_types::private::Address,
6346                alloy::sol_types::private::Address,
6347                alloy::sol_types::private::Vec<
6348                    alloy::sol_types::private::primitives::aliases::U256,
6349                >,
6350                alloy::sol_types::private::Vec<
6351                    alloy::sol_types::private::primitives::aliases::U256,
6352                >,
6353                alloy::sol_types::private::Bytes,
6354            );
6355            #[cfg(test)]
6356            #[allow(dead_code, unreachable_patterns)]
6357            fn _type_assertion(
6358                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6359            ) {
6360                match _t {
6361                    alloy_sol_types::private::AssertTypeEq::<
6362                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6363                    >(_) => {}
6364                }
6365            }
6366            #[automatically_derived]
6367            #[doc(hidden)]
6368            impl ::core::convert::From<onERC1155BatchReceivedCall>
6369            for UnderlyingRustTuple<'_> {
6370                fn from(value: onERC1155BatchReceivedCall) -> Self {
6371                    (value._0, value._1, value._2, value._3, value._4)
6372                }
6373            }
6374            #[automatically_derived]
6375            #[doc(hidden)]
6376            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6377            for onERC1155BatchReceivedCall {
6378                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6379                    Self {
6380                        _0: tuple.0,
6381                        _1: tuple.1,
6382                        _2: tuple.2,
6383                        _3: tuple.3,
6384                        _4: tuple.4,
6385                    }
6386                }
6387            }
6388        }
6389        {
6390            #[doc(hidden)]
6391            #[allow(dead_code)]
6392            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6393            #[doc(hidden)]
6394            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6395            #[cfg(test)]
6396            #[allow(dead_code, unreachable_patterns)]
6397            fn _type_assertion(
6398                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6399            ) {
6400                match _t {
6401                    alloy_sol_types::private::AssertTypeEq::<
6402                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6403                    >(_) => {}
6404                }
6405            }
6406            #[automatically_derived]
6407            #[doc(hidden)]
6408            impl ::core::convert::From<onERC1155BatchReceivedReturn>
6409            for UnderlyingRustTuple<'_> {
6410                fn from(value: onERC1155BatchReceivedReturn) -> Self {
6411                    (value._0,)
6412                }
6413            }
6414            #[automatically_derived]
6415            #[doc(hidden)]
6416            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6417            for onERC1155BatchReceivedReturn {
6418                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6419                    Self { _0: tuple.0 }
6420                }
6421            }
6422        }
6423        #[automatically_derived]
6424        impl alloy_sol_types::SolCall for onERC1155BatchReceivedCall {
6425            type Parameters<'a> = (
6426                alloy::sol_types::sol_data::Address,
6427                alloy::sol_types::sol_data::Address,
6428                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6429                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6430                alloy::sol_types::sol_data::Bytes,
6431            );
6432            type Token<'a> = <Self::Parameters<
6433                'a,
6434            > as alloy_sol_types::SolType>::Token<'a>;
6435            type Return = alloy::sol_types::private::FixedBytes<4>;
6436            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6437            type ReturnToken<'a> = <Self::ReturnTuple<
6438                'a,
6439            > as alloy_sol_types::SolType>::Token<'a>;
6440            const SIGNATURE: &'static str = "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)";
6441            const SELECTOR: [u8; 4] = [188u8, 25u8, 124u8, 129u8];
6442            #[inline]
6443            fn new<'a>(
6444                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6445            ) -> Self {
6446                tuple.into()
6447            }
6448            #[inline]
6449            fn tokenize(&self) -> Self::Token<'_> {
6450                (
6451                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6452                        &self._0,
6453                    ),
6454                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6455                        &self._1,
6456                    ),
6457                    <alloy::sol_types::sol_data::Array<
6458                        alloy::sol_types::sol_data::Uint<256>,
6459                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6460                    <alloy::sol_types::sol_data::Array<
6461                        alloy::sol_types::sol_data::Uint<256>,
6462                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6463                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6464                        &self._4,
6465                    ),
6466                )
6467            }
6468            #[inline]
6469            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6470                (
6471                    <alloy::sol_types::sol_data::FixedBytes<
6472                        4,
6473                    > as alloy_sol_types::SolType>::tokenize(ret),
6474                )
6475            }
6476            #[inline]
6477            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6478                <Self::ReturnTuple<
6479                    '_,
6480                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6481                    .map(|r| {
6482                        let r: onERC1155BatchReceivedReturn = r.into();
6483                        r._0
6484                    })
6485            }
6486            #[inline]
6487            fn abi_decode_returns_validate(
6488                data: &[u8],
6489            ) -> alloy_sol_types::Result<Self::Return> {
6490                <Self::ReturnTuple<
6491                    '_,
6492                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6493                    .map(|r| {
6494                        let r: onERC1155BatchReceivedReturn = r.into();
6495                        r._0
6496                    })
6497            }
6498        }
6499    };
6500    #[derive(serde::Serialize, serde::Deserialize)]
6501    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6502    /**Function with signature `onERC1155Received(address,address,uint256,uint256,bytes)` and selector `0xf23a6e61`.
6503```solidity
6504function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
6505```*/
6506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6507    #[derive(Clone)]
6508    pub struct onERC1155ReceivedCall {
6509        #[allow(missing_docs)]
6510        pub _0: alloy::sol_types::private::Address,
6511        #[allow(missing_docs)]
6512        pub _1: alloy::sol_types::private::Address,
6513        #[allow(missing_docs)]
6514        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6515        #[allow(missing_docs)]
6516        pub _3: alloy::sol_types::private::primitives::aliases::U256,
6517        #[allow(missing_docs)]
6518        pub _4: alloy::sol_types::private::Bytes,
6519    }
6520    #[derive(serde::Serialize, serde::Deserialize)]
6521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6522    ///Container type for the return parameters of the [`onERC1155Received(address,address,uint256,uint256,bytes)`](onERC1155ReceivedCall) function.
6523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6524    #[derive(Clone)]
6525    pub struct onERC1155ReceivedReturn {
6526        #[allow(missing_docs)]
6527        pub _0: alloy::sol_types::private::FixedBytes<4>,
6528    }
6529    #[allow(
6530        non_camel_case_types,
6531        non_snake_case,
6532        clippy::pub_underscore_fields,
6533        clippy::style
6534    )]
6535    const _: () = {
6536        use alloy::sol_types as alloy_sol_types;
6537        {
6538            #[doc(hidden)]
6539            #[allow(dead_code)]
6540            type UnderlyingSolTuple<'a> = (
6541                alloy::sol_types::sol_data::Address,
6542                alloy::sol_types::sol_data::Address,
6543                alloy::sol_types::sol_data::Uint<256>,
6544                alloy::sol_types::sol_data::Uint<256>,
6545                alloy::sol_types::sol_data::Bytes,
6546            );
6547            #[doc(hidden)]
6548            type UnderlyingRustTuple<'a> = (
6549                alloy::sol_types::private::Address,
6550                alloy::sol_types::private::Address,
6551                alloy::sol_types::private::primitives::aliases::U256,
6552                alloy::sol_types::private::primitives::aliases::U256,
6553                alloy::sol_types::private::Bytes,
6554            );
6555            #[cfg(test)]
6556            #[allow(dead_code, unreachable_patterns)]
6557            fn _type_assertion(
6558                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6559            ) {
6560                match _t {
6561                    alloy_sol_types::private::AssertTypeEq::<
6562                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6563                    >(_) => {}
6564                }
6565            }
6566            #[automatically_derived]
6567            #[doc(hidden)]
6568            impl ::core::convert::From<onERC1155ReceivedCall>
6569            for UnderlyingRustTuple<'_> {
6570                fn from(value: onERC1155ReceivedCall) -> Self {
6571                    (value._0, value._1, value._2, value._3, value._4)
6572                }
6573            }
6574            #[automatically_derived]
6575            #[doc(hidden)]
6576            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6577            for onERC1155ReceivedCall {
6578                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6579                    Self {
6580                        _0: tuple.0,
6581                        _1: tuple.1,
6582                        _2: tuple.2,
6583                        _3: tuple.3,
6584                        _4: tuple.4,
6585                    }
6586                }
6587            }
6588        }
6589        {
6590            #[doc(hidden)]
6591            #[allow(dead_code)]
6592            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6593            #[doc(hidden)]
6594            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6595            #[cfg(test)]
6596            #[allow(dead_code, unreachable_patterns)]
6597            fn _type_assertion(
6598                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6599            ) {
6600                match _t {
6601                    alloy_sol_types::private::AssertTypeEq::<
6602                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6603                    >(_) => {}
6604                }
6605            }
6606            #[automatically_derived]
6607            #[doc(hidden)]
6608            impl ::core::convert::From<onERC1155ReceivedReturn>
6609            for UnderlyingRustTuple<'_> {
6610                fn from(value: onERC1155ReceivedReturn) -> Self {
6611                    (value._0,)
6612                }
6613            }
6614            #[automatically_derived]
6615            #[doc(hidden)]
6616            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6617            for onERC1155ReceivedReturn {
6618                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6619                    Self { _0: tuple.0 }
6620                }
6621            }
6622        }
6623        #[automatically_derived]
6624        impl alloy_sol_types::SolCall for onERC1155ReceivedCall {
6625            type Parameters<'a> = (
6626                alloy::sol_types::sol_data::Address,
6627                alloy::sol_types::sol_data::Address,
6628                alloy::sol_types::sol_data::Uint<256>,
6629                alloy::sol_types::sol_data::Uint<256>,
6630                alloy::sol_types::sol_data::Bytes,
6631            );
6632            type Token<'a> = <Self::Parameters<
6633                'a,
6634            > as alloy_sol_types::SolType>::Token<'a>;
6635            type Return = alloy::sol_types::private::FixedBytes<4>;
6636            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6637            type ReturnToken<'a> = <Self::ReturnTuple<
6638                'a,
6639            > as alloy_sol_types::SolType>::Token<'a>;
6640            const SIGNATURE: &'static str = "onERC1155Received(address,address,uint256,uint256,bytes)";
6641            const SELECTOR: [u8; 4] = [242u8, 58u8, 110u8, 97u8];
6642            #[inline]
6643            fn new<'a>(
6644                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6645            ) -> Self {
6646                tuple.into()
6647            }
6648            #[inline]
6649            fn tokenize(&self) -> Self::Token<'_> {
6650                (
6651                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6652                        &self._0,
6653                    ),
6654                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6655                        &self._1,
6656                    ),
6657                    <alloy::sol_types::sol_data::Uint<
6658                        256,
6659                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6660                    <alloy::sol_types::sol_data::Uint<
6661                        256,
6662                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6663                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6664                        &self._4,
6665                    ),
6666                )
6667            }
6668            #[inline]
6669            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6670                (
6671                    <alloy::sol_types::sol_data::FixedBytes<
6672                        4,
6673                    > as alloy_sol_types::SolType>::tokenize(ret),
6674                )
6675            }
6676            #[inline]
6677            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6678                <Self::ReturnTuple<
6679                    '_,
6680                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6681                    .map(|r| {
6682                        let r: onERC1155ReceivedReturn = r.into();
6683                        r._0
6684                    })
6685            }
6686            #[inline]
6687            fn abi_decode_returns_validate(
6688                data: &[u8],
6689            ) -> alloy_sol_types::Result<Self::Return> {
6690                <Self::ReturnTuple<
6691                    '_,
6692                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6693                    .map(|r| {
6694                        let r: onERC1155ReceivedReturn = r.into();
6695                        r._0
6696                    })
6697            }
6698        }
6699    };
6700    #[derive(serde::Serialize, serde::Deserialize)]
6701    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6702    /**Function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`.
6703```solidity
6704function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
6705```*/
6706    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6707    #[derive(Clone)]
6708    pub struct onERC721ReceivedCall {
6709        #[allow(missing_docs)]
6710        pub _0: alloy::sol_types::private::Address,
6711        #[allow(missing_docs)]
6712        pub _1: alloy::sol_types::private::Address,
6713        #[allow(missing_docs)]
6714        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6715        #[allow(missing_docs)]
6716        pub _3: alloy::sol_types::private::Bytes,
6717    }
6718    #[derive(serde::Serialize, serde::Deserialize)]
6719    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6720    ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function.
6721    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6722    #[derive(Clone)]
6723    pub struct onERC721ReceivedReturn {
6724        #[allow(missing_docs)]
6725        pub _0: alloy::sol_types::private::FixedBytes<4>,
6726    }
6727    #[allow(
6728        non_camel_case_types,
6729        non_snake_case,
6730        clippy::pub_underscore_fields,
6731        clippy::style
6732    )]
6733    const _: () = {
6734        use alloy::sol_types as alloy_sol_types;
6735        {
6736            #[doc(hidden)]
6737            #[allow(dead_code)]
6738            type UnderlyingSolTuple<'a> = (
6739                alloy::sol_types::sol_data::Address,
6740                alloy::sol_types::sol_data::Address,
6741                alloy::sol_types::sol_data::Uint<256>,
6742                alloy::sol_types::sol_data::Bytes,
6743            );
6744            #[doc(hidden)]
6745            type UnderlyingRustTuple<'a> = (
6746                alloy::sol_types::private::Address,
6747                alloy::sol_types::private::Address,
6748                alloy::sol_types::private::primitives::aliases::U256,
6749                alloy::sol_types::private::Bytes,
6750            );
6751            #[cfg(test)]
6752            #[allow(dead_code, unreachable_patterns)]
6753            fn _type_assertion(
6754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6755            ) {
6756                match _t {
6757                    alloy_sol_types::private::AssertTypeEq::<
6758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6759                    >(_) => {}
6760                }
6761            }
6762            #[automatically_derived]
6763            #[doc(hidden)]
6764            impl ::core::convert::From<onERC721ReceivedCall>
6765            for UnderlyingRustTuple<'_> {
6766                fn from(value: onERC721ReceivedCall) -> Self {
6767                    (value._0, value._1, value._2, value._3)
6768                }
6769            }
6770            #[automatically_derived]
6771            #[doc(hidden)]
6772            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6773            for onERC721ReceivedCall {
6774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6775                    Self {
6776                        _0: tuple.0,
6777                        _1: tuple.1,
6778                        _2: tuple.2,
6779                        _3: tuple.3,
6780                    }
6781                }
6782            }
6783        }
6784        {
6785            #[doc(hidden)]
6786            #[allow(dead_code)]
6787            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6788            #[doc(hidden)]
6789            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6790            #[cfg(test)]
6791            #[allow(dead_code, unreachable_patterns)]
6792            fn _type_assertion(
6793                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6794            ) {
6795                match _t {
6796                    alloy_sol_types::private::AssertTypeEq::<
6797                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6798                    >(_) => {}
6799                }
6800            }
6801            #[automatically_derived]
6802            #[doc(hidden)]
6803            impl ::core::convert::From<onERC721ReceivedReturn>
6804            for UnderlyingRustTuple<'_> {
6805                fn from(value: onERC721ReceivedReturn) -> Self {
6806                    (value._0,)
6807                }
6808            }
6809            #[automatically_derived]
6810            #[doc(hidden)]
6811            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6812            for onERC721ReceivedReturn {
6813                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6814                    Self { _0: tuple.0 }
6815                }
6816            }
6817        }
6818        #[automatically_derived]
6819        impl alloy_sol_types::SolCall for onERC721ReceivedCall {
6820            type Parameters<'a> = (
6821                alloy::sol_types::sol_data::Address,
6822                alloy::sol_types::sol_data::Address,
6823                alloy::sol_types::sol_data::Uint<256>,
6824                alloy::sol_types::sol_data::Bytes,
6825            );
6826            type Token<'a> = <Self::Parameters<
6827                'a,
6828            > as alloy_sol_types::SolType>::Token<'a>;
6829            type Return = alloy::sol_types::private::FixedBytes<4>;
6830            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6831            type ReturnToken<'a> = <Self::ReturnTuple<
6832                'a,
6833            > as alloy_sol_types::SolType>::Token<'a>;
6834            const SIGNATURE: &'static str = "onERC721Received(address,address,uint256,bytes)";
6835            const SELECTOR: [u8; 4] = [21u8, 11u8, 122u8, 2u8];
6836            #[inline]
6837            fn new<'a>(
6838                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6839            ) -> Self {
6840                tuple.into()
6841            }
6842            #[inline]
6843            fn tokenize(&self) -> Self::Token<'_> {
6844                (
6845                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6846                        &self._0,
6847                    ),
6848                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6849                        &self._1,
6850                    ),
6851                    <alloy::sol_types::sol_data::Uint<
6852                        256,
6853                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6854                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6855                        &self._3,
6856                    ),
6857                )
6858            }
6859            #[inline]
6860            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6861                (
6862                    <alloy::sol_types::sol_data::FixedBytes<
6863                        4,
6864                    > as alloy_sol_types::SolType>::tokenize(ret),
6865                )
6866            }
6867            #[inline]
6868            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6869                <Self::ReturnTuple<
6870                    '_,
6871                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6872                    .map(|r| {
6873                        let r: onERC721ReceivedReturn = r.into();
6874                        r._0
6875                    })
6876            }
6877            #[inline]
6878            fn abi_decode_returns_validate(
6879                data: &[u8],
6880            ) -> alloy_sol_types::Result<Self::Return> {
6881                <Self::ReturnTuple<
6882                    '_,
6883                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6884                    .map(|r| {
6885                        let r: onERC721ReceivedReturn = r.into();
6886                        r._0
6887                    })
6888            }
6889        }
6890    };
6891    #[derive(serde::Serialize, serde::Deserialize)]
6892    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6893    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
6894```solidity
6895function renounceRole(bytes32 role, address callerConfirmation) external;
6896```*/
6897    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6898    #[derive(Clone)]
6899    pub struct renounceRoleCall {
6900        #[allow(missing_docs)]
6901        pub role: alloy::sol_types::private::FixedBytes<32>,
6902        #[allow(missing_docs)]
6903        pub callerConfirmation: alloy::sol_types::private::Address,
6904    }
6905    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
6906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6907    #[derive(Clone)]
6908    pub struct renounceRoleReturn {}
6909    #[allow(
6910        non_camel_case_types,
6911        non_snake_case,
6912        clippy::pub_underscore_fields,
6913        clippy::style
6914    )]
6915    const _: () = {
6916        use alloy::sol_types as alloy_sol_types;
6917        {
6918            #[doc(hidden)]
6919            #[allow(dead_code)]
6920            type UnderlyingSolTuple<'a> = (
6921                alloy::sol_types::sol_data::FixedBytes<32>,
6922                alloy::sol_types::sol_data::Address,
6923            );
6924            #[doc(hidden)]
6925            type UnderlyingRustTuple<'a> = (
6926                alloy::sol_types::private::FixedBytes<32>,
6927                alloy::sol_types::private::Address,
6928            );
6929            #[cfg(test)]
6930            #[allow(dead_code, unreachable_patterns)]
6931            fn _type_assertion(
6932                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6933            ) {
6934                match _t {
6935                    alloy_sol_types::private::AssertTypeEq::<
6936                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6937                    >(_) => {}
6938                }
6939            }
6940            #[automatically_derived]
6941            #[doc(hidden)]
6942            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
6943                fn from(value: renounceRoleCall) -> Self {
6944                    (value.role, value.callerConfirmation)
6945                }
6946            }
6947            #[automatically_derived]
6948            #[doc(hidden)]
6949            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
6950                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6951                    Self {
6952                        role: tuple.0,
6953                        callerConfirmation: tuple.1,
6954                    }
6955                }
6956            }
6957        }
6958        {
6959            #[doc(hidden)]
6960            #[allow(dead_code)]
6961            type UnderlyingSolTuple<'a> = ();
6962            #[doc(hidden)]
6963            type UnderlyingRustTuple<'a> = ();
6964            #[cfg(test)]
6965            #[allow(dead_code, unreachable_patterns)]
6966            fn _type_assertion(
6967                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6968            ) {
6969                match _t {
6970                    alloy_sol_types::private::AssertTypeEq::<
6971                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6972                    >(_) => {}
6973                }
6974            }
6975            #[automatically_derived]
6976            #[doc(hidden)]
6977            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
6978                fn from(value: renounceRoleReturn) -> Self {
6979                    ()
6980                }
6981            }
6982            #[automatically_derived]
6983            #[doc(hidden)]
6984            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
6985                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6986                    Self {}
6987                }
6988            }
6989        }
6990        impl renounceRoleReturn {
6991            fn _tokenize(
6992                &self,
6993            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6994                ()
6995            }
6996        }
6997        #[automatically_derived]
6998        impl alloy_sol_types::SolCall for renounceRoleCall {
6999            type Parameters<'a> = (
7000                alloy::sol_types::sol_data::FixedBytes<32>,
7001                alloy::sol_types::sol_data::Address,
7002            );
7003            type Token<'a> = <Self::Parameters<
7004                'a,
7005            > as alloy_sol_types::SolType>::Token<'a>;
7006            type Return = renounceRoleReturn;
7007            type ReturnTuple<'a> = ();
7008            type ReturnToken<'a> = <Self::ReturnTuple<
7009                'a,
7010            > as alloy_sol_types::SolType>::Token<'a>;
7011            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
7012            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
7013            #[inline]
7014            fn new<'a>(
7015                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7016            ) -> Self {
7017                tuple.into()
7018            }
7019            #[inline]
7020            fn tokenize(&self) -> Self::Token<'_> {
7021                (
7022                    <alloy::sol_types::sol_data::FixedBytes<
7023                        32,
7024                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7025                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7026                        &self.callerConfirmation,
7027                    ),
7028                )
7029            }
7030            #[inline]
7031            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7032                renounceRoleReturn::_tokenize(ret)
7033            }
7034            #[inline]
7035            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7036                <Self::ReturnTuple<
7037                    '_,
7038                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7039                    .map(Into::into)
7040            }
7041            #[inline]
7042            fn abi_decode_returns_validate(
7043                data: &[u8],
7044            ) -> alloy_sol_types::Result<Self::Return> {
7045                <Self::ReturnTuple<
7046                    '_,
7047                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7048                    .map(Into::into)
7049            }
7050        }
7051    };
7052    #[derive(serde::Serialize, serde::Deserialize)]
7053    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7054    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
7055```solidity
7056function revokeRole(bytes32 role, address account) external;
7057```*/
7058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7059    #[derive(Clone)]
7060    pub struct revokeRoleCall {
7061        #[allow(missing_docs)]
7062        pub role: alloy::sol_types::private::FixedBytes<32>,
7063        #[allow(missing_docs)]
7064        pub account: alloy::sol_types::private::Address,
7065    }
7066    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
7067    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7068    #[derive(Clone)]
7069    pub struct revokeRoleReturn {}
7070    #[allow(
7071        non_camel_case_types,
7072        non_snake_case,
7073        clippy::pub_underscore_fields,
7074        clippy::style
7075    )]
7076    const _: () = {
7077        use alloy::sol_types as alloy_sol_types;
7078        {
7079            #[doc(hidden)]
7080            #[allow(dead_code)]
7081            type UnderlyingSolTuple<'a> = (
7082                alloy::sol_types::sol_data::FixedBytes<32>,
7083                alloy::sol_types::sol_data::Address,
7084            );
7085            #[doc(hidden)]
7086            type UnderlyingRustTuple<'a> = (
7087                alloy::sol_types::private::FixedBytes<32>,
7088                alloy::sol_types::private::Address,
7089            );
7090            #[cfg(test)]
7091            #[allow(dead_code, unreachable_patterns)]
7092            fn _type_assertion(
7093                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7094            ) {
7095                match _t {
7096                    alloy_sol_types::private::AssertTypeEq::<
7097                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7098                    >(_) => {}
7099                }
7100            }
7101            #[automatically_derived]
7102            #[doc(hidden)]
7103            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
7104                fn from(value: revokeRoleCall) -> Self {
7105                    (value.role, value.account)
7106                }
7107            }
7108            #[automatically_derived]
7109            #[doc(hidden)]
7110            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
7111                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7112                    Self {
7113                        role: tuple.0,
7114                        account: tuple.1,
7115                    }
7116                }
7117            }
7118        }
7119        {
7120            #[doc(hidden)]
7121            #[allow(dead_code)]
7122            type UnderlyingSolTuple<'a> = ();
7123            #[doc(hidden)]
7124            type UnderlyingRustTuple<'a> = ();
7125            #[cfg(test)]
7126            #[allow(dead_code, unreachable_patterns)]
7127            fn _type_assertion(
7128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7129            ) {
7130                match _t {
7131                    alloy_sol_types::private::AssertTypeEq::<
7132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7133                    >(_) => {}
7134                }
7135            }
7136            #[automatically_derived]
7137            #[doc(hidden)]
7138            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
7139                fn from(value: revokeRoleReturn) -> Self {
7140                    ()
7141                }
7142            }
7143            #[automatically_derived]
7144            #[doc(hidden)]
7145            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
7146                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7147                    Self {}
7148                }
7149            }
7150        }
7151        impl revokeRoleReturn {
7152            fn _tokenize(
7153                &self,
7154            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7155                ()
7156            }
7157        }
7158        #[automatically_derived]
7159        impl alloy_sol_types::SolCall for revokeRoleCall {
7160            type Parameters<'a> = (
7161                alloy::sol_types::sol_data::FixedBytes<32>,
7162                alloy::sol_types::sol_data::Address,
7163            );
7164            type Token<'a> = <Self::Parameters<
7165                'a,
7166            > as alloy_sol_types::SolType>::Token<'a>;
7167            type Return = revokeRoleReturn;
7168            type ReturnTuple<'a> = ();
7169            type ReturnToken<'a> = <Self::ReturnTuple<
7170                'a,
7171            > as alloy_sol_types::SolType>::Token<'a>;
7172            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
7173            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
7174            #[inline]
7175            fn new<'a>(
7176                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7177            ) -> Self {
7178                tuple.into()
7179            }
7180            #[inline]
7181            fn tokenize(&self) -> Self::Token<'_> {
7182                (
7183                    <alloy::sol_types::sol_data::FixedBytes<
7184                        32,
7185                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7186                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7187                        &self.account,
7188                    ),
7189                )
7190            }
7191            #[inline]
7192            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7193                revokeRoleReturn::_tokenize(ret)
7194            }
7195            #[inline]
7196            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7197                <Self::ReturnTuple<
7198                    '_,
7199                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7200                    .map(Into::into)
7201            }
7202            #[inline]
7203            fn abi_decode_returns_validate(
7204                data: &[u8],
7205            ) -> alloy_sol_types::Result<Self::Return> {
7206                <Self::ReturnTuple<
7207                    '_,
7208                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7209                    .map(Into::into)
7210            }
7211        }
7212    };
7213    #[derive(serde::Serialize, serde::Deserialize)]
7214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7215    /**Function with signature `schedule(address,uint256,bytes,bytes32,bytes32,uint256)` and selector `0x01d5062a`.
7216```solidity
7217function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7218```*/
7219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7220    #[derive(Clone)]
7221    pub struct scheduleCall {
7222        #[allow(missing_docs)]
7223        pub target: alloy::sol_types::private::Address,
7224        #[allow(missing_docs)]
7225        pub value: alloy::sol_types::private::primitives::aliases::U256,
7226        #[allow(missing_docs)]
7227        pub data: alloy::sol_types::private::Bytes,
7228        #[allow(missing_docs)]
7229        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7230        #[allow(missing_docs)]
7231        pub salt: alloy::sol_types::private::FixedBytes<32>,
7232        #[allow(missing_docs)]
7233        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7234    }
7235    ///Container type for the return parameters of the [`schedule(address,uint256,bytes,bytes32,bytes32,uint256)`](scheduleCall) function.
7236    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7237    #[derive(Clone)]
7238    pub struct scheduleReturn {}
7239    #[allow(
7240        non_camel_case_types,
7241        non_snake_case,
7242        clippy::pub_underscore_fields,
7243        clippy::style
7244    )]
7245    const _: () = {
7246        use alloy::sol_types as alloy_sol_types;
7247        {
7248            #[doc(hidden)]
7249            #[allow(dead_code)]
7250            type UnderlyingSolTuple<'a> = (
7251                alloy::sol_types::sol_data::Address,
7252                alloy::sol_types::sol_data::Uint<256>,
7253                alloy::sol_types::sol_data::Bytes,
7254                alloy::sol_types::sol_data::FixedBytes<32>,
7255                alloy::sol_types::sol_data::FixedBytes<32>,
7256                alloy::sol_types::sol_data::Uint<256>,
7257            );
7258            #[doc(hidden)]
7259            type UnderlyingRustTuple<'a> = (
7260                alloy::sol_types::private::Address,
7261                alloy::sol_types::private::primitives::aliases::U256,
7262                alloy::sol_types::private::Bytes,
7263                alloy::sol_types::private::FixedBytes<32>,
7264                alloy::sol_types::private::FixedBytes<32>,
7265                alloy::sol_types::private::primitives::aliases::U256,
7266            );
7267            #[cfg(test)]
7268            #[allow(dead_code, unreachable_patterns)]
7269            fn _type_assertion(
7270                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7271            ) {
7272                match _t {
7273                    alloy_sol_types::private::AssertTypeEq::<
7274                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7275                    >(_) => {}
7276                }
7277            }
7278            #[automatically_derived]
7279            #[doc(hidden)]
7280            impl ::core::convert::From<scheduleCall> for UnderlyingRustTuple<'_> {
7281                fn from(value: scheduleCall) -> Self {
7282                    (
7283                        value.target,
7284                        value.value,
7285                        value.data,
7286                        value.predecessor,
7287                        value.salt,
7288                        value.delay,
7289                    )
7290                }
7291            }
7292            #[automatically_derived]
7293            #[doc(hidden)]
7294            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleCall {
7295                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7296                    Self {
7297                        target: tuple.0,
7298                        value: tuple.1,
7299                        data: tuple.2,
7300                        predecessor: tuple.3,
7301                        salt: tuple.4,
7302                        delay: tuple.5,
7303                    }
7304                }
7305            }
7306        }
7307        {
7308            #[doc(hidden)]
7309            #[allow(dead_code)]
7310            type UnderlyingSolTuple<'a> = ();
7311            #[doc(hidden)]
7312            type UnderlyingRustTuple<'a> = ();
7313            #[cfg(test)]
7314            #[allow(dead_code, unreachable_patterns)]
7315            fn _type_assertion(
7316                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7317            ) {
7318                match _t {
7319                    alloy_sol_types::private::AssertTypeEq::<
7320                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7321                    >(_) => {}
7322                }
7323            }
7324            #[automatically_derived]
7325            #[doc(hidden)]
7326            impl ::core::convert::From<scheduleReturn> for UnderlyingRustTuple<'_> {
7327                fn from(value: scheduleReturn) -> Self {
7328                    ()
7329                }
7330            }
7331            #[automatically_derived]
7332            #[doc(hidden)]
7333            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleReturn {
7334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7335                    Self {}
7336                }
7337            }
7338        }
7339        impl scheduleReturn {
7340            fn _tokenize(
7341                &self,
7342            ) -> <scheduleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7343                ()
7344            }
7345        }
7346        #[automatically_derived]
7347        impl alloy_sol_types::SolCall for scheduleCall {
7348            type Parameters<'a> = (
7349                alloy::sol_types::sol_data::Address,
7350                alloy::sol_types::sol_data::Uint<256>,
7351                alloy::sol_types::sol_data::Bytes,
7352                alloy::sol_types::sol_data::FixedBytes<32>,
7353                alloy::sol_types::sol_data::FixedBytes<32>,
7354                alloy::sol_types::sol_data::Uint<256>,
7355            );
7356            type Token<'a> = <Self::Parameters<
7357                'a,
7358            > as alloy_sol_types::SolType>::Token<'a>;
7359            type Return = scheduleReturn;
7360            type ReturnTuple<'a> = ();
7361            type ReturnToken<'a> = <Self::ReturnTuple<
7362                'a,
7363            > as alloy_sol_types::SolType>::Token<'a>;
7364            const SIGNATURE: &'static str = "schedule(address,uint256,bytes,bytes32,bytes32,uint256)";
7365            const SELECTOR: [u8; 4] = [1u8, 213u8, 6u8, 42u8];
7366            #[inline]
7367            fn new<'a>(
7368                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7369            ) -> Self {
7370                tuple.into()
7371            }
7372            #[inline]
7373            fn tokenize(&self) -> Self::Token<'_> {
7374                (
7375                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7376                        &self.target,
7377                    ),
7378                    <alloy::sol_types::sol_data::Uint<
7379                        256,
7380                    > as alloy_sol_types::SolType>::tokenize(&self.value),
7381                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7382                        &self.data,
7383                    ),
7384                    <alloy::sol_types::sol_data::FixedBytes<
7385                        32,
7386                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7387                    <alloy::sol_types::sol_data::FixedBytes<
7388                        32,
7389                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7390                    <alloy::sol_types::sol_data::Uint<
7391                        256,
7392                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7393                )
7394            }
7395            #[inline]
7396            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7397                scheduleReturn::_tokenize(ret)
7398            }
7399            #[inline]
7400            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7401                <Self::ReturnTuple<
7402                    '_,
7403                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7404                    .map(Into::into)
7405            }
7406            #[inline]
7407            fn abi_decode_returns_validate(
7408                data: &[u8],
7409            ) -> alloy_sol_types::Result<Self::Return> {
7410                <Self::ReturnTuple<
7411                    '_,
7412                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7413                    .map(Into::into)
7414            }
7415        }
7416    };
7417    #[derive(serde::Serialize, serde::Deserialize)]
7418    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7419    /**Function with signature `scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)` and selector `0x8f2a0bb0`.
7420```solidity
7421function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7422```*/
7423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7424    #[derive(Clone)]
7425    pub struct scheduleBatchCall {
7426        #[allow(missing_docs)]
7427        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7428        #[allow(missing_docs)]
7429        pub values: alloy::sol_types::private::Vec<
7430            alloy::sol_types::private::primitives::aliases::U256,
7431        >,
7432        #[allow(missing_docs)]
7433        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7434        #[allow(missing_docs)]
7435        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7436        #[allow(missing_docs)]
7437        pub salt: alloy::sol_types::private::FixedBytes<32>,
7438        #[allow(missing_docs)]
7439        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7440    }
7441    ///Container type for the return parameters of the [`scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)`](scheduleBatchCall) function.
7442    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7443    #[derive(Clone)]
7444    pub struct scheduleBatchReturn {}
7445    #[allow(
7446        non_camel_case_types,
7447        non_snake_case,
7448        clippy::pub_underscore_fields,
7449        clippy::style
7450    )]
7451    const _: () = {
7452        use alloy::sol_types as alloy_sol_types;
7453        {
7454            #[doc(hidden)]
7455            #[allow(dead_code)]
7456            type UnderlyingSolTuple<'a> = (
7457                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7458                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7459                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7460                alloy::sol_types::sol_data::FixedBytes<32>,
7461                alloy::sol_types::sol_data::FixedBytes<32>,
7462                alloy::sol_types::sol_data::Uint<256>,
7463            );
7464            #[doc(hidden)]
7465            type UnderlyingRustTuple<'a> = (
7466                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7467                alloy::sol_types::private::Vec<
7468                    alloy::sol_types::private::primitives::aliases::U256,
7469                >,
7470                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7471                alloy::sol_types::private::FixedBytes<32>,
7472                alloy::sol_types::private::FixedBytes<32>,
7473                alloy::sol_types::private::primitives::aliases::U256,
7474            );
7475            #[cfg(test)]
7476            #[allow(dead_code, unreachable_patterns)]
7477            fn _type_assertion(
7478                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7479            ) {
7480                match _t {
7481                    alloy_sol_types::private::AssertTypeEq::<
7482                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7483                    >(_) => {}
7484                }
7485            }
7486            #[automatically_derived]
7487            #[doc(hidden)]
7488            impl ::core::convert::From<scheduleBatchCall> for UnderlyingRustTuple<'_> {
7489                fn from(value: scheduleBatchCall) -> Self {
7490                    (
7491                        value.targets,
7492                        value.values,
7493                        value.payloads,
7494                        value.predecessor,
7495                        value.salt,
7496                        value.delay,
7497                    )
7498                }
7499            }
7500            #[automatically_derived]
7501            #[doc(hidden)]
7502            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchCall {
7503                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7504                    Self {
7505                        targets: tuple.0,
7506                        values: tuple.1,
7507                        payloads: tuple.2,
7508                        predecessor: tuple.3,
7509                        salt: tuple.4,
7510                        delay: tuple.5,
7511                    }
7512                }
7513            }
7514        }
7515        {
7516            #[doc(hidden)]
7517            #[allow(dead_code)]
7518            type UnderlyingSolTuple<'a> = ();
7519            #[doc(hidden)]
7520            type UnderlyingRustTuple<'a> = ();
7521            #[cfg(test)]
7522            #[allow(dead_code, unreachable_patterns)]
7523            fn _type_assertion(
7524                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7525            ) {
7526                match _t {
7527                    alloy_sol_types::private::AssertTypeEq::<
7528                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7529                    >(_) => {}
7530                }
7531            }
7532            #[automatically_derived]
7533            #[doc(hidden)]
7534            impl ::core::convert::From<scheduleBatchReturn> for UnderlyingRustTuple<'_> {
7535                fn from(value: scheduleBatchReturn) -> Self {
7536                    ()
7537                }
7538            }
7539            #[automatically_derived]
7540            #[doc(hidden)]
7541            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchReturn {
7542                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7543                    Self {}
7544                }
7545            }
7546        }
7547        impl scheduleBatchReturn {
7548            fn _tokenize(
7549                &self,
7550            ) -> <scheduleBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7551                ()
7552            }
7553        }
7554        #[automatically_derived]
7555        impl alloy_sol_types::SolCall for scheduleBatchCall {
7556            type Parameters<'a> = (
7557                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7558                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7559                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7560                alloy::sol_types::sol_data::FixedBytes<32>,
7561                alloy::sol_types::sol_data::FixedBytes<32>,
7562                alloy::sol_types::sol_data::Uint<256>,
7563            );
7564            type Token<'a> = <Self::Parameters<
7565                'a,
7566            > as alloy_sol_types::SolType>::Token<'a>;
7567            type Return = scheduleBatchReturn;
7568            type ReturnTuple<'a> = ();
7569            type ReturnToken<'a> = <Self::ReturnTuple<
7570                'a,
7571            > as alloy_sol_types::SolType>::Token<'a>;
7572            const SIGNATURE: &'static str = "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)";
7573            const SELECTOR: [u8; 4] = [143u8, 42u8, 11u8, 176u8];
7574            #[inline]
7575            fn new<'a>(
7576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7577            ) -> Self {
7578                tuple.into()
7579            }
7580            #[inline]
7581            fn tokenize(&self) -> Self::Token<'_> {
7582                (
7583                    <alloy::sol_types::sol_data::Array<
7584                        alloy::sol_types::sol_data::Address,
7585                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
7586                    <alloy::sol_types::sol_data::Array<
7587                        alloy::sol_types::sol_data::Uint<256>,
7588                    > as alloy_sol_types::SolType>::tokenize(&self.values),
7589                    <alloy::sol_types::sol_data::Array<
7590                        alloy::sol_types::sol_data::Bytes,
7591                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
7592                    <alloy::sol_types::sol_data::FixedBytes<
7593                        32,
7594                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7595                    <alloy::sol_types::sol_data::FixedBytes<
7596                        32,
7597                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7598                    <alloy::sol_types::sol_data::Uint<
7599                        256,
7600                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7601                )
7602            }
7603            #[inline]
7604            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7605                scheduleBatchReturn::_tokenize(ret)
7606            }
7607            #[inline]
7608            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7609                <Self::ReturnTuple<
7610                    '_,
7611                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7612                    .map(Into::into)
7613            }
7614            #[inline]
7615            fn abi_decode_returns_validate(
7616                data: &[u8],
7617            ) -> alloy_sol_types::Result<Self::Return> {
7618                <Self::ReturnTuple<
7619                    '_,
7620                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7621                    .map(Into::into)
7622            }
7623        }
7624    };
7625    #[derive(serde::Serialize, serde::Deserialize)]
7626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7627    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
7628```solidity
7629function supportsInterface(bytes4 interfaceId) external view returns (bool);
7630```*/
7631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7632    #[derive(Clone)]
7633    pub struct supportsInterfaceCall {
7634        #[allow(missing_docs)]
7635        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
7636    }
7637    #[derive(serde::Serialize, serde::Deserialize)]
7638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7639    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
7640    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7641    #[derive(Clone)]
7642    pub struct supportsInterfaceReturn {
7643        #[allow(missing_docs)]
7644        pub _0: bool,
7645    }
7646    #[allow(
7647        non_camel_case_types,
7648        non_snake_case,
7649        clippy::pub_underscore_fields,
7650        clippy::style
7651    )]
7652    const _: () = {
7653        use alloy::sol_types as alloy_sol_types;
7654        {
7655            #[doc(hidden)]
7656            #[allow(dead_code)]
7657            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7658            #[doc(hidden)]
7659            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
7660            #[cfg(test)]
7661            #[allow(dead_code, unreachable_patterns)]
7662            fn _type_assertion(
7663                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7664            ) {
7665                match _t {
7666                    alloy_sol_types::private::AssertTypeEq::<
7667                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7668                    >(_) => {}
7669                }
7670            }
7671            #[automatically_derived]
7672            #[doc(hidden)]
7673            impl ::core::convert::From<supportsInterfaceCall>
7674            for UnderlyingRustTuple<'_> {
7675                fn from(value: supportsInterfaceCall) -> Self {
7676                    (value.interfaceId,)
7677                }
7678            }
7679            #[automatically_derived]
7680            #[doc(hidden)]
7681            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7682            for supportsInterfaceCall {
7683                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7684                    Self { interfaceId: tuple.0 }
7685                }
7686            }
7687        }
7688        {
7689            #[doc(hidden)]
7690            #[allow(dead_code)]
7691            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7692            #[doc(hidden)]
7693            type UnderlyingRustTuple<'a> = (bool,);
7694            #[cfg(test)]
7695            #[allow(dead_code, unreachable_patterns)]
7696            fn _type_assertion(
7697                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7698            ) {
7699                match _t {
7700                    alloy_sol_types::private::AssertTypeEq::<
7701                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7702                    >(_) => {}
7703                }
7704            }
7705            #[automatically_derived]
7706            #[doc(hidden)]
7707            impl ::core::convert::From<supportsInterfaceReturn>
7708            for UnderlyingRustTuple<'_> {
7709                fn from(value: supportsInterfaceReturn) -> Self {
7710                    (value._0,)
7711                }
7712            }
7713            #[automatically_derived]
7714            #[doc(hidden)]
7715            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7716            for supportsInterfaceReturn {
7717                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7718                    Self { _0: tuple.0 }
7719                }
7720            }
7721        }
7722        #[automatically_derived]
7723        impl alloy_sol_types::SolCall for supportsInterfaceCall {
7724            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7725            type Token<'a> = <Self::Parameters<
7726                'a,
7727            > as alloy_sol_types::SolType>::Token<'a>;
7728            type Return = bool;
7729            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7730            type ReturnToken<'a> = <Self::ReturnTuple<
7731                'a,
7732            > as alloy_sol_types::SolType>::Token<'a>;
7733            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
7734            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
7735            #[inline]
7736            fn new<'a>(
7737                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7738            ) -> Self {
7739                tuple.into()
7740            }
7741            #[inline]
7742            fn tokenize(&self) -> Self::Token<'_> {
7743                (
7744                    <alloy::sol_types::sol_data::FixedBytes<
7745                        4,
7746                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
7747                )
7748            }
7749            #[inline]
7750            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7751                (
7752                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
7753                        ret,
7754                    ),
7755                )
7756            }
7757            #[inline]
7758            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7759                <Self::ReturnTuple<
7760                    '_,
7761                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7762                    .map(|r| {
7763                        let r: supportsInterfaceReturn = r.into();
7764                        r._0
7765                    })
7766            }
7767            #[inline]
7768            fn abi_decode_returns_validate(
7769                data: &[u8],
7770            ) -> alloy_sol_types::Result<Self::Return> {
7771                <Self::ReturnTuple<
7772                    '_,
7773                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7774                    .map(|r| {
7775                        let r: supportsInterfaceReturn = r.into();
7776                        r._0
7777                    })
7778            }
7779        }
7780    };
7781    #[derive(serde::Serialize, serde::Deserialize)]
7782    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7783    /**Function with signature `updateDelay(uint256)` and selector `0x64d62353`.
7784```solidity
7785function updateDelay(uint256 newDelay) external;
7786```*/
7787    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7788    #[derive(Clone)]
7789    pub struct updateDelayCall {
7790        #[allow(missing_docs)]
7791        pub newDelay: alloy::sol_types::private::primitives::aliases::U256,
7792    }
7793    ///Container type for the return parameters of the [`updateDelay(uint256)`](updateDelayCall) function.
7794    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7795    #[derive(Clone)]
7796    pub struct updateDelayReturn {}
7797    #[allow(
7798        non_camel_case_types,
7799        non_snake_case,
7800        clippy::pub_underscore_fields,
7801        clippy::style
7802    )]
7803    const _: () = {
7804        use alloy::sol_types as alloy_sol_types;
7805        {
7806            #[doc(hidden)]
7807            #[allow(dead_code)]
7808            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7809            #[doc(hidden)]
7810            type UnderlyingRustTuple<'a> = (
7811                alloy::sol_types::private::primitives::aliases::U256,
7812            );
7813            #[cfg(test)]
7814            #[allow(dead_code, unreachable_patterns)]
7815            fn _type_assertion(
7816                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7817            ) {
7818                match _t {
7819                    alloy_sol_types::private::AssertTypeEq::<
7820                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7821                    >(_) => {}
7822                }
7823            }
7824            #[automatically_derived]
7825            #[doc(hidden)]
7826            impl ::core::convert::From<updateDelayCall> for UnderlyingRustTuple<'_> {
7827                fn from(value: updateDelayCall) -> Self {
7828                    (value.newDelay,)
7829                }
7830            }
7831            #[automatically_derived]
7832            #[doc(hidden)]
7833            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayCall {
7834                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7835                    Self { newDelay: tuple.0 }
7836                }
7837            }
7838        }
7839        {
7840            #[doc(hidden)]
7841            #[allow(dead_code)]
7842            type UnderlyingSolTuple<'a> = ();
7843            #[doc(hidden)]
7844            type UnderlyingRustTuple<'a> = ();
7845            #[cfg(test)]
7846            #[allow(dead_code, unreachable_patterns)]
7847            fn _type_assertion(
7848                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7849            ) {
7850                match _t {
7851                    alloy_sol_types::private::AssertTypeEq::<
7852                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7853                    >(_) => {}
7854                }
7855            }
7856            #[automatically_derived]
7857            #[doc(hidden)]
7858            impl ::core::convert::From<updateDelayReturn> for UnderlyingRustTuple<'_> {
7859                fn from(value: updateDelayReturn) -> Self {
7860                    ()
7861                }
7862            }
7863            #[automatically_derived]
7864            #[doc(hidden)]
7865            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayReturn {
7866                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7867                    Self {}
7868                }
7869            }
7870        }
7871        impl updateDelayReturn {
7872            fn _tokenize(
7873                &self,
7874            ) -> <updateDelayCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7875                ()
7876            }
7877        }
7878        #[automatically_derived]
7879        impl alloy_sol_types::SolCall for updateDelayCall {
7880            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7881            type Token<'a> = <Self::Parameters<
7882                'a,
7883            > as alloy_sol_types::SolType>::Token<'a>;
7884            type Return = updateDelayReturn;
7885            type ReturnTuple<'a> = ();
7886            type ReturnToken<'a> = <Self::ReturnTuple<
7887                'a,
7888            > as alloy_sol_types::SolType>::Token<'a>;
7889            const SIGNATURE: &'static str = "updateDelay(uint256)";
7890            const SELECTOR: [u8; 4] = [100u8, 214u8, 35u8, 83u8];
7891            #[inline]
7892            fn new<'a>(
7893                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7894            ) -> Self {
7895                tuple.into()
7896            }
7897            #[inline]
7898            fn tokenize(&self) -> Self::Token<'_> {
7899                (
7900                    <alloy::sol_types::sol_data::Uint<
7901                        256,
7902                    > as alloy_sol_types::SolType>::tokenize(&self.newDelay),
7903                )
7904            }
7905            #[inline]
7906            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7907                updateDelayReturn::_tokenize(ret)
7908            }
7909            #[inline]
7910            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7911                <Self::ReturnTuple<
7912                    '_,
7913                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7914                    .map(Into::into)
7915            }
7916            #[inline]
7917            fn abi_decode_returns_validate(
7918                data: &[u8],
7919            ) -> alloy_sol_types::Result<Self::Return> {
7920                <Self::ReturnTuple<
7921                    '_,
7922                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7923                    .map(Into::into)
7924            }
7925        }
7926    };
7927    ///Container for all the [`SafeExitTimelock`](self) function calls.
7928    #[derive(Clone)]
7929    #[derive(serde::Serialize, serde::Deserialize)]
7930    #[derive()]
7931    pub enum SafeExitTimelockCalls {
7932        #[allow(missing_docs)]
7933        CANCELLER_ROLE(CANCELLER_ROLECall),
7934        #[allow(missing_docs)]
7935        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
7936        #[allow(missing_docs)]
7937        EXECUTOR_ROLE(EXECUTOR_ROLECall),
7938        #[allow(missing_docs)]
7939        PROPOSER_ROLE(PROPOSER_ROLECall),
7940        #[allow(missing_docs)]
7941        cancel(cancelCall),
7942        #[allow(missing_docs)]
7943        execute(executeCall),
7944        #[allow(missing_docs)]
7945        executeBatch(executeBatchCall),
7946        #[allow(missing_docs)]
7947        getMinDelay(getMinDelayCall),
7948        #[allow(missing_docs)]
7949        getOperationState(getOperationStateCall),
7950        #[allow(missing_docs)]
7951        getRoleAdmin(getRoleAdminCall),
7952        #[allow(missing_docs)]
7953        getTimestamp(getTimestampCall),
7954        #[allow(missing_docs)]
7955        grantRole(grantRoleCall),
7956        #[allow(missing_docs)]
7957        hasRole(hasRoleCall),
7958        #[allow(missing_docs)]
7959        hashOperation(hashOperationCall),
7960        #[allow(missing_docs)]
7961        hashOperationBatch(hashOperationBatchCall),
7962        #[allow(missing_docs)]
7963        isOperation(isOperationCall),
7964        #[allow(missing_docs)]
7965        isOperationDone(isOperationDoneCall),
7966        #[allow(missing_docs)]
7967        isOperationPending(isOperationPendingCall),
7968        #[allow(missing_docs)]
7969        isOperationReady(isOperationReadyCall),
7970        #[allow(missing_docs)]
7971        onERC1155BatchReceived(onERC1155BatchReceivedCall),
7972        #[allow(missing_docs)]
7973        onERC1155Received(onERC1155ReceivedCall),
7974        #[allow(missing_docs)]
7975        onERC721Received(onERC721ReceivedCall),
7976        #[allow(missing_docs)]
7977        renounceRole(renounceRoleCall),
7978        #[allow(missing_docs)]
7979        revokeRole(revokeRoleCall),
7980        #[allow(missing_docs)]
7981        schedule(scheduleCall),
7982        #[allow(missing_docs)]
7983        scheduleBatch(scheduleBatchCall),
7984        #[allow(missing_docs)]
7985        supportsInterface(supportsInterfaceCall),
7986        #[allow(missing_docs)]
7987        updateDelay(updateDelayCall),
7988    }
7989    impl SafeExitTimelockCalls {
7990        /// All the selectors of this enum.
7991        ///
7992        /// Note that the selectors might not be in the same order as the variants.
7993        /// No guarantees are made about the order of the selectors.
7994        ///
7995        /// Prefer using `SolInterface` methods instead.
7996        pub const SELECTORS: &'static [[u8; 4usize]] = &[
7997            [1u8, 213u8, 6u8, 42u8],
7998            [1u8, 255u8, 201u8, 167u8],
7999            [7u8, 189u8, 2u8, 101u8],
8000            [19u8, 64u8, 8u8, 211u8],
8001            [19u8, 188u8, 159u8, 32u8],
8002            [21u8, 11u8, 122u8, 2u8],
8003            [36u8, 138u8, 156u8, 163u8],
8004            [42u8, 176u8, 245u8, 41u8],
8005            [47u8, 47u8, 241u8, 93u8],
8006            [49u8, 213u8, 7u8, 80u8],
8007            [54u8, 86u8, 138u8, 190u8],
8008            [88u8, 75u8, 21u8, 62u8],
8009            [100u8, 214u8, 35u8, 83u8],
8010            [121u8, 88u8, 0u8, 76u8],
8011            [128u8, 101u8, 101u8, 127u8],
8012            [143u8, 42u8, 11u8, 176u8],
8013            [143u8, 97u8, 244u8, 245u8],
8014            [145u8, 209u8, 72u8, 84u8],
8015            [162u8, 23u8, 253u8, 223u8],
8016            [176u8, 142u8, 81u8, 192u8],
8017            [177u8, 197u8, 244u8, 39u8],
8018            [188u8, 25u8, 124u8, 129u8],
8019            [196u8, 210u8, 82u8, 245u8],
8020            [212u8, 92u8, 68u8, 53u8],
8021            [213u8, 71u8, 116u8, 31u8],
8022            [227u8, 131u8, 53u8, 229u8],
8023            [242u8, 58u8, 110u8, 97u8],
8024            [242u8, 122u8, 12u8, 146u8],
8025        ];
8026        /// The names of the variants in the same order as `SELECTORS`.
8027        pub const VARIANT_NAMES: &'static [&'static str] = &[
8028            ::core::stringify!(schedule),
8029            ::core::stringify!(supportsInterface),
8030            ::core::stringify!(EXECUTOR_ROLE),
8031            ::core::stringify!(execute),
8032            ::core::stringify!(isOperationReady),
8033            ::core::stringify!(onERC721Received),
8034            ::core::stringify!(getRoleAdmin),
8035            ::core::stringify!(isOperationDone),
8036            ::core::stringify!(grantRole),
8037            ::core::stringify!(isOperation),
8038            ::core::stringify!(renounceRole),
8039            ::core::stringify!(isOperationPending),
8040            ::core::stringify!(updateDelay),
8041            ::core::stringify!(getOperationState),
8042            ::core::stringify!(hashOperation),
8043            ::core::stringify!(scheduleBatch),
8044            ::core::stringify!(PROPOSER_ROLE),
8045            ::core::stringify!(hasRole),
8046            ::core::stringify!(DEFAULT_ADMIN_ROLE),
8047            ::core::stringify!(CANCELLER_ROLE),
8048            ::core::stringify!(hashOperationBatch),
8049            ::core::stringify!(onERC1155BatchReceived),
8050            ::core::stringify!(cancel),
8051            ::core::stringify!(getTimestamp),
8052            ::core::stringify!(revokeRole),
8053            ::core::stringify!(executeBatch),
8054            ::core::stringify!(onERC1155Received),
8055            ::core::stringify!(getMinDelay),
8056        ];
8057        /// The signatures in the same order as `SELECTORS`.
8058        pub const SIGNATURES: &'static [&'static str] = &[
8059            <scheduleCall as alloy_sol_types::SolCall>::SIGNATURE,
8060            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
8061            <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8062            <executeCall as alloy_sol_types::SolCall>::SIGNATURE,
8063            <isOperationReadyCall as alloy_sol_types::SolCall>::SIGNATURE,
8064            <onERC721ReceivedCall as alloy_sol_types::SolCall>::SIGNATURE,
8065            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
8066            <isOperationDoneCall as alloy_sol_types::SolCall>::SIGNATURE,
8067            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8068            <isOperationCall as alloy_sol_types::SolCall>::SIGNATURE,
8069            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8070            <isOperationPendingCall as alloy_sol_types::SolCall>::SIGNATURE,
8071            <updateDelayCall as alloy_sol_types::SolCall>::SIGNATURE,
8072            <getOperationStateCall as alloy_sol_types::SolCall>::SIGNATURE,
8073            <hashOperationCall as alloy_sol_types::SolCall>::SIGNATURE,
8074            <scheduleBatchCall as alloy_sol_types::SolCall>::SIGNATURE,
8075            <PROPOSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8076            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8077            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8078            <CANCELLER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8079            <hashOperationBatchCall as alloy_sol_types::SolCall>::SIGNATURE,
8080            <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::SIGNATURE,
8081            <cancelCall as alloy_sol_types::SolCall>::SIGNATURE,
8082            <getTimestampCall as alloy_sol_types::SolCall>::SIGNATURE,
8083            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8084            <executeBatchCall as alloy_sol_types::SolCall>::SIGNATURE,
8085            <onERC1155ReceivedCall as alloy_sol_types::SolCall>::SIGNATURE,
8086            <getMinDelayCall as alloy_sol_types::SolCall>::SIGNATURE,
8087        ];
8088        /// Returns the signature for the given selector, if known.
8089        #[inline]
8090        pub fn signature_by_selector(
8091            selector: [u8; 4usize],
8092        ) -> ::core::option::Option<&'static str> {
8093            match Self::SELECTORS.binary_search(&selector) {
8094                ::core::result::Result::Ok(idx) => {
8095                    ::core::option::Option::Some(Self::SIGNATURES[idx])
8096                }
8097                ::core::result::Result::Err(_) => ::core::option::Option::None,
8098            }
8099        }
8100        /// Returns the enum variant name for the given selector, if known.
8101        #[inline]
8102        pub fn name_by_selector(
8103            selector: [u8; 4usize],
8104        ) -> ::core::option::Option<&'static str> {
8105            let sig = Self::signature_by_selector(selector)?;
8106            sig.split_once('(').map(|(name, _)| name)
8107        }
8108    }
8109    #[automatically_derived]
8110    impl alloy_sol_types::SolInterface for SafeExitTimelockCalls {
8111        const NAME: &'static str = "SafeExitTimelockCalls";
8112        const MIN_DATA_LENGTH: usize = 0usize;
8113        const COUNT: usize = 28usize;
8114        #[inline]
8115        fn selector(&self) -> [u8; 4] {
8116            match self {
8117                Self::CANCELLER_ROLE(_) => {
8118                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8119                }
8120                Self::DEFAULT_ADMIN_ROLE(_) => {
8121                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8122                }
8123                Self::EXECUTOR_ROLE(_) => {
8124                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8125                }
8126                Self::PROPOSER_ROLE(_) => {
8127                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8128                }
8129                Self::cancel(_) => <cancelCall as alloy_sol_types::SolCall>::SELECTOR,
8130                Self::execute(_) => <executeCall as alloy_sol_types::SolCall>::SELECTOR,
8131                Self::executeBatch(_) => {
8132                    <executeBatchCall as alloy_sol_types::SolCall>::SELECTOR
8133                }
8134                Self::getMinDelay(_) => {
8135                    <getMinDelayCall as alloy_sol_types::SolCall>::SELECTOR
8136                }
8137                Self::getOperationState(_) => {
8138                    <getOperationStateCall as alloy_sol_types::SolCall>::SELECTOR
8139                }
8140                Self::getRoleAdmin(_) => {
8141                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
8142                }
8143                Self::getTimestamp(_) => {
8144                    <getTimestampCall as alloy_sol_types::SolCall>::SELECTOR
8145                }
8146                Self::grantRole(_) => {
8147                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
8148                }
8149                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
8150                Self::hashOperation(_) => {
8151                    <hashOperationCall as alloy_sol_types::SolCall>::SELECTOR
8152                }
8153                Self::hashOperationBatch(_) => {
8154                    <hashOperationBatchCall as alloy_sol_types::SolCall>::SELECTOR
8155                }
8156                Self::isOperation(_) => {
8157                    <isOperationCall as alloy_sol_types::SolCall>::SELECTOR
8158                }
8159                Self::isOperationDone(_) => {
8160                    <isOperationDoneCall as alloy_sol_types::SolCall>::SELECTOR
8161                }
8162                Self::isOperationPending(_) => {
8163                    <isOperationPendingCall as alloy_sol_types::SolCall>::SELECTOR
8164                }
8165                Self::isOperationReady(_) => {
8166                    <isOperationReadyCall as alloy_sol_types::SolCall>::SELECTOR
8167                }
8168                Self::onERC1155BatchReceived(_) => {
8169                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8170                }
8171                Self::onERC1155Received(_) => {
8172                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8173                }
8174                Self::onERC721Received(_) => {
8175                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8176                }
8177                Self::renounceRole(_) => {
8178                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
8179                }
8180                Self::revokeRole(_) => {
8181                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
8182                }
8183                Self::schedule(_) => <scheduleCall as alloy_sol_types::SolCall>::SELECTOR,
8184                Self::scheduleBatch(_) => {
8185                    <scheduleBatchCall as alloy_sol_types::SolCall>::SELECTOR
8186                }
8187                Self::supportsInterface(_) => {
8188                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
8189                }
8190                Self::updateDelay(_) => {
8191                    <updateDelayCall as alloy_sol_types::SolCall>::SELECTOR
8192                }
8193            }
8194        }
8195        #[inline]
8196        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8197            Self::SELECTORS.get(i).copied()
8198        }
8199        #[inline]
8200        fn valid_selector(selector: [u8; 4]) -> bool {
8201            Self::SELECTORS.binary_search(&selector).is_ok()
8202        }
8203        #[inline]
8204        #[allow(non_snake_case)]
8205        fn abi_decode_raw(
8206            selector: [u8; 4],
8207            data: &[u8],
8208        ) -> alloy_sol_types::Result<Self> {
8209            static DECODE_SHIMS: &[fn(
8210                &[u8],
8211            ) -> alloy_sol_types::Result<SafeExitTimelockCalls>] = &[
8212                {
8213                    fn schedule(
8214                        data: &[u8],
8215                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8216                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8217                            .map(SafeExitTimelockCalls::schedule)
8218                    }
8219                    schedule
8220                },
8221                {
8222                    fn supportsInterface(
8223                        data: &[u8],
8224                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8225                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
8226                                data,
8227                            )
8228                            .map(SafeExitTimelockCalls::supportsInterface)
8229                    }
8230                    supportsInterface
8231                },
8232                {
8233                    fn EXECUTOR_ROLE(
8234                        data: &[u8],
8235                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8236                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8237                                data,
8238                            )
8239                            .map(SafeExitTimelockCalls::EXECUTOR_ROLE)
8240                    }
8241                    EXECUTOR_ROLE
8242                },
8243                {
8244                    fn execute(
8245                        data: &[u8],
8246                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8247                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8248                            .map(SafeExitTimelockCalls::execute)
8249                    }
8250                    execute
8251                },
8252                {
8253                    fn isOperationReady(
8254                        data: &[u8],
8255                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8256                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw(
8257                                data,
8258                            )
8259                            .map(SafeExitTimelockCalls::isOperationReady)
8260                    }
8261                    isOperationReady
8262                },
8263                {
8264                    fn onERC721Received(
8265                        data: &[u8],
8266                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8267                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8268                                data,
8269                            )
8270                            .map(SafeExitTimelockCalls::onERC721Received)
8271                    }
8272                    onERC721Received
8273                },
8274                {
8275                    fn getRoleAdmin(
8276                        data: &[u8],
8277                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8278                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
8279                                data,
8280                            )
8281                            .map(SafeExitTimelockCalls::getRoleAdmin)
8282                    }
8283                    getRoleAdmin
8284                },
8285                {
8286                    fn isOperationDone(
8287                        data: &[u8],
8288                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8289                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw(
8290                                data,
8291                            )
8292                            .map(SafeExitTimelockCalls::isOperationDone)
8293                    }
8294                    isOperationDone
8295                },
8296                {
8297                    fn grantRole(
8298                        data: &[u8],
8299                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8300                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8301                            .map(SafeExitTimelockCalls::grantRole)
8302                    }
8303                    grantRole
8304                },
8305                {
8306                    fn isOperation(
8307                        data: &[u8],
8308                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8309                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
8310                                data,
8311                            )
8312                            .map(SafeExitTimelockCalls::isOperation)
8313                    }
8314                    isOperation
8315                },
8316                {
8317                    fn renounceRole(
8318                        data: &[u8],
8319                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8320                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8321                                data,
8322                            )
8323                            .map(SafeExitTimelockCalls::renounceRole)
8324                    }
8325                    renounceRole
8326                },
8327                {
8328                    fn isOperationPending(
8329                        data: &[u8],
8330                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8331                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw(
8332                                data,
8333                            )
8334                            .map(SafeExitTimelockCalls::isOperationPending)
8335                    }
8336                    isOperationPending
8337                },
8338                {
8339                    fn updateDelay(
8340                        data: &[u8],
8341                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8342                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
8343                                data,
8344                            )
8345                            .map(SafeExitTimelockCalls::updateDelay)
8346                    }
8347                    updateDelay
8348                },
8349                {
8350                    fn getOperationState(
8351                        data: &[u8],
8352                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8353                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
8354                                data,
8355                            )
8356                            .map(SafeExitTimelockCalls::getOperationState)
8357                    }
8358                    getOperationState
8359                },
8360                {
8361                    fn hashOperation(
8362                        data: &[u8],
8363                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8364                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
8365                                data,
8366                            )
8367                            .map(SafeExitTimelockCalls::hashOperation)
8368                    }
8369                    hashOperation
8370                },
8371                {
8372                    fn scheduleBatch(
8373                        data: &[u8],
8374                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8375                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8376                                data,
8377                            )
8378                            .map(SafeExitTimelockCalls::scheduleBatch)
8379                    }
8380                    scheduleBatch
8381                },
8382                {
8383                    fn PROPOSER_ROLE(
8384                        data: &[u8],
8385                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8386                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8387                                data,
8388                            )
8389                            .map(SafeExitTimelockCalls::PROPOSER_ROLE)
8390                    }
8391                    PROPOSER_ROLE
8392                },
8393                {
8394                    fn hasRole(
8395                        data: &[u8],
8396                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8397                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8398                            .map(SafeExitTimelockCalls::hasRole)
8399                    }
8400                    hasRole
8401                },
8402                {
8403                    fn DEFAULT_ADMIN_ROLE(
8404                        data: &[u8],
8405                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8406                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8407                                data,
8408                            )
8409                            .map(SafeExitTimelockCalls::DEFAULT_ADMIN_ROLE)
8410                    }
8411                    DEFAULT_ADMIN_ROLE
8412                },
8413                {
8414                    fn CANCELLER_ROLE(
8415                        data: &[u8],
8416                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8417                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8418                                data,
8419                            )
8420                            .map(SafeExitTimelockCalls::CANCELLER_ROLE)
8421                    }
8422                    CANCELLER_ROLE
8423                },
8424                {
8425                    fn hashOperationBatch(
8426                        data: &[u8],
8427                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8428                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8429                                data,
8430                            )
8431                            .map(SafeExitTimelockCalls::hashOperationBatch)
8432                    }
8433                    hashOperationBatch
8434                },
8435                {
8436                    fn onERC1155BatchReceived(
8437                        data: &[u8],
8438                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8439                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8440                                data,
8441                            )
8442                            .map(SafeExitTimelockCalls::onERC1155BatchReceived)
8443                    }
8444                    onERC1155BatchReceived
8445                },
8446                {
8447                    fn cancel(
8448                        data: &[u8],
8449                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8450                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8451                            .map(SafeExitTimelockCalls::cancel)
8452                    }
8453                    cancel
8454                },
8455                {
8456                    fn getTimestamp(
8457                        data: &[u8],
8458                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8459                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
8460                                data,
8461                            )
8462                            .map(SafeExitTimelockCalls::getTimestamp)
8463                    }
8464                    getTimestamp
8465                },
8466                {
8467                    fn revokeRole(
8468                        data: &[u8],
8469                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8470                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8471                                data,
8472                            )
8473                            .map(SafeExitTimelockCalls::revokeRole)
8474                    }
8475                    revokeRole
8476                },
8477                {
8478                    fn executeBatch(
8479                        data: &[u8],
8480                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8481                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8482                                data,
8483                            )
8484                            .map(SafeExitTimelockCalls::executeBatch)
8485                    }
8486                    executeBatch
8487                },
8488                {
8489                    fn onERC1155Received(
8490                        data: &[u8],
8491                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8492                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8493                                data,
8494                            )
8495                            .map(SafeExitTimelockCalls::onERC1155Received)
8496                    }
8497                    onERC1155Received
8498                },
8499                {
8500                    fn getMinDelay(
8501                        data: &[u8],
8502                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8503                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
8504                                data,
8505                            )
8506                            .map(SafeExitTimelockCalls::getMinDelay)
8507                    }
8508                    getMinDelay
8509                },
8510            ];
8511            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8512                return Err(
8513                    alloy_sol_types::Error::unknown_selector(
8514                        <Self as alloy_sol_types::SolInterface>::NAME,
8515                        selector,
8516                    ),
8517                );
8518            };
8519            DECODE_SHIMS[idx](data)
8520        }
8521        #[inline]
8522        #[allow(non_snake_case)]
8523        fn abi_decode_raw_validate(
8524            selector: [u8; 4],
8525            data: &[u8],
8526        ) -> alloy_sol_types::Result<Self> {
8527            static DECODE_VALIDATE_SHIMS: &[fn(
8528                &[u8],
8529            ) -> alloy_sol_types::Result<SafeExitTimelockCalls>] = &[
8530                {
8531                    fn schedule(
8532                        data: &[u8],
8533                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8534                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8535                                data,
8536                            )
8537                            .map(SafeExitTimelockCalls::schedule)
8538                    }
8539                    schedule
8540                },
8541                {
8542                    fn supportsInterface(
8543                        data: &[u8],
8544                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8545                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8546                                data,
8547                            )
8548                            .map(SafeExitTimelockCalls::supportsInterface)
8549                    }
8550                    supportsInterface
8551                },
8552                {
8553                    fn EXECUTOR_ROLE(
8554                        data: &[u8],
8555                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8556                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8557                                data,
8558                            )
8559                            .map(SafeExitTimelockCalls::EXECUTOR_ROLE)
8560                    }
8561                    EXECUTOR_ROLE
8562                },
8563                {
8564                    fn execute(
8565                        data: &[u8],
8566                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8567                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8568                                data,
8569                            )
8570                            .map(SafeExitTimelockCalls::execute)
8571                    }
8572                    execute
8573                },
8574                {
8575                    fn isOperationReady(
8576                        data: &[u8],
8577                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8578                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8579                                data,
8580                            )
8581                            .map(SafeExitTimelockCalls::isOperationReady)
8582                    }
8583                    isOperationReady
8584                },
8585                {
8586                    fn onERC721Received(
8587                        data: &[u8],
8588                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8589                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8590                                data,
8591                            )
8592                            .map(SafeExitTimelockCalls::onERC721Received)
8593                    }
8594                    onERC721Received
8595                },
8596                {
8597                    fn getRoleAdmin(
8598                        data: &[u8],
8599                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8600                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8601                                data,
8602                            )
8603                            .map(SafeExitTimelockCalls::getRoleAdmin)
8604                    }
8605                    getRoleAdmin
8606                },
8607                {
8608                    fn isOperationDone(
8609                        data: &[u8],
8610                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8611                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8612                                data,
8613                            )
8614                            .map(SafeExitTimelockCalls::isOperationDone)
8615                    }
8616                    isOperationDone
8617                },
8618                {
8619                    fn grantRole(
8620                        data: &[u8],
8621                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8622                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8623                                data,
8624                            )
8625                            .map(SafeExitTimelockCalls::grantRole)
8626                    }
8627                    grantRole
8628                },
8629                {
8630                    fn isOperation(
8631                        data: &[u8],
8632                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8633                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8634                                data,
8635                            )
8636                            .map(SafeExitTimelockCalls::isOperation)
8637                    }
8638                    isOperation
8639                },
8640                {
8641                    fn renounceRole(
8642                        data: &[u8],
8643                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8644                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8645                                data,
8646                            )
8647                            .map(SafeExitTimelockCalls::renounceRole)
8648                    }
8649                    renounceRole
8650                },
8651                {
8652                    fn isOperationPending(
8653                        data: &[u8],
8654                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8655                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8656                                data,
8657                            )
8658                            .map(SafeExitTimelockCalls::isOperationPending)
8659                    }
8660                    isOperationPending
8661                },
8662                {
8663                    fn updateDelay(
8664                        data: &[u8],
8665                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8666                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8667                                data,
8668                            )
8669                            .map(SafeExitTimelockCalls::updateDelay)
8670                    }
8671                    updateDelay
8672                },
8673                {
8674                    fn getOperationState(
8675                        data: &[u8],
8676                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8677                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8678                                data,
8679                            )
8680                            .map(SafeExitTimelockCalls::getOperationState)
8681                    }
8682                    getOperationState
8683                },
8684                {
8685                    fn hashOperation(
8686                        data: &[u8],
8687                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8688                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8689                                data,
8690                            )
8691                            .map(SafeExitTimelockCalls::hashOperation)
8692                    }
8693                    hashOperation
8694                },
8695                {
8696                    fn scheduleBatch(
8697                        data: &[u8],
8698                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8699                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8700                                data,
8701                            )
8702                            .map(SafeExitTimelockCalls::scheduleBatch)
8703                    }
8704                    scheduleBatch
8705                },
8706                {
8707                    fn PROPOSER_ROLE(
8708                        data: &[u8],
8709                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8710                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8711                                data,
8712                            )
8713                            .map(SafeExitTimelockCalls::PROPOSER_ROLE)
8714                    }
8715                    PROPOSER_ROLE
8716                },
8717                {
8718                    fn hasRole(
8719                        data: &[u8],
8720                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8721                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8722                                data,
8723                            )
8724                            .map(SafeExitTimelockCalls::hasRole)
8725                    }
8726                    hasRole
8727                },
8728                {
8729                    fn DEFAULT_ADMIN_ROLE(
8730                        data: &[u8],
8731                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8732                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8733                                data,
8734                            )
8735                            .map(SafeExitTimelockCalls::DEFAULT_ADMIN_ROLE)
8736                    }
8737                    DEFAULT_ADMIN_ROLE
8738                },
8739                {
8740                    fn CANCELLER_ROLE(
8741                        data: &[u8],
8742                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8743                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8744                                data,
8745                            )
8746                            .map(SafeExitTimelockCalls::CANCELLER_ROLE)
8747                    }
8748                    CANCELLER_ROLE
8749                },
8750                {
8751                    fn hashOperationBatch(
8752                        data: &[u8],
8753                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8754                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8755                                data,
8756                            )
8757                            .map(SafeExitTimelockCalls::hashOperationBatch)
8758                    }
8759                    hashOperationBatch
8760                },
8761                {
8762                    fn onERC1155BatchReceived(
8763                        data: &[u8],
8764                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8765                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8766                                data,
8767                            )
8768                            .map(SafeExitTimelockCalls::onERC1155BatchReceived)
8769                    }
8770                    onERC1155BatchReceived
8771                },
8772                {
8773                    fn cancel(
8774                        data: &[u8],
8775                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8776                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8777                                data,
8778                            )
8779                            .map(SafeExitTimelockCalls::cancel)
8780                    }
8781                    cancel
8782                },
8783                {
8784                    fn getTimestamp(
8785                        data: &[u8],
8786                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8787                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8788                                data,
8789                            )
8790                            .map(SafeExitTimelockCalls::getTimestamp)
8791                    }
8792                    getTimestamp
8793                },
8794                {
8795                    fn revokeRole(
8796                        data: &[u8],
8797                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8798                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8799                                data,
8800                            )
8801                            .map(SafeExitTimelockCalls::revokeRole)
8802                    }
8803                    revokeRole
8804                },
8805                {
8806                    fn executeBatch(
8807                        data: &[u8],
8808                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8809                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8810                                data,
8811                            )
8812                            .map(SafeExitTimelockCalls::executeBatch)
8813                    }
8814                    executeBatch
8815                },
8816                {
8817                    fn onERC1155Received(
8818                        data: &[u8],
8819                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8820                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8821                                data,
8822                            )
8823                            .map(SafeExitTimelockCalls::onERC1155Received)
8824                    }
8825                    onERC1155Received
8826                },
8827                {
8828                    fn getMinDelay(
8829                        data: &[u8],
8830                    ) -> alloy_sol_types::Result<SafeExitTimelockCalls> {
8831                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8832                                data,
8833                            )
8834                            .map(SafeExitTimelockCalls::getMinDelay)
8835                    }
8836                    getMinDelay
8837                },
8838            ];
8839            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8840                return Err(
8841                    alloy_sol_types::Error::unknown_selector(
8842                        <Self as alloy_sol_types::SolInterface>::NAME,
8843                        selector,
8844                    ),
8845                );
8846            };
8847            DECODE_VALIDATE_SHIMS[idx](data)
8848        }
8849        #[inline]
8850        fn abi_encoded_size(&self) -> usize {
8851            match self {
8852                Self::CANCELLER_ROLE(inner) => {
8853                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8854                        inner,
8855                    )
8856                }
8857                Self::DEFAULT_ADMIN_ROLE(inner) => {
8858                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8859                        inner,
8860                    )
8861                }
8862                Self::EXECUTOR_ROLE(inner) => {
8863                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8864                        inner,
8865                    )
8866                }
8867                Self::PROPOSER_ROLE(inner) => {
8868                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8869                        inner,
8870                    )
8871                }
8872                Self::cancel(inner) => {
8873                    <cancelCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8874                }
8875                Self::execute(inner) => {
8876                    <executeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8877                }
8878                Self::executeBatch(inner) => {
8879                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8880                        inner,
8881                    )
8882                }
8883                Self::getMinDelay(inner) => {
8884                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
8885                        inner,
8886                    )
8887                }
8888                Self::getOperationState(inner) => {
8889                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
8890                        inner,
8891                    )
8892                }
8893                Self::getRoleAdmin(inner) => {
8894                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
8895                        inner,
8896                    )
8897                }
8898                Self::getTimestamp(inner) => {
8899                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
8900                        inner,
8901                    )
8902                }
8903                Self::grantRole(inner) => {
8904                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8905                }
8906                Self::hasRole(inner) => {
8907                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8908                }
8909                Self::hashOperation(inner) => {
8910                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
8911                        inner,
8912                    )
8913                }
8914                Self::hashOperationBatch(inner) => {
8915                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8916                        inner,
8917                    )
8918                }
8919                Self::isOperation(inner) => {
8920                    <isOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
8921                        inner,
8922                    )
8923                }
8924                Self::isOperationDone(inner) => {
8925                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encoded_size(
8926                        inner,
8927                    )
8928                }
8929                Self::isOperationPending(inner) => {
8930                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encoded_size(
8931                        inner,
8932                    )
8933                }
8934                Self::isOperationReady(inner) => {
8935                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encoded_size(
8936                        inner,
8937                    )
8938                }
8939                Self::onERC1155BatchReceived(inner) => {
8940                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8941                        inner,
8942                    )
8943                }
8944                Self::onERC1155Received(inner) => {
8945                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8946                        inner,
8947                    )
8948                }
8949                Self::onERC721Received(inner) => {
8950                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8951                        inner,
8952                    )
8953                }
8954                Self::renounceRole(inner) => {
8955                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
8956                        inner,
8957                    )
8958                }
8959                Self::revokeRole(inner) => {
8960                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8961                }
8962                Self::schedule(inner) => {
8963                    <scheduleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8964                }
8965                Self::scheduleBatch(inner) => {
8966                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8967                        inner,
8968                    )
8969                }
8970                Self::supportsInterface(inner) => {
8971                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
8972                        inner,
8973                    )
8974                }
8975                Self::updateDelay(inner) => {
8976                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
8977                        inner,
8978                    )
8979                }
8980            }
8981        }
8982        #[inline]
8983        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
8984            match self {
8985                Self::CANCELLER_ROLE(inner) => {
8986                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8987                        inner,
8988                        out,
8989                    )
8990                }
8991                Self::DEFAULT_ADMIN_ROLE(inner) => {
8992                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8993                        inner,
8994                        out,
8995                    )
8996                }
8997                Self::EXECUTOR_ROLE(inner) => {
8998                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8999                        inner,
9000                        out,
9001                    )
9002                }
9003                Self::PROPOSER_ROLE(inner) => {
9004                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
9005                        inner,
9006                        out,
9007                    )
9008                }
9009                Self::cancel(inner) => {
9010                    <cancelCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9011                }
9012                Self::execute(inner) => {
9013                    <executeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9014                }
9015                Self::executeBatch(inner) => {
9016                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
9017                        inner,
9018                        out,
9019                    )
9020                }
9021                Self::getMinDelay(inner) => {
9022                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
9023                        inner,
9024                        out,
9025                    )
9026                }
9027                Self::getOperationState(inner) => {
9028                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
9029                        inner,
9030                        out,
9031                    )
9032                }
9033                Self::getRoleAdmin(inner) => {
9034                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
9035                        inner,
9036                        out,
9037                    )
9038                }
9039                Self::getTimestamp(inner) => {
9040                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
9041                        inner,
9042                        out,
9043                    )
9044                }
9045                Self::grantRole(inner) => {
9046                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9047                        inner,
9048                        out,
9049                    )
9050                }
9051                Self::hasRole(inner) => {
9052                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9053                }
9054                Self::hashOperation(inner) => {
9055                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9056                        inner,
9057                        out,
9058                    )
9059                }
9060                Self::hashOperationBatch(inner) => {
9061                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
9062                        inner,
9063                        out,
9064                    )
9065                }
9066                Self::isOperation(inner) => {
9067                    <isOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9068                        inner,
9069                        out,
9070                    )
9071                }
9072                Self::isOperationDone(inner) => {
9073                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encode_raw(
9074                        inner,
9075                        out,
9076                    )
9077                }
9078                Self::isOperationPending(inner) => {
9079                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encode_raw(
9080                        inner,
9081                        out,
9082                    )
9083                }
9084                Self::isOperationReady(inner) => {
9085                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encode_raw(
9086                        inner,
9087                        out,
9088                    )
9089                }
9090                Self::onERC1155BatchReceived(inner) => {
9091                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
9092                        inner,
9093                        out,
9094                    )
9095                }
9096                Self::onERC1155Received(inner) => {
9097                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
9098                        inner,
9099                        out,
9100                    )
9101                }
9102                Self::onERC721Received(inner) => {
9103                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
9104                        inner,
9105                        out,
9106                    )
9107                }
9108                Self::renounceRole(inner) => {
9109                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9110                        inner,
9111                        out,
9112                    )
9113                }
9114                Self::revokeRole(inner) => {
9115                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9116                        inner,
9117                        out,
9118                    )
9119                }
9120                Self::schedule(inner) => {
9121                    <scheduleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9122                        inner,
9123                        out,
9124                    )
9125                }
9126                Self::scheduleBatch(inner) => {
9127                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
9128                        inner,
9129                        out,
9130                    )
9131                }
9132                Self::supportsInterface(inner) => {
9133                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
9134                        inner,
9135                        out,
9136                    )
9137                }
9138                Self::updateDelay(inner) => {
9139                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
9140                        inner,
9141                        out,
9142                    )
9143                }
9144            }
9145        }
9146    }
9147    ///Container for all the [`SafeExitTimelock`](self) custom errors.
9148    #[derive(Clone)]
9149    #[derive(serde::Serialize, serde::Deserialize)]
9150    #[derive(Debug, PartialEq, Eq, Hash)]
9151    pub enum SafeExitTimelockErrors {
9152        #[allow(missing_docs)]
9153        AccessControlBadConfirmation(AccessControlBadConfirmation),
9154        #[allow(missing_docs)]
9155        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
9156        #[allow(missing_docs)]
9157        FailedInnerCall(FailedInnerCall),
9158        #[allow(missing_docs)]
9159        TimelockInsufficientDelay(TimelockInsufficientDelay),
9160        #[allow(missing_docs)]
9161        TimelockInvalidOperationLength(TimelockInvalidOperationLength),
9162        #[allow(missing_docs)]
9163        TimelockUnauthorizedCaller(TimelockUnauthorizedCaller),
9164        #[allow(missing_docs)]
9165        TimelockUnexecutedPredecessor(TimelockUnexecutedPredecessor),
9166        #[allow(missing_docs)]
9167        TimelockUnexpectedOperationState(TimelockUnexpectedOperationState),
9168    }
9169    impl SafeExitTimelockErrors {
9170        /// All the selectors of this enum.
9171        ///
9172        /// Note that the selectors might not be in the same order as the variants.
9173        /// No guarantees are made about the order of the selectors.
9174        ///
9175        /// Prefer using `SolInterface` methods instead.
9176        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9177            [20u8, 37u8, 234u8, 66u8],
9178            [84u8, 51u8, 102u8, 9u8],
9179            [94u8, 173u8, 142u8, 181u8],
9180            [102u8, 151u8, 178u8, 50u8],
9181            [144u8, 169u8, 166u8, 24u8],
9182            [226u8, 81u8, 125u8, 63u8],
9183            [226u8, 133u8, 12u8, 89u8],
9184            [255u8, 176u8, 50u8, 17u8],
9185        ];
9186        /// The names of the variants in the same order as `SELECTORS`.
9187        pub const VARIANT_NAMES: &'static [&'static str] = &[
9188            ::core::stringify!(FailedInnerCall),
9189            ::core::stringify!(TimelockInsufficientDelay),
9190            ::core::stringify!(TimelockUnexpectedOperationState),
9191            ::core::stringify!(AccessControlBadConfirmation),
9192            ::core::stringify!(TimelockUnexecutedPredecessor),
9193            ::core::stringify!(AccessControlUnauthorizedAccount),
9194            ::core::stringify!(TimelockUnauthorizedCaller),
9195            ::core::stringify!(TimelockInvalidOperationLength),
9196        ];
9197        /// The signatures in the same order as `SELECTORS`.
9198        pub const SIGNATURES: &'static [&'static str] = &[
9199            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
9200            <TimelockInsufficientDelay as alloy_sol_types::SolError>::SIGNATURE,
9201            <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::SIGNATURE,
9202            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
9203            <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::SIGNATURE,
9204            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
9205            <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::SIGNATURE,
9206            <TimelockInvalidOperationLength as alloy_sol_types::SolError>::SIGNATURE,
9207        ];
9208        /// Returns the signature for the given selector, if known.
9209        #[inline]
9210        pub fn signature_by_selector(
9211            selector: [u8; 4usize],
9212        ) -> ::core::option::Option<&'static str> {
9213            match Self::SELECTORS.binary_search(&selector) {
9214                ::core::result::Result::Ok(idx) => {
9215                    ::core::option::Option::Some(Self::SIGNATURES[idx])
9216                }
9217                ::core::result::Result::Err(_) => ::core::option::Option::None,
9218            }
9219        }
9220        /// Returns the enum variant name for the given selector, if known.
9221        #[inline]
9222        pub fn name_by_selector(
9223            selector: [u8; 4usize],
9224        ) -> ::core::option::Option<&'static str> {
9225            let sig = Self::signature_by_selector(selector)?;
9226            sig.split_once('(').map(|(name, _)| name)
9227        }
9228    }
9229    #[automatically_derived]
9230    impl alloy_sol_types::SolInterface for SafeExitTimelockErrors {
9231        const NAME: &'static str = "SafeExitTimelockErrors";
9232        const MIN_DATA_LENGTH: usize = 0usize;
9233        const COUNT: usize = 8usize;
9234        #[inline]
9235        fn selector(&self) -> [u8; 4] {
9236            match self {
9237                Self::AccessControlBadConfirmation(_) => {
9238                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
9239                }
9240                Self::AccessControlUnauthorizedAccount(_) => {
9241                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9242                }
9243                Self::FailedInnerCall(_) => {
9244                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9245                }
9246                Self::TimelockInsufficientDelay(_) => {
9247                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::SELECTOR
9248                }
9249                Self::TimelockInvalidOperationLength(_) => {
9250                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::SELECTOR
9251                }
9252                Self::TimelockUnauthorizedCaller(_) => {
9253                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::SELECTOR
9254                }
9255                Self::TimelockUnexecutedPredecessor(_) => {
9256                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::SELECTOR
9257                }
9258                Self::TimelockUnexpectedOperationState(_) => {
9259                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::SELECTOR
9260                }
9261            }
9262        }
9263        #[inline]
9264        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9265            Self::SELECTORS.get(i).copied()
9266        }
9267        #[inline]
9268        fn valid_selector(selector: [u8; 4]) -> bool {
9269            Self::SELECTORS.binary_search(&selector).is_ok()
9270        }
9271        #[inline]
9272        #[allow(non_snake_case)]
9273        fn abi_decode_raw(
9274            selector: [u8; 4],
9275            data: &[u8],
9276        ) -> alloy_sol_types::Result<Self> {
9277            static DECODE_SHIMS: &[fn(
9278                &[u8],
9279            ) -> alloy_sol_types::Result<SafeExitTimelockErrors>] = &[
9280                {
9281                    fn FailedInnerCall(
9282                        data: &[u8],
9283                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9284                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
9285                                data,
9286                            )
9287                            .map(SafeExitTimelockErrors::FailedInnerCall)
9288                    }
9289                    FailedInnerCall
9290                },
9291                {
9292                    fn TimelockInsufficientDelay(
9293                        data: &[u8],
9294                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9295                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw(
9296                                data,
9297                            )
9298                            .map(SafeExitTimelockErrors::TimelockInsufficientDelay)
9299                    }
9300                    TimelockInsufficientDelay
9301                },
9302                {
9303                    fn TimelockUnexpectedOperationState(
9304                        data: &[u8],
9305                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9306                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw(
9307                                data,
9308                            )
9309                            .map(
9310                                SafeExitTimelockErrors::TimelockUnexpectedOperationState,
9311                            )
9312                    }
9313                    TimelockUnexpectedOperationState
9314                },
9315                {
9316                    fn AccessControlBadConfirmation(
9317                        data: &[u8],
9318                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9319                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
9320                                data,
9321                            )
9322                            .map(SafeExitTimelockErrors::AccessControlBadConfirmation)
9323                    }
9324                    AccessControlBadConfirmation
9325                },
9326                {
9327                    fn TimelockUnexecutedPredecessor(
9328                        data: &[u8],
9329                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9330                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw(
9331                                data,
9332                            )
9333                            .map(SafeExitTimelockErrors::TimelockUnexecutedPredecessor)
9334                    }
9335                    TimelockUnexecutedPredecessor
9336                },
9337                {
9338                    fn AccessControlUnauthorizedAccount(
9339                        data: &[u8],
9340                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9341                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9342                                data,
9343                            )
9344                            .map(
9345                                SafeExitTimelockErrors::AccessControlUnauthorizedAccount,
9346                            )
9347                    }
9348                    AccessControlUnauthorizedAccount
9349                },
9350                {
9351                    fn TimelockUnauthorizedCaller(
9352                        data: &[u8],
9353                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9354                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw(
9355                                data,
9356                            )
9357                            .map(SafeExitTimelockErrors::TimelockUnauthorizedCaller)
9358                    }
9359                    TimelockUnauthorizedCaller
9360                },
9361                {
9362                    fn TimelockInvalidOperationLength(
9363                        data: &[u8],
9364                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9365                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw(
9366                                data,
9367                            )
9368                            .map(SafeExitTimelockErrors::TimelockInvalidOperationLength)
9369                    }
9370                    TimelockInvalidOperationLength
9371                },
9372            ];
9373            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9374                return Err(
9375                    alloy_sol_types::Error::unknown_selector(
9376                        <Self as alloy_sol_types::SolInterface>::NAME,
9377                        selector,
9378                    ),
9379                );
9380            };
9381            DECODE_SHIMS[idx](data)
9382        }
9383        #[inline]
9384        #[allow(non_snake_case)]
9385        fn abi_decode_raw_validate(
9386            selector: [u8; 4],
9387            data: &[u8],
9388        ) -> alloy_sol_types::Result<Self> {
9389            static DECODE_VALIDATE_SHIMS: &[fn(
9390                &[u8],
9391            ) -> alloy_sol_types::Result<SafeExitTimelockErrors>] = &[
9392                {
9393                    fn FailedInnerCall(
9394                        data: &[u8],
9395                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9396                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
9397                                data,
9398                            )
9399                            .map(SafeExitTimelockErrors::FailedInnerCall)
9400                    }
9401                    FailedInnerCall
9402                },
9403                {
9404                    fn TimelockInsufficientDelay(
9405                        data: &[u8],
9406                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9407                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw_validate(
9408                                data,
9409                            )
9410                            .map(SafeExitTimelockErrors::TimelockInsufficientDelay)
9411                    }
9412                    TimelockInsufficientDelay
9413                },
9414                {
9415                    fn TimelockUnexpectedOperationState(
9416                        data: &[u8],
9417                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9418                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw_validate(
9419                                data,
9420                            )
9421                            .map(
9422                                SafeExitTimelockErrors::TimelockUnexpectedOperationState,
9423                            )
9424                    }
9425                    TimelockUnexpectedOperationState
9426                },
9427                {
9428                    fn AccessControlBadConfirmation(
9429                        data: &[u8],
9430                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9431                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
9432                                data,
9433                            )
9434                            .map(SafeExitTimelockErrors::AccessControlBadConfirmation)
9435                    }
9436                    AccessControlBadConfirmation
9437                },
9438                {
9439                    fn TimelockUnexecutedPredecessor(
9440                        data: &[u8],
9441                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9442                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw_validate(
9443                                data,
9444                            )
9445                            .map(SafeExitTimelockErrors::TimelockUnexecutedPredecessor)
9446                    }
9447                    TimelockUnexecutedPredecessor
9448                },
9449                {
9450                    fn AccessControlUnauthorizedAccount(
9451                        data: &[u8],
9452                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9453                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
9454                                data,
9455                            )
9456                            .map(
9457                                SafeExitTimelockErrors::AccessControlUnauthorizedAccount,
9458                            )
9459                    }
9460                    AccessControlUnauthorizedAccount
9461                },
9462                {
9463                    fn TimelockUnauthorizedCaller(
9464                        data: &[u8],
9465                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9466                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw_validate(
9467                                data,
9468                            )
9469                            .map(SafeExitTimelockErrors::TimelockUnauthorizedCaller)
9470                    }
9471                    TimelockUnauthorizedCaller
9472                },
9473                {
9474                    fn TimelockInvalidOperationLength(
9475                        data: &[u8],
9476                    ) -> alloy_sol_types::Result<SafeExitTimelockErrors> {
9477                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
9478                                data,
9479                            )
9480                            .map(SafeExitTimelockErrors::TimelockInvalidOperationLength)
9481                    }
9482                    TimelockInvalidOperationLength
9483                },
9484            ];
9485            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9486                return Err(
9487                    alloy_sol_types::Error::unknown_selector(
9488                        <Self as alloy_sol_types::SolInterface>::NAME,
9489                        selector,
9490                    ),
9491                );
9492            };
9493            DECODE_VALIDATE_SHIMS[idx](data)
9494        }
9495        #[inline]
9496        fn abi_encoded_size(&self) -> usize {
9497            match self {
9498                Self::AccessControlBadConfirmation(inner) => {
9499                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
9500                        inner,
9501                    )
9502                }
9503                Self::AccessControlUnauthorizedAccount(inner) => {
9504                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
9505                        inner,
9506                    )
9507                }
9508                Self::FailedInnerCall(inner) => {
9509                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
9510                        inner,
9511                    )
9512                }
9513                Self::TimelockInsufficientDelay(inner) => {
9514                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encoded_size(
9515                        inner,
9516                    )
9517                }
9518                Self::TimelockInvalidOperationLength(inner) => {
9519                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encoded_size(
9520                        inner,
9521                    )
9522                }
9523                Self::TimelockUnauthorizedCaller(inner) => {
9524                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encoded_size(
9525                        inner,
9526                    )
9527                }
9528                Self::TimelockUnexecutedPredecessor(inner) => {
9529                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encoded_size(
9530                        inner,
9531                    )
9532                }
9533                Self::TimelockUnexpectedOperationState(inner) => {
9534                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encoded_size(
9535                        inner,
9536                    )
9537                }
9538            }
9539        }
9540        #[inline]
9541        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9542            match self {
9543                Self::AccessControlBadConfirmation(inner) => {
9544                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
9545                        inner,
9546                        out,
9547                    )
9548                }
9549                Self::AccessControlUnauthorizedAccount(inner) => {
9550                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
9551                        inner,
9552                        out,
9553                    )
9554                }
9555                Self::FailedInnerCall(inner) => {
9556                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
9557                        inner,
9558                        out,
9559                    )
9560                }
9561                Self::TimelockInsufficientDelay(inner) => {
9562                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encode_raw(
9563                        inner,
9564                        out,
9565                    )
9566                }
9567                Self::TimelockInvalidOperationLength(inner) => {
9568                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encode_raw(
9569                        inner,
9570                        out,
9571                    )
9572                }
9573                Self::TimelockUnauthorizedCaller(inner) => {
9574                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encode_raw(
9575                        inner,
9576                        out,
9577                    )
9578                }
9579                Self::TimelockUnexecutedPredecessor(inner) => {
9580                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encode_raw(
9581                        inner,
9582                        out,
9583                    )
9584                }
9585                Self::TimelockUnexpectedOperationState(inner) => {
9586                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encode_raw(
9587                        inner,
9588                        out,
9589                    )
9590                }
9591            }
9592        }
9593    }
9594    ///Container for all the [`SafeExitTimelock`](self) events.
9595    #[derive(Clone)]
9596    #[derive(serde::Serialize, serde::Deserialize)]
9597    #[derive(Debug, PartialEq, Eq, Hash)]
9598    pub enum SafeExitTimelockEvents {
9599        #[allow(missing_docs)]
9600        CallExecuted(CallExecuted),
9601        #[allow(missing_docs)]
9602        CallSalt(CallSalt),
9603        #[allow(missing_docs)]
9604        CallScheduled(CallScheduled),
9605        #[allow(missing_docs)]
9606        Cancelled(Cancelled),
9607        #[allow(missing_docs)]
9608        MinDelayChange(MinDelayChange),
9609        #[allow(missing_docs)]
9610        RoleAdminChanged(RoleAdminChanged),
9611        #[allow(missing_docs)]
9612        RoleGranted(RoleGranted),
9613        #[allow(missing_docs)]
9614        RoleRevoked(RoleRevoked),
9615    }
9616    impl SafeExitTimelockEvents {
9617        /// All the selectors of this enum.
9618        ///
9619        /// Note that the selectors might not be in the same order as the variants.
9620        /// No guarantees are made about the order of the selectors.
9621        ///
9622        /// Prefer using `SolInterface` methods instead.
9623        pub const SELECTORS: &'static [[u8; 32usize]] = &[
9624            [
9625                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
9626                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
9627                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
9628            ],
9629            [
9630                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
9631                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
9632                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
9633            ],
9634            [
9635                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9636                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9637                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9638            ],
9639            [
9640                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
9641                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
9642                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
9643            ],
9644            [
9645                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
9646                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
9647                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
9648            ],
9649            [
9650                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9651                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9652                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9653            ],
9654            [
9655                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
9656                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
9657                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
9658            ],
9659            [
9660                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9661                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9662                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9663            ],
9664        ];
9665        /// The names of the variants in the same order as `SELECTORS`.
9666        pub const VARIANT_NAMES: &'static [&'static str] = &[
9667            ::core::stringify!(MinDelayChange),
9668            ::core::stringify!(CallSalt),
9669            ::core::stringify!(RoleGranted),
9670            ::core::stringify!(CallScheduled),
9671            ::core::stringify!(Cancelled),
9672            ::core::stringify!(RoleAdminChanged),
9673            ::core::stringify!(CallExecuted),
9674            ::core::stringify!(RoleRevoked),
9675        ];
9676        /// The signatures in the same order as `SELECTORS`.
9677        pub const SIGNATURES: &'static [&'static str] = &[
9678            <MinDelayChange as alloy_sol_types::SolEvent>::SIGNATURE,
9679            <CallSalt as alloy_sol_types::SolEvent>::SIGNATURE,
9680            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
9681            <CallScheduled as alloy_sol_types::SolEvent>::SIGNATURE,
9682            <Cancelled as alloy_sol_types::SolEvent>::SIGNATURE,
9683            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
9684            <CallExecuted as alloy_sol_types::SolEvent>::SIGNATURE,
9685            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
9686        ];
9687        /// Returns the signature for the given selector, if known.
9688        #[inline]
9689        pub fn signature_by_selector(
9690            selector: [u8; 32usize],
9691        ) -> ::core::option::Option<&'static str> {
9692            match Self::SELECTORS.binary_search(&selector) {
9693                ::core::result::Result::Ok(idx) => {
9694                    ::core::option::Option::Some(Self::SIGNATURES[idx])
9695                }
9696                ::core::result::Result::Err(_) => ::core::option::Option::None,
9697            }
9698        }
9699        /// Returns the enum variant name for the given selector, if known.
9700        #[inline]
9701        pub fn name_by_selector(
9702            selector: [u8; 32usize],
9703        ) -> ::core::option::Option<&'static str> {
9704            let sig = Self::signature_by_selector(selector)?;
9705            sig.split_once('(').map(|(name, _)| name)
9706        }
9707    }
9708    #[automatically_derived]
9709    impl alloy_sol_types::SolEventInterface for SafeExitTimelockEvents {
9710        const NAME: &'static str = "SafeExitTimelockEvents";
9711        const COUNT: usize = 8usize;
9712        fn decode_raw_log(
9713            topics: &[alloy_sol_types::Word],
9714            data: &[u8],
9715        ) -> alloy_sol_types::Result<Self> {
9716            match topics.first().copied() {
9717                Some(<CallExecuted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9718                    <CallExecuted as alloy_sol_types::SolEvent>::decode_raw_log(
9719                            topics,
9720                            data,
9721                        )
9722                        .map(Self::CallExecuted)
9723                }
9724                Some(<CallSalt as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9725                    <CallSalt as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
9726                        .map(Self::CallSalt)
9727                }
9728                Some(<CallScheduled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9729                    <CallScheduled as alloy_sol_types::SolEvent>::decode_raw_log(
9730                            topics,
9731                            data,
9732                        )
9733                        .map(Self::CallScheduled)
9734                }
9735                Some(<Cancelled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9736                    <Cancelled as alloy_sol_types::SolEvent>::decode_raw_log(
9737                            topics,
9738                            data,
9739                        )
9740                        .map(Self::Cancelled)
9741                }
9742                Some(<MinDelayChange as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9743                    <MinDelayChange as alloy_sol_types::SolEvent>::decode_raw_log(
9744                            topics,
9745                            data,
9746                        )
9747                        .map(Self::MinDelayChange)
9748                }
9749                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9750                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
9751                            topics,
9752                            data,
9753                        )
9754                        .map(Self::RoleAdminChanged)
9755                }
9756                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9757                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
9758                            topics,
9759                            data,
9760                        )
9761                        .map(Self::RoleGranted)
9762                }
9763                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9764                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
9765                            topics,
9766                            data,
9767                        )
9768                        .map(Self::RoleRevoked)
9769                }
9770                _ => {
9771                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
9772                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
9773                        log: alloy_sol_types::private::Box::new(
9774                            alloy_sol_types::private::LogData::new_unchecked(
9775                                topics.to_vec(),
9776                                data.to_vec().into(),
9777                            ),
9778                        ),
9779                    })
9780                }
9781            }
9782        }
9783    }
9784    #[automatically_derived]
9785    impl alloy_sol_types::private::IntoLogData for SafeExitTimelockEvents {
9786        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9787            match self {
9788                Self::CallExecuted(inner) => {
9789                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9790                }
9791                Self::CallSalt(inner) => {
9792                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9793                }
9794                Self::CallScheduled(inner) => {
9795                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9796                }
9797                Self::Cancelled(inner) => {
9798                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9799                }
9800                Self::MinDelayChange(inner) => {
9801                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9802                }
9803                Self::RoleAdminChanged(inner) => {
9804                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9805                }
9806                Self::RoleGranted(inner) => {
9807                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9808                }
9809                Self::RoleRevoked(inner) => {
9810                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9811                }
9812            }
9813        }
9814        fn into_log_data(self) -> alloy_sol_types::private::LogData {
9815            match self {
9816                Self::CallExecuted(inner) => {
9817                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9818                }
9819                Self::CallSalt(inner) => {
9820                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9821                }
9822                Self::CallScheduled(inner) => {
9823                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9824                }
9825                Self::Cancelled(inner) => {
9826                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9827                }
9828                Self::MinDelayChange(inner) => {
9829                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9830                }
9831                Self::RoleAdminChanged(inner) => {
9832                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9833                }
9834                Self::RoleGranted(inner) => {
9835                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9836                }
9837                Self::RoleRevoked(inner) => {
9838                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9839                }
9840            }
9841        }
9842    }
9843    use alloy::contract as alloy_contract;
9844    /**Creates a new wrapper around an on-chain [`SafeExitTimelock`](self) contract instance.
9845
9846See the [wrapper's documentation](`SafeExitTimelockInstance`) for more details.*/
9847    #[inline]
9848    pub const fn new<
9849        P: alloy_contract::private::Provider<N>,
9850        N: alloy_contract::private::Network,
9851    >(
9852        address: alloy_sol_types::private::Address,
9853        __provider: P,
9854    ) -> SafeExitTimelockInstance<P, N> {
9855        SafeExitTimelockInstance::<P, N>::new(address, __provider)
9856    }
9857    /**Deploys this contract using the given `provider` and constructor arguments, if any.
9858
9859Returns a new instance of the contract, if the deployment was successful.
9860
9861For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
9862    #[inline]
9863    pub fn deploy<
9864        P: alloy_contract::private::Provider<N>,
9865        N: alloy_contract::private::Network,
9866    >(
9867        __provider: P,
9868        minDelay: alloy::sol_types::private::primitives::aliases::U256,
9869        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9870        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9871        admin: alloy::sol_types::private::Address,
9872    ) -> impl ::core::future::Future<
9873        Output = alloy_contract::Result<SafeExitTimelockInstance<P, N>>,
9874    > {
9875        SafeExitTimelockInstance::<
9876            P,
9877            N,
9878        >::deploy(__provider, minDelay, proposers, executors, admin)
9879    }
9880    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
9881and constructor arguments, if any.
9882
9883This is a simple wrapper around creating a `RawCallBuilder` with the data set to
9884the bytecode concatenated with the constructor's ABI-encoded arguments.*/
9885    #[inline]
9886    pub fn deploy_builder<
9887        P: alloy_contract::private::Provider<N>,
9888        N: alloy_contract::private::Network,
9889    >(
9890        __provider: P,
9891        minDelay: alloy::sol_types::private::primitives::aliases::U256,
9892        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9893        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9894        admin: alloy::sol_types::private::Address,
9895    ) -> alloy_contract::RawCallBuilder<P, N> {
9896        SafeExitTimelockInstance::<
9897            P,
9898            N,
9899        >::deploy_builder(__provider, minDelay, proposers, executors, admin)
9900    }
9901    /**A [`SafeExitTimelock`](self) instance.
9902
9903Contains type-safe methods for interacting with an on-chain instance of the
9904[`SafeExitTimelock`](self) contract located at a given `address`, using a given
9905provider `P`.
9906
9907If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
9908documentation on how to provide it), the `deploy` and `deploy_builder` methods can
9909be used to deploy a new instance of the contract.
9910
9911See the [module-level documentation](self) for all the available methods.*/
9912    #[derive(Clone)]
9913    pub struct SafeExitTimelockInstance<P, N = alloy_contract::private::Ethereum> {
9914        address: alloy_sol_types::private::Address,
9915        provider: P,
9916        _network: ::core::marker::PhantomData<N>,
9917    }
9918    #[automatically_derived]
9919    impl<P, N> ::core::fmt::Debug for SafeExitTimelockInstance<P, N> {
9920        #[inline]
9921        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9922            f.debug_tuple("SafeExitTimelockInstance").field(&self.address).finish()
9923        }
9924    }
9925    /// Instantiation and getters/setters.
9926    impl<
9927        P: alloy_contract::private::Provider<N>,
9928        N: alloy_contract::private::Network,
9929    > SafeExitTimelockInstance<P, N> {
9930        /**Creates a new wrapper around an on-chain [`SafeExitTimelock`](self) contract instance.
9931
9932See the [wrapper's documentation](`SafeExitTimelockInstance`) for more details.*/
9933        #[inline]
9934        pub const fn new(
9935            address: alloy_sol_types::private::Address,
9936            __provider: P,
9937        ) -> Self {
9938            Self {
9939                address,
9940                provider: __provider,
9941                _network: ::core::marker::PhantomData,
9942            }
9943        }
9944        /**Deploys this contract using the given `provider` and constructor arguments, if any.
9945
9946Returns a new instance of the contract, if the deployment was successful.
9947
9948For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
9949        #[inline]
9950        pub async fn deploy(
9951            __provider: P,
9952            minDelay: alloy::sol_types::private::primitives::aliases::U256,
9953            proposers: alloy::sol_types::private::Vec<
9954                alloy::sol_types::private::Address,
9955            >,
9956            executors: alloy::sol_types::private::Vec<
9957                alloy::sol_types::private::Address,
9958            >,
9959            admin: alloy::sol_types::private::Address,
9960        ) -> alloy_contract::Result<SafeExitTimelockInstance<P, N>> {
9961            let call_builder = Self::deploy_builder(
9962                __provider,
9963                minDelay,
9964                proposers,
9965                executors,
9966                admin,
9967            );
9968            let contract_address = call_builder.deploy().await?;
9969            Ok(Self::new(contract_address, call_builder.provider))
9970        }
9971        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
9972and constructor arguments, if any.
9973
9974This is a simple wrapper around creating a `RawCallBuilder` with the data set to
9975the bytecode concatenated with the constructor's ABI-encoded arguments.*/
9976        #[inline]
9977        pub fn deploy_builder(
9978            __provider: P,
9979            minDelay: alloy::sol_types::private::primitives::aliases::U256,
9980            proposers: alloy::sol_types::private::Vec<
9981                alloy::sol_types::private::Address,
9982            >,
9983            executors: alloy::sol_types::private::Vec<
9984                alloy::sol_types::private::Address,
9985            >,
9986            admin: alloy::sol_types::private::Address,
9987        ) -> alloy_contract::RawCallBuilder<P, N> {
9988            alloy_contract::RawCallBuilder::new_raw_deploy(
9989                __provider,
9990                [
9991                    &BYTECODE[..],
9992                    &alloy_sol_types::SolConstructor::abi_encode(
9993                        &constructorCall {
9994                            minDelay,
9995                            proposers,
9996                            executors,
9997                            admin,
9998                        },
9999                    )[..],
10000                ]
10001                    .concat()
10002                    .into(),
10003            )
10004        }
10005        /// Returns a reference to the address.
10006        #[inline]
10007        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10008            &self.address
10009        }
10010        /// Sets the address.
10011        #[inline]
10012        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10013            self.address = address;
10014        }
10015        /// Sets the address and returns `self`.
10016        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10017            self.set_address(address);
10018            self
10019        }
10020        /// Returns a reference to the provider.
10021        #[inline]
10022        pub const fn provider(&self) -> &P {
10023            &self.provider
10024        }
10025    }
10026    impl<P: ::core::clone::Clone, N> SafeExitTimelockInstance<&P, N> {
10027        /// Clones the provider and returns a new instance with the cloned provider.
10028        #[inline]
10029        pub fn with_cloned_provider(self) -> SafeExitTimelockInstance<P, N> {
10030            SafeExitTimelockInstance {
10031                address: self.address,
10032                provider: ::core::clone::Clone::clone(&self.provider),
10033                _network: ::core::marker::PhantomData,
10034            }
10035        }
10036    }
10037    /// Function calls.
10038    impl<
10039        P: alloy_contract::private::Provider<N>,
10040        N: alloy_contract::private::Network,
10041    > SafeExitTimelockInstance<P, N> {
10042        /// Creates a new call builder using this contract instance's provider and address.
10043        ///
10044        /// Note that the call can be any function call, not just those defined in this
10045        /// contract. Prefer using the other methods for building type-safe contract calls.
10046        pub fn call_builder<C: alloy_sol_types::SolCall>(
10047            &self,
10048            call: &C,
10049        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
10050            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10051        }
10052        ///Creates a new call builder for the [`CANCELLER_ROLE`] function.
10053        pub fn CANCELLER_ROLE(
10054            &self,
10055        ) -> alloy_contract::SolCallBuilder<&P, CANCELLER_ROLECall, N> {
10056            self.call_builder(&CANCELLER_ROLECall)
10057        }
10058        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
10059        pub fn DEFAULT_ADMIN_ROLE(
10060            &self,
10061        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
10062            self.call_builder(&DEFAULT_ADMIN_ROLECall)
10063        }
10064        ///Creates a new call builder for the [`EXECUTOR_ROLE`] function.
10065        pub fn EXECUTOR_ROLE(
10066            &self,
10067        ) -> alloy_contract::SolCallBuilder<&P, EXECUTOR_ROLECall, N> {
10068            self.call_builder(&EXECUTOR_ROLECall)
10069        }
10070        ///Creates a new call builder for the [`PROPOSER_ROLE`] function.
10071        pub fn PROPOSER_ROLE(
10072            &self,
10073        ) -> alloy_contract::SolCallBuilder<&P, PROPOSER_ROLECall, N> {
10074            self.call_builder(&PROPOSER_ROLECall)
10075        }
10076        ///Creates a new call builder for the [`cancel`] function.
10077        pub fn cancel(
10078            &self,
10079            id: alloy::sol_types::private::FixedBytes<32>,
10080        ) -> alloy_contract::SolCallBuilder<&P, cancelCall, N> {
10081            self.call_builder(&cancelCall { id })
10082        }
10083        ///Creates a new call builder for the [`execute`] function.
10084        pub fn execute(
10085            &self,
10086            target: alloy::sol_types::private::Address,
10087            value: alloy::sol_types::private::primitives::aliases::U256,
10088            payload: alloy::sol_types::private::Bytes,
10089            predecessor: alloy::sol_types::private::FixedBytes<32>,
10090            salt: alloy::sol_types::private::FixedBytes<32>,
10091        ) -> alloy_contract::SolCallBuilder<&P, executeCall, N> {
10092            self.call_builder(
10093                &executeCall {
10094                    target,
10095                    value,
10096                    payload,
10097                    predecessor,
10098                    salt,
10099                },
10100            )
10101        }
10102        ///Creates a new call builder for the [`executeBatch`] function.
10103        pub fn executeBatch(
10104            &self,
10105            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10106            values: alloy::sol_types::private::Vec<
10107                alloy::sol_types::private::primitives::aliases::U256,
10108            >,
10109            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10110            predecessor: alloy::sol_types::private::FixedBytes<32>,
10111            salt: alloy::sol_types::private::FixedBytes<32>,
10112        ) -> alloy_contract::SolCallBuilder<&P, executeBatchCall, N> {
10113            self.call_builder(
10114                &executeBatchCall {
10115                    targets,
10116                    values,
10117                    payloads,
10118                    predecessor,
10119                    salt,
10120                },
10121            )
10122        }
10123        ///Creates a new call builder for the [`getMinDelay`] function.
10124        pub fn getMinDelay(
10125            &self,
10126        ) -> alloy_contract::SolCallBuilder<&P, getMinDelayCall, N> {
10127            self.call_builder(&getMinDelayCall)
10128        }
10129        ///Creates a new call builder for the [`getOperationState`] function.
10130        pub fn getOperationState(
10131            &self,
10132            id: alloy::sol_types::private::FixedBytes<32>,
10133        ) -> alloy_contract::SolCallBuilder<&P, getOperationStateCall, N> {
10134            self.call_builder(&getOperationStateCall { id })
10135        }
10136        ///Creates a new call builder for the [`getRoleAdmin`] function.
10137        pub fn getRoleAdmin(
10138            &self,
10139            role: alloy::sol_types::private::FixedBytes<32>,
10140        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
10141            self.call_builder(&getRoleAdminCall { role })
10142        }
10143        ///Creates a new call builder for the [`getTimestamp`] function.
10144        pub fn getTimestamp(
10145            &self,
10146            id: alloy::sol_types::private::FixedBytes<32>,
10147        ) -> alloy_contract::SolCallBuilder<&P, getTimestampCall, N> {
10148            self.call_builder(&getTimestampCall { id })
10149        }
10150        ///Creates a new call builder for the [`grantRole`] function.
10151        pub fn grantRole(
10152            &self,
10153            role: alloy::sol_types::private::FixedBytes<32>,
10154            account: alloy::sol_types::private::Address,
10155        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
10156            self.call_builder(&grantRoleCall { role, account })
10157        }
10158        ///Creates a new call builder for the [`hasRole`] function.
10159        pub fn hasRole(
10160            &self,
10161            role: alloy::sol_types::private::FixedBytes<32>,
10162            account: alloy::sol_types::private::Address,
10163        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
10164            self.call_builder(&hasRoleCall { role, account })
10165        }
10166        ///Creates a new call builder for the [`hashOperation`] function.
10167        pub fn hashOperation(
10168            &self,
10169            target: alloy::sol_types::private::Address,
10170            value: alloy::sol_types::private::primitives::aliases::U256,
10171            data: alloy::sol_types::private::Bytes,
10172            predecessor: alloy::sol_types::private::FixedBytes<32>,
10173            salt: alloy::sol_types::private::FixedBytes<32>,
10174        ) -> alloy_contract::SolCallBuilder<&P, hashOperationCall, N> {
10175            self.call_builder(
10176                &hashOperationCall {
10177                    target,
10178                    value,
10179                    data,
10180                    predecessor,
10181                    salt,
10182                },
10183            )
10184        }
10185        ///Creates a new call builder for the [`hashOperationBatch`] function.
10186        pub fn hashOperationBatch(
10187            &self,
10188            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10189            values: alloy::sol_types::private::Vec<
10190                alloy::sol_types::private::primitives::aliases::U256,
10191            >,
10192            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10193            predecessor: alloy::sol_types::private::FixedBytes<32>,
10194            salt: alloy::sol_types::private::FixedBytes<32>,
10195        ) -> alloy_contract::SolCallBuilder<&P, hashOperationBatchCall, N> {
10196            self.call_builder(
10197                &hashOperationBatchCall {
10198                    targets,
10199                    values,
10200                    payloads,
10201                    predecessor,
10202                    salt,
10203                },
10204            )
10205        }
10206        ///Creates a new call builder for the [`isOperation`] function.
10207        pub fn isOperation(
10208            &self,
10209            id: alloy::sol_types::private::FixedBytes<32>,
10210        ) -> alloy_contract::SolCallBuilder<&P, isOperationCall, N> {
10211            self.call_builder(&isOperationCall { id })
10212        }
10213        ///Creates a new call builder for the [`isOperationDone`] function.
10214        pub fn isOperationDone(
10215            &self,
10216            id: alloy::sol_types::private::FixedBytes<32>,
10217        ) -> alloy_contract::SolCallBuilder<&P, isOperationDoneCall, N> {
10218            self.call_builder(&isOperationDoneCall { id })
10219        }
10220        ///Creates a new call builder for the [`isOperationPending`] function.
10221        pub fn isOperationPending(
10222            &self,
10223            id: alloy::sol_types::private::FixedBytes<32>,
10224        ) -> alloy_contract::SolCallBuilder<&P, isOperationPendingCall, N> {
10225            self.call_builder(&isOperationPendingCall { id })
10226        }
10227        ///Creates a new call builder for the [`isOperationReady`] function.
10228        pub fn isOperationReady(
10229            &self,
10230            id: alloy::sol_types::private::FixedBytes<32>,
10231        ) -> alloy_contract::SolCallBuilder<&P, isOperationReadyCall, N> {
10232            self.call_builder(&isOperationReadyCall { id })
10233        }
10234        ///Creates a new call builder for the [`onERC1155BatchReceived`] function.
10235        pub fn onERC1155BatchReceived(
10236            &self,
10237            _0: alloy::sol_types::private::Address,
10238            _1: alloy::sol_types::private::Address,
10239            _2: alloy::sol_types::private::Vec<
10240                alloy::sol_types::private::primitives::aliases::U256,
10241            >,
10242            _3: alloy::sol_types::private::Vec<
10243                alloy::sol_types::private::primitives::aliases::U256,
10244            >,
10245            _4: alloy::sol_types::private::Bytes,
10246        ) -> alloy_contract::SolCallBuilder<&P, onERC1155BatchReceivedCall, N> {
10247            self.call_builder(
10248                &onERC1155BatchReceivedCall {
10249                    _0,
10250                    _1,
10251                    _2,
10252                    _3,
10253                    _4,
10254                },
10255            )
10256        }
10257        ///Creates a new call builder for the [`onERC1155Received`] function.
10258        pub fn onERC1155Received(
10259            &self,
10260            _0: alloy::sol_types::private::Address,
10261            _1: alloy::sol_types::private::Address,
10262            _2: alloy::sol_types::private::primitives::aliases::U256,
10263            _3: alloy::sol_types::private::primitives::aliases::U256,
10264            _4: alloy::sol_types::private::Bytes,
10265        ) -> alloy_contract::SolCallBuilder<&P, onERC1155ReceivedCall, N> {
10266            self.call_builder(
10267                &onERC1155ReceivedCall {
10268                    _0,
10269                    _1,
10270                    _2,
10271                    _3,
10272                    _4,
10273                },
10274            )
10275        }
10276        ///Creates a new call builder for the [`onERC721Received`] function.
10277        pub fn onERC721Received(
10278            &self,
10279            _0: alloy::sol_types::private::Address,
10280            _1: alloy::sol_types::private::Address,
10281            _2: alloy::sol_types::private::primitives::aliases::U256,
10282            _3: alloy::sol_types::private::Bytes,
10283        ) -> alloy_contract::SolCallBuilder<&P, onERC721ReceivedCall, N> {
10284            self.call_builder(
10285                &onERC721ReceivedCall {
10286                    _0,
10287                    _1,
10288                    _2,
10289                    _3,
10290                },
10291            )
10292        }
10293        ///Creates a new call builder for the [`renounceRole`] function.
10294        pub fn renounceRole(
10295            &self,
10296            role: alloy::sol_types::private::FixedBytes<32>,
10297            callerConfirmation: alloy::sol_types::private::Address,
10298        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
10299            self.call_builder(
10300                &renounceRoleCall {
10301                    role,
10302                    callerConfirmation,
10303                },
10304            )
10305        }
10306        ///Creates a new call builder for the [`revokeRole`] function.
10307        pub fn revokeRole(
10308            &self,
10309            role: alloy::sol_types::private::FixedBytes<32>,
10310            account: alloy::sol_types::private::Address,
10311        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
10312            self.call_builder(&revokeRoleCall { role, account })
10313        }
10314        ///Creates a new call builder for the [`schedule`] function.
10315        pub fn schedule(
10316            &self,
10317            target: alloy::sol_types::private::Address,
10318            value: alloy::sol_types::private::primitives::aliases::U256,
10319            data: alloy::sol_types::private::Bytes,
10320            predecessor: alloy::sol_types::private::FixedBytes<32>,
10321            salt: alloy::sol_types::private::FixedBytes<32>,
10322            delay: alloy::sol_types::private::primitives::aliases::U256,
10323        ) -> alloy_contract::SolCallBuilder<&P, scheduleCall, N> {
10324            self.call_builder(
10325                &scheduleCall {
10326                    target,
10327                    value,
10328                    data,
10329                    predecessor,
10330                    salt,
10331                    delay,
10332                },
10333            )
10334        }
10335        ///Creates a new call builder for the [`scheduleBatch`] function.
10336        pub fn scheduleBatch(
10337            &self,
10338            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10339            values: alloy::sol_types::private::Vec<
10340                alloy::sol_types::private::primitives::aliases::U256,
10341            >,
10342            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10343            predecessor: alloy::sol_types::private::FixedBytes<32>,
10344            salt: alloy::sol_types::private::FixedBytes<32>,
10345            delay: alloy::sol_types::private::primitives::aliases::U256,
10346        ) -> alloy_contract::SolCallBuilder<&P, scheduleBatchCall, N> {
10347            self.call_builder(
10348                &scheduleBatchCall {
10349                    targets,
10350                    values,
10351                    payloads,
10352                    predecessor,
10353                    salt,
10354                    delay,
10355                },
10356            )
10357        }
10358        ///Creates a new call builder for the [`supportsInterface`] function.
10359        pub fn supportsInterface(
10360            &self,
10361            interfaceId: alloy::sol_types::private::FixedBytes<4>,
10362        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
10363            self.call_builder(
10364                &supportsInterfaceCall {
10365                    interfaceId,
10366                },
10367            )
10368        }
10369        ///Creates a new call builder for the [`updateDelay`] function.
10370        pub fn updateDelay(
10371            &self,
10372            newDelay: alloy::sol_types::private::primitives::aliases::U256,
10373        ) -> alloy_contract::SolCallBuilder<&P, updateDelayCall, N> {
10374            self.call_builder(&updateDelayCall { newDelay })
10375        }
10376    }
10377    /// Event filters.
10378    impl<
10379        P: alloy_contract::private::Provider<N>,
10380        N: alloy_contract::private::Network,
10381    > SafeExitTimelockInstance<P, N> {
10382        /// Creates a new event filter using this contract instance's provider and address.
10383        ///
10384        /// Note that the type can be any event, not just those defined in this contract.
10385        /// Prefer using the other methods for building type-safe event filters.
10386        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10387            &self,
10388        ) -> alloy_contract::Event<&P, E, N> {
10389            alloy_contract::Event::new_sol(&self.provider, &self.address)
10390        }
10391        ///Creates a new event filter for the [`CallExecuted`] event.
10392        pub fn CallExecuted_filter(&self) -> alloy_contract::Event<&P, CallExecuted, N> {
10393            self.event_filter::<CallExecuted>()
10394        }
10395        ///Creates a new event filter for the [`CallSalt`] event.
10396        pub fn CallSalt_filter(&self) -> alloy_contract::Event<&P, CallSalt, N> {
10397            self.event_filter::<CallSalt>()
10398        }
10399        ///Creates a new event filter for the [`CallScheduled`] event.
10400        pub fn CallScheduled_filter(
10401            &self,
10402        ) -> alloy_contract::Event<&P, CallScheduled, N> {
10403            self.event_filter::<CallScheduled>()
10404        }
10405        ///Creates a new event filter for the [`Cancelled`] event.
10406        pub fn Cancelled_filter(&self) -> alloy_contract::Event<&P, Cancelled, N> {
10407            self.event_filter::<Cancelled>()
10408        }
10409        ///Creates a new event filter for the [`MinDelayChange`] event.
10410        pub fn MinDelayChange_filter(
10411            &self,
10412        ) -> alloy_contract::Event<&P, MinDelayChange, N> {
10413            self.event_filter::<MinDelayChange>()
10414        }
10415        ///Creates a new event filter for the [`RoleAdminChanged`] event.
10416        pub fn RoleAdminChanged_filter(
10417            &self,
10418        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
10419            self.event_filter::<RoleAdminChanged>()
10420        }
10421        ///Creates a new event filter for the [`RoleGranted`] event.
10422        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
10423            self.event_filter::<RoleGranted>()
10424        }
10425        ///Creates a new event filter for the [`RoleRevoked`] event.
10426        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
10427            self.event_filter::<RoleRevoked>()
10428        }
10429    }
10430}