hotshot_contract_adapter/bindings/
ops_timelock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library TimelockController {
6    type OperationState is uint8;
7}
8```*/
9#[allow(
10    non_camel_case_types,
11    non_snake_case,
12    clippy::pub_underscore_fields,
13    clippy::style,
14    clippy::empty_structs_with_brackets
15)]
16pub mod TimelockController {
17    use super::*;
18    use alloy::sol_types as alloy_sol_types;
19    #[derive(serde::Serialize, serde::Deserialize)]
20    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22    #[derive(Clone)]
23    pub struct OperationState(u8);
24    const _: () = {
25        use alloy::sol_types as alloy_sol_types;
26        #[automatically_derived]
27        impl alloy_sol_types::private::SolTypeValue<OperationState> for u8 {
28            #[inline]
29            fn stv_to_tokens(
30                &self,
31            ) -> <alloy::sol_types::sol_data::Uint<
32                8,
33            > as alloy_sol_types::SolType>::Token<'_> {
34                alloy_sol_types::private::SolTypeValue::<
35                    alloy::sol_types::sol_data::Uint<8>,
36                >::stv_to_tokens(self)
37            }
38            #[inline]
39            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
40                <alloy::sol_types::sol_data::Uint<
41                    8,
42                > as alloy_sol_types::SolType>::tokenize(self)
43                    .0
44            }
45            #[inline]
46            fn stv_abi_encode_packed_to(
47                &self,
48                out: &mut alloy_sol_types::private::Vec<u8>,
49            ) {
50                <alloy::sol_types::sol_data::Uint<
51                    8,
52                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
53            }
54            #[inline]
55            fn stv_abi_packed_encoded_size(&self) -> usize {
56                <alloy::sol_types::sol_data::Uint<
57                    8,
58                > as alloy_sol_types::SolType>::abi_encoded_size(self)
59            }
60        }
61        #[automatically_derived]
62        impl OperationState {
63            /// The Solidity type name.
64            pub const NAME: &'static str = stringify!(@ name);
65            /// Convert from the underlying value type.
66            #[inline]
67            pub const fn from_underlying(value: u8) -> Self {
68                Self(value)
69            }
70            /// Return the underlying value.
71            #[inline]
72            pub const fn into_underlying(self) -> u8 {
73                self.0
74            }
75            /// Return the single encoding of this value, delegating to the
76            /// underlying type.
77            #[inline]
78            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
79                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
80            }
81            /// Return the packed encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
86            }
87        }
88        #[automatically_derived]
89        impl From<u8> for OperationState {
90            fn from(value: u8) -> Self {
91                Self::from_underlying(value)
92            }
93        }
94        #[automatically_derived]
95        impl From<OperationState> for u8 {
96            fn from(value: OperationState) -> Self {
97                value.into_underlying()
98            }
99        }
100        #[automatically_derived]
101        impl alloy_sol_types::SolType for OperationState {
102            type RustType = u8;
103            type Token<'a> = <alloy::sol_types::sol_data::Uint<
104                8,
105            > as alloy_sol_types::SolType>::Token<'a>;
106            const SOL_NAME: &'static str = Self::NAME;
107            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
108                8,
109            > as alloy_sol_types::SolType>::ENCODED_SIZE;
110            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
111                8,
112            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
113            #[inline]
114            fn valid_token(token: &Self::Token<'_>) -> bool {
115                Self::type_check(token).is_ok()
116            }
117            #[inline]
118            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
119                <alloy::sol_types::sol_data::Uint<
120                    8,
121                > as alloy_sol_types::SolType>::type_check(token)
122            }
123            #[inline]
124            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
125                <alloy::sol_types::sol_data::Uint<
126                    8,
127                > as alloy_sol_types::SolType>::detokenize(token)
128            }
129        }
130        #[automatically_derived]
131        impl alloy_sol_types::EventTopic for OperationState {
132            #[inline]
133            fn topic_preimage_length(rust: &Self::RustType) -> usize {
134                <alloy::sol_types::sol_data::Uint<
135                    8,
136                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
137            }
138            #[inline]
139            fn encode_topic_preimage(
140                rust: &Self::RustType,
141                out: &mut alloy_sol_types::private::Vec<u8>,
142            ) {
143                <alloy::sol_types::sol_data::Uint<
144                    8,
145                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
146            }
147            #[inline]
148            fn encode_topic(
149                rust: &Self::RustType,
150            ) -> alloy_sol_types::abi::token::WordToken {
151                <alloy::sol_types::sol_data::Uint<
152                    8,
153                > as alloy_sol_types::EventTopic>::encode_topic(rust)
154            }
155        }
156    };
157    use alloy::contract as alloy_contract;
158    /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
159
160See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
161    #[inline]
162    pub const fn new<
163        P: alloy_contract::private::Provider<N>,
164        N: alloy_contract::private::Network,
165    >(
166        address: alloy_sol_types::private::Address,
167        provider: P,
168    ) -> TimelockControllerInstance<P, N> {
169        TimelockControllerInstance::<P, N>::new(address, provider)
170    }
171    /**A [`TimelockController`](self) instance.
172
173Contains type-safe methods for interacting with an on-chain instance of the
174[`TimelockController`](self) contract located at a given `address`, using a given
175provider `P`.
176
177If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
178documentation on how to provide it), the `deploy` and `deploy_builder` methods can
179be used to deploy a new instance of the contract.
180
181See the [module-level documentation](self) for all the available methods.*/
182    #[derive(Clone)]
183    pub struct TimelockControllerInstance<P, N = alloy_contract::private::Ethereum> {
184        address: alloy_sol_types::private::Address,
185        provider: P,
186        _network: ::core::marker::PhantomData<N>,
187    }
188    #[automatically_derived]
189    impl<P, N> ::core::fmt::Debug for TimelockControllerInstance<P, N> {
190        #[inline]
191        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
192            f.debug_tuple("TimelockControllerInstance").field(&self.address).finish()
193        }
194    }
195    /// Instantiation and getters/setters.
196    #[automatically_derived]
197    impl<
198        P: alloy_contract::private::Provider<N>,
199        N: alloy_contract::private::Network,
200    > TimelockControllerInstance<P, N> {
201        /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
202
203See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
204        #[inline]
205        pub const fn new(
206            address: alloy_sol_types::private::Address,
207            provider: P,
208        ) -> Self {
209            Self {
210                address,
211                provider,
212                _network: ::core::marker::PhantomData,
213            }
214        }
215        /// Returns a reference to the address.
216        #[inline]
217        pub const fn address(&self) -> &alloy_sol_types::private::Address {
218            &self.address
219        }
220        /// Sets the address.
221        #[inline]
222        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
223            self.address = address;
224        }
225        /// Sets the address and returns `self`.
226        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
227            self.set_address(address);
228            self
229        }
230        /// Returns a reference to the provider.
231        #[inline]
232        pub const fn provider(&self) -> &P {
233            &self.provider
234        }
235    }
236    impl<P: ::core::clone::Clone, N> TimelockControllerInstance<&P, N> {
237        /// Clones the provider and returns a new instance with the cloned provider.
238        #[inline]
239        pub fn with_cloned_provider(self) -> TimelockControllerInstance<P, N> {
240            TimelockControllerInstance {
241                address: self.address,
242                provider: ::core::clone::Clone::clone(&self.provider),
243                _network: ::core::marker::PhantomData,
244            }
245        }
246    }
247    /// Function calls.
248    #[automatically_derived]
249    impl<
250        P: alloy_contract::private::Provider<N>,
251        N: alloy_contract::private::Network,
252    > TimelockControllerInstance<P, N> {
253        /// Creates a new call builder using this contract instance's provider and address.
254        ///
255        /// Note that the call can be any function call, not just those defined in this
256        /// contract. Prefer using the other methods for building type-safe contract calls.
257        pub fn call_builder<C: alloy_sol_types::SolCall>(
258            &self,
259            call: &C,
260        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
261            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
262        }
263    }
264    /// Event filters.
265    #[automatically_derived]
266    impl<
267        P: alloy_contract::private::Provider<N>,
268        N: alloy_contract::private::Network,
269    > TimelockControllerInstance<P, N> {
270        /// Creates a new event filter using this contract instance's provider and address.
271        ///
272        /// Note that the type can be any event, not just those defined in this contract.
273        /// Prefer using the other methods for building type-safe event filters.
274        pub fn event_filter<E: alloy_sol_types::SolEvent>(
275            &self,
276        ) -> alloy_contract::Event<&P, E, N> {
277            alloy_contract::Event::new_sol(&self.provider, &self.address)
278        }
279    }
280}
281/**
282
283Generated by the following Solidity interface...
284```solidity
285library TimelockController {
286    type OperationState is uint8;
287}
288
289interface OpsTimelock {
290    error AccessControlBadConfirmation();
291    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
292    error FailedInnerCall();
293    error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
294    error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
295    error TimelockUnauthorizedCaller(address caller);
296    error TimelockUnexecutedPredecessor(bytes32 predecessorId);
297    error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
298
299    event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
300    event CallSalt(bytes32 indexed id, bytes32 salt);
301    event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
302    event Cancelled(bytes32 indexed id);
303    event MinDelayChange(uint256 oldDuration, uint256 newDuration);
304    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
305    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
306    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
307
308    constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
309
310    receive() external payable;
311
312    function CANCELLER_ROLE() external view returns (bytes32);
313    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
314    function EXECUTOR_ROLE() external view returns (bytes32);
315    function PROPOSER_ROLE() external view returns (bytes32);
316    function cancel(bytes32 id) external;
317    function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
318    function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
319    function getMinDelay() external view returns (uint256);
320    function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
321    function getRoleAdmin(bytes32 role) external view returns (bytes32);
322    function getTimestamp(bytes32 id) external view returns (uint256);
323    function grantRole(bytes32 role, address account) external;
324    function hasRole(bytes32 role, address account) external view returns (bool);
325    function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
326    function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
327    function isOperation(bytes32 id) external view returns (bool);
328    function isOperationDone(bytes32 id) external view returns (bool);
329    function isOperationPending(bytes32 id) external view returns (bool);
330    function isOperationReady(bytes32 id) external view returns (bool);
331    function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
332    function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
333    function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
334    function renounceRole(bytes32 role, address callerConfirmation) external;
335    function revokeRole(bytes32 role, address account) external;
336    function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
337    function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
338    function supportsInterface(bytes4 interfaceId) external view returns (bool);
339    function updateDelay(uint256 newDelay) external;
340}
341```
342
343...which was generated by the following JSON ABI:
344```json
345[
346  {
347    "type": "constructor",
348    "inputs": [
349      {
350        "name": "minDelay",
351        "type": "uint256",
352        "internalType": "uint256"
353      },
354      {
355        "name": "proposers",
356        "type": "address[]",
357        "internalType": "address[]"
358      },
359      {
360        "name": "executors",
361        "type": "address[]",
362        "internalType": "address[]"
363      },
364      {
365        "name": "admin",
366        "type": "address",
367        "internalType": "address"
368      }
369    ],
370    "stateMutability": "nonpayable"
371  },
372  {
373    "type": "receive",
374    "stateMutability": "payable"
375  },
376  {
377    "type": "function",
378    "name": "CANCELLER_ROLE",
379    "inputs": [],
380    "outputs": [
381      {
382        "name": "",
383        "type": "bytes32",
384        "internalType": "bytes32"
385      }
386    ],
387    "stateMutability": "view"
388  },
389  {
390    "type": "function",
391    "name": "DEFAULT_ADMIN_ROLE",
392    "inputs": [],
393    "outputs": [
394      {
395        "name": "",
396        "type": "bytes32",
397        "internalType": "bytes32"
398      }
399    ],
400    "stateMutability": "view"
401  },
402  {
403    "type": "function",
404    "name": "EXECUTOR_ROLE",
405    "inputs": [],
406    "outputs": [
407      {
408        "name": "",
409        "type": "bytes32",
410        "internalType": "bytes32"
411      }
412    ],
413    "stateMutability": "view"
414  },
415  {
416    "type": "function",
417    "name": "PROPOSER_ROLE",
418    "inputs": [],
419    "outputs": [
420      {
421        "name": "",
422        "type": "bytes32",
423        "internalType": "bytes32"
424      }
425    ],
426    "stateMutability": "view"
427  },
428  {
429    "type": "function",
430    "name": "cancel",
431    "inputs": [
432      {
433        "name": "id",
434        "type": "bytes32",
435        "internalType": "bytes32"
436      }
437    ],
438    "outputs": [],
439    "stateMutability": "nonpayable"
440  },
441  {
442    "type": "function",
443    "name": "execute",
444    "inputs": [
445      {
446        "name": "target",
447        "type": "address",
448        "internalType": "address"
449      },
450      {
451        "name": "value",
452        "type": "uint256",
453        "internalType": "uint256"
454      },
455      {
456        "name": "payload",
457        "type": "bytes",
458        "internalType": "bytes"
459      },
460      {
461        "name": "predecessor",
462        "type": "bytes32",
463        "internalType": "bytes32"
464      },
465      {
466        "name": "salt",
467        "type": "bytes32",
468        "internalType": "bytes32"
469      }
470    ],
471    "outputs": [],
472    "stateMutability": "payable"
473  },
474  {
475    "type": "function",
476    "name": "executeBatch",
477    "inputs": [
478      {
479        "name": "targets",
480        "type": "address[]",
481        "internalType": "address[]"
482      },
483      {
484        "name": "values",
485        "type": "uint256[]",
486        "internalType": "uint256[]"
487      },
488      {
489        "name": "payloads",
490        "type": "bytes[]",
491        "internalType": "bytes[]"
492      },
493      {
494        "name": "predecessor",
495        "type": "bytes32",
496        "internalType": "bytes32"
497      },
498      {
499        "name": "salt",
500        "type": "bytes32",
501        "internalType": "bytes32"
502      }
503    ],
504    "outputs": [],
505    "stateMutability": "payable"
506  },
507  {
508    "type": "function",
509    "name": "getMinDelay",
510    "inputs": [],
511    "outputs": [
512      {
513        "name": "",
514        "type": "uint256",
515        "internalType": "uint256"
516      }
517    ],
518    "stateMutability": "view"
519  },
520  {
521    "type": "function",
522    "name": "getOperationState",
523    "inputs": [
524      {
525        "name": "id",
526        "type": "bytes32",
527        "internalType": "bytes32"
528      }
529    ],
530    "outputs": [
531      {
532        "name": "",
533        "type": "uint8",
534        "internalType": "enum TimelockController.OperationState"
535      }
536    ],
537    "stateMutability": "view"
538  },
539  {
540    "type": "function",
541    "name": "getRoleAdmin",
542    "inputs": [
543      {
544        "name": "role",
545        "type": "bytes32",
546        "internalType": "bytes32"
547      }
548    ],
549    "outputs": [
550      {
551        "name": "",
552        "type": "bytes32",
553        "internalType": "bytes32"
554      }
555    ],
556    "stateMutability": "view"
557  },
558  {
559    "type": "function",
560    "name": "getTimestamp",
561    "inputs": [
562      {
563        "name": "id",
564        "type": "bytes32",
565        "internalType": "bytes32"
566      }
567    ],
568    "outputs": [
569      {
570        "name": "",
571        "type": "uint256",
572        "internalType": "uint256"
573      }
574    ],
575    "stateMutability": "view"
576  },
577  {
578    "type": "function",
579    "name": "grantRole",
580    "inputs": [
581      {
582        "name": "role",
583        "type": "bytes32",
584        "internalType": "bytes32"
585      },
586      {
587        "name": "account",
588        "type": "address",
589        "internalType": "address"
590      }
591    ],
592    "outputs": [],
593    "stateMutability": "nonpayable"
594  },
595  {
596    "type": "function",
597    "name": "hasRole",
598    "inputs": [
599      {
600        "name": "role",
601        "type": "bytes32",
602        "internalType": "bytes32"
603      },
604      {
605        "name": "account",
606        "type": "address",
607        "internalType": "address"
608      }
609    ],
610    "outputs": [
611      {
612        "name": "",
613        "type": "bool",
614        "internalType": "bool"
615      }
616    ],
617    "stateMutability": "view"
618  },
619  {
620    "type": "function",
621    "name": "hashOperation",
622    "inputs": [
623      {
624        "name": "target",
625        "type": "address",
626        "internalType": "address"
627      },
628      {
629        "name": "value",
630        "type": "uint256",
631        "internalType": "uint256"
632      },
633      {
634        "name": "data",
635        "type": "bytes",
636        "internalType": "bytes"
637      },
638      {
639        "name": "predecessor",
640        "type": "bytes32",
641        "internalType": "bytes32"
642      },
643      {
644        "name": "salt",
645        "type": "bytes32",
646        "internalType": "bytes32"
647      }
648    ],
649    "outputs": [
650      {
651        "name": "",
652        "type": "bytes32",
653        "internalType": "bytes32"
654      }
655    ],
656    "stateMutability": "pure"
657  },
658  {
659    "type": "function",
660    "name": "hashOperationBatch",
661    "inputs": [
662      {
663        "name": "targets",
664        "type": "address[]",
665        "internalType": "address[]"
666      },
667      {
668        "name": "values",
669        "type": "uint256[]",
670        "internalType": "uint256[]"
671      },
672      {
673        "name": "payloads",
674        "type": "bytes[]",
675        "internalType": "bytes[]"
676      },
677      {
678        "name": "predecessor",
679        "type": "bytes32",
680        "internalType": "bytes32"
681      },
682      {
683        "name": "salt",
684        "type": "bytes32",
685        "internalType": "bytes32"
686      }
687    ],
688    "outputs": [
689      {
690        "name": "",
691        "type": "bytes32",
692        "internalType": "bytes32"
693      }
694    ],
695    "stateMutability": "pure"
696  },
697  {
698    "type": "function",
699    "name": "isOperation",
700    "inputs": [
701      {
702        "name": "id",
703        "type": "bytes32",
704        "internalType": "bytes32"
705      }
706    ],
707    "outputs": [
708      {
709        "name": "",
710        "type": "bool",
711        "internalType": "bool"
712      }
713    ],
714    "stateMutability": "view"
715  },
716  {
717    "type": "function",
718    "name": "isOperationDone",
719    "inputs": [
720      {
721        "name": "id",
722        "type": "bytes32",
723        "internalType": "bytes32"
724      }
725    ],
726    "outputs": [
727      {
728        "name": "",
729        "type": "bool",
730        "internalType": "bool"
731      }
732    ],
733    "stateMutability": "view"
734  },
735  {
736    "type": "function",
737    "name": "isOperationPending",
738    "inputs": [
739      {
740        "name": "id",
741        "type": "bytes32",
742        "internalType": "bytes32"
743      }
744    ],
745    "outputs": [
746      {
747        "name": "",
748        "type": "bool",
749        "internalType": "bool"
750      }
751    ],
752    "stateMutability": "view"
753  },
754  {
755    "type": "function",
756    "name": "isOperationReady",
757    "inputs": [
758      {
759        "name": "id",
760        "type": "bytes32",
761        "internalType": "bytes32"
762      }
763    ],
764    "outputs": [
765      {
766        "name": "",
767        "type": "bool",
768        "internalType": "bool"
769      }
770    ],
771    "stateMutability": "view"
772  },
773  {
774    "type": "function",
775    "name": "onERC1155BatchReceived",
776    "inputs": [
777      {
778        "name": "",
779        "type": "address",
780        "internalType": "address"
781      },
782      {
783        "name": "",
784        "type": "address",
785        "internalType": "address"
786      },
787      {
788        "name": "",
789        "type": "uint256[]",
790        "internalType": "uint256[]"
791      },
792      {
793        "name": "",
794        "type": "uint256[]",
795        "internalType": "uint256[]"
796      },
797      {
798        "name": "",
799        "type": "bytes",
800        "internalType": "bytes"
801      }
802    ],
803    "outputs": [
804      {
805        "name": "",
806        "type": "bytes4",
807        "internalType": "bytes4"
808      }
809    ],
810    "stateMutability": "nonpayable"
811  },
812  {
813    "type": "function",
814    "name": "onERC1155Received",
815    "inputs": [
816      {
817        "name": "",
818        "type": "address",
819        "internalType": "address"
820      },
821      {
822        "name": "",
823        "type": "address",
824        "internalType": "address"
825      },
826      {
827        "name": "",
828        "type": "uint256",
829        "internalType": "uint256"
830      },
831      {
832        "name": "",
833        "type": "uint256",
834        "internalType": "uint256"
835      },
836      {
837        "name": "",
838        "type": "bytes",
839        "internalType": "bytes"
840      }
841    ],
842    "outputs": [
843      {
844        "name": "",
845        "type": "bytes4",
846        "internalType": "bytes4"
847      }
848    ],
849    "stateMutability": "nonpayable"
850  },
851  {
852    "type": "function",
853    "name": "onERC721Received",
854    "inputs": [
855      {
856        "name": "",
857        "type": "address",
858        "internalType": "address"
859      },
860      {
861        "name": "",
862        "type": "address",
863        "internalType": "address"
864      },
865      {
866        "name": "",
867        "type": "uint256",
868        "internalType": "uint256"
869      },
870      {
871        "name": "",
872        "type": "bytes",
873        "internalType": "bytes"
874      }
875    ],
876    "outputs": [
877      {
878        "name": "",
879        "type": "bytes4",
880        "internalType": "bytes4"
881      }
882    ],
883    "stateMutability": "nonpayable"
884  },
885  {
886    "type": "function",
887    "name": "renounceRole",
888    "inputs": [
889      {
890        "name": "role",
891        "type": "bytes32",
892        "internalType": "bytes32"
893      },
894      {
895        "name": "callerConfirmation",
896        "type": "address",
897        "internalType": "address"
898      }
899    ],
900    "outputs": [],
901    "stateMutability": "nonpayable"
902  },
903  {
904    "type": "function",
905    "name": "revokeRole",
906    "inputs": [
907      {
908        "name": "role",
909        "type": "bytes32",
910        "internalType": "bytes32"
911      },
912      {
913        "name": "account",
914        "type": "address",
915        "internalType": "address"
916      }
917    ],
918    "outputs": [],
919    "stateMutability": "nonpayable"
920  },
921  {
922    "type": "function",
923    "name": "schedule",
924    "inputs": [
925      {
926        "name": "target",
927        "type": "address",
928        "internalType": "address"
929      },
930      {
931        "name": "value",
932        "type": "uint256",
933        "internalType": "uint256"
934      },
935      {
936        "name": "data",
937        "type": "bytes",
938        "internalType": "bytes"
939      },
940      {
941        "name": "predecessor",
942        "type": "bytes32",
943        "internalType": "bytes32"
944      },
945      {
946        "name": "salt",
947        "type": "bytes32",
948        "internalType": "bytes32"
949      },
950      {
951        "name": "delay",
952        "type": "uint256",
953        "internalType": "uint256"
954      }
955    ],
956    "outputs": [],
957    "stateMutability": "nonpayable"
958  },
959  {
960    "type": "function",
961    "name": "scheduleBatch",
962    "inputs": [
963      {
964        "name": "targets",
965        "type": "address[]",
966        "internalType": "address[]"
967      },
968      {
969        "name": "values",
970        "type": "uint256[]",
971        "internalType": "uint256[]"
972      },
973      {
974        "name": "payloads",
975        "type": "bytes[]",
976        "internalType": "bytes[]"
977      },
978      {
979        "name": "predecessor",
980        "type": "bytes32",
981        "internalType": "bytes32"
982      },
983      {
984        "name": "salt",
985        "type": "bytes32",
986        "internalType": "bytes32"
987      },
988      {
989        "name": "delay",
990        "type": "uint256",
991        "internalType": "uint256"
992      }
993    ],
994    "outputs": [],
995    "stateMutability": "nonpayable"
996  },
997  {
998    "type": "function",
999    "name": "supportsInterface",
1000    "inputs": [
1001      {
1002        "name": "interfaceId",
1003        "type": "bytes4",
1004        "internalType": "bytes4"
1005      }
1006    ],
1007    "outputs": [
1008      {
1009        "name": "",
1010        "type": "bool",
1011        "internalType": "bool"
1012      }
1013    ],
1014    "stateMutability": "view"
1015  },
1016  {
1017    "type": "function",
1018    "name": "updateDelay",
1019    "inputs": [
1020      {
1021        "name": "newDelay",
1022        "type": "uint256",
1023        "internalType": "uint256"
1024      }
1025    ],
1026    "outputs": [],
1027    "stateMutability": "nonpayable"
1028  },
1029  {
1030    "type": "event",
1031    "name": "CallExecuted",
1032    "inputs": [
1033      {
1034        "name": "id",
1035        "type": "bytes32",
1036        "indexed": true,
1037        "internalType": "bytes32"
1038      },
1039      {
1040        "name": "index",
1041        "type": "uint256",
1042        "indexed": true,
1043        "internalType": "uint256"
1044      },
1045      {
1046        "name": "target",
1047        "type": "address",
1048        "indexed": false,
1049        "internalType": "address"
1050      },
1051      {
1052        "name": "value",
1053        "type": "uint256",
1054        "indexed": false,
1055        "internalType": "uint256"
1056      },
1057      {
1058        "name": "data",
1059        "type": "bytes",
1060        "indexed": false,
1061        "internalType": "bytes"
1062      }
1063    ],
1064    "anonymous": false
1065  },
1066  {
1067    "type": "event",
1068    "name": "CallSalt",
1069    "inputs": [
1070      {
1071        "name": "id",
1072        "type": "bytes32",
1073        "indexed": true,
1074        "internalType": "bytes32"
1075      },
1076      {
1077        "name": "salt",
1078        "type": "bytes32",
1079        "indexed": false,
1080        "internalType": "bytes32"
1081      }
1082    ],
1083    "anonymous": false
1084  },
1085  {
1086    "type": "event",
1087    "name": "CallScheduled",
1088    "inputs": [
1089      {
1090        "name": "id",
1091        "type": "bytes32",
1092        "indexed": true,
1093        "internalType": "bytes32"
1094      },
1095      {
1096        "name": "index",
1097        "type": "uint256",
1098        "indexed": true,
1099        "internalType": "uint256"
1100      },
1101      {
1102        "name": "target",
1103        "type": "address",
1104        "indexed": false,
1105        "internalType": "address"
1106      },
1107      {
1108        "name": "value",
1109        "type": "uint256",
1110        "indexed": false,
1111        "internalType": "uint256"
1112      },
1113      {
1114        "name": "data",
1115        "type": "bytes",
1116        "indexed": false,
1117        "internalType": "bytes"
1118      },
1119      {
1120        "name": "predecessor",
1121        "type": "bytes32",
1122        "indexed": false,
1123        "internalType": "bytes32"
1124      },
1125      {
1126        "name": "delay",
1127        "type": "uint256",
1128        "indexed": false,
1129        "internalType": "uint256"
1130      }
1131    ],
1132    "anonymous": false
1133  },
1134  {
1135    "type": "event",
1136    "name": "Cancelled",
1137    "inputs": [
1138      {
1139        "name": "id",
1140        "type": "bytes32",
1141        "indexed": true,
1142        "internalType": "bytes32"
1143      }
1144    ],
1145    "anonymous": false
1146  },
1147  {
1148    "type": "event",
1149    "name": "MinDelayChange",
1150    "inputs": [
1151      {
1152        "name": "oldDuration",
1153        "type": "uint256",
1154        "indexed": false,
1155        "internalType": "uint256"
1156      },
1157      {
1158        "name": "newDuration",
1159        "type": "uint256",
1160        "indexed": false,
1161        "internalType": "uint256"
1162      }
1163    ],
1164    "anonymous": false
1165  },
1166  {
1167    "type": "event",
1168    "name": "RoleAdminChanged",
1169    "inputs": [
1170      {
1171        "name": "role",
1172        "type": "bytes32",
1173        "indexed": true,
1174        "internalType": "bytes32"
1175      },
1176      {
1177        "name": "previousAdminRole",
1178        "type": "bytes32",
1179        "indexed": true,
1180        "internalType": "bytes32"
1181      },
1182      {
1183        "name": "newAdminRole",
1184        "type": "bytes32",
1185        "indexed": true,
1186        "internalType": "bytes32"
1187      }
1188    ],
1189    "anonymous": false
1190  },
1191  {
1192    "type": "event",
1193    "name": "RoleGranted",
1194    "inputs": [
1195      {
1196        "name": "role",
1197        "type": "bytes32",
1198        "indexed": true,
1199        "internalType": "bytes32"
1200      },
1201      {
1202        "name": "account",
1203        "type": "address",
1204        "indexed": true,
1205        "internalType": "address"
1206      },
1207      {
1208        "name": "sender",
1209        "type": "address",
1210        "indexed": true,
1211        "internalType": "address"
1212      }
1213    ],
1214    "anonymous": false
1215  },
1216  {
1217    "type": "event",
1218    "name": "RoleRevoked",
1219    "inputs": [
1220      {
1221        "name": "role",
1222        "type": "bytes32",
1223        "indexed": true,
1224        "internalType": "bytes32"
1225      },
1226      {
1227        "name": "account",
1228        "type": "address",
1229        "indexed": true,
1230        "internalType": "address"
1231      },
1232      {
1233        "name": "sender",
1234        "type": "address",
1235        "indexed": true,
1236        "internalType": "address"
1237      }
1238    ],
1239    "anonymous": false
1240  },
1241  {
1242    "type": "error",
1243    "name": "AccessControlBadConfirmation",
1244    "inputs": []
1245  },
1246  {
1247    "type": "error",
1248    "name": "AccessControlUnauthorizedAccount",
1249    "inputs": [
1250      {
1251        "name": "account",
1252        "type": "address",
1253        "internalType": "address"
1254      },
1255      {
1256        "name": "neededRole",
1257        "type": "bytes32",
1258        "internalType": "bytes32"
1259      }
1260    ]
1261  },
1262  {
1263    "type": "error",
1264    "name": "FailedInnerCall",
1265    "inputs": []
1266  },
1267  {
1268    "type": "error",
1269    "name": "TimelockInsufficientDelay",
1270    "inputs": [
1271      {
1272        "name": "delay",
1273        "type": "uint256",
1274        "internalType": "uint256"
1275      },
1276      {
1277        "name": "minDelay",
1278        "type": "uint256",
1279        "internalType": "uint256"
1280      }
1281    ]
1282  },
1283  {
1284    "type": "error",
1285    "name": "TimelockInvalidOperationLength",
1286    "inputs": [
1287      {
1288        "name": "targets",
1289        "type": "uint256",
1290        "internalType": "uint256"
1291      },
1292      {
1293        "name": "payloads",
1294        "type": "uint256",
1295        "internalType": "uint256"
1296      },
1297      {
1298        "name": "values",
1299        "type": "uint256",
1300        "internalType": "uint256"
1301      }
1302    ]
1303  },
1304  {
1305    "type": "error",
1306    "name": "TimelockUnauthorizedCaller",
1307    "inputs": [
1308      {
1309        "name": "caller",
1310        "type": "address",
1311        "internalType": "address"
1312      }
1313    ]
1314  },
1315  {
1316    "type": "error",
1317    "name": "TimelockUnexecutedPredecessor",
1318    "inputs": [
1319      {
1320        "name": "predecessorId",
1321        "type": "bytes32",
1322        "internalType": "bytes32"
1323      }
1324    ]
1325  },
1326  {
1327    "type": "error",
1328    "name": "TimelockUnexpectedOperationState",
1329    "inputs": [
1330      {
1331        "name": "operationId",
1332        "type": "bytes32",
1333        "internalType": "bytes32"
1334      },
1335      {
1336        "name": "expectedStates",
1337        "type": "bytes32",
1338        "internalType": "bytes32"
1339      }
1340    ]
1341  }
1342]
1343```*/
1344#[allow(
1345    non_camel_case_types,
1346    non_snake_case,
1347    clippy::pub_underscore_fields,
1348    clippy::style,
1349    clippy::empty_structs_with_brackets
1350)]
1351pub mod OpsTimelock {
1352    use super::*;
1353    use alloy::sol_types as alloy_sol_types;
1354    /// The creation / init bytecode of the contract.
1355    ///
1356    /// ```text
1357    ///0x608060405234801561000f575f5ffd5b50604051611d0b380380611d0b83398101604081905261002e916102fe565b8383838361003c5f30610183565b506001600160a01b03811615610058576100565f82610183565b505b5f5b83518110156100ec576100ac7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18583815181106100995761009961037d565b602002602001015161018360201b60201c565b506100e37ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838583815181106100995761009961037d565b5060010161005a565b505f5b82518110156101375761012e7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638483815181106100995761009961037d565b506001016100ef565b506002849055604080515f8152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050610391565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16610223575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101db3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610226565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b0381168114610256575f5ffd5b919050565b5f82601f83011261026a575f5ffd5b81516001600160401b038111156102835761028361022c565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102b1576102b161022c565b6040529182526020818501810192908101868411156102ce575f5ffd5b6020860192505b838310156102f4576102e683610240565b8152602092830192016102d5565b5095945050505050565b5f5f5f5f60808587031215610311575f5ffd5b845160208601519094506001600160401b0381111561032e575f5ffd5b61033a8782880161025b565b604087015190945090506001600160401b03811115610357575f5ffd5b6103638782880161025b565b92505061037260608601610240565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b61196d8061039e5f395ff3fe6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1358    /// ```
1359    #[rustfmt::skip]
1360    #[allow(clippy::all)]
1361    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1362        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1D\x0B8\x03\x80a\x1D\x0B\x839\x81\x01`@\x81\x90Ra\0.\x91a\x02\xFEV[\x83\x83\x83\x83a\0<_0a\x01\x83V[P`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\0XWa\0V_\x82a\x01\x83V[P[_[\x83Q\x81\x10\x15a\0\xECWa\0\xAC\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[` \x02` \x01\x01Qa\x01\x83` \x1B` \x1CV[Pa\0\xE3\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0ZV[P_[\x82Q\x81\x10\x15a\x017Wa\x01.\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x84\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0\xEFV[P`\x02\x84\x90U`@\x80Q_\x81R` \x81\x01\x86\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPPPa\x03\x91V[_\x82\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x84R\x90\x91R\x81 T`\xFF\x16a\x02#W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x01\xDB3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x02&V[P_[\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02VW__\xFD[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02jW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x83Wa\x02\x83a\x02,V[`@Q`\x05\x82\x90\x1B\x90`?\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xB1Wa\x02\xB1a\x02,V[`@R\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x86\x84\x11\x15a\x02\xCEW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x02\xF4Wa\x02\xE6\x83a\x02@V[\x81R` \x92\x83\x01\x92\x01a\x02\xD5V[P\x95\x94PPPPPV[____`\x80\x85\x87\x03\x12\x15a\x03\x11W__\xFD[\x84Q` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03.W__\xFD[a\x03:\x87\x82\x88\x01a\x02[V[`@\x87\x01Q\x90\x94P\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03WW__\xFD[a\x03c\x87\x82\x88\x01a\x02[V[\x92PPa\x03r``\x86\x01a\x02@V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x19m\x80a\x03\x9E_9_\xF3\xFE`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08\x1C\0\n",
1363    );
1364    /// The runtime bytecode of the contract, as deployed on the network.
1365    ///
1366    /// ```text
1367    ///0x6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1368    /// ```
1369    #[rustfmt::skip]
1370    #[allow(clippy::all)]
1371    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1372        b"`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08\x1C\0\n",
1373    );
1374    #[derive(serde::Serialize, serde::Deserialize)]
1375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1376    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
1377```solidity
1378error AccessControlBadConfirmation();
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct AccessControlBadConfirmation;
1383    #[allow(
1384        non_camel_case_types,
1385        non_snake_case,
1386        clippy::pub_underscore_fields,
1387        clippy::style
1388    )]
1389    const _: () = {
1390        use alloy::sol_types as alloy_sol_types;
1391        #[doc(hidden)]
1392        type UnderlyingSolTuple<'a> = ();
1393        #[doc(hidden)]
1394        type UnderlyingRustTuple<'a> = ();
1395        #[cfg(test)]
1396        #[allow(dead_code, unreachable_patterns)]
1397        fn _type_assertion(
1398            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1399        ) {
1400            match _t {
1401                alloy_sol_types::private::AssertTypeEq::<
1402                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1403                >(_) => {}
1404            }
1405        }
1406        #[automatically_derived]
1407        #[doc(hidden)]
1408        impl ::core::convert::From<AccessControlBadConfirmation>
1409        for UnderlyingRustTuple<'_> {
1410            fn from(value: AccessControlBadConfirmation) -> Self {
1411                ()
1412            }
1413        }
1414        #[automatically_derived]
1415        #[doc(hidden)]
1416        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1417        for AccessControlBadConfirmation {
1418            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1419                Self
1420            }
1421        }
1422        #[automatically_derived]
1423        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
1424            type Parameters<'a> = UnderlyingSolTuple<'a>;
1425            type Token<'a> = <Self::Parameters<
1426                'a,
1427            > as alloy_sol_types::SolType>::Token<'a>;
1428            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
1429            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
1430            #[inline]
1431            fn new<'a>(
1432                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1433            ) -> Self {
1434                tuple.into()
1435            }
1436            #[inline]
1437            fn tokenize(&self) -> Self::Token<'_> {
1438                ()
1439            }
1440            #[inline]
1441            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1442                <Self::Parameters<
1443                    '_,
1444                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1445                    .map(Self::new)
1446            }
1447        }
1448    };
1449    #[derive(serde::Serialize, serde::Deserialize)]
1450    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1451    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
1452```solidity
1453error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1454```*/
1455    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1456    #[derive(Clone)]
1457    pub struct AccessControlUnauthorizedAccount {
1458        #[allow(missing_docs)]
1459        pub account: alloy::sol_types::private::Address,
1460        #[allow(missing_docs)]
1461        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
1462    }
1463    #[allow(
1464        non_camel_case_types,
1465        non_snake_case,
1466        clippy::pub_underscore_fields,
1467        clippy::style
1468    )]
1469    const _: () = {
1470        use alloy::sol_types as alloy_sol_types;
1471        #[doc(hidden)]
1472        type UnderlyingSolTuple<'a> = (
1473            alloy::sol_types::sol_data::Address,
1474            alloy::sol_types::sol_data::FixedBytes<32>,
1475        );
1476        #[doc(hidden)]
1477        type UnderlyingRustTuple<'a> = (
1478            alloy::sol_types::private::Address,
1479            alloy::sol_types::private::FixedBytes<32>,
1480        );
1481        #[cfg(test)]
1482        #[allow(dead_code, unreachable_patterns)]
1483        fn _type_assertion(
1484            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1485        ) {
1486            match _t {
1487                alloy_sol_types::private::AssertTypeEq::<
1488                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1489                >(_) => {}
1490            }
1491        }
1492        #[automatically_derived]
1493        #[doc(hidden)]
1494        impl ::core::convert::From<AccessControlUnauthorizedAccount>
1495        for UnderlyingRustTuple<'_> {
1496            fn from(value: AccessControlUnauthorizedAccount) -> Self {
1497                (value.account, value.neededRole)
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1503        for AccessControlUnauthorizedAccount {
1504            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1505                Self {
1506                    account: tuple.0,
1507                    neededRole: tuple.1,
1508                }
1509            }
1510        }
1511        #[automatically_derived]
1512        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
1513            type Parameters<'a> = UnderlyingSolTuple<'a>;
1514            type Token<'a> = <Self::Parameters<
1515                'a,
1516            > as alloy_sol_types::SolType>::Token<'a>;
1517            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
1518            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
1519            #[inline]
1520            fn new<'a>(
1521                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1522            ) -> Self {
1523                tuple.into()
1524            }
1525            #[inline]
1526            fn tokenize(&self) -> Self::Token<'_> {
1527                (
1528                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1529                        &self.account,
1530                    ),
1531                    <alloy::sol_types::sol_data::FixedBytes<
1532                        32,
1533                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
1534                )
1535            }
1536            #[inline]
1537            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1538                <Self::Parameters<
1539                    '_,
1540                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1541                    .map(Self::new)
1542            }
1543        }
1544    };
1545    #[derive(serde::Serialize, serde::Deserialize)]
1546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1547    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
1548```solidity
1549error FailedInnerCall();
1550```*/
1551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1552    #[derive(Clone)]
1553    pub struct FailedInnerCall;
1554    #[allow(
1555        non_camel_case_types,
1556        non_snake_case,
1557        clippy::pub_underscore_fields,
1558        clippy::style
1559    )]
1560    const _: () = {
1561        use alloy::sol_types as alloy_sol_types;
1562        #[doc(hidden)]
1563        type UnderlyingSolTuple<'a> = ();
1564        #[doc(hidden)]
1565        type UnderlyingRustTuple<'a> = ();
1566        #[cfg(test)]
1567        #[allow(dead_code, unreachable_patterns)]
1568        fn _type_assertion(
1569            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1570        ) {
1571            match _t {
1572                alloy_sol_types::private::AssertTypeEq::<
1573                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1574                >(_) => {}
1575            }
1576        }
1577        #[automatically_derived]
1578        #[doc(hidden)]
1579        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
1580            fn from(value: FailedInnerCall) -> Self {
1581                ()
1582            }
1583        }
1584        #[automatically_derived]
1585        #[doc(hidden)]
1586        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
1587            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1588                Self
1589            }
1590        }
1591        #[automatically_derived]
1592        impl alloy_sol_types::SolError for FailedInnerCall {
1593            type Parameters<'a> = UnderlyingSolTuple<'a>;
1594            type Token<'a> = <Self::Parameters<
1595                'a,
1596            > as alloy_sol_types::SolType>::Token<'a>;
1597            const SIGNATURE: &'static str = "FailedInnerCall()";
1598            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
1599            #[inline]
1600            fn new<'a>(
1601                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1602            ) -> Self {
1603                tuple.into()
1604            }
1605            #[inline]
1606            fn tokenize(&self) -> Self::Token<'_> {
1607                ()
1608            }
1609            #[inline]
1610            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1611                <Self::Parameters<
1612                    '_,
1613                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1614                    .map(Self::new)
1615            }
1616        }
1617    };
1618    #[derive(serde::Serialize, serde::Deserialize)]
1619    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1620    /**Custom error with signature `TimelockInsufficientDelay(uint256,uint256)` and selector `0x54336609`.
1621```solidity
1622error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
1623```*/
1624    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1625    #[derive(Clone)]
1626    pub struct TimelockInsufficientDelay {
1627        #[allow(missing_docs)]
1628        pub delay: alloy::sol_types::private::primitives::aliases::U256,
1629        #[allow(missing_docs)]
1630        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
1631    }
1632    #[allow(
1633        non_camel_case_types,
1634        non_snake_case,
1635        clippy::pub_underscore_fields,
1636        clippy::style
1637    )]
1638    const _: () = {
1639        use alloy::sol_types as alloy_sol_types;
1640        #[doc(hidden)]
1641        type UnderlyingSolTuple<'a> = (
1642            alloy::sol_types::sol_data::Uint<256>,
1643            alloy::sol_types::sol_data::Uint<256>,
1644        );
1645        #[doc(hidden)]
1646        type UnderlyingRustTuple<'a> = (
1647            alloy::sol_types::private::primitives::aliases::U256,
1648            alloy::sol_types::private::primitives::aliases::U256,
1649        );
1650        #[cfg(test)]
1651        #[allow(dead_code, unreachable_patterns)]
1652        fn _type_assertion(
1653            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1654        ) {
1655            match _t {
1656                alloy_sol_types::private::AssertTypeEq::<
1657                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1658                >(_) => {}
1659            }
1660        }
1661        #[automatically_derived]
1662        #[doc(hidden)]
1663        impl ::core::convert::From<TimelockInsufficientDelay>
1664        for UnderlyingRustTuple<'_> {
1665            fn from(value: TimelockInsufficientDelay) -> Self {
1666                (value.delay, value.minDelay)
1667            }
1668        }
1669        #[automatically_derived]
1670        #[doc(hidden)]
1671        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1672        for TimelockInsufficientDelay {
1673            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1674                Self {
1675                    delay: tuple.0,
1676                    minDelay: tuple.1,
1677                }
1678            }
1679        }
1680        #[automatically_derived]
1681        impl alloy_sol_types::SolError for TimelockInsufficientDelay {
1682            type Parameters<'a> = UnderlyingSolTuple<'a>;
1683            type Token<'a> = <Self::Parameters<
1684                'a,
1685            > as alloy_sol_types::SolType>::Token<'a>;
1686            const SIGNATURE: &'static str = "TimelockInsufficientDelay(uint256,uint256)";
1687            const SELECTOR: [u8; 4] = [84u8, 51u8, 102u8, 9u8];
1688            #[inline]
1689            fn new<'a>(
1690                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1691            ) -> Self {
1692                tuple.into()
1693            }
1694            #[inline]
1695            fn tokenize(&self) -> Self::Token<'_> {
1696                (
1697                    <alloy::sol_types::sol_data::Uint<
1698                        256,
1699                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
1700                    <alloy::sol_types::sol_data::Uint<
1701                        256,
1702                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
1703                )
1704            }
1705            #[inline]
1706            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1707                <Self::Parameters<
1708                    '_,
1709                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1710                    .map(Self::new)
1711            }
1712        }
1713    };
1714    #[derive(serde::Serialize, serde::Deserialize)]
1715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1716    /**Custom error with signature `TimelockInvalidOperationLength(uint256,uint256,uint256)` and selector `0xffb03211`.
1717```solidity
1718error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
1719```*/
1720    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1721    #[derive(Clone)]
1722    pub struct TimelockInvalidOperationLength {
1723        #[allow(missing_docs)]
1724        pub targets: alloy::sol_types::private::primitives::aliases::U256,
1725        #[allow(missing_docs)]
1726        pub payloads: alloy::sol_types::private::primitives::aliases::U256,
1727        #[allow(missing_docs)]
1728        pub values: alloy::sol_types::private::primitives::aliases::U256,
1729    }
1730    #[allow(
1731        non_camel_case_types,
1732        non_snake_case,
1733        clippy::pub_underscore_fields,
1734        clippy::style
1735    )]
1736    const _: () = {
1737        use alloy::sol_types as alloy_sol_types;
1738        #[doc(hidden)]
1739        type UnderlyingSolTuple<'a> = (
1740            alloy::sol_types::sol_data::Uint<256>,
1741            alloy::sol_types::sol_data::Uint<256>,
1742            alloy::sol_types::sol_data::Uint<256>,
1743        );
1744        #[doc(hidden)]
1745        type UnderlyingRustTuple<'a> = (
1746            alloy::sol_types::private::primitives::aliases::U256,
1747            alloy::sol_types::private::primitives::aliases::U256,
1748            alloy::sol_types::private::primitives::aliases::U256,
1749        );
1750        #[cfg(test)]
1751        #[allow(dead_code, unreachable_patterns)]
1752        fn _type_assertion(
1753            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1754        ) {
1755            match _t {
1756                alloy_sol_types::private::AssertTypeEq::<
1757                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1758                >(_) => {}
1759            }
1760        }
1761        #[automatically_derived]
1762        #[doc(hidden)]
1763        impl ::core::convert::From<TimelockInvalidOperationLength>
1764        for UnderlyingRustTuple<'_> {
1765            fn from(value: TimelockInvalidOperationLength) -> Self {
1766                (value.targets, value.payloads, value.values)
1767            }
1768        }
1769        #[automatically_derived]
1770        #[doc(hidden)]
1771        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1772        for TimelockInvalidOperationLength {
1773            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1774                Self {
1775                    targets: tuple.0,
1776                    payloads: tuple.1,
1777                    values: tuple.2,
1778                }
1779            }
1780        }
1781        #[automatically_derived]
1782        impl alloy_sol_types::SolError for TimelockInvalidOperationLength {
1783            type Parameters<'a> = UnderlyingSolTuple<'a>;
1784            type Token<'a> = <Self::Parameters<
1785                'a,
1786            > as alloy_sol_types::SolType>::Token<'a>;
1787            const SIGNATURE: &'static str = "TimelockInvalidOperationLength(uint256,uint256,uint256)";
1788            const SELECTOR: [u8; 4] = [255u8, 176u8, 50u8, 17u8];
1789            #[inline]
1790            fn new<'a>(
1791                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1792            ) -> Self {
1793                tuple.into()
1794            }
1795            #[inline]
1796            fn tokenize(&self) -> Self::Token<'_> {
1797                (
1798                    <alloy::sol_types::sol_data::Uint<
1799                        256,
1800                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
1801                    <alloy::sol_types::sol_data::Uint<
1802                        256,
1803                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
1804                    <alloy::sol_types::sol_data::Uint<
1805                        256,
1806                    > as alloy_sol_types::SolType>::tokenize(&self.values),
1807                )
1808            }
1809            #[inline]
1810            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1811                <Self::Parameters<
1812                    '_,
1813                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1814                    .map(Self::new)
1815            }
1816        }
1817    };
1818    #[derive(serde::Serialize, serde::Deserialize)]
1819    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1820    /**Custom error with signature `TimelockUnauthorizedCaller(address)` and selector `0xe2850c59`.
1821```solidity
1822error TimelockUnauthorizedCaller(address caller);
1823```*/
1824    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1825    #[derive(Clone)]
1826    pub struct TimelockUnauthorizedCaller {
1827        #[allow(missing_docs)]
1828        pub caller: alloy::sol_types::private::Address,
1829    }
1830    #[allow(
1831        non_camel_case_types,
1832        non_snake_case,
1833        clippy::pub_underscore_fields,
1834        clippy::style
1835    )]
1836    const _: () = {
1837        use alloy::sol_types as alloy_sol_types;
1838        #[doc(hidden)]
1839        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1840        #[doc(hidden)]
1841        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1842        #[cfg(test)]
1843        #[allow(dead_code, unreachable_patterns)]
1844        fn _type_assertion(
1845            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1846        ) {
1847            match _t {
1848                alloy_sol_types::private::AssertTypeEq::<
1849                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1850                >(_) => {}
1851            }
1852        }
1853        #[automatically_derived]
1854        #[doc(hidden)]
1855        impl ::core::convert::From<TimelockUnauthorizedCaller>
1856        for UnderlyingRustTuple<'_> {
1857            fn from(value: TimelockUnauthorizedCaller) -> Self {
1858                (value.caller,)
1859            }
1860        }
1861        #[automatically_derived]
1862        #[doc(hidden)]
1863        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1864        for TimelockUnauthorizedCaller {
1865            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1866                Self { caller: tuple.0 }
1867            }
1868        }
1869        #[automatically_derived]
1870        impl alloy_sol_types::SolError for TimelockUnauthorizedCaller {
1871            type Parameters<'a> = UnderlyingSolTuple<'a>;
1872            type Token<'a> = <Self::Parameters<
1873                'a,
1874            > as alloy_sol_types::SolType>::Token<'a>;
1875            const SIGNATURE: &'static str = "TimelockUnauthorizedCaller(address)";
1876            const SELECTOR: [u8; 4] = [226u8, 133u8, 12u8, 89u8];
1877            #[inline]
1878            fn new<'a>(
1879                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1880            ) -> Self {
1881                tuple.into()
1882            }
1883            #[inline]
1884            fn tokenize(&self) -> Self::Token<'_> {
1885                (
1886                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1887                        &self.caller,
1888                    ),
1889                )
1890            }
1891            #[inline]
1892            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1893                <Self::Parameters<
1894                    '_,
1895                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1896                    .map(Self::new)
1897            }
1898        }
1899    };
1900    #[derive(serde::Serialize, serde::Deserialize)]
1901    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1902    /**Custom error with signature `TimelockUnexecutedPredecessor(bytes32)` and selector `0x90a9a618`.
1903```solidity
1904error TimelockUnexecutedPredecessor(bytes32 predecessorId);
1905```*/
1906    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1907    #[derive(Clone)]
1908    pub struct TimelockUnexecutedPredecessor {
1909        #[allow(missing_docs)]
1910        pub predecessorId: alloy::sol_types::private::FixedBytes<32>,
1911    }
1912    #[allow(
1913        non_camel_case_types,
1914        non_snake_case,
1915        clippy::pub_underscore_fields,
1916        clippy::style
1917    )]
1918    const _: () = {
1919        use alloy::sol_types as alloy_sol_types;
1920        #[doc(hidden)]
1921        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
1922        #[doc(hidden)]
1923        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
1924        #[cfg(test)]
1925        #[allow(dead_code, unreachable_patterns)]
1926        fn _type_assertion(
1927            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1928        ) {
1929            match _t {
1930                alloy_sol_types::private::AssertTypeEq::<
1931                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1932                >(_) => {}
1933            }
1934        }
1935        #[automatically_derived]
1936        #[doc(hidden)]
1937        impl ::core::convert::From<TimelockUnexecutedPredecessor>
1938        for UnderlyingRustTuple<'_> {
1939            fn from(value: TimelockUnexecutedPredecessor) -> Self {
1940                (value.predecessorId,)
1941            }
1942        }
1943        #[automatically_derived]
1944        #[doc(hidden)]
1945        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1946        for TimelockUnexecutedPredecessor {
1947            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1948                Self { predecessorId: tuple.0 }
1949            }
1950        }
1951        #[automatically_derived]
1952        impl alloy_sol_types::SolError for TimelockUnexecutedPredecessor {
1953            type Parameters<'a> = UnderlyingSolTuple<'a>;
1954            type Token<'a> = <Self::Parameters<
1955                'a,
1956            > as alloy_sol_types::SolType>::Token<'a>;
1957            const SIGNATURE: &'static str = "TimelockUnexecutedPredecessor(bytes32)";
1958            const SELECTOR: [u8; 4] = [144u8, 169u8, 166u8, 24u8];
1959            #[inline]
1960            fn new<'a>(
1961                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1962            ) -> Self {
1963                tuple.into()
1964            }
1965            #[inline]
1966            fn tokenize(&self) -> Self::Token<'_> {
1967                (
1968                    <alloy::sol_types::sol_data::FixedBytes<
1969                        32,
1970                    > as alloy_sol_types::SolType>::tokenize(&self.predecessorId),
1971                )
1972            }
1973            #[inline]
1974            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1975                <Self::Parameters<
1976                    '_,
1977                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1978                    .map(Self::new)
1979            }
1980        }
1981    };
1982    #[derive(serde::Serialize, serde::Deserialize)]
1983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1984    /**Custom error with signature `TimelockUnexpectedOperationState(bytes32,bytes32)` and selector `0x5ead8eb5`.
1985```solidity
1986error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
1987```*/
1988    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1989    #[derive(Clone)]
1990    pub struct TimelockUnexpectedOperationState {
1991        #[allow(missing_docs)]
1992        pub operationId: alloy::sol_types::private::FixedBytes<32>,
1993        #[allow(missing_docs)]
1994        pub expectedStates: alloy::sol_types::private::FixedBytes<32>,
1995    }
1996    #[allow(
1997        non_camel_case_types,
1998        non_snake_case,
1999        clippy::pub_underscore_fields,
2000        clippy::style
2001    )]
2002    const _: () = {
2003        use alloy::sol_types as alloy_sol_types;
2004        #[doc(hidden)]
2005        type UnderlyingSolTuple<'a> = (
2006            alloy::sol_types::sol_data::FixedBytes<32>,
2007            alloy::sol_types::sol_data::FixedBytes<32>,
2008        );
2009        #[doc(hidden)]
2010        type UnderlyingRustTuple<'a> = (
2011            alloy::sol_types::private::FixedBytes<32>,
2012            alloy::sol_types::private::FixedBytes<32>,
2013        );
2014        #[cfg(test)]
2015        #[allow(dead_code, unreachable_patterns)]
2016        fn _type_assertion(
2017            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2018        ) {
2019            match _t {
2020                alloy_sol_types::private::AssertTypeEq::<
2021                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2022                >(_) => {}
2023            }
2024        }
2025        #[automatically_derived]
2026        #[doc(hidden)]
2027        impl ::core::convert::From<TimelockUnexpectedOperationState>
2028        for UnderlyingRustTuple<'_> {
2029            fn from(value: TimelockUnexpectedOperationState) -> Self {
2030                (value.operationId, value.expectedStates)
2031            }
2032        }
2033        #[automatically_derived]
2034        #[doc(hidden)]
2035        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2036        for TimelockUnexpectedOperationState {
2037            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2038                Self {
2039                    operationId: tuple.0,
2040                    expectedStates: tuple.1,
2041                }
2042            }
2043        }
2044        #[automatically_derived]
2045        impl alloy_sol_types::SolError for TimelockUnexpectedOperationState {
2046            type Parameters<'a> = UnderlyingSolTuple<'a>;
2047            type Token<'a> = <Self::Parameters<
2048                'a,
2049            > as alloy_sol_types::SolType>::Token<'a>;
2050            const SIGNATURE: &'static str = "TimelockUnexpectedOperationState(bytes32,bytes32)";
2051            const SELECTOR: [u8; 4] = [94u8, 173u8, 142u8, 181u8];
2052            #[inline]
2053            fn new<'a>(
2054                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2055            ) -> Self {
2056                tuple.into()
2057            }
2058            #[inline]
2059            fn tokenize(&self) -> Self::Token<'_> {
2060                (
2061                    <alloy::sol_types::sol_data::FixedBytes<
2062                        32,
2063                    > as alloy_sol_types::SolType>::tokenize(&self.operationId),
2064                    <alloy::sol_types::sol_data::FixedBytes<
2065                        32,
2066                    > as alloy_sol_types::SolType>::tokenize(&self.expectedStates),
2067                )
2068            }
2069            #[inline]
2070            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2071                <Self::Parameters<
2072                    '_,
2073                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
2074                    .map(Self::new)
2075            }
2076        }
2077    };
2078    #[derive(serde::Serialize, serde::Deserialize)]
2079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2080    /**Event with signature `CallExecuted(bytes32,uint256,address,uint256,bytes)` and selector `0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58`.
2081```solidity
2082event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
2083```*/
2084    #[allow(
2085        non_camel_case_types,
2086        non_snake_case,
2087        clippy::pub_underscore_fields,
2088        clippy::style
2089    )]
2090    #[derive(Clone)]
2091    pub struct CallExecuted {
2092        #[allow(missing_docs)]
2093        pub id: alloy::sol_types::private::FixedBytes<32>,
2094        #[allow(missing_docs)]
2095        pub index: alloy::sol_types::private::primitives::aliases::U256,
2096        #[allow(missing_docs)]
2097        pub target: alloy::sol_types::private::Address,
2098        #[allow(missing_docs)]
2099        pub value: alloy::sol_types::private::primitives::aliases::U256,
2100        #[allow(missing_docs)]
2101        pub data: alloy::sol_types::private::Bytes,
2102    }
2103    #[allow(
2104        non_camel_case_types,
2105        non_snake_case,
2106        clippy::pub_underscore_fields,
2107        clippy::style
2108    )]
2109    const _: () = {
2110        use alloy::sol_types as alloy_sol_types;
2111        #[automatically_derived]
2112        impl alloy_sol_types::SolEvent for CallExecuted {
2113            type DataTuple<'a> = (
2114                alloy::sol_types::sol_data::Address,
2115                alloy::sol_types::sol_data::Uint<256>,
2116                alloy::sol_types::sol_data::Bytes,
2117            );
2118            type DataToken<'a> = <Self::DataTuple<
2119                'a,
2120            > as alloy_sol_types::SolType>::Token<'a>;
2121            type TopicList = (
2122                alloy_sol_types::sol_data::FixedBytes<32>,
2123                alloy::sol_types::sol_data::FixedBytes<32>,
2124                alloy::sol_types::sol_data::Uint<256>,
2125            );
2126            const SIGNATURE: &'static str = "CallExecuted(bytes32,uint256,address,uint256,bytes)";
2127            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2128                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
2129                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
2130                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
2131            ]);
2132            const ANONYMOUS: bool = false;
2133            #[allow(unused_variables)]
2134            #[inline]
2135            fn new(
2136                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2137                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2138            ) -> Self {
2139                Self {
2140                    id: topics.1,
2141                    index: topics.2,
2142                    target: data.0,
2143                    value: data.1,
2144                    data: data.2,
2145                }
2146            }
2147            #[inline]
2148            fn check_signature(
2149                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2150            ) -> alloy_sol_types::Result<()> {
2151                if topics.0 != Self::SIGNATURE_HASH {
2152                    return Err(
2153                        alloy_sol_types::Error::invalid_event_signature_hash(
2154                            Self::SIGNATURE,
2155                            topics.0,
2156                            Self::SIGNATURE_HASH,
2157                        ),
2158                    );
2159                }
2160                Ok(())
2161            }
2162            #[inline]
2163            fn tokenize_body(&self) -> Self::DataToken<'_> {
2164                (
2165                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2166                        &self.target,
2167                    ),
2168                    <alloy::sol_types::sol_data::Uint<
2169                        256,
2170                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2171                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2172                        &self.data,
2173                    ),
2174                )
2175            }
2176            #[inline]
2177            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2178                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2179            }
2180            #[inline]
2181            fn encode_topics_raw(
2182                &self,
2183                out: &mut [alloy_sol_types::abi::token::WordToken],
2184            ) -> alloy_sol_types::Result<()> {
2185                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2186                    return Err(alloy_sol_types::Error::Overrun);
2187                }
2188                out[0usize] = alloy_sol_types::abi::token::WordToken(
2189                    Self::SIGNATURE_HASH,
2190                );
2191                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2192                    32,
2193                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2194                out[2usize] = <alloy::sol_types::sol_data::Uint<
2195                    256,
2196                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2197                Ok(())
2198            }
2199        }
2200        #[automatically_derived]
2201        impl alloy_sol_types::private::IntoLogData for CallExecuted {
2202            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2203                From::from(self)
2204            }
2205            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2206                From::from(&self)
2207            }
2208        }
2209        #[automatically_derived]
2210        impl From<&CallExecuted> for alloy_sol_types::private::LogData {
2211            #[inline]
2212            fn from(this: &CallExecuted) -> alloy_sol_types::private::LogData {
2213                alloy_sol_types::SolEvent::encode_log_data(this)
2214            }
2215        }
2216    };
2217    #[derive(serde::Serialize, serde::Deserialize)]
2218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2219    /**Event with signature `CallSalt(bytes32,bytes32)` and selector `0x20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387`.
2220```solidity
2221event CallSalt(bytes32 indexed id, bytes32 salt);
2222```*/
2223    #[allow(
2224        non_camel_case_types,
2225        non_snake_case,
2226        clippy::pub_underscore_fields,
2227        clippy::style
2228    )]
2229    #[derive(Clone)]
2230    pub struct CallSalt {
2231        #[allow(missing_docs)]
2232        pub id: alloy::sol_types::private::FixedBytes<32>,
2233        #[allow(missing_docs)]
2234        pub salt: alloy::sol_types::private::FixedBytes<32>,
2235    }
2236    #[allow(
2237        non_camel_case_types,
2238        non_snake_case,
2239        clippy::pub_underscore_fields,
2240        clippy::style
2241    )]
2242    const _: () = {
2243        use alloy::sol_types as alloy_sol_types;
2244        #[automatically_derived]
2245        impl alloy_sol_types::SolEvent for CallSalt {
2246            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
2247            type DataToken<'a> = <Self::DataTuple<
2248                'a,
2249            > as alloy_sol_types::SolType>::Token<'a>;
2250            type TopicList = (
2251                alloy_sol_types::sol_data::FixedBytes<32>,
2252                alloy::sol_types::sol_data::FixedBytes<32>,
2253            );
2254            const SIGNATURE: &'static str = "CallSalt(bytes32,bytes32)";
2255            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2256                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
2257                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
2258                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
2259            ]);
2260            const ANONYMOUS: bool = false;
2261            #[allow(unused_variables)]
2262            #[inline]
2263            fn new(
2264                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2265                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2266            ) -> Self {
2267                Self { id: topics.1, salt: data.0 }
2268            }
2269            #[inline]
2270            fn check_signature(
2271                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2272            ) -> alloy_sol_types::Result<()> {
2273                if topics.0 != Self::SIGNATURE_HASH {
2274                    return Err(
2275                        alloy_sol_types::Error::invalid_event_signature_hash(
2276                            Self::SIGNATURE,
2277                            topics.0,
2278                            Self::SIGNATURE_HASH,
2279                        ),
2280                    );
2281                }
2282                Ok(())
2283            }
2284            #[inline]
2285            fn tokenize_body(&self) -> Self::DataToken<'_> {
2286                (
2287                    <alloy::sol_types::sol_data::FixedBytes<
2288                        32,
2289                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
2290                )
2291            }
2292            #[inline]
2293            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2294                (Self::SIGNATURE_HASH.into(), self.id.clone())
2295            }
2296            #[inline]
2297            fn encode_topics_raw(
2298                &self,
2299                out: &mut [alloy_sol_types::abi::token::WordToken],
2300            ) -> alloy_sol_types::Result<()> {
2301                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2302                    return Err(alloy_sol_types::Error::Overrun);
2303                }
2304                out[0usize] = alloy_sol_types::abi::token::WordToken(
2305                    Self::SIGNATURE_HASH,
2306                );
2307                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2308                    32,
2309                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2310                Ok(())
2311            }
2312        }
2313        #[automatically_derived]
2314        impl alloy_sol_types::private::IntoLogData for CallSalt {
2315            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2316                From::from(self)
2317            }
2318            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2319                From::from(&self)
2320            }
2321        }
2322        #[automatically_derived]
2323        impl From<&CallSalt> for alloy_sol_types::private::LogData {
2324            #[inline]
2325            fn from(this: &CallSalt) -> alloy_sol_types::private::LogData {
2326                alloy_sol_types::SolEvent::encode_log_data(this)
2327            }
2328        }
2329    };
2330    #[derive(serde::Serialize, serde::Deserialize)]
2331    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2332    /**Event with signature `CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)` and selector `0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca`.
2333```solidity
2334event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
2335```*/
2336    #[allow(
2337        non_camel_case_types,
2338        non_snake_case,
2339        clippy::pub_underscore_fields,
2340        clippy::style
2341    )]
2342    #[derive(Clone)]
2343    pub struct CallScheduled {
2344        #[allow(missing_docs)]
2345        pub id: alloy::sol_types::private::FixedBytes<32>,
2346        #[allow(missing_docs)]
2347        pub index: alloy::sol_types::private::primitives::aliases::U256,
2348        #[allow(missing_docs)]
2349        pub target: alloy::sol_types::private::Address,
2350        #[allow(missing_docs)]
2351        pub value: alloy::sol_types::private::primitives::aliases::U256,
2352        #[allow(missing_docs)]
2353        pub data: alloy::sol_types::private::Bytes,
2354        #[allow(missing_docs)]
2355        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
2356        #[allow(missing_docs)]
2357        pub delay: alloy::sol_types::private::primitives::aliases::U256,
2358    }
2359    #[allow(
2360        non_camel_case_types,
2361        non_snake_case,
2362        clippy::pub_underscore_fields,
2363        clippy::style
2364    )]
2365    const _: () = {
2366        use alloy::sol_types as alloy_sol_types;
2367        #[automatically_derived]
2368        impl alloy_sol_types::SolEvent for CallScheduled {
2369            type DataTuple<'a> = (
2370                alloy::sol_types::sol_data::Address,
2371                alloy::sol_types::sol_data::Uint<256>,
2372                alloy::sol_types::sol_data::Bytes,
2373                alloy::sol_types::sol_data::FixedBytes<32>,
2374                alloy::sol_types::sol_data::Uint<256>,
2375            );
2376            type DataToken<'a> = <Self::DataTuple<
2377                'a,
2378            > as alloy_sol_types::SolType>::Token<'a>;
2379            type TopicList = (
2380                alloy_sol_types::sol_data::FixedBytes<32>,
2381                alloy::sol_types::sol_data::FixedBytes<32>,
2382                alloy::sol_types::sol_data::Uint<256>,
2383            );
2384            const SIGNATURE: &'static str = "CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)";
2385            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2386                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
2387                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
2388                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
2389            ]);
2390            const ANONYMOUS: bool = false;
2391            #[allow(unused_variables)]
2392            #[inline]
2393            fn new(
2394                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2395                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2396            ) -> Self {
2397                Self {
2398                    id: topics.1,
2399                    index: topics.2,
2400                    target: data.0,
2401                    value: data.1,
2402                    data: data.2,
2403                    predecessor: data.3,
2404                    delay: data.4,
2405                }
2406            }
2407            #[inline]
2408            fn check_signature(
2409                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2410            ) -> alloy_sol_types::Result<()> {
2411                if topics.0 != Self::SIGNATURE_HASH {
2412                    return Err(
2413                        alloy_sol_types::Error::invalid_event_signature_hash(
2414                            Self::SIGNATURE,
2415                            topics.0,
2416                            Self::SIGNATURE_HASH,
2417                        ),
2418                    );
2419                }
2420                Ok(())
2421            }
2422            #[inline]
2423            fn tokenize_body(&self) -> Self::DataToken<'_> {
2424                (
2425                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2426                        &self.target,
2427                    ),
2428                    <alloy::sol_types::sol_data::Uint<
2429                        256,
2430                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2431                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2432                        &self.data,
2433                    ),
2434                    <alloy::sol_types::sol_data::FixedBytes<
2435                        32,
2436                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
2437                    <alloy::sol_types::sol_data::Uint<
2438                        256,
2439                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
2440                )
2441            }
2442            #[inline]
2443            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2444                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2445            }
2446            #[inline]
2447            fn encode_topics_raw(
2448                &self,
2449                out: &mut [alloy_sol_types::abi::token::WordToken],
2450            ) -> alloy_sol_types::Result<()> {
2451                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2452                    return Err(alloy_sol_types::Error::Overrun);
2453                }
2454                out[0usize] = alloy_sol_types::abi::token::WordToken(
2455                    Self::SIGNATURE_HASH,
2456                );
2457                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2458                    32,
2459                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2460                out[2usize] = <alloy::sol_types::sol_data::Uint<
2461                    256,
2462                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2463                Ok(())
2464            }
2465        }
2466        #[automatically_derived]
2467        impl alloy_sol_types::private::IntoLogData for CallScheduled {
2468            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2469                From::from(self)
2470            }
2471            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2472                From::from(&self)
2473            }
2474        }
2475        #[automatically_derived]
2476        impl From<&CallScheduled> for alloy_sol_types::private::LogData {
2477            #[inline]
2478            fn from(this: &CallScheduled) -> alloy_sol_types::private::LogData {
2479                alloy_sol_types::SolEvent::encode_log_data(this)
2480            }
2481        }
2482    };
2483    #[derive(serde::Serialize, serde::Deserialize)]
2484    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2485    /**Event with signature `Cancelled(bytes32)` and selector `0xbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70`.
2486```solidity
2487event Cancelled(bytes32 indexed id);
2488```*/
2489    #[allow(
2490        non_camel_case_types,
2491        non_snake_case,
2492        clippy::pub_underscore_fields,
2493        clippy::style
2494    )]
2495    #[derive(Clone)]
2496    pub struct Cancelled {
2497        #[allow(missing_docs)]
2498        pub id: alloy::sol_types::private::FixedBytes<32>,
2499    }
2500    #[allow(
2501        non_camel_case_types,
2502        non_snake_case,
2503        clippy::pub_underscore_fields,
2504        clippy::style
2505    )]
2506    const _: () = {
2507        use alloy::sol_types as alloy_sol_types;
2508        #[automatically_derived]
2509        impl alloy_sol_types::SolEvent for Cancelled {
2510            type DataTuple<'a> = ();
2511            type DataToken<'a> = <Self::DataTuple<
2512                'a,
2513            > as alloy_sol_types::SolType>::Token<'a>;
2514            type TopicList = (
2515                alloy_sol_types::sol_data::FixedBytes<32>,
2516                alloy::sol_types::sol_data::FixedBytes<32>,
2517            );
2518            const SIGNATURE: &'static str = "Cancelled(bytes32)";
2519            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2520                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
2521                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
2522                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
2523            ]);
2524            const ANONYMOUS: bool = false;
2525            #[allow(unused_variables)]
2526            #[inline]
2527            fn new(
2528                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2529                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2530            ) -> Self {
2531                Self { id: topics.1 }
2532            }
2533            #[inline]
2534            fn check_signature(
2535                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2536            ) -> alloy_sol_types::Result<()> {
2537                if topics.0 != Self::SIGNATURE_HASH {
2538                    return Err(
2539                        alloy_sol_types::Error::invalid_event_signature_hash(
2540                            Self::SIGNATURE,
2541                            topics.0,
2542                            Self::SIGNATURE_HASH,
2543                        ),
2544                    );
2545                }
2546                Ok(())
2547            }
2548            #[inline]
2549            fn tokenize_body(&self) -> Self::DataToken<'_> {
2550                ()
2551            }
2552            #[inline]
2553            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2554                (Self::SIGNATURE_HASH.into(), self.id.clone())
2555            }
2556            #[inline]
2557            fn encode_topics_raw(
2558                &self,
2559                out: &mut [alloy_sol_types::abi::token::WordToken],
2560            ) -> alloy_sol_types::Result<()> {
2561                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2562                    return Err(alloy_sol_types::Error::Overrun);
2563                }
2564                out[0usize] = alloy_sol_types::abi::token::WordToken(
2565                    Self::SIGNATURE_HASH,
2566                );
2567                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2568                    32,
2569                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2570                Ok(())
2571            }
2572        }
2573        #[automatically_derived]
2574        impl alloy_sol_types::private::IntoLogData for Cancelled {
2575            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2576                From::from(self)
2577            }
2578            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2579                From::from(&self)
2580            }
2581        }
2582        #[automatically_derived]
2583        impl From<&Cancelled> for alloy_sol_types::private::LogData {
2584            #[inline]
2585            fn from(this: &Cancelled) -> alloy_sol_types::private::LogData {
2586                alloy_sol_types::SolEvent::encode_log_data(this)
2587            }
2588        }
2589    };
2590    #[derive(serde::Serialize, serde::Deserialize)]
2591    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2592    /**Event with signature `MinDelayChange(uint256,uint256)` and selector `0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5`.
2593```solidity
2594event MinDelayChange(uint256 oldDuration, uint256 newDuration);
2595```*/
2596    #[allow(
2597        non_camel_case_types,
2598        non_snake_case,
2599        clippy::pub_underscore_fields,
2600        clippy::style
2601    )]
2602    #[derive(Clone)]
2603    pub struct MinDelayChange {
2604        #[allow(missing_docs)]
2605        pub oldDuration: alloy::sol_types::private::primitives::aliases::U256,
2606        #[allow(missing_docs)]
2607        pub newDuration: alloy::sol_types::private::primitives::aliases::U256,
2608    }
2609    #[allow(
2610        non_camel_case_types,
2611        non_snake_case,
2612        clippy::pub_underscore_fields,
2613        clippy::style
2614    )]
2615    const _: () = {
2616        use alloy::sol_types as alloy_sol_types;
2617        #[automatically_derived]
2618        impl alloy_sol_types::SolEvent for MinDelayChange {
2619            type DataTuple<'a> = (
2620                alloy::sol_types::sol_data::Uint<256>,
2621                alloy::sol_types::sol_data::Uint<256>,
2622            );
2623            type DataToken<'a> = <Self::DataTuple<
2624                'a,
2625            > as alloy_sol_types::SolType>::Token<'a>;
2626            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2627            const SIGNATURE: &'static str = "MinDelayChange(uint256,uint256)";
2628            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2629                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
2630                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
2631                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
2632            ]);
2633            const ANONYMOUS: bool = false;
2634            #[allow(unused_variables)]
2635            #[inline]
2636            fn new(
2637                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2638                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2639            ) -> Self {
2640                Self {
2641                    oldDuration: data.0,
2642                    newDuration: data.1,
2643                }
2644            }
2645            #[inline]
2646            fn check_signature(
2647                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2648            ) -> alloy_sol_types::Result<()> {
2649                if topics.0 != Self::SIGNATURE_HASH {
2650                    return Err(
2651                        alloy_sol_types::Error::invalid_event_signature_hash(
2652                            Self::SIGNATURE,
2653                            topics.0,
2654                            Self::SIGNATURE_HASH,
2655                        ),
2656                    );
2657                }
2658                Ok(())
2659            }
2660            #[inline]
2661            fn tokenize_body(&self) -> Self::DataToken<'_> {
2662                (
2663                    <alloy::sol_types::sol_data::Uint<
2664                        256,
2665                    > as alloy_sol_types::SolType>::tokenize(&self.oldDuration),
2666                    <alloy::sol_types::sol_data::Uint<
2667                        256,
2668                    > as alloy_sol_types::SolType>::tokenize(&self.newDuration),
2669                )
2670            }
2671            #[inline]
2672            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2673                (Self::SIGNATURE_HASH.into(),)
2674            }
2675            #[inline]
2676            fn encode_topics_raw(
2677                &self,
2678                out: &mut [alloy_sol_types::abi::token::WordToken],
2679            ) -> alloy_sol_types::Result<()> {
2680                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2681                    return Err(alloy_sol_types::Error::Overrun);
2682                }
2683                out[0usize] = alloy_sol_types::abi::token::WordToken(
2684                    Self::SIGNATURE_HASH,
2685                );
2686                Ok(())
2687            }
2688        }
2689        #[automatically_derived]
2690        impl alloy_sol_types::private::IntoLogData for MinDelayChange {
2691            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2692                From::from(self)
2693            }
2694            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2695                From::from(&self)
2696            }
2697        }
2698        #[automatically_derived]
2699        impl From<&MinDelayChange> for alloy_sol_types::private::LogData {
2700            #[inline]
2701            fn from(this: &MinDelayChange) -> alloy_sol_types::private::LogData {
2702                alloy_sol_types::SolEvent::encode_log_data(this)
2703            }
2704        }
2705    };
2706    #[derive(serde::Serialize, serde::Deserialize)]
2707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2708    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
2709```solidity
2710event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
2711```*/
2712    #[allow(
2713        non_camel_case_types,
2714        non_snake_case,
2715        clippy::pub_underscore_fields,
2716        clippy::style
2717    )]
2718    #[derive(Clone)]
2719    pub struct RoleAdminChanged {
2720        #[allow(missing_docs)]
2721        pub role: alloy::sol_types::private::FixedBytes<32>,
2722        #[allow(missing_docs)]
2723        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
2724        #[allow(missing_docs)]
2725        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
2726    }
2727    #[allow(
2728        non_camel_case_types,
2729        non_snake_case,
2730        clippy::pub_underscore_fields,
2731        clippy::style
2732    )]
2733    const _: () = {
2734        use alloy::sol_types as alloy_sol_types;
2735        #[automatically_derived]
2736        impl alloy_sol_types::SolEvent for RoleAdminChanged {
2737            type DataTuple<'a> = ();
2738            type DataToken<'a> = <Self::DataTuple<
2739                'a,
2740            > as alloy_sol_types::SolType>::Token<'a>;
2741            type TopicList = (
2742                alloy_sol_types::sol_data::FixedBytes<32>,
2743                alloy::sol_types::sol_data::FixedBytes<32>,
2744                alloy::sol_types::sol_data::FixedBytes<32>,
2745                alloy::sol_types::sol_data::FixedBytes<32>,
2746            );
2747            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
2748            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2749                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
2750                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
2751                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
2752            ]);
2753            const ANONYMOUS: bool = false;
2754            #[allow(unused_variables)]
2755            #[inline]
2756            fn new(
2757                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2758                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2759            ) -> Self {
2760                Self {
2761                    role: topics.1,
2762                    previousAdminRole: topics.2,
2763                    newAdminRole: topics.3,
2764                }
2765            }
2766            #[inline]
2767            fn check_signature(
2768                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2769            ) -> alloy_sol_types::Result<()> {
2770                if topics.0 != Self::SIGNATURE_HASH {
2771                    return Err(
2772                        alloy_sol_types::Error::invalid_event_signature_hash(
2773                            Self::SIGNATURE,
2774                            topics.0,
2775                            Self::SIGNATURE_HASH,
2776                        ),
2777                    );
2778                }
2779                Ok(())
2780            }
2781            #[inline]
2782            fn tokenize_body(&self) -> Self::DataToken<'_> {
2783                ()
2784            }
2785            #[inline]
2786            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2787                (
2788                    Self::SIGNATURE_HASH.into(),
2789                    self.role.clone(),
2790                    self.previousAdminRole.clone(),
2791                    self.newAdminRole.clone(),
2792                )
2793            }
2794            #[inline]
2795            fn encode_topics_raw(
2796                &self,
2797                out: &mut [alloy_sol_types::abi::token::WordToken],
2798            ) -> alloy_sol_types::Result<()> {
2799                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2800                    return Err(alloy_sol_types::Error::Overrun);
2801                }
2802                out[0usize] = alloy_sol_types::abi::token::WordToken(
2803                    Self::SIGNATURE_HASH,
2804                );
2805                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2806                    32,
2807                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2808                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
2809                    32,
2810                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
2811                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
2812                    32,
2813                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
2814                Ok(())
2815            }
2816        }
2817        #[automatically_derived]
2818        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
2819            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2820                From::from(self)
2821            }
2822            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2823                From::from(&self)
2824            }
2825        }
2826        #[automatically_derived]
2827        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
2828            #[inline]
2829            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
2830                alloy_sol_types::SolEvent::encode_log_data(this)
2831            }
2832        }
2833    };
2834    #[derive(serde::Serialize, serde::Deserialize)]
2835    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2836    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
2837```solidity
2838event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
2839```*/
2840    #[allow(
2841        non_camel_case_types,
2842        non_snake_case,
2843        clippy::pub_underscore_fields,
2844        clippy::style
2845    )]
2846    #[derive(Clone)]
2847    pub struct RoleGranted {
2848        #[allow(missing_docs)]
2849        pub role: alloy::sol_types::private::FixedBytes<32>,
2850        #[allow(missing_docs)]
2851        pub account: alloy::sol_types::private::Address,
2852        #[allow(missing_docs)]
2853        pub sender: alloy::sol_types::private::Address,
2854    }
2855    #[allow(
2856        non_camel_case_types,
2857        non_snake_case,
2858        clippy::pub_underscore_fields,
2859        clippy::style
2860    )]
2861    const _: () = {
2862        use alloy::sol_types as alloy_sol_types;
2863        #[automatically_derived]
2864        impl alloy_sol_types::SolEvent for RoleGranted {
2865            type DataTuple<'a> = ();
2866            type DataToken<'a> = <Self::DataTuple<
2867                'a,
2868            > as alloy_sol_types::SolType>::Token<'a>;
2869            type TopicList = (
2870                alloy_sol_types::sol_data::FixedBytes<32>,
2871                alloy::sol_types::sol_data::FixedBytes<32>,
2872                alloy::sol_types::sol_data::Address,
2873                alloy::sol_types::sol_data::Address,
2874            );
2875            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
2876            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2877                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
2878                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
2879                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
2880            ]);
2881            const ANONYMOUS: bool = false;
2882            #[allow(unused_variables)]
2883            #[inline]
2884            fn new(
2885                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2886                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2887            ) -> Self {
2888                Self {
2889                    role: topics.1,
2890                    account: topics.2,
2891                    sender: topics.3,
2892                }
2893            }
2894            #[inline]
2895            fn check_signature(
2896                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2897            ) -> alloy_sol_types::Result<()> {
2898                if topics.0 != Self::SIGNATURE_HASH {
2899                    return Err(
2900                        alloy_sol_types::Error::invalid_event_signature_hash(
2901                            Self::SIGNATURE,
2902                            topics.0,
2903                            Self::SIGNATURE_HASH,
2904                        ),
2905                    );
2906                }
2907                Ok(())
2908            }
2909            #[inline]
2910            fn tokenize_body(&self) -> Self::DataToken<'_> {
2911                ()
2912            }
2913            #[inline]
2914            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2915                (
2916                    Self::SIGNATURE_HASH.into(),
2917                    self.role.clone(),
2918                    self.account.clone(),
2919                    self.sender.clone(),
2920                )
2921            }
2922            #[inline]
2923            fn encode_topics_raw(
2924                &self,
2925                out: &mut [alloy_sol_types::abi::token::WordToken],
2926            ) -> alloy_sol_types::Result<()> {
2927                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2928                    return Err(alloy_sol_types::Error::Overrun);
2929                }
2930                out[0usize] = alloy_sol_types::abi::token::WordToken(
2931                    Self::SIGNATURE_HASH,
2932                );
2933                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2934                    32,
2935                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2936                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2937                    &self.account,
2938                );
2939                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2940                    &self.sender,
2941                );
2942                Ok(())
2943            }
2944        }
2945        #[automatically_derived]
2946        impl alloy_sol_types::private::IntoLogData for RoleGranted {
2947            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2948                From::from(self)
2949            }
2950            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2951                From::from(&self)
2952            }
2953        }
2954        #[automatically_derived]
2955        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
2956            #[inline]
2957            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
2958                alloy_sol_types::SolEvent::encode_log_data(this)
2959            }
2960        }
2961    };
2962    #[derive(serde::Serialize, serde::Deserialize)]
2963    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2964    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
2965```solidity
2966event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
2967```*/
2968    #[allow(
2969        non_camel_case_types,
2970        non_snake_case,
2971        clippy::pub_underscore_fields,
2972        clippy::style
2973    )]
2974    #[derive(Clone)]
2975    pub struct RoleRevoked {
2976        #[allow(missing_docs)]
2977        pub role: alloy::sol_types::private::FixedBytes<32>,
2978        #[allow(missing_docs)]
2979        pub account: alloy::sol_types::private::Address,
2980        #[allow(missing_docs)]
2981        pub sender: alloy::sol_types::private::Address,
2982    }
2983    #[allow(
2984        non_camel_case_types,
2985        non_snake_case,
2986        clippy::pub_underscore_fields,
2987        clippy::style
2988    )]
2989    const _: () = {
2990        use alloy::sol_types as alloy_sol_types;
2991        #[automatically_derived]
2992        impl alloy_sol_types::SolEvent for RoleRevoked {
2993            type DataTuple<'a> = ();
2994            type DataToken<'a> = <Self::DataTuple<
2995                'a,
2996            > as alloy_sol_types::SolType>::Token<'a>;
2997            type TopicList = (
2998                alloy_sol_types::sol_data::FixedBytes<32>,
2999                alloy::sol_types::sol_data::FixedBytes<32>,
3000                alloy::sol_types::sol_data::Address,
3001                alloy::sol_types::sol_data::Address,
3002            );
3003            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
3004            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3005                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
3006                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
3007                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
3008            ]);
3009            const ANONYMOUS: bool = false;
3010            #[allow(unused_variables)]
3011            #[inline]
3012            fn new(
3013                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3014                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3015            ) -> Self {
3016                Self {
3017                    role: topics.1,
3018                    account: topics.2,
3019                    sender: topics.3,
3020                }
3021            }
3022            #[inline]
3023            fn check_signature(
3024                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3025            ) -> alloy_sol_types::Result<()> {
3026                if topics.0 != Self::SIGNATURE_HASH {
3027                    return Err(
3028                        alloy_sol_types::Error::invalid_event_signature_hash(
3029                            Self::SIGNATURE,
3030                            topics.0,
3031                            Self::SIGNATURE_HASH,
3032                        ),
3033                    );
3034                }
3035                Ok(())
3036            }
3037            #[inline]
3038            fn tokenize_body(&self) -> Self::DataToken<'_> {
3039                ()
3040            }
3041            #[inline]
3042            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3043                (
3044                    Self::SIGNATURE_HASH.into(),
3045                    self.role.clone(),
3046                    self.account.clone(),
3047                    self.sender.clone(),
3048                )
3049            }
3050            #[inline]
3051            fn encode_topics_raw(
3052                &self,
3053                out: &mut [alloy_sol_types::abi::token::WordToken],
3054            ) -> alloy_sol_types::Result<()> {
3055                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3056                    return Err(alloy_sol_types::Error::Overrun);
3057                }
3058                out[0usize] = alloy_sol_types::abi::token::WordToken(
3059                    Self::SIGNATURE_HASH,
3060                );
3061                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3062                    32,
3063                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3064                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3065                    &self.account,
3066                );
3067                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3068                    &self.sender,
3069                );
3070                Ok(())
3071            }
3072        }
3073        #[automatically_derived]
3074        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
3075            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3076                From::from(self)
3077            }
3078            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3079                From::from(&self)
3080            }
3081        }
3082        #[automatically_derived]
3083        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
3084            #[inline]
3085            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
3086                alloy_sol_types::SolEvent::encode_log_data(this)
3087            }
3088        }
3089    };
3090    /**Constructor`.
3091```solidity
3092constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
3093```*/
3094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3095    #[derive(Clone)]
3096    pub struct constructorCall {
3097        #[allow(missing_docs)]
3098        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
3099        #[allow(missing_docs)]
3100        pub proposers: alloy::sol_types::private::Vec<
3101            alloy::sol_types::private::Address,
3102        >,
3103        #[allow(missing_docs)]
3104        pub executors: alloy::sol_types::private::Vec<
3105            alloy::sol_types::private::Address,
3106        >,
3107        #[allow(missing_docs)]
3108        pub admin: alloy::sol_types::private::Address,
3109    }
3110    const _: () = {
3111        use alloy::sol_types as alloy_sol_types;
3112        {
3113            #[doc(hidden)]
3114            type UnderlyingSolTuple<'a> = (
3115                alloy::sol_types::sol_data::Uint<256>,
3116                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3117                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3118                alloy::sol_types::sol_data::Address,
3119            );
3120            #[doc(hidden)]
3121            type UnderlyingRustTuple<'a> = (
3122                alloy::sol_types::private::primitives::aliases::U256,
3123                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3124                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3125                alloy::sol_types::private::Address,
3126            );
3127            #[cfg(test)]
3128            #[allow(dead_code, unreachable_patterns)]
3129            fn _type_assertion(
3130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3131            ) {
3132                match _t {
3133                    alloy_sol_types::private::AssertTypeEq::<
3134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3135                    >(_) => {}
3136                }
3137            }
3138            #[automatically_derived]
3139            #[doc(hidden)]
3140            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3141                fn from(value: constructorCall) -> Self {
3142                    (value.minDelay, value.proposers, value.executors, value.admin)
3143                }
3144            }
3145            #[automatically_derived]
3146            #[doc(hidden)]
3147            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3149                    Self {
3150                        minDelay: tuple.0,
3151                        proposers: tuple.1,
3152                        executors: tuple.2,
3153                        admin: tuple.3,
3154                    }
3155                }
3156            }
3157        }
3158        #[automatically_derived]
3159        impl alloy_sol_types::SolConstructor for constructorCall {
3160            type Parameters<'a> = (
3161                alloy::sol_types::sol_data::Uint<256>,
3162                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3163                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3164                alloy::sol_types::sol_data::Address,
3165            );
3166            type Token<'a> = <Self::Parameters<
3167                'a,
3168            > as alloy_sol_types::SolType>::Token<'a>;
3169            #[inline]
3170            fn new<'a>(
3171                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3172            ) -> Self {
3173                tuple.into()
3174            }
3175            #[inline]
3176            fn tokenize(&self) -> Self::Token<'_> {
3177                (
3178                    <alloy::sol_types::sol_data::Uint<
3179                        256,
3180                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
3181                    <alloy::sol_types::sol_data::Array<
3182                        alloy::sol_types::sol_data::Address,
3183                    > as alloy_sol_types::SolType>::tokenize(&self.proposers),
3184                    <alloy::sol_types::sol_data::Array<
3185                        alloy::sol_types::sol_data::Address,
3186                    > as alloy_sol_types::SolType>::tokenize(&self.executors),
3187                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3188                        &self.admin,
3189                    ),
3190                )
3191            }
3192        }
3193    };
3194    #[derive(serde::Serialize, serde::Deserialize)]
3195    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3196    /**Function with signature `CANCELLER_ROLE()` and selector `0xb08e51c0`.
3197```solidity
3198function CANCELLER_ROLE() external view returns (bytes32);
3199```*/
3200    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3201    #[derive(Clone)]
3202    pub struct CANCELLER_ROLECall;
3203    #[derive(serde::Serialize, serde::Deserialize)]
3204    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3205    ///Container type for the return parameters of the [`CANCELLER_ROLE()`](CANCELLER_ROLECall) function.
3206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3207    #[derive(Clone)]
3208    pub struct CANCELLER_ROLEReturn {
3209        #[allow(missing_docs)]
3210        pub _0: alloy::sol_types::private::FixedBytes<32>,
3211    }
3212    #[allow(
3213        non_camel_case_types,
3214        non_snake_case,
3215        clippy::pub_underscore_fields,
3216        clippy::style
3217    )]
3218    const _: () = {
3219        use alloy::sol_types as alloy_sol_types;
3220        {
3221            #[doc(hidden)]
3222            type UnderlyingSolTuple<'a> = ();
3223            #[doc(hidden)]
3224            type UnderlyingRustTuple<'a> = ();
3225            #[cfg(test)]
3226            #[allow(dead_code, unreachable_patterns)]
3227            fn _type_assertion(
3228                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3229            ) {
3230                match _t {
3231                    alloy_sol_types::private::AssertTypeEq::<
3232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3233                    >(_) => {}
3234                }
3235            }
3236            #[automatically_derived]
3237            #[doc(hidden)]
3238            impl ::core::convert::From<CANCELLER_ROLECall> for UnderlyingRustTuple<'_> {
3239                fn from(value: CANCELLER_ROLECall) -> Self {
3240                    ()
3241                }
3242            }
3243            #[automatically_derived]
3244            #[doc(hidden)]
3245            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CANCELLER_ROLECall {
3246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3247                    Self
3248                }
3249            }
3250        }
3251        {
3252            #[doc(hidden)]
3253            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3254            #[doc(hidden)]
3255            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3256            #[cfg(test)]
3257            #[allow(dead_code, unreachable_patterns)]
3258            fn _type_assertion(
3259                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3260            ) {
3261                match _t {
3262                    alloy_sol_types::private::AssertTypeEq::<
3263                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3264                    >(_) => {}
3265                }
3266            }
3267            #[automatically_derived]
3268            #[doc(hidden)]
3269            impl ::core::convert::From<CANCELLER_ROLEReturn>
3270            for UnderlyingRustTuple<'_> {
3271                fn from(value: CANCELLER_ROLEReturn) -> Self {
3272                    (value._0,)
3273                }
3274            }
3275            #[automatically_derived]
3276            #[doc(hidden)]
3277            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3278            for CANCELLER_ROLEReturn {
3279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3280                    Self { _0: tuple.0 }
3281                }
3282            }
3283        }
3284        #[automatically_derived]
3285        impl alloy_sol_types::SolCall for CANCELLER_ROLECall {
3286            type Parameters<'a> = ();
3287            type Token<'a> = <Self::Parameters<
3288                'a,
3289            > as alloy_sol_types::SolType>::Token<'a>;
3290            type Return = alloy::sol_types::private::FixedBytes<32>;
3291            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3292            type ReturnToken<'a> = <Self::ReturnTuple<
3293                'a,
3294            > as alloy_sol_types::SolType>::Token<'a>;
3295            const SIGNATURE: &'static str = "CANCELLER_ROLE()";
3296            const SELECTOR: [u8; 4] = [176u8, 142u8, 81u8, 192u8];
3297            #[inline]
3298            fn new<'a>(
3299                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3300            ) -> Self {
3301                tuple.into()
3302            }
3303            #[inline]
3304            fn tokenize(&self) -> Self::Token<'_> {
3305                ()
3306            }
3307            #[inline]
3308            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3309                (
3310                    <alloy::sol_types::sol_data::FixedBytes<
3311                        32,
3312                    > as alloy_sol_types::SolType>::tokenize(ret),
3313                )
3314            }
3315            #[inline]
3316            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3317                <Self::ReturnTuple<
3318                    '_,
3319                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3320                    .map(|r| {
3321                        let r: CANCELLER_ROLEReturn = r.into();
3322                        r._0
3323                    })
3324            }
3325            #[inline]
3326            fn abi_decode_returns_validate(
3327                data: &[u8],
3328            ) -> alloy_sol_types::Result<Self::Return> {
3329                <Self::ReturnTuple<
3330                    '_,
3331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3332                    .map(|r| {
3333                        let r: CANCELLER_ROLEReturn = r.into();
3334                        r._0
3335                    })
3336            }
3337        }
3338    };
3339    #[derive(serde::Serialize, serde::Deserialize)]
3340    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3341    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
3342```solidity
3343function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
3344```*/
3345    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3346    #[derive(Clone)]
3347    pub struct DEFAULT_ADMIN_ROLECall;
3348    #[derive(serde::Serialize, serde::Deserialize)]
3349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3350    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
3351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3352    #[derive(Clone)]
3353    pub struct DEFAULT_ADMIN_ROLEReturn {
3354        #[allow(missing_docs)]
3355        pub _0: alloy::sol_types::private::FixedBytes<32>,
3356    }
3357    #[allow(
3358        non_camel_case_types,
3359        non_snake_case,
3360        clippy::pub_underscore_fields,
3361        clippy::style
3362    )]
3363    const _: () = {
3364        use alloy::sol_types as alloy_sol_types;
3365        {
3366            #[doc(hidden)]
3367            type UnderlyingSolTuple<'a> = ();
3368            #[doc(hidden)]
3369            type UnderlyingRustTuple<'a> = ();
3370            #[cfg(test)]
3371            #[allow(dead_code, unreachable_patterns)]
3372            fn _type_assertion(
3373                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3374            ) {
3375                match _t {
3376                    alloy_sol_types::private::AssertTypeEq::<
3377                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3378                    >(_) => {}
3379                }
3380            }
3381            #[automatically_derived]
3382            #[doc(hidden)]
3383            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
3384            for UnderlyingRustTuple<'_> {
3385                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
3386                    ()
3387                }
3388            }
3389            #[automatically_derived]
3390            #[doc(hidden)]
3391            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3392            for DEFAULT_ADMIN_ROLECall {
3393                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3394                    Self
3395                }
3396            }
3397        }
3398        {
3399            #[doc(hidden)]
3400            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3401            #[doc(hidden)]
3402            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3403            #[cfg(test)]
3404            #[allow(dead_code, unreachable_patterns)]
3405            fn _type_assertion(
3406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3407            ) {
3408                match _t {
3409                    alloy_sol_types::private::AssertTypeEq::<
3410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3411                    >(_) => {}
3412                }
3413            }
3414            #[automatically_derived]
3415            #[doc(hidden)]
3416            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
3417            for UnderlyingRustTuple<'_> {
3418                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
3419                    (value._0,)
3420                }
3421            }
3422            #[automatically_derived]
3423            #[doc(hidden)]
3424            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3425            for DEFAULT_ADMIN_ROLEReturn {
3426                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3427                    Self { _0: tuple.0 }
3428                }
3429            }
3430        }
3431        #[automatically_derived]
3432        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
3433            type Parameters<'a> = ();
3434            type Token<'a> = <Self::Parameters<
3435                'a,
3436            > as alloy_sol_types::SolType>::Token<'a>;
3437            type Return = alloy::sol_types::private::FixedBytes<32>;
3438            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3439            type ReturnToken<'a> = <Self::ReturnTuple<
3440                'a,
3441            > as alloy_sol_types::SolType>::Token<'a>;
3442            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
3443            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
3444            #[inline]
3445            fn new<'a>(
3446                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3447            ) -> Self {
3448                tuple.into()
3449            }
3450            #[inline]
3451            fn tokenize(&self) -> Self::Token<'_> {
3452                ()
3453            }
3454            #[inline]
3455            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3456                (
3457                    <alloy::sol_types::sol_data::FixedBytes<
3458                        32,
3459                    > as alloy_sol_types::SolType>::tokenize(ret),
3460                )
3461            }
3462            #[inline]
3463            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3464                <Self::ReturnTuple<
3465                    '_,
3466                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3467                    .map(|r| {
3468                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3469                        r._0
3470                    })
3471            }
3472            #[inline]
3473            fn abi_decode_returns_validate(
3474                data: &[u8],
3475            ) -> alloy_sol_types::Result<Self::Return> {
3476                <Self::ReturnTuple<
3477                    '_,
3478                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3479                    .map(|r| {
3480                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3481                        r._0
3482                    })
3483            }
3484        }
3485    };
3486    #[derive(serde::Serialize, serde::Deserialize)]
3487    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3488    /**Function with signature `EXECUTOR_ROLE()` and selector `0x07bd0265`.
3489```solidity
3490function EXECUTOR_ROLE() external view returns (bytes32);
3491```*/
3492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3493    #[derive(Clone)]
3494    pub struct EXECUTOR_ROLECall;
3495    #[derive(serde::Serialize, serde::Deserialize)]
3496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3497    ///Container type for the return parameters of the [`EXECUTOR_ROLE()`](EXECUTOR_ROLECall) function.
3498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3499    #[derive(Clone)]
3500    pub struct EXECUTOR_ROLEReturn {
3501        #[allow(missing_docs)]
3502        pub _0: alloy::sol_types::private::FixedBytes<32>,
3503    }
3504    #[allow(
3505        non_camel_case_types,
3506        non_snake_case,
3507        clippy::pub_underscore_fields,
3508        clippy::style
3509    )]
3510    const _: () = {
3511        use alloy::sol_types as alloy_sol_types;
3512        {
3513            #[doc(hidden)]
3514            type UnderlyingSolTuple<'a> = ();
3515            #[doc(hidden)]
3516            type UnderlyingRustTuple<'a> = ();
3517            #[cfg(test)]
3518            #[allow(dead_code, unreachable_patterns)]
3519            fn _type_assertion(
3520                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3521            ) {
3522                match _t {
3523                    alloy_sol_types::private::AssertTypeEq::<
3524                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3525                    >(_) => {}
3526                }
3527            }
3528            #[automatically_derived]
3529            #[doc(hidden)]
3530            impl ::core::convert::From<EXECUTOR_ROLECall> for UnderlyingRustTuple<'_> {
3531                fn from(value: EXECUTOR_ROLECall) -> Self {
3532                    ()
3533                }
3534            }
3535            #[automatically_derived]
3536            #[doc(hidden)]
3537            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLECall {
3538                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3539                    Self
3540                }
3541            }
3542        }
3543        {
3544            #[doc(hidden)]
3545            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3546            #[doc(hidden)]
3547            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3548            #[cfg(test)]
3549            #[allow(dead_code, unreachable_patterns)]
3550            fn _type_assertion(
3551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3552            ) {
3553                match _t {
3554                    alloy_sol_types::private::AssertTypeEq::<
3555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3556                    >(_) => {}
3557                }
3558            }
3559            #[automatically_derived]
3560            #[doc(hidden)]
3561            impl ::core::convert::From<EXECUTOR_ROLEReturn> for UnderlyingRustTuple<'_> {
3562                fn from(value: EXECUTOR_ROLEReturn) -> Self {
3563                    (value._0,)
3564                }
3565            }
3566            #[automatically_derived]
3567            #[doc(hidden)]
3568            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLEReturn {
3569                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3570                    Self { _0: tuple.0 }
3571                }
3572            }
3573        }
3574        #[automatically_derived]
3575        impl alloy_sol_types::SolCall for EXECUTOR_ROLECall {
3576            type Parameters<'a> = ();
3577            type Token<'a> = <Self::Parameters<
3578                'a,
3579            > as alloy_sol_types::SolType>::Token<'a>;
3580            type Return = alloy::sol_types::private::FixedBytes<32>;
3581            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3582            type ReturnToken<'a> = <Self::ReturnTuple<
3583                'a,
3584            > as alloy_sol_types::SolType>::Token<'a>;
3585            const SIGNATURE: &'static str = "EXECUTOR_ROLE()";
3586            const SELECTOR: [u8; 4] = [7u8, 189u8, 2u8, 101u8];
3587            #[inline]
3588            fn new<'a>(
3589                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3590            ) -> Self {
3591                tuple.into()
3592            }
3593            #[inline]
3594            fn tokenize(&self) -> Self::Token<'_> {
3595                ()
3596            }
3597            #[inline]
3598            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3599                (
3600                    <alloy::sol_types::sol_data::FixedBytes<
3601                        32,
3602                    > as alloy_sol_types::SolType>::tokenize(ret),
3603                )
3604            }
3605            #[inline]
3606            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3607                <Self::ReturnTuple<
3608                    '_,
3609                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3610                    .map(|r| {
3611                        let r: EXECUTOR_ROLEReturn = r.into();
3612                        r._0
3613                    })
3614            }
3615            #[inline]
3616            fn abi_decode_returns_validate(
3617                data: &[u8],
3618            ) -> alloy_sol_types::Result<Self::Return> {
3619                <Self::ReturnTuple<
3620                    '_,
3621                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3622                    .map(|r| {
3623                        let r: EXECUTOR_ROLEReturn = r.into();
3624                        r._0
3625                    })
3626            }
3627        }
3628    };
3629    #[derive(serde::Serialize, serde::Deserialize)]
3630    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3631    /**Function with signature `PROPOSER_ROLE()` and selector `0x8f61f4f5`.
3632```solidity
3633function PROPOSER_ROLE() external view returns (bytes32);
3634```*/
3635    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3636    #[derive(Clone)]
3637    pub struct PROPOSER_ROLECall;
3638    #[derive(serde::Serialize, serde::Deserialize)]
3639    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3640    ///Container type for the return parameters of the [`PROPOSER_ROLE()`](PROPOSER_ROLECall) function.
3641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3642    #[derive(Clone)]
3643    pub struct PROPOSER_ROLEReturn {
3644        #[allow(missing_docs)]
3645        pub _0: alloy::sol_types::private::FixedBytes<32>,
3646    }
3647    #[allow(
3648        non_camel_case_types,
3649        non_snake_case,
3650        clippy::pub_underscore_fields,
3651        clippy::style
3652    )]
3653    const _: () = {
3654        use alloy::sol_types as alloy_sol_types;
3655        {
3656            #[doc(hidden)]
3657            type UnderlyingSolTuple<'a> = ();
3658            #[doc(hidden)]
3659            type UnderlyingRustTuple<'a> = ();
3660            #[cfg(test)]
3661            #[allow(dead_code, unreachable_patterns)]
3662            fn _type_assertion(
3663                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3664            ) {
3665                match _t {
3666                    alloy_sol_types::private::AssertTypeEq::<
3667                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3668                    >(_) => {}
3669                }
3670            }
3671            #[automatically_derived]
3672            #[doc(hidden)]
3673            impl ::core::convert::From<PROPOSER_ROLECall> for UnderlyingRustTuple<'_> {
3674                fn from(value: PROPOSER_ROLECall) -> Self {
3675                    ()
3676                }
3677            }
3678            #[automatically_derived]
3679            #[doc(hidden)]
3680            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLECall {
3681                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3682                    Self
3683                }
3684            }
3685        }
3686        {
3687            #[doc(hidden)]
3688            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3689            #[doc(hidden)]
3690            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3691            #[cfg(test)]
3692            #[allow(dead_code, unreachable_patterns)]
3693            fn _type_assertion(
3694                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3695            ) {
3696                match _t {
3697                    alloy_sol_types::private::AssertTypeEq::<
3698                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3699                    >(_) => {}
3700                }
3701            }
3702            #[automatically_derived]
3703            #[doc(hidden)]
3704            impl ::core::convert::From<PROPOSER_ROLEReturn> for UnderlyingRustTuple<'_> {
3705                fn from(value: PROPOSER_ROLEReturn) -> Self {
3706                    (value._0,)
3707                }
3708            }
3709            #[automatically_derived]
3710            #[doc(hidden)]
3711            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLEReturn {
3712                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3713                    Self { _0: tuple.0 }
3714                }
3715            }
3716        }
3717        #[automatically_derived]
3718        impl alloy_sol_types::SolCall for PROPOSER_ROLECall {
3719            type Parameters<'a> = ();
3720            type Token<'a> = <Self::Parameters<
3721                'a,
3722            > as alloy_sol_types::SolType>::Token<'a>;
3723            type Return = alloy::sol_types::private::FixedBytes<32>;
3724            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3725            type ReturnToken<'a> = <Self::ReturnTuple<
3726                'a,
3727            > as alloy_sol_types::SolType>::Token<'a>;
3728            const SIGNATURE: &'static str = "PROPOSER_ROLE()";
3729            const SELECTOR: [u8; 4] = [143u8, 97u8, 244u8, 245u8];
3730            #[inline]
3731            fn new<'a>(
3732                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3733            ) -> Self {
3734                tuple.into()
3735            }
3736            #[inline]
3737            fn tokenize(&self) -> Self::Token<'_> {
3738                ()
3739            }
3740            #[inline]
3741            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3742                (
3743                    <alloy::sol_types::sol_data::FixedBytes<
3744                        32,
3745                    > as alloy_sol_types::SolType>::tokenize(ret),
3746                )
3747            }
3748            #[inline]
3749            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3750                <Self::ReturnTuple<
3751                    '_,
3752                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3753                    .map(|r| {
3754                        let r: PROPOSER_ROLEReturn = r.into();
3755                        r._0
3756                    })
3757            }
3758            #[inline]
3759            fn abi_decode_returns_validate(
3760                data: &[u8],
3761            ) -> alloy_sol_types::Result<Self::Return> {
3762                <Self::ReturnTuple<
3763                    '_,
3764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3765                    .map(|r| {
3766                        let r: PROPOSER_ROLEReturn = r.into();
3767                        r._0
3768                    })
3769            }
3770        }
3771    };
3772    #[derive(serde::Serialize, serde::Deserialize)]
3773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3774    /**Function with signature `cancel(bytes32)` and selector `0xc4d252f5`.
3775```solidity
3776function cancel(bytes32 id) external;
3777```*/
3778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3779    #[derive(Clone)]
3780    pub struct cancelCall {
3781        #[allow(missing_docs)]
3782        pub id: alloy::sol_types::private::FixedBytes<32>,
3783    }
3784    ///Container type for the return parameters of the [`cancel(bytes32)`](cancelCall) function.
3785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3786    #[derive(Clone)]
3787    pub struct cancelReturn {}
3788    #[allow(
3789        non_camel_case_types,
3790        non_snake_case,
3791        clippy::pub_underscore_fields,
3792        clippy::style
3793    )]
3794    const _: () = {
3795        use alloy::sol_types as alloy_sol_types;
3796        {
3797            #[doc(hidden)]
3798            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3799            #[doc(hidden)]
3800            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3801            #[cfg(test)]
3802            #[allow(dead_code, unreachable_patterns)]
3803            fn _type_assertion(
3804                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3805            ) {
3806                match _t {
3807                    alloy_sol_types::private::AssertTypeEq::<
3808                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3809                    >(_) => {}
3810                }
3811            }
3812            #[automatically_derived]
3813            #[doc(hidden)]
3814            impl ::core::convert::From<cancelCall> for UnderlyingRustTuple<'_> {
3815                fn from(value: cancelCall) -> Self {
3816                    (value.id,)
3817                }
3818            }
3819            #[automatically_derived]
3820            #[doc(hidden)]
3821            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelCall {
3822                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3823                    Self { id: tuple.0 }
3824                }
3825            }
3826        }
3827        {
3828            #[doc(hidden)]
3829            type UnderlyingSolTuple<'a> = ();
3830            #[doc(hidden)]
3831            type UnderlyingRustTuple<'a> = ();
3832            #[cfg(test)]
3833            #[allow(dead_code, unreachable_patterns)]
3834            fn _type_assertion(
3835                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3836            ) {
3837                match _t {
3838                    alloy_sol_types::private::AssertTypeEq::<
3839                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3840                    >(_) => {}
3841                }
3842            }
3843            #[automatically_derived]
3844            #[doc(hidden)]
3845            impl ::core::convert::From<cancelReturn> for UnderlyingRustTuple<'_> {
3846                fn from(value: cancelReturn) -> Self {
3847                    ()
3848                }
3849            }
3850            #[automatically_derived]
3851            #[doc(hidden)]
3852            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelReturn {
3853                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3854                    Self {}
3855                }
3856            }
3857        }
3858        impl cancelReturn {
3859            fn _tokenize(
3860                &self,
3861            ) -> <cancelCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
3862                ()
3863            }
3864        }
3865        #[automatically_derived]
3866        impl alloy_sol_types::SolCall for cancelCall {
3867            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3868            type Token<'a> = <Self::Parameters<
3869                'a,
3870            > as alloy_sol_types::SolType>::Token<'a>;
3871            type Return = cancelReturn;
3872            type ReturnTuple<'a> = ();
3873            type ReturnToken<'a> = <Self::ReturnTuple<
3874                'a,
3875            > as alloy_sol_types::SolType>::Token<'a>;
3876            const SIGNATURE: &'static str = "cancel(bytes32)";
3877            const SELECTOR: [u8; 4] = [196u8, 210u8, 82u8, 245u8];
3878            #[inline]
3879            fn new<'a>(
3880                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3881            ) -> Self {
3882                tuple.into()
3883            }
3884            #[inline]
3885            fn tokenize(&self) -> Self::Token<'_> {
3886                (
3887                    <alloy::sol_types::sol_data::FixedBytes<
3888                        32,
3889                    > as alloy_sol_types::SolType>::tokenize(&self.id),
3890                )
3891            }
3892            #[inline]
3893            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3894                cancelReturn::_tokenize(ret)
3895            }
3896            #[inline]
3897            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3898                <Self::ReturnTuple<
3899                    '_,
3900                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3901                    .map(Into::into)
3902            }
3903            #[inline]
3904            fn abi_decode_returns_validate(
3905                data: &[u8],
3906            ) -> alloy_sol_types::Result<Self::Return> {
3907                <Self::ReturnTuple<
3908                    '_,
3909                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3910                    .map(Into::into)
3911            }
3912        }
3913    };
3914    #[derive(serde::Serialize, serde::Deserialize)]
3915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3916    /**Function with signature `execute(address,uint256,bytes,bytes32,bytes32)` and selector `0x134008d3`.
3917```solidity
3918function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
3919```*/
3920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3921    #[derive(Clone)]
3922    pub struct executeCall {
3923        #[allow(missing_docs)]
3924        pub target: alloy::sol_types::private::Address,
3925        #[allow(missing_docs)]
3926        pub value: alloy::sol_types::private::primitives::aliases::U256,
3927        #[allow(missing_docs)]
3928        pub payload: alloy::sol_types::private::Bytes,
3929        #[allow(missing_docs)]
3930        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
3931        #[allow(missing_docs)]
3932        pub salt: alloy::sol_types::private::FixedBytes<32>,
3933    }
3934    ///Container type for the return parameters of the [`execute(address,uint256,bytes,bytes32,bytes32)`](executeCall) function.
3935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3936    #[derive(Clone)]
3937    pub struct executeReturn {}
3938    #[allow(
3939        non_camel_case_types,
3940        non_snake_case,
3941        clippy::pub_underscore_fields,
3942        clippy::style
3943    )]
3944    const _: () = {
3945        use alloy::sol_types as alloy_sol_types;
3946        {
3947            #[doc(hidden)]
3948            type UnderlyingSolTuple<'a> = (
3949                alloy::sol_types::sol_data::Address,
3950                alloy::sol_types::sol_data::Uint<256>,
3951                alloy::sol_types::sol_data::Bytes,
3952                alloy::sol_types::sol_data::FixedBytes<32>,
3953                alloy::sol_types::sol_data::FixedBytes<32>,
3954            );
3955            #[doc(hidden)]
3956            type UnderlyingRustTuple<'a> = (
3957                alloy::sol_types::private::Address,
3958                alloy::sol_types::private::primitives::aliases::U256,
3959                alloy::sol_types::private::Bytes,
3960                alloy::sol_types::private::FixedBytes<32>,
3961                alloy::sol_types::private::FixedBytes<32>,
3962            );
3963            #[cfg(test)]
3964            #[allow(dead_code, unreachable_patterns)]
3965            fn _type_assertion(
3966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3967            ) {
3968                match _t {
3969                    alloy_sol_types::private::AssertTypeEq::<
3970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3971                    >(_) => {}
3972                }
3973            }
3974            #[automatically_derived]
3975            #[doc(hidden)]
3976            impl ::core::convert::From<executeCall> for UnderlyingRustTuple<'_> {
3977                fn from(value: executeCall) -> Self {
3978                    (
3979                        value.target,
3980                        value.value,
3981                        value.payload,
3982                        value.predecessor,
3983                        value.salt,
3984                    )
3985                }
3986            }
3987            #[automatically_derived]
3988            #[doc(hidden)]
3989            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeCall {
3990                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3991                    Self {
3992                        target: tuple.0,
3993                        value: tuple.1,
3994                        payload: tuple.2,
3995                        predecessor: tuple.3,
3996                        salt: tuple.4,
3997                    }
3998                }
3999            }
4000        }
4001        {
4002            #[doc(hidden)]
4003            type UnderlyingSolTuple<'a> = ();
4004            #[doc(hidden)]
4005            type UnderlyingRustTuple<'a> = ();
4006            #[cfg(test)]
4007            #[allow(dead_code, unreachable_patterns)]
4008            fn _type_assertion(
4009                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4010            ) {
4011                match _t {
4012                    alloy_sol_types::private::AssertTypeEq::<
4013                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4014                    >(_) => {}
4015                }
4016            }
4017            #[automatically_derived]
4018            #[doc(hidden)]
4019            impl ::core::convert::From<executeReturn> for UnderlyingRustTuple<'_> {
4020                fn from(value: executeReturn) -> Self {
4021                    ()
4022                }
4023            }
4024            #[automatically_derived]
4025            #[doc(hidden)]
4026            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeReturn {
4027                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4028                    Self {}
4029                }
4030            }
4031        }
4032        impl executeReturn {
4033            fn _tokenize(
4034                &self,
4035            ) -> <executeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4036                ()
4037            }
4038        }
4039        #[automatically_derived]
4040        impl alloy_sol_types::SolCall for executeCall {
4041            type Parameters<'a> = (
4042                alloy::sol_types::sol_data::Address,
4043                alloy::sol_types::sol_data::Uint<256>,
4044                alloy::sol_types::sol_data::Bytes,
4045                alloy::sol_types::sol_data::FixedBytes<32>,
4046                alloy::sol_types::sol_data::FixedBytes<32>,
4047            );
4048            type Token<'a> = <Self::Parameters<
4049                'a,
4050            > as alloy_sol_types::SolType>::Token<'a>;
4051            type Return = executeReturn;
4052            type ReturnTuple<'a> = ();
4053            type ReturnToken<'a> = <Self::ReturnTuple<
4054                'a,
4055            > as alloy_sol_types::SolType>::Token<'a>;
4056            const SIGNATURE: &'static str = "execute(address,uint256,bytes,bytes32,bytes32)";
4057            const SELECTOR: [u8; 4] = [19u8, 64u8, 8u8, 211u8];
4058            #[inline]
4059            fn new<'a>(
4060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4061            ) -> Self {
4062                tuple.into()
4063            }
4064            #[inline]
4065            fn tokenize(&self) -> Self::Token<'_> {
4066                (
4067                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4068                        &self.target,
4069                    ),
4070                    <alloy::sol_types::sol_data::Uint<
4071                        256,
4072                    > as alloy_sol_types::SolType>::tokenize(&self.value),
4073                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4074                        &self.payload,
4075                    ),
4076                    <alloy::sol_types::sol_data::FixedBytes<
4077                        32,
4078                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4079                    <alloy::sol_types::sol_data::FixedBytes<
4080                        32,
4081                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4082                )
4083            }
4084            #[inline]
4085            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4086                executeReturn::_tokenize(ret)
4087            }
4088            #[inline]
4089            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4090                <Self::ReturnTuple<
4091                    '_,
4092                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4093                    .map(Into::into)
4094            }
4095            #[inline]
4096            fn abi_decode_returns_validate(
4097                data: &[u8],
4098            ) -> alloy_sol_types::Result<Self::Return> {
4099                <Self::ReturnTuple<
4100                    '_,
4101                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4102                    .map(Into::into)
4103            }
4104        }
4105    };
4106    #[derive(serde::Serialize, serde::Deserialize)]
4107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4108    /**Function with signature `executeBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xe38335e5`.
4109```solidity
4110function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
4111```*/
4112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4113    #[derive(Clone)]
4114    pub struct executeBatchCall {
4115        #[allow(missing_docs)]
4116        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4117        #[allow(missing_docs)]
4118        pub values: alloy::sol_types::private::Vec<
4119            alloy::sol_types::private::primitives::aliases::U256,
4120        >,
4121        #[allow(missing_docs)]
4122        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4123        #[allow(missing_docs)]
4124        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
4125        #[allow(missing_docs)]
4126        pub salt: alloy::sol_types::private::FixedBytes<32>,
4127    }
4128    ///Container type for the return parameters of the [`executeBatch(address[],uint256[],bytes[],bytes32,bytes32)`](executeBatchCall) function.
4129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4130    #[derive(Clone)]
4131    pub struct executeBatchReturn {}
4132    #[allow(
4133        non_camel_case_types,
4134        non_snake_case,
4135        clippy::pub_underscore_fields,
4136        clippy::style
4137    )]
4138    const _: () = {
4139        use alloy::sol_types as alloy_sol_types;
4140        {
4141            #[doc(hidden)]
4142            type UnderlyingSolTuple<'a> = (
4143                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4144                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4145                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4146                alloy::sol_types::sol_data::FixedBytes<32>,
4147                alloy::sol_types::sol_data::FixedBytes<32>,
4148            );
4149            #[doc(hidden)]
4150            type UnderlyingRustTuple<'a> = (
4151                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4152                alloy::sol_types::private::Vec<
4153                    alloy::sol_types::private::primitives::aliases::U256,
4154                >,
4155                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4156                alloy::sol_types::private::FixedBytes<32>,
4157                alloy::sol_types::private::FixedBytes<32>,
4158            );
4159            #[cfg(test)]
4160            #[allow(dead_code, unreachable_patterns)]
4161            fn _type_assertion(
4162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4163            ) {
4164                match _t {
4165                    alloy_sol_types::private::AssertTypeEq::<
4166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4167                    >(_) => {}
4168                }
4169            }
4170            #[automatically_derived]
4171            #[doc(hidden)]
4172            impl ::core::convert::From<executeBatchCall> for UnderlyingRustTuple<'_> {
4173                fn from(value: executeBatchCall) -> Self {
4174                    (
4175                        value.targets,
4176                        value.values,
4177                        value.payloads,
4178                        value.predecessor,
4179                        value.salt,
4180                    )
4181                }
4182            }
4183            #[automatically_derived]
4184            #[doc(hidden)]
4185            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchCall {
4186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4187                    Self {
4188                        targets: tuple.0,
4189                        values: tuple.1,
4190                        payloads: tuple.2,
4191                        predecessor: tuple.3,
4192                        salt: tuple.4,
4193                    }
4194                }
4195            }
4196        }
4197        {
4198            #[doc(hidden)]
4199            type UnderlyingSolTuple<'a> = ();
4200            #[doc(hidden)]
4201            type UnderlyingRustTuple<'a> = ();
4202            #[cfg(test)]
4203            #[allow(dead_code, unreachable_patterns)]
4204            fn _type_assertion(
4205                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4206            ) {
4207                match _t {
4208                    alloy_sol_types::private::AssertTypeEq::<
4209                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4210                    >(_) => {}
4211                }
4212            }
4213            #[automatically_derived]
4214            #[doc(hidden)]
4215            impl ::core::convert::From<executeBatchReturn> for UnderlyingRustTuple<'_> {
4216                fn from(value: executeBatchReturn) -> Self {
4217                    ()
4218                }
4219            }
4220            #[automatically_derived]
4221            #[doc(hidden)]
4222            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchReturn {
4223                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4224                    Self {}
4225                }
4226            }
4227        }
4228        impl executeBatchReturn {
4229            fn _tokenize(
4230                &self,
4231            ) -> <executeBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4232                ()
4233            }
4234        }
4235        #[automatically_derived]
4236        impl alloy_sol_types::SolCall for executeBatchCall {
4237            type Parameters<'a> = (
4238                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4239                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4240                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4241                alloy::sol_types::sol_data::FixedBytes<32>,
4242                alloy::sol_types::sol_data::FixedBytes<32>,
4243            );
4244            type Token<'a> = <Self::Parameters<
4245                'a,
4246            > as alloy_sol_types::SolType>::Token<'a>;
4247            type Return = executeBatchReturn;
4248            type ReturnTuple<'a> = ();
4249            type ReturnToken<'a> = <Self::ReturnTuple<
4250                'a,
4251            > as alloy_sol_types::SolType>::Token<'a>;
4252            const SIGNATURE: &'static str = "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)";
4253            const SELECTOR: [u8; 4] = [227u8, 131u8, 53u8, 229u8];
4254            #[inline]
4255            fn new<'a>(
4256                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4257            ) -> Self {
4258                tuple.into()
4259            }
4260            #[inline]
4261            fn tokenize(&self) -> Self::Token<'_> {
4262                (
4263                    <alloy::sol_types::sol_data::Array<
4264                        alloy::sol_types::sol_data::Address,
4265                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
4266                    <alloy::sol_types::sol_data::Array<
4267                        alloy::sol_types::sol_data::Uint<256>,
4268                    > as alloy_sol_types::SolType>::tokenize(&self.values),
4269                    <alloy::sol_types::sol_data::Array<
4270                        alloy::sol_types::sol_data::Bytes,
4271                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
4272                    <alloy::sol_types::sol_data::FixedBytes<
4273                        32,
4274                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4275                    <alloy::sol_types::sol_data::FixedBytes<
4276                        32,
4277                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4278                )
4279            }
4280            #[inline]
4281            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4282                executeBatchReturn::_tokenize(ret)
4283            }
4284            #[inline]
4285            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4286                <Self::ReturnTuple<
4287                    '_,
4288                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4289                    .map(Into::into)
4290            }
4291            #[inline]
4292            fn abi_decode_returns_validate(
4293                data: &[u8],
4294            ) -> alloy_sol_types::Result<Self::Return> {
4295                <Self::ReturnTuple<
4296                    '_,
4297                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4298                    .map(Into::into)
4299            }
4300        }
4301    };
4302    #[derive(serde::Serialize, serde::Deserialize)]
4303    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4304    /**Function with signature `getMinDelay()` and selector `0xf27a0c92`.
4305```solidity
4306function getMinDelay() external view returns (uint256);
4307```*/
4308    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4309    #[derive(Clone)]
4310    pub struct getMinDelayCall;
4311    #[derive(serde::Serialize, serde::Deserialize)]
4312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4313    ///Container type for the return parameters of the [`getMinDelay()`](getMinDelayCall) function.
4314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4315    #[derive(Clone)]
4316    pub struct getMinDelayReturn {
4317        #[allow(missing_docs)]
4318        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4319    }
4320    #[allow(
4321        non_camel_case_types,
4322        non_snake_case,
4323        clippy::pub_underscore_fields,
4324        clippy::style
4325    )]
4326    const _: () = {
4327        use alloy::sol_types as alloy_sol_types;
4328        {
4329            #[doc(hidden)]
4330            type UnderlyingSolTuple<'a> = ();
4331            #[doc(hidden)]
4332            type UnderlyingRustTuple<'a> = ();
4333            #[cfg(test)]
4334            #[allow(dead_code, unreachable_patterns)]
4335            fn _type_assertion(
4336                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4337            ) {
4338                match _t {
4339                    alloy_sol_types::private::AssertTypeEq::<
4340                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4341                    >(_) => {}
4342                }
4343            }
4344            #[automatically_derived]
4345            #[doc(hidden)]
4346            impl ::core::convert::From<getMinDelayCall> for UnderlyingRustTuple<'_> {
4347                fn from(value: getMinDelayCall) -> Self {
4348                    ()
4349                }
4350            }
4351            #[automatically_derived]
4352            #[doc(hidden)]
4353            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayCall {
4354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4355                    Self
4356                }
4357            }
4358        }
4359        {
4360            #[doc(hidden)]
4361            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4362            #[doc(hidden)]
4363            type UnderlyingRustTuple<'a> = (
4364                alloy::sol_types::private::primitives::aliases::U256,
4365            );
4366            #[cfg(test)]
4367            #[allow(dead_code, unreachable_patterns)]
4368            fn _type_assertion(
4369                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4370            ) {
4371                match _t {
4372                    alloy_sol_types::private::AssertTypeEq::<
4373                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4374                    >(_) => {}
4375                }
4376            }
4377            #[automatically_derived]
4378            #[doc(hidden)]
4379            impl ::core::convert::From<getMinDelayReturn> for UnderlyingRustTuple<'_> {
4380                fn from(value: getMinDelayReturn) -> Self {
4381                    (value._0,)
4382                }
4383            }
4384            #[automatically_derived]
4385            #[doc(hidden)]
4386            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayReturn {
4387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4388                    Self { _0: tuple.0 }
4389                }
4390            }
4391        }
4392        #[automatically_derived]
4393        impl alloy_sol_types::SolCall for getMinDelayCall {
4394            type Parameters<'a> = ();
4395            type Token<'a> = <Self::Parameters<
4396                'a,
4397            > as alloy_sol_types::SolType>::Token<'a>;
4398            type Return = alloy::sol_types::private::primitives::aliases::U256;
4399            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4400            type ReturnToken<'a> = <Self::ReturnTuple<
4401                'a,
4402            > as alloy_sol_types::SolType>::Token<'a>;
4403            const SIGNATURE: &'static str = "getMinDelay()";
4404            const SELECTOR: [u8; 4] = [242u8, 122u8, 12u8, 146u8];
4405            #[inline]
4406            fn new<'a>(
4407                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4408            ) -> Self {
4409                tuple.into()
4410            }
4411            #[inline]
4412            fn tokenize(&self) -> Self::Token<'_> {
4413                ()
4414            }
4415            #[inline]
4416            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4417                (
4418                    <alloy::sol_types::sol_data::Uint<
4419                        256,
4420                    > as alloy_sol_types::SolType>::tokenize(ret),
4421                )
4422            }
4423            #[inline]
4424            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4425                <Self::ReturnTuple<
4426                    '_,
4427                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4428                    .map(|r| {
4429                        let r: getMinDelayReturn = r.into();
4430                        r._0
4431                    })
4432            }
4433            #[inline]
4434            fn abi_decode_returns_validate(
4435                data: &[u8],
4436            ) -> alloy_sol_types::Result<Self::Return> {
4437                <Self::ReturnTuple<
4438                    '_,
4439                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4440                    .map(|r| {
4441                        let r: getMinDelayReturn = r.into();
4442                        r._0
4443                    })
4444            }
4445        }
4446    };
4447    #[derive(serde::Serialize, serde::Deserialize)]
4448    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4449    /**Function with signature `getOperationState(bytes32)` and selector `0x7958004c`.
4450```solidity
4451function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
4452```*/
4453    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4454    #[derive(Clone)]
4455    pub struct getOperationStateCall {
4456        #[allow(missing_docs)]
4457        pub id: alloy::sol_types::private::FixedBytes<32>,
4458    }
4459    #[derive(serde::Serialize, serde::Deserialize)]
4460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4461    ///Container type for the return parameters of the [`getOperationState(bytes32)`](getOperationStateCall) function.
4462    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4463    #[derive(Clone)]
4464    pub struct getOperationStateReturn {
4465        #[allow(missing_docs)]
4466        pub _0: <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4467    }
4468    #[allow(
4469        non_camel_case_types,
4470        non_snake_case,
4471        clippy::pub_underscore_fields,
4472        clippy::style
4473    )]
4474    const _: () = {
4475        use alloy::sol_types as alloy_sol_types;
4476        {
4477            #[doc(hidden)]
4478            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4479            #[doc(hidden)]
4480            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4481            #[cfg(test)]
4482            #[allow(dead_code, unreachable_patterns)]
4483            fn _type_assertion(
4484                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4485            ) {
4486                match _t {
4487                    alloy_sol_types::private::AssertTypeEq::<
4488                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4489                    >(_) => {}
4490                }
4491            }
4492            #[automatically_derived]
4493            #[doc(hidden)]
4494            impl ::core::convert::From<getOperationStateCall>
4495            for UnderlyingRustTuple<'_> {
4496                fn from(value: getOperationStateCall) -> Self {
4497                    (value.id,)
4498                }
4499            }
4500            #[automatically_derived]
4501            #[doc(hidden)]
4502            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4503            for getOperationStateCall {
4504                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4505                    Self { id: tuple.0 }
4506                }
4507            }
4508        }
4509        {
4510            #[doc(hidden)]
4511            type UnderlyingSolTuple<'a> = (TimelockController::OperationState,);
4512            #[doc(hidden)]
4513            type UnderlyingRustTuple<'a> = (
4514                <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4515            );
4516            #[cfg(test)]
4517            #[allow(dead_code, unreachable_patterns)]
4518            fn _type_assertion(
4519                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4520            ) {
4521                match _t {
4522                    alloy_sol_types::private::AssertTypeEq::<
4523                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4524                    >(_) => {}
4525                }
4526            }
4527            #[automatically_derived]
4528            #[doc(hidden)]
4529            impl ::core::convert::From<getOperationStateReturn>
4530            for UnderlyingRustTuple<'_> {
4531                fn from(value: getOperationStateReturn) -> Self {
4532                    (value._0,)
4533                }
4534            }
4535            #[automatically_derived]
4536            #[doc(hidden)]
4537            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4538            for getOperationStateReturn {
4539                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4540                    Self { _0: tuple.0 }
4541                }
4542            }
4543        }
4544        #[automatically_derived]
4545        impl alloy_sol_types::SolCall for getOperationStateCall {
4546            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4547            type Token<'a> = <Self::Parameters<
4548                'a,
4549            > as alloy_sol_types::SolType>::Token<'a>;
4550            type Return = <TimelockController::OperationState as alloy::sol_types::SolType>::RustType;
4551            type ReturnTuple<'a> = (TimelockController::OperationState,);
4552            type ReturnToken<'a> = <Self::ReturnTuple<
4553                'a,
4554            > as alloy_sol_types::SolType>::Token<'a>;
4555            const SIGNATURE: &'static str = "getOperationState(bytes32)";
4556            const SELECTOR: [u8; 4] = [121u8, 88u8, 0u8, 76u8];
4557            #[inline]
4558            fn new<'a>(
4559                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4560            ) -> Self {
4561                tuple.into()
4562            }
4563            #[inline]
4564            fn tokenize(&self) -> Self::Token<'_> {
4565                (
4566                    <alloy::sol_types::sol_data::FixedBytes<
4567                        32,
4568                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4569                )
4570            }
4571            #[inline]
4572            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4573                (
4574                    <TimelockController::OperationState as alloy_sol_types::SolType>::tokenize(
4575                        ret,
4576                    ),
4577                )
4578            }
4579            #[inline]
4580            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4581                <Self::ReturnTuple<
4582                    '_,
4583                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4584                    .map(|r| {
4585                        let r: getOperationStateReturn = r.into();
4586                        r._0
4587                    })
4588            }
4589            #[inline]
4590            fn abi_decode_returns_validate(
4591                data: &[u8],
4592            ) -> alloy_sol_types::Result<Self::Return> {
4593                <Self::ReturnTuple<
4594                    '_,
4595                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4596                    .map(|r| {
4597                        let r: getOperationStateReturn = r.into();
4598                        r._0
4599                    })
4600            }
4601        }
4602    };
4603    #[derive(serde::Serialize, serde::Deserialize)]
4604    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4605    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
4606```solidity
4607function getRoleAdmin(bytes32 role) external view returns (bytes32);
4608```*/
4609    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4610    #[derive(Clone)]
4611    pub struct getRoleAdminCall {
4612        #[allow(missing_docs)]
4613        pub role: alloy::sol_types::private::FixedBytes<32>,
4614    }
4615    #[derive(serde::Serialize, serde::Deserialize)]
4616    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4617    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
4618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4619    #[derive(Clone)]
4620    pub struct getRoleAdminReturn {
4621        #[allow(missing_docs)]
4622        pub _0: alloy::sol_types::private::FixedBytes<32>,
4623    }
4624    #[allow(
4625        non_camel_case_types,
4626        non_snake_case,
4627        clippy::pub_underscore_fields,
4628        clippy::style
4629    )]
4630    const _: () = {
4631        use alloy::sol_types as alloy_sol_types;
4632        {
4633            #[doc(hidden)]
4634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4635            #[doc(hidden)]
4636            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4637            #[cfg(test)]
4638            #[allow(dead_code, unreachable_patterns)]
4639            fn _type_assertion(
4640                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4641            ) {
4642                match _t {
4643                    alloy_sol_types::private::AssertTypeEq::<
4644                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4645                    >(_) => {}
4646                }
4647            }
4648            #[automatically_derived]
4649            #[doc(hidden)]
4650            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
4651                fn from(value: getRoleAdminCall) -> Self {
4652                    (value.role,)
4653                }
4654            }
4655            #[automatically_derived]
4656            #[doc(hidden)]
4657            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
4658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4659                    Self { role: tuple.0 }
4660                }
4661            }
4662        }
4663        {
4664            #[doc(hidden)]
4665            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4666            #[doc(hidden)]
4667            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4668            #[cfg(test)]
4669            #[allow(dead_code, unreachable_patterns)]
4670            fn _type_assertion(
4671                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4672            ) {
4673                match _t {
4674                    alloy_sol_types::private::AssertTypeEq::<
4675                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4676                    >(_) => {}
4677                }
4678            }
4679            #[automatically_derived]
4680            #[doc(hidden)]
4681            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
4682                fn from(value: getRoleAdminReturn) -> Self {
4683                    (value._0,)
4684                }
4685            }
4686            #[automatically_derived]
4687            #[doc(hidden)]
4688            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
4689                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4690                    Self { _0: tuple.0 }
4691                }
4692            }
4693        }
4694        #[automatically_derived]
4695        impl alloy_sol_types::SolCall for getRoleAdminCall {
4696            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4697            type Token<'a> = <Self::Parameters<
4698                'a,
4699            > as alloy_sol_types::SolType>::Token<'a>;
4700            type Return = alloy::sol_types::private::FixedBytes<32>;
4701            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4702            type ReturnToken<'a> = <Self::ReturnTuple<
4703                'a,
4704            > as alloy_sol_types::SolType>::Token<'a>;
4705            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
4706            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
4707            #[inline]
4708            fn new<'a>(
4709                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4710            ) -> Self {
4711                tuple.into()
4712            }
4713            #[inline]
4714            fn tokenize(&self) -> Self::Token<'_> {
4715                (
4716                    <alloy::sol_types::sol_data::FixedBytes<
4717                        32,
4718                    > as alloy_sol_types::SolType>::tokenize(&self.role),
4719                )
4720            }
4721            #[inline]
4722            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4723                (
4724                    <alloy::sol_types::sol_data::FixedBytes<
4725                        32,
4726                    > as alloy_sol_types::SolType>::tokenize(ret),
4727                )
4728            }
4729            #[inline]
4730            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4731                <Self::ReturnTuple<
4732                    '_,
4733                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4734                    .map(|r| {
4735                        let r: getRoleAdminReturn = r.into();
4736                        r._0
4737                    })
4738            }
4739            #[inline]
4740            fn abi_decode_returns_validate(
4741                data: &[u8],
4742            ) -> alloy_sol_types::Result<Self::Return> {
4743                <Self::ReturnTuple<
4744                    '_,
4745                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4746                    .map(|r| {
4747                        let r: getRoleAdminReturn = r.into();
4748                        r._0
4749                    })
4750            }
4751        }
4752    };
4753    #[derive(serde::Serialize, serde::Deserialize)]
4754    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4755    /**Function with signature `getTimestamp(bytes32)` and selector `0xd45c4435`.
4756```solidity
4757function getTimestamp(bytes32 id) external view returns (uint256);
4758```*/
4759    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4760    #[derive(Clone)]
4761    pub struct getTimestampCall {
4762        #[allow(missing_docs)]
4763        pub id: alloy::sol_types::private::FixedBytes<32>,
4764    }
4765    #[derive(serde::Serialize, serde::Deserialize)]
4766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4767    ///Container type for the return parameters of the [`getTimestamp(bytes32)`](getTimestampCall) function.
4768    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4769    #[derive(Clone)]
4770    pub struct getTimestampReturn {
4771        #[allow(missing_docs)]
4772        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4773    }
4774    #[allow(
4775        non_camel_case_types,
4776        non_snake_case,
4777        clippy::pub_underscore_fields,
4778        clippy::style
4779    )]
4780    const _: () = {
4781        use alloy::sol_types as alloy_sol_types;
4782        {
4783            #[doc(hidden)]
4784            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4785            #[doc(hidden)]
4786            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4787            #[cfg(test)]
4788            #[allow(dead_code, unreachable_patterns)]
4789            fn _type_assertion(
4790                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4791            ) {
4792                match _t {
4793                    alloy_sol_types::private::AssertTypeEq::<
4794                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4795                    >(_) => {}
4796                }
4797            }
4798            #[automatically_derived]
4799            #[doc(hidden)]
4800            impl ::core::convert::From<getTimestampCall> for UnderlyingRustTuple<'_> {
4801                fn from(value: getTimestampCall) -> Self {
4802                    (value.id,)
4803                }
4804            }
4805            #[automatically_derived]
4806            #[doc(hidden)]
4807            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampCall {
4808                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4809                    Self { id: tuple.0 }
4810                }
4811            }
4812        }
4813        {
4814            #[doc(hidden)]
4815            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4816            #[doc(hidden)]
4817            type UnderlyingRustTuple<'a> = (
4818                alloy::sol_types::private::primitives::aliases::U256,
4819            );
4820            #[cfg(test)]
4821            #[allow(dead_code, unreachable_patterns)]
4822            fn _type_assertion(
4823                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4824            ) {
4825                match _t {
4826                    alloy_sol_types::private::AssertTypeEq::<
4827                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4828                    >(_) => {}
4829                }
4830            }
4831            #[automatically_derived]
4832            #[doc(hidden)]
4833            impl ::core::convert::From<getTimestampReturn> for UnderlyingRustTuple<'_> {
4834                fn from(value: getTimestampReturn) -> Self {
4835                    (value._0,)
4836                }
4837            }
4838            #[automatically_derived]
4839            #[doc(hidden)]
4840            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampReturn {
4841                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4842                    Self { _0: tuple.0 }
4843                }
4844            }
4845        }
4846        #[automatically_derived]
4847        impl alloy_sol_types::SolCall for getTimestampCall {
4848            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4849            type Token<'a> = <Self::Parameters<
4850                'a,
4851            > as alloy_sol_types::SolType>::Token<'a>;
4852            type Return = alloy::sol_types::private::primitives::aliases::U256;
4853            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4854            type ReturnToken<'a> = <Self::ReturnTuple<
4855                'a,
4856            > as alloy_sol_types::SolType>::Token<'a>;
4857            const SIGNATURE: &'static str = "getTimestamp(bytes32)";
4858            const SELECTOR: [u8; 4] = [212u8, 92u8, 68u8, 53u8];
4859            #[inline]
4860            fn new<'a>(
4861                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4862            ) -> Self {
4863                tuple.into()
4864            }
4865            #[inline]
4866            fn tokenize(&self) -> Self::Token<'_> {
4867                (
4868                    <alloy::sol_types::sol_data::FixedBytes<
4869                        32,
4870                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4871                )
4872            }
4873            #[inline]
4874            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4875                (
4876                    <alloy::sol_types::sol_data::Uint<
4877                        256,
4878                    > as alloy_sol_types::SolType>::tokenize(ret),
4879                )
4880            }
4881            #[inline]
4882            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4883                <Self::ReturnTuple<
4884                    '_,
4885                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4886                    .map(|r| {
4887                        let r: getTimestampReturn = r.into();
4888                        r._0
4889                    })
4890            }
4891            #[inline]
4892            fn abi_decode_returns_validate(
4893                data: &[u8],
4894            ) -> alloy_sol_types::Result<Self::Return> {
4895                <Self::ReturnTuple<
4896                    '_,
4897                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4898                    .map(|r| {
4899                        let r: getTimestampReturn = r.into();
4900                        r._0
4901                    })
4902            }
4903        }
4904    };
4905    #[derive(serde::Serialize, serde::Deserialize)]
4906    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4907    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
4908```solidity
4909function grantRole(bytes32 role, address account) external;
4910```*/
4911    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4912    #[derive(Clone)]
4913    pub struct grantRoleCall {
4914        #[allow(missing_docs)]
4915        pub role: alloy::sol_types::private::FixedBytes<32>,
4916        #[allow(missing_docs)]
4917        pub account: alloy::sol_types::private::Address,
4918    }
4919    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
4920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4921    #[derive(Clone)]
4922    pub struct grantRoleReturn {}
4923    #[allow(
4924        non_camel_case_types,
4925        non_snake_case,
4926        clippy::pub_underscore_fields,
4927        clippy::style
4928    )]
4929    const _: () = {
4930        use alloy::sol_types as alloy_sol_types;
4931        {
4932            #[doc(hidden)]
4933            type UnderlyingSolTuple<'a> = (
4934                alloy::sol_types::sol_data::FixedBytes<32>,
4935                alloy::sol_types::sol_data::Address,
4936            );
4937            #[doc(hidden)]
4938            type UnderlyingRustTuple<'a> = (
4939                alloy::sol_types::private::FixedBytes<32>,
4940                alloy::sol_types::private::Address,
4941            );
4942            #[cfg(test)]
4943            #[allow(dead_code, unreachable_patterns)]
4944            fn _type_assertion(
4945                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4946            ) {
4947                match _t {
4948                    alloy_sol_types::private::AssertTypeEq::<
4949                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4950                    >(_) => {}
4951                }
4952            }
4953            #[automatically_derived]
4954            #[doc(hidden)]
4955            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
4956                fn from(value: grantRoleCall) -> Self {
4957                    (value.role, value.account)
4958                }
4959            }
4960            #[automatically_derived]
4961            #[doc(hidden)]
4962            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
4963                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4964                    Self {
4965                        role: tuple.0,
4966                        account: tuple.1,
4967                    }
4968                }
4969            }
4970        }
4971        {
4972            #[doc(hidden)]
4973            type UnderlyingSolTuple<'a> = ();
4974            #[doc(hidden)]
4975            type UnderlyingRustTuple<'a> = ();
4976            #[cfg(test)]
4977            #[allow(dead_code, unreachable_patterns)]
4978            fn _type_assertion(
4979                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4980            ) {
4981                match _t {
4982                    alloy_sol_types::private::AssertTypeEq::<
4983                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4984                    >(_) => {}
4985                }
4986            }
4987            #[automatically_derived]
4988            #[doc(hidden)]
4989            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
4990                fn from(value: grantRoleReturn) -> Self {
4991                    ()
4992                }
4993            }
4994            #[automatically_derived]
4995            #[doc(hidden)]
4996            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
4997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4998                    Self {}
4999                }
5000            }
5001        }
5002        impl grantRoleReturn {
5003            fn _tokenize(
5004                &self,
5005            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5006                ()
5007            }
5008        }
5009        #[automatically_derived]
5010        impl alloy_sol_types::SolCall for grantRoleCall {
5011            type Parameters<'a> = (
5012                alloy::sol_types::sol_data::FixedBytes<32>,
5013                alloy::sol_types::sol_data::Address,
5014            );
5015            type Token<'a> = <Self::Parameters<
5016                'a,
5017            > as alloy_sol_types::SolType>::Token<'a>;
5018            type Return = grantRoleReturn;
5019            type ReturnTuple<'a> = ();
5020            type ReturnToken<'a> = <Self::ReturnTuple<
5021                'a,
5022            > as alloy_sol_types::SolType>::Token<'a>;
5023            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
5024            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
5025            #[inline]
5026            fn new<'a>(
5027                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5028            ) -> Self {
5029                tuple.into()
5030            }
5031            #[inline]
5032            fn tokenize(&self) -> Self::Token<'_> {
5033                (
5034                    <alloy::sol_types::sol_data::FixedBytes<
5035                        32,
5036                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5037                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5038                        &self.account,
5039                    ),
5040                )
5041            }
5042            #[inline]
5043            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5044                grantRoleReturn::_tokenize(ret)
5045            }
5046            #[inline]
5047            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5048                <Self::ReturnTuple<
5049                    '_,
5050                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5051                    .map(Into::into)
5052            }
5053            #[inline]
5054            fn abi_decode_returns_validate(
5055                data: &[u8],
5056            ) -> alloy_sol_types::Result<Self::Return> {
5057                <Self::ReturnTuple<
5058                    '_,
5059                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5060                    .map(Into::into)
5061            }
5062        }
5063    };
5064    #[derive(serde::Serialize, serde::Deserialize)]
5065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5066    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
5067```solidity
5068function hasRole(bytes32 role, address account) external view returns (bool);
5069```*/
5070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5071    #[derive(Clone)]
5072    pub struct hasRoleCall {
5073        #[allow(missing_docs)]
5074        pub role: alloy::sol_types::private::FixedBytes<32>,
5075        #[allow(missing_docs)]
5076        pub account: alloy::sol_types::private::Address,
5077    }
5078    #[derive(serde::Serialize, serde::Deserialize)]
5079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5080    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
5081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5082    #[derive(Clone)]
5083    pub struct hasRoleReturn {
5084        #[allow(missing_docs)]
5085        pub _0: bool,
5086    }
5087    #[allow(
5088        non_camel_case_types,
5089        non_snake_case,
5090        clippy::pub_underscore_fields,
5091        clippy::style
5092    )]
5093    const _: () = {
5094        use alloy::sol_types as alloy_sol_types;
5095        {
5096            #[doc(hidden)]
5097            type UnderlyingSolTuple<'a> = (
5098                alloy::sol_types::sol_data::FixedBytes<32>,
5099                alloy::sol_types::sol_data::Address,
5100            );
5101            #[doc(hidden)]
5102            type UnderlyingRustTuple<'a> = (
5103                alloy::sol_types::private::FixedBytes<32>,
5104                alloy::sol_types::private::Address,
5105            );
5106            #[cfg(test)]
5107            #[allow(dead_code, unreachable_patterns)]
5108            fn _type_assertion(
5109                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5110            ) {
5111                match _t {
5112                    alloy_sol_types::private::AssertTypeEq::<
5113                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5114                    >(_) => {}
5115                }
5116            }
5117            #[automatically_derived]
5118            #[doc(hidden)]
5119            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
5120                fn from(value: hasRoleCall) -> Self {
5121                    (value.role, value.account)
5122                }
5123            }
5124            #[automatically_derived]
5125            #[doc(hidden)]
5126            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
5127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5128                    Self {
5129                        role: tuple.0,
5130                        account: tuple.1,
5131                    }
5132                }
5133            }
5134        }
5135        {
5136            #[doc(hidden)]
5137            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5138            #[doc(hidden)]
5139            type UnderlyingRustTuple<'a> = (bool,);
5140            #[cfg(test)]
5141            #[allow(dead_code, unreachable_patterns)]
5142            fn _type_assertion(
5143                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5144            ) {
5145                match _t {
5146                    alloy_sol_types::private::AssertTypeEq::<
5147                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5148                    >(_) => {}
5149                }
5150            }
5151            #[automatically_derived]
5152            #[doc(hidden)]
5153            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
5154                fn from(value: hasRoleReturn) -> Self {
5155                    (value._0,)
5156                }
5157            }
5158            #[automatically_derived]
5159            #[doc(hidden)]
5160            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
5161                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5162                    Self { _0: tuple.0 }
5163                }
5164            }
5165        }
5166        #[automatically_derived]
5167        impl alloy_sol_types::SolCall for hasRoleCall {
5168            type Parameters<'a> = (
5169                alloy::sol_types::sol_data::FixedBytes<32>,
5170                alloy::sol_types::sol_data::Address,
5171            );
5172            type Token<'a> = <Self::Parameters<
5173                'a,
5174            > as alloy_sol_types::SolType>::Token<'a>;
5175            type Return = bool;
5176            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5177            type ReturnToken<'a> = <Self::ReturnTuple<
5178                'a,
5179            > as alloy_sol_types::SolType>::Token<'a>;
5180            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
5181            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
5182            #[inline]
5183            fn new<'a>(
5184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5185            ) -> Self {
5186                tuple.into()
5187            }
5188            #[inline]
5189            fn tokenize(&self) -> Self::Token<'_> {
5190                (
5191                    <alloy::sol_types::sol_data::FixedBytes<
5192                        32,
5193                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5194                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5195                        &self.account,
5196                    ),
5197                )
5198            }
5199            #[inline]
5200            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5201                (
5202                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5203                        ret,
5204                    ),
5205                )
5206            }
5207            #[inline]
5208            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5209                <Self::ReturnTuple<
5210                    '_,
5211                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5212                    .map(|r| {
5213                        let r: hasRoleReturn = r.into();
5214                        r._0
5215                    })
5216            }
5217            #[inline]
5218            fn abi_decode_returns_validate(
5219                data: &[u8],
5220            ) -> alloy_sol_types::Result<Self::Return> {
5221                <Self::ReturnTuple<
5222                    '_,
5223                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5224                    .map(|r| {
5225                        let r: hasRoleReturn = r.into();
5226                        r._0
5227                    })
5228            }
5229        }
5230    };
5231    #[derive(serde::Serialize, serde::Deserialize)]
5232    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5233    /**Function with signature `hashOperation(address,uint256,bytes,bytes32,bytes32)` and selector `0x8065657f`.
5234```solidity
5235function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
5236```*/
5237    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5238    #[derive(Clone)]
5239    pub struct hashOperationCall {
5240        #[allow(missing_docs)]
5241        pub target: alloy::sol_types::private::Address,
5242        #[allow(missing_docs)]
5243        pub value: alloy::sol_types::private::primitives::aliases::U256,
5244        #[allow(missing_docs)]
5245        pub data: alloy::sol_types::private::Bytes,
5246        #[allow(missing_docs)]
5247        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5248        #[allow(missing_docs)]
5249        pub salt: alloy::sol_types::private::FixedBytes<32>,
5250    }
5251    #[derive(serde::Serialize, serde::Deserialize)]
5252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5253    ///Container type for the return parameters of the [`hashOperation(address,uint256,bytes,bytes32,bytes32)`](hashOperationCall) function.
5254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5255    #[derive(Clone)]
5256    pub struct hashOperationReturn {
5257        #[allow(missing_docs)]
5258        pub _0: alloy::sol_types::private::FixedBytes<32>,
5259    }
5260    #[allow(
5261        non_camel_case_types,
5262        non_snake_case,
5263        clippy::pub_underscore_fields,
5264        clippy::style
5265    )]
5266    const _: () = {
5267        use alloy::sol_types as alloy_sol_types;
5268        {
5269            #[doc(hidden)]
5270            type UnderlyingSolTuple<'a> = (
5271                alloy::sol_types::sol_data::Address,
5272                alloy::sol_types::sol_data::Uint<256>,
5273                alloy::sol_types::sol_data::Bytes,
5274                alloy::sol_types::sol_data::FixedBytes<32>,
5275                alloy::sol_types::sol_data::FixedBytes<32>,
5276            );
5277            #[doc(hidden)]
5278            type UnderlyingRustTuple<'a> = (
5279                alloy::sol_types::private::Address,
5280                alloy::sol_types::private::primitives::aliases::U256,
5281                alloy::sol_types::private::Bytes,
5282                alloy::sol_types::private::FixedBytes<32>,
5283                alloy::sol_types::private::FixedBytes<32>,
5284            );
5285            #[cfg(test)]
5286            #[allow(dead_code, unreachable_patterns)]
5287            fn _type_assertion(
5288                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5289            ) {
5290                match _t {
5291                    alloy_sol_types::private::AssertTypeEq::<
5292                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5293                    >(_) => {}
5294                }
5295            }
5296            #[automatically_derived]
5297            #[doc(hidden)]
5298            impl ::core::convert::From<hashOperationCall> for UnderlyingRustTuple<'_> {
5299                fn from(value: hashOperationCall) -> Self {
5300                    (
5301                        value.target,
5302                        value.value,
5303                        value.data,
5304                        value.predecessor,
5305                        value.salt,
5306                    )
5307                }
5308            }
5309            #[automatically_derived]
5310            #[doc(hidden)]
5311            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationCall {
5312                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5313                    Self {
5314                        target: tuple.0,
5315                        value: tuple.1,
5316                        data: tuple.2,
5317                        predecessor: tuple.3,
5318                        salt: tuple.4,
5319                    }
5320                }
5321            }
5322        }
5323        {
5324            #[doc(hidden)]
5325            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5326            #[doc(hidden)]
5327            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5328            #[cfg(test)]
5329            #[allow(dead_code, unreachable_patterns)]
5330            fn _type_assertion(
5331                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5332            ) {
5333                match _t {
5334                    alloy_sol_types::private::AssertTypeEq::<
5335                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5336                    >(_) => {}
5337                }
5338            }
5339            #[automatically_derived]
5340            #[doc(hidden)]
5341            impl ::core::convert::From<hashOperationReturn> for UnderlyingRustTuple<'_> {
5342                fn from(value: hashOperationReturn) -> Self {
5343                    (value._0,)
5344                }
5345            }
5346            #[automatically_derived]
5347            #[doc(hidden)]
5348            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationReturn {
5349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5350                    Self { _0: tuple.0 }
5351                }
5352            }
5353        }
5354        #[automatically_derived]
5355        impl alloy_sol_types::SolCall for hashOperationCall {
5356            type Parameters<'a> = (
5357                alloy::sol_types::sol_data::Address,
5358                alloy::sol_types::sol_data::Uint<256>,
5359                alloy::sol_types::sol_data::Bytes,
5360                alloy::sol_types::sol_data::FixedBytes<32>,
5361                alloy::sol_types::sol_data::FixedBytes<32>,
5362            );
5363            type Token<'a> = <Self::Parameters<
5364                'a,
5365            > as alloy_sol_types::SolType>::Token<'a>;
5366            type Return = alloy::sol_types::private::FixedBytes<32>;
5367            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5368            type ReturnToken<'a> = <Self::ReturnTuple<
5369                'a,
5370            > as alloy_sol_types::SolType>::Token<'a>;
5371            const SIGNATURE: &'static str = "hashOperation(address,uint256,bytes,bytes32,bytes32)";
5372            const SELECTOR: [u8; 4] = [128u8, 101u8, 101u8, 127u8];
5373            #[inline]
5374            fn new<'a>(
5375                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5376            ) -> Self {
5377                tuple.into()
5378            }
5379            #[inline]
5380            fn tokenize(&self) -> Self::Token<'_> {
5381                (
5382                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5383                        &self.target,
5384                    ),
5385                    <alloy::sol_types::sol_data::Uint<
5386                        256,
5387                    > as alloy_sol_types::SolType>::tokenize(&self.value),
5388                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5389                        &self.data,
5390                    ),
5391                    <alloy::sol_types::sol_data::FixedBytes<
5392                        32,
5393                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5394                    <alloy::sol_types::sol_data::FixedBytes<
5395                        32,
5396                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5397                )
5398            }
5399            #[inline]
5400            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5401                (
5402                    <alloy::sol_types::sol_data::FixedBytes<
5403                        32,
5404                    > as alloy_sol_types::SolType>::tokenize(ret),
5405                )
5406            }
5407            #[inline]
5408            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5409                <Self::ReturnTuple<
5410                    '_,
5411                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5412                    .map(|r| {
5413                        let r: hashOperationReturn = r.into();
5414                        r._0
5415                    })
5416            }
5417            #[inline]
5418            fn abi_decode_returns_validate(
5419                data: &[u8],
5420            ) -> alloy_sol_types::Result<Self::Return> {
5421                <Self::ReturnTuple<
5422                    '_,
5423                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5424                    .map(|r| {
5425                        let r: hashOperationReturn = r.into();
5426                        r._0
5427                    })
5428            }
5429        }
5430    };
5431    #[derive(serde::Serialize, serde::Deserialize)]
5432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5433    /**Function with signature `hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xb1c5f427`.
5434```solidity
5435function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
5436```*/
5437    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5438    #[derive(Clone)]
5439    pub struct hashOperationBatchCall {
5440        #[allow(missing_docs)]
5441        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5442        #[allow(missing_docs)]
5443        pub values: alloy::sol_types::private::Vec<
5444            alloy::sol_types::private::primitives::aliases::U256,
5445        >,
5446        #[allow(missing_docs)]
5447        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5448        #[allow(missing_docs)]
5449        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5450        #[allow(missing_docs)]
5451        pub salt: alloy::sol_types::private::FixedBytes<32>,
5452    }
5453    #[derive(serde::Serialize, serde::Deserialize)]
5454    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5455    ///Container type for the return parameters of the [`hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)`](hashOperationBatchCall) function.
5456    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5457    #[derive(Clone)]
5458    pub struct hashOperationBatchReturn {
5459        #[allow(missing_docs)]
5460        pub _0: alloy::sol_types::private::FixedBytes<32>,
5461    }
5462    #[allow(
5463        non_camel_case_types,
5464        non_snake_case,
5465        clippy::pub_underscore_fields,
5466        clippy::style
5467    )]
5468    const _: () = {
5469        use alloy::sol_types as alloy_sol_types;
5470        {
5471            #[doc(hidden)]
5472            type UnderlyingSolTuple<'a> = (
5473                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5474                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5475                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5476                alloy::sol_types::sol_data::FixedBytes<32>,
5477                alloy::sol_types::sol_data::FixedBytes<32>,
5478            );
5479            #[doc(hidden)]
5480            type UnderlyingRustTuple<'a> = (
5481                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5482                alloy::sol_types::private::Vec<
5483                    alloy::sol_types::private::primitives::aliases::U256,
5484                >,
5485                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5486                alloy::sol_types::private::FixedBytes<32>,
5487                alloy::sol_types::private::FixedBytes<32>,
5488            );
5489            #[cfg(test)]
5490            #[allow(dead_code, unreachable_patterns)]
5491            fn _type_assertion(
5492                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5493            ) {
5494                match _t {
5495                    alloy_sol_types::private::AssertTypeEq::<
5496                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5497                    >(_) => {}
5498                }
5499            }
5500            #[automatically_derived]
5501            #[doc(hidden)]
5502            impl ::core::convert::From<hashOperationBatchCall>
5503            for UnderlyingRustTuple<'_> {
5504                fn from(value: hashOperationBatchCall) -> Self {
5505                    (
5506                        value.targets,
5507                        value.values,
5508                        value.payloads,
5509                        value.predecessor,
5510                        value.salt,
5511                    )
5512                }
5513            }
5514            #[automatically_derived]
5515            #[doc(hidden)]
5516            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5517            for hashOperationBatchCall {
5518                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5519                    Self {
5520                        targets: tuple.0,
5521                        values: tuple.1,
5522                        payloads: tuple.2,
5523                        predecessor: tuple.3,
5524                        salt: tuple.4,
5525                    }
5526                }
5527            }
5528        }
5529        {
5530            #[doc(hidden)]
5531            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5532            #[doc(hidden)]
5533            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5534            #[cfg(test)]
5535            #[allow(dead_code, unreachable_patterns)]
5536            fn _type_assertion(
5537                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5538            ) {
5539                match _t {
5540                    alloy_sol_types::private::AssertTypeEq::<
5541                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5542                    >(_) => {}
5543                }
5544            }
5545            #[automatically_derived]
5546            #[doc(hidden)]
5547            impl ::core::convert::From<hashOperationBatchReturn>
5548            for UnderlyingRustTuple<'_> {
5549                fn from(value: hashOperationBatchReturn) -> Self {
5550                    (value._0,)
5551                }
5552            }
5553            #[automatically_derived]
5554            #[doc(hidden)]
5555            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5556            for hashOperationBatchReturn {
5557                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5558                    Self { _0: tuple.0 }
5559                }
5560            }
5561        }
5562        #[automatically_derived]
5563        impl alloy_sol_types::SolCall for hashOperationBatchCall {
5564            type Parameters<'a> = (
5565                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5566                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5567                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5568                alloy::sol_types::sol_data::FixedBytes<32>,
5569                alloy::sol_types::sol_data::FixedBytes<32>,
5570            );
5571            type Token<'a> = <Self::Parameters<
5572                'a,
5573            > as alloy_sol_types::SolType>::Token<'a>;
5574            type Return = alloy::sol_types::private::FixedBytes<32>;
5575            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5576            type ReturnToken<'a> = <Self::ReturnTuple<
5577                'a,
5578            > as alloy_sol_types::SolType>::Token<'a>;
5579            const SIGNATURE: &'static str = "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)";
5580            const SELECTOR: [u8; 4] = [177u8, 197u8, 244u8, 39u8];
5581            #[inline]
5582            fn new<'a>(
5583                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5584            ) -> Self {
5585                tuple.into()
5586            }
5587            #[inline]
5588            fn tokenize(&self) -> Self::Token<'_> {
5589                (
5590                    <alloy::sol_types::sol_data::Array<
5591                        alloy::sol_types::sol_data::Address,
5592                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
5593                    <alloy::sol_types::sol_data::Array<
5594                        alloy::sol_types::sol_data::Uint<256>,
5595                    > as alloy_sol_types::SolType>::tokenize(&self.values),
5596                    <alloy::sol_types::sol_data::Array<
5597                        alloy::sol_types::sol_data::Bytes,
5598                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
5599                    <alloy::sol_types::sol_data::FixedBytes<
5600                        32,
5601                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5602                    <alloy::sol_types::sol_data::FixedBytes<
5603                        32,
5604                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5605                )
5606            }
5607            #[inline]
5608            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5609                (
5610                    <alloy::sol_types::sol_data::FixedBytes<
5611                        32,
5612                    > as alloy_sol_types::SolType>::tokenize(ret),
5613                )
5614            }
5615            #[inline]
5616            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5617                <Self::ReturnTuple<
5618                    '_,
5619                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5620                    .map(|r| {
5621                        let r: hashOperationBatchReturn = r.into();
5622                        r._0
5623                    })
5624            }
5625            #[inline]
5626            fn abi_decode_returns_validate(
5627                data: &[u8],
5628            ) -> alloy_sol_types::Result<Self::Return> {
5629                <Self::ReturnTuple<
5630                    '_,
5631                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5632                    .map(|r| {
5633                        let r: hashOperationBatchReturn = r.into();
5634                        r._0
5635                    })
5636            }
5637        }
5638    };
5639    #[derive(serde::Serialize, serde::Deserialize)]
5640    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5641    /**Function with signature `isOperation(bytes32)` and selector `0x31d50750`.
5642```solidity
5643function isOperation(bytes32 id) external view returns (bool);
5644```*/
5645    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5646    #[derive(Clone)]
5647    pub struct isOperationCall {
5648        #[allow(missing_docs)]
5649        pub id: alloy::sol_types::private::FixedBytes<32>,
5650    }
5651    #[derive(serde::Serialize, serde::Deserialize)]
5652    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5653    ///Container type for the return parameters of the [`isOperation(bytes32)`](isOperationCall) function.
5654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5655    #[derive(Clone)]
5656    pub struct isOperationReturn {
5657        #[allow(missing_docs)]
5658        pub _0: bool,
5659    }
5660    #[allow(
5661        non_camel_case_types,
5662        non_snake_case,
5663        clippy::pub_underscore_fields,
5664        clippy::style
5665    )]
5666    const _: () = {
5667        use alloy::sol_types as alloy_sol_types;
5668        {
5669            #[doc(hidden)]
5670            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5671            #[doc(hidden)]
5672            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5673            #[cfg(test)]
5674            #[allow(dead_code, unreachable_patterns)]
5675            fn _type_assertion(
5676                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5677            ) {
5678                match _t {
5679                    alloy_sol_types::private::AssertTypeEq::<
5680                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5681                    >(_) => {}
5682                }
5683            }
5684            #[automatically_derived]
5685            #[doc(hidden)]
5686            impl ::core::convert::From<isOperationCall> for UnderlyingRustTuple<'_> {
5687                fn from(value: isOperationCall) -> Self {
5688                    (value.id,)
5689                }
5690            }
5691            #[automatically_derived]
5692            #[doc(hidden)]
5693            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationCall {
5694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5695                    Self { id: tuple.0 }
5696                }
5697            }
5698        }
5699        {
5700            #[doc(hidden)]
5701            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5702            #[doc(hidden)]
5703            type UnderlyingRustTuple<'a> = (bool,);
5704            #[cfg(test)]
5705            #[allow(dead_code, unreachable_patterns)]
5706            fn _type_assertion(
5707                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5708            ) {
5709                match _t {
5710                    alloy_sol_types::private::AssertTypeEq::<
5711                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5712                    >(_) => {}
5713                }
5714            }
5715            #[automatically_derived]
5716            #[doc(hidden)]
5717            impl ::core::convert::From<isOperationReturn> for UnderlyingRustTuple<'_> {
5718                fn from(value: isOperationReturn) -> Self {
5719                    (value._0,)
5720                }
5721            }
5722            #[automatically_derived]
5723            #[doc(hidden)]
5724            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationReturn {
5725                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5726                    Self { _0: tuple.0 }
5727                }
5728            }
5729        }
5730        #[automatically_derived]
5731        impl alloy_sol_types::SolCall for isOperationCall {
5732            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5733            type Token<'a> = <Self::Parameters<
5734                'a,
5735            > as alloy_sol_types::SolType>::Token<'a>;
5736            type Return = bool;
5737            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5738            type ReturnToken<'a> = <Self::ReturnTuple<
5739                'a,
5740            > as alloy_sol_types::SolType>::Token<'a>;
5741            const SIGNATURE: &'static str = "isOperation(bytes32)";
5742            const SELECTOR: [u8; 4] = [49u8, 213u8, 7u8, 80u8];
5743            #[inline]
5744            fn new<'a>(
5745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5746            ) -> Self {
5747                tuple.into()
5748            }
5749            #[inline]
5750            fn tokenize(&self) -> Self::Token<'_> {
5751                (
5752                    <alloy::sol_types::sol_data::FixedBytes<
5753                        32,
5754                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5755                )
5756            }
5757            #[inline]
5758            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5759                (
5760                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5761                        ret,
5762                    ),
5763                )
5764            }
5765            #[inline]
5766            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5767                <Self::ReturnTuple<
5768                    '_,
5769                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5770                    .map(|r| {
5771                        let r: isOperationReturn = r.into();
5772                        r._0
5773                    })
5774            }
5775            #[inline]
5776            fn abi_decode_returns_validate(
5777                data: &[u8],
5778            ) -> alloy_sol_types::Result<Self::Return> {
5779                <Self::ReturnTuple<
5780                    '_,
5781                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5782                    .map(|r| {
5783                        let r: isOperationReturn = r.into();
5784                        r._0
5785                    })
5786            }
5787        }
5788    };
5789    #[derive(serde::Serialize, serde::Deserialize)]
5790    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5791    /**Function with signature `isOperationDone(bytes32)` and selector `0x2ab0f529`.
5792```solidity
5793function isOperationDone(bytes32 id) external view returns (bool);
5794```*/
5795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5796    #[derive(Clone)]
5797    pub struct isOperationDoneCall {
5798        #[allow(missing_docs)]
5799        pub id: alloy::sol_types::private::FixedBytes<32>,
5800    }
5801    #[derive(serde::Serialize, serde::Deserialize)]
5802    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5803    ///Container type for the return parameters of the [`isOperationDone(bytes32)`](isOperationDoneCall) function.
5804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5805    #[derive(Clone)]
5806    pub struct isOperationDoneReturn {
5807        #[allow(missing_docs)]
5808        pub _0: bool,
5809    }
5810    #[allow(
5811        non_camel_case_types,
5812        non_snake_case,
5813        clippy::pub_underscore_fields,
5814        clippy::style
5815    )]
5816    const _: () = {
5817        use alloy::sol_types as alloy_sol_types;
5818        {
5819            #[doc(hidden)]
5820            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5821            #[doc(hidden)]
5822            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5823            #[cfg(test)]
5824            #[allow(dead_code, unreachable_patterns)]
5825            fn _type_assertion(
5826                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5827            ) {
5828                match _t {
5829                    alloy_sol_types::private::AssertTypeEq::<
5830                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5831                    >(_) => {}
5832                }
5833            }
5834            #[automatically_derived]
5835            #[doc(hidden)]
5836            impl ::core::convert::From<isOperationDoneCall> for UnderlyingRustTuple<'_> {
5837                fn from(value: isOperationDoneCall) -> Self {
5838                    (value.id,)
5839                }
5840            }
5841            #[automatically_derived]
5842            #[doc(hidden)]
5843            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationDoneCall {
5844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5845                    Self { id: tuple.0 }
5846                }
5847            }
5848        }
5849        {
5850            #[doc(hidden)]
5851            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5852            #[doc(hidden)]
5853            type UnderlyingRustTuple<'a> = (bool,);
5854            #[cfg(test)]
5855            #[allow(dead_code, unreachable_patterns)]
5856            fn _type_assertion(
5857                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5858            ) {
5859                match _t {
5860                    alloy_sol_types::private::AssertTypeEq::<
5861                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5862                    >(_) => {}
5863                }
5864            }
5865            #[automatically_derived]
5866            #[doc(hidden)]
5867            impl ::core::convert::From<isOperationDoneReturn>
5868            for UnderlyingRustTuple<'_> {
5869                fn from(value: isOperationDoneReturn) -> Self {
5870                    (value._0,)
5871                }
5872            }
5873            #[automatically_derived]
5874            #[doc(hidden)]
5875            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5876            for isOperationDoneReturn {
5877                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5878                    Self { _0: tuple.0 }
5879                }
5880            }
5881        }
5882        #[automatically_derived]
5883        impl alloy_sol_types::SolCall for isOperationDoneCall {
5884            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5885            type Token<'a> = <Self::Parameters<
5886                'a,
5887            > as alloy_sol_types::SolType>::Token<'a>;
5888            type Return = bool;
5889            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5890            type ReturnToken<'a> = <Self::ReturnTuple<
5891                'a,
5892            > as alloy_sol_types::SolType>::Token<'a>;
5893            const SIGNATURE: &'static str = "isOperationDone(bytes32)";
5894            const SELECTOR: [u8; 4] = [42u8, 176u8, 245u8, 41u8];
5895            #[inline]
5896            fn new<'a>(
5897                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5898            ) -> Self {
5899                tuple.into()
5900            }
5901            #[inline]
5902            fn tokenize(&self) -> Self::Token<'_> {
5903                (
5904                    <alloy::sol_types::sol_data::FixedBytes<
5905                        32,
5906                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5907                )
5908            }
5909            #[inline]
5910            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5911                (
5912                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5913                        ret,
5914                    ),
5915                )
5916            }
5917            #[inline]
5918            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5919                <Self::ReturnTuple<
5920                    '_,
5921                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5922                    .map(|r| {
5923                        let r: isOperationDoneReturn = r.into();
5924                        r._0
5925                    })
5926            }
5927            #[inline]
5928            fn abi_decode_returns_validate(
5929                data: &[u8],
5930            ) -> alloy_sol_types::Result<Self::Return> {
5931                <Self::ReturnTuple<
5932                    '_,
5933                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5934                    .map(|r| {
5935                        let r: isOperationDoneReturn = r.into();
5936                        r._0
5937                    })
5938            }
5939        }
5940    };
5941    #[derive(serde::Serialize, serde::Deserialize)]
5942    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5943    /**Function with signature `isOperationPending(bytes32)` and selector `0x584b153e`.
5944```solidity
5945function isOperationPending(bytes32 id) external view returns (bool);
5946```*/
5947    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5948    #[derive(Clone)]
5949    pub struct isOperationPendingCall {
5950        #[allow(missing_docs)]
5951        pub id: alloy::sol_types::private::FixedBytes<32>,
5952    }
5953    #[derive(serde::Serialize, serde::Deserialize)]
5954    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5955    ///Container type for the return parameters of the [`isOperationPending(bytes32)`](isOperationPendingCall) function.
5956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5957    #[derive(Clone)]
5958    pub struct isOperationPendingReturn {
5959        #[allow(missing_docs)]
5960        pub _0: bool,
5961    }
5962    #[allow(
5963        non_camel_case_types,
5964        non_snake_case,
5965        clippy::pub_underscore_fields,
5966        clippy::style
5967    )]
5968    const _: () = {
5969        use alloy::sol_types as alloy_sol_types;
5970        {
5971            #[doc(hidden)]
5972            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5973            #[doc(hidden)]
5974            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5975            #[cfg(test)]
5976            #[allow(dead_code, unreachable_patterns)]
5977            fn _type_assertion(
5978                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5979            ) {
5980                match _t {
5981                    alloy_sol_types::private::AssertTypeEq::<
5982                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5983                    >(_) => {}
5984                }
5985            }
5986            #[automatically_derived]
5987            #[doc(hidden)]
5988            impl ::core::convert::From<isOperationPendingCall>
5989            for UnderlyingRustTuple<'_> {
5990                fn from(value: isOperationPendingCall) -> Self {
5991                    (value.id,)
5992                }
5993            }
5994            #[automatically_derived]
5995            #[doc(hidden)]
5996            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5997            for isOperationPendingCall {
5998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5999                    Self { id: tuple.0 }
6000                }
6001            }
6002        }
6003        {
6004            #[doc(hidden)]
6005            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6006            #[doc(hidden)]
6007            type UnderlyingRustTuple<'a> = (bool,);
6008            #[cfg(test)]
6009            #[allow(dead_code, unreachable_patterns)]
6010            fn _type_assertion(
6011                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6012            ) {
6013                match _t {
6014                    alloy_sol_types::private::AssertTypeEq::<
6015                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6016                    >(_) => {}
6017                }
6018            }
6019            #[automatically_derived]
6020            #[doc(hidden)]
6021            impl ::core::convert::From<isOperationPendingReturn>
6022            for UnderlyingRustTuple<'_> {
6023                fn from(value: isOperationPendingReturn) -> Self {
6024                    (value._0,)
6025                }
6026            }
6027            #[automatically_derived]
6028            #[doc(hidden)]
6029            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6030            for isOperationPendingReturn {
6031                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6032                    Self { _0: tuple.0 }
6033                }
6034            }
6035        }
6036        #[automatically_derived]
6037        impl alloy_sol_types::SolCall for isOperationPendingCall {
6038            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6039            type Token<'a> = <Self::Parameters<
6040                'a,
6041            > as alloy_sol_types::SolType>::Token<'a>;
6042            type Return = bool;
6043            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6044            type ReturnToken<'a> = <Self::ReturnTuple<
6045                'a,
6046            > as alloy_sol_types::SolType>::Token<'a>;
6047            const SIGNATURE: &'static str = "isOperationPending(bytes32)";
6048            const SELECTOR: [u8; 4] = [88u8, 75u8, 21u8, 62u8];
6049            #[inline]
6050            fn new<'a>(
6051                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6052            ) -> Self {
6053                tuple.into()
6054            }
6055            #[inline]
6056            fn tokenize(&self) -> Self::Token<'_> {
6057                (
6058                    <alloy::sol_types::sol_data::FixedBytes<
6059                        32,
6060                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6061                )
6062            }
6063            #[inline]
6064            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6065                (
6066                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6067                        ret,
6068                    ),
6069                )
6070            }
6071            #[inline]
6072            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6073                <Self::ReturnTuple<
6074                    '_,
6075                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6076                    .map(|r| {
6077                        let r: isOperationPendingReturn = r.into();
6078                        r._0
6079                    })
6080            }
6081            #[inline]
6082            fn abi_decode_returns_validate(
6083                data: &[u8],
6084            ) -> alloy_sol_types::Result<Self::Return> {
6085                <Self::ReturnTuple<
6086                    '_,
6087                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6088                    .map(|r| {
6089                        let r: isOperationPendingReturn = r.into();
6090                        r._0
6091                    })
6092            }
6093        }
6094    };
6095    #[derive(serde::Serialize, serde::Deserialize)]
6096    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6097    /**Function with signature `isOperationReady(bytes32)` and selector `0x13bc9f20`.
6098```solidity
6099function isOperationReady(bytes32 id) external view returns (bool);
6100```*/
6101    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6102    #[derive(Clone)]
6103    pub struct isOperationReadyCall {
6104        #[allow(missing_docs)]
6105        pub id: alloy::sol_types::private::FixedBytes<32>,
6106    }
6107    #[derive(serde::Serialize, serde::Deserialize)]
6108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6109    ///Container type for the return parameters of the [`isOperationReady(bytes32)`](isOperationReadyCall) function.
6110    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6111    #[derive(Clone)]
6112    pub struct isOperationReadyReturn {
6113        #[allow(missing_docs)]
6114        pub _0: bool,
6115    }
6116    #[allow(
6117        non_camel_case_types,
6118        non_snake_case,
6119        clippy::pub_underscore_fields,
6120        clippy::style
6121    )]
6122    const _: () = {
6123        use alloy::sol_types as alloy_sol_types;
6124        {
6125            #[doc(hidden)]
6126            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6127            #[doc(hidden)]
6128            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6129            #[cfg(test)]
6130            #[allow(dead_code, unreachable_patterns)]
6131            fn _type_assertion(
6132                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6133            ) {
6134                match _t {
6135                    alloy_sol_types::private::AssertTypeEq::<
6136                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6137                    >(_) => {}
6138                }
6139            }
6140            #[automatically_derived]
6141            #[doc(hidden)]
6142            impl ::core::convert::From<isOperationReadyCall>
6143            for UnderlyingRustTuple<'_> {
6144                fn from(value: isOperationReadyCall) -> Self {
6145                    (value.id,)
6146                }
6147            }
6148            #[automatically_derived]
6149            #[doc(hidden)]
6150            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6151            for isOperationReadyCall {
6152                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6153                    Self { id: tuple.0 }
6154                }
6155            }
6156        }
6157        {
6158            #[doc(hidden)]
6159            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6160            #[doc(hidden)]
6161            type UnderlyingRustTuple<'a> = (bool,);
6162            #[cfg(test)]
6163            #[allow(dead_code, unreachable_patterns)]
6164            fn _type_assertion(
6165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6166            ) {
6167                match _t {
6168                    alloy_sol_types::private::AssertTypeEq::<
6169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6170                    >(_) => {}
6171                }
6172            }
6173            #[automatically_derived]
6174            #[doc(hidden)]
6175            impl ::core::convert::From<isOperationReadyReturn>
6176            for UnderlyingRustTuple<'_> {
6177                fn from(value: isOperationReadyReturn) -> Self {
6178                    (value._0,)
6179                }
6180            }
6181            #[automatically_derived]
6182            #[doc(hidden)]
6183            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6184            for isOperationReadyReturn {
6185                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6186                    Self { _0: tuple.0 }
6187                }
6188            }
6189        }
6190        #[automatically_derived]
6191        impl alloy_sol_types::SolCall for isOperationReadyCall {
6192            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6193            type Token<'a> = <Self::Parameters<
6194                'a,
6195            > as alloy_sol_types::SolType>::Token<'a>;
6196            type Return = bool;
6197            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6198            type ReturnToken<'a> = <Self::ReturnTuple<
6199                'a,
6200            > as alloy_sol_types::SolType>::Token<'a>;
6201            const SIGNATURE: &'static str = "isOperationReady(bytes32)";
6202            const SELECTOR: [u8; 4] = [19u8, 188u8, 159u8, 32u8];
6203            #[inline]
6204            fn new<'a>(
6205                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6206            ) -> Self {
6207                tuple.into()
6208            }
6209            #[inline]
6210            fn tokenize(&self) -> Self::Token<'_> {
6211                (
6212                    <alloy::sol_types::sol_data::FixedBytes<
6213                        32,
6214                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6215                )
6216            }
6217            #[inline]
6218            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6219                (
6220                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6221                        ret,
6222                    ),
6223                )
6224            }
6225            #[inline]
6226            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6227                <Self::ReturnTuple<
6228                    '_,
6229                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6230                    .map(|r| {
6231                        let r: isOperationReadyReturn = r.into();
6232                        r._0
6233                    })
6234            }
6235            #[inline]
6236            fn abi_decode_returns_validate(
6237                data: &[u8],
6238            ) -> alloy_sol_types::Result<Self::Return> {
6239                <Self::ReturnTuple<
6240                    '_,
6241                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6242                    .map(|r| {
6243                        let r: isOperationReadyReturn = r.into();
6244                        r._0
6245                    })
6246            }
6247        }
6248    };
6249    #[derive(serde::Serialize, serde::Deserialize)]
6250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6251    /**Function with signature `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)` and selector `0xbc197c81`.
6252```solidity
6253function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
6254```*/
6255    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6256    #[derive(Clone)]
6257    pub struct onERC1155BatchReceivedCall {
6258        #[allow(missing_docs)]
6259        pub _0: alloy::sol_types::private::Address,
6260        #[allow(missing_docs)]
6261        pub _1: alloy::sol_types::private::Address,
6262        #[allow(missing_docs)]
6263        pub _2: alloy::sol_types::private::Vec<
6264            alloy::sol_types::private::primitives::aliases::U256,
6265        >,
6266        #[allow(missing_docs)]
6267        pub _3: alloy::sol_types::private::Vec<
6268            alloy::sol_types::private::primitives::aliases::U256,
6269        >,
6270        #[allow(missing_docs)]
6271        pub _4: alloy::sol_types::private::Bytes,
6272    }
6273    #[derive(serde::Serialize, serde::Deserialize)]
6274    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6275    ///Container type for the return parameters of the [`onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`](onERC1155BatchReceivedCall) function.
6276    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6277    #[derive(Clone)]
6278    pub struct onERC1155BatchReceivedReturn {
6279        #[allow(missing_docs)]
6280        pub _0: alloy::sol_types::private::FixedBytes<4>,
6281    }
6282    #[allow(
6283        non_camel_case_types,
6284        non_snake_case,
6285        clippy::pub_underscore_fields,
6286        clippy::style
6287    )]
6288    const _: () = {
6289        use alloy::sol_types as alloy_sol_types;
6290        {
6291            #[doc(hidden)]
6292            type UnderlyingSolTuple<'a> = (
6293                alloy::sol_types::sol_data::Address,
6294                alloy::sol_types::sol_data::Address,
6295                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6296                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6297                alloy::sol_types::sol_data::Bytes,
6298            );
6299            #[doc(hidden)]
6300            type UnderlyingRustTuple<'a> = (
6301                alloy::sol_types::private::Address,
6302                alloy::sol_types::private::Address,
6303                alloy::sol_types::private::Vec<
6304                    alloy::sol_types::private::primitives::aliases::U256,
6305                >,
6306                alloy::sol_types::private::Vec<
6307                    alloy::sol_types::private::primitives::aliases::U256,
6308                >,
6309                alloy::sol_types::private::Bytes,
6310            );
6311            #[cfg(test)]
6312            #[allow(dead_code, unreachable_patterns)]
6313            fn _type_assertion(
6314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6315            ) {
6316                match _t {
6317                    alloy_sol_types::private::AssertTypeEq::<
6318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6319                    >(_) => {}
6320                }
6321            }
6322            #[automatically_derived]
6323            #[doc(hidden)]
6324            impl ::core::convert::From<onERC1155BatchReceivedCall>
6325            for UnderlyingRustTuple<'_> {
6326                fn from(value: onERC1155BatchReceivedCall) -> Self {
6327                    (value._0, value._1, value._2, value._3, value._4)
6328                }
6329            }
6330            #[automatically_derived]
6331            #[doc(hidden)]
6332            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6333            for onERC1155BatchReceivedCall {
6334                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6335                    Self {
6336                        _0: tuple.0,
6337                        _1: tuple.1,
6338                        _2: tuple.2,
6339                        _3: tuple.3,
6340                        _4: tuple.4,
6341                    }
6342                }
6343            }
6344        }
6345        {
6346            #[doc(hidden)]
6347            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6348            #[doc(hidden)]
6349            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6350            #[cfg(test)]
6351            #[allow(dead_code, unreachable_patterns)]
6352            fn _type_assertion(
6353                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6354            ) {
6355                match _t {
6356                    alloy_sol_types::private::AssertTypeEq::<
6357                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6358                    >(_) => {}
6359                }
6360            }
6361            #[automatically_derived]
6362            #[doc(hidden)]
6363            impl ::core::convert::From<onERC1155BatchReceivedReturn>
6364            for UnderlyingRustTuple<'_> {
6365                fn from(value: onERC1155BatchReceivedReturn) -> Self {
6366                    (value._0,)
6367                }
6368            }
6369            #[automatically_derived]
6370            #[doc(hidden)]
6371            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6372            for onERC1155BatchReceivedReturn {
6373                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6374                    Self { _0: tuple.0 }
6375                }
6376            }
6377        }
6378        #[automatically_derived]
6379        impl alloy_sol_types::SolCall for onERC1155BatchReceivedCall {
6380            type Parameters<'a> = (
6381                alloy::sol_types::sol_data::Address,
6382                alloy::sol_types::sol_data::Address,
6383                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6384                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6385                alloy::sol_types::sol_data::Bytes,
6386            );
6387            type Token<'a> = <Self::Parameters<
6388                'a,
6389            > as alloy_sol_types::SolType>::Token<'a>;
6390            type Return = alloy::sol_types::private::FixedBytes<4>;
6391            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6392            type ReturnToken<'a> = <Self::ReturnTuple<
6393                'a,
6394            > as alloy_sol_types::SolType>::Token<'a>;
6395            const SIGNATURE: &'static str = "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)";
6396            const SELECTOR: [u8; 4] = [188u8, 25u8, 124u8, 129u8];
6397            #[inline]
6398            fn new<'a>(
6399                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6400            ) -> Self {
6401                tuple.into()
6402            }
6403            #[inline]
6404            fn tokenize(&self) -> Self::Token<'_> {
6405                (
6406                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6407                        &self._0,
6408                    ),
6409                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6410                        &self._1,
6411                    ),
6412                    <alloy::sol_types::sol_data::Array<
6413                        alloy::sol_types::sol_data::Uint<256>,
6414                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6415                    <alloy::sol_types::sol_data::Array<
6416                        alloy::sol_types::sol_data::Uint<256>,
6417                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6418                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6419                        &self._4,
6420                    ),
6421                )
6422            }
6423            #[inline]
6424            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6425                (
6426                    <alloy::sol_types::sol_data::FixedBytes<
6427                        4,
6428                    > as alloy_sol_types::SolType>::tokenize(ret),
6429                )
6430            }
6431            #[inline]
6432            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6433                <Self::ReturnTuple<
6434                    '_,
6435                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6436                    .map(|r| {
6437                        let r: onERC1155BatchReceivedReturn = r.into();
6438                        r._0
6439                    })
6440            }
6441            #[inline]
6442            fn abi_decode_returns_validate(
6443                data: &[u8],
6444            ) -> alloy_sol_types::Result<Self::Return> {
6445                <Self::ReturnTuple<
6446                    '_,
6447                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6448                    .map(|r| {
6449                        let r: onERC1155BatchReceivedReturn = r.into();
6450                        r._0
6451                    })
6452            }
6453        }
6454    };
6455    #[derive(serde::Serialize, serde::Deserialize)]
6456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6457    /**Function with signature `onERC1155Received(address,address,uint256,uint256,bytes)` and selector `0xf23a6e61`.
6458```solidity
6459function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
6460```*/
6461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6462    #[derive(Clone)]
6463    pub struct onERC1155ReceivedCall {
6464        #[allow(missing_docs)]
6465        pub _0: alloy::sol_types::private::Address,
6466        #[allow(missing_docs)]
6467        pub _1: alloy::sol_types::private::Address,
6468        #[allow(missing_docs)]
6469        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6470        #[allow(missing_docs)]
6471        pub _3: alloy::sol_types::private::primitives::aliases::U256,
6472        #[allow(missing_docs)]
6473        pub _4: alloy::sol_types::private::Bytes,
6474    }
6475    #[derive(serde::Serialize, serde::Deserialize)]
6476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6477    ///Container type for the return parameters of the [`onERC1155Received(address,address,uint256,uint256,bytes)`](onERC1155ReceivedCall) function.
6478    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6479    #[derive(Clone)]
6480    pub struct onERC1155ReceivedReturn {
6481        #[allow(missing_docs)]
6482        pub _0: alloy::sol_types::private::FixedBytes<4>,
6483    }
6484    #[allow(
6485        non_camel_case_types,
6486        non_snake_case,
6487        clippy::pub_underscore_fields,
6488        clippy::style
6489    )]
6490    const _: () = {
6491        use alloy::sol_types as alloy_sol_types;
6492        {
6493            #[doc(hidden)]
6494            type UnderlyingSolTuple<'a> = (
6495                alloy::sol_types::sol_data::Address,
6496                alloy::sol_types::sol_data::Address,
6497                alloy::sol_types::sol_data::Uint<256>,
6498                alloy::sol_types::sol_data::Uint<256>,
6499                alloy::sol_types::sol_data::Bytes,
6500            );
6501            #[doc(hidden)]
6502            type UnderlyingRustTuple<'a> = (
6503                alloy::sol_types::private::Address,
6504                alloy::sol_types::private::Address,
6505                alloy::sol_types::private::primitives::aliases::U256,
6506                alloy::sol_types::private::primitives::aliases::U256,
6507                alloy::sol_types::private::Bytes,
6508            );
6509            #[cfg(test)]
6510            #[allow(dead_code, unreachable_patterns)]
6511            fn _type_assertion(
6512                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6513            ) {
6514                match _t {
6515                    alloy_sol_types::private::AssertTypeEq::<
6516                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6517                    >(_) => {}
6518                }
6519            }
6520            #[automatically_derived]
6521            #[doc(hidden)]
6522            impl ::core::convert::From<onERC1155ReceivedCall>
6523            for UnderlyingRustTuple<'_> {
6524                fn from(value: onERC1155ReceivedCall) -> Self {
6525                    (value._0, value._1, value._2, value._3, value._4)
6526                }
6527            }
6528            #[automatically_derived]
6529            #[doc(hidden)]
6530            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6531            for onERC1155ReceivedCall {
6532                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6533                    Self {
6534                        _0: tuple.0,
6535                        _1: tuple.1,
6536                        _2: tuple.2,
6537                        _3: tuple.3,
6538                        _4: tuple.4,
6539                    }
6540                }
6541            }
6542        }
6543        {
6544            #[doc(hidden)]
6545            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6546            #[doc(hidden)]
6547            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6548            #[cfg(test)]
6549            #[allow(dead_code, unreachable_patterns)]
6550            fn _type_assertion(
6551                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6552            ) {
6553                match _t {
6554                    alloy_sol_types::private::AssertTypeEq::<
6555                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6556                    >(_) => {}
6557                }
6558            }
6559            #[automatically_derived]
6560            #[doc(hidden)]
6561            impl ::core::convert::From<onERC1155ReceivedReturn>
6562            for UnderlyingRustTuple<'_> {
6563                fn from(value: onERC1155ReceivedReturn) -> Self {
6564                    (value._0,)
6565                }
6566            }
6567            #[automatically_derived]
6568            #[doc(hidden)]
6569            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6570            for onERC1155ReceivedReturn {
6571                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6572                    Self { _0: tuple.0 }
6573                }
6574            }
6575        }
6576        #[automatically_derived]
6577        impl alloy_sol_types::SolCall for onERC1155ReceivedCall {
6578            type Parameters<'a> = (
6579                alloy::sol_types::sol_data::Address,
6580                alloy::sol_types::sol_data::Address,
6581                alloy::sol_types::sol_data::Uint<256>,
6582                alloy::sol_types::sol_data::Uint<256>,
6583                alloy::sol_types::sol_data::Bytes,
6584            );
6585            type Token<'a> = <Self::Parameters<
6586                'a,
6587            > as alloy_sol_types::SolType>::Token<'a>;
6588            type Return = alloy::sol_types::private::FixedBytes<4>;
6589            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6590            type ReturnToken<'a> = <Self::ReturnTuple<
6591                'a,
6592            > as alloy_sol_types::SolType>::Token<'a>;
6593            const SIGNATURE: &'static str = "onERC1155Received(address,address,uint256,uint256,bytes)";
6594            const SELECTOR: [u8; 4] = [242u8, 58u8, 110u8, 97u8];
6595            #[inline]
6596            fn new<'a>(
6597                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6598            ) -> Self {
6599                tuple.into()
6600            }
6601            #[inline]
6602            fn tokenize(&self) -> Self::Token<'_> {
6603                (
6604                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6605                        &self._0,
6606                    ),
6607                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6608                        &self._1,
6609                    ),
6610                    <alloy::sol_types::sol_data::Uint<
6611                        256,
6612                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6613                    <alloy::sol_types::sol_data::Uint<
6614                        256,
6615                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6616                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6617                        &self._4,
6618                    ),
6619                )
6620            }
6621            #[inline]
6622            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6623                (
6624                    <alloy::sol_types::sol_data::FixedBytes<
6625                        4,
6626                    > as alloy_sol_types::SolType>::tokenize(ret),
6627                )
6628            }
6629            #[inline]
6630            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6631                <Self::ReturnTuple<
6632                    '_,
6633                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6634                    .map(|r| {
6635                        let r: onERC1155ReceivedReturn = r.into();
6636                        r._0
6637                    })
6638            }
6639            #[inline]
6640            fn abi_decode_returns_validate(
6641                data: &[u8],
6642            ) -> alloy_sol_types::Result<Self::Return> {
6643                <Self::ReturnTuple<
6644                    '_,
6645                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6646                    .map(|r| {
6647                        let r: onERC1155ReceivedReturn = r.into();
6648                        r._0
6649                    })
6650            }
6651        }
6652    };
6653    #[derive(serde::Serialize, serde::Deserialize)]
6654    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6655    /**Function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`.
6656```solidity
6657function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
6658```*/
6659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6660    #[derive(Clone)]
6661    pub struct onERC721ReceivedCall {
6662        #[allow(missing_docs)]
6663        pub _0: alloy::sol_types::private::Address,
6664        #[allow(missing_docs)]
6665        pub _1: alloy::sol_types::private::Address,
6666        #[allow(missing_docs)]
6667        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6668        #[allow(missing_docs)]
6669        pub _3: alloy::sol_types::private::Bytes,
6670    }
6671    #[derive(serde::Serialize, serde::Deserialize)]
6672    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6673    ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function.
6674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6675    #[derive(Clone)]
6676    pub struct onERC721ReceivedReturn {
6677        #[allow(missing_docs)]
6678        pub _0: alloy::sol_types::private::FixedBytes<4>,
6679    }
6680    #[allow(
6681        non_camel_case_types,
6682        non_snake_case,
6683        clippy::pub_underscore_fields,
6684        clippy::style
6685    )]
6686    const _: () = {
6687        use alloy::sol_types as alloy_sol_types;
6688        {
6689            #[doc(hidden)]
6690            type UnderlyingSolTuple<'a> = (
6691                alloy::sol_types::sol_data::Address,
6692                alloy::sol_types::sol_data::Address,
6693                alloy::sol_types::sol_data::Uint<256>,
6694                alloy::sol_types::sol_data::Bytes,
6695            );
6696            #[doc(hidden)]
6697            type UnderlyingRustTuple<'a> = (
6698                alloy::sol_types::private::Address,
6699                alloy::sol_types::private::Address,
6700                alloy::sol_types::private::primitives::aliases::U256,
6701                alloy::sol_types::private::Bytes,
6702            );
6703            #[cfg(test)]
6704            #[allow(dead_code, unreachable_patterns)]
6705            fn _type_assertion(
6706                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6707            ) {
6708                match _t {
6709                    alloy_sol_types::private::AssertTypeEq::<
6710                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6711                    >(_) => {}
6712                }
6713            }
6714            #[automatically_derived]
6715            #[doc(hidden)]
6716            impl ::core::convert::From<onERC721ReceivedCall>
6717            for UnderlyingRustTuple<'_> {
6718                fn from(value: onERC721ReceivedCall) -> Self {
6719                    (value._0, value._1, value._2, value._3)
6720                }
6721            }
6722            #[automatically_derived]
6723            #[doc(hidden)]
6724            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6725            for onERC721ReceivedCall {
6726                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6727                    Self {
6728                        _0: tuple.0,
6729                        _1: tuple.1,
6730                        _2: tuple.2,
6731                        _3: tuple.3,
6732                    }
6733                }
6734            }
6735        }
6736        {
6737            #[doc(hidden)]
6738            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6739            #[doc(hidden)]
6740            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6741            #[cfg(test)]
6742            #[allow(dead_code, unreachable_patterns)]
6743            fn _type_assertion(
6744                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6745            ) {
6746                match _t {
6747                    alloy_sol_types::private::AssertTypeEq::<
6748                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6749                    >(_) => {}
6750                }
6751            }
6752            #[automatically_derived]
6753            #[doc(hidden)]
6754            impl ::core::convert::From<onERC721ReceivedReturn>
6755            for UnderlyingRustTuple<'_> {
6756                fn from(value: onERC721ReceivedReturn) -> Self {
6757                    (value._0,)
6758                }
6759            }
6760            #[automatically_derived]
6761            #[doc(hidden)]
6762            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6763            for onERC721ReceivedReturn {
6764                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6765                    Self { _0: tuple.0 }
6766                }
6767            }
6768        }
6769        #[automatically_derived]
6770        impl alloy_sol_types::SolCall for onERC721ReceivedCall {
6771            type Parameters<'a> = (
6772                alloy::sol_types::sol_data::Address,
6773                alloy::sol_types::sol_data::Address,
6774                alloy::sol_types::sol_data::Uint<256>,
6775                alloy::sol_types::sol_data::Bytes,
6776            );
6777            type Token<'a> = <Self::Parameters<
6778                'a,
6779            > as alloy_sol_types::SolType>::Token<'a>;
6780            type Return = alloy::sol_types::private::FixedBytes<4>;
6781            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6782            type ReturnToken<'a> = <Self::ReturnTuple<
6783                'a,
6784            > as alloy_sol_types::SolType>::Token<'a>;
6785            const SIGNATURE: &'static str = "onERC721Received(address,address,uint256,bytes)";
6786            const SELECTOR: [u8; 4] = [21u8, 11u8, 122u8, 2u8];
6787            #[inline]
6788            fn new<'a>(
6789                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6790            ) -> Self {
6791                tuple.into()
6792            }
6793            #[inline]
6794            fn tokenize(&self) -> Self::Token<'_> {
6795                (
6796                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6797                        &self._0,
6798                    ),
6799                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6800                        &self._1,
6801                    ),
6802                    <alloy::sol_types::sol_data::Uint<
6803                        256,
6804                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6805                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6806                        &self._3,
6807                    ),
6808                )
6809            }
6810            #[inline]
6811            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6812                (
6813                    <alloy::sol_types::sol_data::FixedBytes<
6814                        4,
6815                    > as alloy_sol_types::SolType>::tokenize(ret),
6816                )
6817            }
6818            #[inline]
6819            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6820                <Self::ReturnTuple<
6821                    '_,
6822                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6823                    .map(|r| {
6824                        let r: onERC721ReceivedReturn = r.into();
6825                        r._0
6826                    })
6827            }
6828            #[inline]
6829            fn abi_decode_returns_validate(
6830                data: &[u8],
6831            ) -> alloy_sol_types::Result<Self::Return> {
6832                <Self::ReturnTuple<
6833                    '_,
6834                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6835                    .map(|r| {
6836                        let r: onERC721ReceivedReturn = r.into();
6837                        r._0
6838                    })
6839            }
6840        }
6841    };
6842    #[derive(serde::Serialize, serde::Deserialize)]
6843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6844    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
6845```solidity
6846function renounceRole(bytes32 role, address callerConfirmation) external;
6847```*/
6848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6849    #[derive(Clone)]
6850    pub struct renounceRoleCall {
6851        #[allow(missing_docs)]
6852        pub role: alloy::sol_types::private::FixedBytes<32>,
6853        #[allow(missing_docs)]
6854        pub callerConfirmation: alloy::sol_types::private::Address,
6855    }
6856    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
6857    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6858    #[derive(Clone)]
6859    pub struct renounceRoleReturn {}
6860    #[allow(
6861        non_camel_case_types,
6862        non_snake_case,
6863        clippy::pub_underscore_fields,
6864        clippy::style
6865    )]
6866    const _: () = {
6867        use alloy::sol_types as alloy_sol_types;
6868        {
6869            #[doc(hidden)]
6870            type UnderlyingSolTuple<'a> = (
6871                alloy::sol_types::sol_data::FixedBytes<32>,
6872                alloy::sol_types::sol_data::Address,
6873            );
6874            #[doc(hidden)]
6875            type UnderlyingRustTuple<'a> = (
6876                alloy::sol_types::private::FixedBytes<32>,
6877                alloy::sol_types::private::Address,
6878            );
6879            #[cfg(test)]
6880            #[allow(dead_code, unreachable_patterns)]
6881            fn _type_assertion(
6882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6883            ) {
6884                match _t {
6885                    alloy_sol_types::private::AssertTypeEq::<
6886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6887                    >(_) => {}
6888                }
6889            }
6890            #[automatically_derived]
6891            #[doc(hidden)]
6892            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
6893                fn from(value: renounceRoleCall) -> Self {
6894                    (value.role, value.callerConfirmation)
6895                }
6896            }
6897            #[automatically_derived]
6898            #[doc(hidden)]
6899            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
6900                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6901                    Self {
6902                        role: tuple.0,
6903                        callerConfirmation: tuple.1,
6904                    }
6905                }
6906            }
6907        }
6908        {
6909            #[doc(hidden)]
6910            type UnderlyingSolTuple<'a> = ();
6911            #[doc(hidden)]
6912            type UnderlyingRustTuple<'a> = ();
6913            #[cfg(test)]
6914            #[allow(dead_code, unreachable_patterns)]
6915            fn _type_assertion(
6916                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6917            ) {
6918                match _t {
6919                    alloy_sol_types::private::AssertTypeEq::<
6920                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6921                    >(_) => {}
6922                }
6923            }
6924            #[automatically_derived]
6925            #[doc(hidden)]
6926            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
6927                fn from(value: renounceRoleReturn) -> Self {
6928                    ()
6929                }
6930            }
6931            #[automatically_derived]
6932            #[doc(hidden)]
6933            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
6934                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6935                    Self {}
6936                }
6937            }
6938        }
6939        impl renounceRoleReturn {
6940            fn _tokenize(
6941                &self,
6942            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
6943                ()
6944            }
6945        }
6946        #[automatically_derived]
6947        impl alloy_sol_types::SolCall for renounceRoleCall {
6948            type Parameters<'a> = (
6949                alloy::sol_types::sol_data::FixedBytes<32>,
6950                alloy::sol_types::sol_data::Address,
6951            );
6952            type Token<'a> = <Self::Parameters<
6953                'a,
6954            > as alloy_sol_types::SolType>::Token<'a>;
6955            type Return = renounceRoleReturn;
6956            type ReturnTuple<'a> = ();
6957            type ReturnToken<'a> = <Self::ReturnTuple<
6958                'a,
6959            > as alloy_sol_types::SolType>::Token<'a>;
6960            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
6961            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
6962            #[inline]
6963            fn new<'a>(
6964                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6965            ) -> Self {
6966                tuple.into()
6967            }
6968            #[inline]
6969            fn tokenize(&self) -> Self::Token<'_> {
6970                (
6971                    <alloy::sol_types::sol_data::FixedBytes<
6972                        32,
6973                    > as alloy_sol_types::SolType>::tokenize(&self.role),
6974                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6975                        &self.callerConfirmation,
6976                    ),
6977                )
6978            }
6979            #[inline]
6980            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6981                renounceRoleReturn::_tokenize(ret)
6982            }
6983            #[inline]
6984            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6985                <Self::ReturnTuple<
6986                    '_,
6987                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6988                    .map(Into::into)
6989            }
6990            #[inline]
6991            fn abi_decode_returns_validate(
6992                data: &[u8],
6993            ) -> alloy_sol_types::Result<Self::Return> {
6994                <Self::ReturnTuple<
6995                    '_,
6996                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6997                    .map(Into::into)
6998            }
6999        }
7000    };
7001    #[derive(serde::Serialize, serde::Deserialize)]
7002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7003    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
7004```solidity
7005function revokeRole(bytes32 role, address account) external;
7006```*/
7007    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7008    #[derive(Clone)]
7009    pub struct revokeRoleCall {
7010        #[allow(missing_docs)]
7011        pub role: alloy::sol_types::private::FixedBytes<32>,
7012        #[allow(missing_docs)]
7013        pub account: alloy::sol_types::private::Address,
7014    }
7015    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
7016    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7017    #[derive(Clone)]
7018    pub struct revokeRoleReturn {}
7019    #[allow(
7020        non_camel_case_types,
7021        non_snake_case,
7022        clippy::pub_underscore_fields,
7023        clippy::style
7024    )]
7025    const _: () = {
7026        use alloy::sol_types as alloy_sol_types;
7027        {
7028            #[doc(hidden)]
7029            type UnderlyingSolTuple<'a> = (
7030                alloy::sol_types::sol_data::FixedBytes<32>,
7031                alloy::sol_types::sol_data::Address,
7032            );
7033            #[doc(hidden)]
7034            type UnderlyingRustTuple<'a> = (
7035                alloy::sol_types::private::FixedBytes<32>,
7036                alloy::sol_types::private::Address,
7037            );
7038            #[cfg(test)]
7039            #[allow(dead_code, unreachable_patterns)]
7040            fn _type_assertion(
7041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7042            ) {
7043                match _t {
7044                    alloy_sol_types::private::AssertTypeEq::<
7045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7046                    >(_) => {}
7047                }
7048            }
7049            #[automatically_derived]
7050            #[doc(hidden)]
7051            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
7052                fn from(value: revokeRoleCall) -> Self {
7053                    (value.role, value.account)
7054                }
7055            }
7056            #[automatically_derived]
7057            #[doc(hidden)]
7058            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
7059                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7060                    Self {
7061                        role: tuple.0,
7062                        account: tuple.1,
7063                    }
7064                }
7065            }
7066        }
7067        {
7068            #[doc(hidden)]
7069            type UnderlyingSolTuple<'a> = ();
7070            #[doc(hidden)]
7071            type UnderlyingRustTuple<'a> = ();
7072            #[cfg(test)]
7073            #[allow(dead_code, unreachable_patterns)]
7074            fn _type_assertion(
7075                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7076            ) {
7077                match _t {
7078                    alloy_sol_types::private::AssertTypeEq::<
7079                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7080                    >(_) => {}
7081                }
7082            }
7083            #[automatically_derived]
7084            #[doc(hidden)]
7085            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
7086                fn from(value: revokeRoleReturn) -> Self {
7087                    ()
7088                }
7089            }
7090            #[automatically_derived]
7091            #[doc(hidden)]
7092            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
7093                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7094                    Self {}
7095                }
7096            }
7097        }
7098        impl revokeRoleReturn {
7099            fn _tokenize(
7100                &self,
7101            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7102                ()
7103            }
7104        }
7105        #[automatically_derived]
7106        impl alloy_sol_types::SolCall for revokeRoleCall {
7107            type Parameters<'a> = (
7108                alloy::sol_types::sol_data::FixedBytes<32>,
7109                alloy::sol_types::sol_data::Address,
7110            );
7111            type Token<'a> = <Self::Parameters<
7112                'a,
7113            > as alloy_sol_types::SolType>::Token<'a>;
7114            type Return = revokeRoleReturn;
7115            type ReturnTuple<'a> = ();
7116            type ReturnToken<'a> = <Self::ReturnTuple<
7117                'a,
7118            > as alloy_sol_types::SolType>::Token<'a>;
7119            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
7120            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
7121            #[inline]
7122            fn new<'a>(
7123                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7124            ) -> Self {
7125                tuple.into()
7126            }
7127            #[inline]
7128            fn tokenize(&self) -> Self::Token<'_> {
7129                (
7130                    <alloy::sol_types::sol_data::FixedBytes<
7131                        32,
7132                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7133                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7134                        &self.account,
7135                    ),
7136                )
7137            }
7138            #[inline]
7139            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7140                revokeRoleReturn::_tokenize(ret)
7141            }
7142            #[inline]
7143            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7144                <Self::ReturnTuple<
7145                    '_,
7146                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7147                    .map(Into::into)
7148            }
7149            #[inline]
7150            fn abi_decode_returns_validate(
7151                data: &[u8],
7152            ) -> alloy_sol_types::Result<Self::Return> {
7153                <Self::ReturnTuple<
7154                    '_,
7155                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7156                    .map(Into::into)
7157            }
7158        }
7159    };
7160    #[derive(serde::Serialize, serde::Deserialize)]
7161    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7162    /**Function with signature `schedule(address,uint256,bytes,bytes32,bytes32,uint256)` and selector `0x01d5062a`.
7163```solidity
7164function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7165```*/
7166    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7167    #[derive(Clone)]
7168    pub struct scheduleCall {
7169        #[allow(missing_docs)]
7170        pub target: alloy::sol_types::private::Address,
7171        #[allow(missing_docs)]
7172        pub value: alloy::sol_types::private::primitives::aliases::U256,
7173        #[allow(missing_docs)]
7174        pub data: alloy::sol_types::private::Bytes,
7175        #[allow(missing_docs)]
7176        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7177        #[allow(missing_docs)]
7178        pub salt: alloy::sol_types::private::FixedBytes<32>,
7179        #[allow(missing_docs)]
7180        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7181    }
7182    ///Container type for the return parameters of the [`schedule(address,uint256,bytes,bytes32,bytes32,uint256)`](scheduleCall) function.
7183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7184    #[derive(Clone)]
7185    pub struct scheduleReturn {}
7186    #[allow(
7187        non_camel_case_types,
7188        non_snake_case,
7189        clippy::pub_underscore_fields,
7190        clippy::style
7191    )]
7192    const _: () = {
7193        use alloy::sol_types as alloy_sol_types;
7194        {
7195            #[doc(hidden)]
7196            type UnderlyingSolTuple<'a> = (
7197                alloy::sol_types::sol_data::Address,
7198                alloy::sol_types::sol_data::Uint<256>,
7199                alloy::sol_types::sol_data::Bytes,
7200                alloy::sol_types::sol_data::FixedBytes<32>,
7201                alloy::sol_types::sol_data::FixedBytes<32>,
7202                alloy::sol_types::sol_data::Uint<256>,
7203            );
7204            #[doc(hidden)]
7205            type UnderlyingRustTuple<'a> = (
7206                alloy::sol_types::private::Address,
7207                alloy::sol_types::private::primitives::aliases::U256,
7208                alloy::sol_types::private::Bytes,
7209                alloy::sol_types::private::FixedBytes<32>,
7210                alloy::sol_types::private::FixedBytes<32>,
7211                alloy::sol_types::private::primitives::aliases::U256,
7212            );
7213            #[cfg(test)]
7214            #[allow(dead_code, unreachable_patterns)]
7215            fn _type_assertion(
7216                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7217            ) {
7218                match _t {
7219                    alloy_sol_types::private::AssertTypeEq::<
7220                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7221                    >(_) => {}
7222                }
7223            }
7224            #[automatically_derived]
7225            #[doc(hidden)]
7226            impl ::core::convert::From<scheduleCall> for UnderlyingRustTuple<'_> {
7227                fn from(value: scheduleCall) -> Self {
7228                    (
7229                        value.target,
7230                        value.value,
7231                        value.data,
7232                        value.predecessor,
7233                        value.salt,
7234                        value.delay,
7235                    )
7236                }
7237            }
7238            #[automatically_derived]
7239            #[doc(hidden)]
7240            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleCall {
7241                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7242                    Self {
7243                        target: tuple.0,
7244                        value: tuple.1,
7245                        data: tuple.2,
7246                        predecessor: tuple.3,
7247                        salt: tuple.4,
7248                        delay: tuple.5,
7249                    }
7250                }
7251            }
7252        }
7253        {
7254            #[doc(hidden)]
7255            type UnderlyingSolTuple<'a> = ();
7256            #[doc(hidden)]
7257            type UnderlyingRustTuple<'a> = ();
7258            #[cfg(test)]
7259            #[allow(dead_code, unreachable_patterns)]
7260            fn _type_assertion(
7261                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7262            ) {
7263                match _t {
7264                    alloy_sol_types::private::AssertTypeEq::<
7265                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7266                    >(_) => {}
7267                }
7268            }
7269            #[automatically_derived]
7270            #[doc(hidden)]
7271            impl ::core::convert::From<scheduleReturn> for UnderlyingRustTuple<'_> {
7272                fn from(value: scheduleReturn) -> Self {
7273                    ()
7274                }
7275            }
7276            #[automatically_derived]
7277            #[doc(hidden)]
7278            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleReturn {
7279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7280                    Self {}
7281                }
7282            }
7283        }
7284        impl scheduleReturn {
7285            fn _tokenize(
7286                &self,
7287            ) -> <scheduleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7288                ()
7289            }
7290        }
7291        #[automatically_derived]
7292        impl alloy_sol_types::SolCall for scheduleCall {
7293            type Parameters<'a> = (
7294                alloy::sol_types::sol_data::Address,
7295                alloy::sol_types::sol_data::Uint<256>,
7296                alloy::sol_types::sol_data::Bytes,
7297                alloy::sol_types::sol_data::FixedBytes<32>,
7298                alloy::sol_types::sol_data::FixedBytes<32>,
7299                alloy::sol_types::sol_data::Uint<256>,
7300            );
7301            type Token<'a> = <Self::Parameters<
7302                'a,
7303            > as alloy_sol_types::SolType>::Token<'a>;
7304            type Return = scheduleReturn;
7305            type ReturnTuple<'a> = ();
7306            type ReturnToken<'a> = <Self::ReturnTuple<
7307                'a,
7308            > as alloy_sol_types::SolType>::Token<'a>;
7309            const SIGNATURE: &'static str = "schedule(address,uint256,bytes,bytes32,bytes32,uint256)";
7310            const SELECTOR: [u8; 4] = [1u8, 213u8, 6u8, 42u8];
7311            #[inline]
7312            fn new<'a>(
7313                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7314            ) -> Self {
7315                tuple.into()
7316            }
7317            #[inline]
7318            fn tokenize(&self) -> Self::Token<'_> {
7319                (
7320                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7321                        &self.target,
7322                    ),
7323                    <alloy::sol_types::sol_data::Uint<
7324                        256,
7325                    > as alloy_sol_types::SolType>::tokenize(&self.value),
7326                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7327                        &self.data,
7328                    ),
7329                    <alloy::sol_types::sol_data::FixedBytes<
7330                        32,
7331                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7332                    <alloy::sol_types::sol_data::FixedBytes<
7333                        32,
7334                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7335                    <alloy::sol_types::sol_data::Uint<
7336                        256,
7337                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7338                )
7339            }
7340            #[inline]
7341            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7342                scheduleReturn::_tokenize(ret)
7343            }
7344            #[inline]
7345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7346                <Self::ReturnTuple<
7347                    '_,
7348                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7349                    .map(Into::into)
7350            }
7351            #[inline]
7352            fn abi_decode_returns_validate(
7353                data: &[u8],
7354            ) -> alloy_sol_types::Result<Self::Return> {
7355                <Self::ReturnTuple<
7356                    '_,
7357                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7358                    .map(Into::into)
7359            }
7360        }
7361    };
7362    #[derive(serde::Serialize, serde::Deserialize)]
7363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7364    /**Function with signature `scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)` and selector `0x8f2a0bb0`.
7365```solidity
7366function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7367```*/
7368    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7369    #[derive(Clone)]
7370    pub struct scheduleBatchCall {
7371        #[allow(missing_docs)]
7372        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7373        #[allow(missing_docs)]
7374        pub values: alloy::sol_types::private::Vec<
7375            alloy::sol_types::private::primitives::aliases::U256,
7376        >,
7377        #[allow(missing_docs)]
7378        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7379        #[allow(missing_docs)]
7380        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7381        #[allow(missing_docs)]
7382        pub salt: alloy::sol_types::private::FixedBytes<32>,
7383        #[allow(missing_docs)]
7384        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7385    }
7386    ///Container type for the return parameters of the [`scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)`](scheduleBatchCall) function.
7387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7388    #[derive(Clone)]
7389    pub struct scheduleBatchReturn {}
7390    #[allow(
7391        non_camel_case_types,
7392        non_snake_case,
7393        clippy::pub_underscore_fields,
7394        clippy::style
7395    )]
7396    const _: () = {
7397        use alloy::sol_types as alloy_sol_types;
7398        {
7399            #[doc(hidden)]
7400            type UnderlyingSolTuple<'a> = (
7401                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7402                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7403                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7404                alloy::sol_types::sol_data::FixedBytes<32>,
7405                alloy::sol_types::sol_data::FixedBytes<32>,
7406                alloy::sol_types::sol_data::Uint<256>,
7407            );
7408            #[doc(hidden)]
7409            type UnderlyingRustTuple<'a> = (
7410                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7411                alloy::sol_types::private::Vec<
7412                    alloy::sol_types::private::primitives::aliases::U256,
7413                >,
7414                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7415                alloy::sol_types::private::FixedBytes<32>,
7416                alloy::sol_types::private::FixedBytes<32>,
7417                alloy::sol_types::private::primitives::aliases::U256,
7418            );
7419            #[cfg(test)]
7420            #[allow(dead_code, unreachable_patterns)]
7421            fn _type_assertion(
7422                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7423            ) {
7424                match _t {
7425                    alloy_sol_types::private::AssertTypeEq::<
7426                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7427                    >(_) => {}
7428                }
7429            }
7430            #[automatically_derived]
7431            #[doc(hidden)]
7432            impl ::core::convert::From<scheduleBatchCall> for UnderlyingRustTuple<'_> {
7433                fn from(value: scheduleBatchCall) -> Self {
7434                    (
7435                        value.targets,
7436                        value.values,
7437                        value.payloads,
7438                        value.predecessor,
7439                        value.salt,
7440                        value.delay,
7441                    )
7442                }
7443            }
7444            #[automatically_derived]
7445            #[doc(hidden)]
7446            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchCall {
7447                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7448                    Self {
7449                        targets: tuple.0,
7450                        values: tuple.1,
7451                        payloads: tuple.2,
7452                        predecessor: tuple.3,
7453                        salt: tuple.4,
7454                        delay: tuple.5,
7455                    }
7456                }
7457            }
7458        }
7459        {
7460            #[doc(hidden)]
7461            type UnderlyingSolTuple<'a> = ();
7462            #[doc(hidden)]
7463            type UnderlyingRustTuple<'a> = ();
7464            #[cfg(test)]
7465            #[allow(dead_code, unreachable_patterns)]
7466            fn _type_assertion(
7467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7468            ) {
7469                match _t {
7470                    alloy_sol_types::private::AssertTypeEq::<
7471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7472                    >(_) => {}
7473                }
7474            }
7475            #[automatically_derived]
7476            #[doc(hidden)]
7477            impl ::core::convert::From<scheduleBatchReturn> for UnderlyingRustTuple<'_> {
7478                fn from(value: scheduleBatchReturn) -> Self {
7479                    ()
7480                }
7481            }
7482            #[automatically_derived]
7483            #[doc(hidden)]
7484            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchReturn {
7485                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7486                    Self {}
7487                }
7488            }
7489        }
7490        impl scheduleBatchReturn {
7491            fn _tokenize(
7492                &self,
7493            ) -> <scheduleBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7494                ()
7495            }
7496        }
7497        #[automatically_derived]
7498        impl alloy_sol_types::SolCall for scheduleBatchCall {
7499            type Parameters<'a> = (
7500                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7501                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7502                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7503                alloy::sol_types::sol_data::FixedBytes<32>,
7504                alloy::sol_types::sol_data::FixedBytes<32>,
7505                alloy::sol_types::sol_data::Uint<256>,
7506            );
7507            type Token<'a> = <Self::Parameters<
7508                'a,
7509            > as alloy_sol_types::SolType>::Token<'a>;
7510            type Return = scheduleBatchReturn;
7511            type ReturnTuple<'a> = ();
7512            type ReturnToken<'a> = <Self::ReturnTuple<
7513                'a,
7514            > as alloy_sol_types::SolType>::Token<'a>;
7515            const SIGNATURE: &'static str = "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)";
7516            const SELECTOR: [u8; 4] = [143u8, 42u8, 11u8, 176u8];
7517            #[inline]
7518            fn new<'a>(
7519                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7520            ) -> Self {
7521                tuple.into()
7522            }
7523            #[inline]
7524            fn tokenize(&self) -> Self::Token<'_> {
7525                (
7526                    <alloy::sol_types::sol_data::Array<
7527                        alloy::sol_types::sol_data::Address,
7528                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
7529                    <alloy::sol_types::sol_data::Array<
7530                        alloy::sol_types::sol_data::Uint<256>,
7531                    > as alloy_sol_types::SolType>::tokenize(&self.values),
7532                    <alloy::sol_types::sol_data::Array<
7533                        alloy::sol_types::sol_data::Bytes,
7534                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
7535                    <alloy::sol_types::sol_data::FixedBytes<
7536                        32,
7537                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7538                    <alloy::sol_types::sol_data::FixedBytes<
7539                        32,
7540                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7541                    <alloy::sol_types::sol_data::Uint<
7542                        256,
7543                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7544                )
7545            }
7546            #[inline]
7547            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7548                scheduleBatchReturn::_tokenize(ret)
7549            }
7550            #[inline]
7551            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7552                <Self::ReturnTuple<
7553                    '_,
7554                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7555                    .map(Into::into)
7556            }
7557            #[inline]
7558            fn abi_decode_returns_validate(
7559                data: &[u8],
7560            ) -> alloy_sol_types::Result<Self::Return> {
7561                <Self::ReturnTuple<
7562                    '_,
7563                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7564                    .map(Into::into)
7565            }
7566        }
7567    };
7568    #[derive(serde::Serialize, serde::Deserialize)]
7569    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7570    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
7571```solidity
7572function supportsInterface(bytes4 interfaceId) external view returns (bool);
7573```*/
7574    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7575    #[derive(Clone)]
7576    pub struct supportsInterfaceCall {
7577        #[allow(missing_docs)]
7578        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
7579    }
7580    #[derive(serde::Serialize, serde::Deserialize)]
7581    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7582    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
7583    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7584    #[derive(Clone)]
7585    pub struct supportsInterfaceReturn {
7586        #[allow(missing_docs)]
7587        pub _0: bool,
7588    }
7589    #[allow(
7590        non_camel_case_types,
7591        non_snake_case,
7592        clippy::pub_underscore_fields,
7593        clippy::style
7594    )]
7595    const _: () = {
7596        use alloy::sol_types as alloy_sol_types;
7597        {
7598            #[doc(hidden)]
7599            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7600            #[doc(hidden)]
7601            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
7602            #[cfg(test)]
7603            #[allow(dead_code, unreachable_patterns)]
7604            fn _type_assertion(
7605                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7606            ) {
7607                match _t {
7608                    alloy_sol_types::private::AssertTypeEq::<
7609                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7610                    >(_) => {}
7611                }
7612            }
7613            #[automatically_derived]
7614            #[doc(hidden)]
7615            impl ::core::convert::From<supportsInterfaceCall>
7616            for UnderlyingRustTuple<'_> {
7617                fn from(value: supportsInterfaceCall) -> Self {
7618                    (value.interfaceId,)
7619                }
7620            }
7621            #[automatically_derived]
7622            #[doc(hidden)]
7623            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7624            for supportsInterfaceCall {
7625                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7626                    Self { interfaceId: tuple.0 }
7627                }
7628            }
7629        }
7630        {
7631            #[doc(hidden)]
7632            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7633            #[doc(hidden)]
7634            type UnderlyingRustTuple<'a> = (bool,);
7635            #[cfg(test)]
7636            #[allow(dead_code, unreachable_patterns)]
7637            fn _type_assertion(
7638                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7639            ) {
7640                match _t {
7641                    alloy_sol_types::private::AssertTypeEq::<
7642                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7643                    >(_) => {}
7644                }
7645            }
7646            #[automatically_derived]
7647            #[doc(hidden)]
7648            impl ::core::convert::From<supportsInterfaceReturn>
7649            for UnderlyingRustTuple<'_> {
7650                fn from(value: supportsInterfaceReturn) -> Self {
7651                    (value._0,)
7652                }
7653            }
7654            #[automatically_derived]
7655            #[doc(hidden)]
7656            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7657            for supportsInterfaceReturn {
7658                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7659                    Self { _0: tuple.0 }
7660                }
7661            }
7662        }
7663        #[automatically_derived]
7664        impl alloy_sol_types::SolCall for supportsInterfaceCall {
7665            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7666            type Token<'a> = <Self::Parameters<
7667                'a,
7668            > as alloy_sol_types::SolType>::Token<'a>;
7669            type Return = bool;
7670            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
7671            type ReturnToken<'a> = <Self::ReturnTuple<
7672                'a,
7673            > as alloy_sol_types::SolType>::Token<'a>;
7674            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
7675            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
7676            #[inline]
7677            fn new<'a>(
7678                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7679            ) -> Self {
7680                tuple.into()
7681            }
7682            #[inline]
7683            fn tokenize(&self) -> Self::Token<'_> {
7684                (
7685                    <alloy::sol_types::sol_data::FixedBytes<
7686                        4,
7687                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
7688                )
7689            }
7690            #[inline]
7691            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7692                (
7693                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
7694                        ret,
7695                    ),
7696                )
7697            }
7698            #[inline]
7699            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7700                <Self::ReturnTuple<
7701                    '_,
7702                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7703                    .map(|r| {
7704                        let r: supportsInterfaceReturn = r.into();
7705                        r._0
7706                    })
7707            }
7708            #[inline]
7709            fn abi_decode_returns_validate(
7710                data: &[u8],
7711            ) -> alloy_sol_types::Result<Self::Return> {
7712                <Self::ReturnTuple<
7713                    '_,
7714                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7715                    .map(|r| {
7716                        let r: supportsInterfaceReturn = r.into();
7717                        r._0
7718                    })
7719            }
7720        }
7721    };
7722    #[derive(serde::Serialize, serde::Deserialize)]
7723    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7724    /**Function with signature `updateDelay(uint256)` and selector `0x64d62353`.
7725```solidity
7726function updateDelay(uint256 newDelay) external;
7727```*/
7728    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7729    #[derive(Clone)]
7730    pub struct updateDelayCall {
7731        #[allow(missing_docs)]
7732        pub newDelay: alloy::sol_types::private::primitives::aliases::U256,
7733    }
7734    ///Container type for the return parameters of the [`updateDelay(uint256)`](updateDelayCall) function.
7735    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7736    #[derive(Clone)]
7737    pub struct updateDelayReturn {}
7738    #[allow(
7739        non_camel_case_types,
7740        non_snake_case,
7741        clippy::pub_underscore_fields,
7742        clippy::style
7743    )]
7744    const _: () = {
7745        use alloy::sol_types as alloy_sol_types;
7746        {
7747            #[doc(hidden)]
7748            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7749            #[doc(hidden)]
7750            type UnderlyingRustTuple<'a> = (
7751                alloy::sol_types::private::primitives::aliases::U256,
7752            );
7753            #[cfg(test)]
7754            #[allow(dead_code, unreachable_patterns)]
7755            fn _type_assertion(
7756                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7757            ) {
7758                match _t {
7759                    alloy_sol_types::private::AssertTypeEq::<
7760                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7761                    >(_) => {}
7762                }
7763            }
7764            #[automatically_derived]
7765            #[doc(hidden)]
7766            impl ::core::convert::From<updateDelayCall> for UnderlyingRustTuple<'_> {
7767                fn from(value: updateDelayCall) -> Self {
7768                    (value.newDelay,)
7769                }
7770            }
7771            #[automatically_derived]
7772            #[doc(hidden)]
7773            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayCall {
7774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7775                    Self { newDelay: tuple.0 }
7776                }
7777            }
7778        }
7779        {
7780            #[doc(hidden)]
7781            type UnderlyingSolTuple<'a> = ();
7782            #[doc(hidden)]
7783            type UnderlyingRustTuple<'a> = ();
7784            #[cfg(test)]
7785            #[allow(dead_code, unreachable_patterns)]
7786            fn _type_assertion(
7787                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7788            ) {
7789                match _t {
7790                    alloy_sol_types::private::AssertTypeEq::<
7791                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7792                    >(_) => {}
7793                }
7794            }
7795            #[automatically_derived]
7796            #[doc(hidden)]
7797            impl ::core::convert::From<updateDelayReturn> for UnderlyingRustTuple<'_> {
7798                fn from(value: updateDelayReturn) -> Self {
7799                    ()
7800                }
7801            }
7802            #[automatically_derived]
7803            #[doc(hidden)]
7804            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayReturn {
7805                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7806                    Self {}
7807                }
7808            }
7809        }
7810        impl updateDelayReturn {
7811            fn _tokenize(
7812                &self,
7813            ) -> <updateDelayCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7814                ()
7815            }
7816        }
7817        #[automatically_derived]
7818        impl alloy_sol_types::SolCall for updateDelayCall {
7819            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7820            type Token<'a> = <Self::Parameters<
7821                'a,
7822            > as alloy_sol_types::SolType>::Token<'a>;
7823            type Return = updateDelayReturn;
7824            type ReturnTuple<'a> = ();
7825            type ReturnToken<'a> = <Self::ReturnTuple<
7826                'a,
7827            > as alloy_sol_types::SolType>::Token<'a>;
7828            const SIGNATURE: &'static str = "updateDelay(uint256)";
7829            const SELECTOR: [u8; 4] = [100u8, 214u8, 35u8, 83u8];
7830            #[inline]
7831            fn new<'a>(
7832                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7833            ) -> Self {
7834                tuple.into()
7835            }
7836            #[inline]
7837            fn tokenize(&self) -> Self::Token<'_> {
7838                (
7839                    <alloy::sol_types::sol_data::Uint<
7840                        256,
7841                    > as alloy_sol_types::SolType>::tokenize(&self.newDelay),
7842                )
7843            }
7844            #[inline]
7845            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7846                updateDelayReturn::_tokenize(ret)
7847            }
7848            #[inline]
7849            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7850                <Self::ReturnTuple<
7851                    '_,
7852                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7853                    .map(Into::into)
7854            }
7855            #[inline]
7856            fn abi_decode_returns_validate(
7857                data: &[u8],
7858            ) -> alloy_sol_types::Result<Self::Return> {
7859                <Self::ReturnTuple<
7860                    '_,
7861                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7862                    .map(Into::into)
7863            }
7864        }
7865    };
7866    ///Container for all the [`OpsTimelock`](self) function calls.
7867    #[derive(serde::Serialize, serde::Deserialize)]
7868    #[derive()]
7869    pub enum OpsTimelockCalls {
7870        #[allow(missing_docs)]
7871        CANCELLER_ROLE(CANCELLER_ROLECall),
7872        #[allow(missing_docs)]
7873        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
7874        #[allow(missing_docs)]
7875        EXECUTOR_ROLE(EXECUTOR_ROLECall),
7876        #[allow(missing_docs)]
7877        PROPOSER_ROLE(PROPOSER_ROLECall),
7878        #[allow(missing_docs)]
7879        cancel(cancelCall),
7880        #[allow(missing_docs)]
7881        execute(executeCall),
7882        #[allow(missing_docs)]
7883        executeBatch(executeBatchCall),
7884        #[allow(missing_docs)]
7885        getMinDelay(getMinDelayCall),
7886        #[allow(missing_docs)]
7887        getOperationState(getOperationStateCall),
7888        #[allow(missing_docs)]
7889        getRoleAdmin(getRoleAdminCall),
7890        #[allow(missing_docs)]
7891        getTimestamp(getTimestampCall),
7892        #[allow(missing_docs)]
7893        grantRole(grantRoleCall),
7894        #[allow(missing_docs)]
7895        hasRole(hasRoleCall),
7896        #[allow(missing_docs)]
7897        hashOperation(hashOperationCall),
7898        #[allow(missing_docs)]
7899        hashOperationBatch(hashOperationBatchCall),
7900        #[allow(missing_docs)]
7901        isOperation(isOperationCall),
7902        #[allow(missing_docs)]
7903        isOperationDone(isOperationDoneCall),
7904        #[allow(missing_docs)]
7905        isOperationPending(isOperationPendingCall),
7906        #[allow(missing_docs)]
7907        isOperationReady(isOperationReadyCall),
7908        #[allow(missing_docs)]
7909        onERC1155BatchReceived(onERC1155BatchReceivedCall),
7910        #[allow(missing_docs)]
7911        onERC1155Received(onERC1155ReceivedCall),
7912        #[allow(missing_docs)]
7913        onERC721Received(onERC721ReceivedCall),
7914        #[allow(missing_docs)]
7915        renounceRole(renounceRoleCall),
7916        #[allow(missing_docs)]
7917        revokeRole(revokeRoleCall),
7918        #[allow(missing_docs)]
7919        schedule(scheduleCall),
7920        #[allow(missing_docs)]
7921        scheduleBatch(scheduleBatchCall),
7922        #[allow(missing_docs)]
7923        supportsInterface(supportsInterfaceCall),
7924        #[allow(missing_docs)]
7925        updateDelay(updateDelayCall),
7926    }
7927    #[automatically_derived]
7928    impl OpsTimelockCalls {
7929        /// All the selectors of this enum.
7930        ///
7931        /// Note that the selectors might not be in the same order as the variants.
7932        /// No guarantees are made about the order of the selectors.
7933        ///
7934        /// Prefer using `SolInterface` methods instead.
7935        pub const SELECTORS: &'static [[u8; 4usize]] = &[
7936            [1u8, 213u8, 6u8, 42u8],
7937            [1u8, 255u8, 201u8, 167u8],
7938            [7u8, 189u8, 2u8, 101u8],
7939            [19u8, 64u8, 8u8, 211u8],
7940            [19u8, 188u8, 159u8, 32u8],
7941            [21u8, 11u8, 122u8, 2u8],
7942            [36u8, 138u8, 156u8, 163u8],
7943            [42u8, 176u8, 245u8, 41u8],
7944            [47u8, 47u8, 241u8, 93u8],
7945            [49u8, 213u8, 7u8, 80u8],
7946            [54u8, 86u8, 138u8, 190u8],
7947            [88u8, 75u8, 21u8, 62u8],
7948            [100u8, 214u8, 35u8, 83u8],
7949            [121u8, 88u8, 0u8, 76u8],
7950            [128u8, 101u8, 101u8, 127u8],
7951            [143u8, 42u8, 11u8, 176u8],
7952            [143u8, 97u8, 244u8, 245u8],
7953            [145u8, 209u8, 72u8, 84u8],
7954            [162u8, 23u8, 253u8, 223u8],
7955            [176u8, 142u8, 81u8, 192u8],
7956            [177u8, 197u8, 244u8, 39u8],
7957            [188u8, 25u8, 124u8, 129u8],
7958            [196u8, 210u8, 82u8, 245u8],
7959            [212u8, 92u8, 68u8, 53u8],
7960            [213u8, 71u8, 116u8, 31u8],
7961            [227u8, 131u8, 53u8, 229u8],
7962            [242u8, 58u8, 110u8, 97u8],
7963            [242u8, 122u8, 12u8, 146u8],
7964        ];
7965    }
7966    #[automatically_derived]
7967    impl alloy_sol_types::SolInterface for OpsTimelockCalls {
7968        const NAME: &'static str = "OpsTimelockCalls";
7969        const MIN_DATA_LENGTH: usize = 0usize;
7970        const COUNT: usize = 28usize;
7971        #[inline]
7972        fn selector(&self) -> [u8; 4] {
7973            match self {
7974                Self::CANCELLER_ROLE(_) => {
7975                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7976                }
7977                Self::DEFAULT_ADMIN_ROLE(_) => {
7978                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7979                }
7980                Self::EXECUTOR_ROLE(_) => {
7981                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7982                }
7983                Self::PROPOSER_ROLE(_) => {
7984                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
7985                }
7986                Self::cancel(_) => <cancelCall as alloy_sol_types::SolCall>::SELECTOR,
7987                Self::execute(_) => <executeCall as alloy_sol_types::SolCall>::SELECTOR,
7988                Self::executeBatch(_) => {
7989                    <executeBatchCall as alloy_sol_types::SolCall>::SELECTOR
7990                }
7991                Self::getMinDelay(_) => {
7992                    <getMinDelayCall as alloy_sol_types::SolCall>::SELECTOR
7993                }
7994                Self::getOperationState(_) => {
7995                    <getOperationStateCall as alloy_sol_types::SolCall>::SELECTOR
7996                }
7997                Self::getRoleAdmin(_) => {
7998                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
7999                }
8000                Self::getTimestamp(_) => {
8001                    <getTimestampCall as alloy_sol_types::SolCall>::SELECTOR
8002                }
8003                Self::grantRole(_) => {
8004                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
8005                }
8006                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
8007                Self::hashOperation(_) => {
8008                    <hashOperationCall as alloy_sol_types::SolCall>::SELECTOR
8009                }
8010                Self::hashOperationBatch(_) => {
8011                    <hashOperationBatchCall as alloy_sol_types::SolCall>::SELECTOR
8012                }
8013                Self::isOperation(_) => {
8014                    <isOperationCall as alloy_sol_types::SolCall>::SELECTOR
8015                }
8016                Self::isOperationDone(_) => {
8017                    <isOperationDoneCall as alloy_sol_types::SolCall>::SELECTOR
8018                }
8019                Self::isOperationPending(_) => {
8020                    <isOperationPendingCall as alloy_sol_types::SolCall>::SELECTOR
8021                }
8022                Self::isOperationReady(_) => {
8023                    <isOperationReadyCall as alloy_sol_types::SolCall>::SELECTOR
8024                }
8025                Self::onERC1155BatchReceived(_) => {
8026                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8027                }
8028                Self::onERC1155Received(_) => {
8029                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8030                }
8031                Self::onERC721Received(_) => {
8032                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8033                }
8034                Self::renounceRole(_) => {
8035                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
8036                }
8037                Self::revokeRole(_) => {
8038                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
8039                }
8040                Self::schedule(_) => <scheduleCall as alloy_sol_types::SolCall>::SELECTOR,
8041                Self::scheduleBatch(_) => {
8042                    <scheduleBatchCall as alloy_sol_types::SolCall>::SELECTOR
8043                }
8044                Self::supportsInterface(_) => {
8045                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
8046                }
8047                Self::updateDelay(_) => {
8048                    <updateDelayCall as alloy_sol_types::SolCall>::SELECTOR
8049                }
8050            }
8051        }
8052        #[inline]
8053        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8054            Self::SELECTORS.get(i).copied()
8055        }
8056        #[inline]
8057        fn valid_selector(selector: [u8; 4]) -> bool {
8058            Self::SELECTORS.binary_search(&selector).is_ok()
8059        }
8060        #[inline]
8061        #[allow(non_snake_case)]
8062        fn abi_decode_raw(
8063            selector: [u8; 4],
8064            data: &[u8],
8065        ) -> alloy_sol_types::Result<Self> {
8066            static DECODE_SHIMS: &[fn(
8067                &[u8],
8068            ) -> alloy_sol_types::Result<OpsTimelockCalls>] = &[
8069                {
8070                    fn schedule(
8071                        data: &[u8],
8072                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8073                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8074                            .map(OpsTimelockCalls::schedule)
8075                    }
8076                    schedule
8077                },
8078                {
8079                    fn supportsInterface(
8080                        data: &[u8],
8081                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8082                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
8083                                data,
8084                            )
8085                            .map(OpsTimelockCalls::supportsInterface)
8086                    }
8087                    supportsInterface
8088                },
8089                {
8090                    fn EXECUTOR_ROLE(
8091                        data: &[u8],
8092                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8093                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8094                                data,
8095                            )
8096                            .map(OpsTimelockCalls::EXECUTOR_ROLE)
8097                    }
8098                    EXECUTOR_ROLE
8099                },
8100                {
8101                    fn execute(
8102                        data: &[u8],
8103                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8104                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8105                            .map(OpsTimelockCalls::execute)
8106                    }
8107                    execute
8108                },
8109                {
8110                    fn isOperationReady(
8111                        data: &[u8],
8112                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8113                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw(
8114                                data,
8115                            )
8116                            .map(OpsTimelockCalls::isOperationReady)
8117                    }
8118                    isOperationReady
8119                },
8120                {
8121                    fn onERC721Received(
8122                        data: &[u8],
8123                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8124                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8125                                data,
8126                            )
8127                            .map(OpsTimelockCalls::onERC721Received)
8128                    }
8129                    onERC721Received
8130                },
8131                {
8132                    fn getRoleAdmin(
8133                        data: &[u8],
8134                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8135                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
8136                                data,
8137                            )
8138                            .map(OpsTimelockCalls::getRoleAdmin)
8139                    }
8140                    getRoleAdmin
8141                },
8142                {
8143                    fn isOperationDone(
8144                        data: &[u8],
8145                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8146                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw(
8147                                data,
8148                            )
8149                            .map(OpsTimelockCalls::isOperationDone)
8150                    }
8151                    isOperationDone
8152                },
8153                {
8154                    fn grantRole(
8155                        data: &[u8],
8156                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8157                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8158                            .map(OpsTimelockCalls::grantRole)
8159                    }
8160                    grantRole
8161                },
8162                {
8163                    fn isOperation(
8164                        data: &[u8],
8165                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8166                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
8167                                data,
8168                            )
8169                            .map(OpsTimelockCalls::isOperation)
8170                    }
8171                    isOperation
8172                },
8173                {
8174                    fn renounceRole(
8175                        data: &[u8],
8176                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8177                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8178                                data,
8179                            )
8180                            .map(OpsTimelockCalls::renounceRole)
8181                    }
8182                    renounceRole
8183                },
8184                {
8185                    fn isOperationPending(
8186                        data: &[u8],
8187                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8188                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw(
8189                                data,
8190                            )
8191                            .map(OpsTimelockCalls::isOperationPending)
8192                    }
8193                    isOperationPending
8194                },
8195                {
8196                    fn updateDelay(
8197                        data: &[u8],
8198                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8199                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
8200                                data,
8201                            )
8202                            .map(OpsTimelockCalls::updateDelay)
8203                    }
8204                    updateDelay
8205                },
8206                {
8207                    fn getOperationState(
8208                        data: &[u8],
8209                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8210                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
8211                                data,
8212                            )
8213                            .map(OpsTimelockCalls::getOperationState)
8214                    }
8215                    getOperationState
8216                },
8217                {
8218                    fn hashOperation(
8219                        data: &[u8],
8220                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8221                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
8222                                data,
8223                            )
8224                            .map(OpsTimelockCalls::hashOperation)
8225                    }
8226                    hashOperation
8227                },
8228                {
8229                    fn scheduleBatch(
8230                        data: &[u8],
8231                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8232                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8233                                data,
8234                            )
8235                            .map(OpsTimelockCalls::scheduleBatch)
8236                    }
8237                    scheduleBatch
8238                },
8239                {
8240                    fn PROPOSER_ROLE(
8241                        data: &[u8],
8242                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8243                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8244                                data,
8245                            )
8246                            .map(OpsTimelockCalls::PROPOSER_ROLE)
8247                    }
8248                    PROPOSER_ROLE
8249                },
8250                {
8251                    fn hasRole(
8252                        data: &[u8],
8253                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8254                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8255                            .map(OpsTimelockCalls::hasRole)
8256                    }
8257                    hasRole
8258                },
8259                {
8260                    fn DEFAULT_ADMIN_ROLE(
8261                        data: &[u8],
8262                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8263                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8264                                data,
8265                            )
8266                            .map(OpsTimelockCalls::DEFAULT_ADMIN_ROLE)
8267                    }
8268                    DEFAULT_ADMIN_ROLE
8269                },
8270                {
8271                    fn CANCELLER_ROLE(
8272                        data: &[u8],
8273                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8274                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
8275                                data,
8276                            )
8277                            .map(OpsTimelockCalls::CANCELLER_ROLE)
8278                    }
8279                    CANCELLER_ROLE
8280                },
8281                {
8282                    fn hashOperationBatch(
8283                        data: &[u8],
8284                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8285                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8286                                data,
8287                            )
8288                            .map(OpsTimelockCalls::hashOperationBatch)
8289                    }
8290                    hashOperationBatch
8291                },
8292                {
8293                    fn onERC1155BatchReceived(
8294                        data: &[u8],
8295                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8296                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8297                                data,
8298                            )
8299                            .map(OpsTimelockCalls::onERC1155BatchReceived)
8300                    }
8301                    onERC1155BatchReceived
8302                },
8303                {
8304                    fn cancel(data: &[u8]) -> alloy_sol_types::Result<OpsTimelockCalls> {
8305                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
8306                            .map(OpsTimelockCalls::cancel)
8307                    }
8308                    cancel
8309                },
8310                {
8311                    fn getTimestamp(
8312                        data: &[u8],
8313                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8314                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
8315                                data,
8316                            )
8317                            .map(OpsTimelockCalls::getTimestamp)
8318                    }
8319                    getTimestamp
8320                },
8321                {
8322                    fn revokeRole(
8323                        data: &[u8],
8324                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8325                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
8326                                data,
8327                            )
8328                            .map(OpsTimelockCalls::revokeRole)
8329                    }
8330                    revokeRole
8331                },
8332                {
8333                    fn executeBatch(
8334                        data: &[u8],
8335                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8336                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
8337                                data,
8338                            )
8339                            .map(OpsTimelockCalls::executeBatch)
8340                    }
8341                    executeBatch
8342                },
8343                {
8344                    fn onERC1155Received(
8345                        data: &[u8],
8346                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8347                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
8348                                data,
8349                            )
8350                            .map(OpsTimelockCalls::onERC1155Received)
8351                    }
8352                    onERC1155Received
8353                },
8354                {
8355                    fn getMinDelay(
8356                        data: &[u8],
8357                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8358                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
8359                                data,
8360                            )
8361                            .map(OpsTimelockCalls::getMinDelay)
8362                    }
8363                    getMinDelay
8364                },
8365            ];
8366            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8367                return Err(
8368                    alloy_sol_types::Error::unknown_selector(
8369                        <Self as alloy_sol_types::SolInterface>::NAME,
8370                        selector,
8371                    ),
8372                );
8373            };
8374            DECODE_SHIMS[idx](data)
8375        }
8376        #[inline]
8377        #[allow(non_snake_case)]
8378        fn abi_decode_raw_validate(
8379            selector: [u8; 4],
8380            data: &[u8],
8381        ) -> alloy_sol_types::Result<Self> {
8382            static DECODE_VALIDATE_SHIMS: &[fn(
8383                &[u8],
8384            ) -> alloy_sol_types::Result<OpsTimelockCalls>] = &[
8385                {
8386                    fn schedule(
8387                        data: &[u8],
8388                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8389                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8390                                data,
8391                            )
8392                            .map(OpsTimelockCalls::schedule)
8393                    }
8394                    schedule
8395                },
8396                {
8397                    fn supportsInterface(
8398                        data: &[u8],
8399                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8400                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8401                                data,
8402                            )
8403                            .map(OpsTimelockCalls::supportsInterface)
8404                    }
8405                    supportsInterface
8406                },
8407                {
8408                    fn EXECUTOR_ROLE(
8409                        data: &[u8],
8410                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8411                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8412                                data,
8413                            )
8414                            .map(OpsTimelockCalls::EXECUTOR_ROLE)
8415                    }
8416                    EXECUTOR_ROLE
8417                },
8418                {
8419                    fn execute(
8420                        data: &[u8],
8421                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8422                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8423                                data,
8424                            )
8425                            .map(OpsTimelockCalls::execute)
8426                    }
8427                    execute
8428                },
8429                {
8430                    fn isOperationReady(
8431                        data: &[u8],
8432                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8433                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8434                                data,
8435                            )
8436                            .map(OpsTimelockCalls::isOperationReady)
8437                    }
8438                    isOperationReady
8439                },
8440                {
8441                    fn onERC721Received(
8442                        data: &[u8],
8443                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8444                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8445                                data,
8446                            )
8447                            .map(OpsTimelockCalls::onERC721Received)
8448                    }
8449                    onERC721Received
8450                },
8451                {
8452                    fn getRoleAdmin(
8453                        data: &[u8],
8454                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8455                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8456                                data,
8457                            )
8458                            .map(OpsTimelockCalls::getRoleAdmin)
8459                    }
8460                    getRoleAdmin
8461                },
8462                {
8463                    fn isOperationDone(
8464                        data: &[u8],
8465                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8466                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8467                                data,
8468                            )
8469                            .map(OpsTimelockCalls::isOperationDone)
8470                    }
8471                    isOperationDone
8472                },
8473                {
8474                    fn grantRole(
8475                        data: &[u8],
8476                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8477                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8478                                data,
8479                            )
8480                            .map(OpsTimelockCalls::grantRole)
8481                    }
8482                    grantRole
8483                },
8484                {
8485                    fn isOperation(
8486                        data: &[u8],
8487                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8488                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8489                                data,
8490                            )
8491                            .map(OpsTimelockCalls::isOperation)
8492                    }
8493                    isOperation
8494                },
8495                {
8496                    fn renounceRole(
8497                        data: &[u8],
8498                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8499                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8500                                data,
8501                            )
8502                            .map(OpsTimelockCalls::renounceRole)
8503                    }
8504                    renounceRole
8505                },
8506                {
8507                    fn isOperationPending(
8508                        data: &[u8],
8509                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8510                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8511                                data,
8512                            )
8513                            .map(OpsTimelockCalls::isOperationPending)
8514                    }
8515                    isOperationPending
8516                },
8517                {
8518                    fn updateDelay(
8519                        data: &[u8],
8520                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8521                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8522                                data,
8523                            )
8524                            .map(OpsTimelockCalls::updateDelay)
8525                    }
8526                    updateDelay
8527                },
8528                {
8529                    fn getOperationState(
8530                        data: &[u8],
8531                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8532                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8533                                data,
8534                            )
8535                            .map(OpsTimelockCalls::getOperationState)
8536                    }
8537                    getOperationState
8538                },
8539                {
8540                    fn hashOperation(
8541                        data: &[u8],
8542                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8543                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8544                                data,
8545                            )
8546                            .map(OpsTimelockCalls::hashOperation)
8547                    }
8548                    hashOperation
8549                },
8550                {
8551                    fn scheduleBatch(
8552                        data: &[u8],
8553                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8554                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8555                                data,
8556                            )
8557                            .map(OpsTimelockCalls::scheduleBatch)
8558                    }
8559                    scheduleBatch
8560                },
8561                {
8562                    fn PROPOSER_ROLE(
8563                        data: &[u8],
8564                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8565                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8566                                data,
8567                            )
8568                            .map(OpsTimelockCalls::PROPOSER_ROLE)
8569                    }
8570                    PROPOSER_ROLE
8571                },
8572                {
8573                    fn hasRole(
8574                        data: &[u8],
8575                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8576                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8577                                data,
8578                            )
8579                            .map(OpsTimelockCalls::hasRole)
8580                    }
8581                    hasRole
8582                },
8583                {
8584                    fn DEFAULT_ADMIN_ROLE(
8585                        data: &[u8],
8586                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8587                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8588                                data,
8589                            )
8590                            .map(OpsTimelockCalls::DEFAULT_ADMIN_ROLE)
8591                    }
8592                    DEFAULT_ADMIN_ROLE
8593                },
8594                {
8595                    fn CANCELLER_ROLE(
8596                        data: &[u8],
8597                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8598                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8599                                data,
8600                            )
8601                            .map(OpsTimelockCalls::CANCELLER_ROLE)
8602                    }
8603                    CANCELLER_ROLE
8604                },
8605                {
8606                    fn hashOperationBatch(
8607                        data: &[u8],
8608                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8609                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8610                                data,
8611                            )
8612                            .map(OpsTimelockCalls::hashOperationBatch)
8613                    }
8614                    hashOperationBatch
8615                },
8616                {
8617                    fn onERC1155BatchReceived(
8618                        data: &[u8],
8619                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8620                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8621                                data,
8622                            )
8623                            .map(OpsTimelockCalls::onERC1155BatchReceived)
8624                    }
8625                    onERC1155BatchReceived
8626                },
8627                {
8628                    fn cancel(data: &[u8]) -> alloy_sol_types::Result<OpsTimelockCalls> {
8629                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8630                                data,
8631                            )
8632                            .map(OpsTimelockCalls::cancel)
8633                    }
8634                    cancel
8635                },
8636                {
8637                    fn getTimestamp(
8638                        data: &[u8],
8639                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8640                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8641                                data,
8642                            )
8643                            .map(OpsTimelockCalls::getTimestamp)
8644                    }
8645                    getTimestamp
8646                },
8647                {
8648                    fn revokeRole(
8649                        data: &[u8],
8650                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8651                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8652                                data,
8653                            )
8654                            .map(OpsTimelockCalls::revokeRole)
8655                    }
8656                    revokeRole
8657                },
8658                {
8659                    fn executeBatch(
8660                        data: &[u8],
8661                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8662                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8663                                data,
8664                            )
8665                            .map(OpsTimelockCalls::executeBatch)
8666                    }
8667                    executeBatch
8668                },
8669                {
8670                    fn onERC1155Received(
8671                        data: &[u8],
8672                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8673                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8674                                data,
8675                            )
8676                            .map(OpsTimelockCalls::onERC1155Received)
8677                    }
8678                    onERC1155Received
8679                },
8680                {
8681                    fn getMinDelay(
8682                        data: &[u8],
8683                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8684                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
8685                                data,
8686                            )
8687                            .map(OpsTimelockCalls::getMinDelay)
8688                    }
8689                    getMinDelay
8690                },
8691            ];
8692            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8693                return Err(
8694                    alloy_sol_types::Error::unknown_selector(
8695                        <Self as alloy_sol_types::SolInterface>::NAME,
8696                        selector,
8697                    ),
8698                );
8699            };
8700            DECODE_VALIDATE_SHIMS[idx](data)
8701        }
8702        #[inline]
8703        fn abi_encoded_size(&self) -> usize {
8704            match self {
8705                Self::CANCELLER_ROLE(inner) => {
8706                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8707                        inner,
8708                    )
8709                }
8710                Self::DEFAULT_ADMIN_ROLE(inner) => {
8711                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8712                        inner,
8713                    )
8714                }
8715                Self::EXECUTOR_ROLE(inner) => {
8716                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8717                        inner,
8718                    )
8719                }
8720                Self::PROPOSER_ROLE(inner) => {
8721                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8722                        inner,
8723                    )
8724                }
8725                Self::cancel(inner) => {
8726                    <cancelCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8727                }
8728                Self::execute(inner) => {
8729                    <executeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8730                }
8731                Self::executeBatch(inner) => {
8732                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8733                        inner,
8734                    )
8735                }
8736                Self::getMinDelay(inner) => {
8737                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
8738                        inner,
8739                    )
8740                }
8741                Self::getOperationState(inner) => {
8742                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
8743                        inner,
8744                    )
8745                }
8746                Self::getRoleAdmin(inner) => {
8747                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
8748                        inner,
8749                    )
8750                }
8751                Self::getTimestamp(inner) => {
8752                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
8753                        inner,
8754                    )
8755                }
8756                Self::grantRole(inner) => {
8757                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8758                }
8759                Self::hasRole(inner) => {
8760                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8761                }
8762                Self::hashOperation(inner) => {
8763                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
8764                        inner,
8765                    )
8766                }
8767                Self::hashOperationBatch(inner) => {
8768                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8769                        inner,
8770                    )
8771                }
8772                Self::isOperation(inner) => {
8773                    <isOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
8774                        inner,
8775                    )
8776                }
8777                Self::isOperationDone(inner) => {
8778                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encoded_size(
8779                        inner,
8780                    )
8781                }
8782                Self::isOperationPending(inner) => {
8783                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encoded_size(
8784                        inner,
8785                    )
8786                }
8787                Self::isOperationReady(inner) => {
8788                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encoded_size(
8789                        inner,
8790                    )
8791                }
8792                Self::onERC1155BatchReceived(inner) => {
8793                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8794                        inner,
8795                    )
8796                }
8797                Self::onERC1155Received(inner) => {
8798                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8799                        inner,
8800                    )
8801                }
8802                Self::onERC721Received(inner) => {
8803                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
8804                        inner,
8805                    )
8806                }
8807                Self::renounceRole(inner) => {
8808                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
8809                        inner,
8810                    )
8811                }
8812                Self::revokeRole(inner) => {
8813                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8814                }
8815                Self::schedule(inner) => {
8816                    <scheduleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
8817                }
8818                Self::scheduleBatch(inner) => {
8819                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
8820                        inner,
8821                    )
8822                }
8823                Self::supportsInterface(inner) => {
8824                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
8825                        inner,
8826                    )
8827                }
8828                Self::updateDelay(inner) => {
8829                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
8830                        inner,
8831                    )
8832                }
8833            }
8834        }
8835        #[inline]
8836        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
8837            match self {
8838                Self::CANCELLER_ROLE(inner) => {
8839                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8840                        inner,
8841                        out,
8842                    )
8843                }
8844                Self::DEFAULT_ADMIN_ROLE(inner) => {
8845                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8846                        inner,
8847                        out,
8848                    )
8849                }
8850                Self::EXECUTOR_ROLE(inner) => {
8851                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8852                        inner,
8853                        out,
8854                    )
8855                }
8856                Self::PROPOSER_ROLE(inner) => {
8857                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
8858                        inner,
8859                        out,
8860                    )
8861                }
8862                Self::cancel(inner) => {
8863                    <cancelCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8864                }
8865                Self::execute(inner) => {
8866                    <executeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8867                }
8868                Self::executeBatch(inner) => {
8869                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
8870                        inner,
8871                        out,
8872                    )
8873                }
8874                Self::getMinDelay(inner) => {
8875                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
8876                        inner,
8877                        out,
8878                    )
8879                }
8880                Self::getOperationState(inner) => {
8881                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
8882                        inner,
8883                        out,
8884                    )
8885                }
8886                Self::getRoleAdmin(inner) => {
8887                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
8888                        inner,
8889                        out,
8890                    )
8891                }
8892                Self::getTimestamp(inner) => {
8893                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
8894                        inner,
8895                        out,
8896                    )
8897                }
8898                Self::grantRole(inner) => {
8899                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8900                        inner,
8901                        out,
8902                    )
8903                }
8904                Self::hasRole(inner) => {
8905                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
8906                }
8907                Self::hashOperation(inner) => {
8908                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
8909                        inner,
8910                        out,
8911                    )
8912                }
8913                Self::hashOperationBatch(inner) => {
8914                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
8915                        inner,
8916                        out,
8917                    )
8918                }
8919                Self::isOperation(inner) => {
8920                    <isOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
8921                        inner,
8922                        out,
8923                    )
8924                }
8925                Self::isOperationDone(inner) => {
8926                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encode_raw(
8927                        inner,
8928                        out,
8929                    )
8930                }
8931                Self::isOperationPending(inner) => {
8932                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encode_raw(
8933                        inner,
8934                        out,
8935                    )
8936                }
8937                Self::isOperationReady(inner) => {
8938                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encode_raw(
8939                        inner,
8940                        out,
8941                    )
8942                }
8943                Self::onERC1155BatchReceived(inner) => {
8944                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
8945                        inner,
8946                        out,
8947                    )
8948                }
8949                Self::onERC1155Received(inner) => {
8950                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
8951                        inner,
8952                        out,
8953                    )
8954                }
8955                Self::onERC721Received(inner) => {
8956                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
8957                        inner,
8958                        out,
8959                    )
8960                }
8961                Self::renounceRole(inner) => {
8962                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8963                        inner,
8964                        out,
8965                    )
8966                }
8967                Self::revokeRole(inner) => {
8968                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8969                        inner,
8970                        out,
8971                    )
8972                }
8973                Self::schedule(inner) => {
8974                    <scheduleCall as alloy_sol_types::SolCall>::abi_encode_raw(
8975                        inner,
8976                        out,
8977                    )
8978                }
8979                Self::scheduleBatch(inner) => {
8980                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
8981                        inner,
8982                        out,
8983                    )
8984                }
8985                Self::supportsInterface(inner) => {
8986                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
8987                        inner,
8988                        out,
8989                    )
8990                }
8991                Self::updateDelay(inner) => {
8992                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
8993                        inner,
8994                        out,
8995                    )
8996                }
8997            }
8998        }
8999    }
9000    ///Container for all the [`OpsTimelock`](self) custom errors.
9001    #[derive(serde::Serialize, serde::Deserialize)]
9002    #[derive(Debug, PartialEq, Eq, Hash)]
9003    pub enum OpsTimelockErrors {
9004        #[allow(missing_docs)]
9005        AccessControlBadConfirmation(AccessControlBadConfirmation),
9006        #[allow(missing_docs)]
9007        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
9008        #[allow(missing_docs)]
9009        FailedInnerCall(FailedInnerCall),
9010        #[allow(missing_docs)]
9011        TimelockInsufficientDelay(TimelockInsufficientDelay),
9012        #[allow(missing_docs)]
9013        TimelockInvalidOperationLength(TimelockInvalidOperationLength),
9014        #[allow(missing_docs)]
9015        TimelockUnauthorizedCaller(TimelockUnauthorizedCaller),
9016        #[allow(missing_docs)]
9017        TimelockUnexecutedPredecessor(TimelockUnexecutedPredecessor),
9018        #[allow(missing_docs)]
9019        TimelockUnexpectedOperationState(TimelockUnexpectedOperationState),
9020    }
9021    #[automatically_derived]
9022    impl OpsTimelockErrors {
9023        /// All the selectors of this enum.
9024        ///
9025        /// Note that the selectors might not be in the same order as the variants.
9026        /// No guarantees are made about the order of the selectors.
9027        ///
9028        /// Prefer using `SolInterface` methods instead.
9029        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9030            [20u8, 37u8, 234u8, 66u8],
9031            [84u8, 51u8, 102u8, 9u8],
9032            [94u8, 173u8, 142u8, 181u8],
9033            [102u8, 151u8, 178u8, 50u8],
9034            [144u8, 169u8, 166u8, 24u8],
9035            [226u8, 81u8, 125u8, 63u8],
9036            [226u8, 133u8, 12u8, 89u8],
9037            [255u8, 176u8, 50u8, 17u8],
9038        ];
9039    }
9040    #[automatically_derived]
9041    impl alloy_sol_types::SolInterface for OpsTimelockErrors {
9042        const NAME: &'static str = "OpsTimelockErrors";
9043        const MIN_DATA_LENGTH: usize = 0usize;
9044        const COUNT: usize = 8usize;
9045        #[inline]
9046        fn selector(&self) -> [u8; 4] {
9047            match self {
9048                Self::AccessControlBadConfirmation(_) => {
9049                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
9050                }
9051                Self::AccessControlUnauthorizedAccount(_) => {
9052                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9053                }
9054                Self::FailedInnerCall(_) => {
9055                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9056                }
9057                Self::TimelockInsufficientDelay(_) => {
9058                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::SELECTOR
9059                }
9060                Self::TimelockInvalidOperationLength(_) => {
9061                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::SELECTOR
9062                }
9063                Self::TimelockUnauthorizedCaller(_) => {
9064                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::SELECTOR
9065                }
9066                Self::TimelockUnexecutedPredecessor(_) => {
9067                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::SELECTOR
9068                }
9069                Self::TimelockUnexpectedOperationState(_) => {
9070                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::SELECTOR
9071                }
9072            }
9073        }
9074        #[inline]
9075        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9076            Self::SELECTORS.get(i).copied()
9077        }
9078        #[inline]
9079        fn valid_selector(selector: [u8; 4]) -> bool {
9080            Self::SELECTORS.binary_search(&selector).is_ok()
9081        }
9082        #[inline]
9083        #[allow(non_snake_case)]
9084        fn abi_decode_raw(
9085            selector: [u8; 4],
9086            data: &[u8],
9087        ) -> alloy_sol_types::Result<Self> {
9088            static DECODE_SHIMS: &[fn(
9089                &[u8],
9090            ) -> alloy_sol_types::Result<OpsTimelockErrors>] = &[
9091                {
9092                    fn FailedInnerCall(
9093                        data: &[u8],
9094                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9095                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
9096                                data,
9097                            )
9098                            .map(OpsTimelockErrors::FailedInnerCall)
9099                    }
9100                    FailedInnerCall
9101                },
9102                {
9103                    fn TimelockInsufficientDelay(
9104                        data: &[u8],
9105                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9106                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw(
9107                                data,
9108                            )
9109                            .map(OpsTimelockErrors::TimelockInsufficientDelay)
9110                    }
9111                    TimelockInsufficientDelay
9112                },
9113                {
9114                    fn TimelockUnexpectedOperationState(
9115                        data: &[u8],
9116                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9117                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw(
9118                                data,
9119                            )
9120                            .map(OpsTimelockErrors::TimelockUnexpectedOperationState)
9121                    }
9122                    TimelockUnexpectedOperationState
9123                },
9124                {
9125                    fn AccessControlBadConfirmation(
9126                        data: &[u8],
9127                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9128                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
9129                                data,
9130                            )
9131                            .map(OpsTimelockErrors::AccessControlBadConfirmation)
9132                    }
9133                    AccessControlBadConfirmation
9134                },
9135                {
9136                    fn TimelockUnexecutedPredecessor(
9137                        data: &[u8],
9138                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9139                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw(
9140                                data,
9141                            )
9142                            .map(OpsTimelockErrors::TimelockUnexecutedPredecessor)
9143                    }
9144                    TimelockUnexecutedPredecessor
9145                },
9146                {
9147                    fn AccessControlUnauthorizedAccount(
9148                        data: &[u8],
9149                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9150                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
9151                                data,
9152                            )
9153                            .map(OpsTimelockErrors::AccessControlUnauthorizedAccount)
9154                    }
9155                    AccessControlUnauthorizedAccount
9156                },
9157                {
9158                    fn TimelockUnauthorizedCaller(
9159                        data: &[u8],
9160                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9161                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw(
9162                                data,
9163                            )
9164                            .map(OpsTimelockErrors::TimelockUnauthorizedCaller)
9165                    }
9166                    TimelockUnauthorizedCaller
9167                },
9168                {
9169                    fn TimelockInvalidOperationLength(
9170                        data: &[u8],
9171                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9172                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw(
9173                                data,
9174                            )
9175                            .map(OpsTimelockErrors::TimelockInvalidOperationLength)
9176                    }
9177                    TimelockInvalidOperationLength
9178                },
9179            ];
9180            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9181                return Err(
9182                    alloy_sol_types::Error::unknown_selector(
9183                        <Self as alloy_sol_types::SolInterface>::NAME,
9184                        selector,
9185                    ),
9186                );
9187            };
9188            DECODE_SHIMS[idx](data)
9189        }
9190        #[inline]
9191        #[allow(non_snake_case)]
9192        fn abi_decode_raw_validate(
9193            selector: [u8; 4],
9194            data: &[u8],
9195        ) -> alloy_sol_types::Result<Self> {
9196            static DECODE_VALIDATE_SHIMS: &[fn(
9197                &[u8],
9198            ) -> alloy_sol_types::Result<OpsTimelockErrors>] = &[
9199                {
9200                    fn FailedInnerCall(
9201                        data: &[u8],
9202                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9203                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
9204                                data,
9205                            )
9206                            .map(OpsTimelockErrors::FailedInnerCall)
9207                    }
9208                    FailedInnerCall
9209                },
9210                {
9211                    fn TimelockInsufficientDelay(
9212                        data: &[u8],
9213                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9214                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw_validate(
9215                                data,
9216                            )
9217                            .map(OpsTimelockErrors::TimelockInsufficientDelay)
9218                    }
9219                    TimelockInsufficientDelay
9220                },
9221                {
9222                    fn TimelockUnexpectedOperationState(
9223                        data: &[u8],
9224                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9225                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw_validate(
9226                                data,
9227                            )
9228                            .map(OpsTimelockErrors::TimelockUnexpectedOperationState)
9229                    }
9230                    TimelockUnexpectedOperationState
9231                },
9232                {
9233                    fn AccessControlBadConfirmation(
9234                        data: &[u8],
9235                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9236                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_validate(
9237                                data,
9238                            )
9239                            .map(OpsTimelockErrors::AccessControlBadConfirmation)
9240                    }
9241                    AccessControlBadConfirmation
9242                },
9243                {
9244                    fn TimelockUnexecutedPredecessor(
9245                        data: &[u8],
9246                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9247                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw_validate(
9248                                data,
9249                            )
9250                            .map(OpsTimelockErrors::TimelockUnexecutedPredecessor)
9251                    }
9252                    TimelockUnexecutedPredecessor
9253                },
9254                {
9255                    fn AccessControlUnauthorizedAccount(
9256                        data: &[u8],
9257                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9258                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
9259                                data,
9260                            )
9261                            .map(OpsTimelockErrors::AccessControlUnauthorizedAccount)
9262                    }
9263                    AccessControlUnauthorizedAccount
9264                },
9265                {
9266                    fn TimelockUnauthorizedCaller(
9267                        data: &[u8],
9268                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9269                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw_validate(
9270                                data,
9271                            )
9272                            .map(OpsTimelockErrors::TimelockUnauthorizedCaller)
9273                    }
9274                    TimelockUnauthorizedCaller
9275                },
9276                {
9277                    fn TimelockInvalidOperationLength(
9278                        data: &[u8],
9279                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9280                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw_validate(
9281                                data,
9282                            )
9283                            .map(OpsTimelockErrors::TimelockInvalidOperationLength)
9284                    }
9285                    TimelockInvalidOperationLength
9286                },
9287            ];
9288            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9289                return Err(
9290                    alloy_sol_types::Error::unknown_selector(
9291                        <Self as alloy_sol_types::SolInterface>::NAME,
9292                        selector,
9293                    ),
9294                );
9295            };
9296            DECODE_VALIDATE_SHIMS[idx](data)
9297        }
9298        #[inline]
9299        fn abi_encoded_size(&self) -> usize {
9300            match self {
9301                Self::AccessControlBadConfirmation(inner) => {
9302                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
9303                        inner,
9304                    )
9305                }
9306                Self::AccessControlUnauthorizedAccount(inner) => {
9307                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
9308                        inner,
9309                    )
9310                }
9311                Self::FailedInnerCall(inner) => {
9312                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
9313                        inner,
9314                    )
9315                }
9316                Self::TimelockInsufficientDelay(inner) => {
9317                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encoded_size(
9318                        inner,
9319                    )
9320                }
9321                Self::TimelockInvalidOperationLength(inner) => {
9322                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encoded_size(
9323                        inner,
9324                    )
9325                }
9326                Self::TimelockUnauthorizedCaller(inner) => {
9327                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encoded_size(
9328                        inner,
9329                    )
9330                }
9331                Self::TimelockUnexecutedPredecessor(inner) => {
9332                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encoded_size(
9333                        inner,
9334                    )
9335                }
9336                Self::TimelockUnexpectedOperationState(inner) => {
9337                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encoded_size(
9338                        inner,
9339                    )
9340                }
9341            }
9342        }
9343        #[inline]
9344        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9345            match self {
9346                Self::AccessControlBadConfirmation(inner) => {
9347                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
9348                        inner,
9349                        out,
9350                    )
9351                }
9352                Self::AccessControlUnauthorizedAccount(inner) => {
9353                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
9354                        inner,
9355                        out,
9356                    )
9357                }
9358                Self::FailedInnerCall(inner) => {
9359                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
9360                        inner,
9361                        out,
9362                    )
9363                }
9364                Self::TimelockInsufficientDelay(inner) => {
9365                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encode_raw(
9366                        inner,
9367                        out,
9368                    )
9369                }
9370                Self::TimelockInvalidOperationLength(inner) => {
9371                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encode_raw(
9372                        inner,
9373                        out,
9374                    )
9375                }
9376                Self::TimelockUnauthorizedCaller(inner) => {
9377                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encode_raw(
9378                        inner,
9379                        out,
9380                    )
9381                }
9382                Self::TimelockUnexecutedPredecessor(inner) => {
9383                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encode_raw(
9384                        inner,
9385                        out,
9386                    )
9387                }
9388                Self::TimelockUnexpectedOperationState(inner) => {
9389                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encode_raw(
9390                        inner,
9391                        out,
9392                    )
9393                }
9394            }
9395        }
9396    }
9397    ///Container for all the [`OpsTimelock`](self) events.
9398    #[derive(serde::Serialize, serde::Deserialize)]
9399    #[derive(Debug, PartialEq, Eq, Hash)]
9400    pub enum OpsTimelockEvents {
9401        #[allow(missing_docs)]
9402        CallExecuted(CallExecuted),
9403        #[allow(missing_docs)]
9404        CallSalt(CallSalt),
9405        #[allow(missing_docs)]
9406        CallScheduled(CallScheduled),
9407        #[allow(missing_docs)]
9408        Cancelled(Cancelled),
9409        #[allow(missing_docs)]
9410        MinDelayChange(MinDelayChange),
9411        #[allow(missing_docs)]
9412        RoleAdminChanged(RoleAdminChanged),
9413        #[allow(missing_docs)]
9414        RoleGranted(RoleGranted),
9415        #[allow(missing_docs)]
9416        RoleRevoked(RoleRevoked),
9417    }
9418    #[automatically_derived]
9419    impl OpsTimelockEvents {
9420        /// All the selectors of this enum.
9421        ///
9422        /// Note that the selectors might not be in the same order as the variants.
9423        /// No guarantees are made about the order of the selectors.
9424        ///
9425        /// Prefer using `SolInterface` methods instead.
9426        pub const SELECTORS: &'static [[u8; 32usize]] = &[
9427            [
9428                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
9429                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
9430                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
9431            ],
9432            [
9433                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
9434                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
9435                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
9436            ],
9437            [
9438                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9439                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9440                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9441            ],
9442            [
9443                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
9444                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
9445                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
9446            ],
9447            [
9448                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
9449                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
9450                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
9451            ],
9452            [
9453                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9454                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9455                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9456            ],
9457            [
9458                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
9459                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
9460                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
9461            ],
9462            [
9463                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9464                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9465                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9466            ],
9467        ];
9468    }
9469    #[automatically_derived]
9470    impl alloy_sol_types::SolEventInterface for OpsTimelockEvents {
9471        const NAME: &'static str = "OpsTimelockEvents";
9472        const COUNT: usize = 8usize;
9473        fn decode_raw_log(
9474            topics: &[alloy_sol_types::Word],
9475            data: &[u8],
9476        ) -> alloy_sol_types::Result<Self> {
9477            match topics.first().copied() {
9478                Some(<CallExecuted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9479                    <CallExecuted as alloy_sol_types::SolEvent>::decode_raw_log(
9480                            topics,
9481                            data,
9482                        )
9483                        .map(Self::CallExecuted)
9484                }
9485                Some(<CallSalt as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9486                    <CallSalt as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
9487                        .map(Self::CallSalt)
9488                }
9489                Some(<CallScheduled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9490                    <CallScheduled as alloy_sol_types::SolEvent>::decode_raw_log(
9491                            topics,
9492                            data,
9493                        )
9494                        .map(Self::CallScheduled)
9495                }
9496                Some(<Cancelled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9497                    <Cancelled as alloy_sol_types::SolEvent>::decode_raw_log(
9498                            topics,
9499                            data,
9500                        )
9501                        .map(Self::Cancelled)
9502                }
9503                Some(<MinDelayChange as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9504                    <MinDelayChange as alloy_sol_types::SolEvent>::decode_raw_log(
9505                            topics,
9506                            data,
9507                        )
9508                        .map(Self::MinDelayChange)
9509                }
9510                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9511                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
9512                            topics,
9513                            data,
9514                        )
9515                        .map(Self::RoleAdminChanged)
9516                }
9517                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9518                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
9519                            topics,
9520                            data,
9521                        )
9522                        .map(Self::RoleGranted)
9523                }
9524                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9525                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
9526                            topics,
9527                            data,
9528                        )
9529                        .map(Self::RoleRevoked)
9530                }
9531                _ => {
9532                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
9533                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
9534                        log: alloy_sol_types::private::Box::new(
9535                            alloy_sol_types::private::LogData::new_unchecked(
9536                                topics.to_vec(),
9537                                data.to_vec().into(),
9538                            ),
9539                        ),
9540                    })
9541                }
9542            }
9543        }
9544    }
9545    #[automatically_derived]
9546    impl alloy_sol_types::private::IntoLogData for OpsTimelockEvents {
9547        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9548            match self {
9549                Self::CallExecuted(inner) => {
9550                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9551                }
9552                Self::CallSalt(inner) => {
9553                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9554                }
9555                Self::CallScheduled(inner) => {
9556                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9557                }
9558                Self::Cancelled(inner) => {
9559                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9560                }
9561                Self::MinDelayChange(inner) => {
9562                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9563                }
9564                Self::RoleAdminChanged(inner) => {
9565                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9566                }
9567                Self::RoleGranted(inner) => {
9568                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9569                }
9570                Self::RoleRevoked(inner) => {
9571                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9572                }
9573            }
9574        }
9575        fn into_log_data(self) -> alloy_sol_types::private::LogData {
9576            match self {
9577                Self::CallExecuted(inner) => {
9578                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9579                }
9580                Self::CallSalt(inner) => {
9581                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9582                }
9583                Self::CallScheduled(inner) => {
9584                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9585                }
9586                Self::Cancelled(inner) => {
9587                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9588                }
9589                Self::MinDelayChange(inner) => {
9590                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9591                }
9592                Self::RoleAdminChanged(inner) => {
9593                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9594                }
9595                Self::RoleGranted(inner) => {
9596                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9597                }
9598                Self::RoleRevoked(inner) => {
9599                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
9600                }
9601            }
9602        }
9603    }
9604    use alloy::contract as alloy_contract;
9605    /**Creates a new wrapper around an on-chain [`OpsTimelock`](self) contract instance.
9606
9607See the [wrapper's documentation](`OpsTimelockInstance`) for more details.*/
9608    #[inline]
9609    pub const fn new<
9610        P: alloy_contract::private::Provider<N>,
9611        N: alloy_contract::private::Network,
9612    >(
9613        address: alloy_sol_types::private::Address,
9614        provider: P,
9615    ) -> OpsTimelockInstance<P, N> {
9616        OpsTimelockInstance::<P, N>::new(address, provider)
9617    }
9618    /**Deploys this contract using the given `provider` and constructor arguments, if any.
9619
9620Returns a new instance of the contract, if the deployment was successful.
9621
9622For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
9623    #[inline]
9624    pub fn deploy<
9625        P: alloy_contract::private::Provider<N>,
9626        N: alloy_contract::private::Network,
9627    >(
9628        provider: P,
9629        minDelay: alloy::sol_types::private::primitives::aliases::U256,
9630        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9631        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9632        admin: alloy::sol_types::private::Address,
9633    ) -> impl ::core::future::Future<
9634        Output = alloy_contract::Result<OpsTimelockInstance<P, N>>,
9635    > {
9636        OpsTimelockInstance::<
9637            P,
9638            N,
9639        >::deploy(provider, minDelay, proposers, executors, admin)
9640    }
9641    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
9642and constructor arguments, if any.
9643
9644This is a simple wrapper around creating a `RawCallBuilder` with the data set to
9645the bytecode concatenated with the constructor's ABI-encoded arguments.*/
9646    #[inline]
9647    pub fn deploy_builder<
9648        P: alloy_contract::private::Provider<N>,
9649        N: alloy_contract::private::Network,
9650    >(
9651        provider: P,
9652        minDelay: alloy::sol_types::private::primitives::aliases::U256,
9653        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9654        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9655        admin: alloy::sol_types::private::Address,
9656    ) -> alloy_contract::RawCallBuilder<P, N> {
9657        OpsTimelockInstance::<
9658            P,
9659            N,
9660        >::deploy_builder(provider, minDelay, proposers, executors, admin)
9661    }
9662    /**A [`OpsTimelock`](self) instance.
9663
9664Contains type-safe methods for interacting with an on-chain instance of the
9665[`OpsTimelock`](self) contract located at a given `address`, using a given
9666provider `P`.
9667
9668If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
9669documentation on how to provide it), the `deploy` and `deploy_builder` methods can
9670be used to deploy a new instance of the contract.
9671
9672See the [module-level documentation](self) for all the available methods.*/
9673    #[derive(Clone)]
9674    pub struct OpsTimelockInstance<P, N = alloy_contract::private::Ethereum> {
9675        address: alloy_sol_types::private::Address,
9676        provider: P,
9677        _network: ::core::marker::PhantomData<N>,
9678    }
9679    #[automatically_derived]
9680    impl<P, N> ::core::fmt::Debug for OpsTimelockInstance<P, N> {
9681        #[inline]
9682        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
9683            f.debug_tuple("OpsTimelockInstance").field(&self.address).finish()
9684        }
9685    }
9686    /// Instantiation and getters/setters.
9687    #[automatically_derived]
9688    impl<
9689        P: alloy_contract::private::Provider<N>,
9690        N: alloy_contract::private::Network,
9691    > OpsTimelockInstance<P, N> {
9692        /**Creates a new wrapper around an on-chain [`OpsTimelock`](self) contract instance.
9693
9694See the [wrapper's documentation](`OpsTimelockInstance`) for more details.*/
9695        #[inline]
9696        pub const fn new(
9697            address: alloy_sol_types::private::Address,
9698            provider: P,
9699        ) -> Self {
9700            Self {
9701                address,
9702                provider,
9703                _network: ::core::marker::PhantomData,
9704            }
9705        }
9706        /**Deploys this contract using the given `provider` and constructor arguments, if any.
9707
9708Returns a new instance of the contract, if the deployment was successful.
9709
9710For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
9711        #[inline]
9712        pub async fn deploy(
9713            provider: P,
9714            minDelay: alloy::sol_types::private::primitives::aliases::U256,
9715            proposers: alloy::sol_types::private::Vec<
9716                alloy::sol_types::private::Address,
9717            >,
9718            executors: alloy::sol_types::private::Vec<
9719                alloy::sol_types::private::Address,
9720            >,
9721            admin: alloy::sol_types::private::Address,
9722        ) -> alloy_contract::Result<OpsTimelockInstance<P, N>> {
9723            let call_builder = Self::deploy_builder(
9724                provider,
9725                minDelay,
9726                proposers,
9727                executors,
9728                admin,
9729            );
9730            let contract_address = call_builder.deploy().await?;
9731            Ok(Self::new(contract_address, call_builder.provider))
9732        }
9733        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
9734and constructor arguments, if any.
9735
9736This is a simple wrapper around creating a `RawCallBuilder` with the data set to
9737the bytecode concatenated with the constructor's ABI-encoded arguments.*/
9738        #[inline]
9739        pub fn deploy_builder(
9740            provider: P,
9741            minDelay: alloy::sol_types::private::primitives::aliases::U256,
9742            proposers: alloy::sol_types::private::Vec<
9743                alloy::sol_types::private::Address,
9744            >,
9745            executors: alloy::sol_types::private::Vec<
9746                alloy::sol_types::private::Address,
9747            >,
9748            admin: alloy::sol_types::private::Address,
9749        ) -> alloy_contract::RawCallBuilder<P, N> {
9750            alloy_contract::RawCallBuilder::new_raw_deploy(
9751                provider,
9752                [
9753                    &BYTECODE[..],
9754                    &alloy_sol_types::SolConstructor::abi_encode(
9755                        &constructorCall {
9756                            minDelay,
9757                            proposers,
9758                            executors,
9759                            admin,
9760                        },
9761                    )[..],
9762                ]
9763                    .concat()
9764                    .into(),
9765            )
9766        }
9767        /// Returns a reference to the address.
9768        #[inline]
9769        pub const fn address(&self) -> &alloy_sol_types::private::Address {
9770            &self.address
9771        }
9772        /// Sets the address.
9773        #[inline]
9774        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
9775            self.address = address;
9776        }
9777        /// Sets the address and returns `self`.
9778        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
9779            self.set_address(address);
9780            self
9781        }
9782        /// Returns a reference to the provider.
9783        #[inline]
9784        pub const fn provider(&self) -> &P {
9785            &self.provider
9786        }
9787    }
9788    impl<P: ::core::clone::Clone, N> OpsTimelockInstance<&P, N> {
9789        /// Clones the provider and returns a new instance with the cloned provider.
9790        #[inline]
9791        pub fn with_cloned_provider(self) -> OpsTimelockInstance<P, N> {
9792            OpsTimelockInstance {
9793                address: self.address,
9794                provider: ::core::clone::Clone::clone(&self.provider),
9795                _network: ::core::marker::PhantomData,
9796            }
9797        }
9798    }
9799    /// Function calls.
9800    #[automatically_derived]
9801    impl<
9802        P: alloy_contract::private::Provider<N>,
9803        N: alloy_contract::private::Network,
9804    > OpsTimelockInstance<P, N> {
9805        /// Creates a new call builder using this contract instance's provider and address.
9806        ///
9807        /// Note that the call can be any function call, not just those defined in this
9808        /// contract. Prefer using the other methods for building type-safe contract calls.
9809        pub fn call_builder<C: alloy_sol_types::SolCall>(
9810            &self,
9811            call: &C,
9812        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
9813            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
9814        }
9815        ///Creates a new call builder for the [`CANCELLER_ROLE`] function.
9816        pub fn CANCELLER_ROLE(
9817            &self,
9818        ) -> alloy_contract::SolCallBuilder<&P, CANCELLER_ROLECall, N> {
9819            self.call_builder(&CANCELLER_ROLECall)
9820        }
9821        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
9822        pub fn DEFAULT_ADMIN_ROLE(
9823            &self,
9824        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
9825            self.call_builder(&DEFAULT_ADMIN_ROLECall)
9826        }
9827        ///Creates a new call builder for the [`EXECUTOR_ROLE`] function.
9828        pub fn EXECUTOR_ROLE(
9829            &self,
9830        ) -> alloy_contract::SolCallBuilder<&P, EXECUTOR_ROLECall, N> {
9831            self.call_builder(&EXECUTOR_ROLECall)
9832        }
9833        ///Creates a new call builder for the [`PROPOSER_ROLE`] function.
9834        pub fn PROPOSER_ROLE(
9835            &self,
9836        ) -> alloy_contract::SolCallBuilder<&P, PROPOSER_ROLECall, N> {
9837            self.call_builder(&PROPOSER_ROLECall)
9838        }
9839        ///Creates a new call builder for the [`cancel`] function.
9840        pub fn cancel(
9841            &self,
9842            id: alloy::sol_types::private::FixedBytes<32>,
9843        ) -> alloy_contract::SolCallBuilder<&P, cancelCall, N> {
9844            self.call_builder(&cancelCall { id })
9845        }
9846        ///Creates a new call builder for the [`execute`] function.
9847        pub fn execute(
9848            &self,
9849            target: alloy::sol_types::private::Address,
9850            value: alloy::sol_types::private::primitives::aliases::U256,
9851            payload: alloy::sol_types::private::Bytes,
9852            predecessor: alloy::sol_types::private::FixedBytes<32>,
9853            salt: alloy::sol_types::private::FixedBytes<32>,
9854        ) -> alloy_contract::SolCallBuilder<&P, executeCall, N> {
9855            self.call_builder(
9856                &executeCall {
9857                    target,
9858                    value,
9859                    payload,
9860                    predecessor,
9861                    salt,
9862                },
9863            )
9864        }
9865        ///Creates a new call builder for the [`executeBatch`] function.
9866        pub fn executeBatch(
9867            &self,
9868            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9869            values: alloy::sol_types::private::Vec<
9870                alloy::sol_types::private::primitives::aliases::U256,
9871            >,
9872            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
9873            predecessor: alloy::sol_types::private::FixedBytes<32>,
9874            salt: alloy::sol_types::private::FixedBytes<32>,
9875        ) -> alloy_contract::SolCallBuilder<&P, executeBatchCall, N> {
9876            self.call_builder(
9877                &executeBatchCall {
9878                    targets,
9879                    values,
9880                    payloads,
9881                    predecessor,
9882                    salt,
9883                },
9884            )
9885        }
9886        ///Creates a new call builder for the [`getMinDelay`] function.
9887        pub fn getMinDelay(
9888            &self,
9889        ) -> alloy_contract::SolCallBuilder<&P, getMinDelayCall, N> {
9890            self.call_builder(&getMinDelayCall)
9891        }
9892        ///Creates a new call builder for the [`getOperationState`] function.
9893        pub fn getOperationState(
9894            &self,
9895            id: alloy::sol_types::private::FixedBytes<32>,
9896        ) -> alloy_contract::SolCallBuilder<&P, getOperationStateCall, N> {
9897            self.call_builder(&getOperationStateCall { id })
9898        }
9899        ///Creates a new call builder for the [`getRoleAdmin`] function.
9900        pub fn getRoleAdmin(
9901            &self,
9902            role: alloy::sol_types::private::FixedBytes<32>,
9903        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
9904            self.call_builder(&getRoleAdminCall { role })
9905        }
9906        ///Creates a new call builder for the [`getTimestamp`] function.
9907        pub fn getTimestamp(
9908            &self,
9909            id: alloy::sol_types::private::FixedBytes<32>,
9910        ) -> alloy_contract::SolCallBuilder<&P, getTimestampCall, N> {
9911            self.call_builder(&getTimestampCall { id })
9912        }
9913        ///Creates a new call builder for the [`grantRole`] function.
9914        pub fn grantRole(
9915            &self,
9916            role: alloy::sol_types::private::FixedBytes<32>,
9917            account: alloy::sol_types::private::Address,
9918        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
9919            self.call_builder(&grantRoleCall { role, account })
9920        }
9921        ///Creates a new call builder for the [`hasRole`] function.
9922        pub fn hasRole(
9923            &self,
9924            role: alloy::sol_types::private::FixedBytes<32>,
9925            account: alloy::sol_types::private::Address,
9926        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
9927            self.call_builder(&hasRoleCall { role, account })
9928        }
9929        ///Creates a new call builder for the [`hashOperation`] function.
9930        pub fn hashOperation(
9931            &self,
9932            target: alloy::sol_types::private::Address,
9933            value: alloy::sol_types::private::primitives::aliases::U256,
9934            data: alloy::sol_types::private::Bytes,
9935            predecessor: alloy::sol_types::private::FixedBytes<32>,
9936            salt: alloy::sol_types::private::FixedBytes<32>,
9937        ) -> alloy_contract::SolCallBuilder<&P, hashOperationCall, N> {
9938            self.call_builder(
9939                &hashOperationCall {
9940                    target,
9941                    value,
9942                    data,
9943                    predecessor,
9944                    salt,
9945                },
9946            )
9947        }
9948        ///Creates a new call builder for the [`hashOperationBatch`] function.
9949        pub fn hashOperationBatch(
9950            &self,
9951            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
9952            values: alloy::sol_types::private::Vec<
9953                alloy::sol_types::private::primitives::aliases::U256,
9954            >,
9955            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
9956            predecessor: alloy::sol_types::private::FixedBytes<32>,
9957            salt: alloy::sol_types::private::FixedBytes<32>,
9958        ) -> alloy_contract::SolCallBuilder<&P, hashOperationBatchCall, N> {
9959            self.call_builder(
9960                &hashOperationBatchCall {
9961                    targets,
9962                    values,
9963                    payloads,
9964                    predecessor,
9965                    salt,
9966                },
9967            )
9968        }
9969        ///Creates a new call builder for the [`isOperation`] function.
9970        pub fn isOperation(
9971            &self,
9972            id: alloy::sol_types::private::FixedBytes<32>,
9973        ) -> alloy_contract::SolCallBuilder<&P, isOperationCall, N> {
9974            self.call_builder(&isOperationCall { id })
9975        }
9976        ///Creates a new call builder for the [`isOperationDone`] function.
9977        pub fn isOperationDone(
9978            &self,
9979            id: alloy::sol_types::private::FixedBytes<32>,
9980        ) -> alloy_contract::SolCallBuilder<&P, isOperationDoneCall, N> {
9981            self.call_builder(&isOperationDoneCall { id })
9982        }
9983        ///Creates a new call builder for the [`isOperationPending`] function.
9984        pub fn isOperationPending(
9985            &self,
9986            id: alloy::sol_types::private::FixedBytes<32>,
9987        ) -> alloy_contract::SolCallBuilder<&P, isOperationPendingCall, N> {
9988            self.call_builder(&isOperationPendingCall { id })
9989        }
9990        ///Creates a new call builder for the [`isOperationReady`] function.
9991        pub fn isOperationReady(
9992            &self,
9993            id: alloy::sol_types::private::FixedBytes<32>,
9994        ) -> alloy_contract::SolCallBuilder<&P, isOperationReadyCall, N> {
9995            self.call_builder(&isOperationReadyCall { id })
9996        }
9997        ///Creates a new call builder for the [`onERC1155BatchReceived`] function.
9998        pub fn onERC1155BatchReceived(
9999            &self,
10000            _0: alloy::sol_types::private::Address,
10001            _1: alloy::sol_types::private::Address,
10002            _2: alloy::sol_types::private::Vec<
10003                alloy::sol_types::private::primitives::aliases::U256,
10004            >,
10005            _3: alloy::sol_types::private::Vec<
10006                alloy::sol_types::private::primitives::aliases::U256,
10007            >,
10008            _4: alloy::sol_types::private::Bytes,
10009        ) -> alloy_contract::SolCallBuilder<&P, onERC1155BatchReceivedCall, N> {
10010            self.call_builder(
10011                &onERC1155BatchReceivedCall {
10012                    _0,
10013                    _1,
10014                    _2,
10015                    _3,
10016                    _4,
10017                },
10018            )
10019        }
10020        ///Creates a new call builder for the [`onERC1155Received`] function.
10021        pub fn onERC1155Received(
10022            &self,
10023            _0: alloy::sol_types::private::Address,
10024            _1: alloy::sol_types::private::Address,
10025            _2: alloy::sol_types::private::primitives::aliases::U256,
10026            _3: alloy::sol_types::private::primitives::aliases::U256,
10027            _4: alloy::sol_types::private::Bytes,
10028        ) -> alloy_contract::SolCallBuilder<&P, onERC1155ReceivedCall, N> {
10029            self.call_builder(
10030                &onERC1155ReceivedCall {
10031                    _0,
10032                    _1,
10033                    _2,
10034                    _3,
10035                    _4,
10036                },
10037            )
10038        }
10039        ///Creates a new call builder for the [`onERC721Received`] function.
10040        pub fn onERC721Received(
10041            &self,
10042            _0: alloy::sol_types::private::Address,
10043            _1: alloy::sol_types::private::Address,
10044            _2: alloy::sol_types::private::primitives::aliases::U256,
10045            _3: alloy::sol_types::private::Bytes,
10046        ) -> alloy_contract::SolCallBuilder<&P, onERC721ReceivedCall, N> {
10047            self.call_builder(
10048                &onERC721ReceivedCall {
10049                    _0,
10050                    _1,
10051                    _2,
10052                    _3,
10053                },
10054            )
10055        }
10056        ///Creates a new call builder for the [`renounceRole`] function.
10057        pub fn renounceRole(
10058            &self,
10059            role: alloy::sol_types::private::FixedBytes<32>,
10060            callerConfirmation: alloy::sol_types::private::Address,
10061        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
10062            self.call_builder(
10063                &renounceRoleCall {
10064                    role,
10065                    callerConfirmation,
10066                },
10067            )
10068        }
10069        ///Creates a new call builder for the [`revokeRole`] function.
10070        pub fn revokeRole(
10071            &self,
10072            role: alloy::sol_types::private::FixedBytes<32>,
10073            account: alloy::sol_types::private::Address,
10074        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
10075            self.call_builder(&revokeRoleCall { role, account })
10076        }
10077        ///Creates a new call builder for the [`schedule`] function.
10078        pub fn schedule(
10079            &self,
10080            target: alloy::sol_types::private::Address,
10081            value: alloy::sol_types::private::primitives::aliases::U256,
10082            data: alloy::sol_types::private::Bytes,
10083            predecessor: alloy::sol_types::private::FixedBytes<32>,
10084            salt: alloy::sol_types::private::FixedBytes<32>,
10085            delay: alloy::sol_types::private::primitives::aliases::U256,
10086        ) -> alloy_contract::SolCallBuilder<&P, scheduleCall, N> {
10087            self.call_builder(
10088                &scheduleCall {
10089                    target,
10090                    value,
10091                    data,
10092                    predecessor,
10093                    salt,
10094                    delay,
10095                },
10096            )
10097        }
10098        ///Creates a new call builder for the [`scheduleBatch`] function.
10099        pub fn scheduleBatch(
10100            &self,
10101            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10102            values: alloy::sol_types::private::Vec<
10103                alloy::sol_types::private::primitives::aliases::U256,
10104            >,
10105            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10106            predecessor: alloy::sol_types::private::FixedBytes<32>,
10107            salt: alloy::sol_types::private::FixedBytes<32>,
10108            delay: alloy::sol_types::private::primitives::aliases::U256,
10109        ) -> alloy_contract::SolCallBuilder<&P, scheduleBatchCall, N> {
10110            self.call_builder(
10111                &scheduleBatchCall {
10112                    targets,
10113                    values,
10114                    payloads,
10115                    predecessor,
10116                    salt,
10117                    delay,
10118                },
10119            )
10120        }
10121        ///Creates a new call builder for the [`supportsInterface`] function.
10122        pub fn supportsInterface(
10123            &self,
10124            interfaceId: alloy::sol_types::private::FixedBytes<4>,
10125        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
10126            self.call_builder(
10127                &supportsInterfaceCall {
10128                    interfaceId,
10129                },
10130            )
10131        }
10132        ///Creates a new call builder for the [`updateDelay`] function.
10133        pub fn updateDelay(
10134            &self,
10135            newDelay: alloy::sol_types::private::primitives::aliases::U256,
10136        ) -> alloy_contract::SolCallBuilder<&P, updateDelayCall, N> {
10137            self.call_builder(&updateDelayCall { newDelay })
10138        }
10139    }
10140    /// Event filters.
10141    #[automatically_derived]
10142    impl<
10143        P: alloy_contract::private::Provider<N>,
10144        N: alloy_contract::private::Network,
10145    > OpsTimelockInstance<P, N> {
10146        /// Creates a new event filter using this contract instance's provider and address.
10147        ///
10148        /// Note that the type can be any event, not just those defined in this contract.
10149        /// Prefer using the other methods for building type-safe event filters.
10150        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10151            &self,
10152        ) -> alloy_contract::Event<&P, E, N> {
10153            alloy_contract::Event::new_sol(&self.provider, &self.address)
10154        }
10155        ///Creates a new event filter for the [`CallExecuted`] event.
10156        pub fn CallExecuted_filter(&self) -> alloy_contract::Event<&P, CallExecuted, N> {
10157            self.event_filter::<CallExecuted>()
10158        }
10159        ///Creates a new event filter for the [`CallSalt`] event.
10160        pub fn CallSalt_filter(&self) -> alloy_contract::Event<&P, CallSalt, N> {
10161            self.event_filter::<CallSalt>()
10162        }
10163        ///Creates a new event filter for the [`CallScheduled`] event.
10164        pub fn CallScheduled_filter(
10165            &self,
10166        ) -> alloy_contract::Event<&P, CallScheduled, N> {
10167            self.event_filter::<CallScheduled>()
10168        }
10169        ///Creates a new event filter for the [`Cancelled`] event.
10170        pub fn Cancelled_filter(&self) -> alloy_contract::Event<&P, Cancelled, N> {
10171            self.event_filter::<Cancelled>()
10172        }
10173        ///Creates a new event filter for the [`MinDelayChange`] event.
10174        pub fn MinDelayChange_filter(
10175            &self,
10176        ) -> alloy_contract::Event<&P, MinDelayChange, N> {
10177            self.event_filter::<MinDelayChange>()
10178        }
10179        ///Creates a new event filter for the [`RoleAdminChanged`] event.
10180        pub fn RoleAdminChanged_filter(
10181            &self,
10182        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
10183            self.event_filter::<RoleAdminChanged>()
10184        }
10185        ///Creates a new event filter for the [`RoleGranted`] event.
10186        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
10187            self.event_filter::<RoleGranted>()
10188        }
10189        ///Creates a new event filter for the [`RoleRevoked`] event.
10190        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
10191            self.event_filter::<RoleRevoked>()
10192        }
10193    }
10194}