Skip to main content

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        impl OperationState {
62            /// The Solidity type name.
63            pub const NAME: &'static str = stringify!(OperationState);
64            /// Convert from the underlying value type.
65            #[inline]
66            pub const fn from_underlying(value: u8) -> Self {
67                Self(value)
68            }
69            /// Return the underlying value.
70            #[inline]
71            pub const fn into_underlying(self) -> u8 {
72                self.0
73            }
74            /// Return the single encoding of this value, delegating to the
75            /// underlying type.
76            #[inline]
77            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
78                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
79            }
80            /// Return the packed encoding of this value, delegating to the
81            /// underlying type.
82            #[inline]
83            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
84                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
85            }
86        }
87        #[automatically_derived]
88        impl From<u8> for OperationState {
89            fn from(value: u8) -> Self {
90                Self::from_underlying(value)
91            }
92        }
93        #[automatically_derived]
94        impl From<OperationState> for u8 {
95            fn from(value: OperationState) -> Self {
96                value.into_underlying()
97            }
98        }
99        #[automatically_derived]
100        impl alloy_sol_types::SolType for OperationState {
101            type RustType = u8;
102            type Token<'a> = <alloy::sol_types::sol_data::Uint<
103                8,
104            > as alloy_sol_types::SolType>::Token<'a>;
105            const SOL_NAME: &'static str = Self::NAME;
106            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
107                8,
108            > as alloy_sol_types::SolType>::ENCODED_SIZE;
109            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
110                8,
111            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
112            #[inline]
113            fn valid_token(token: &Self::Token<'_>) -> bool {
114                Self::type_check(token).is_ok()
115            }
116            #[inline]
117            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
118                <alloy::sol_types::sol_data::Uint<
119                    8,
120                > as alloy_sol_types::SolType>::type_check(token)
121            }
122            #[inline]
123            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
124                <alloy::sol_types::sol_data::Uint<
125                    8,
126                > as alloy_sol_types::SolType>::detokenize(token)
127            }
128        }
129        #[automatically_derived]
130        impl alloy_sol_types::EventTopic for OperationState {
131            #[inline]
132            fn topic_preimage_length(rust: &Self::RustType) -> usize {
133                <alloy::sol_types::sol_data::Uint<
134                    8,
135                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
136            }
137            #[inline]
138            fn encode_topic_preimage(
139                rust: &Self::RustType,
140                out: &mut alloy_sol_types::private::Vec<u8>,
141            ) {
142                <alloy::sol_types::sol_data::Uint<
143                    8,
144                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
145            }
146            #[inline]
147            fn encode_topic(
148                rust: &Self::RustType,
149            ) -> alloy_sol_types::abi::token::WordToken {
150                <alloy::sol_types::sol_data::Uint<
151                    8,
152                > as alloy_sol_types::EventTopic>::encode_topic(rust)
153            }
154        }
155    };
156    use alloy::contract as alloy_contract;
157    /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
158
159See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
160    #[inline]
161    pub const fn new<
162        P: alloy_contract::private::Provider<N>,
163        N: alloy_contract::private::Network,
164    >(
165        address: alloy_sol_types::private::Address,
166        __provider: P,
167    ) -> TimelockControllerInstance<P, N> {
168        TimelockControllerInstance::<P, N>::new(address, __provider)
169    }
170    /**A [`TimelockController`](self) instance.
171
172Contains type-safe methods for interacting with an on-chain instance of the
173[`TimelockController`](self) contract located at a given `address`, using a given
174provider `P`.
175
176If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
177documentation on how to provide it), the `deploy` and `deploy_builder` methods can
178be used to deploy a new instance of the contract.
179
180See the [module-level documentation](self) for all the available methods.*/
181    #[derive(Clone)]
182    pub struct TimelockControllerInstance<P, N = alloy_contract::private::Ethereum> {
183        address: alloy_sol_types::private::Address,
184        provider: P,
185        _network: ::core::marker::PhantomData<N>,
186    }
187    #[automatically_derived]
188    impl<P, N> ::core::fmt::Debug for TimelockControllerInstance<P, N> {
189        #[inline]
190        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
191            f.debug_tuple("TimelockControllerInstance").field(&self.address).finish()
192        }
193    }
194    /// Instantiation and getters/setters.
195    impl<
196        P: alloy_contract::private::Provider<N>,
197        N: alloy_contract::private::Network,
198    > TimelockControllerInstance<P, N> {
199        /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
200
201See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
202        #[inline]
203        pub const fn new(
204            address: alloy_sol_types::private::Address,
205            __provider: P,
206        ) -> Self {
207            Self {
208                address,
209                provider: __provider,
210                _network: ::core::marker::PhantomData,
211            }
212        }
213        /// Returns a reference to the address.
214        #[inline]
215        pub const fn address(&self) -> &alloy_sol_types::private::Address {
216            &self.address
217        }
218        /// Sets the address.
219        #[inline]
220        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
221            self.address = address;
222        }
223        /// Sets the address and returns `self`.
224        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
225            self.set_address(address);
226            self
227        }
228        /// Returns a reference to the provider.
229        #[inline]
230        pub const fn provider(&self) -> &P {
231            &self.provider
232        }
233    }
234    impl<P: ::core::clone::Clone, N> TimelockControllerInstance<&P, N> {
235        /// Clones the provider and returns a new instance with the cloned provider.
236        #[inline]
237        pub fn with_cloned_provider(self) -> TimelockControllerInstance<P, N> {
238            TimelockControllerInstance {
239                address: self.address,
240                provider: ::core::clone::Clone::clone(&self.provider),
241                _network: ::core::marker::PhantomData,
242            }
243        }
244    }
245    /// Function calls.
246    impl<
247        P: alloy_contract::private::Provider<N>,
248        N: alloy_contract::private::Network,
249    > TimelockControllerInstance<P, N> {
250        /// Creates a new call builder using this contract instance's provider and address.
251        ///
252        /// Note that the call can be any function call, not just those defined in this
253        /// contract. Prefer using the other methods for building type-safe contract calls.
254        pub fn call_builder<C: alloy_sol_types::SolCall>(
255            &self,
256            call: &C,
257        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
258            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
259        }
260    }
261    /// Event filters.
262    impl<
263        P: alloy_contract::private::Provider<N>,
264        N: alloy_contract::private::Network,
265    > TimelockControllerInstance<P, N> {
266        /// Creates a new event filter using this contract instance's provider and address.
267        ///
268        /// Note that the type can be any event, not just those defined in this contract.
269        /// Prefer using the other methods for building type-safe event filters.
270        pub fn event_filter<E: alloy_sol_types::SolEvent>(
271            &self,
272        ) -> alloy_contract::Event<&P, E, N> {
273            alloy_contract::Event::new_sol(&self.provider, &self.address)
274        }
275    }
276}
277/**
278
279Generated by the following Solidity interface...
280```solidity
281library TimelockController {
282    type OperationState is uint8;
283}
284
285interface OpsTimelock {
286    error AccessControlBadConfirmation();
287    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
288    error FailedInnerCall();
289    error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
290    error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
291    error TimelockUnauthorizedCaller(address caller);
292    error TimelockUnexecutedPredecessor(bytes32 predecessorId);
293    error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
294
295    event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
296    event CallSalt(bytes32 indexed id, bytes32 salt);
297    event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
298    event Cancelled(bytes32 indexed id);
299    event MinDelayChange(uint256 oldDuration, uint256 newDuration);
300    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
301    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
302    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
303
304    constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
305
306    receive() external payable;
307
308    function CANCELLER_ROLE() external view returns (bytes32);
309    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
310    function EXECUTOR_ROLE() external view returns (bytes32);
311    function PROPOSER_ROLE() external view returns (bytes32);
312    function cancel(bytes32 id) external;
313    function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
314    function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
315    function getMinDelay() external view returns (uint256);
316    function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
317    function getRoleAdmin(bytes32 role) external view returns (bytes32);
318    function getTimestamp(bytes32 id) external view returns (uint256);
319    function grantRole(bytes32 role, address account) external;
320    function hasRole(bytes32 role, address account) external view returns (bool);
321    function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
322    function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
323    function isOperation(bytes32 id) external view returns (bool);
324    function isOperationDone(bytes32 id) external view returns (bool);
325    function isOperationPending(bytes32 id) external view returns (bool);
326    function isOperationReady(bytes32 id) external view returns (bool);
327    function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
328    function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
329    function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
330    function renounceRole(bytes32 role, address callerConfirmation) external;
331    function revokeRole(bytes32 role, address account) external;
332    function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
333    function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
334    function supportsInterface(bytes4 interfaceId) external view returns (bool);
335    function updateDelay(uint256 newDelay) external;
336}
337```
338
339...which was generated by the following JSON ABI:
340```json
341[
342  {
343    "type": "constructor",
344    "inputs": [
345      {
346        "name": "minDelay",
347        "type": "uint256",
348        "internalType": "uint256"
349      },
350      {
351        "name": "proposers",
352        "type": "address[]",
353        "internalType": "address[]"
354      },
355      {
356        "name": "executors",
357        "type": "address[]",
358        "internalType": "address[]"
359      },
360      {
361        "name": "admin",
362        "type": "address",
363        "internalType": "address"
364      }
365    ],
366    "stateMutability": "nonpayable"
367  },
368  {
369    "type": "receive",
370    "stateMutability": "payable"
371  },
372  {
373    "type": "function",
374    "name": "CANCELLER_ROLE",
375    "inputs": [],
376    "outputs": [
377      {
378        "name": "",
379        "type": "bytes32",
380        "internalType": "bytes32"
381      }
382    ],
383    "stateMutability": "view"
384  },
385  {
386    "type": "function",
387    "name": "DEFAULT_ADMIN_ROLE",
388    "inputs": [],
389    "outputs": [
390      {
391        "name": "",
392        "type": "bytes32",
393        "internalType": "bytes32"
394      }
395    ],
396    "stateMutability": "view"
397  },
398  {
399    "type": "function",
400    "name": "EXECUTOR_ROLE",
401    "inputs": [],
402    "outputs": [
403      {
404        "name": "",
405        "type": "bytes32",
406        "internalType": "bytes32"
407      }
408    ],
409    "stateMutability": "view"
410  },
411  {
412    "type": "function",
413    "name": "PROPOSER_ROLE",
414    "inputs": [],
415    "outputs": [
416      {
417        "name": "",
418        "type": "bytes32",
419        "internalType": "bytes32"
420      }
421    ],
422    "stateMutability": "view"
423  },
424  {
425    "type": "function",
426    "name": "cancel",
427    "inputs": [
428      {
429        "name": "id",
430        "type": "bytes32",
431        "internalType": "bytes32"
432      }
433    ],
434    "outputs": [],
435    "stateMutability": "nonpayable"
436  },
437  {
438    "type": "function",
439    "name": "execute",
440    "inputs": [
441      {
442        "name": "target",
443        "type": "address",
444        "internalType": "address"
445      },
446      {
447        "name": "value",
448        "type": "uint256",
449        "internalType": "uint256"
450      },
451      {
452        "name": "payload",
453        "type": "bytes",
454        "internalType": "bytes"
455      },
456      {
457        "name": "predecessor",
458        "type": "bytes32",
459        "internalType": "bytes32"
460      },
461      {
462        "name": "salt",
463        "type": "bytes32",
464        "internalType": "bytes32"
465      }
466    ],
467    "outputs": [],
468    "stateMutability": "payable"
469  },
470  {
471    "type": "function",
472    "name": "executeBatch",
473    "inputs": [
474      {
475        "name": "targets",
476        "type": "address[]",
477        "internalType": "address[]"
478      },
479      {
480        "name": "values",
481        "type": "uint256[]",
482        "internalType": "uint256[]"
483      },
484      {
485        "name": "payloads",
486        "type": "bytes[]",
487        "internalType": "bytes[]"
488      },
489      {
490        "name": "predecessor",
491        "type": "bytes32",
492        "internalType": "bytes32"
493      },
494      {
495        "name": "salt",
496        "type": "bytes32",
497        "internalType": "bytes32"
498      }
499    ],
500    "outputs": [],
501    "stateMutability": "payable"
502  },
503  {
504    "type": "function",
505    "name": "getMinDelay",
506    "inputs": [],
507    "outputs": [
508      {
509        "name": "",
510        "type": "uint256",
511        "internalType": "uint256"
512      }
513    ],
514    "stateMutability": "view"
515  },
516  {
517    "type": "function",
518    "name": "getOperationState",
519    "inputs": [
520      {
521        "name": "id",
522        "type": "bytes32",
523        "internalType": "bytes32"
524      }
525    ],
526    "outputs": [
527      {
528        "name": "",
529        "type": "uint8",
530        "internalType": "enum TimelockController.OperationState"
531      }
532    ],
533    "stateMutability": "view"
534  },
535  {
536    "type": "function",
537    "name": "getRoleAdmin",
538    "inputs": [
539      {
540        "name": "role",
541        "type": "bytes32",
542        "internalType": "bytes32"
543      }
544    ],
545    "outputs": [
546      {
547        "name": "",
548        "type": "bytes32",
549        "internalType": "bytes32"
550      }
551    ],
552    "stateMutability": "view"
553  },
554  {
555    "type": "function",
556    "name": "getTimestamp",
557    "inputs": [
558      {
559        "name": "id",
560        "type": "bytes32",
561        "internalType": "bytes32"
562      }
563    ],
564    "outputs": [
565      {
566        "name": "",
567        "type": "uint256",
568        "internalType": "uint256"
569      }
570    ],
571    "stateMutability": "view"
572  },
573  {
574    "type": "function",
575    "name": "grantRole",
576    "inputs": [
577      {
578        "name": "role",
579        "type": "bytes32",
580        "internalType": "bytes32"
581      },
582      {
583        "name": "account",
584        "type": "address",
585        "internalType": "address"
586      }
587    ],
588    "outputs": [],
589    "stateMutability": "nonpayable"
590  },
591  {
592    "type": "function",
593    "name": "hasRole",
594    "inputs": [
595      {
596        "name": "role",
597        "type": "bytes32",
598        "internalType": "bytes32"
599      },
600      {
601        "name": "account",
602        "type": "address",
603        "internalType": "address"
604      }
605    ],
606    "outputs": [
607      {
608        "name": "",
609        "type": "bool",
610        "internalType": "bool"
611      }
612    ],
613    "stateMutability": "view"
614  },
615  {
616    "type": "function",
617    "name": "hashOperation",
618    "inputs": [
619      {
620        "name": "target",
621        "type": "address",
622        "internalType": "address"
623      },
624      {
625        "name": "value",
626        "type": "uint256",
627        "internalType": "uint256"
628      },
629      {
630        "name": "data",
631        "type": "bytes",
632        "internalType": "bytes"
633      },
634      {
635        "name": "predecessor",
636        "type": "bytes32",
637        "internalType": "bytes32"
638      },
639      {
640        "name": "salt",
641        "type": "bytes32",
642        "internalType": "bytes32"
643      }
644    ],
645    "outputs": [
646      {
647        "name": "",
648        "type": "bytes32",
649        "internalType": "bytes32"
650      }
651    ],
652    "stateMutability": "pure"
653  },
654  {
655    "type": "function",
656    "name": "hashOperationBatch",
657    "inputs": [
658      {
659        "name": "targets",
660        "type": "address[]",
661        "internalType": "address[]"
662      },
663      {
664        "name": "values",
665        "type": "uint256[]",
666        "internalType": "uint256[]"
667      },
668      {
669        "name": "payloads",
670        "type": "bytes[]",
671        "internalType": "bytes[]"
672      },
673      {
674        "name": "predecessor",
675        "type": "bytes32",
676        "internalType": "bytes32"
677      },
678      {
679        "name": "salt",
680        "type": "bytes32",
681        "internalType": "bytes32"
682      }
683    ],
684    "outputs": [
685      {
686        "name": "",
687        "type": "bytes32",
688        "internalType": "bytes32"
689      }
690    ],
691    "stateMutability": "pure"
692  },
693  {
694    "type": "function",
695    "name": "isOperation",
696    "inputs": [
697      {
698        "name": "id",
699        "type": "bytes32",
700        "internalType": "bytes32"
701      }
702    ],
703    "outputs": [
704      {
705        "name": "",
706        "type": "bool",
707        "internalType": "bool"
708      }
709    ],
710    "stateMutability": "view"
711  },
712  {
713    "type": "function",
714    "name": "isOperationDone",
715    "inputs": [
716      {
717        "name": "id",
718        "type": "bytes32",
719        "internalType": "bytes32"
720      }
721    ],
722    "outputs": [
723      {
724        "name": "",
725        "type": "bool",
726        "internalType": "bool"
727      }
728    ],
729    "stateMutability": "view"
730  },
731  {
732    "type": "function",
733    "name": "isOperationPending",
734    "inputs": [
735      {
736        "name": "id",
737        "type": "bytes32",
738        "internalType": "bytes32"
739      }
740    ],
741    "outputs": [
742      {
743        "name": "",
744        "type": "bool",
745        "internalType": "bool"
746      }
747    ],
748    "stateMutability": "view"
749  },
750  {
751    "type": "function",
752    "name": "isOperationReady",
753    "inputs": [
754      {
755        "name": "id",
756        "type": "bytes32",
757        "internalType": "bytes32"
758      }
759    ],
760    "outputs": [
761      {
762        "name": "",
763        "type": "bool",
764        "internalType": "bool"
765      }
766    ],
767    "stateMutability": "view"
768  },
769  {
770    "type": "function",
771    "name": "onERC1155BatchReceived",
772    "inputs": [
773      {
774        "name": "",
775        "type": "address",
776        "internalType": "address"
777      },
778      {
779        "name": "",
780        "type": "address",
781        "internalType": "address"
782      },
783      {
784        "name": "",
785        "type": "uint256[]",
786        "internalType": "uint256[]"
787      },
788      {
789        "name": "",
790        "type": "uint256[]",
791        "internalType": "uint256[]"
792      },
793      {
794        "name": "",
795        "type": "bytes",
796        "internalType": "bytes"
797      }
798    ],
799    "outputs": [
800      {
801        "name": "",
802        "type": "bytes4",
803        "internalType": "bytes4"
804      }
805    ],
806    "stateMutability": "nonpayable"
807  },
808  {
809    "type": "function",
810    "name": "onERC1155Received",
811    "inputs": [
812      {
813        "name": "",
814        "type": "address",
815        "internalType": "address"
816      },
817      {
818        "name": "",
819        "type": "address",
820        "internalType": "address"
821      },
822      {
823        "name": "",
824        "type": "uint256",
825        "internalType": "uint256"
826      },
827      {
828        "name": "",
829        "type": "uint256",
830        "internalType": "uint256"
831      },
832      {
833        "name": "",
834        "type": "bytes",
835        "internalType": "bytes"
836      }
837    ],
838    "outputs": [
839      {
840        "name": "",
841        "type": "bytes4",
842        "internalType": "bytes4"
843      }
844    ],
845    "stateMutability": "nonpayable"
846  },
847  {
848    "type": "function",
849    "name": "onERC721Received",
850    "inputs": [
851      {
852        "name": "",
853        "type": "address",
854        "internalType": "address"
855      },
856      {
857        "name": "",
858        "type": "address",
859        "internalType": "address"
860      },
861      {
862        "name": "",
863        "type": "uint256",
864        "internalType": "uint256"
865      },
866      {
867        "name": "",
868        "type": "bytes",
869        "internalType": "bytes"
870      }
871    ],
872    "outputs": [
873      {
874        "name": "",
875        "type": "bytes4",
876        "internalType": "bytes4"
877      }
878    ],
879    "stateMutability": "nonpayable"
880  },
881  {
882    "type": "function",
883    "name": "renounceRole",
884    "inputs": [
885      {
886        "name": "role",
887        "type": "bytes32",
888        "internalType": "bytes32"
889      },
890      {
891        "name": "callerConfirmation",
892        "type": "address",
893        "internalType": "address"
894      }
895    ],
896    "outputs": [],
897    "stateMutability": "nonpayable"
898  },
899  {
900    "type": "function",
901    "name": "revokeRole",
902    "inputs": [
903      {
904        "name": "role",
905        "type": "bytes32",
906        "internalType": "bytes32"
907      },
908      {
909        "name": "account",
910        "type": "address",
911        "internalType": "address"
912      }
913    ],
914    "outputs": [],
915    "stateMutability": "nonpayable"
916  },
917  {
918    "type": "function",
919    "name": "schedule",
920    "inputs": [
921      {
922        "name": "target",
923        "type": "address",
924        "internalType": "address"
925      },
926      {
927        "name": "value",
928        "type": "uint256",
929        "internalType": "uint256"
930      },
931      {
932        "name": "data",
933        "type": "bytes",
934        "internalType": "bytes"
935      },
936      {
937        "name": "predecessor",
938        "type": "bytes32",
939        "internalType": "bytes32"
940      },
941      {
942        "name": "salt",
943        "type": "bytes32",
944        "internalType": "bytes32"
945      },
946      {
947        "name": "delay",
948        "type": "uint256",
949        "internalType": "uint256"
950      }
951    ],
952    "outputs": [],
953    "stateMutability": "nonpayable"
954  },
955  {
956    "type": "function",
957    "name": "scheduleBatch",
958    "inputs": [
959      {
960        "name": "targets",
961        "type": "address[]",
962        "internalType": "address[]"
963      },
964      {
965        "name": "values",
966        "type": "uint256[]",
967        "internalType": "uint256[]"
968      },
969      {
970        "name": "payloads",
971        "type": "bytes[]",
972        "internalType": "bytes[]"
973      },
974      {
975        "name": "predecessor",
976        "type": "bytes32",
977        "internalType": "bytes32"
978      },
979      {
980        "name": "salt",
981        "type": "bytes32",
982        "internalType": "bytes32"
983      },
984      {
985        "name": "delay",
986        "type": "uint256",
987        "internalType": "uint256"
988      }
989    ],
990    "outputs": [],
991    "stateMutability": "nonpayable"
992  },
993  {
994    "type": "function",
995    "name": "supportsInterface",
996    "inputs": [
997      {
998        "name": "interfaceId",
999        "type": "bytes4",
1000        "internalType": "bytes4"
1001      }
1002    ],
1003    "outputs": [
1004      {
1005        "name": "",
1006        "type": "bool",
1007        "internalType": "bool"
1008      }
1009    ],
1010    "stateMutability": "view"
1011  },
1012  {
1013    "type": "function",
1014    "name": "updateDelay",
1015    "inputs": [
1016      {
1017        "name": "newDelay",
1018        "type": "uint256",
1019        "internalType": "uint256"
1020      }
1021    ],
1022    "outputs": [],
1023    "stateMutability": "nonpayable"
1024  },
1025  {
1026    "type": "event",
1027    "name": "CallExecuted",
1028    "inputs": [
1029      {
1030        "name": "id",
1031        "type": "bytes32",
1032        "indexed": true,
1033        "internalType": "bytes32"
1034      },
1035      {
1036        "name": "index",
1037        "type": "uint256",
1038        "indexed": true,
1039        "internalType": "uint256"
1040      },
1041      {
1042        "name": "target",
1043        "type": "address",
1044        "indexed": false,
1045        "internalType": "address"
1046      },
1047      {
1048        "name": "value",
1049        "type": "uint256",
1050        "indexed": false,
1051        "internalType": "uint256"
1052      },
1053      {
1054        "name": "data",
1055        "type": "bytes",
1056        "indexed": false,
1057        "internalType": "bytes"
1058      }
1059    ],
1060    "anonymous": false
1061  },
1062  {
1063    "type": "event",
1064    "name": "CallSalt",
1065    "inputs": [
1066      {
1067        "name": "id",
1068        "type": "bytes32",
1069        "indexed": true,
1070        "internalType": "bytes32"
1071      },
1072      {
1073        "name": "salt",
1074        "type": "bytes32",
1075        "indexed": false,
1076        "internalType": "bytes32"
1077      }
1078    ],
1079    "anonymous": false
1080  },
1081  {
1082    "type": "event",
1083    "name": "CallScheduled",
1084    "inputs": [
1085      {
1086        "name": "id",
1087        "type": "bytes32",
1088        "indexed": true,
1089        "internalType": "bytes32"
1090      },
1091      {
1092        "name": "index",
1093        "type": "uint256",
1094        "indexed": true,
1095        "internalType": "uint256"
1096      },
1097      {
1098        "name": "target",
1099        "type": "address",
1100        "indexed": false,
1101        "internalType": "address"
1102      },
1103      {
1104        "name": "value",
1105        "type": "uint256",
1106        "indexed": false,
1107        "internalType": "uint256"
1108      },
1109      {
1110        "name": "data",
1111        "type": "bytes",
1112        "indexed": false,
1113        "internalType": "bytes"
1114      },
1115      {
1116        "name": "predecessor",
1117        "type": "bytes32",
1118        "indexed": false,
1119        "internalType": "bytes32"
1120      },
1121      {
1122        "name": "delay",
1123        "type": "uint256",
1124        "indexed": false,
1125        "internalType": "uint256"
1126      }
1127    ],
1128    "anonymous": false
1129  },
1130  {
1131    "type": "event",
1132    "name": "Cancelled",
1133    "inputs": [
1134      {
1135        "name": "id",
1136        "type": "bytes32",
1137        "indexed": true,
1138        "internalType": "bytes32"
1139      }
1140    ],
1141    "anonymous": false
1142  },
1143  {
1144    "type": "event",
1145    "name": "MinDelayChange",
1146    "inputs": [
1147      {
1148        "name": "oldDuration",
1149        "type": "uint256",
1150        "indexed": false,
1151        "internalType": "uint256"
1152      },
1153      {
1154        "name": "newDuration",
1155        "type": "uint256",
1156        "indexed": false,
1157        "internalType": "uint256"
1158      }
1159    ],
1160    "anonymous": false
1161  },
1162  {
1163    "type": "event",
1164    "name": "RoleAdminChanged",
1165    "inputs": [
1166      {
1167        "name": "role",
1168        "type": "bytes32",
1169        "indexed": true,
1170        "internalType": "bytes32"
1171      },
1172      {
1173        "name": "previousAdminRole",
1174        "type": "bytes32",
1175        "indexed": true,
1176        "internalType": "bytes32"
1177      },
1178      {
1179        "name": "newAdminRole",
1180        "type": "bytes32",
1181        "indexed": true,
1182        "internalType": "bytes32"
1183      }
1184    ],
1185    "anonymous": false
1186  },
1187  {
1188    "type": "event",
1189    "name": "RoleGranted",
1190    "inputs": [
1191      {
1192        "name": "role",
1193        "type": "bytes32",
1194        "indexed": true,
1195        "internalType": "bytes32"
1196      },
1197      {
1198        "name": "account",
1199        "type": "address",
1200        "indexed": true,
1201        "internalType": "address"
1202      },
1203      {
1204        "name": "sender",
1205        "type": "address",
1206        "indexed": true,
1207        "internalType": "address"
1208      }
1209    ],
1210    "anonymous": false
1211  },
1212  {
1213    "type": "event",
1214    "name": "RoleRevoked",
1215    "inputs": [
1216      {
1217        "name": "role",
1218        "type": "bytes32",
1219        "indexed": true,
1220        "internalType": "bytes32"
1221      },
1222      {
1223        "name": "account",
1224        "type": "address",
1225        "indexed": true,
1226        "internalType": "address"
1227      },
1228      {
1229        "name": "sender",
1230        "type": "address",
1231        "indexed": true,
1232        "internalType": "address"
1233      }
1234    ],
1235    "anonymous": false
1236  },
1237  {
1238    "type": "error",
1239    "name": "AccessControlBadConfirmation",
1240    "inputs": []
1241  },
1242  {
1243    "type": "error",
1244    "name": "AccessControlUnauthorizedAccount",
1245    "inputs": [
1246      {
1247        "name": "account",
1248        "type": "address",
1249        "internalType": "address"
1250      },
1251      {
1252        "name": "neededRole",
1253        "type": "bytes32",
1254        "internalType": "bytes32"
1255      }
1256    ]
1257  },
1258  {
1259    "type": "error",
1260    "name": "FailedInnerCall",
1261    "inputs": []
1262  },
1263  {
1264    "type": "error",
1265    "name": "TimelockInsufficientDelay",
1266    "inputs": [
1267      {
1268        "name": "delay",
1269        "type": "uint256",
1270        "internalType": "uint256"
1271      },
1272      {
1273        "name": "minDelay",
1274        "type": "uint256",
1275        "internalType": "uint256"
1276      }
1277    ]
1278  },
1279  {
1280    "type": "error",
1281    "name": "TimelockInvalidOperationLength",
1282    "inputs": [
1283      {
1284        "name": "targets",
1285        "type": "uint256",
1286        "internalType": "uint256"
1287      },
1288      {
1289        "name": "payloads",
1290        "type": "uint256",
1291        "internalType": "uint256"
1292      },
1293      {
1294        "name": "values",
1295        "type": "uint256",
1296        "internalType": "uint256"
1297      }
1298    ]
1299  },
1300  {
1301    "type": "error",
1302    "name": "TimelockUnauthorizedCaller",
1303    "inputs": [
1304      {
1305        "name": "caller",
1306        "type": "address",
1307        "internalType": "address"
1308      }
1309    ]
1310  },
1311  {
1312    "type": "error",
1313    "name": "TimelockUnexecutedPredecessor",
1314    "inputs": [
1315      {
1316        "name": "predecessorId",
1317        "type": "bytes32",
1318        "internalType": "bytes32"
1319      }
1320    ]
1321  },
1322  {
1323    "type": "error",
1324    "name": "TimelockUnexpectedOperationState",
1325    "inputs": [
1326      {
1327        "name": "operationId",
1328        "type": "bytes32",
1329        "internalType": "bytes32"
1330      },
1331      {
1332        "name": "expectedStates",
1333        "type": "bytes32",
1334        "internalType": "bytes32"
1335      }
1336    ]
1337  }
1338]
1339```*/
1340#[allow(
1341    non_camel_case_types,
1342    non_snake_case,
1343    clippy::pub_underscore_fields,
1344    clippy::style,
1345    clippy::empty_structs_with_brackets
1346)]
1347pub mod OpsTimelock {
1348    use super::*;
1349    use alloy::sol_types as alloy_sol_types;
1350    /// The creation / init bytecode of the contract.
1351    ///
1352    /// ```text
1353    ///0x608060405234801561000f575f5ffd5b50604051611d0b380380611d0b83398101604081905261002e916102fe565b8383838361003c5f30610183565b506001600160a01b03811615610058576100565f82610183565b505b5f5b83518110156100ec576100ac7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18583815181106100995761009961037d565b602002602001015161018360201b60201c565b506100e37ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838583815181106100995761009961037d565b5060010161005a565b505f5b82518110156101375761012e7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638483815181106100995761009961037d565b506001016100ef565b506002849055604080515f8152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050610391565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16610223575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101db3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610226565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b0381168114610256575f5ffd5b919050565b5f82601f83011261026a575f5ffd5b81516001600160401b038111156102835761028361022c565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102b1576102b161022c565b6040529182526020818501810192908101868411156102ce575f5ffd5b6020860192505b838310156102f4576102e683610240565b8152602092830192016102d5565b5095945050505050565b5f5f5f5f60808587031215610311575f5ffd5b845160208601519094506001600160401b0381111561032e575f5ffd5b61033a8782880161025b565b604087015190945090506001600160401b03811115610357575f5ffd5b6103638782880161025b565b92505061037260608601610240565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b61196d8061039e5f395ff3fe6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c6343000823000a
1354    /// ```
1355    #[rustfmt::skip]
1356    #[allow(clippy::all)]
1357    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1358        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1D\x0B8\x03\x80a\x1D\x0B\x839\x81\x01`@\x81\x90Ra\0.\x91a\x02\xFEV[\x83\x83\x83\x83a\0<_0a\x01\x83V[P`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\0XWa\0V_\x82a\x01\x83V[P[_[\x83Q\x81\x10\x15a\0\xECWa\0\xAC\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[` \x02` \x01\x01Qa\x01\x83` \x1B` \x1CV[Pa\0\xE3\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0ZV[P_[\x82Q\x81\x10\x15a\x017Wa\x01.\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x84\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0\xEFV[P`\x02\x84\x90U`@\x80Q_\x81R` \x81\x01\x86\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPPPa\x03\x91V[_\x82\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x84R\x90\x91R\x81 T`\xFF\x16a\x02#W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x01\xDB3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x02&V[P_[\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02VW__\xFD[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02jW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x83Wa\x02\x83a\x02,V[`@Q`\x05\x82\x90\x1B\x90`?\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xB1Wa\x02\xB1a\x02,V[`@R\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x86\x84\x11\x15a\x02\xCEW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x02\xF4Wa\x02\xE6\x83a\x02@V[\x81R` \x92\x83\x01\x92\x01a\x02\xD5V[P\x95\x94PPPPPV[____`\x80\x85\x87\x03\x12\x15a\x03\x11W__\xFD[\x84Q` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03.W__\xFD[a\x03:\x87\x82\x88\x01a\x02[V[`@\x87\x01Q\x90\x94P\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03WW__\xFD[a\x03c\x87\x82\x88\x01a\x02[V[\x92PPa\x03r``\x86\x01a\x02@V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x19m\x80a\x03\x9E_9_\xF3\xFE`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08#\0\n",
1359    );
1360    /// The runtime bytecode of the contract, as deployed on the network.
1361    ///
1362    /// ```text
1363    ///0x6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c6343000823000a
1364    /// ```
1365    #[rustfmt::skip]
1366    #[allow(clippy::all)]
1367    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1368        b"`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08#\0\n",
1369    );
1370    #[derive(serde::Serialize, serde::Deserialize)]
1371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1372    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
1373```solidity
1374error AccessControlBadConfirmation();
1375```*/
1376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1377    #[derive(Clone)]
1378    pub struct AccessControlBadConfirmation;
1379    #[allow(
1380        non_camel_case_types,
1381        non_snake_case,
1382        clippy::pub_underscore_fields,
1383        clippy::style
1384    )]
1385    const _: () = {
1386        use alloy::sol_types as alloy_sol_types;
1387        #[doc(hidden)]
1388        #[allow(dead_code)]
1389        type UnderlyingSolTuple<'a> = ();
1390        #[doc(hidden)]
1391        type UnderlyingRustTuple<'a> = ();
1392        #[cfg(test)]
1393        #[allow(dead_code, unreachable_patterns)]
1394        fn _type_assertion(
1395            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1396        ) {
1397            match _t {
1398                alloy_sol_types::private::AssertTypeEq::<
1399                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1400                >(_) => {}
1401            }
1402        }
1403        #[automatically_derived]
1404        #[doc(hidden)]
1405        impl ::core::convert::From<AccessControlBadConfirmation>
1406        for UnderlyingRustTuple<'_> {
1407            fn from(value: AccessControlBadConfirmation) -> Self {
1408                ()
1409            }
1410        }
1411        #[automatically_derived]
1412        #[doc(hidden)]
1413        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1414        for AccessControlBadConfirmation {
1415            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1416                Self
1417            }
1418        }
1419        #[automatically_derived]
1420        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
1421            type Parameters<'a> = UnderlyingSolTuple<'a>;
1422            type Token<'a> = <Self::Parameters<
1423                'a,
1424            > as alloy_sol_types::SolType>::Token<'a>;
1425            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
1426            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
1427            #[inline]
1428            fn new<'a>(
1429                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1430            ) -> Self {
1431                tuple.into()
1432            }
1433            #[inline]
1434            fn tokenize(&self) -> Self::Token<'_> {
1435                ()
1436            }
1437            #[inline]
1438            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1439                Self::abi_decode_raw_with_config(
1440                    data,
1441                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
1442                )
1443            }
1444        }
1445    };
1446    #[derive(serde::Serialize, serde::Deserialize)]
1447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1448    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
1449```solidity
1450error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1451```*/
1452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1453    #[derive(Clone)]
1454    pub struct AccessControlUnauthorizedAccount {
1455        #[allow(missing_docs)]
1456        pub account: alloy::sol_types::private::Address,
1457        #[allow(missing_docs)]
1458        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
1459    }
1460    #[allow(
1461        non_camel_case_types,
1462        non_snake_case,
1463        clippy::pub_underscore_fields,
1464        clippy::style
1465    )]
1466    const _: () = {
1467        use alloy::sol_types as alloy_sol_types;
1468        #[doc(hidden)]
1469        #[allow(dead_code)]
1470        type UnderlyingSolTuple<'a> = (
1471            alloy::sol_types::sol_data::Address,
1472            alloy::sol_types::sol_data::FixedBytes<32>,
1473        );
1474        #[doc(hidden)]
1475        type UnderlyingRustTuple<'a> = (
1476            alloy::sol_types::private::Address,
1477            alloy::sol_types::private::FixedBytes<32>,
1478        );
1479        #[cfg(test)]
1480        #[allow(dead_code, unreachable_patterns)]
1481        fn _type_assertion(
1482            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1483        ) {
1484            match _t {
1485                alloy_sol_types::private::AssertTypeEq::<
1486                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1487                >(_) => {}
1488            }
1489        }
1490        #[automatically_derived]
1491        #[doc(hidden)]
1492        impl ::core::convert::From<AccessControlUnauthorizedAccount>
1493        for UnderlyingRustTuple<'_> {
1494            fn from(value: AccessControlUnauthorizedAccount) -> Self {
1495                (value.account, value.neededRole)
1496            }
1497        }
1498        #[automatically_derived]
1499        #[doc(hidden)]
1500        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1501        for AccessControlUnauthorizedAccount {
1502            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1503                Self {
1504                    account: tuple.0,
1505                    neededRole: tuple.1,
1506                }
1507            }
1508        }
1509        #[automatically_derived]
1510        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
1511            type Parameters<'a> = UnderlyingSolTuple<'a>;
1512            type Token<'a> = <Self::Parameters<
1513                'a,
1514            > as alloy_sol_types::SolType>::Token<'a>;
1515            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
1516            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
1517            #[inline]
1518            fn new<'a>(
1519                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1520            ) -> Self {
1521                tuple.into()
1522            }
1523            #[inline]
1524            fn tokenize(&self) -> Self::Token<'_> {
1525                (
1526                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1527                        &self.account,
1528                    ),
1529                    <alloy::sol_types::sol_data::FixedBytes<
1530                        32,
1531                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
1532                )
1533            }
1534            #[inline]
1535            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1536                Self::abi_decode_raw_with_config(
1537                    data,
1538                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
1539                )
1540            }
1541        }
1542    };
1543    #[derive(serde::Serialize, serde::Deserialize)]
1544    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1545    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
1546```solidity
1547error FailedInnerCall();
1548```*/
1549    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1550    #[derive(Clone)]
1551    pub struct FailedInnerCall;
1552    #[allow(
1553        non_camel_case_types,
1554        non_snake_case,
1555        clippy::pub_underscore_fields,
1556        clippy::style
1557    )]
1558    const _: () = {
1559        use alloy::sol_types as alloy_sol_types;
1560        #[doc(hidden)]
1561        #[allow(dead_code)]
1562        type UnderlyingSolTuple<'a> = ();
1563        #[doc(hidden)]
1564        type UnderlyingRustTuple<'a> = ();
1565        #[cfg(test)]
1566        #[allow(dead_code, unreachable_patterns)]
1567        fn _type_assertion(
1568            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1569        ) {
1570            match _t {
1571                alloy_sol_types::private::AssertTypeEq::<
1572                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1573                >(_) => {}
1574            }
1575        }
1576        #[automatically_derived]
1577        #[doc(hidden)]
1578        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
1579            fn from(value: FailedInnerCall) -> Self {
1580                ()
1581            }
1582        }
1583        #[automatically_derived]
1584        #[doc(hidden)]
1585        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
1586            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1587                Self
1588            }
1589        }
1590        #[automatically_derived]
1591        impl alloy_sol_types::SolError for FailedInnerCall {
1592            type Parameters<'a> = UnderlyingSolTuple<'a>;
1593            type Token<'a> = <Self::Parameters<
1594                'a,
1595            > as alloy_sol_types::SolType>::Token<'a>;
1596            const SIGNATURE: &'static str = "FailedInnerCall()";
1597            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
1598            #[inline]
1599            fn new<'a>(
1600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1601            ) -> Self {
1602                tuple.into()
1603            }
1604            #[inline]
1605            fn tokenize(&self) -> Self::Token<'_> {
1606                ()
1607            }
1608            #[inline]
1609            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1610                Self::abi_decode_raw_with_config(
1611                    data,
1612                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
1613                )
1614            }
1615        }
1616    };
1617    #[derive(serde::Serialize, serde::Deserialize)]
1618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1619    /**Custom error with signature `TimelockInsufficientDelay(uint256,uint256)` and selector `0x54336609`.
1620```solidity
1621error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
1622```*/
1623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1624    #[derive(Clone)]
1625    pub struct TimelockInsufficientDelay {
1626        #[allow(missing_docs)]
1627        pub delay: alloy::sol_types::private::primitives::aliases::U256,
1628        #[allow(missing_docs)]
1629        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
1630    }
1631    #[allow(
1632        non_camel_case_types,
1633        non_snake_case,
1634        clippy::pub_underscore_fields,
1635        clippy::style
1636    )]
1637    const _: () = {
1638        use alloy::sol_types as alloy_sol_types;
1639        #[doc(hidden)]
1640        #[allow(dead_code)]
1641        type UnderlyingSolTuple<'a> = (
1642            alloy::sol_types::sol_data::Uint<256>,
1643            alloy::sol_types::sol_data::Uint<256>,
1644        );
1645        #[doc(hidden)]
1646        type UnderlyingRustTuple<'a> = (
1647            alloy::sol_types::private::primitives::aliases::U256,
1648            alloy::sol_types::private::primitives::aliases::U256,
1649        );
1650        #[cfg(test)]
1651        #[allow(dead_code, unreachable_patterns)]
1652        fn _type_assertion(
1653            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1654        ) {
1655            match _t {
1656                alloy_sol_types::private::AssertTypeEq::<
1657                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1658                >(_) => {}
1659            }
1660        }
1661        #[automatically_derived]
1662        #[doc(hidden)]
1663        impl ::core::convert::From<TimelockInsufficientDelay>
1664        for UnderlyingRustTuple<'_> {
1665            fn from(value: TimelockInsufficientDelay) -> Self {
1666                (value.delay, value.minDelay)
1667            }
1668        }
1669        #[automatically_derived]
1670        #[doc(hidden)]
1671        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1672        for TimelockInsufficientDelay {
1673            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1674                Self {
1675                    delay: tuple.0,
1676                    minDelay: tuple.1,
1677                }
1678            }
1679        }
1680        #[automatically_derived]
1681        impl alloy_sol_types::SolError for TimelockInsufficientDelay {
1682            type Parameters<'a> = UnderlyingSolTuple<'a>;
1683            type Token<'a> = <Self::Parameters<
1684                'a,
1685            > as alloy_sol_types::SolType>::Token<'a>;
1686            const SIGNATURE: &'static str = "TimelockInsufficientDelay(uint256,uint256)";
1687            const SELECTOR: [u8; 4] = [84u8, 51u8, 102u8, 9u8];
1688            #[inline]
1689            fn new<'a>(
1690                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1691            ) -> Self {
1692                tuple.into()
1693            }
1694            #[inline]
1695            fn tokenize(&self) -> Self::Token<'_> {
1696                (
1697                    <alloy::sol_types::sol_data::Uint<
1698                        256,
1699                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
1700                    <alloy::sol_types::sol_data::Uint<
1701                        256,
1702                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
1703                )
1704            }
1705            #[inline]
1706            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1707                Self::abi_decode_raw_with_config(
1708                    data,
1709                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
1710                )
1711            }
1712        }
1713    };
1714    #[derive(serde::Serialize, serde::Deserialize)]
1715    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1716    /**Custom error with signature `TimelockInvalidOperationLength(uint256,uint256,uint256)` and selector `0xffb03211`.
1717```solidity
1718error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
1719```*/
1720    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1721    #[derive(Clone)]
1722    pub struct TimelockInvalidOperationLength {
1723        #[allow(missing_docs)]
1724        pub targets: alloy::sol_types::private::primitives::aliases::U256,
1725        #[allow(missing_docs)]
1726        pub payloads: alloy::sol_types::private::primitives::aliases::U256,
1727        #[allow(missing_docs)]
1728        pub values: alloy::sol_types::private::primitives::aliases::U256,
1729    }
1730    #[allow(
1731        non_camel_case_types,
1732        non_snake_case,
1733        clippy::pub_underscore_fields,
1734        clippy::style
1735    )]
1736    const _: () = {
1737        use alloy::sol_types as alloy_sol_types;
1738        #[doc(hidden)]
1739        #[allow(dead_code)]
1740        type UnderlyingSolTuple<'a> = (
1741            alloy::sol_types::sol_data::Uint<256>,
1742            alloy::sol_types::sol_data::Uint<256>,
1743            alloy::sol_types::sol_data::Uint<256>,
1744        );
1745        #[doc(hidden)]
1746        type UnderlyingRustTuple<'a> = (
1747            alloy::sol_types::private::primitives::aliases::U256,
1748            alloy::sol_types::private::primitives::aliases::U256,
1749            alloy::sol_types::private::primitives::aliases::U256,
1750        );
1751        #[cfg(test)]
1752        #[allow(dead_code, unreachable_patterns)]
1753        fn _type_assertion(
1754            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1755        ) {
1756            match _t {
1757                alloy_sol_types::private::AssertTypeEq::<
1758                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1759                >(_) => {}
1760            }
1761        }
1762        #[automatically_derived]
1763        #[doc(hidden)]
1764        impl ::core::convert::From<TimelockInvalidOperationLength>
1765        for UnderlyingRustTuple<'_> {
1766            fn from(value: TimelockInvalidOperationLength) -> Self {
1767                (value.targets, value.payloads, value.values)
1768            }
1769        }
1770        #[automatically_derived]
1771        #[doc(hidden)]
1772        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1773        for TimelockInvalidOperationLength {
1774            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1775                Self {
1776                    targets: tuple.0,
1777                    payloads: tuple.1,
1778                    values: tuple.2,
1779                }
1780            }
1781        }
1782        #[automatically_derived]
1783        impl alloy_sol_types::SolError for TimelockInvalidOperationLength {
1784            type Parameters<'a> = UnderlyingSolTuple<'a>;
1785            type Token<'a> = <Self::Parameters<
1786                'a,
1787            > as alloy_sol_types::SolType>::Token<'a>;
1788            const SIGNATURE: &'static str = "TimelockInvalidOperationLength(uint256,uint256,uint256)";
1789            const SELECTOR: [u8; 4] = [255u8, 176u8, 50u8, 17u8];
1790            #[inline]
1791            fn new<'a>(
1792                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1793            ) -> Self {
1794                tuple.into()
1795            }
1796            #[inline]
1797            fn tokenize(&self) -> Self::Token<'_> {
1798                (
1799                    <alloy::sol_types::sol_data::Uint<
1800                        256,
1801                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
1802                    <alloy::sol_types::sol_data::Uint<
1803                        256,
1804                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
1805                    <alloy::sol_types::sol_data::Uint<
1806                        256,
1807                    > as alloy_sol_types::SolType>::tokenize(&self.values),
1808                )
1809            }
1810            #[inline]
1811            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1812                Self::abi_decode_raw_with_config(
1813                    data,
1814                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
1815                )
1816            }
1817        }
1818    };
1819    #[derive(serde::Serialize, serde::Deserialize)]
1820    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1821    /**Custom error with signature `TimelockUnauthorizedCaller(address)` and selector `0xe2850c59`.
1822```solidity
1823error TimelockUnauthorizedCaller(address caller);
1824```*/
1825    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1826    #[derive(Clone)]
1827    pub struct TimelockUnauthorizedCaller {
1828        #[allow(missing_docs)]
1829        pub caller: alloy::sol_types::private::Address,
1830    }
1831    #[allow(
1832        non_camel_case_types,
1833        non_snake_case,
1834        clippy::pub_underscore_fields,
1835        clippy::style
1836    )]
1837    const _: () = {
1838        use alloy::sol_types as alloy_sol_types;
1839        #[doc(hidden)]
1840        #[allow(dead_code)]
1841        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1842        #[doc(hidden)]
1843        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1844        #[cfg(test)]
1845        #[allow(dead_code, unreachable_patterns)]
1846        fn _type_assertion(
1847            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1848        ) {
1849            match _t {
1850                alloy_sol_types::private::AssertTypeEq::<
1851                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1852                >(_) => {}
1853            }
1854        }
1855        #[automatically_derived]
1856        #[doc(hidden)]
1857        impl ::core::convert::From<TimelockUnauthorizedCaller>
1858        for UnderlyingRustTuple<'_> {
1859            fn from(value: TimelockUnauthorizedCaller) -> Self {
1860                (value.caller,)
1861            }
1862        }
1863        #[automatically_derived]
1864        #[doc(hidden)]
1865        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1866        for TimelockUnauthorizedCaller {
1867            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1868                Self { caller: tuple.0 }
1869            }
1870        }
1871        #[automatically_derived]
1872        impl alloy_sol_types::SolError for TimelockUnauthorizedCaller {
1873            type Parameters<'a> = UnderlyingSolTuple<'a>;
1874            type Token<'a> = <Self::Parameters<
1875                'a,
1876            > as alloy_sol_types::SolType>::Token<'a>;
1877            const SIGNATURE: &'static str = "TimelockUnauthorizedCaller(address)";
1878            const SELECTOR: [u8; 4] = [226u8, 133u8, 12u8, 89u8];
1879            #[inline]
1880            fn new<'a>(
1881                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1882            ) -> Self {
1883                tuple.into()
1884            }
1885            #[inline]
1886            fn tokenize(&self) -> Self::Token<'_> {
1887                (
1888                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1889                        &self.caller,
1890                    ),
1891                )
1892            }
1893            #[inline]
1894            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1895                Self::abi_decode_raw_with_config(
1896                    data,
1897                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
1898                )
1899            }
1900        }
1901    };
1902    #[derive(serde::Serialize, serde::Deserialize)]
1903    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1904    /**Custom error with signature `TimelockUnexecutedPredecessor(bytes32)` and selector `0x90a9a618`.
1905```solidity
1906error TimelockUnexecutedPredecessor(bytes32 predecessorId);
1907```*/
1908    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1909    #[derive(Clone)]
1910    pub struct TimelockUnexecutedPredecessor {
1911        #[allow(missing_docs)]
1912        pub predecessorId: alloy::sol_types::private::FixedBytes<32>,
1913    }
1914    #[allow(
1915        non_camel_case_types,
1916        non_snake_case,
1917        clippy::pub_underscore_fields,
1918        clippy::style
1919    )]
1920    const _: () = {
1921        use alloy::sol_types as alloy_sol_types;
1922        #[doc(hidden)]
1923        #[allow(dead_code)]
1924        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
1925        #[doc(hidden)]
1926        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
1927        #[cfg(test)]
1928        #[allow(dead_code, unreachable_patterns)]
1929        fn _type_assertion(
1930            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1931        ) {
1932            match _t {
1933                alloy_sol_types::private::AssertTypeEq::<
1934                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1935                >(_) => {}
1936            }
1937        }
1938        #[automatically_derived]
1939        #[doc(hidden)]
1940        impl ::core::convert::From<TimelockUnexecutedPredecessor>
1941        for UnderlyingRustTuple<'_> {
1942            fn from(value: TimelockUnexecutedPredecessor) -> Self {
1943                (value.predecessorId,)
1944            }
1945        }
1946        #[automatically_derived]
1947        #[doc(hidden)]
1948        impl ::core::convert::From<UnderlyingRustTuple<'_>>
1949        for TimelockUnexecutedPredecessor {
1950            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1951                Self { predecessorId: tuple.0 }
1952            }
1953        }
1954        #[automatically_derived]
1955        impl alloy_sol_types::SolError for TimelockUnexecutedPredecessor {
1956            type Parameters<'a> = UnderlyingSolTuple<'a>;
1957            type Token<'a> = <Self::Parameters<
1958                'a,
1959            > as alloy_sol_types::SolType>::Token<'a>;
1960            const SIGNATURE: &'static str = "TimelockUnexecutedPredecessor(bytes32)";
1961            const SELECTOR: [u8; 4] = [144u8, 169u8, 166u8, 24u8];
1962            #[inline]
1963            fn new<'a>(
1964                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1965            ) -> Self {
1966                tuple.into()
1967            }
1968            #[inline]
1969            fn tokenize(&self) -> Self::Token<'_> {
1970                (
1971                    <alloy::sol_types::sol_data::FixedBytes<
1972                        32,
1973                    > as alloy_sol_types::SolType>::tokenize(&self.predecessorId),
1974                )
1975            }
1976            #[inline]
1977            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
1978                Self::abi_decode_raw_with_config(
1979                    data,
1980                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
1981                )
1982            }
1983        }
1984    };
1985    #[derive(serde::Serialize, serde::Deserialize)]
1986    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1987    /**Custom error with signature `TimelockUnexpectedOperationState(bytes32,bytes32)` and selector `0x5ead8eb5`.
1988```solidity
1989error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
1990```*/
1991    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1992    #[derive(Clone)]
1993    pub struct TimelockUnexpectedOperationState {
1994        #[allow(missing_docs)]
1995        pub operationId: alloy::sol_types::private::FixedBytes<32>,
1996        #[allow(missing_docs)]
1997        pub expectedStates: alloy::sol_types::private::FixedBytes<32>,
1998    }
1999    #[allow(
2000        non_camel_case_types,
2001        non_snake_case,
2002        clippy::pub_underscore_fields,
2003        clippy::style
2004    )]
2005    const _: () = {
2006        use alloy::sol_types as alloy_sol_types;
2007        #[doc(hidden)]
2008        #[allow(dead_code)]
2009        type UnderlyingSolTuple<'a> = (
2010            alloy::sol_types::sol_data::FixedBytes<32>,
2011            alloy::sol_types::sol_data::FixedBytes<32>,
2012        );
2013        #[doc(hidden)]
2014        type UnderlyingRustTuple<'a> = (
2015            alloy::sol_types::private::FixedBytes<32>,
2016            alloy::sol_types::private::FixedBytes<32>,
2017        );
2018        #[cfg(test)]
2019        #[allow(dead_code, unreachable_patterns)]
2020        fn _type_assertion(
2021            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2022        ) {
2023            match _t {
2024                alloy_sol_types::private::AssertTypeEq::<
2025                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2026                >(_) => {}
2027            }
2028        }
2029        #[automatically_derived]
2030        #[doc(hidden)]
2031        impl ::core::convert::From<TimelockUnexpectedOperationState>
2032        for UnderlyingRustTuple<'_> {
2033            fn from(value: TimelockUnexpectedOperationState) -> Self {
2034                (value.operationId, value.expectedStates)
2035            }
2036        }
2037        #[automatically_derived]
2038        #[doc(hidden)]
2039        impl ::core::convert::From<UnderlyingRustTuple<'_>>
2040        for TimelockUnexpectedOperationState {
2041            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2042                Self {
2043                    operationId: tuple.0,
2044                    expectedStates: tuple.1,
2045                }
2046            }
2047        }
2048        #[automatically_derived]
2049        impl alloy_sol_types::SolError for TimelockUnexpectedOperationState {
2050            type Parameters<'a> = UnderlyingSolTuple<'a>;
2051            type Token<'a> = <Self::Parameters<
2052                'a,
2053            > as alloy_sol_types::SolType>::Token<'a>;
2054            const SIGNATURE: &'static str = "TimelockUnexpectedOperationState(bytes32,bytes32)";
2055            const SELECTOR: [u8; 4] = [94u8, 173u8, 142u8, 181u8];
2056            #[inline]
2057            fn new<'a>(
2058                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2059            ) -> Self {
2060                tuple.into()
2061            }
2062            #[inline]
2063            fn tokenize(&self) -> Self::Token<'_> {
2064                (
2065                    <alloy::sol_types::sol_data::FixedBytes<
2066                        32,
2067                    > as alloy_sol_types::SolType>::tokenize(&self.operationId),
2068                    <alloy::sol_types::sol_data::FixedBytes<
2069                        32,
2070                    > as alloy_sol_types::SolType>::tokenize(&self.expectedStates),
2071                )
2072            }
2073            #[inline]
2074            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
2075                Self::abi_decode_raw_with_config(
2076                    data,
2077                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
2078                )
2079            }
2080        }
2081    };
2082    #[derive(serde::Serialize, serde::Deserialize)]
2083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2084    /**Event with signature `CallExecuted(bytes32,uint256,address,uint256,bytes)` and selector `0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58`.
2085```solidity
2086event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
2087```*/
2088    #[allow(
2089        non_camel_case_types,
2090        non_snake_case,
2091        clippy::pub_underscore_fields,
2092        clippy::style
2093    )]
2094    #[derive(Clone)]
2095    pub struct CallExecuted {
2096        #[allow(missing_docs)]
2097        pub id: alloy::sol_types::private::FixedBytes<32>,
2098        #[allow(missing_docs)]
2099        pub index: alloy::sol_types::private::primitives::aliases::U256,
2100        #[allow(missing_docs)]
2101        pub target: alloy::sol_types::private::Address,
2102        #[allow(missing_docs)]
2103        pub value: alloy::sol_types::private::primitives::aliases::U256,
2104        #[allow(missing_docs)]
2105        pub data: alloy::sol_types::private::Bytes,
2106    }
2107    #[allow(
2108        non_camel_case_types,
2109        non_snake_case,
2110        clippy::pub_underscore_fields,
2111        clippy::style
2112    )]
2113    const _: () = {
2114        use alloy::sol_types as alloy_sol_types;
2115        #[automatically_derived]
2116        impl alloy_sol_types::SolEvent for CallExecuted {
2117            type DataTuple<'a> = (
2118                alloy::sol_types::sol_data::Address,
2119                alloy::sol_types::sol_data::Uint<256>,
2120                alloy::sol_types::sol_data::Bytes,
2121            );
2122            type DataToken<'a> = <Self::DataTuple<
2123                'a,
2124            > as alloy_sol_types::SolType>::Token<'a>;
2125            type TopicList = (
2126                alloy_sol_types::sol_data::FixedBytes<32>,
2127                alloy::sol_types::sol_data::FixedBytes<32>,
2128                alloy::sol_types::sol_data::Uint<256>,
2129            );
2130            const SIGNATURE: &'static str = "CallExecuted(bytes32,uint256,address,uint256,bytes)";
2131            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2132                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
2133                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
2134                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
2135            ]);
2136            const ANONYMOUS: bool = false;
2137            #[allow(unused_variables)]
2138            #[inline]
2139            fn new(
2140                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2141                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2142            ) -> Self {
2143                Self {
2144                    id: topics.1,
2145                    index: topics.2,
2146                    target: data.0,
2147                    value: data.1,
2148                    data: data.2,
2149                }
2150            }
2151            #[inline]
2152            fn check_signature(
2153                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2154            ) -> alloy_sol_types::Result<()> {
2155                if topics.0 != Self::SIGNATURE_HASH {
2156                    return Err(
2157                        alloy_sol_types::Error::invalid_event_signature_hash(
2158                            Self::SIGNATURE,
2159                            topics.0,
2160                            Self::SIGNATURE_HASH,
2161                        ),
2162                    );
2163                }
2164                Ok(())
2165            }
2166            #[inline]
2167            fn tokenize_body(&self) -> Self::DataToken<'_> {
2168                (
2169                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2170                        &self.target,
2171                    ),
2172                    <alloy::sol_types::sol_data::Uint<
2173                        256,
2174                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2175                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2176                        &self.data,
2177                    ),
2178                )
2179            }
2180            #[inline]
2181            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2182                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2183            }
2184            #[inline]
2185            fn encode_topics_raw(
2186                &self,
2187                out: &mut [alloy_sol_types::abi::token::WordToken],
2188            ) -> alloy_sol_types::Result<()> {
2189                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2190                    return Err(alloy_sol_types::Error::Overrun);
2191                }
2192                out[0usize] = alloy_sol_types::abi::token::WordToken(
2193                    Self::SIGNATURE_HASH,
2194                );
2195                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2196                    32,
2197                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2198                out[2usize] = <alloy::sol_types::sol_data::Uint<
2199                    256,
2200                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2201                Ok(())
2202            }
2203        }
2204        #[automatically_derived]
2205        impl alloy_sol_types::private::IntoLogData for CallExecuted {
2206            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2207                From::from(self)
2208            }
2209            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2210                From::from(&self)
2211            }
2212        }
2213        #[automatically_derived]
2214        impl From<&CallExecuted> for alloy_sol_types::private::LogData {
2215            #[inline]
2216            fn from(this: &CallExecuted) -> alloy_sol_types::private::LogData {
2217                alloy_sol_types::SolEvent::encode_log_data(this)
2218            }
2219        }
2220    };
2221    #[derive(serde::Serialize, serde::Deserialize)]
2222    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2223    /**Event with signature `CallSalt(bytes32,bytes32)` and selector `0x20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387`.
2224```solidity
2225event CallSalt(bytes32 indexed id, bytes32 salt);
2226```*/
2227    #[allow(
2228        non_camel_case_types,
2229        non_snake_case,
2230        clippy::pub_underscore_fields,
2231        clippy::style
2232    )]
2233    #[derive(Clone)]
2234    pub struct CallSalt {
2235        #[allow(missing_docs)]
2236        pub id: alloy::sol_types::private::FixedBytes<32>,
2237        #[allow(missing_docs)]
2238        pub salt: alloy::sol_types::private::FixedBytes<32>,
2239    }
2240    #[allow(
2241        non_camel_case_types,
2242        non_snake_case,
2243        clippy::pub_underscore_fields,
2244        clippy::style
2245    )]
2246    const _: () = {
2247        use alloy::sol_types as alloy_sol_types;
2248        #[automatically_derived]
2249        impl alloy_sol_types::SolEvent for CallSalt {
2250            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
2251            type DataToken<'a> = <Self::DataTuple<
2252                'a,
2253            > as alloy_sol_types::SolType>::Token<'a>;
2254            type TopicList = (
2255                alloy_sol_types::sol_data::FixedBytes<32>,
2256                alloy::sol_types::sol_data::FixedBytes<32>,
2257            );
2258            const SIGNATURE: &'static str = "CallSalt(bytes32,bytes32)";
2259            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2260                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
2261                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
2262                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
2263            ]);
2264            const ANONYMOUS: bool = false;
2265            #[allow(unused_variables)]
2266            #[inline]
2267            fn new(
2268                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2269                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2270            ) -> Self {
2271                Self { id: topics.1, salt: data.0 }
2272            }
2273            #[inline]
2274            fn check_signature(
2275                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2276            ) -> alloy_sol_types::Result<()> {
2277                if topics.0 != Self::SIGNATURE_HASH {
2278                    return Err(
2279                        alloy_sol_types::Error::invalid_event_signature_hash(
2280                            Self::SIGNATURE,
2281                            topics.0,
2282                            Self::SIGNATURE_HASH,
2283                        ),
2284                    );
2285                }
2286                Ok(())
2287            }
2288            #[inline]
2289            fn tokenize_body(&self) -> Self::DataToken<'_> {
2290                (
2291                    <alloy::sol_types::sol_data::FixedBytes<
2292                        32,
2293                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
2294                )
2295            }
2296            #[inline]
2297            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2298                (Self::SIGNATURE_HASH.into(), self.id.clone())
2299            }
2300            #[inline]
2301            fn encode_topics_raw(
2302                &self,
2303                out: &mut [alloy_sol_types::abi::token::WordToken],
2304            ) -> alloy_sol_types::Result<()> {
2305                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2306                    return Err(alloy_sol_types::Error::Overrun);
2307                }
2308                out[0usize] = alloy_sol_types::abi::token::WordToken(
2309                    Self::SIGNATURE_HASH,
2310                );
2311                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2312                    32,
2313                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2314                Ok(())
2315            }
2316        }
2317        #[automatically_derived]
2318        impl alloy_sol_types::private::IntoLogData for CallSalt {
2319            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2320                From::from(self)
2321            }
2322            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2323                From::from(&self)
2324            }
2325        }
2326        #[automatically_derived]
2327        impl From<&CallSalt> for alloy_sol_types::private::LogData {
2328            #[inline]
2329            fn from(this: &CallSalt) -> alloy_sol_types::private::LogData {
2330                alloy_sol_types::SolEvent::encode_log_data(this)
2331            }
2332        }
2333    };
2334    #[derive(serde::Serialize, serde::Deserialize)]
2335    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2336    /**Event with signature `CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)` and selector `0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca`.
2337```solidity
2338event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
2339```*/
2340    #[allow(
2341        non_camel_case_types,
2342        non_snake_case,
2343        clippy::pub_underscore_fields,
2344        clippy::style
2345    )]
2346    #[derive(Clone)]
2347    pub struct CallScheduled {
2348        #[allow(missing_docs)]
2349        pub id: alloy::sol_types::private::FixedBytes<32>,
2350        #[allow(missing_docs)]
2351        pub index: alloy::sol_types::private::primitives::aliases::U256,
2352        #[allow(missing_docs)]
2353        pub target: alloy::sol_types::private::Address,
2354        #[allow(missing_docs)]
2355        pub value: alloy::sol_types::private::primitives::aliases::U256,
2356        #[allow(missing_docs)]
2357        pub data: alloy::sol_types::private::Bytes,
2358        #[allow(missing_docs)]
2359        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
2360        #[allow(missing_docs)]
2361        pub delay: alloy::sol_types::private::primitives::aliases::U256,
2362    }
2363    #[allow(
2364        non_camel_case_types,
2365        non_snake_case,
2366        clippy::pub_underscore_fields,
2367        clippy::style
2368    )]
2369    const _: () = {
2370        use alloy::sol_types as alloy_sol_types;
2371        #[automatically_derived]
2372        impl alloy_sol_types::SolEvent for CallScheduled {
2373            type DataTuple<'a> = (
2374                alloy::sol_types::sol_data::Address,
2375                alloy::sol_types::sol_data::Uint<256>,
2376                alloy::sol_types::sol_data::Bytes,
2377                alloy::sol_types::sol_data::FixedBytes<32>,
2378                alloy::sol_types::sol_data::Uint<256>,
2379            );
2380            type DataToken<'a> = <Self::DataTuple<
2381                'a,
2382            > as alloy_sol_types::SolType>::Token<'a>;
2383            type TopicList = (
2384                alloy_sol_types::sol_data::FixedBytes<32>,
2385                alloy::sol_types::sol_data::FixedBytes<32>,
2386                alloy::sol_types::sol_data::Uint<256>,
2387            );
2388            const SIGNATURE: &'static str = "CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)";
2389            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2390                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
2391                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
2392                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
2393            ]);
2394            const ANONYMOUS: bool = false;
2395            #[allow(unused_variables)]
2396            #[inline]
2397            fn new(
2398                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2399                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2400            ) -> Self {
2401                Self {
2402                    id: topics.1,
2403                    index: topics.2,
2404                    target: data.0,
2405                    value: data.1,
2406                    data: data.2,
2407                    predecessor: data.3,
2408                    delay: data.4,
2409                }
2410            }
2411            #[inline]
2412            fn check_signature(
2413                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2414            ) -> alloy_sol_types::Result<()> {
2415                if topics.0 != Self::SIGNATURE_HASH {
2416                    return Err(
2417                        alloy_sol_types::Error::invalid_event_signature_hash(
2418                            Self::SIGNATURE,
2419                            topics.0,
2420                            Self::SIGNATURE_HASH,
2421                        ),
2422                    );
2423                }
2424                Ok(())
2425            }
2426            #[inline]
2427            fn tokenize_body(&self) -> Self::DataToken<'_> {
2428                (
2429                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2430                        &self.target,
2431                    ),
2432                    <alloy::sol_types::sol_data::Uint<
2433                        256,
2434                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2435                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2436                        &self.data,
2437                    ),
2438                    <alloy::sol_types::sol_data::FixedBytes<
2439                        32,
2440                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
2441                    <alloy::sol_types::sol_data::Uint<
2442                        256,
2443                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
2444                )
2445            }
2446            #[inline]
2447            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2448                (Self::SIGNATURE_HASH.into(), self.id.clone(), self.index.clone())
2449            }
2450            #[inline]
2451            fn encode_topics_raw(
2452                &self,
2453                out: &mut [alloy_sol_types::abi::token::WordToken],
2454            ) -> alloy_sol_types::Result<()> {
2455                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2456                    return Err(alloy_sol_types::Error::Overrun);
2457                }
2458                out[0usize] = alloy_sol_types::abi::token::WordToken(
2459                    Self::SIGNATURE_HASH,
2460                );
2461                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2462                    32,
2463                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2464                out[2usize] = <alloy::sol_types::sol_data::Uint<
2465                    256,
2466                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2467                Ok(())
2468            }
2469        }
2470        #[automatically_derived]
2471        impl alloy_sol_types::private::IntoLogData for CallScheduled {
2472            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2473                From::from(self)
2474            }
2475            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2476                From::from(&self)
2477            }
2478        }
2479        #[automatically_derived]
2480        impl From<&CallScheduled> for alloy_sol_types::private::LogData {
2481            #[inline]
2482            fn from(this: &CallScheduled) -> alloy_sol_types::private::LogData {
2483                alloy_sol_types::SolEvent::encode_log_data(this)
2484            }
2485        }
2486    };
2487    #[derive(serde::Serialize, serde::Deserialize)]
2488    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2489    /**Event with signature `Cancelled(bytes32)` and selector `0xbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70`.
2490```solidity
2491event Cancelled(bytes32 indexed id);
2492```*/
2493    #[allow(
2494        non_camel_case_types,
2495        non_snake_case,
2496        clippy::pub_underscore_fields,
2497        clippy::style
2498    )]
2499    #[derive(Clone)]
2500    pub struct Cancelled {
2501        #[allow(missing_docs)]
2502        pub id: alloy::sol_types::private::FixedBytes<32>,
2503    }
2504    #[allow(
2505        non_camel_case_types,
2506        non_snake_case,
2507        clippy::pub_underscore_fields,
2508        clippy::style
2509    )]
2510    const _: () = {
2511        use alloy::sol_types as alloy_sol_types;
2512        #[automatically_derived]
2513        impl alloy_sol_types::SolEvent for Cancelled {
2514            type DataTuple<'a> = ();
2515            type DataToken<'a> = <Self::DataTuple<
2516                'a,
2517            > as alloy_sol_types::SolType>::Token<'a>;
2518            type TopicList = (
2519                alloy_sol_types::sol_data::FixedBytes<32>,
2520                alloy::sol_types::sol_data::FixedBytes<32>,
2521            );
2522            const SIGNATURE: &'static str = "Cancelled(bytes32)";
2523            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2524                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
2525                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
2526                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
2527            ]);
2528            const ANONYMOUS: bool = false;
2529            #[allow(unused_variables)]
2530            #[inline]
2531            fn new(
2532                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2533                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2534            ) -> Self {
2535                Self { id: topics.1 }
2536            }
2537            #[inline]
2538            fn check_signature(
2539                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2540            ) -> alloy_sol_types::Result<()> {
2541                if topics.0 != Self::SIGNATURE_HASH {
2542                    return Err(
2543                        alloy_sol_types::Error::invalid_event_signature_hash(
2544                            Self::SIGNATURE,
2545                            topics.0,
2546                            Self::SIGNATURE_HASH,
2547                        ),
2548                    );
2549                }
2550                Ok(())
2551            }
2552            #[inline]
2553            fn tokenize_body(&self) -> Self::DataToken<'_> {
2554                ()
2555            }
2556            #[inline]
2557            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2558                (Self::SIGNATURE_HASH.into(), self.id.clone())
2559            }
2560            #[inline]
2561            fn encode_topics_raw(
2562                &self,
2563                out: &mut [alloy_sol_types::abi::token::WordToken],
2564            ) -> alloy_sol_types::Result<()> {
2565                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2566                    return Err(alloy_sol_types::Error::Overrun);
2567                }
2568                out[0usize] = alloy_sol_types::abi::token::WordToken(
2569                    Self::SIGNATURE_HASH,
2570                );
2571                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2572                    32,
2573                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2574                Ok(())
2575            }
2576        }
2577        #[automatically_derived]
2578        impl alloy_sol_types::private::IntoLogData for Cancelled {
2579            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2580                From::from(self)
2581            }
2582            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2583                From::from(&self)
2584            }
2585        }
2586        #[automatically_derived]
2587        impl From<&Cancelled> for alloy_sol_types::private::LogData {
2588            #[inline]
2589            fn from(this: &Cancelled) -> alloy_sol_types::private::LogData {
2590                alloy_sol_types::SolEvent::encode_log_data(this)
2591            }
2592        }
2593    };
2594    #[derive(serde::Serialize, serde::Deserialize)]
2595    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2596    /**Event with signature `MinDelayChange(uint256,uint256)` and selector `0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5`.
2597```solidity
2598event MinDelayChange(uint256 oldDuration, uint256 newDuration);
2599```*/
2600    #[allow(
2601        non_camel_case_types,
2602        non_snake_case,
2603        clippy::pub_underscore_fields,
2604        clippy::style
2605    )]
2606    #[derive(Clone)]
2607    pub struct MinDelayChange {
2608        #[allow(missing_docs)]
2609        pub oldDuration: alloy::sol_types::private::primitives::aliases::U256,
2610        #[allow(missing_docs)]
2611        pub newDuration: alloy::sol_types::private::primitives::aliases::U256,
2612    }
2613    #[allow(
2614        non_camel_case_types,
2615        non_snake_case,
2616        clippy::pub_underscore_fields,
2617        clippy::style
2618    )]
2619    const _: () = {
2620        use alloy::sol_types as alloy_sol_types;
2621        #[automatically_derived]
2622        impl alloy_sol_types::SolEvent for MinDelayChange {
2623            type DataTuple<'a> = (
2624                alloy::sol_types::sol_data::Uint<256>,
2625                alloy::sol_types::sol_data::Uint<256>,
2626            );
2627            type DataToken<'a> = <Self::DataTuple<
2628                'a,
2629            > as alloy_sol_types::SolType>::Token<'a>;
2630            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2631            const SIGNATURE: &'static str = "MinDelayChange(uint256,uint256)";
2632            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2633                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
2634                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
2635                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
2636            ]);
2637            const ANONYMOUS: bool = false;
2638            #[allow(unused_variables)]
2639            #[inline]
2640            fn new(
2641                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2642                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2643            ) -> Self {
2644                Self {
2645                    oldDuration: data.0,
2646                    newDuration: data.1,
2647                }
2648            }
2649            #[inline]
2650            fn check_signature(
2651                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2652            ) -> alloy_sol_types::Result<()> {
2653                if topics.0 != Self::SIGNATURE_HASH {
2654                    return Err(
2655                        alloy_sol_types::Error::invalid_event_signature_hash(
2656                            Self::SIGNATURE,
2657                            topics.0,
2658                            Self::SIGNATURE_HASH,
2659                        ),
2660                    );
2661                }
2662                Ok(())
2663            }
2664            #[inline]
2665            fn tokenize_body(&self) -> Self::DataToken<'_> {
2666                (
2667                    <alloy::sol_types::sol_data::Uint<
2668                        256,
2669                    > as alloy_sol_types::SolType>::tokenize(&self.oldDuration),
2670                    <alloy::sol_types::sol_data::Uint<
2671                        256,
2672                    > as alloy_sol_types::SolType>::tokenize(&self.newDuration),
2673                )
2674            }
2675            #[inline]
2676            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2677                (Self::SIGNATURE_HASH.into(),)
2678            }
2679            #[inline]
2680            fn encode_topics_raw(
2681                &self,
2682                out: &mut [alloy_sol_types::abi::token::WordToken],
2683            ) -> alloy_sol_types::Result<()> {
2684                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2685                    return Err(alloy_sol_types::Error::Overrun);
2686                }
2687                out[0usize] = alloy_sol_types::abi::token::WordToken(
2688                    Self::SIGNATURE_HASH,
2689                );
2690                Ok(())
2691            }
2692        }
2693        #[automatically_derived]
2694        impl alloy_sol_types::private::IntoLogData for MinDelayChange {
2695            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2696                From::from(self)
2697            }
2698            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2699                From::from(&self)
2700            }
2701        }
2702        #[automatically_derived]
2703        impl From<&MinDelayChange> for alloy_sol_types::private::LogData {
2704            #[inline]
2705            fn from(this: &MinDelayChange) -> alloy_sol_types::private::LogData {
2706                alloy_sol_types::SolEvent::encode_log_data(this)
2707            }
2708        }
2709    };
2710    #[derive(serde::Serialize, serde::Deserialize)]
2711    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2712    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
2713```solidity
2714event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
2715```*/
2716    #[allow(
2717        non_camel_case_types,
2718        non_snake_case,
2719        clippy::pub_underscore_fields,
2720        clippy::style
2721    )]
2722    #[derive(Clone)]
2723    pub struct RoleAdminChanged {
2724        #[allow(missing_docs)]
2725        pub role: alloy::sol_types::private::FixedBytes<32>,
2726        #[allow(missing_docs)]
2727        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
2728        #[allow(missing_docs)]
2729        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
2730    }
2731    #[allow(
2732        non_camel_case_types,
2733        non_snake_case,
2734        clippy::pub_underscore_fields,
2735        clippy::style
2736    )]
2737    const _: () = {
2738        use alloy::sol_types as alloy_sol_types;
2739        #[automatically_derived]
2740        impl alloy_sol_types::SolEvent for RoleAdminChanged {
2741            type DataTuple<'a> = ();
2742            type DataToken<'a> = <Self::DataTuple<
2743                'a,
2744            > as alloy_sol_types::SolType>::Token<'a>;
2745            type TopicList = (
2746                alloy_sol_types::sol_data::FixedBytes<32>,
2747                alloy::sol_types::sol_data::FixedBytes<32>,
2748                alloy::sol_types::sol_data::FixedBytes<32>,
2749                alloy::sol_types::sol_data::FixedBytes<32>,
2750            );
2751            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
2752            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2753                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
2754                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
2755                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
2756            ]);
2757            const ANONYMOUS: bool = false;
2758            #[allow(unused_variables)]
2759            #[inline]
2760            fn new(
2761                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2762                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2763            ) -> Self {
2764                Self {
2765                    role: topics.1,
2766                    previousAdminRole: topics.2,
2767                    newAdminRole: topics.3,
2768                }
2769            }
2770            #[inline]
2771            fn check_signature(
2772                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2773            ) -> alloy_sol_types::Result<()> {
2774                if topics.0 != Self::SIGNATURE_HASH {
2775                    return Err(
2776                        alloy_sol_types::Error::invalid_event_signature_hash(
2777                            Self::SIGNATURE,
2778                            topics.0,
2779                            Self::SIGNATURE_HASH,
2780                        ),
2781                    );
2782                }
2783                Ok(())
2784            }
2785            #[inline]
2786            fn tokenize_body(&self) -> Self::DataToken<'_> {
2787                ()
2788            }
2789            #[inline]
2790            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2791                (
2792                    Self::SIGNATURE_HASH.into(),
2793                    self.role.clone(),
2794                    self.previousAdminRole.clone(),
2795                    self.newAdminRole.clone(),
2796                )
2797            }
2798            #[inline]
2799            fn encode_topics_raw(
2800                &self,
2801                out: &mut [alloy_sol_types::abi::token::WordToken],
2802            ) -> alloy_sol_types::Result<()> {
2803                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2804                    return Err(alloy_sol_types::Error::Overrun);
2805                }
2806                out[0usize] = alloy_sol_types::abi::token::WordToken(
2807                    Self::SIGNATURE_HASH,
2808                );
2809                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2810                    32,
2811                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2812                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
2813                    32,
2814                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
2815                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
2816                    32,
2817                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
2818                Ok(())
2819            }
2820        }
2821        #[automatically_derived]
2822        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
2823            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2824                From::from(self)
2825            }
2826            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2827                From::from(&self)
2828            }
2829        }
2830        #[automatically_derived]
2831        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
2832            #[inline]
2833            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
2834                alloy_sol_types::SolEvent::encode_log_data(this)
2835            }
2836        }
2837    };
2838    #[derive(serde::Serialize, serde::Deserialize)]
2839    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2840    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
2841```solidity
2842event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
2843```*/
2844    #[allow(
2845        non_camel_case_types,
2846        non_snake_case,
2847        clippy::pub_underscore_fields,
2848        clippy::style
2849    )]
2850    #[derive(Clone)]
2851    pub struct RoleGranted {
2852        #[allow(missing_docs)]
2853        pub role: alloy::sol_types::private::FixedBytes<32>,
2854        #[allow(missing_docs)]
2855        pub account: alloy::sol_types::private::Address,
2856        #[allow(missing_docs)]
2857        pub sender: alloy::sol_types::private::Address,
2858    }
2859    #[allow(
2860        non_camel_case_types,
2861        non_snake_case,
2862        clippy::pub_underscore_fields,
2863        clippy::style
2864    )]
2865    const _: () = {
2866        use alloy::sol_types as alloy_sol_types;
2867        #[automatically_derived]
2868        impl alloy_sol_types::SolEvent for RoleGranted {
2869            type DataTuple<'a> = ();
2870            type DataToken<'a> = <Self::DataTuple<
2871                'a,
2872            > as alloy_sol_types::SolType>::Token<'a>;
2873            type TopicList = (
2874                alloy_sol_types::sol_data::FixedBytes<32>,
2875                alloy::sol_types::sol_data::FixedBytes<32>,
2876                alloy::sol_types::sol_data::Address,
2877                alloy::sol_types::sol_data::Address,
2878            );
2879            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
2880            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
2881                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
2882                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
2883                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
2884            ]);
2885            const ANONYMOUS: bool = false;
2886            #[allow(unused_variables)]
2887            #[inline]
2888            fn new(
2889                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2890                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2891            ) -> Self {
2892                Self {
2893                    role: topics.1,
2894                    account: topics.2,
2895                    sender: topics.3,
2896                }
2897            }
2898            #[inline]
2899            fn check_signature(
2900                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2901            ) -> alloy_sol_types::Result<()> {
2902                if topics.0 != Self::SIGNATURE_HASH {
2903                    return Err(
2904                        alloy_sol_types::Error::invalid_event_signature_hash(
2905                            Self::SIGNATURE,
2906                            topics.0,
2907                            Self::SIGNATURE_HASH,
2908                        ),
2909                    );
2910                }
2911                Ok(())
2912            }
2913            #[inline]
2914            fn tokenize_body(&self) -> Self::DataToken<'_> {
2915                ()
2916            }
2917            #[inline]
2918            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2919                (
2920                    Self::SIGNATURE_HASH.into(),
2921                    self.role.clone(),
2922                    self.account.clone(),
2923                    self.sender.clone(),
2924                )
2925            }
2926            #[inline]
2927            fn encode_topics_raw(
2928                &self,
2929                out: &mut [alloy_sol_types::abi::token::WordToken],
2930            ) -> alloy_sol_types::Result<()> {
2931                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2932                    return Err(alloy_sol_types::Error::Overrun);
2933                }
2934                out[0usize] = alloy_sol_types::abi::token::WordToken(
2935                    Self::SIGNATURE_HASH,
2936                );
2937                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2938                    32,
2939                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2940                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2941                    &self.account,
2942                );
2943                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2944                    &self.sender,
2945                );
2946                Ok(())
2947            }
2948        }
2949        #[automatically_derived]
2950        impl alloy_sol_types::private::IntoLogData for RoleGranted {
2951            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2952                From::from(self)
2953            }
2954            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2955                From::from(&self)
2956            }
2957        }
2958        #[automatically_derived]
2959        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
2960            #[inline]
2961            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
2962                alloy_sol_types::SolEvent::encode_log_data(this)
2963            }
2964        }
2965    };
2966    #[derive(serde::Serialize, serde::Deserialize)]
2967    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2968    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
2969```solidity
2970event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
2971```*/
2972    #[allow(
2973        non_camel_case_types,
2974        non_snake_case,
2975        clippy::pub_underscore_fields,
2976        clippy::style
2977    )]
2978    #[derive(Clone)]
2979    pub struct RoleRevoked {
2980        #[allow(missing_docs)]
2981        pub role: alloy::sol_types::private::FixedBytes<32>,
2982        #[allow(missing_docs)]
2983        pub account: alloy::sol_types::private::Address,
2984        #[allow(missing_docs)]
2985        pub sender: alloy::sol_types::private::Address,
2986    }
2987    #[allow(
2988        non_camel_case_types,
2989        non_snake_case,
2990        clippy::pub_underscore_fields,
2991        clippy::style
2992    )]
2993    const _: () = {
2994        use alloy::sol_types as alloy_sol_types;
2995        #[automatically_derived]
2996        impl alloy_sol_types::SolEvent for RoleRevoked {
2997            type DataTuple<'a> = ();
2998            type DataToken<'a> = <Self::DataTuple<
2999                'a,
3000            > as alloy_sol_types::SolType>::Token<'a>;
3001            type TopicList = (
3002                alloy_sol_types::sol_data::FixedBytes<32>,
3003                alloy::sol_types::sol_data::FixedBytes<32>,
3004                alloy::sol_types::sol_data::Address,
3005                alloy::sol_types::sol_data::Address,
3006            );
3007            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
3008            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
3009                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
3010                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
3011                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
3012            ]);
3013            const ANONYMOUS: bool = false;
3014            #[allow(unused_variables)]
3015            #[inline]
3016            fn new(
3017                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
3018                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
3019            ) -> Self {
3020                Self {
3021                    role: topics.1,
3022                    account: topics.2,
3023                    sender: topics.3,
3024                }
3025            }
3026            #[inline]
3027            fn check_signature(
3028                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
3029            ) -> alloy_sol_types::Result<()> {
3030                if topics.0 != Self::SIGNATURE_HASH {
3031                    return Err(
3032                        alloy_sol_types::Error::invalid_event_signature_hash(
3033                            Self::SIGNATURE,
3034                            topics.0,
3035                            Self::SIGNATURE_HASH,
3036                        ),
3037                    );
3038                }
3039                Ok(())
3040            }
3041            #[inline]
3042            fn tokenize_body(&self) -> Self::DataToken<'_> {
3043                ()
3044            }
3045            #[inline]
3046            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
3047                (
3048                    Self::SIGNATURE_HASH.into(),
3049                    self.role.clone(),
3050                    self.account.clone(),
3051                    self.sender.clone(),
3052                )
3053            }
3054            #[inline]
3055            fn encode_topics_raw(
3056                &self,
3057                out: &mut [alloy_sol_types::abi::token::WordToken],
3058            ) -> alloy_sol_types::Result<()> {
3059                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
3060                    return Err(alloy_sol_types::Error::Overrun);
3061                }
3062                out[0usize] = alloy_sol_types::abi::token::WordToken(
3063                    Self::SIGNATURE_HASH,
3064                );
3065                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
3066                    32,
3067                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
3068                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3069                    &self.account,
3070                );
3071                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
3072                    &self.sender,
3073                );
3074                Ok(())
3075            }
3076        }
3077        #[automatically_derived]
3078        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
3079            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
3080                From::from(self)
3081            }
3082            fn into_log_data(self) -> alloy_sol_types::private::LogData {
3083                From::from(&self)
3084            }
3085        }
3086        #[automatically_derived]
3087        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
3088            #[inline]
3089            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
3090                alloy_sol_types::SolEvent::encode_log_data(this)
3091            }
3092        }
3093    };
3094    /**Constructor`.
3095```solidity
3096constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
3097```*/
3098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3099    #[derive(Clone)]
3100    pub struct constructorCall {
3101        #[allow(missing_docs)]
3102        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
3103        #[allow(missing_docs)]
3104        pub proposers: alloy::sol_types::private::Vec<
3105            alloy::sol_types::private::Address,
3106        >,
3107        #[allow(missing_docs)]
3108        pub executors: alloy::sol_types::private::Vec<
3109            alloy::sol_types::private::Address,
3110        >,
3111        #[allow(missing_docs)]
3112        pub admin: alloy::sol_types::private::Address,
3113    }
3114    const _: () = {
3115        use alloy::sol_types as alloy_sol_types;
3116        {
3117            #[doc(hidden)]
3118            #[allow(dead_code)]
3119            type UnderlyingSolTuple<'a> = (
3120                alloy::sol_types::sol_data::Uint<256>,
3121                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3122                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3123                alloy::sol_types::sol_data::Address,
3124            );
3125            #[doc(hidden)]
3126            type UnderlyingRustTuple<'a> = (
3127                alloy::sol_types::private::primitives::aliases::U256,
3128                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3129                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3130                alloy::sol_types::private::Address,
3131            );
3132            #[cfg(test)]
3133            #[allow(dead_code, unreachable_patterns)]
3134            fn _type_assertion(
3135                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3136            ) {
3137                match _t {
3138                    alloy_sol_types::private::AssertTypeEq::<
3139                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3140                    >(_) => {}
3141                }
3142            }
3143            #[automatically_derived]
3144            #[doc(hidden)]
3145            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
3146                fn from(value: constructorCall) -> Self {
3147                    (value.minDelay, value.proposers, value.executors, value.admin)
3148                }
3149            }
3150            #[automatically_derived]
3151            #[doc(hidden)]
3152            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
3153                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3154                    Self {
3155                        minDelay: tuple.0,
3156                        proposers: tuple.1,
3157                        executors: tuple.2,
3158                        admin: tuple.3,
3159                    }
3160                }
3161            }
3162        }
3163        #[automatically_derived]
3164        impl alloy_sol_types::SolConstructor for constructorCall {
3165            type Parameters<'a> = (
3166                alloy::sol_types::sol_data::Uint<256>,
3167                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3168                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3169                alloy::sol_types::sol_data::Address,
3170            );
3171            type Token<'a> = <Self::Parameters<
3172                'a,
3173            > as alloy_sol_types::SolType>::Token<'a>;
3174            #[inline]
3175            fn new<'a>(
3176                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3177            ) -> Self {
3178                tuple.into()
3179            }
3180            #[inline]
3181            fn tokenize(&self) -> Self::Token<'_> {
3182                (
3183                    <alloy::sol_types::sol_data::Uint<
3184                        256,
3185                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
3186                    <alloy::sol_types::sol_data::Array<
3187                        alloy::sol_types::sol_data::Address,
3188                    > as alloy_sol_types::SolType>::tokenize(&self.proposers),
3189                    <alloy::sol_types::sol_data::Array<
3190                        alloy::sol_types::sol_data::Address,
3191                    > as alloy_sol_types::SolType>::tokenize(&self.executors),
3192                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3193                        &self.admin,
3194                    ),
3195                )
3196            }
3197        }
3198    };
3199    #[derive(serde::Serialize, serde::Deserialize)]
3200    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3201    /**Function with signature `CANCELLER_ROLE()` and selector `0xb08e51c0`.
3202```solidity
3203function CANCELLER_ROLE() external view returns (bytes32);
3204```*/
3205    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3206    #[derive(Clone)]
3207    pub struct CANCELLER_ROLECall;
3208    #[derive(serde::Serialize, serde::Deserialize)]
3209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3210    ///Container type for the return parameters of the [`CANCELLER_ROLE()`](CANCELLER_ROLECall) function.
3211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3212    #[derive(Clone)]
3213    pub struct CANCELLER_ROLEReturn {
3214        #[allow(missing_docs)]
3215        pub _0: alloy::sol_types::private::FixedBytes<32>,
3216    }
3217    #[allow(
3218        non_camel_case_types,
3219        non_snake_case,
3220        clippy::pub_underscore_fields,
3221        clippy::style
3222    )]
3223    const _: () = {
3224        use alloy::sol_types as alloy_sol_types;
3225        {
3226            #[doc(hidden)]
3227            #[allow(dead_code)]
3228            type UnderlyingSolTuple<'a> = ();
3229            #[doc(hidden)]
3230            type UnderlyingRustTuple<'a> = ();
3231            #[cfg(test)]
3232            #[allow(dead_code, unreachable_patterns)]
3233            fn _type_assertion(
3234                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3235            ) {
3236                match _t {
3237                    alloy_sol_types::private::AssertTypeEq::<
3238                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3239                    >(_) => {}
3240                }
3241            }
3242            #[automatically_derived]
3243            #[doc(hidden)]
3244            impl ::core::convert::From<CANCELLER_ROLECall> for UnderlyingRustTuple<'_> {
3245                fn from(value: CANCELLER_ROLECall) -> Self {
3246                    ()
3247                }
3248            }
3249            #[automatically_derived]
3250            #[doc(hidden)]
3251            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CANCELLER_ROLECall {
3252                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3253                    Self
3254                }
3255            }
3256        }
3257        {
3258            #[doc(hidden)]
3259            #[allow(dead_code)]
3260            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3261            #[doc(hidden)]
3262            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3263            #[cfg(test)]
3264            #[allow(dead_code, unreachable_patterns)]
3265            fn _type_assertion(
3266                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3267            ) {
3268                match _t {
3269                    alloy_sol_types::private::AssertTypeEq::<
3270                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3271                    >(_) => {}
3272                }
3273            }
3274            #[automatically_derived]
3275            #[doc(hidden)]
3276            impl ::core::convert::From<CANCELLER_ROLEReturn>
3277            for UnderlyingRustTuple<'_> {
3278                fn from(value: CANCELLER_ROLEReturn) -> Self {
3279                    (value._0,)
3280                }
3281            }
3282            #[automatically_derived]
3283            #[doc(hidden)]
3284            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3285            for CANCELLER_ROLEReturn {
3286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3287                    Self { _0: tuple.0 }
3288                }
3289            }
3290        }
3291        #[automatically_derived]
3292        impl alloy_sol_types::SolCall for CANCELLER_ROLECall {
3293            type Parameters<'a> = ();
3294            type Token<'a> = <Self::Parameters<
3295                'a,
3296            > as alloy_sol_types::SolType>::Token<'a>;
3297            type Return = alloy::sol_types::private::FixedBytes<32>;
3298            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3299            type ReturnToken<'a> = <Self::ReturnTuple<
3300                'a,
3301            > as alloy_sol_types::SolType>::Token<'a>;
3302            const SIGNATURE: &'static str = "CANCELLER_ROLE()";
3303            const SELECTOR: [u8; 4] = [176u8, 142u8, 81u8, 192u8];
3304            #[inline]
3305            fn new<'a>(
3306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3307            ) -> Self {
3308                tuple.into()
3309            }
3310            #[inline]
3311            fn tokenize(&self) -> Self::Token<'_> {
3312                ()
3313            }
3314            #[inline]
3315            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3316                (
3317                    <alloy::sol_types::sol_data::FixedBytes<
3318                        32,
3319                    > as alloy_sol_types::SolType>::tokenize(ret),
3320                )
3321            }
3322            #[inline]
3323            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3324                <Self::ReturnTuple<
3325                    '_,
3326                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3327                    .map(|r| {
3328                        let r: CANCELLER_ROLEReturn = r.into();
3329                        r._0
3330                    })
3331            }
3332            #[inline]
3333            fn abi_decode_returns_with_config(
3334                data: &[u8],
3335                config: alloy_sol_types::abi::AbiDecoderConfig,
3336            ) -> alloy_sol_types::Result<Self::Return> {
3337                <Self::ReturnTuple<
3338                    '_,
3339                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
3340                        data,
3341                        config,
3342                    )
3343                    .map(|r| {
3344                        let r: CANCELLER_ROLEReturn = r.into();
3345                        r._0
3346                    })
3347            }
3348            #[inline]
3349            fn abi_decode_returns_validate(
3350                data: &[u8],
3351            ) -> alloy_sol_types::Result<Self::Return> {
3352                Self::abi_decode_returns_with_config(
3353                    data,
3354                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3355                )
3356            }
3357        }
3358    };
3359    #[derive(serde::Serialize, serde::Deserialize)]
3360    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3361    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
3362```solidity
3363function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
3364```*/
3365    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3366    #[derive(Clone)]
3367    pub struct DEFAULT_ADMIN_ROLECall;
3368    #[derive(serde::Serialize, serde::Deserialize)]
3369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3370    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
3371    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3372    #[derive(Clone)]
3373    pub struct DEFAULT_ADMIN_ROLEReturn {
3374        #[allow(missing_docs)]
3375        pub _0: alloy::sol_types::private::FixedBytes<32>,
3376    }
3377    #[allow(
3378        non_camel_case_types,
3379        non_snake_case,
3380        clippy::pub_underscore_fields,
3381        clippy::style
3382    )]
3383    const _: () = {
3384        use alloy::sol_types as alloy_sol_types;
3385        {
3386            #[doc(hidden)]
3387            #[allow(dead_code)]
3388            type UnderlyingSolTuple<'a> = ();
3389            #[doc(hidden)]
3390            type UnderlyingRustTuple<'a> = ();
3391            #[cfg(test)]
3392            #[allow(dead_code, unreachable_patterns)]
3393            fn _type_assertion(
3394                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3395            ) {
3396                match _t {
3397                    alloy_sol_types::private::AssertTypeEq::<
3398                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3399                    >(_) => {}
3400                }
3401            }
3402            #[automatically_derived]
3403            #[doc(hidden)]
3404            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall>
3405            for UnderlyingRustTuple<'_> {
3406                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
3407                    ()
3408                }
3409            }
3410            #[automatically_derived]
3411            #[doc(hidden)]
3412            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3413            for DEFAULT_ADMIN_ROLECall {
3414                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3415                    Self
3416                }
3417            }
3418        }
3419        {
3420            #[doc(hidden)]
3421            #[allow(dead_code)]
3422            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3423            #[doc(hidden)]
3424            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3425            #[cfg(test)]
3426            #[allow(dead_code, unreachable_patterns)]
3427            fn _type_assertion(
3428                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3429            ) {
3430                match _t {
3431                    alloy_sol_types::private::AssertTypeEq::<
3432                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3433                    >(_) => {}
3434                }
3435            }
3436            #[automatically_derived]
3437            #[doc(hidden)]
3438            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn>
3439            for UnderlyingRustTuple<'_> {
3440                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
3441                    (value._0,)
3442                }
3443            }
3444            #[automatically_derived]
3445            #[doc(hidden)]
3446            impl ::core::convert::From<UnderlyingRustTuple<'_>>
3447            for DEFAULT_ADMIN_ROLEReturn {
3448                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3449                    Self { _0: tuple.0 }
3450                }
3451            }
3452        }
3453        #[automatically_derived]
3454        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
3455            type Parameters<'a> = ();
3456            type Token<'a> = <Self::Parameters<
3457                'a,
3458            > as alloy_sol_types::SolType>::Token<'a>;
3459            type Return = alloy::sol_types::private::FixedBytes<32>;
3460            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3461            type ReturnToken<'a> = <Self::ReturnTuple<
3462                'a,
3463            > as alloy_sol_types::SolType>::Token<'a>;
3464            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
3465            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
3466            #[inline]
3467            fn new<'a>(
3468                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3469            ) -> Self {
3470                tuple.into()
3471            }
3472            #[inline]
3473            fn tokenize(&self) -> Self::Token<'_> {
3474                ()
3475            }
3476            #[inline]
3477            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3478                (
3479                    <alloy::sol_types::sol_data::FixedBytes<
3480                        32,
3481                    > as alloy_sol_types::SolType>::tokenize(ret),
3482                )
3483            }
3484            #[inline]
3485            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3486                <Self::ReturnTuple<
3487                    '_,
3488                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3489                    .map(|r| {
3490                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3491                        r._0
3492                    })
3493            }
3494            #[inline]
3495            fn abi_decode_returns_with_config(
3496                data: &[u8],
3497                config: alloy_sol_types::abi::AbiDecoderConfig,
3498            ) -> alloy_sol_types::Result<Self::Return> {
3499                <Self::ReturnTuple<
3500                    '_,
3501                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
3502                        data,
3503                        config,
3504                    )
3505                    .map(|r| {
3506                        let r: DEFAULT_ADMIN_ROLEReturn = r.into();
3507                        r._0
3508                    })
3509            }
3510            #[inline]
3511            fn abi_decode_returns_validate(
3512                data: &[u8],
3513            ) -> alloy_sol_types::Result<Self::Return> {
3514                Self::abi_decode_returns_with_config(
3515                    data,
3516                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3517                )
3518            }
3519        }
3520    };
3521    #[derive(serde::Serialize, serde::Deserialize)]
3522    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3523    /**Function with signature `EXECUTOR_ROLE()` and selector `0x07bd0265`.
3524```solidity
3525function EXECUTOR_ROLE() external view returns (bytes32);
3526```*/
3527    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3528    #[derive(Clone)]
3529    pub struct EXECUTOR_ROLECall;
3530    #[derive(serde::Serialize, serde::Deserialize)]
3531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3532    ///Container type for the return parameters of the [`EXECUTOR_ROLE()`](EXECUTOR_ROLECall) function.
3533    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3534    #[derive(Clone)]
3535    pub struct EXECUTOR_ROLEReturn {
3536        #[allow(missing_docs)]
3537        pub _0: alloy::sol_types::private::FixedBytes<32>,
3538    }
3539    #[allow(
3540        non_camel_case_types,
3541        non_snake_case,
3542        clippy::pub_underscore_fields,
3543        clippy::style
3544    )]
3545    const _: () = {
3546        use alloy::sol_types as alloy_sol_types;
3547        {
3548            #[doc(hidden)]
3549            #[allow(dead_code)]
3550            type UnderlyingSolTuple<'a> = ();
3551            #[doc(hidden)]
3552            type UnderlyingRustTuple<'a> = ();
3553            #[cfg(test)]
3554            #[allow(dead_code, unreachable_patterns)]
3555            fn _type_assertion(
3556                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3557            ) {
3558                match _t {
3559                    alloy_sol_types::private::AssertTypeEq::<
3560                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3561                    >(_) => {}
3562                }
3563            }
3564            #[automatically_derived]
3565            #[doc(hidden)]
3566            impl ::core::convert::From<EXECUTOR_ROLECall> for UnderlyingRustTuple<'_> {
3567                fn from(value: EXECUTOR_ROLECall) -> Self {
3568                    ()
3569                }
3570            }
3571            #[automatically_derived]
3572            #[doc(hidden)]
3573            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLECall {
3574                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3575                    Self
3576                }
3577            }
3578        }
3579        {
3580            #[doc(hidden)]
3581            #[allow(dead_code)]
3582            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3583            #[doc(hidden)]
3584            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3585            #[cfg(test)]
3586            #[allow(dead_code, unreachable_patterns)]
3587            fn _type_assertion(
3588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3589            ) {
3590                match _t {
3591                    alloy_sol_types::private::AssertTypeEq::<
3592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3593                    >(_) => {}
3594                }
3595            }
3596            #[automatically_derived]
3597            #[doc(hidden)]
3598            impl ::core::convert::From<EXECUTOR_ROLEReturn> for UnderlyingRustTuple<'_> {
3599                fn from(value: EXECUTOR_ROLEReturn) -> Self {
3600                    (value._0,)
3601                }
3602            }
3603            #[automatically_derived]
3604            #[doc(hidden)]
3605            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLEReturn {
3606                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3607                    Self { _0: tuple.0 }
3608                }
3609            }
3610        }
3611        #[automatically_derived]
3612        impl alloy_sol_types::SolCall for EXECUTOR_ROLECall {
3613            type Parameters<'a> = ();
3614            type Token<'a> = <Self::Parameters<
3615                'a,
3616            > as alloy_sol_types::SolType>::Token<'a>;
3617            type Return = alloy::sol_types::private::FixedBytes<32>;
3618            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3619            type ReturnToken<'a> = <Self::ReturnTuple<
3620                'a,
3621            > as alloy_sol_types::SolType>::Token<'a>;
3622            const SIGNATURE: &'static str = "EXECUTOR_ROLE()";
3623            const SELECTOR: [u8; 4] = [7u8, 189u8, 2u8, 101u8];
3624            #[inline]
3625            fn new<'a>(
3626                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3627            ) -> Self {
3628                tuple.into()
3629            }
3630            #[inline]
3631            fn tokenize(&self) -> Self::Token<'_> {
3632                ()
3633            }
3634            #[inline]
3635            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3636                (
3637                    <alloy::sol_types::sol_data::FixedBytes<
3638                        32,
3639                    > as alloy_sol_types::SolType>::tokenize(ret),
3640                )
3641            }
3642            #[inline]
3643            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3644                <Self::ReturnTuple<
3645                    '_,
3646                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3647                    .map(|r| {
3648                        let r: EXECUTOR_ROLEReturn = r.into();
3649                        r._0
3650                    })
3651            }
3652            #[inline]
3653            fn abi_decode_returns_with_config(
3654                data: &[u8],
3655                config: alloy_sol_types::abi::AbiDecoderConfig,
3656            ) -> alloy_sol_types::Result<Self::Return> {
3657                <Self::ReturnTuple<
3658                    '_,
3659                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
3660                        data,
3661                        config,
3662                    )
3663                    .map(|r| {
3664                        let r: EXECUTOR_ROLEReturn = r.into();
3665                        r._0
3666                    })
3667            }
3668            #[inline]
3669            fn abi_decode_returns_validate(
3670                data: &[u8],
3671            ) -> alloy_sol_types::Result<Self::Return> {
3672                Self::abi_decode_returns_with_config(
3673                    data,
3674                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3675                )
3676            }
3677        }
3678    };
3679    #[derive(serde::Serialize, serde::Deserialize)]
3680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3681    /**Function with signature `PROPOSER_ROLE()` and selector `0x8f61f4f5`.
3682```solidity
3683function PROPOSER_ROLE() external view returns (bytes32);
3684```*/
3685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3686    #[derive(Clone)]
3687    pub struct PROPOSER_ROLECall;
3688    #[derive(serde::Serialize, serde::Deserialize)]
3689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3690    ///Container type for the return parameters of the [`PROPOSER_ROLE()`](PROPOSER_ROLECall) function.
3691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3692    #[derive(Clone)]
3693    pub struct PROPOSER_ROLEReturn {
3694        #[allow(missing_docs)]
3695        pub _0: alloy::sol_types::private::FixedBytes<32>,
3696    }
3697    #[allow(
3698        non_camel_case_types,
3699        non_snake_case,
3700        clippy::pub_underscore_fields,
3701        clippy::style
3702    )]
3703    const _: () = {
3704        use alloy::sol_types as alloy_sol_types;
3705        {
3706            #[doc(hidden)]
3707            #[allow(dead_code)]
3708            type UnderlyingSolTuple<'a> = ();
3709            #[doc(hidden)]
3710            type UnderlyingRustTuple<'a> = ();
3711            #[cfg(test)]
3712            #[allow(dead_code, unreachable_patterns)]
3713            fn _type_assertion(
3714                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3715            ) {
3716                match _t {
3717                    alloy_sol_types::private::AssertTypeEq::<
3718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3719                    >(_) => {}
3720                }
3721            }
3722            #[automatically_derived]
3723            #[doc(hidden)]
3724            impl ::core::convert::From<PROPOSER_ROLECall> for UnderlyingRustTuple<'_> {
3725                fn from(value: PROPOSER_ROLECall) -> Self {
3726                    ()
3727                }
3728            }
3729            #[automatically_derived]
3730            #[doc(hidden)]
3731            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLECall {
3732                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3733                    Self
3734                }
3735            }
3736        }
3737        {
3738            #[doc(hidden)]
3739            #[allow(dead_code)]
3740            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3741            #[doc(hidden)]
3742            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3743            #[cfg(test)]
3744            #[allow(dead_code, unreachable_patterns)]
3745            fn _type_assertion(
3746                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3747            ) {
3748                match _t {
3749                    alloy_sol_types::private::AssertTypeEq::<
3750                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3751                    >(_) => {}
3752                }
3753            }
3754            #[automatically_derived]
3755            #[doc(hidden)]
3756            impl ::core::convert::From<PROPOSER_ROLEReturn> for UnderlyingRustTuple<'_> {
3757                fn from(value: PROPOSER_ROLEReturn) -> Self {
3758                    (value._0,)
3759                }
3760            }
3761            #[automatically_derived]
3762            #[doc(hidden)]
3763            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLEReturn {
3764                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3765                    Self { _0: tuple.0 }
3766                }
3767            }
3768        }
3769        #[automatically_derived]
3770        impl alloy_sol_types::SolCall for PROPOSER_ROLECall {
3771            type Parameters<'a> = ();
3772            type Token<'a> = <Self::Parameters<
3773                'a,
3774            > as alloy_sol_types::SolType>::Token<'a>;
3775            type Return = alloy::sol_types::private::FixedBytes<32>;
3776            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3777            type ReturnToken<'a> = <Self::ReturnTuple<
3778                'a,
3779            > as alloy_sol_types::SolType>::Token<'a>;
3780            const SIGNATURE: &'static str = "PROPOSER_ROLE()";
3781            const SELECTOR: [u8; 4] = [143u8, 97u8, 244u8, 245u8];
3782            #[inline]
3783            fn new<'a>(
3784                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3785            ) -> Self {
3786                tuple.into()
3787            }
3788            #[inline]
3789            fn tokenize(&self) -> Self::Token<'_> {
3790                ()
3791            }
3792            #[inline]
3793            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3794                (
3795                    <alloy::sol_types::sol_data::FixedBytes<
3796                        32,
3797                    > as alloy_sol_types::SolType>::tokenize(ret),
3798                )
3799            }
3800            #[inline]
3801            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3802                <Self::ReturnTuple<
3803                    '_,
3804                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3805                    .map(|r| {
3806                        let r: PROPOSER_ROLEReturn = r.into();
3807                        r._0
3808                    })
3809            }
3810            #[inline]
3811            fn abi_decode_returns_with_config(
3812                data: &[u8],
3813                config: alloy_sol_types::abi::AbiDecoderConfig,
3814            ) -> alloy_sol_types::Result<Self::Return> {
3815                <Self::ReturnTuple<
3816                    '_,
3817                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
3818                        data,
3819                        config,
3820                    )
3821                    .map(|r| {
3822                        let r: PROPOSER_ROLEReturn = r.into();
3823                        r._0
3824                    })
3825            }
3826            #[inline]
3827            fn abi_decode_returns_validate(
3828                data: &[u8],
3829            ) -> alloy_sol_types::Result<Self::Return> {
3830                Self::abi_decode_returns_with_config(
3831                    data,
3832                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3833                )
3834            }
3835        }
3836    };
3837    #[derive(serde::Serialize, serde::Deserialize)]
3838    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3839    /**Function with signature `cancel(bytes32)` and selector `0xc4d252f5`.
3840```solidity
3841function cancel(bytes32 id) external;
3842```*/
3843    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3844    #[derive(Clone)]
3845    pub struct cancelCall {
3846        #[allow(missing_docs)]
3847        pub id: alloy::sol_types::private::FixedBytes<32>,
3848    }
3849    ///Container type for the return parameters of the [`cancel(bytes32)`](cancelCall) function.
3850    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3851    #[derive(Clone)]
3852    pub struct cancelReturn {}
3853    #[allow(
3854        non_camel_case_types,
3855        non_snake_case,
3856        clippy::pub_underscore_fields,
3857        clippy::style
3858    )]
3859    const _: () = {
3860        use alloy::sol_types as alloy_sol_types;
3861        {
3862            #[doc(hidden)]
3863            #[allow(dead_code)]
3864            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3865            #[doc(hidden)]
3866            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3867            #[cfg(test)]
3868            #[allow(dead_code, unreachable_patterns)]
3869            fn _type_assertion(
3870                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3871            ) {
3872                match _t {
3873                    alloy_sol_types::private::AssertTypeEq::<
3874                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3875                    >(_) => {}
3876                }
3877            }
3878            #[automatically_derived]
3879            #[doc(hidden)]
3880            impl ::core::convert::From<cancelCall> for UnderlyingRustTuple<'_> {
3881                fn from(value: cancelCall) -> Self {
3882                    (value.id,)
3883                }
3884            }
3885            #[automatically_derived]
3886            #[doc(hidden)]
3887            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelCall {
3888                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3889                    Self { id: tuple.0 }
3890                }
3891            }
3892        }
3893        {
3894            #[doc(hidden)]
3895            #[allow(dead_code)]
3896            type UnderlyingSolTuple<'a> = ();
3897            #[doc(hidden)]
3898            type UnderlyingRustTuple<'a> = ();
3899            #[cfg(test)]
3900            #[allow(dead_code, unreachable_patterns)]
3901            fn _type_assertion(
3902                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3903            ) {
3904                match _t {
3905                    alloy_sol_types::private::AssertTypeEq::<
3906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3907                    >(_) => {}
3908                }
3909            }
3910            #[automatically_derived]
3911            #[doc(hidden)]
3912            impl ::core::convert::From<cancelReturn> for UnderlyingRustTuple<'_> {
3913                fn from(value: cancelReturn) -> Self {
3914                    ()
3915                }
3916            }
3917            #[automatically_derived]
3918            #[doc(hidden)]
3919            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelReturn {
3920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3921                    Self {}
3922                }
3923            }
3924        }
3925        impl cancelReturn {
3926            fn _tokenize(
3927                &self,
3928            ) -> <cancelCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
3929                ()
3930            }
3931        }
3932        #[automatically_derived]
3933        impl alloy_sol_types::SolCall for cancelCall {
3934            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3935            type Token<'a> = <Self::Parameters<
3936                'a,
3937            > as alloy_sol_types::SolType>::Token<'a>;
3938            type Return = cancelReturn;
3939            type ReturnTuple<'a> = ();
3940            type ReturnToken<'a> = <Self::ReturnTuple<
3941                'a,
3942            > as alloy_sol_types::SolType>::Token<'a>;
3943            const SIGNATURE: &'static str = "cancel(bytes32)";
3944            const SELECTOR: [u8; 4] = [196u8, 210u8, 82u8, 245u8];
3945            #[inline]
3946            fn new<'a>(
3947                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3948            ) -> Self {
3949                tuple.into()
3950            }
3951            #[inline]
3952            fn tokenize(&self) -> Self::Token<'_> {
3953                (
3954                    <alloy::sol_types::sol_data::FixedBytes<
3955                        32,
3956                    > as alloy_sol_types::SolType>::tokenize(&self.id),
3957                )
3958            }
3959            #[inline]
3960            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
3961                cancelReturn::_tokenize(ret)
3962            }
3963            #[inline]
3964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
3965                <Self::ReturnTuple<
3966                    '_,
3967                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
3968                    .map(Into::into)
3969            }
3970            #[inline]
3971            fn abi_decode_returns_with_config(
3972                data: &[u8],
3973                config: alloy_sol_types::abi::AbiDecoderConfig,
3974            ) -> alloy_sol_types::Result<Self::Return> {
3975                <Self::ReturnTuple<
3976                    '_,
3977                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
3978                        data,
3979                        config,
3980                    )
3981                    .map(Into::into)
3982            }
3983            #[inline]
3984            fn abi_decode_returns_validate(
3985                data: &[u8],
3986            ) -> alloy_sol_types::Result<Self::Return> {
3987                Self::abi_decode_returns_with_config(
3988                    data,
3989                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
3990                )
3991            }
3992        }
3993    };
3994    #[derive(serde::Serialize, serde::Deserialize)]
3995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3996    /**Function with signature `execute(address,uint256,bytes,bytes32,bytes32)` and selector `0x134008d3`.
3997```solidity
3998function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
3999```*/
4000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4001    #[derive(Clone)]
4002    pub struct executeCall {
4003        #[allow(missing_docs)]
4004        pub target: alloy::sol_types::private::Address,
4005        #[allow(missing_docs)]
4006        pub value: alloy::sol_types::private::primitives::aliases::U256,
4007        #[allow(missing_docs)]
4008        pub payload: alloy::sol_types::private::Bytes,
4009        #[allow(missing_docs)]
4010        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
4011        #[allow(missing_docs)]
4012        pub salt: alloy::sol_types::private::FixedBytes<32>,
4013    }
4014    ///Container type for the return parameters of the [`execute(address,uint256,bytes,bytes32,bytes32)`](executeCall) function.
4015    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4016    #[derive(Clone)]
4017    pub struct executeReturn {}
4018    #[allow(
4019        non_camel_case_types,
4020        non_snake_case,
4021        clippy::pub_underscore_fields,
4022        clippy::style
4023    )]
4024    const _: () = {
4025        use alloy::sol_types as alloy_sol_types;
4026        {
4027            #[doc(hidden)]
4028            #[allow(dead_code)]
4029            type UnderlyingSolTuple<'a> = (
4030                alloy::sol_types::sol_data::Address,
4031                alloy::sol_types::sol_data::Uint<256>,
4032                alloy::sol_types::sol_data::Bytes,
4033                alloy::sol_types::sol_data::FixedBytes<32>,
4034                alloy::sol_types::sol_data::FixedBytes<32>,
4035            );
4036            #[doc(hidden)]
4037            type UnderlyingRustTuple<'a> = (
4038                alloy::sol_types::private::Address,
4039                alloy::sol_types::private::primitives::aliases::U256,
4040                alloy::sol_types::private::Bytes,
4041                alloy::sol_types::private::FixedBytes<32>,
4042                alloy::sol_types::private::FixedBytes<32>,
4043            );
4044            #[cfg(test)]
4045            #[allow(dead_code, unreachable_patterns)]
4046            fn _type_assertion(
4047                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4048            ) {
4049                match _t {
4050                    alloy_sol_types::private::AssertTypeEq::<
4051                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4052                    >(_) => {}
4053                }
4054            }
4055            #[automatically_derived]
4056            #[doc(hidden)]
4057            impl ::core::convert::From<executeCall> for UnderlyingRustTuple<'_> {
4058                fn from(value: executeCall) -> Self {
4059                    (
4060                        value.target,
4061                        value.value,
4062                        value.payload,
4063                        value.predecessor,
4064                        value.salt,
4065                    )
4066                }
4067            }
4068            #[automatically_derived]
4069            #[doc(hidden)]
4070            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeCall {
4071                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4072                    Self {
4073                        target: tuple.0,
4074                        value: tuple.1,
4075                        payload: tuple.2,
4076                        predecessor: tuple.3,
4077                        salt: tuple.4,
4078                    }
4079                }
4080            }
4081        }
4082        {
4083            #[doc(hidden)]
4084            #[allow(dead_code)]
4085            type UnderlyingSolTuple<'a> = ();
4086            #[doc(hidden)]
4087            type UnderlyingRustTuple<'a> = ();
4088            #[cfg(test)]
4089            #[allow(dead_code, unreachable_patterns)]
4090            fn _type_assertion(
4091                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4092            ) {
4093                match _t {
4094                    alloy_sol_types::private::AssertTypeEq::<
4095                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4096                    >(_) => {}
4097                }
4098            }
4099            #[automatically_derived]
4100            #[doc(hidden)]
4101            impl ::core::convert::From<executeReturn> for UnderlyingRustTuple<'_> {
4102                fn from(value: executeReturn) -> Self {
4103                    ()
4104                }
4105            }
4106            #[automatically_derived]
4107            #[doc(hidden)]
4108            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeReturn {
4109                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4110                    Self {}
4111                }
4112            }
4113        }
4114        impl executeReturn {
4115            fn _tokenize(
4116                &self,
4117            ) -> <executeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4118                ()
4119            }
4120        }
4121        #[automatically_derived]
4122        impl alloy_sol_types::SolCall for executeCall {
4123            type Parameters<'a> = (
4124                alloy::sol_types::sol_data::Address,
4125                alloy::sol_types::sol_data::Uint<256>,
4126                alloy::sol_types::sol_data::Bytes,
4127                alloy::sol_types::sol_data::FixedBytes<32>,
4128                alloy::sol_types::sol_data::FixedBytes<32>,
4129            );
4130            type Token<'a> = <Self::Parameters<
4131                'a,
4132            > as alloy_sol_types::SolType>::Token<'a>;
4133            type Return = executeReturn;
4134            type ReturnTuple<'a> = ();
4135            type ReturnToken<'a> = <Self::ReturnTuple<
4136                'a,
4137            > as alloy_sol_types::SolType>::Token<'a>;
4138            const SIGNATURE: &'static str = "execute(address,uint256,bytes,bytes32,bytes32)";
4139            const SELECTOR: [u8; 4] = [19u8, 64u8, 8u8, 211u8];
4140            #[inline]
4141            fn new<'a>(
4142                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4143            ) -> Self {
4144                tuple.into()
4145            }
4146            #[inline]
4147            fn tokenize(&self) -> Self::Token<'_> {
4148                (
4149                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4150                        &self.target,
4151                    ),
4152                    <alloy::sol_types::sol_data::Uint<
4153                        256,
4154                    > as alloy_sol_types::SolType>::tokenize(&self.value),
4155                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4156                        &self.payload,
4157                    ),
4158                    <alloy::sol_types::sol_data::FixedBytes<
4159                        32,
4160                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4161                    <alloy::sol_types::sol_data::FixedBytes<
4162                        32,
4163                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4164                )
4165            }
4166            #[inline]
4167            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4168                executeReturn::_tokenize(ret)
4169            }
4170            #[inline]
4171            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4172                <Self::ReturnTuple<
4173                    '_,
4174                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4175                    .map(Into::into)
4176            }
4177            #[inline]
4178            fn abi_decode_returns_with_config(
4179                data: &[u8],
4180                config: alloy_sol_types::abi::AbiDecoderConfig,
4181            ) -> alloy_sol_types::Result<Self::Return> {
4182                <Self::ReturnTuple<
4183                    '_,
4184                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
4185                        data,
4186                        config,
4187                    )
4188                    .map(Into::into)
4189            }
4190            #[inline]
4191            fn abi_decode_returns_validate(
4192                data: &[u8],
4193            ) -> alloy_sol_types::Result<Self::Return> {
4194                Self::abi_decode_returns_with_config(
4195                    data,
4196                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4197                )
4198            }
4199        }
4200    };
4201    #[derive(serde::Serialize, serde::Deserialize)]
4202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4203    /**Function with signature `executeBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xe38335e5`.
4204```solidity
4205function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
4206```*/
4207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4208    #[derive(Clone)]
4209    pub struct executeBatchCall {
4210        #[allow(missing_docs)]
4211        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4212        #[allow(missing_docs)]
4213        pub values: alloy::sol_types::private::Vec<
4214            alloy::sol_types::private::primitives::aliases::U256,
4215        >,
4216        #[allow(missing_docs)]
4217        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4218        #[allow(missing_docs)]
4219        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
4220        #[allow(missing_docs)]
4221        pub salt: alloy::sol_types::private::FixedBytes<32>,
4222    }
4223    ///Container type for the return parameters of the [`executeBatch(address[],uint256[],bytes[],bytes32,bytes32)`](executeBatchCall) function.
4224    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4225    #[derive(Clone)]
4226    pub struct executeBatchReturn {}
4227    #[allow(
4228        non_camel_case_types,
4229        non_snake_case,
4230        clippy::pub_underscore_fields,
4231        clippy::style
4232    )]
4233    const _: () = {
4234        use alloy::sol_types as alloy_sol_types;
4235        {
4236            #[doc(hidden)]
4237            #[allow(dead_code)]
4238            type UnderlyingSolTuple<'a> = (
4239                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4240                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4241                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4242                alloy::sol_types::sol_data::FixedBytes<32>,
4243                alloy::sol_types::sol_data::FixedBytes<32>,
4244            );
4245            #[doc(hidden)]
4246            type UnderlyingRustTuple<'a> = (
4247                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4248                alloy::sol_types::private::Vec<
4249                    alloy::sol_types::private::primitives::aliases::U256,
4250                >,
4251                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4252                alloy::sol_types::private::FixedBytes<32>,
4253                alloy::sol_types::private::FixedBytes<32>,
4254            );
4255            #[cfg(test)]
4256            #[allow(dead_code, unreachable_patterns)]
4257            fn _type_assertion(
4258                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4259            ) {
4260                match _t {
4261                    alloy_sol_types::private::AssertTypeEq::<
4262                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4263                    >(_) => {}
4264                }
4265            }
4266            #[automatically_derived]
4267            #[doc(hidden)]
4268            impl ::core::convert::From<executeBatchCall> for UnderlyingRustTuple<'_> {
4269                fn from(value: executeBatchCall) -> Self {
4270                    (
4271                        value.targets,
4272                        value.values,
4273                        value.payloads,
4274                        value.predecessor,
4275                        value.salt,
4276                    )
4277                }
4278            }
4279            #[automatically_derived]
4280            #[doc(hidden)]
4281            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchCall {
4282                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4283                    Self {
4284                        targets: tuple.0,
4285                        values: tuple.1,
4286                        payloads: tuple.2,
4287                        predecessor: tuple.3,
4288                        salt: tuple.4,
4289                    }
4290                }
4291            }
4292        }
4293        {
4294            #[doc(hidden)]
4295            #[allow(dead_code)]
4296            type UnderlyingSolTuple<'a> = ();
4297            #[doc(hidden)]
4298            type UnderlyingRustTuple<'a> = ();
4299            #[cfg(test)]
4300            #[allow(dead_code, unreachable_patterns)]
4301            fn _type_assertion(
4302                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4303            ) {
4304                match _t {
4305                    alloy_sol_types::private::AssertTypeEq::<
4306                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4307                    >(_) => {}
4308                }
4309            }
4310            #[automatically_derived]
4311            #[doc(hidden)]
4312            impl ::core::convert::From<executeBatchReturn> for UnderlyingRustTuple<'_> {
4313                fn from(value: executeBatchReturn) -> Self {
4314                    ()
4315                }
4316            }
4317            #[automatically_derived]
4318            #[doc(hidden)]
4319            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchReturn {
4320                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4321                    Self {}
4322                }
4323            }
4324        }
4325        impl executeBatchReturn {
4326            fn _tokenize(
4327                &self,
4328            ) -> <executeBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
4329                ()
4330            }
4331        }
4332        #[automatically_derived]
4333        impl alloy_sol_types::SolCall for executeBatchCall {
4334            type Parameters<'a> = (
4335                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4336                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4337                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4338                alloy::sol_types::sol_data::FixedBytes<32>,
4339                alloy::sol_types::sol_data::FixedBytes<32>,
4340            );
4341            type Token<'a> = <Self::Parameters<
4342                'a,
4343            > as alloy_sol_types::SolType>::Token<'a>;
4344            type Return = executeBatchReturn;
4345            type ReturnTuple<'a> = ();
4346            type ReturnToken<'a> = <Self::ReturnTuple<
4347                'a,
4348            > as alloy_sol_types::SolType>::Token<'a>;
4349            const SIGNATURE: &'static str = "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)";
4350            const SELECTOR: [u8; 4] = [227u8, 131u8, 53u8, 229u8];
4351            #[inline]
4352            fn new<'a>(
4353                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4354            ) -> Self {
4355                tuple.into()
4356            }
4357            #[inline]
4358            fn tokenize(&self) -> Self::Token<'_> {
4359                (
4360                    <alloy::sol_types::sol_data::Array<
4361                        alloy::sol_types::sol_data::Address,
4362                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
4363                    <alloy::sol_types::sol_data::Array<
4364                        alloy::sol_types::sol_data::Uint<256>,
4365                    > as alloy_sol_types::SolType>::tokenize(&self.values),
4366                    <alloy::sol_types::sol_data::Array<
4367                        alloy::sol_types::sol_data::Bytes,
4368                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
4369                    <alloy::sol_types::sol_data::FixedBytes<
4370                        32,
4371                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4372                    <alloy::sol_types::sol_data::FixedBytes<
4373                        32,
4374                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4375                )
4376            }
4377            #[inline]
4378            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4379                executeBatchReturn::_tokenize(ret)
4380            }
4381            #[inline]
4382            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4383                <Self::ReturnTuple<
4384                    '_,
4385                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4386                    .map(Into::into)
4387            }
4388            #[inline]
4389            fn abi_decode_returns_with_config(
4390                data: &[u8],
4391                config: alloy_sol_types::abi::AbiDecoderConfig,
4392            ) -> alloy_sol_types::Result<Self::Return> {
4393                <Self::ReturnTuple<
4394                    '_,
4395                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
4396                        data,
4397                        config,
4398                    )
4399                    .map(Into::into)
4400            }
4401            #[inline]
4402            fn abi_decode_returns_validate(
4403                data: &[u8],
4404            ) -> alloy_sol_types::Result<Self::Return> {
4405                Self::abi_decode_returns_with_config(
4406                    data,
4407                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4408                )
4409            }
4410        }
4411    };
4412    #[derive(serde::Serialize, serde::Deserialize)]
4413    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4414    /**Function with signature `getMinDelay()` and selector `0xf27a0c92`.
4415```solidity
4416function getMinDelay() external view returns (uint256);
4417```*/
4418    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4419    #[derive(Clone)]
4420    pub struct getMinDelayCall;
4421    #[derive(serde::Serialize, serde::Deserialize)]
4422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4423    ///Container type for the return parameters of the [`getMinDelay()`](getMinDelayCall) function.
4424    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4425    #[derive(Clone)]
4426    pub struct getMinDelayReturn {
4427        #[allow(missing_docs)]
4428        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4429    }
4430    #[allow(
4431        non_camel_case_types,
4432        non_snake_case,
4433        clippy::pub_underscore_fields,
4434        clippy::style
4435    )]
4436    const _: () = {
4437        use alloy::sol_types as alloy_sol_types;
4438        {
4439            #[doc(hidden)]
4440            #[allow(dead_code)]
4441            type UnderlyingSolTuple<'a> = ();
4442            #[doc(hidden)]
4443            type UnderlyingRustTuple<'a> = ();
4444            #[cfg(test)]
4445            #[allow(dead_code, unreachable_patterns)]
4446            fn _type_assertion(
4447                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4448            ) {
4449                match _t {
4450                    alloy_sol_types::private::AssertTypeEq::<
4451                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4452                    >(_) => {}
4453                }
4454            }
4455            #[automatically_derived]
4456            #[doc(hidden)]
4457            impl ::core::convert::From<getMinDelayCall> for UnderlyingRustTuple<'_> {
4458                fn from(value: getMinDelayCall) -> Self {
4459                    ()
4460                }
4461            }
4462            #[automatically_derived]
4463            #[doc(hidden)]
4464            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayCall {
4465                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4466                    Self
4467                }
4468            }
4469        }
4470        {
4471            #[doc(hidden)]
4472            #[allow(dead_code)]
4473            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4474            #[doc(hidden)]
4475            type UnderlyingRustTuple<'a> = (
4476                alloy::sol_types::private::primitives::aliases::U256,
4477            );
4478            #[cfg(test)]
4479            #[allow(dead_code, unreachable_patterns)]
4480            fn _type_assertion(
4481                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4482            ) {
4483                match _t {
4484                    alloy_sol_types::private::AssertTypeEq::<
4485                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4486                    >(_) => {}
4487                }
4488            }
4489            #[automatically_derived]
4490            #[doc(hidden)]
4491            impl ::core::convert::From<getMinDelayReturn> for UnderlyingRustTuple<'_> {
4492                fn from(value: getMinDelayReturn) -> Self {
4493                    (value._0,)
4494                }
4495            }
4496            #[automatically_derived]
4497            #[doc(hidden)]
4498            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayReturn {
4499                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4500                    Self { _0: tuple.0 }
4501                }
4502            }
4503        }
4504        #[automatically_derived]
4505        impl alloy_sol_types::SolCall for getMinDelayCall {
4506            type Parameters<'a> = ();
4507            type Token<'a> = <Self::Parameters<
4508                'a,
4509            > as alloy_sol_types::SolType>::Token<'a>;
4510            type Return = alloy::sol_types::private::primitives::aliases::U256;
4511            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4512            type ReturnToken<'a> = <Self::ReturnTuple<
4513                'a,
4514            > as alloy_sol_types::SolType>::Token<'a>;
4515            const SIGNATURE: &'static str = "getMinDelay()";
4516            const SELECTOR: [u8; 4] = [242u8, 122u8, 12u8, 146u8];
4517            #[inline]
4518            fn new<'a>(
4519                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4520            ) -> Self {
4521                tuple.into()
4522            }
4523            #[inline]
4524            fn tokenize(&self) -> Self::Token<'_> {
4525                ()
4526            }
4527            #[inline]
4528            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4529                (
4530                    <alloy::sol_types::sol_data::Uint<
4531                        256,
4532                    > as alloy_sol_types::SolType>::tokenize(ret),
4533                )
4534            }
4535            #[inline]
4536            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4537                <Self::ReturnTuple<
4538                    '_,
4539                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4540                    .map(|r| {
4541                        let r: getMinDelayReturn = r.into();
4542                        r._0
4543                    })
4544            }
4545            #[inline]
4546            fn abi_decode_returns_with_config(
4547                data: &[u8],
4548                config: alloy_sol_types::abi::AbiDecoderConfig,
4549            ) -> alloy_sol_types::Result<Self::Return> {
4550                <Self::ReturnTuple<
4551                    '_,
4552                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
4553                        data,
4554                        config,
4555                    )
4556                    .map(|r| {
4557                        let r: getMinDelayReturn = r.into();
4558                        r._0
4559                    })
4560            }
4561            #[inline]
4562            fn abi_decode_returns_validate(
4563                data: &[u8],
4564            ) -> alloy_sol_types::Result<Self::Return> {
4565                Self::abi_decode_returns_with_config(
4566                    data,
4567                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4568                )
4569            }
4570        }
4571    };
4572    #[derive(serde::Serialize, serde::Deserialize)]
4573    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4574    /**Function with signature `getOperationState(bytes32)` and selector `0x7958004c`.
4575```solidity
4576function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
4577```*/
4578    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4579    #[derive(Clone)]
4580    pub struct getOperationStateCall {
4581        #[allow(missing_docs)]
4582        pub id: alloy::sol_types::private::FixedBytes<32>,
4583    }
4584    #[derive(serde::Serialize, serde::Deserialize)]
4585    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4586    ///Container type for the return parameters of the [`getOperationState(bytes32)`](getOperationStateCall) function.
4587    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4588    #[derive(Clone)]
4589    pub struct getOperationStateReturn {
4590        #[allow(missing_docs)]
4591        pub _0: <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4592    }
4593    #[allow(
4594        non_camel_case_types,
4595        non_snake_case,
4596        clippy::pub_underscore_fields,
4597        clippy::style
4598    )]
4599    const _: () = {
4600        use alloy::sol_types as alloy_sol_types;
4601        {
4602            #[doc(hidden)]
4603            #[allow(dead_code)]
4604            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4605            #[doc(hidden)]
4606            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4607            #[cfg(test)]
4608            #[allow(dead_code, unreachable_patterns)]
4609            fn _type_assertion(
4610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4611            ) {
4612                match _t {
4613                    alloy_sol_types::private::AssertTypeEq::<
4614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4615                    >(_) => {}
4616                }
4617            }
4618            #[automatically_derived]
4619            #[doc(hidden)]
4620            impl ::core::convert::From<getOperationStateCall>
4621            for UnderlyingRustTuple<'_> {
4622                fn from(value: getOperationStateCall) -> Self {
4623                    (value.id,)
4624                }
4625            }
4626            #[automatically_derived]
4627            #[doc(hidden)]
4628            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4629            for getOperationStateCall {
4630                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4631                    Self { id: tuple.0 }
4632                }
4633            }
4634        }
4635        {
4636            #[doc(hidden)]
4637            #[allow(dead_code)]
4638            type UnderlyingSolTuple<'a> = (TimelockController::OperationState,);
4639            #[doc(hidden)]
4640            type UnderlyingRustTuple<'a> = (
4641                <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4642            );
4643            #[cfg(test)]
4644            #[allow(dead_code, unreachable_patterns)]
4645            fn _type_assertion(
4646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4647            ) {
4648                match _t {
4649                    alloy_sol_types::private::AssertTypeEq::<
4650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4651                    >(_) => {}
4652                }
4653            }
4654            #[automatically_derived]
4655            #[doc(hidden)]
4656            impl ::core::convert::From<getOperationStateReturn>
4657            for UnderlyingRustTuple<'_> {
4658                fn from(value: getOperationStateReturn) -> Self {
4659                    (value._0,)
4660                }
4661            }
4662            #[automatically_derived]
4663            #[doc(hidden)]
4664            impl ::core::convert::From<UnderlyingRustTuple<'_>>
4665            for getOperationStateReturn {
4666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4667                    Self { _0: tuple.0 }
4668                }
4669            }
4670        }
4671        #[automatically_derived]
4672        impl alloy_sol_types::SolCall for getOperationStateCall {
4673            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4674            type Token<'a> = <Self::Parameters<
4675                'a,
4676            > as alloy_sol_types::SolType>::Token<'a>;
4677            type Return = <TimelockController::OperationState as alloy::sol_types::SolType>::RustType;
4678            type ReturnTuple<'a> = (TimelockController::OperationState,);
4679            type ReturnToken<'a> = <Self::ReturnTuple<
4680                'a,
4681            > as alloy_sol_types::SolType>::Token<'a>;
4682            const SIGNATURE: &'static str = "getOperationState(bytes32)";
4683            const SELECTOR: [u8; 4] = [121u8, 88u8, 0u8, 76u8];
4684            #[inline]
4685            fn new<'a>(
4686                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4687            ) -> Self {
4688                tuple.into()
4689            }
4690            #[inline]
4691            fn tokenize(&self) -> Self::Token<'_> {
4692                (
4693                    <alloy::sol_types::sol_data::FixedBytes<
4694                        32,
4695                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4696                )
4697            }
4698            #[inline]
4699            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4700                (
4701                    <TimelockController::OperationState as alloy_sol_types::SolType>::tokenize(
4702                        ret,
4703                    ),
4704                )
4705            }
4706            #[inline]
4707            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4708                <Self::ReturnTuple<
4709                    '_,
4710                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4711                    .map(|r| {
4712                        let r: getOperationStateReturn = r.into();
4713                        r._0
4714                    })
4715            }
4716            #[inline]
4717            fn abi_decode_returns_with_config(
4718                data: &[u8],
4719                config: alloy_sol_types::abi::AbiDecoderConfig,
4720            ) -> alloy_sol_types::Result<Self::Return> {
4721                <Self::ReturnTuple<
4722                    '_,
4723                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
4724                        data,
4725                        config,
4726                    )
4727                    .map(|r| {
4728                        let r: getOperationStateReturn = r.into();
4729                        r._0
4730                    })
4731            }
4732            #[inline]
4733            fn abi_decode_returns_validate(
4734                data: &[u8],
4735            ) -> alloy_sol_types::Result<Self::Return> {
4736                Self::abi_decode_returns_with_config(
4737                    data,
4738                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4739                )
4740            }
4741        }
4742    };
4743    #[derive(serde::Serialize, serde::Deserialize)]
4744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4745    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
4746```solidity
4747function getRoleAdmin(bytes32 role) external view returns (bytes32);
4748```*/
4749    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4750    #[derive(Clone)]
4751    pub struct getRoleAdminCall {
4752        #[allow(missing_docs)]
4753        pub role: alloy::sol_types::private::FixedBytes<32>,
4754    }
4755    #[derive(serde::Serialize, serde::Deserialize)]
4756    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4757    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
4758    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4759    #[derive(Clone)]
4760    pub struct getRoleAdminReturn {
4761        #[allow(missing_docs)]
4762        pub _0: alloy::sol_types::private::FixedBytes<32>,
4763    }
4764    #[allow(
4765        non_camel_case_types,
4766        non_snake_case,
4767        clippy::pub_underscore_fields,
4768        clippy::style
4769    )]
4770    const _: () = {
4771        use alloy::sol_types as alloy_sol_types;
4772        {
4773            #[doc(hidden)]
4774            #[allow(dead_code)]
4775            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4776            #[doc(hidden)]
4777            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4778            #[cfg(test)]
4779            #[allow(dead_code, unreachable_patterns)]
4780            fn _type_assertion(
4781                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4782            ) {
4783                match _t {
4784                    alloy_sol_types::private::AssertTypeEq::<
4785                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4786                    >(_) => {}
4787                }
4788            }
4789            #[automatically_derived]
4790            #[doc(hidden)]
4791            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
4792                fn from(value: getRoleAdminCall) -> Self {
4793                    (value.role,)
4794                }
4795            }
4796            #[automatically_derived]
4797            #[doc(hidden)]
4798            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
4799                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4800                    Self { role: tuple.0 }
4801                }
4802            }
4803        }
4804        {
4805            #[doc(hidden)]
4806            #[allow(dead_code)]
4807            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4808            #[doc(hidden)]
4809            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4810            #[cfg(test)]
4811            #[allow(dead_code, unreachable_patterns)]
4812            fn _type_assertion(
4813                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4814            ) {
4815                match _t {
4816                    alloy_sol_types::private::AssertTypeEq::<
4817                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4818                    >(_) => {}
4819                }
4820            }
4821            #[automatically_derived]
4822            #[doc(hidden)]
4823            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
4824                fn from(value: getRoleAdminReturn) -> Self {
4825                    (value._0,)
4826                }
4827            }
4828            #[automatically_derived]
4829            #[doc(hidden)]
4830            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
4831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4832                    Self { _0: tuple.0 }
4833                }
4834            }
4835        }
4836        #[automatically_derived]
4837        impl alloy_sol_types::SolCall for getRoleAdminCall {
4838            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4839            type Token<'a> = <Self::Parameters<
4840                'a,
4841            > as alloy_sol_types::SolType>::Token<'a>;
4842            type Return = alloy::sol_types::private::FixedBytes<32>;
4843            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4844            type ReturnToken<'a> = <Self::ReturnTuple<
4845                'a,
4846            > as alloy_sol_types::SolType>::Token<'a>;
4847            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
4848            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
4849            #[inline]
4850            fn new<'a>(
4851                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4852            ) -> Self {
4853                tuple.into()
4854            }
4855            #[inline]
4856            fn tokenize(&self) -> Self::Token<'_> {
4857                (
4858                    <alloy::sol_types::sol_data::FixedBytes<
4859                        32,
4860                    > as alloy_sol_types::SolType>::tokenize(&self.role),
4861                )
4862            }
4863            #[inline]
4864            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
4865                (
4866                    <alloy::sol_types::sol_data::FixedBytes<
4867                        32,
4868                    > as alloy_sol_types::SolType>::tokenize(ret),
4869                )
4870            }
4871            #[inline]
4872            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
4873                <Self::ReturnTuple<
4874                    '_,
4875                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
4876                    .map(|r| {
4877                        let r: getRoleAdminReturn = r.into();
4878                        r._0
4879                    })
4880            }
4881            #[inline]
4882            fn abi_decode_returns_with_config(
4883                data: &[u8],
4884                config: alloy_sol_types::abi::AbiDecoderConfig,
4885            ) -> alloy_sol_types::Result<Self::Return> {
4886                <Self::ReturnTuple<
4887                    '_,
4888                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
4889                        data,
4890                        config,
4891                    )
4892                    .map(|r| {
4893                        let r: getRoleAdminReturn = r.into();
4894                        r._0
4895                    })
4896            }
4897            #[inline]
4898            fn abi_decode_returns_validate(
4899                data: &[u8],
4900            ) -> alloy_sol_types::Result<Self::Return> {
4901                Self::abi_decode_returns_with_config(
4902                    data,
4903                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
4904                )
4905            }
4906        }
4907    };
4908    #[derive(serde::Serialize, serde::Deserialize)]
4909    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4910    /**Function with signature `getTimestamp(bytes32)` and selector `0xd45c4435`.
4911```solidity
4912function getTimestamp(bytes32 id) external view returns (uint256);
4913```*/
4914    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4915    #[derive(Clone)]
4916    pub struct getTimestampCall {
4917        #[allow(missing_docs)]
4918        pub id: alloy::sol_types::private::FixedBytes<32>,
4919    }
4920    #[derive(serde::Serialize, serde::Deserialize)]
4921    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4922    ///Container type for the return parameters of the [`getTimestamp(bytes32)`](getTimestampCall) function.
4923    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4924    #[derive(Clone)]
4925    pub struct getTimestampReturn {
4926        #[allow(missing_docs)]
4927        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4928    }
4929    #[allow(
4930        non_camel_case_types,
4931        non_snake_case,
4932        clippy::pub_underscore_fields,
4933        clippy::style
4934    )]
4935    const _: () = {
4936        use alloy::sol_types as alloy_sol_types;
4937        {
4938            #[doc(hidden)]
4939            #[allow(dead_code)]
4940            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4941            #[doc(hidden)]
4942            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4943            #[cfg(test)]
4944            #[allow(dead_code, unreachable_patterns)]
4945            fn _type_assertion(
4946                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4947            ) {
4948                match _t {
4949                    alloy_sol_types::private::AssertTypeEq::<
4950                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4951                    >(_) => {}
4952                }
4953            }
4954            #[automatically_derived]
4955            #[doc(hidden)]
4956            impl ::core::convert::From<getTimestampCall> for UnderlyingRustTuple<'_> {
4957                fn from(value: getTimestampCall) -> Self {
4958                    (value.id,)
4959                }
4960            }
4961            #[automatically_derived]
4962            #[doc(hidden)]
4963            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampCall {
4964                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4965                    Self { id: tuple.0 }
4966                }
4967            }
4968        }
4969        {
4970            #[doc(hidden)]
4971            #[allow(dead_code)]
4972            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4973            #[doc(hidden)]
4974            type UnderlyingRustTuple<'a> = (
4975                alloy::sol_types::private::primitives::aliases::U256,
4976            );
4977            #[cfg(test)]
4978            #[allow(dead_code, unreachable_patterns)]
4979            fn _type_assertion(
4980                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4981            ) {
4982                match _t {
4983                    alloy_sol_types::private::AssertTypeEq::<
4984                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4985                    >(_) => {}
4986                }
4987            }
4988            #[automatically_derived]
4989            #[doc(hidden)]
4990            impl ::core::convert::From<getTimestampReturn> for UnderlyingRustTuple<'_> {
4991                fn from(value: getTimestampReturn) -> Self {
4992                    (value._0,)
4993                }
4994            }
4995            #[automatically_derived]
4996            #[doc(hidden)]
4997            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampReturn {
4998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4999                    Self { _0: tuple.0 }
5000                }
5001            }
5002        }
5003        #[automatically_derived]
5004        impl alloy_sol_types::SolCall for getTimestampCall {
5005            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5006            type Token<'a> = <Self::Parameters<
5007                'a,
5008            > as alloy_sol_types::SolType>::Token<'a>;
5009            type Return = alloy::sol_types::private::primitives::aliases::U256;
5010            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
5011            type ReturnToken<'a> = <Self::ReturnTuple<
5012                'a,
5013            > as alloy_sol_types::SolType>::Token<'a>;
5014            const SIGNATURE: &'static str = "getTimestamp(bytes32)";
5015            const SELECTOR: [u8; 4] = [212u8, 92u8, 68u8, 53u8];
5016            #[inline]
5017            fn new<'a>(
5018                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5019            ) -> Self {
5020                tuple.into()
5021            }
5022            #[inline]
5023            fn tokenize(&self) -> Self::Token<'_> {
5024                (
5025                    <alloy::sol_types::sol_data::FixedBytes<
5026                        32,
5027                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5028                )
5029            }
5030            #[inline]
5031            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5032                (
5033                    <alloy::sol_types::sol_data::Uint<
5034                        256,
5035                    > as alloy_sol_types::SolType>::tokenize(ret),
5036                )
5037            }
5038            #[inline]
5039            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5040                <Self::ReturnTuple<
5041                    '_,
5042                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5043                    .map(|r| {
5044                        let r: getTimestampReturn = r.into();
5045                        r._0
5046                    })
5047            }
5048            #[inline]
5049            fn abi_decode_returns_with_config(
5050                data: &[u8],
5051                config: alloy_sol_types::abi::AbiDecoderConfig,
5052            ) -> alloy_sol_types::Result<Self::Return> {
5053                <Self::ReturnTuple<
5054                    '_,
5055                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
5056                        data,
5057                        config,
5058                    )
5059                    .map(|r| {
5060                        let r: getTimestampReturn = r.into();
5061                        r._0
5062                    })
5063            }
5064            #[inline]
5065            fn abi_decode_returns_validate(
5066                data: &[u8],
5067            ) -> alloy_sol_types::Result<Self::Return> {
5068                Self::abi_decode_returns_with_config(
5069                    data,
5070                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5071                )
5072            }
5073        }
5074    };
5075    #[derive(serde::Serialize, serde::Deserialize)]
5076    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5077    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
5078```solidity
5079function grantRole(bytes32 role, address account) external;
5080```*/
5081    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5082    #[derive(Clone)]
5083    pub struct grantRoleCall {
5084        #[allow(missing_docs)]
5085        pub role: alloy::sol_types::private::FixedBytes<32>,
5086        #[allow(missing_docs)]
5087        pub account: alloy::sol_types::private::Address,
5088    }
5089    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
5090    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5091    #[derive(Clone)]
5092    pub struct grantRoleReturn {}
5093    #[allow(
5094        non_camel_case_types,
5095        non_snake_case,
5096        clippy::pub_underscore_fields,
5097        clippy::style
5098    )]
5099    const _: () = {
5100        use alloy::sol_types as alloy_sol_types;
5101        {
5102            #[doc(hidden)]
5103            #[allow(dead_code)]
5104            type UnderlyingSolTuple<'a> = (
5105                alloy::sol_types::sol_data::FixedBytes<32>,
5106                alloy::sol_types::sol_data::Address,
5107            );
5108            #[doc(hidden)]
5109            type UnderlyingRustTuple<'a> = (
5110                alloy::sol_types::private::FixedBytes<32>,
5111                alloy::sol_types::private::Address,
5112            );
5113            #[cfg(test)]
5114            #[allow(dead_code, unreachable_patterns)]
5115            fn _type_assertion(
5116                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5117            ) {
5118                match _t {
5119                    alloy_sol_types::private::AssertTypeEq::<
5120                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5121                    >(_) => {}
5122                }
5123            }
5124            #[automatically_derived]
5125            #[doc(hidden)]
5126            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
5127                fn from(value: grantRoleCall) -> Self {
5128                    (value.role, value.account)
5129                }
5130            }
5131            #[automatically_derived]
5132            #[doc(hidden)]
5133            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
5134                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5135                    Self {
5136                        role: tuple.0,
5137                        account: tuple.1,
5138                    }
5139                }
5140            }
5141        }
5142        {
5143            #[doc(hidden)]
5144            #[allow(dead_code)]
5145            type UnderlyingSolTuple<'a> = ();
5146            #[doc(hidden)]
5147            type UnderlyingRustTuple<'a> = ();
5148            #[cfg(test)]
5149            #[allow(dead_code, unreachable_patterns)]
5150            fn _type_assertion(
5151                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5152            ) {
5153                match _t {
5154                    alloy_sol_types::private::AssertTypeEq::<
5155                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5156                    >(_) => {}
5157                }
5158            }
5159            #[automatically_derived]
5160            #[doc(hidden)]
5161            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
5162                fn from(value: grantRoleReturn) -> Self {
5163                    ()
5164                }
5165            }
5166            #[automatically_derived]
5167            #[doc(hidden)]
5168            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
5169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5170                    Self {}
5171                }
5172            }
5173        }
5174        impl grantRoleReturn {
5175            fn _tokenize(
5176                &self,
5177            ) -> <grantRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
5178                ()
5179            }
5180        }
5181        #[automatically_derived]
5182        impl alloy_sol_types::SolCall for grantRoleCall {
5183            type Parameters<'a> = (
5184                alloy::sol_types::sol_data::FixedBytes<32>,
5185                alloy::sol_types::sol_data::Address,
5186            );
5187            type Token<'a> = <Self::Parameters<
5188                'a,
5189            > as alloy_sol_types::SolType>::Token<'a>;
5190            type Return = grantRoleReturn;
5191            type ReturnTuple<'a> = ();
5192            type ReturnToken<'a> = <Self::ReturnTuple<
5193                'a,
5194            > as alloy_sol_types::SolType>::Token<'a>;
5195            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
5196            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
5197            #[inline]
5198            fn new<'a>(
5199                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5200            ) -> Self {
5201                tuple.into()
5202            }
5203            #[inline]
5204            fn tokenize(&self) -> Self::Token<'_> {
5205                (
5206                    <alloy::sol_types::sol_data::FixedBytes<
5207                        32,
5208                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5209                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5210                        &self.account,
5211                    ),
5212                )
5213            }
5214            #[inline]
5215            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5216                grantRoleReturn::_tokenize(ret)
5217            }
5218            #[inline]
5219            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5220                <Self::ReturnTuple<
5221                    '_,
5222                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5223                    .map(Into::into)
5224            }
5225            #[inline]
5226            fn abi_decode_returns_with_config(
5227                data: &[u8],
5228                config: alloy_sol_types::abi::AbiDecoderConfig,
5229            ) -> alloy_sol_types::Result<Self::Return> {
5230                <Self::ReturnTuple<
5231                    '_,
5232                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
5233                        data,
5234                        config,
5235                    )
5236                    .map(Into::into)
5237            }
5238            #[inline]
5239            fn abi_decode_returns_validate(
5240                data: &[u8],
5241            ) -> alloy_sol_types::Result<Self::Return> {
5242                Self::abi_decode_returns_with_config(
5243                    data,
5244                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5245                )
5246            }
5247        }
5248    };
5249    #[derive(serde::Serialize, serde::Deserialize)]
5250    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5251    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
5252```solidity
5253function hasRole(bytes32 role, address account) external view returns (bool);
5254```*/
5255    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5256    #[derive(Clone)]
5257    pub struct hasRoleCall {
5258        #[allow(missing_docs)]
5259        pub role: alloy::sol_types::private::FixedBytes<32>,
5260        #[allow(missing_docs)]
5261        pub account: alloy::sol_types::private::Address,
5262    }
5263    #[derive(serde::Serialize, serde::Deserialize)]
5264    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5265    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
5266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5267    #[derive(Clone)]
5268    pub struct hasRoleReturn {
5269        #[allow(missing_docs)]
5270        pub _0: bool,
5271    }
5272    #[allow(
5273        non_camel_case_types,
5274        non_snake_case,
5275        clippy::pub_underscore_fields,
5276        clippy::style
5277    )]
5278    const _: () = {
5279        use alloy::sol_types as alloy_sol_types;
5280        {
5281            #[doc(hidden)]
5282            #[allow(dead_code)]
5283            type UnderlyingSolTuple<'a> = (
5284                alloy::sol_types::sol_data::FixedBytes<32>,
5285                alloy::sol_types::sol_data::Address,
5286            );
5287            #[doc(hidden)]
5288            type UnderlyingRustTuple<'a> = (
5289                alloy::sol_types::private::FixedBytes<32>,
5290                alloy::sol_types::private::Address,
5291            );
5292            #[cfg(test)]
5293            #[allow(dead_code, unreachable_patterns)]
5294            fn _type_assertion(
5295                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5296            ) {
5297                match _t {
5298                    alloy_sol_types::private::AssertTypeEq::<
5299                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5300                    >(_) => {}
5301                }
5302            }
5303            #[automatically_derived]
5304            #[doc(hidden)]
5305            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
5306                fn from(value: hasRoleCall) -> Self {
5307                    (value.role, value.account)
5308                }
5309            }
5310            #[automatically_derived]
5311            #[doc(hidden)]
5312            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
5313                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5314                    Self {
5315                        role: tuple.0,
5316                        account: tuple.1,
5317                    }
5318                }
5319            }
5320        }
5321        {
5322            #[doc(hidden)]
5323            #[allow(dead_code)]
5324            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5325            #[doc(hidden)]
5326            type UnderlyingRustTuple<'a> = (bool,);
5327            #[cfg(test)]
5328            #[allow(dead_code, unreachable_patterns)]
5329            fn _type_assertion(
5330                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5331            ) {
5332                match _t {
5333                    alloy_sol_types::private::AssertTypeEq::<
5334                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5335                    >(_) => {}
5336                }
5337            }
5338            #[automatically_derived]
5339            #[doc(hidden)]
5340            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
5341                fn from(value: hasRoleReturn) -> Self {
5342                    (value._0,)
5343                }
5344            }
5345            #[automatically_derived]
5346            #[doc(hidden)]
5347            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
5348                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5349                    Self { _0: tuple.0 }
5350                }
5351            }
5352        }
5353        #[automatically_derived]
5354        impl alloy_sol_types::SolCall for hasRoleCall {
5355            type Parameters<'a> = (
5356                alloy::sol_types::sol_data::FixedBytes<32>,
5357                alloy::sol_types::sol_data::Address,
5358            );
5359            type Token<'a> = <Self::Parameters<
5360                'a,
5361            > as alloy_sol_types::SolType>::Token<'a>;
5362            type Return = bool;
5363            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5364            type ReturnToken<'a> = <Self::ReturnTuple<
5365                'a,
5366            > as alloy_sol_types::SolType>::Token<'a>;
5367            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
5368            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
5369            #[inline]
5370            fn new<'a>(
5371                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5372            ) -> Self {
5373                tuple.into()
5374            }
5375            #[inline]
5376            fn tokenize(&self) -> Self::Token<'_> {
5377                (
5378                    <alloy::sol_types::sol_data::FixedBytes<
5379                        32,
5380                    > as alloy_sol_types::SolType>::tokenize(&self.role),
5381                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5382                        &self.account,
5383                    ),
5384                )
5385            }
5386            #[inline]
5387            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5388                (
5389                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5390                        ret,
5391                    ),
5392                )
5393            }
5394            #[inline]
5395            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5396                <Self::ReturnTuple<
5397                    '_,
5398                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5399                    .map(|r| {
5400                        let r: hasRoleReturn = r.into();
5401                        r._0
5402                    })
5403            }
5404            #[inline]
5405            fn abi_decode_returns_with_config(
5406                data: &[u8],
5407                config: alloy_sol_types::abi::AbiDecoderConfig,
5408            ) -> alloy_sol_types::Result<Self::Return> {
5409                <Self::ReturnTuple<
5410                    '_,
5411                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
5412                        data,
5413                        config,
5414                    )
5415                    .map(|r| {
5416                        let r: hasRoleReturn = r.into();
5417                        r._0
5418                    })
5419            }
5420            #[inline]
5421            fn abi_decode_returns_validate(
5422                data: &[u8],
5423            ) -> alloy_sol_types::Result<Self::Return> {
5424                Self::abi_decode_returns_with_config(
5425                    data,
5426                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5427                )
5428            }
5429        }
5430    };
5431    #[derive(serde::Serialize, serde::Deserialize)]
5432    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5433    /**Function with signature `hashOperation(address,uint256,bytes,bytes32,bytes32)` and selector `0x8065657f`.
5434```solidity
5435function hashOperation(address target, uint256 value, bytes memory data, 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 hashOperationCall {
5440        #[allow(missing_docs)]
5441        pub target: alloy::sol_types::private::Address,
5442        #[allow(missing_docs)]
5443        pub value: alloy::sol_types::private::primitives::aliases::U256,
5444        #[allow(missing_docs)]
5445        pub data: alloy::sol_types::private::Bytes,
5446        #[allow(missing_docs)]
5447        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5448        #[allow(missing_docs)]
5449        pub salt: alloy::sol_types::private::FixedBytes<32>,
5450    }
5451    #[derive(serde::Serialize, serde::Deserialize)]
5452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5453    ///Container type for the return parameters of the [`hashOperation(address,uint256,bytes,bytes32,bytes32)`](hashOperationCall) function.
5454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5455    #[derive(Clone)]
5456    pub struct hashOperationReturn {
5457        #[allow(missing_docs)]
5458        pub _0: alloy::sol_types::private::FixedBytes<32>,
5459    }
5460    #[allow(
5461        non_camel_case_types,
5462        non_snake_case,
5463        clippy::pub_underscore_fields,
5464        clippy::style
5465    )]
5466    const _: () = {
5467        use alloy::sol_types as alloy_sol_types;
5468        {
5469            #[doc(hidden)]
5470            #[allow(dead_code)]
5471            type UnderlyingSolTuple<'a> = (
5472                alloy::sol_types::sol_data::Address,
5473                alloy::sol_types::sol_data::Uint<256>,
5474                alloy::sol_types::sol_data::Bytes,
5475                alloy::sol_types::sol_data::FixedBytes<32>,
5476                alloy::sol_types::sol_data::FixedBytes<32>,
5477            );
5478            #[doc(hidden)]
5479            type UnderlyingRustTuple<'a> = (
5480                alloy::sol_types::private::Address,
5481                alloy::sol_types::private::primitives::aliases::U256,
5482                alloy::sol_types::private::Bytes,
5483                alloy::sol_types::private::FixedBytes<32>,
5484                alloy::sol_types::private::FixedBytes<32>,
5485            );
5486            #[cfg(test)]
5487            #[allow(dead_code, unreachable_patterns)]
5488            fn _type_assertion(
5489                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5490            ) {
5491                match _t {
5492                    alloy_sol_types::private::AssertTypeEq::<
5493                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5494                    >(_) => {}
5495                }
5496            }
5497            #[automatically_derived]
5498            #[doc(hidden)]
5499            impl ::core::convert::From<hashOperationCall> for UnderlyingRustTuple<'_> {
5500                fn from(value: hashOperationCall) -> Self {
5501                    (
5502                        value.target,
5503                        value.value,
5504                        value.data,
5505                        value.predecessor,
5506                        value.salt,
5507                    )
5508                }
5509            }
5510            #[automatically_derived]
5511            #[doc(hidden)]
5512            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationCall {
5513                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5514                    Self {
5515                        target: tuple.0,
5516                        value: tuple.1,
5517                        data: tuple.2,
5518                        predecessor: tuple.3,
5519                        salt: tuple.4,
5520                    }
5521                }
5522            }
5523        }
5524        {
5525            #[doc(hidden)]
5526            #[allow(dead_code)]
5527            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5528            #[doc(hidden)]
5529            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5530            #[cfg(test)]
5531            #[allow(dead_code, unreachable_patterns)]
5532            fn _type_assertion(
5533                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5534            ) {
5535                match _t {
5536                    alloy_sol_types::private::AssertTypeEq::<
5537                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5538                    >(_) => {}
5539                }
5540            }
5541            #[automatically_derived]
5542            #[doc(hidden)]
5543            impl ::core::convert::From<hashOperationReturn> for UnderlyingRustTuple<'_> {
5544                fn from(value: hashOperationReturn) -> Self {
5545                    (value._0,)
5546                }
5547            }
5548            #[automatically_derived]
5549            #[doc(hidden)]
5550            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationReturn {
5551                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5552                    Self { _0: tuple.0 }
5553                }
5554            }
5555        }
5556        #[automatically_derived]
5557        impl alloy_sol_types::SolCall for hashOperationCall {
5558            type Parameters<'a> = (
5559                alloy::sol_types::sol_data::Address,
5560                alloy::sol_types::sol_data::Uint<256>,
5561                alloy::sol_types::sol_data::Bytes,
5562                alloy::sol_types::sol_data::FixedBytes<32>,
5563                alloy::sol_types::sol_data::FixedBytes<32>,
5564            );
5565            type Token<'a> = <Self::Parameters<
5566                'a,
5567            > as alloy_sol_types::SolType>::Token<'a>;
5568            type Return = alloy::sol_types::private::FixedBytes<32>;
5569            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5570            type ReturnToken<'a> = <Self::ReturnTuple<
5571                'a,
5572            > as alloy_sol_types::SolType>::Token<'a>;
5573            const SIGNATURE: &'static str = "hashOperation(address,uint256,bytes,bytes32,bytes32)";
5574            const SELECTOR: [u8; 4] = [128u8, 101u8, 101u8, 127u8];
5575            #[inline]
5576            fn new<'a>(
5577                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5578            ) -> Self {
5579                tuple.into()
5580            }
5581            #[inline]
5582            fn tokenize(&self) -> Self::Token<'_> {
5583                (
5584                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5585                        &self.target,
5586                    ),
5587                    <alloy::sol_types::sol_data::Uint<
5588                        256,
5589                    > as alloy_sol_types::SolType>::tokenize(&self.value),
5590                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5591                        &self.data,
5592                    ),
5593                    <alloy::sol_types::sol_data::FixedBytes<
5594                        32,
5595                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5596                    <alloy::sol_types::sol_data::FixedBytes<
5597                        32,
5598                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5599                )
5600            }
5601            #[inline]
5602            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5603                (
5604                    <alloy::sol_types::sol_data::FixedBytes<
5605                        32,
5606                    > as alloy_sol_types::SolType>::tokenize(ret),
5607                )
5608            }
5609            #[inline]
5610            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5611                <Self::ReturnTuple<
5612                    '_,
5613                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5614                    .map(|r| {
5615                        let r: hashOperationReturn = r.into();
5616                        r._0
5617                    })
5618            }
5619            #[inline]
5620            fn abi_decode_returns_with_config(
5621                data: &[u8],
5622                config: alloy_sol_types::abi::AbiDecoderConfig,
5623            ) -> alloy_sol_types::Result<Self::Return> {
5624                <Self::ReturnTuple<
5625                    '_,
5626                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
5627                        data,
5628                        config,
5629                    )
5630                    .map(|r| {
5631                        let r: hashOperationReturn = r.into();
5632                        r._0
5633                    })
5634            }
5635            #[inline]
5636            fn abi_decode_returns_validate(
5637                data: &[u8],
5638            ) -> alloy_sol_types::Result<Self::Return> {
5639                Self::abi_decode_returns_with_config(
5640                    data,
5641                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5642                )
5643            }
5644        }
5645    };
5646    #[derive(serde::Serialize, serde::Deserialize)]
5647    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5648    /**Function with signature `hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xb1c5f427`.
5649```solidity
5650function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
5651```*/
5652    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5653    #[derive(Clone)]
5654    pub struct hashOperationBatchCall {
5655        #[allow(missing_docs)]
5656        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5657        #[allow(missing_docs)]
5658        pub values: alloy::sol_types::private::Vec<
5659            alloy::sol_types::private::primitives::aliases::U256,
5660        >,
5661        #[allow(missing_docs)]
5662        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5663        #[allow(missing_docs)]
5664        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
5665        #[allow(missing_docs)]
5666        pub salt: alloy::sol_types::private::FixedBytes<32>,
5667    }
5668    #[derive(serde::Serialize, serde::Deserialize)]
5669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5670    ///Container type for the return parameters of the [`hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)`](hashOperationBatchCall) function.
5671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5672    #[derive(Clone)]
5673    pub struct hashOperationBatchReturn {
5674        #[allow(missing_docs)]
5675        pub _0: alloy::sol_types::private::FixedBytes<32>,
5676    }
5677    #[allow(
5678        non_camel_case_types,
5679        non_snake_case,
5680        clippy::pub_underscore_fields,
5681        clippy::style
5682    )]
5683    const _: () = {
5684        use alloy::sol_types as alloy_sol_types;
5685        {
5686            #[doc(hidden)]
5687            #[allow(dead_code)]
5688            type UnderlyingSolTuple<'a> = (
5689                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5690                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5691                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5692                alloy::sol_types::sol_data::FixedBytes<32>,
5693                alloy::sol_types::sol_data::FixedBytes<32>,
5694            );
5695            #[doc(hidden)]
5696            type UnderlyingRustTuple<'a> = (
5697                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
5698                alloy::sol_types::private::Vec<
5699                    alloy::sol_types::private::primitives::aliases::U256,
5700                >,
5701                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
5702                alloy::sol_types::private::FixedBytes<32>,
5703                alloy::sol_types::private::FixedBytes<32>,
5704            );
5705            #[cfg(test)]
5706            #[allow(dead_code, unreachable_patterns)]
5707            fn _type_assertion(
5708                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5709            ) {
5710                match _t {
5711                    alloy_sol_types::private::AssertTypeEq::<
5712                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5713                    >(_) => {}
5714                }
5715            }
5716            #[automatically_derived]
5717            #[doc(hidden)]
5718            impl ::core::convert::From<hashOperationBatchCall>
5719            for UnderlyingRustTuple<'_> {
5720                fn from(value: hashOperationBatchCall) -> Self {
5721                    (
5722                        value.targets,
5723                        value.values,
5724                        value.payloads,
5725                        value.predecessor,
5726                        value.salt,
5727                    )
5728                }
5729            }
5730            #[automatically_derived]
5731            #[doc(hidden)]
5732            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5733            for hashOperationBatchCall {
5734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5735                    Self {
5736                        targets: tuple.0,
5737                        values: tuple.1,
5738                        payloads: tuple.2,
5739                        predecessor: tuple.3,
5740                        salt: tuple.4,
5741                    }
5742                }
5743            }
5744        }
5745        {
5746            #[doc(hidden)]
5747            #[allow(dead_code)]
5748            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5749            #[doc(hidden)]
5750            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5751            #[cfg(test)]
5752            #[allow(dead_code, unreachable_patterns)]
5753            fn _type_assertion(
5754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5755            ) {
5756                match _t {
5757                    alloy_sol_types::private::AssertTypeEq::<
5758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5759                    >(_) => {}
5760                }
5761            }
5762            #[automatically_derived]
5763            #[doc(hidden)]
5764            impl ::core::convert::From<hashOperationBatchReturn>
5765            for UnderlyingRustTuple<'_> {
5766                fn from(value: hashOperationBatchReturn) -> Self {
5767                    (value._0,)
5768                }
5769            }
5770            #[automatically_derived]
5771            #[doc(hidden)]
5772            impl ::core::convert::From<UnderlyingRustTuple<'_>>
5773            for hashOperationBatchReturn {
5774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5775                    Self { _0: tuple.0 }
5776                }
5777            }
5778        }
5779        #[automatically_derived]
5780        impl alloy_sol_types::SolCall for hashOperationBatchCall {
5781            type Parameters<'a> = (
5782                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
5783                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5784                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
5785                alloy::sol_types::sol_data::FixedBytes<32>,
5786                alloy::sol_types::sol_data::FixedBytes<32>,
5787            );
5788            type Token<'a> = <Self::Parameters<
5789                'a,
5790            > as alloy_sol_types::SolType>::Token<'a>;
5791            type Return = alloy::sol_types::private::FixedBytes<32>;
5792            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5793            type ReturnToken<'a> = <Self::ReturnTuple<
5794                'a,
5795            > as alloy_sol_types::SolType>::Token<'a>;
5796            const SIGNATURE: &'static str = "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)";
5797            const SELECTOR: [u8; 4] = [177u8, 197u8, 244u8, 39u8];
5798            #[inline]
5799            fn new<'a>(
5800                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5801            ) -> Self {
5802                tuple.into()
5803            }
5804            #[inline]
5805            fn tokenize(&self) -> Self::Token<'_> {
5806                (
5807                    <alloy::sol_types::sol_data::Array<
5808                        alloy::sol_types::sol_data::Address,
5809                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
5810                    <alloy::sol_types::sol_data::Array<
5811                        alloy::sol_types::sol_data::Uint<256>,
5812                    > as alloy_sol_types::SolType>::tokenize(&self.values),
5813                    <alloy::sol_types::sol_data::Array<
5814                        alloy::sol_types::sol_data::Bytes,
5815                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
5816                    <alloy::sol_types::sol_data::FixedBytes<
5817                        32,
5818                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5819                    <alloy::sol_types::sol_data::FixedBytes<
5820                        32,
5821                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5822                )
5823            }
5824            #[inline]
5825            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5826                (
5827                    <alloy::sol_types::sol_data::FixedBytes<
5828                        32,
5829                    > as alloy_sol_types::SolType>::tokenize(ret),
5830                )
5831            }
5832            #[inline]
5833            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5834                <Self::ReturnTuple<
5835                    '_,
5836                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
5837                    .map(|r| {
5838                        let r: hashOperationBatchReturn = r.into();
5839                        r._0
5840                    })
5841            }
5842            #[inline]
5843            fn abi_decode_returns_with_config(
5844                data: &[u8],
5845                config: alloy_sol_types::abi::AbiDecoderConfig,
5846            ) -> alloy_sol_types::Result<Self::Return> {
5847                <Self::ReturnTuple<
5848                    '_,
5849                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
5850                        data,
5851                        config,
5852                    )
5853                    .map(|r| {
5854                        let r: hashOperationBatchReturn = r.into();
5855                        r._0
5856                    })
5857            }
5858            #[inline]
5859            fn abi_decode_returns_validate(
5860                data: &[u8],
5861            ) -> alloy_sol_types::Result<Self::Return> {
5862                Self::abi_decode_returns_with_config(
5863                    data,
5864                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
5865                )
5866            }
5867        }
5868    };
5869    #[derive(serde::Serialize, serde::Deserialize)]
5870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5871    /**Function with signature `isOperation(bytes32)` and selector `0x31d50750`.
5872```solidity
5873function isOperation(bytes32 id) external view returns (bool);
5874```*/
5875    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5876    #[derive(Clone)]
5877    pub struct isOperationCall {
5878        #[allow(missing_docs)]
5879        pub id: alloy::sol_types::private::FixedBytes<32>,
5880    }
5881    #[derive(serde::Serialize, serde::Deserialize)]
5882    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5883    ///Container type for the return parameters of the [`isOperation(bytes32)`](isOperationCall) function.
5884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5885    #[derive(Clone)]
5886    pub struct isOperationReturn {
5887        #[allow(missing_docs)]
5888        pub _0: bool,
5889    }
5890    #[allow(
5891        non_camel_case_types,
5892        non_snake_case,
5893        clippy::pub_underscore_fields,
5894        clippy::style
5895    )]
5896    const _: () = {
5897        use alloy::sol_types as alloy_sol_types;
5898        {
5899            #[doc(hidden)]
5900            #[allow(dead_code)]
5901            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5902            #[doc(hidden)]
5903            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5904            #[cfg(test)]
5905            #[allow(dead_code, unreachable_patterns)]
5906            fn _type_assertion(
5907                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5908            ) {
5909                match _t {
5910                    alloy_sol_types::private::AssertTypeEq::<
5911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5912                    >(_) => {}
5913                }
5914            }
5915            #[automatically_derived]
5916            #[doc(hidden)]
5917            impl ::core::convert::From<isOperationCall> for UnderlyingRustTuple<'_> {
5918                fn from(value: isOperationCall) -> Self {
5919                    (value.id,)
5920                }
5921            }
5922            #[automatically_derived]
5923            #[doc(hidden)]
5924            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationCall {
5925                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5926                    Self { id: tuple.0 }
5927                }
5928            }
5929        }
5930        {
5931            #[doc(hidden)]
5932            #[allow(dead_code)]
5933            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5934            #[doc(hidden)]
5935            type UnderlyingRustTuple<'a> = (bool,);
5936            #[cfg(test)]
5937            #[allow(dead_code, unreachable_patterns)]
5938            fn _type_assertion(
5939                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5940            ) {
5941                match _t {
5942                    alloy_sol_types::private::AssertTypeEq::<
5943                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5944                    >(_) => {}
5945                }
5946            }
5947            #[automatically_derived]
5948            #[doc(hidden)]
5949            impl ::core::convert::From<isOperationReturn> for UnderlyingRustTuple<'_> {
5950                fn from(value: isOperationReturn) -> Self {
5951                    (value._0,)
5952                }
5953            }
5954            #[automatically_derived]
5955            #[doc(hidden)]
5956            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationReturn {
5957                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5958                    Self { _0: tuple.0 }
5959                }
5960            }
5961        }
5962        #[automatically_derived]
5963        impl alloy_sol_types::SolCall for isOperationCall {
5964            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5965            type Token<'a> = <Self::Parameters<
5966                'a,
5967            > as alloy_sol_types::SolType>::Token<'a>;
5968            type Return = bool;
5969            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5970            type ReturnToken<'a> = <Self::ReturnTuple<
5971                'a,
5972            > as alloy_sol_types::SolType>::Token<'a>;
5973            const SIGNATURE: &'static str = "isOperation(bytes32)";
5974            const SELECTOR: [u8; 4] = [49u8, 213u8, 7u8, 80u8];
5975            #[inline]
5976            fn new<'a>(
5977                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5978            ) -> Self {
5979                tuple.into()
5980            }
5981            #[inline]
5982            fn tokenize(&self) -> Self::Token<'_> {
5983                (
5984                    <alloy::sol_types::sol_data::FixedBytes<
5985                        32,
5986                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5987                )
5988            }
5989            #[inline]
5990            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
5991                (
5992                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
5993                        ret,
5994                    ),
5995                )
5996            }
5997            #[inline]
5998            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
5999                <Self::ReturnTuple<
6000                    '_,
6001                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6002                    .map(|r| {
6003                        let r: isOperationReturn = r.into();
6004                        r._0
6005                    })
6006            }
6007            #[inline]
6008            fn abi_decode_returns_with_config(
6009                data: &[u8],
6010                config: alloy_sol_types::abi::AbiDecoderConfig,
6011            ) -> alloy_sol_types::Result<Self::Return> {
6012                <Self::ReturnTuple<
6013                    '_,
6014                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6015                        data,
6016                        config,
6017                    )
6018                    .map(|r| {
6019                        let r: isOperationReturn = r.into();
6020                        r._0
6021                    })
6022            }
6023            #[inline]
6024            fn abi_decode_returns_validate(
6025                data: &[u8],
6026            ) -> alloy_sol_types::Result<Self::Return> {
6027                Self::abi_decode_returns_with_config(
6028                    data,
6029                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6030                )
6031            }
6032        }
6033    };
6034    #[derive(serde::Serialize, serde::Deserialize)]
6035    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6036    /**Function with signature `isOperationDone(bytes32)` and selector `0x2ab0f529`.
6037```solidity
6038function isOperationDone(bytes32 id) external view returns (bool);
6039```*/
6040    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6041    #[derive(Clone)]
6042    pub struct isOperationDoneCall {
6043        #[allow(missing_docs)]
6044        pub id: alloy::sol_types::private::FixedBytes<32>,
6045    }
6046    #[derive(serde::Serialize, serde::Deserialize)]
6047    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6048    ///Container type for the return parameters of the [`isOperationDone(bytes32)`](isOperationDoneCall) function.
6049    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6050    #[derive(Clone)]
6051    pub struct isOperationDoneReturn {
6052        #[allow(missing_docs)]
6053        pub _0: bool,
6054    }
6055    #[allow(
6056        non_camel_case_types,
6057        non_snake_case,
6058        clippy::pub_underscore_fields,
6059        clippy::style
6060    )]
6061    const _: () = {
6062        use alloy::sol_types as alloy_sol_types;
6063        {
6064            #[doc(hidden)]
6065            #[allow(dead_code)]
6066            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6067            #[doc(hidden)]
6068            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6069            #[cfg(test)]
6070            #[allow(dead_code, unreachable_patterns)]
6071            fn _type_assertion(
6072                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6073            ) {
6074                match _t {
6075                    alloy_sol_types::private::AssertTypeEq::<
6076                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6077                    >(_) => {}
6078                }
6079            }
6080            #[automatically_derived]
6081            #[doc(hidden)]
6082            impl ::core::convert::From<isOperationDoneCall> for UnderlyingRustTuple<'_> {
6083                fn from(value: isOperationDoneCall) -> Self {
6084                    (value.id,)
6085                }
6086            }
6087            #[automatically_derived]
6088            #[doc(hidden)]
6089            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationDoneCall {
6090                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6091                    Self { id: tuple.0 }
6092                }
6093            }
6094        }
6095        {
6096            #[doc(hidden)]
6097            #[allow(dead_code)]
6098            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6099            #[doc(hidden)]
6100            type UnderlyingRustTuple<'a> = (bool,);
6101            #[cfg(test)]
6102            #[allow(dead_code, unreachable_patterns)]
6103            fn _type_assertion(
6104                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6105            ) {
6106                match _t {
6107                    alloy_sol_types::private::AssertTypeEq::<
6108                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6109                    >(_) => {}
6110                }
6111            }
6112            #[automatically_derived]
6113            #[doc(hidden)]
6114            impl ::core::convert::From<isOperationDoneReturn>
6115            for UnderlyingRustTuple<'_> {
6116                fn from(value: isOperationDoneReturn) -> Self {
6117                    (value._0,)
6118                }
6119            }
6120            #[automatically_derived]
6121            #[doc(hidden)]
6122            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6123            for isOperationDoneReturn {
6124                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6125                    Self { _0: tuple.0 }
6126                }
6127            }
6128        }
6129        #[automatically_derived]
6130        impl alloy_sol_types::SolCall for isOperationDoneCall {
6131            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6132            type Token<'a> = <Self::Parameters<
6133                'a,
6134            > as alloy_sol_types::SolType>::Token<'a>;
6135            type Return = bool;
6136            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6137            type ReturnToken<'a> = <Self::ReturnTuple<
6138                'a,
6139            > as alloy_sol_types::SolType>::Token<'a>;
6140            const SIGNATURE: &'static str = "isOperationDone(bytes32)";
6141            const SELECTOR: [u8; 4] = [42u8, 176u8, 245u8, 41u8];
6142            #[inline]
6143            fn new<'a>(
6144                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6145            ) -> Self {
6146                tuple.into()
6147            }
6148            #[inline]
6149            fn tokenize(&self) -> Self::Token<'_> {
6150                (
6151                    <alloy::sol_types::sol_data::FixedBytes<
6152                        32,
6153                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6154                )
6155            }
6156            #[inline]
6157            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6158                (
6159                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6160                        ret,
6161                    ),
6162                )
6163            }
6164            #[inline]
6165            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6166                <Self::ReturnTuple<
6167                    '_,
6168                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6169                    .map(|r| {
6170                        let r: isOperationDoneReturn = r.into();
6171                        r._0
6172                    })
6173            }
6174            #[inline]
6175            fn abi_decode_returns_with_config(
6176                data: &[u8],
6177                config: alloy_sol_types::abi::AbiDecoderConfig,
6178            ) -> alloy_sol_types::Result<Self::Return> {
6179                <Self::ReturnTuple<
6180                    '_,
6181                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6182                        data,
6183                        config,
6184                    )
6185                    .map(|r| {
6186                        let r: isOperationDoneReturn = r.into();
6187                        r._0
6188                    })
6189            }
6190            #[inline]
6191            fn abi_decode_returns_validate(
6192                data: &[u8],
6193            ) -> alloy_sol_types::Result<Self::Return> {
6194                Self::abi_decode_returns_with_config(
6195                    data,
6196                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6197                )
6198            }
6199        }
6200    };
6201    #[derive(serde::Serialize, serde::Deserialize)]
6202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6203    /**Function with signature `isOperationPending(bytes32)` and selector `0x584b153e`.
6204```solidity
6205function isOperationPending(bytes32 id) external view returns (bool);
6206```*/
6207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6208    #[derive(Clone)]
6209    pub struct isOperationPendingCall {
6210        #[allow(missing_docs)]
6211        pub id: alloy::sol_types::private::FixedBytes<32>,
6212    }
6213    #[derive(serde::Serialize, serde::Deserialize)]
6214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6215    ///Container type for the return parameters of the [`isOperationPending(bytes32)`](isOperationPendingCall) function.
6216    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6217    #[derive(Clone)]
6218    pub struct isOperationPendingReturn {
6219        #[allow(missing_docs)]
6220        pub _0: bool,
6221    }
6222    #[allow(
6223        non_camel_case_types,
6224        non_snake_case,
6225        clippy::pub_underscore_fields,
6226        clippy::style
6227    )]
6228    const _: () = {
6229        use alloy::sol_types as alloy_sol_types;
6230        {
6231            #[doc(hidden)]
6232            #[allow(dead_code)]
6233            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6234            #[doc(hidden)]
6235            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6236            #[cfg(test)]
6237            #[allow(dead_code, unreachable_patterns)]
6238            fn _type_assertion(
6239                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6240            ) {
6241                match _t {
6242                    alloy_sol_types::private::AssertTypeEq::<
6243                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6244                    >(_) => {}
6245                }
6246            }
6247            #[automatically_derived]
6248            #[doc(hidden)]
6249            impl ::core::convert::From<isOperationPendingCall>
6250            for UnderlyingRustTuple<'_> {
6251                fn from(value: isOperationPendingCall) -> Self {
6252                    (value.id,)
6253                }
6254            }
6255            #[automatically_derived]
6256            #[doc(hidden)]
6257            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6258            for isOperationPendingCall {
6259                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6260                    Self { id: tuple.0 }
6261                }
6262            }
6263        }
6264        {
6265            #[doc(hidden)]
6266            #[allow(dead_code)]
6267            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6268            #[doc(hidden)]
6269            type UnderlyingRustTuple<'a> = (bool,);
6270            #[cfg(test)]
6271            #[allow(dead_code, unreachable_patterns)]
6272            fn _type_assertion(
6273                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6274            ) {
6275                match _t {
6276                    alloy_sol_types::private::AssertTypeEq::<
6277                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6278                    >(_) => {}
6279                }
6280            }
6281            #[automatically_derived]
6282            #[doc(hidden)]
6283            impl ::core::convert::From<isOperationPendingReturn>
6284            for UnderlyingRustTuple<'_> {
6285                fn from(value: isOperationPendingReturn) -> Self {
6286                    (value._0,)
6287                }
6288            }
6289            #[automatically_derived]
6290            #[doc(hidden)]
6291            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6292            for isOperationPendingReturn {
6293                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6294                    Self { _0: tuple.0 }
6295                }
6296            }
6297        }
6298        #[automatically_derived]
6299        impl alloy_sol_types::SolCall for isOperationPendingCall {
6300            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6301            type Token<'a> = <Self::Parameters<
6302                'a,
6303            > as alloy_sol_types::SolType>::Token<'a>;
6304            type Return = bool;
6305            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6306            type ReturnToken<'a> = <Self::ReturnTuple<
6307                'a,
6308            > as alloy_sol_types::SolType>::Token<'a>;
6309            const SIGNATURE: &'static str = "isOperationPending(bytes32)";
6310            const SELECTOR: [u8; 4] = [88u8, 75u8, 21u8, 62u8];
6311            #[inline]
6312            fn new<'a>(
6313                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6314            ) -> Self {
6315                tuple.into()
6316            }
6317            #[inline]
6318            fn tokenize(&self) -> Self::Token<'_> {
6319                (
6320                    <alloy::sol_types::sol_data::FixedBytes<
6321                        32,
6322                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6323                )
6324            }
6325            #[inline]
6326            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6327                (
6328                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6329                        ret,
6330                    ),
6331                )
6332            }
6333            #[inline]
6334            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6335                <Self::ReturnTuple<
6336                    '_,
6337                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6338                    .map(|r| {
6339                        let r: isOperationPendingReturn = r.into();
6340                        r._0
6341                    })
6342            }
6343            #[inline]
6344            fn abi_decode_returns_with_config(
6345                data: &[u8],
6346                config: alloy_sol_types::abi::AbiDecoderConfig,
6347            ) -> alloy_sol_types::Result<Self::Return> {
6348                <Self::ReturnTuple<
6349                    '_,
6350                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6351                        data,
6352                        config,
6353                    )
6354                    .map(|r| {
6355                        let r: isOperationPendingReturn = r.into();
6356                        r._0
6357                    })
6358            }
6359            #[inline]
6360            fn abi_decode_returns_validate(
6361                data: &[u8],
6362            ) -> alloy_sol_types::Result<Self::Return> {
6363                Self::abi_decode_returns_with_config(
6364                    data,
6365                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6366                )
6367            }
6368        }
6369    };
6370    #[derive(serde::Serialize, serde::Deserialize)]
6371    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6372    /**Function with signature `isOperationReady(bytes32)` and selector `0x13bc9f20`.
6373```solidity
6374function isOperationReady(bytes32 id) external view returns (bool);
6375```*/
6376    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6377    #[derive(Clone)]
6378    pub struct isOperationReadyCall {
6379        #[allow(missing_docs)]
6380        pub id: alloy::sol_types::private::FixedBytes<32>,
6381    }
6382    #[derive(serde::Serialize, serde::Deserialize)]
6383    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6384    ///Container type for the return parameters of the [`isOperationReady(bytes32)`](isOperationReadyCall) function.
6385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6386    #[derive(Clone)]
6387    pub struct isOperationReadyReturn {
6388        #[allow(missing_docs)]
6389        pub _0: bool,
6390    }
6391    #[allow(
6392        non_camel_case_types,
6393        non_snake_case,
6394        clippy::pub_underscore_fields,
6395        clippy::style
6396    )]
6397    const _: () = {
6398        use alloy::sol_types as alloy_sol_types;
6399        {
6400            #[doc(hidden)]
6401            #[allow(dead_code)]
6402            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6403            #[doc(hidden)]
6404            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6405            #[cfg(test)]
6406            #[allow(dead_code, unreachable_patterns)]
6407            fn _type_assertion(
6408                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6409            ) {
6410                match _t {
6411                    alloy_sol_types::private::AssertTypeEq::<
6412                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6413                    >(_) => {}
6414                }
6415            }
6416            #[automatically_derived]
6417            #[doc(hidden)]
6418            impl ::core::convert::From<isOperationReadyCall>
6419            for UnderlyingRustTuple<'_> {
6420                fn from(value: isOperationReadyCall) -> Self {
6421                    (value.id,)
6422                }
6423            }
6424            #[automatically_derived]
6425            #[doc(hidden)]
6426            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6427            for isOperationReadyCall {
6428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6429                    Self { id: tuple.0 }
6430                }
6431            }
6432        }
6433        {
6434            #[doc(hidden)]
6435            #[allow(dead_code)]
6436            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6437            #[doc(hidden)]
6438            type UnderlyingRustTuple<'a> = (bool,);
6439            #[cfg(test)]
6440            #[allow(dead_code, unreachable_patterns)]
6441            fn _type_assertion(
6442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6443            ) {
6444                match _t {
6445                    alloy_sol_types::private::AssertTypeEq::<
6446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6447                    >(_) => {}
6448                }
6449            }
6450            #[automatically_derived]
6451            #[doc(hidden)]
6452            impl ::core::convert::From<isOperationReadyReturn>
6453            for UnderlyingRustTuple<'_> {
6454                fn from(value: isOperationReadyReturn) -> Self {
6455                    (value._0,)
6456                }
6457            }
6458            #[automatically_derived]
6459            #[doc(hidden)]
6460            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6461            for isOperationReadyReturn {
6462                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6463                    Self { _0: tuple.0 }
6464                }
6465            }
6466        }
6467        #[automatically_derived]
6468        impl alloy_sol_types::SolCall for isOperationReadyCall {
6469            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6470            type Token<'a> = <Self::Parameters<
6471                'a,
6472            > as alloy_sol_types::SolType>::Token<'a>;
6473            type Return = bool;
6474            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6475            type ReturnToken<'a> = <Self::ReturnTuple<
6476                'a,
6477            > as alloy_sol_types::SolType>::Token<'a>;
6478            const SIGNATURE: &'static str = "isOperationReady(bytes32)";
6479            const SELECTOR: [u8; 4] = [19u8, 188u8, 159u8, 32u8];
6480            #[inline]
6481            fn new<'a>(
6482                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6483            ) -> Self {
6484                tuple.into()
6485            }
6486            #[inline]
6487            fn tokenize(&self) -> Self::Token<'_> {
6488                (
6489                    <alloy::sol_types::sol_data::FixedBytes<
6490                        32,
6491                    > as alloy_sol_types::SolType>::tokenize(&self.id),
6492                )
6493            }
6494            #[inline]
6495            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6496                (
6497                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
6498                        ret,
6499                    ),
6500                )
6501            }
6502            #[inline]
6503            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6504                <Self::ReturnTuple<
6505                    '_,
6506                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6507                    .map(|r| {
6508                        let r: isOperationReadyReturn = r.into();
6509                        r._0
6510                    })
6511            }
6512            #[inline]
6513            fn abi_decode_returns_with_config(
6514                data: &[u8],
6515                config: alloy_sol_types::abi::AbiDecoderConfig,
6516            ) -> alloy_sol_types::Result<Self::Return> {
6517                <Self::ReturnTuple<
6518                    '_,
6519                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6520                        data,
6521                        config,
6522                    )
6523                    .map(|r| {
6524                        let r: isOperationReadyReturn = r.into();
6525                        r._0
6526                    })
6527            }
6528            #[inline]
6529            fn abi_decode_returns_validate(
6530                data: &[u8],
6531            ) -> alloy_sol_types::Result<Self::Return> {
6532                Self::abi_decode_returns_with_config(
6533                    data,
6534                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6535                )
6536            }
6537        }
6538    };
6539    #[derive(serde::Serialize, serde::Deserialize)]
6540    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6541    /**Function with signature `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)` and selector `0xbc197c81`.
6542```solidity
6543function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
6544```*/
6545    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6546    #[derive(Clone)]
6547    pub struct onERC1155BatchReceivedCall {
6548        #[allow(missing_docs)]
6549        pub _0: alloy::sol_types::private::Address,
6550        #[allow(missing_docs)]
6551        pub _1: alloy::sol_types::private::Address,
6552        #[allow(missing_docs)]
6553        pub _2: alloy::sol_types::private::Vec<
6554            alloy::sol_types::private::primitives::aliases::U256,
6555        >,
6556        #[allow(missing_docs)]
6557        pub _3: alloy::sol_types::private::Vec<
6558            alloy::sol_types::private::primitives::aliases::U256,
6559        >,
6560        #[allow(missing_docs)]
6561        pub _4: alloy::sol_types::private::Bytes,
6562    }
6563    #[derive(serde::Serialize, serde::Deserialize)]
6564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6565    ///Container type for the return parameters of the [`onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`](onERC1155BatchReceivedCall) function.
6566    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6567    #[derive(Clone)]
6568    pub struct onERC1155BatchReceivedReturn {
6569        #[allow(missing_docs)]
6570        pub _0: alloy::sol_types::private::FixedBytes<4>,
6571    }
6572    #[allow(
6573        non_camel_case_types,
6574        non_snake_case,
6575        clippy::pub_underscore_fields,
6576        clippy::style
6577    )]
6578    const _: () = {
6579        use alloy::sol_types as alloy_sol_types;
6580        {
6581            #[doc(hidden)]
6582            #[allow(dead_code)]
6583            type UnderlyingSolTuple<'a> = (
6584                alloy::sol_types::sol_data::Address,
6585                alloy::sol_types::sol_data::Address,
6586                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6587                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6588                alloy::sol_types::sol_data::Bytes,
6589            );
6590            #[doc(hidden)]
6591            type UnderlyingRustTuple<'a> = (
6592                alloy::sol_types::private::Address,
6593                alloy::sol_types::private::Address,
6594                alloy::sol_types::private::Vec<
6595                    alloy::sol_types::private::primitives::aliases::U256,
6596                >,
6597                alloy::sol_types::private::Vec<
6598                    alloy::sol_types::private::primitives::aliases::U256,
6599                >,
6600                alloy::sol_types::private::Bytes,
6601            );
6602            #[cfg(test)]
6603            #[allow(dead_code, unreachable_patterns)]
6604            fn _type_assertion(
6605                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6606            ) {
6607                match _t {
6608                    alloy_sol_types::private::AssertTypeEq::<
6609                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6610                    >(_) => {}
6611                }
6612            }
6613            #[automatically_derived]
6614            #[doc(hidden)]
6615            impl ::core::convert::From<onERC1155BatchReceivedCall>
6616            for UnderlyingRustTuple<'_> {
6617                fn from(value: onERC1155BatchReceivedCall) -> Self {
6618                    (value._0, value._1, value._2, value._3, value._4)
6619                }
6620            }
6621            #[automatically_derived]
6622            #[doc(hidden)]
6623            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6624            for onERC1155BatchReceivedCall {
6625                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6626                    Self {
6627                        _0: tuple.0,
6628                        _1: tuple.1,
6629                        _2: tuple.2,
6630                        _3: tuple.3,
6631                        _4: tuple.4,
6632                    }
6633                }
6634            }
6635        }
6636        {
6637            #[doc(hidden)]
6638            #[allow(dead_code)]
6639            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6640            #[doc(hidden)]
6641            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6642            #[cfg(test)]
6643            #[allow(dead_code, unreachable_patterns)]
6644            fn _type_assertion(
6645                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6646            ) {
6647                match _t {
6648                    alloy_sol_types::private::AssertTypeEq::<
6649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6650                    >(_) => {}
6651                }
6652            }
6653            #[automatically_derived]
6654            #[doc(hidden)]
6655            impl ::core::convert::From<onERC1155BatchReceivedReturn>
6656            for UnderlyingRustTuple<'_> {
6657                fn from(value: onERC1155BatchReceivedReturn) -> Self {
6658                    (value._0,)
6659                }
6660            }
6661            #[automatically_derived]
6662            #[doc(hidden)]
6663            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6664            for onERC1155BatchReceivedReturn {
6665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6666                    Self { _0: tuple.0 }
6667                }
6668            }
6669        }
6670        #[automatically_derived]
6671        impl alloy_sol_types::SolCall for onERC1155BatchReceivedCall {
6672            type Parameters<'a> = (
6673                alloy::sol_types::sol_data::Address,
6674                alloy::sol_types::sol_data::Address,
6675                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6676                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6677                alloy::sol_types::sol_data::Bytes,
6678            );
6679            type Token<'a> = <Self::Parameters<
6680                'a,
6681            > as alloy_sol_types::SolType>::Token<'a>;
6682            type Return = alloy::sol_types::private::FixedBytes<4>;
6683            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6684            type ReturnToken<'a> = <Self::ReturnTuple<
6685                'a,
6686            > as alloy_sol_types::SolType>::Token<'a>;
6687            const SIGNATURE: &'static str = "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)";
6688            const SELECTOR: [u8; 4] = [188u8, 25u8, 124u8, 129u8];
6689            #[inline]
6690            fn new<'a>(
6691                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6692            ) -> Self {
6693                tuple.into()
6694            }
6695            #[inline]
6696            fn tokenize(&self) -> Self::Token<'_> {
6697                (
6698                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6699                        &self._0,
6700                    ),
6701                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6702                        &self._1,
6703                    ),
6704                    <alloy::sol_types::sol_data::Array<
6705                        alloy::sol_types::sol_data::Uint<256>,
6706                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6707                    <alloy::sol_types::sol_data::Array<
6708                        alloy::sol_types::sol_data::Uint<256>,
6709                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6710                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6711                        &self._4,
6712                    ),
6713                )
6714            }
6715            #[inline]
6716            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6717                (
6718                    <alloy::sol_types::sol_data::FixedBytes<
6719                        4,
6720                    > as alloy_sol_types::SolType>::tokenize(ret),
6721                )
6722            }
6723            #[inline]
6724            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6725                <Self::ReturnTuple<
6726                    '_,
6727                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6728                    .map(|r| {
6729                        let r: onERC1155BatchReceivedReturn = r.into();
6730                        r._0
6731                    })
6732            }
6733            #[inline]
6734            fn abi_decode_returns_with_config(
6735                data: &[u8],
6736                config: alloy_sol_types::abi::AbiDecoderConfig,
6737            ) -> alloy_sol_types::Result<Self::Return> {
6738                <Self::ReturnTuple<
6739                    '_,
6740                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6741                        data,
6742                        config,
6743                    )
6744                    .map(|r| {
6745                        let r: onERC1155BatchReceivedReturn = r.into();
6746                        r._0
6747                    })
6748            }
6749            #[inline]
6750            fn abi_decode_returns_validate(
6751                data: &[u8],
6752            ) -> alloy_sol_types::Result<Self::Return> {
6753                Self::abi_decode_returns_with_config(
6754                    data,
6755                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6756                )
6757            }
6758        }
6759    };
6760    #[derive(serde::Serialize, serde::Deserialize)]
6761    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6762    /**Function with signature `onERC1155Received(address,address,uint256,uint256,bytes)` and selector `0xf23a6e61`.
6763```solidity
6764function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
6765```*/
6766    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6767    #[derive(Clone)]
6768    pub struct onERC1155ReceivedCall {
6769        #[allow(missing_docs)]
6770        pub _0: alloy::sol_types::private::Address,
6771        #[allow(missing_docs)]
6772        pub _1: alloy::sol_types::private::Address,
6773        #[allow(missing_docs)]
6774        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6775        #[allow(missing_docs)]
6776        pub _3: alloy::sol_types::private::primitives::aliases::U256,
6777        #[allow(missing_docs)]
6778        pub _4: alloy::sol_types::private::Bytes,
6779    }
6780    #[derive(serde::Serialize, serde::Deserialize)]
6781    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6782    ///Container type for the return parameters of the [`onERC1155Received(address,address,uint256,uint256,bytes)`](onERC1155ReceivedCall) function.
6783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6784    #[derive(Clone)]
6785    pub struct onERC1155ReceivedReturn {
6786        #[allow(missing_docs)]
6787        pub _0: alloy::sol_types::private::FixedBytes<4>,
6788    }
6789    #[allow(
6790        non_camel_case_types,
6791        non_snake_case,
6792        clippy::pub_underscore_fields,
6793        clippy::style
6794    )]
6795    const _: () = {
6796        use alloy::sol_types as alloy_sol_types;
6797        {
6798            #[doc(hidden)]
6799            #[allow(dead_code)]
6800            type UnderlyingSolTuple<'a> = (
6801                alloy::sol_types::sol_data::Address,
6802                alloy::sol_types::sol_data::Address,
6803                alloy::sol_types::sol_data::Uint<256>,
6804                alloy::sol_types::sol_data::Uint<256>,
6805                alloy::sol_types::sol_data::Bytes,
6806            );
6807            #[doc(hidden)]
6808            type UnderlyingRustTuple<'a> = (
6809                alloy::sol_types::private::Address,
6810                alloy::sol_types::private::Address,
6811                alloy::sol_types::private::primitives::aliases::U256,
6812                alloy::sol_types::private::primitives::aliases::U256,
6813                alloy::sol_types::private::Bytes,
6814            );
6815            #[cfg(test)]
6816            #[allow(dead_code, unreachable_patterns)]
6817            fn _type_assertion(
6818                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6819            ) {
6820                match _t {
6821                    alloy_sol_types::private::AssertTypeEq::<
6822                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6823                    >(_) => {}
6824                }
6825            }
6826            #[automatically_derived]
6827            #[doc(hidden)]
6828            impl ::core::convert::From<onERC1155ReceivedCall>
6829            for UnderlyingRustTuple<'_> {
6830                fn from(value: onERC1155ReceivedCall) -> Self {
6831                    (value._0, value._1, value._2, value._3, value._4)
6832                }
6833            }
6834            #[automatically_derived]
6835            #[doc(hidden)]
6836            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6837            for onERC1155ReceivedCall {
6838                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6839                    Self {
6840                        _0: tuple.0,
6841                        _1: tuple.1,
6842                        _2: tuple.2,
6843                        _3: tuple.3,
6844                        _4: tuple.4,
6845                    }
6846                }
6847            }
6848        }
6849        {
6850            #[doc(hidden)]
6851            #[allow(dead_code)]
6852            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6853            #[doc(hidden)]
6854            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6855            #[cfg(test)]
6856            #[allow(dead_code, unreachable_patterns)]
6857            fn _type_assertion(
6858                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6859            ) {
6860                match _t {
6861                    alloy_sol_types::private::AssertTypeEq::<
6862                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6863                    >(_) => {}
6864                }
6865            }
6866            #[automatically_derived]
6867            #[doc(hidden)]
6868            impl ::core::convert::From<onERC1155ReceivedReturn>
6869            for UnderlyingRustTuple<'_> {
6870                fn from(value: onERC1155ReceivedReturn) -> Self {
6871                    (value._0,)
6872                }
6873            }
6874            #[automatically_derived]
6875            #[doc(hidden)]
6876            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6877            for onERC1155ReceivedReturn {
6878                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6879                    Self { _0: tuple.0 }
6880                }
6881            }
6882        }
6883        #[automatically_derived]
6884        impl alloy_sol_types::SolCall for onERC1155ReceivedCall {
6885            type Parameters<'a> = (
6886                alloy::sol_types::sol_data::Address,
6887                alloy::sol_types::sol_data::Address,
6888                alloy::sol_types::sol_data::Uint<256>,
6889                alloy::sol_types::sol_data::Uint<256>,
6890                alloy::sol_types::sol_data::Bytes,
6891            );
6892            type Token<'a> = <Self::Parameters<
6893                'a,
6894            > as alloy_sol_types::SolType>::Token<'a>;
6895            type Return = alloy::sol_types::private::FixedBytes<4>;
6896            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6897            type ReturnToken<'a> = <Self::ReturnTuple<
6898                'a,
6899            > as alloy_sol_types::SolType>::Token<'a>;
6900            const SIGNATURE: &'static str = "onERC1155Received(address,address,uint256,uint256,bytes)";
6901            const SELECTOR: [u8; 4] = [242u8, 58u8, 110u8, 97u8];
6902            #[inline]
6903            fn new<'a>(
6904                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6905            ) -> Self {
6906                tuple.into()
6907            }
6908            #[inline]
6909            fn tokenize(&self) -> Self::Token<'_> {
6910                (
6911                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6912                        &self._0,
6913                    ),
6914                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6915                        &self._1,
6916                    ),
6917                    <alloy::sol_types::sol_data::Uint<
6918                        256,
6919                    > as alloy_sol_types::SolType>::tokenize(&self._2),
6920                    <alloy::sol_types::sol_data::Uint<
6921                        256,
6922                    > as alloy_sol_types::SolType>::tokenize(&self._3),
6923                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6924                        &self._4,
6925                    ),
6926                )
6927            }
6928            #[inline]
6929            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6930                (
6931                    <alloy::sol_types::sol_data::FixedBytes<
6932                        4,
6933                    > as alloy_sol_types::SolType>::tokenize(ret),
6934                )
6935            }
6936            #[inline]
6937            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6938                <Self::ReturnTuple<
6939                    '_,
6940                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6941                    .map(|r| {
6942                        let r: onERC1155ReceivedReturn = r.into();
6943                        r._0
6944                    })
6945            }
6946            #[inline]
6947            fn abi_decode_returns_with_config(
6948                data: &[u8],
6949                config: alloy_sol_types::abi::AbiDecoderConfig,
6950            ) -> alloy_sol_types::Result<Self::Return> {
6951                <Self::ReturnTuple<
6952                    '_,
6953                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
6954                        data,
6955                        config,
6956                    )
6957                    .map(|r| {
6958                        let r: onERC1155ReceivedReturn = r.into();
6959                        r._0
6960                    })
6961            }
6962            #[inline]
6963            fn abi_decode_returns_validate(
6964                data: &[u8],
6965            ) -> alloy_sol_types::Result<Self::Return> {
6966                Self::abi_decode_returns_with_config(
6967                    data,
6968                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
6969                )
6970            }
6971        }
6972    };
6973    #[derive(serde::Serialize, serde::Deserialize)]
6974    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6975    /**Function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`.
6976```solidity
6977function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
6978```*/
6979    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6980    #[derive(Clone)]
6981    pub struct onERC721ReceivedCall {
6982        #[allow(missing_docs)]
6983        pub _0: alloy::sol_types::private::Address,
6984        #[allow(missing_docs)]
6985        pub _1: alloy::sol_types::private::Address,
6986        #[allow(missing_docs)]
6987        pub _2: alloy::sol_types::private::primitives::aliases::U256,
6988        #[allow(missing_docs)]
6989        pub _3: alloy::sol_types::private::Bytes,
6990    }
6991    #[derive(serde::Serialize, serde::Deserialize)]
6992    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6993    ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function.
6994    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6995    #[derive(Clone)]
6996    pub struct onERC721ReceivedReturn {
6997        #[allow(missing_docs)]
6998        pub _0: alloy::sol_types::private::FixedBytes<4>,
6999    }
7000    #[allow(
7001        non_camel_case_types,
7002        non_snake_case,
7003        clippy::pub_underscore_fields,
7004        clippy::style
7005    )]
7006    const _: () = {
7007        use alloy::sol_types as alloy_sol_types;
7008        {
7009            #[doc(hidden)]
7010            #[allow(dead_code)]
7011            type UnderlyingSolTuple<'a> = (
7012                alloy::sol_types::sol_data::Address,
7013                alloy::sol_types::sol_data::Address,
7014                alloy::sol_types::sol_data::Uint<256>,
7015                alloy::sol_types::sol_data::Bytes,
7016            );
7017            #[doc(hidden)]
7018            type UnderlyingRustTuple<'a> = (
7019                alloy::sol_types::private::Address,
7020                alloy::sol_types::private::Address,
7021                alloy::sol_types::private::primitives::aliases::U256,
7022                alloy::sol_types::private::Bytes,
7023            );
7024            #[cfg(test)]
7025            #[allow(dead_code, unreachable_patterns)]
7026            fn _type_assertion(
7027                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7028            ) {
7029                match _t {
7030                    alloy_sol_types::private::AssertTypeEq::<
7031                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7032                    >(_) => {}
7033                }
7034            }
7035            #[automatically_derived]
7036            #[doc(hidden)]
7037            impl ::core::convert::From<onERC721ReceivedCall>
7038            for UnderlyingRustTuple<'_> {
7039                fn from(value: onERC721ReceivedCall) -> Self {
7040                    (value._0, value._1, value._2, value._3)
7041                }
7042            }
7043            #[automatically_derived]
7044            #[doc(hidden)]
7045            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7046            for onERC721ReceivedCall {
7047                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7048                    Self {
7049                        _0: tuple.0,
7050                        _1: tuple.1,
7051                        _2: tuple.2,
7052                        _3: tuple.3,
7053                    }
7054                }
7055            }
7056        }
7057        {
7058            #[doc(hidden)]
7059            #[allow(dead_code)]
7060            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7061            #[doc(hidden)]
7062            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
7063            #[cfg(test)]
7064            #[allow(dead_code, unreachable_patterns)]
7065            fn _type_assertion(
7066                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7067            ) {
7068                match _t {
7069                    alloy_sol_types::private::AssertTypeEq::<
7070                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7071                    >(_) => {}
7072                }
7073            }
7074            #[automatically_derived]
7075            #[doc(hidden)]
7076            impl ::core::convert::From<onERC721ReceivedReturn>
7077            for UnderlyingRustTuple<'_> {
7078                fn from(value: onERC721ReceivedReturn) -> Self {
7079                    (value._0,)
7080                }
7081            }
7082            #[automatically_derived]
7083            #[doc(hidden)]
7084            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7085            for onERC721ReceivedReturn {
7086                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7087                    Self { _0: tuple.0 }
7088                }
7089            }
7090        }
7091        #[automatically_derived]
7092        impl alloy_sol_types::SolCall for onERC721ReceivedCall {
7093            type Parameters<'a> = (
7094                alloy::sol_types::sol_data::Address,
7095                alloy::sol_types::sol_data::Address,
7096                alloy::sol_types::sol_data::Uint<256>,
7097                alloy::sol_types::sol_data::Bytes,
7098            );
7099            type Token<'a> = <Self::Parameters<
7100                'a,
7101            > as alloy_sol_types::SolType>::Token<'a>;
7102            type Return = alloy::sol_types::private::FixedBytes<4>;
7103            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7104            type ReturnToken<'a> = <Self::ReturnTuple<
7105                'a,
7106            > as alloy_sol_types::SolType>::Token<'a>;
7107            const SIGNATURE: &'static str = "onERC721Received(address,address,uint256,bytes)";
7108            const SELECTOR: [u8; 4] = [21u8, 11u8, 122u8, 2u8];
7109            #[inline]
7110            fn new<'a>(
7111                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7112            ) -> Self {
7113                tuple.into()
7114            }
7115            #[inline]
7116            fn tokenize(&self) -> Self::Token<'_> {
7117                (
7118                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7119                        &self._0,
7120                    ),
7121                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7122                        &self._1,
7123                    ),
7124                    <alloy::sol_types::sol_data::Uint<
7125                        256,
7126                    > as alloy_sol_types::SolType>::tokenize(&self._2),
7127                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7128                        &self._3,
7129                    ),
7130                )
7131            }
7132            #[inline]
7133            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7134                (
7135                    <alloy::sol_types::sol_data::FixedBytes<
7136                        4,
7137                    > as alloy_sol_types::SolType>::tokenize(ret),
7138                )
7139            }
7140            #[inline]
7141            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7142                <Self::ReturnTuple<
7143                    '_,
7144                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7145                    .map(|r| {
7146                        let r: onERC721ReceivedReturn = r.into();
7147                        r._0
7148                    })
7149            }
7150            #[inline]
7151            fn abi_decode_returns_with_config(
7152                data: &[u8],
7153                config: alloy_sol_types::abi::AbiDecoderConfig,
7154            ) -> alloy_sol_types::Result<Self::Return> {
7155                <Self::ReturnTuple<
7156                    '_,
7157                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7158                        data,
7159                        config,
7160                    )
7161                    .map(|r| {
7162                        let r: onERC721ReceivedReturn = r.into();
7163                        r._0
7164                    })
7165            }
7166            #[inline]
7167            fn abi_decode_returns_validate(
7168                data: &[u8],
7169            ) -> alloy_sol_types::Result<Self::Return> {
7170                Self::abi_decode_returns_with_config(
7171                    data,
7172                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7173                )
7174            }
7175        }
7176    };
7177    #[derive(serde::Serialize, serde::Deserialize)]
7178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7179    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
7180```solidity
7181function renounceRole(bytes32 role, address callerConfirmation) external;
7182```*/
7183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7184    #[derive(Clone)]
7185    pub struct renounceRoleCall {
7186        #[allow(missing_docs)]
7187        pub role: alloy::sol_types::private::FixedBytes<32>,
7188        #[allow(missing_docs)]
7189        pub callerConfirmation: alloy::sol_types::private::Address,
7190    }
7191    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
7192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7193    #[derive(Clone)]
7194    pub struct renounceRoleReturn {}
7195    #[allow(
7196        non_camel_case_types,
7197        non_snake_case,
7198        clippy::pub_underscore_fields,
7199        clippy::style
7200    )]
7201    const _: () = {
7202        use alloy::sol_types as alloy_sol_types;
7203        {
7204            #[doc(hidden)]
7205            #[allow(dead_code)]
7206            type UnderlyingSolTuple<'a> = (
7207                alloy::sol_types::sol_data::FixedBytes<32>,
7208                alloy::sol_types::sol_data::Address,
7209            );
7210            #[doc(hidden)]
7211            type UnderlyingRustTuple<'a> = (
7212                alloy::sol_types::private::FixedBytes<32>,
7213                alloy::sol_types::private::Address,
7214            );
7215            #[cfg(test)]
7216            #[allow(dead_code, unreachable_patterns)]
7217            fn _type_assertion(
7218                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7219            ) {
7220                match _t {
7221                    alloy_sol_types::private::AssertTypeEq::<
7222                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7223                    >(_) => {}
7224                }
7225            }
7226            #[automatically_derived]
7227            #[doc(hidden)]
7228            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
7229                fn from(value: renounceRoleCall) -> Self {
7230                    (value.role, value.callerConfirmation)
7231                }
7232            }
7233            #[automatically_derived]
7234            #[doc(hidden)]
7235            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
7236                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7237                    Self {
7238                        role: tuple.0,
7239                        callerConfirmation: tuple.1,
7240                    }
7241                }
7242            }
7243        }
7244        {
7245            #[doc(hidden)]
7246            #[allow(dead_code)]
7247            type UnderlyingSolTuple<'a> = ();
7248            #[doc(hidden)]
7249            type UnderlyingRustTuple<'a> = ();
7250            #[cfg(test)]
7251            #[allow(dead_code, unreachable_patterns)]
7252            fn _type_assertion(
7253                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7254            ) {
7255                match _t {
7256                    alloy_sol_types::private::AssertTypeEq::<
7257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7258                    >(_) => {}
7259                }
7260            }
7261            #[automatically_derived]
7262            #[doc(hidden)]
7263            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
7264                fn from(value: renounceRoleReturn) -> Self {
7265                    ()
7266                }
7267            }
7268            #[automatically_derived]
7269            #[doc(hidden)]
7270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
7271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7272                    Self {}
7273                }
7274            }
7275        }
7276        impl renounceRoleReturn {
7277            fn _tokenize(
7278                &self,
7279            ) -> <renounceRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7280                ()
7281            }
7282        }
7283        #[automatically_derived]
7284        impl alloy_sol_types::SolCall for renounceRoleCall {
7285            type Parameters<'a> = (
7286                alloy::sol_types::sol_data::FixedBytes<32>,
7287                alloy::sol_types::sol_data::Address,
7288            );
7289            type Token<'a> = <Self::Parameters<
7290                'a,
7291            > as alloy_sol_types::SolType>::Token<'a>;
7292            type Return = renounceRoleReturn;
7293            type ReturnTuple<'a> = ();
7294            type ReturnToken<'a> = <Self::ReturnTuple<
7295                'a,
7296            > as alloy_sol_types::SolType>::Token<'a>;
7297            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
7298            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
7299            #[inline]
7300            fn new<'a>(
7301                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7302            ) -> Self {
7303                tuple.into()
7304            }
7305            #[inline]
7306            fn tokenize(&self) -> Self::Token<'_> {
7307                (
7308                    <alloy::sol_types::sol_data::FixedBytes<
7309                        32,
7310                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7311                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7312                        &self.callerConfirmation,
7313                    ),
7314                )
7315            }
7316            #[inline]
7317            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7318                renounceRoleReturn::_tokenize(ret)
7319            }
7320            #[inline]
7321            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7322                <Self::ReturnTuple<
7323                    '_,
7324                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7325                    .map(Into::into)
7326            }
7327            #[inline]
7328            fn abi_decode_returns_with_config(
7329                data: &[u8],
7330                config: alloy_sol_types::abi::AbiDecoderConfig,
7331            ) -> alloy_sol_types::Result<Self::Return> {
7332                <Self::ReturnTuple<
7333                    '_,
7334                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7335                        data,
7336                        config,
7337                    )
7338                    .map(Into::into)
7339            }
7340            #[inline]
7341            fn abi_decode_returns_validate(
7342                data: &[u8],
7343            ) -> alloy_sol_types::Result<Self::Return> {
7344                Self::abi_decode_returns_with_config(
7345                    data,
7346                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7347                )
7348            }
7349        }
7350    };
7351    #[derive(serde::Serialize, serde::Deserialize)]
7352    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7353    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
7354```solidity
7355function revokeRole(bytes32 role, address account) external;
7356```*/
7357    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7358    #[derive(Clone)]
7359    pub struct revokeRoleCall {
7360        #[allow(missing_docs)]
7361        pub role: alloy::sol_types::private::FixedBytes<32>,
7362        #[allow(missing_docs)]
7363        pub account: alloy::sol_types::private::Address,
7364    }
7365    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
7366    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7367    #[derive(Clone)]
7368    pub struct revokeRoleReturn {}
7369    #[allow(
7370        non_camel_case_types,
7371        non_snake_case,
7372        clippy::pub_underscore_fields,
7373        clippy::style
7374    )]
7375    const _: () = {
7376        use alloy::sol_types as alloy_sol_types;
7377        {
7378            #[doc(hidden)]
7379            #[allow(dead_code)]
7380            type UnderlyingSolTuple<'a> = (
7381                alloy::sol_types::sol_data::FixedBytes<32>,
7382                alloy::sol_types::sol_data::Address,
7383            );
7384            #[doc(hidden)]
7385            type UnderlyingRustTuple<'a> = (
7386                alloy::sol_types::private::FixedBytes<32>,
7387                alloy::sol_types::private::Address,
7388            );
7389            #[cfg(test)]
7390            #[allow(dead_code, unreachable_patterns)]
7391            fn _type_assertion(
7392                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7393            ) {
7394                match _t {
7395                    alloy_sol_types::private::AssertTypeEq::<
7396                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7397                    >(_) => {}
7398                }
7399            }
7400            #[automatically_derived]
7401            #[doc(hidden)]
7402            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
7403                fn from(value: revokeRoleCall) -> Self {
7404                    (value.role, value.account)
7405                }
7406            }
7407            #[automatically_derived]
7408            #[doc(hidden)]
7409            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
7410                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7411                    Self {
7412                        role: tuple.0,
7413                        account: tuple.1,
7414                    }
7415                }
7416            }
7417        }
7418        {
7419            #[doc(hidden)]
7420            #[allow(dead_code)]
7421            type UnderlyingSolTuple<'a> = ();
7422            #[doc(hidden)]
7423            type UnderlyingRustTuple<'a> = ();
7424            #[cfg(test)]
7425            #[allow(dead_code, unreachable_patterns)]
7426            fn _type_assertion(
7427                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7428            ) {
7429                match _t {
7430                    alloy_sol_types::private::AssertTypeEq::<
7431                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7432                    >(_) => {}
7433                }
7434            }
7435            #[automatically_derived]
7436            #[doc(hidden)]
7437            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
7438                fn from(value: revokeRoleReturn) -> Self {
7439                    ()
7440                }
7441            }
7442            #[automatically_derived]
7443            #[doc(hidden)]
7444            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
7445                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7446                    Self {}
7447                }
7448            }
7449        }
7450        impl revokeRoleReturn {
7451            fn _tokenize(
7452                &self,
7453            ) -> <revokeRoleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7454                ()
7455            }
7456        }
7457        #[automatically_derived]
7458        impl alloy_sol_types::SolCall for revokeRoleCall {
7459            type Parameters<'a> = (
7460                alloy::sol_types::sol_data::FixedBytes<32>,
7461                alloy::sol_types::sol_data::Address,
7462            );
7463            type Token<'a> = <Self::Parameters<
7464                'a,
7465            > as alloy_sol_types::SolType>::Token<'a>;
7466            type Return = revokeRoleReturn;
7467            type ReturnTuple<'a> = ();
7468            type ReturnToken<'a> = <Self::ReturnTuple<
7469                'a,
7470            > as alloy_sol_types::SolType>::Token<'a>;
7471            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
7472            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
7473            #[inline]
7474            fn new<'a>(
7475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7476            ) -> Self {
7477                tuple.into()
7478            }
7479            #[inline]
7480            fn tokenize(&self) -> Self::Token<'_> {
7481                (
7482                    <alloy::sol_types::sol_data::FixedBytes<
7483                        32,
7484                    > as alloy_sol_types::SolType>::tokenize(&self.role),
7485                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7486                        &self.account,
7487                    ),
7488                )
7489            }
7490            #[inline]
7491            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7492                revokeRoleReturn::_tokenize(ret)
7493            }
7494            #[inline]
7495            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7496                <Self::ReturnTuple<
7497                    '_,
7498                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7499                    .map(Into::into)
7500            }
7501            #[inline]
7502            fn abi_decode_returns_with_config(
7503                data: &[u8],
7504                config: alloy_sol_types::abi::AbiDecoderConfig,
7505            ) -> alloy_sol_types::Result<Self::Return> {
7506                <Self::ReturnTuple<
7507                    '_,
7508                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7509                        data,
7510                        config,
7511                    )
7512                    .map(Into::into)
7513            }
7514            #[inline]
7515            fn abi_decode_returns_validate(
7516                data: &[u8],
7517            ) -> alloy_sol_types::Result<Self::Return> {
7518                Self::abi_decode_returns_with_config(
7519                    data,
7520                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7521                )
7522            }
7523        }
7524    };
7525    #[derive(serde::Serialize, serde::Deserialize)]
7526    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7527    /**Function with signature `schedule(address,uint256,bytes,bytes32,bytes32,uint256)` and selector `0x01d5062a`.
7528```solidity
7529function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7530```*/
7531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7532    #[derive(Clone)]
7533    pub struct scheduleCall {
7534        #[allow(missing_docs)]
7535        pub target: alloy::sol_types::private::Address,
7536        #[allow(missing_docs)]
7537        pub value: alloy::sol_types::private::primitives::aliases::U256,
7538        #[allow(missing_docs)]
7539        pub data: alloy::sol_types::private::Bytes,
7540        #[allow(missing_docs)]
7541        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7542        #[allow(missing_docs)]
7543        pub salt: alloy::sol_types::private::FixedBytes<32>,
7544        #[allow(missing_docs)]
7545        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7546    }
7547    ///Container type for the return parameters of the [`schedule(address,uint256,bytes,bytes32,bytes32,uint256)`](scheduleCall) function.
7548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7549    #[derive(Clone)]
7550    pub struct scheduleReturn {}
7551    #[allow(
7552        non_camel_case_types,
7553        non_snake_case,
7554        clippy::pub_underscore_fields,
7555        clippy::style
7556    )]
7557    const _: () = {
7558        use alloy::sol_types as alloy_sol_types;
7559        {
7560            #[doc(hidden)]
7561            #[allow(dead_code)]
7562            type UnderlyingSolTuple<'a> = (
7563                alloy::sol_types::sol_data::Address,
7564                alloy::sol_types::sol_data::Uint<256>,
7565                alloy::sol_types::sol_data::Bytes,
7566                alloy::sol_types::sol_data::FixedBytes<32>,
7567                alloy::sol_types::sol_data::FixedBytes<32>,
7568                alloy::sol_types::sol_data::Uint<256>,
7569            );
7570            #[doc(hidden)]
7571            type UnderlyingRustTuple<'a> = (
7572                alloy::sol_types::private::Address,
7573                alloy::sol_types::private::primitives::aliases::U256,
7574                alloy::sol_types::private::Bytes,
7575                alloy::sol_types::private::FixedBytes<32>,
7576                alloy::sol_types::private::FixedBytes<32>,
7577                alloy::sol_types::private::primitives::aliases::U256,
7578            );
7579            #[cfg(test)]
7580            #[allow(dead_code, unreachable_patterns)]
7581            fn _type_assertion(
7582                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7583            ) {
7584                match _t {
7585                    alloy_sol_types::private::AssertTypeEq::<
7586                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7587                    >(_) => {}
7588                }
7589            }
7590            #[automatically_derived]
7591            #[doc(hidden)]
7592            impl ::core::convert::From<scheduleCall> for UnderlyingRustTuple<'_> {
7593                fn from(value: scheduleCall) -> Self {
7594                    (
7595                        value.target,
7596                        value.value,
7597                        value.data,
7598                        value.predecessor,
7599                        value.salt,
7600                        value.delay,
7601                    )
7602                }
7603            }
7604            #[automatically_derived]
7605            #[doc(hidden)]
7606            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleCall {
7607                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7608                    Self {
7609                        target: tuple.0,
7610                        value: tuple.1,
7611                        data: tuple.2,
7612                        predecessor: tuple.3,
7613                        salt: tuple.4,
7614                        delay: tuple.5,
7615                    }
7616                }
7617            }
7618        }
7619        {
7620            #[doc(hidden)]
7621            #[allow(dead_code)]
7622            type UnderlyingSolTuple<'a> = ();
7623            #[doc(hidden)]
7624            type UnderlyingRustTuple<'a> = ();
7625            #[cfg(test)]
7626            #[allow(dead_code, unreachable_patterns)]
7627            fn _type_assertion(
7628                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7629            ) {
7630                match _t {
7631                    alloy_sol_types::private::AssertTypeEq::<
7632                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7633                    >(_) => {}
7634                }
7635            }
7636            #[automatically_derived]
7637            #[doc(hidden)]
7638            impl ::core::convert::From<scheduleReturn> for UnderlyingRustTuple<'_> {
7639                fn from(value: scheduleReturn) -> Self {
7640                    ()
7641                }
7642            }
7643            #[automatically_derived]
7644            #[doc(hidden)]
7645            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleReturn {
7646                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7647                    Self {}
7648                }
7649            }
7650        }
7651        impl scheduleReturn {
7652            fn _tokenize(
7653                &self,
7654            ) -> <scheduleCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7655                ()
7656            }
7657        }
7658        #[automatically_derived]
7659        impl alloy_sol_types::SolCall for scheduleCall {
7660            type Parameters<'a> = (
7661                alloy::sol_types::sol_data::Address,
7662                alloy::sol_types::sol_data::Uint<256>,
7663                alloy::sol_types::sol_data::Bytes,
7664                alloy::sol_types::sol_data::FixedBytes<32>,
7665                alloy::sol_types::sol_data::FixedBytes<32>,
7666                alloy::sol_types::sol_data::Uint<256>,
7667            );
7668            type Token<'a> = <Self::Parameters<
7669                'a,
7670            > as alloy_sol_types::SolType>::Token<'a>;
7671            type Return = scheduleReturn;
7672            type ReturnTuple<'a> = ();
7673            type ReturnToken<'a> = <Self::ReturnTuple<
7674                'a,
7675            > as alloy_sol_types::SolType>::Token<'a>;
7676            const SIGNATURE: &'static str = "schedule(address,uint256,bytes,bytes32,bytes32,uint256)";
7677            const SELECTOR: [u8; 4] = [1u8, 213u8, 6u8, 42u8];
7678            #[inline]
7679            fn new<'a>(
7680                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7681            ) -> Self {
7682                tuple.into()
7683            }
7684            #[inline]
7685            fn tokenize(&self) -> Self::Token<'_> {
7686                (
7687                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7688                        &self.target,
7689                    ),
7690                    <alloy::sol_types::sol_data::Uint<
7691                        256,
7692                    > as alloy_sol_types::SolType>::tokenize(&self.value),
7693                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
7694                        &self.data,
7695                    ),
7696                    <alloy::sol_types::sol_data::FixedBytes<
7697                        32,
7698                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7699                    <alloy::sol_types::sol_data::FixedBytes<
7700                        32,
7701                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7702                    <alloy::sol_types::sol_data::Uint<
7703                        256,
7704                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7705                )
7706            }
7707            #[inline]
7708            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7709                scheduleReturn::_tokenize(ret)
7710            }
7711            #[inline]
7712            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7713                <Self::ReturnTuple<
7714                    '_,
7715                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7716                    .map(Into::into)
7717            }
7718            #[inline]
7719            fn abi_decode_returns_with_config(
7720                data: &[u8],
7721                config: alloy_sol_types::abi::AbiDecoderConfig,
7722            ) -> alloy_sol_types::Result<Self::Return> {
7723                <Self::ReturnTuple<
7724                    '_,
7725                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7726                        data,
7727                        config,
7728                    )
7729                    .map(Into::into)
7730            }
7731            #[inline]
7732            fn abi_decode_returns_validate(
7733                data: &[u8],
7734            ) -> alloy_sol_types::Result<Self::Return> {
7735                Self::abi_decode_returns_with_config(
7736                    data,
7737                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7738                )
7739            }
7740        }
7741    };
7742    #[derive(serde::Serialize, serde::Deserialize)]
7743    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7744    /**Function with signature `scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)` and selector `0x8f2a0bb0`.
7745```solidity
7746function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
7747```*/
7748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7749    #[derive(Clone)]
7750    pub struct scheduleBatchCall {
7751        #[allow(missing_docs)]
7752        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7753        #[allow(missing_docs)]
7754        pub values: alloy::sol_types::private::Vec<
7755            alloy::sol_types::private::primitives::aliases::U256,
7756        >,
7757        #[allow(missing_docs)]
7758        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7759        #[allow(missing_docs)]
7760        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
7761        #[allow(missing_docs)]
7762        pub salt: alloy::sol_types::private::FixedBytes<32>,
7763        #[allow(missing_docs)]
7764        pub delay: alloy::sol_types::private::primitives::aliases::U256,
7765    }
7766    ///Container type for the return parameters of the [`scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)`](scheduleBatchCall) function.
7767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7768    #[derive(Clone)]
7769    pub struct scheduleBatchReturn {}
7770    #[allow(
7771        non_camel_case_types,
7772        non_snake_case,
7773        clippy::pub_underscore_fields,
7774        clippy::style
7775    )]
7776    const _: () = {
7777        use alloy::sol_types as alloy_sol_types;
7778        {
7779            #[doc(hidden)]
7780            #[allow(dead_code)]
7781            type UnderlyingSolTuple<'a> = (
7782                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7783                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7784                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7785                alloy::sol_types::sol_data::FixedBytes<32>,
7786                alloy::sol_types::sol_data::FixedBytes<32>,
7787                alloy::sol_types::sol_data::Uint<256>,
7788            );
7789            #[doc(hidden)]
7790            type UnderlyingRustTuple<'a> = (
7791                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
7792                alloy::sol_types::private::Vec<
7793                    alloy::sol_types::private::primitives::aliases::U256,
7794                >,
7795                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
7796                alloy::sol_types::private::FixedBytes<32>,
7797                alloy::sol_types::private::FixedBytes<32>,
7798                alloy::sol_types::private::primitives::aliases::U256,
7799            );
7800            #[cfg(test)]
7801            #[allow(dead_code, unreachable_patterns)]
7802            fn _type_assertion(
7803                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7804            ) {
7805                match _t {
7806                    alloy_sol_types::private::AssertTypeEq::<
7807                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7808                    >(_) => {}
7809                }
7810            }
7811            #[automatically_derived]
7812            #[doc(hidden)]
7813            impl ::core::convert::From<scheduleBatchCall> for UnderlyingRustTuple<'_> {
7814                fn from(value: scheduleBatchCall) -> Self {
7815                    (
7816                        value.targets,
7817                        value.values,
7818                        value.payloads,
7819                        value.predecessor,
7820                        value.salt,
7821                        value.delay,
7822                    )
7823                }
7824            }
7825            #[automatically_derived]
7826            #[doc(hidden)]
7827            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchCall {
7828                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7829                    Self {
7830                        targets: tuple.0,
7831                        values: tuple.1,
7832                        payloads: tuple.2,
7833                        predecessor: tuple.3,
7834                        salt: tuple.4,
7835                        delay: tuple.5,
7836                    }
7837                }
7838            }
7839        }
7840        {
7841            #[doc(hidden)]
7842            #[allow(dead_code)]
7843            type UnderlyingSolTuple<'a> = ();
7844            #[doc(hidden)]
7845            type UnderlyingRustTuple<'a> = ();
7846            #[cfg(test)]
7847            #[allow(dead_code, unreachable_patterns)]
7848            fn _type_assertion(
7849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7850            ) {
7851                match _t {
7852                    alloy_sol_types::private::AssertTypeEq::<
7853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7854                    >(_) => {}
7855                }
7856            }
7857            #[automatically_derived]
7858            #[doc(hidden)]
7859            impl ::core::convert::From<scheduleBatchReturn> for UnderlyingRustTuple<'_> {
7860                fn from(value: scheduleBatchReturn) -> Self {
7861                    ()
7862                }
7863            }
7864            #[automatically_derived]
7865            #[doc(hidden)]
7866            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchReturn {
7867                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7868                    Self {}
7869                }
7870            }
7871        }
7872        impl scheduleBatchReturn {
7873            fn _tokenize(
7874                &self,
7875            ) -> <scheduleBatchCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7876                ()
7877            }
7878        }
7879        #[automatically_derived]
7880        impl alloy_sol_types::SolCall for scheduleBatchCall {
7881            type Parameters<'a> = (
7882                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
7883                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
7884                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
7885                alloy::sol_types::sol_data::FixedBytes<32>,
7886                alloy::sol_types::sol_data::FixedBytes<32>,
7887                alloy::sol_types::sol_data::Uint<256>,
7888            );
7889            type Token<'a> = <Self::Parameters<
7890                'a,
7891            > as alloy_sol_types::SolType>::Token<'a>;
7892            type Return = scheduleBatchReturn;
7893            type ReturnTuple<'a> = ();
7894            type ReturnToken<'a> = <Self::ReturnTuple<
7895                'a,
7896            > as alloy_sol_types::SolType>::Token<'a>;
7897            const SIGNATURE: &'static str = "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)";
7898            const SELECTOR: [u8; 4] = [143u8, 42u8, 11u8, 176u8];
7899            #[inline]
7900            fn new<'a>(
7901                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7902            ) -> Self {
7903                tuple.into()
7904            }
7905            #[inline]
7906            fn tokenize(&self) -> Self::Token<'_> {
7907                (
7908                    <alloy::sol_types::sol_data::Array<
7909                        alloy::sol_types::sol_data::Address,
7910                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
7911                    <alloy::sol_types::sol_data::Array<
7912                        alloy::sol_types::sol_data::Uint<256>,
7913                    > as alloy_sol_types::SolType>::tokenize(&self.values),
7914                    <alloy::sol_types::sol_data::Array<
7915                        alloy::sol_types::sol_data::Bytes,
7916                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
7917                    <alloy::sol_types::sol_data::FixedBytes<
7918                        32,
7919                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
7920                    <alloy::sol_types::sol_data::FixedBytes<
7921                        32,
7922                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
7923                    <alloy::sol_types::sol_data::Uint<
7924                        256,
7925                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
7926                )
7927            }
7928            #[inline]
7929            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7930                scheduleBatchReturn::_tokenize(ret)
7931            }
7932            #[inline]
7933            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7934                <Self::ReturnTuple<
7935                    '_,
7936                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7937                    .map(Into::into)
7938            }
7939            #[inline]
7940            fn abi_decode_returns_with_config(
7941                data: &[u8],
7942                config: alloy_sol_types::abi::AbiDecoderConfig,
7943            ) -> alloy_sol_types::Result<Self::Return> {
7944                <Self::ReturnTuple<
7945                    '_,
7946                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
7947                        data,
7948                        config,
7949                    )
7950                    .map(Into::into)
7951            }
7952            #[inline]
7953            fn abi_decode_returns_validate(
7954                data: &[u8],
7955            ) -> alloy_sol_types::Result<Self::Return> {
7956                Self::abi_decode_returns_with_config(
7957                    data,
7958                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
7959                )
7960            }
7961        }
7962    };
7963    #[derive(serde::Serialize, serde::Deserialize)]
7964    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7965    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
7966```solidity
7967function supportsInterface(bytes4 interfaceId) external view returns (bool);
7968```*/
7969    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7970    #[derive(Clone)]
7971    pub struct supportsInterfaceCall {
7972        #[allow(missing_docs)]
7973        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
7974    }
7975    #[derive(serde::Serialize, serde::Deserialize)]
7976    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7977    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
7978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7979    #[derive(Clone)]
7980    pub struct supportsInterfaceReturn {
7981        #[allow(missing_docs)]
7982        pub _0: bool,
7983    }
7984    #[allow(
7985        non_camel_case_types,
7986        non_snake_case,
7987        clippy::pub_underscore_fields,
7988        clippy::style
7989    )]
7990    const _: () = {
7991        use alloy::sol_types as alloy_sol_types;
7992        {
7993            #[doc(hidden)]
7994            #[allow(dead_code)]
7995            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
7996            #[doc(hidden)]
7997            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
7998            #[cfg(test)]
7999            #[allow(dead_code, unreachable_patterns)]
8000            fn _type_assertion(
8001                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8002            ) {
8003                match _t {
8004                    alloy_sol_types::private::AssertTypeEq::<
8005                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8006                    >(_) => {}
8007                }
8008            }
8009            #[automatically_derived]
8010            #[doc(hidden)]
8011            impl ::core::convert::From<supportsInterfaceCall>
8012            for UnderlyingRustTuple<'_> {
8013                fn from(value: supportsInterfaceCall) -> Self {
8014                    (value.interfaceId,)
8015                }
8016            }
8017            #[automatically_derived]
8018            #[doc(hidden)]
8019            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8020            for supportsInterfaceCall {
8021                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8022                    Self { interfaceId: tuple.0 }
8023                }
8024            }
8025        }
8026        {
8027            #[doc(hidden)]
8028            #[allow(dead_code)]
8029            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8030            #[doc(hidden)]
8031            type UnderlyingRustTuple<'a> = (bool,);
8032            #[cfg(test)]
8033            #[allow(dead_code, unreachable_patterns)]
8034            fn _type_assertion(
8035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8036            ) {
8037                match _t {
8038                    alloy_sol_types::private::AssertTypeEq::<
8039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8040                    >(_) => {}
8041                }
8042            }
8043            #[automatically_derived]
8044            #[doc(hidden)]
8045            impl ::core::convert::From<supportsInterfaceReturn>
8046            for UnderlyingRustTuple<'_> {
8047                fn from(value: supportsInterfaceReturn) -> Self {
8048                    (value._0,)
8049                }
8050            }
8051            #[automatically_derived]
8052            #[doc(hidden)]
8053            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8054            for supportsInterfaceReturn {
8055                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8056                    Self { _0: tuple.0 }
8057                }
8058            }
8059        }
8060        #[automatically_derived]
8061        impl alloy_sol_types::SolCall for supportsInterfaceCall {
8062            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
8063            type Token<'a> = <Self::Parameters<
8064                'a,
8065            > as alloy_sol_types::SolType>::Token<'a>;
8066            type Return = bool;
8067            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8068            type ReturnToken<'a> = <Self::ReturnTuple<
8069                'a,
8070            > as alloy_sol_types::SolType>::Token<'a>;
8071            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
8072            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
8073            #[inline]
8074            fn new<'a>(
8075                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8076            ) -> Self {
8077                tuple.into()
8078            }
8079            #[inline]
8080            fn tokenize(&self) -> Self::Token<'_> {
8081                (
8082                    <alloy::sol_types::sol_data::FixedBytes<
8083                        4,
8084                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
8085                )
8086            }
8087            #[inline]
8088            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8089                (
8090                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8091                        ret,
8092                    ),
8093                )
8094            }
8095            #[inline]
8096            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8097                <Self::ReturnTuple<
8098                    '_,
8099                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8100                    .map(|r| {
8101                        let r: supportsInterfaceReturn = r.into();
8102                        r._0
8103                    })
8104            }
8105            #[inline]
8106            fn abi_decode_returns_with_config(
8107                data: &[u8],
8108                config: alloy_sol_types::abi::AbiDecoderConfig,
8109            ) -> alloy_sol_types::Result<Self::Return> {
8110                <Self::ReturnTuple<
8111                    '_,
8112                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8113                        data,
8114                        config,
8115                    )
8116                    .map(|r| {
8117                        let r: supportsInterfaceReturn = r.into();
8118                        r._0
8119                    })
8120            }
8121            #[inline]
8122            fn abi_decode_returns_validate(
8123                data: &[u8],
8124            ) -> alloy_sol_types::Result<Self::Return> {
8125                Self::abi_decode_returns_with_config(
8126                    data,
8127                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8128                )
8129            }
8130        }
8131    };
8132    #[derive(serde::Serialize, serde::Deserialize)]
8133    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8134    /**Function with signature `updateDelay(uint256)` and selector `0x64d62353`.
8135```solidity
8136function updateDelay(uint256 newDelay) external;
8137```*/
8138    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8139    #[derive(Clone)]
8140    pub struct updateDelayCall {
8141        #[allow(missing_docs)]
8142        pub newDelay: alloy::sol_types::private::primitives::aliases::U256,
8143    }
8144    ///Container type for the return parameters of the [`updateDelay(uint256)`](updateDelayCall) function.
8145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8146    #[derive(Clone)]
8147    pub struct updateDelayReturn {}
8148    #[allow(
8149        non_camel_case_types,
8150        non_snake_case,
8151        clippy::pub_underscore_fields,
8152        clippy::style
8153    )]
8154    const _: () = {
8155        use alloy::sol_types as alloy_sol_types;
8156        {
8157            #[doc(hidden)]
8158            #[allow(dead_code)]
8159            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8160            #[doc(hidden)]
8161            type UnderlyingRustTuple<'a> = (
8162                alloy::sol_types::private::primitives::aliases::U256,
8163            );
8164            #[cfg(test)]
8165            #[allow(dead_code, unreachable_patterns)]
8166            fn _type_assertion(
8167                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8168            ) {
8169                match _t {
8170                    alloy_sol_types::private::AssertTypeEq::<
8171                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8172                    >(_) => {}
8173                }
8174            }
8175            #[automatically_derived]
8176            #[doc(hidden)]
8177            impl ::core::convert::From<updateDelayCall> for UnderlyingRustTuple<'_> {
8178                fn from(value: updateDelayCall) -> Self {
8179                    (value.newDelay,)
8180                }
8181            }
8182            #[automatically_derived]
8183            #[doc(hidden)]
8184            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayCall {
8185                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8186                    Self { newDelay: tuple.0 }
8187                }
8188            }
8189        }
8190        {
8191            #[doc(hidden)]
8192            #[allow(dead_code)]
8193            type UnderlyingSolTuple<'a> = ();
8194            #[doc(hidden)]
8195            type UnderlyingRustTuple<'a> = ();
8196            #[cfg(test)]
8197            #[allow(dead_code, unreachable_patterns)]
8198            fn _type_assertion(
8199                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8200            ) {
8201                match _t {
8202                    alloy_sol_types::private::AssertTypeEq::<
8203                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8204                    >(_) => {}
8205                }
8206            }
8207            #[automatically_derived]
8208            #[doc(hidden)]
8209            impl ::core::convert::From<updateDelayReturn> for UnderlyingRustTuple<'_> {
8210                fn from(value: updateDelayReturn) -> Self {
8211                    ()
8212                }
8213            }
8214            #[automatically_derived]
8215            #[doc(hidden)]
8216            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayReturn {
8217                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8218                    Self {}
8219                }
8220            }
8221        }
8222        impl updateDelayReturn {
8223            fn _tokenize(
8224                &self,
8225            ) -> <updateDelayCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8226                ()
8227            }
8228        }
8229        #[automatically_derived]
8230        impl alloy_sol_types::SolCall for updateDelayCall {
8231            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8232            type Token<'a> = <Self::Parameters<
8233                'a,
8234            > as alloy_sol_types::SolType>::Token<'a>;
8235            type Return = updateDelayReturn;
8236            type ReturnTuple<'a> = ();
8237            type ReturnToken<'a> = <Self::ReturnTuple<
8238                'a,
8239            > as alloy_sol_types::SolType>::Token<'a>;
8240            const SIGNATURE: &'static str = "updateDelay(uint256)";
8241            const SELECTOR: [u8; 4] = [100u8, 214u8, 35u8, 83u8];
8242            #[inline]
8243            fn new<'a>(
8244                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8245            ) -> Self {
8246                tuple.into()
8247            }
8248            #[inline]
8249            fn tokenize(&self) -> Self::Token<'_> {
8250                (
8251                    <alloy::sol_types::sol_data::Uint<
8252                        256,
8253                    > as alloy_sol_types::SolType>::tokenize(&self.newDelay),
8254                )
8255            }
8256            #[inline]
8257            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8258                updateDelayReturn::_tokenize(ret)
8259            }
8260            #[inline]
8261            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8262                <Self::ReturnTuple<
8263                    '_,
8264                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8265                    .map(Into::into)
8266            }
8267            #[inline]
8268            fn abi_decode_returns_with_config(
8269                data: &[u8],
8270                config: alloy_sol_types::abi::AbiDecoderConfig,
8271            ) -> alloy_sol_types::Result<Self::Return> {
8272                <Self::ReturnTuple<
8273                    '_,
8274                > as alloy_sol_types::SolType>::abi_decode_sequence_with_config(
8275                        data,
8276                        config,
8277                    )
8278                    .map(Into::into)
8279            }
8280            #[inline]
8281            fn abi_decode_returns_validate(
8282                data: &[u8],
8283            ) -> alloy_sol_types::Result<Self::Return> {
8284                Self::abi_decode_returns_with_config(
8285                    data,
8286                    alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8287                )
8288            }
8289        }
8290    };
8291    ///Container for all the [`OpsTimelock`](self) function calls.
8292    #[derive(Clone)]
8293    #[derive(serde::Serialize, serde::Deserialize)]
8294    #[derive(Debug, PartialEq, Eq, Hash)]
8295    pub enum OpsTimelockCalls {
8296        #[allow(missing_docs)]
8297        CANCELLER_ROLE(CANCELLER_ROLECall),
8298        #[allow(missing_docs)]
8299        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
8300        #[allow(missing_docs)]
8301        EXECUTOR_ROLE(EXECUTOR_ROLECall),
8302        #[allow(missing_docs)]
8303        PROPOSER_ROLE(PROPOSER_ROLECall),
8304        #[allow(missing_docs)]
8305        cancel(cancelCall),
8306        #[allow(missing_docs)]
8307        execute(executeCall),
8308        #[allow(missing_docs)]
8309        executeBatch(executeBatchCall),
8310        #[allow(missing_docs)]
8311        getMinDelay(getMinDelayCall),
8312        #[allow(missing_docs)]
8313        getOperationState(getOperationStateCall),
8314        #[allow(missing_docs)]
8315        getRoleAdmin(getRoleAdminCall),
8316        #[allow(missing_docs)]
8317        getTimestamp(getTimestampCall),
8318        #[allow(missing_docs)]
8319        grantRole(grantRoleCall),
8320        #[allow(missing_docs)]
8321        hasRole(hasRoleCall),
8322        #[allow(missing_docs)]
8323        hashOperation(hashOperationCall),
8324        #[allow(missing_docs)]
8325        hashOperationBatch(hashOperationBatchCall),
8326        #[allow(missing_docs)]
8327        isOperation(isOperationCall),
8328        #[allow(missing_docs)]
8329        isOperationDone(isOperationDoneCall),
8330        #[allow(missing_docs)]
8331        isOperationPending(isOperationPendingCall),
8332        #[allow(missing_docs)]
8333        isOperationReady(isOperationReadyCall),
8334        #[allow(missing_docs)]
8335        onERC1155BatchReceived(onERC1155BatchReceivedCall),
8336        #[allow(missing_docs)]
8337        onERC1155Received(onERC1155ReceivedCall),
8338        #[allow(missing_docs)]
8339        onERC721Received(onERC721ReceivedCall),
8340        #[allow(missing_docs)]
8341        renounceRole(renounceRoleCall),
8342        #[allow(missing_docs)]
8343        revokeRole(revokeRoleCall),
8344        #[allow(missing_docs)]
8345        schedule(scheduleCall),
8346        #[allow(missing_docs)]
8347        scheduleBatch(scheduleBatchCall),
8348        #[allow(missing_docs)]
8349        supportsInterface(supportsInterfaceCall),
8350        #[allow(missing_docs)]
8351        updateDelay(updateDelayCall),
8352    }
8353    impl OpsTimelockCalls {
8354        /// All the selectors of this enum.
8355        ///
8356        /// Note that the selectors might not be in the same order as the variants.
8357        /// No guarantees are made about the order of the selectors.
8358        ///
8359        /// Prefer using `SolInterface` methods instead.
8360        pub const SELECTORS: &'static [[u8; 4usize]] = &[
8361            [1u8, 213u8, 6u8, 42u8],
8362            [1u8, 255u8, 201u8, 167u8],
8363            [7u8, 189u8, 2u8, 101u8],
8364            [19u8, 64u8, 8u8, 211u8],
8365            [19u8, 188u8, 159u8, 32u8],
8366            [21u8, 11u8, 122u8, 2u8],
8367            [36u8, 138u8, 156u8, 163u8],
8368            [42u8, 176u8, 245u8, 41u8],
8369            [47u8, 47u8, 241u8, 93u8],
8370            [49u8, 213u8, 7u8, 80u8],
8371            [54u8, 86u8, 138u8, 190u8],
8372            [88u8, 75u8, 21u8, 62u8],
8373            [100u8, 214u8, 35u8, 83u8],
8374            [121u8, 88u8, 0u8, 76u8],
8375            [128u8, 101u8, 101u8, 127u8],
8376            [143u8, 42u8, 11u8, 176u8],
8377            [143u8, 97u8, 244u8, 245u8],
8378            [145u8, 209u8, 72u8, 84u8],
8379            [162u8, 23u8, 253u8, 223u8],
8380            [176u8, 142u8, 81u8, 192u8],
8381            [177u8, 197u8, 244u8, 39u8],
8382            [188u8, 25u8, 124u8, 129u8],
8383            [196u8, 210u8, 82u8, 245u8],
8384            [212u8, 92u8, 68u8, 53u8],
8385            [213u8, 71u8, 116u8, 31u8],
8386            [227u8, 131u8, 53u8, 229u8],
8387            [242u8, 58u8, 110u8, 97u8],
8388            [242u8, 122u8, 12u8, 146u8],
8389        ];
8390        /// The names of the variants in the same order as `SELECTORS`.
8391        pub const VARIANT_NAMES: &'static [&'static str] = &[
8392            ::core::stringify!(schedule),
8393            ::core::stringify!(supportsInterface),
8394            ::core::stringify!(EXECUTOR_ROLE),
8395            ::core::stringify!(execute),
8396            ::core::stringify!(isOperationReady),
8397            ::core::stringify!(onERC721Received),
8398            ::core::stringify!(getRoleAdmin),
8399            ::core::stringify!(isOperationDone),
8400            ::core::stringify!(grantRole),
8401            ::core::stringify!(isOperation),
8402            ::core::stringify!(renounceRole),
8403            ::core::stringify!(isOperationPending),
8404            ::core::stringify!(updateDelay),
8405            ::core::stringify!(getOperationState),
8406            ::core::stringify!(hashOperation),
8407            ::core::stringify!(scheduleBatch),
8408            ::core::stringify!(PROPOSER_ROLE),
8409            ::core::stringify!(hasRole),
8410            ::core::stringify!(DEFAULT_ADMIN_ROLE),
8411            ::core::stringify!(CANCELLER_ROLE),
8412            ::core::stringify!(hashOperationBatch),
8413            ::core::stringify!(onERC1155BatchReceived),
8414            ::core::stringify!(cancel),
8415            ::core::stringify!(getTimestamp),
8416            ::core::stringify!(revokeRole),
8417            ::core::stringify!(executeBatch),
8418            ::core::stringify!(onERC1155Received),
8419            ::core::stringify!(getMinDelay),
8420        ];
8421        /// The signatures in the same order as `SELECTORS`.
8422        pub const SIGNATURES: &'static [&'static str] = &[
8423            <scheduleCall as alloy_sol_types::SolCall>::SIGNATURE,
8424            <supportsInterfaceCall as alloy_sol_types::SolCall>::SIGNATURE,
8425            <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8426            <executeCall as alloy_sol_types::SolCall>::SIGNATURE,
8427            <isOperationReadyCall as alloy_sol_types::SolCall>::SIGNATURE,
8428            <onERC721ReceivedCall as alloy_sol_types::SolCall>::SIGNATURE,
8429            <getRoleAdminCall as alloy_sol_types::SolCall>::SIGNATURE,
8430            <isOperationDoneCall as alloy_sol_types::SolCall>::SIGNATURE,
8431            <grantRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8432            <isOperationCall as alloy_sol_types::SolCall>::SIGNATURE,
8433            <renounceRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8434            <isOperationPendingCall as alloy_sol_types::SolCall>::SIGNATURE,
8435            <updateDelayCall as alloy_sol_types::SolCall>::SIGNATURE,
8436            <getOperationStateCall as alloy_sol_types::SolCall>::SIGNATURE,
8437            <hashOperationCall as alloy_sol_types::SolCall>::SIGNATURE,
8438            <scheduleBatchCall as alloy_sol_types::SolCall>::SIGNATURE,
8439            <PROPOSER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8440            <hasRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8441            <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8442            <CANCELLER_ROLECall as alloy_sol_types::SolCall>::SIGNATURE,
8443            <hashOperationBatchCall as alloy_sol_types::SolCall>::SIGNATURE,
8444            <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::SIGNATURE,
8445            <cancelCall as alloy_sol_types::SolCall>::SIGNATURE,
8446            <getTimestampCall as alloy_sol_types::SolCall>::SIGNATURE,
8447            <revokeRoleCall as alloy_sol_types::SolCall>::SIGNATURE,
8448            <executeBatchCall as alloy_sol_types::SolCall>::SIGNATURE,
8449            <onERC1155ReceivedCall as alloy_sol_types::SolCall>::SIGNATURE,
8450            <getMinDelayCall as alloy_sol_types::SolCall>::SIGNATURE,
8451        ];
8452        /// Returns the signature for the given selector, if known.
8453        #[inline]
8454        pub fn signature_by_selector(
8455            selector: [u8; 4usize],
8456        ) -> ::core::option::Option<&'static str> {
8457            match Self::SELECTORS.binary_search(&selector) {
8458                ::core::result::Result::Ok(idx) => {
8459                    ::core::option::Option::Some(Self::SIGNATURES[idx])
8460                }
8461                ::core::result::Result::Err(_) => ::core::option::Option::None,
8462            }
8463        }
8464        /// Returns the enum variant name for the given selector, if known.
8465        #[inline]
8466        pub fn name_by_selector(
8467            selector: [u8; 4usize],
8468        ) -> ::core::option::Option<&'static str> {
8469            let sig = Self::signature_by_selector(selector)?;
8470            sig.split_once('(').map(|(name, _)| name)
8471        }
8472    }
8473    #[automatically_derived]
8474    impl alloy_sol_types::SolInterface for OpsTimelockCalls {
8475        const NAME: &'static str = "OpsTimelockCalls";
8476        const MIN_DATA_LENGTH: usize = 0usize;
8477        const COUNT: usize = 28usize;
8478        #[inline]
8479        fn selector(&self) -> [u8; 4] {
8480            match self {
8481                Self::CANCELLER_ROLE(_) => {
8482                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8483                }
8484                Self::DEFAULT_ADMIN_ROLE(_) => {
8485                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8486                }
8487                Self::EXECUTOR_ROLE(_) => {
8488                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8489                }
8490                Self::PROPOSER_ROLE(_) => {
8491                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
8492                }
8493                Self::cancel(_) => <cancelCall as alloy_sol_types::SolCall>::SELECTOR,
8494                Self::execute(_) => <executeCall as alloy_sol_types::SolCall>::SELECTOR,
8495                Self::executeBatch(_) => {
8496                    <executeBatchCall as alloy_sol_types::SolCall>::SELECTOR
8497                }
8498                Self::getMinDelay(_) => {
8499                    <getMinDelayCall as alloy_sol_types::SolCall>::SELECTOR
8500                }
8501                Self::getOperationState(_) => {
8502                    <getOperationStateCall as alloy_sol_types::SolCall>::SELECTOR
8503                }
8504                Self::getRoleAdmin(_) => {
8505                    <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR
8506                }
8507                Self::getTimestamp(_) => {
8508                    <getTimestampCall as alloy_sol_types::SolCall>::SELECTOR
8509                }
8510                Self::grantRole(_) => {
8511                    <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR
8512                }
8513                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
8514                Self::hashOperation(_) => {
8515                    <hashOperationCall as alloy_sol_types::SolCall>::SELECTOR
8516                }
8517                Self::hashOperationBatch(_) => {
8518                    <hashOperationBatchCall as alloy_sol_types::SolCall>::SELECTOR
8519                }
8520                Self::isOperation(_) => {
8521                    <isOperationCall as alloy_sol_types::SolCall>::SELECTOR
8522                }
8523                Self::isOperationDone(_) => {
8524                    <isOperationDoneCall as alloy_sol_types::SolCall>::SELECTOR
8525                }
8526                Self::isOperationPending(_) => {
8527                    <isOperationPendingCall as alloy_sol_types::SolCall>::SELECTOR
8528                }
8529                Self::isOperationReady(_) => {
8530                    <isOperationReadyCall as alloy_sol_types::SolCall>::SELECTOR
8531                }
8532                Self::onERC1155BatchReceived(_) => {
8533                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8534                }
8535                Self::onERC1155Received(_) => {
8536                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8537                }
8538                Self::onERC721Received(_) => {
8539                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
8540                }
8541                Self::renounceRole(_) => {
8542                    <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR
8543                }
8544                Self::revokeRole(_) => {
8545                    <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR
8546                }
8547                Self::schedule(_) => <scheduleCall as alloy_sol_types::SolCall>::SELECTOR,
8548                Self::scheduleBatch(_) => {
8549                    <scheduleBatchCall as alloy_sol_types::SolCall>::SELECTOR
8550                }
8551                Self::supportsInterface(_) => {
8552                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
8553                }
8554                Self::updateDelay(_) => {
8555                    <updateDelayCall as alloy_sol_types::SolCall>::SELECTOR
8556                }
8557            }
8558        }
8559        #[inline]
8560        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
8561            Self::SELECTORS.get(i).copied()
8562        }
8563        #[inline]
8564        fn valid_selector(selector: [u8; 4]) -> bool {
8565            Self::SELECTORS.binary_search(&selector).is_ok()
8566        }
8567        #[inline]
8568        #[allow(non_snake_case)]
8569        fn abi_decode_raw(
8570            selector: [u8; 4],
8571            data: &[u8],
8572        ) -> alloy_sol_types::Result<Self> {
8573            Self::abi_decode_raw_with_config(
8574                selector,
8575                data,
8576                alloy_sol_types::abi::AbiDecoderConfig::default(),
8577            )
8578        }
8579        #[inline]
8580        #[allow(non_snake_case)]
8581        fn abi_decode_raw_with_config(
8582            selector: [u8; 4],
8583            data: &[u8],
8584            config: alloy_sol_types::abi::AbiDecoderConfig,
8585        ) -> alloy_sol_types::Result<Self> {
8586            static DECODE_SHIMS: &[fn(
8587                &[u8],
8588                alloy_sol_types::abi::AbiDecoderConfig,
8589            ) -> alloy_sol_types::Result<OpsTimelockCalls>] = &[
8590                {
8591                    fn schedule(
8592                        data: &[u8],
8593                        config: alloy_sol_types::abi::AbiDecoderConfig,
8594                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8595                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8596                                data,
8597                                config,
8598                            )
8599                            .map(OpsTimelockCalls::schedule)
8600                    }
8601                    schedule
8602                },
8603                {
8604                    fn supportsInterface(
8605                        data: &[u8],
8606                        config: alloy_sol_types::abi::AbiDecoderConfig,
8607                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8608                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8609                                data,
8610                                config,
8611                            )
8612                            .map(OpsTimelockCalls::supportsInterface)
8613                    }
8614                    supportsInterface
8615                },
8616                {
8617                    fn EXECUTOR_ROLE(
8618                        data: &[u8],
8619                        config: alloy_sol_types::abi::AbiDecoderConfig,
8620                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8621                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8622                                data,
8623                                config,
8624                            )
8625                            .map(OpsTimelockCalls::EXECUTOR_ROLE)
8626                    }
8627                    EXECUTOR_ROLE
8628                },
8629                {
8630                    fn execute(
8631                        data: &[u8],
8632                        config: alloy_sol_types::abi::AbiDecoderConfig,
8633                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8634                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8635                                data,
8636                                config,
8637                            )
8638                            .map(OpsTimelockCalls::execute)
8639                    }
8640                    execute
8641                },
8642                {
8643                    fn isOperationReady(
8644                        data: &[u8],
8645                        config: alloy_sol_types::abi::AbiDecoderConfig,
8646                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8647                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8648                                data,
8649                                config,
8650                            )
8651                            .map(OpsTimelockCalls::isOperationReady)
8652                    }
8653                    isOperationReady
8654                },
8655                {
8656                    fn onERC721Received(
8657                        data: &[u8],
8658                        config: alloy_sol_types::abi::AbiDecoderConfig,
8659                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8660                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8661                                data,
8662                                config,
8663                            )
8664                            .map(OpsTimelockCalls::onERC721Received)
8665                    }
8666                    onERC721Received
8667                },
8668                {
8669                    fn getRoleAdmin(
8670                        data: &[u8],
8671                        config: alloy_sol_types::abi::AbiDecoderConfig,
8672                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8673                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8674                                data,
8675                                config,
8676                            )
8677                            .map(OpsTimelockCalls::getRoleAdmin)
8678                    }
8679                    getRoleAdmin
8680                },
8681                {
8682                    fn isOperationDone(
8683                        data: &[u8],
8684                        config: alloy_sol_types::abi::AbiDecoderConfig,
8685                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8686                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8687                                data,
8688                                config,
8689                            )
8690                            .map(OpsTimelockCalls::isOperationDone)
8691                    }
8692                    isOperationDone
8693                },
8694                {
8695                    fn grantRole(
8696                        data: &[u8],
8697                        config: alloy_sol_types::abi::AbiDecoderConfig,
8698                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8699                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8700                                data,
8701                                config,
8702                            )
8703                            .map(OpsTimelockCalls::grantRole)
8704                    }
8705                    grantRole
8706                },
8707                {
8708                    fn isOperation(
8709                        data: &[u8],
8710                        config: alloy_sol_types::abi::AbiDecoderConfig,
8711                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8712                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8713                                data,
8714                                config,
8715                            )
8716                            .map(OpsTimelockCalls::isOperation)
8717                    }
8718                    isOperation
8719                },
8720                {
8721                    fn renounceRole(
8722                        data: &[u8],
8723                        config: alloy_sol_types::abi::AbiDecoderConfig,
8724                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8725                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8726                                data,
8727                                config,
8728                            )
8729                            .map(OpsTimelockCalls::renounceRole)
8730                    }
8731                    renounceRole
8732                },
8733                {
8734                    fn isOperationPending(
8735                        data: &[u8],
8736                        config: alloy_sol_types::abi::AbiDecoderConfig,
8737                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8738                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8739                                data,
8740                                config,
8741                            )
8742                            .map(OpsTimelockCalls::isOperationPending)
8743                    }
8744                    isOperationPending
8745                },
8746                {
8747                    fn updateDelay(
8748                        data: &[u8],
8749                        config: alloy_sol_types::abi::AbiDecoderConfig,
8750                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8751                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8752                                data,
8753                                config,
8754                            )
8755                            .map(OpsTimelockCalls::updateDelay)
8756                    }
8757                    updateDelay
8758                },
8759                {
8760                    fn getOperationState(
8761                        data: &[u8],
8762                        config: alloy_sol_types::abi::AbiDecoderConfig,
8763                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8764                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8765                                data,
8766                                config,
8767                            )
8768                            .map(OpsTimelockCalls::getOperationState)
8769                    }
8770                    getOperationState
8771                },
8772                {
8773                    fn hashOperation(
8774                        data: &[u8],
8775                        config: alloy_sol_types::abi::AbiDecoderConfig,
8776                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8777                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8778                                data,
8779                                config,
8780                            )
8781                            .map(OpsTimelockCalls::hashOperation)
8782                    }
8783                    hashOperation
8784                },
8785                {
8786                    fn scheduleBatch(
8787                        data: &[u8],
8788                        config: alloy_sol_types::abi::AbiDecoderConfig,
8789                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8790                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8791                                data,
8792                                config,
8793                            )
8794                            .map(OpsTimelockCalls::scheduleBatch)
8795                    }
8796                    scheduleBatch
8797                },
8798                {
8799                    fn PROPOSER_ROLE(
8800                        data: &[u8],
8801                        config: alloy_sol_types::abi::AbiDecoderConfig,
8802                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8803                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8804                                data,
8805                                config,
8806                            )
8807                            .map(OpsTimelockCalls::PROPOSER_ROLE)
8808                    }
8809                    PROPOSER_ROLE
8810                },
8811                {
8812                    fn hasRole(
8813                        data: &[u8],
8814                        config: alloy_sol_types::abi::AbiDecoderConfig,
8815                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8816                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8817                                data,
8818                                config,
8819                            )
8820                            .map(OpsTimelockCalls::hasRole)
8821                    }
8822                    hasRole
8823                },
8824                {
8825                    fn DEFAULT_ADMIN_ROLE(
8826                        data: &[u8],
8827                        config: alloy_sol_types::abi::AbiDecoderConfig,
8828                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8829                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8830                                data,
8831                                config,
8832                            )
8833                            .map(OpsTimelockCalls::DEFAULT_ADMIN_ROLE)
8834                    }
8835                    DEFAULT_ADMIN_ROLE
8836                },
8837                {
8838                    fn CANCELLER_ROLE(
8839                        data: &[u8],
8840                        config: alloy_sol_types::abi::AbiDecoderConfig,
8841                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8842                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8843                                data,
8844                                config,
8845                            )
8846                            .map(OpsTimelockCalls::CANCELLER_ROLE)
8847                    }
8848                    CANCELLER_ROLE
8849                },
8850                {
8851                    fn hashOperationBatch(
8852                        data: &[u8],
8853                        config: alloy_sol_types::abi::AbiDecoderConfig,
8854                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8855                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8856                                data,
8857                                config,
8858                            )
8859                            .map(OpsTimelockCalls::hashOperationBatch)
8860                    }
8861                    hashOperationBatch
8862                },
8863                {
8864                    fn onERC1155BatchReceived(
8865                        data: &[u8],
8866                        config: alloy_sol_types::abi::AbiDecoderConfig,
8867                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8868                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8869                                data,
8870                                config,
8871                            )
8872                            .map(OpsTimelockCalls::onERC1155BatchReceived)
8873                    }
8874                    onERC1155BatchReceived
8875                },
8876                {
8877                    fn cancel(
8878                        data: &[u8],
8879                        config: alloy_sol_types::abi::AbiDecoderConfig,
8880                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8881                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8882                                data,
8883                                config,
8884                            )
8885                            .map(OpsTimelockCalls::cancel)
8886                    }
8887                    cancel
8888                },
8889                {
8890                    fn getTimestamp(
8891                        data: &[u8],
8892                        config: alloy_sol_types::abi::AbiDecoderConfig,
8893                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8894                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8895                                data,
8896                                config,
8897                            )
8898                            .map(OpsTimelockCalls::getTimestamp)
8899                    }
8900                    getTimestamp
8901                },
8902                {
8903                    fn revokeRole(
8904                        data: &[u8],
8905                        config: alloy_sol_types::abi::AbiDecoderConfig,
8906                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8907                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8908                                data,
8909                                config,
8910                            )
8911                            .map(OpsTimelockCalls::revokeRole)
8912                    }
8913                    revokeRole
8914                },
8915                {
8916                    fn executeBatch(
8917                        data: &[u8],
8918                        config: alloy_sol_types::abi::AbiDecoderConfig,
8919                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8920                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8921                                data,
8922                                config,
8923                            )
8924                            .map(OpsTimelockCalls::executeBatch)
8925                    }
8926                    executeBatch
8927                },
8928                {
8929                    fn onERC1155Received(
8930                        data: &[u8],
8931                        config: alloy_sol_types::abi::AbiDecoderConfig,
8932                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8933                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8934                                data,
8935                                config,
8936                            )
8937                            .map(OpsTimelockCalls::onERC1155Received)
8938                    }
8939                    onERC1155Received
8940                },
8941                {
8942                    fn getMinDelay(
8943                        data: &[u8],
8944                        config: alloy_sol_types::abi::AbiDecoderConfig,
8945                    ) -> alloy_sol_types::Result<OpsTimelockCalls> {
8946                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw_with_config(
8947                                data,
8948                                config,
8949                            )
8950                            .map(OpsTimelockCalls::getMinDelay)
8951                    }
8952                    getMinDelay
8953                },
8954            ];
8955            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
8956                return Err(
8957                    alloy_sol_types::Error::unknown_selector(
8958                        <Self as alloy_sol_types::SolInterface>::NAME,
8959                        selector,
8960                    ),
8961                );
8962            };
8963            DECODE_SHIMS[idx](data, config)
8964        }
8965        #[inline]
8966        #[allow(non_snake_case)]
8967        fn abi_decode_raw_validate(
8968            selector: [u8; 4],
8969            data: &[u8],
8970        ) -> alloy_sol_types::Result<Self> {
8971            Self::abi_decode_raw_with_config(
8972                selector,
8973                data,
8974                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
8975            )
8976        }
8977        #[inline]
8978        fn abi_encoded_size(&self) -> usize {
8979            match self {
8980                Self::CANCELLER_ROLE(inner) => {
8981                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8982                        inner,
8983                    )
8984                }
8985                Self::DEFAULT_ADMIN_ROLE(inner) => {
8986                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8987                        inner,
8988                    )
8989                }
8990                Self::EXECUTOR_ROLE(inner) => {
8991                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8992                        inner,
8993                    )
8994                }
8995                Self::PROPOSER_ROLE(inner) => {
8996                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(
8997                        inner,
8998                    )
8999                }
9000                Self::cancel(inner) => {
9001                    <cancelCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9002                }
9003                Self::execute(inner) => {
9004                    <executeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9005                }
9006                Self::executeBatch(inner) => {
9007                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
9008                        inner,
9009                    )
9010                }
9011                Self::getMinDelay(inner) => {
9012                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
9013                        inner,
9014                    )
9015                }
9016                Self::getOperationState(inner) => {
9017                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
9018                        inner,
9019                    )
9020                }
9021                Self::getRoleAdmin(inner) => {
9022                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(
9023                        inner,
9024                    )
9025                }
9026                Self::getTimestamp(inner) => {
9027                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(
9028                        inner,
9029                    )
9030                }
9031                Self::grantRole(inner) => {
9032                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9033                }
9034                Self::hasRole(inner) => {
9035                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9036                }
9037                Self::hashOperation(inner) => {
9038                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
9039                        inner,
9040                    )
9041                }
9042                Self::hashOperationBatch(inner) => {
9043                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
9044                        inner,
9045                    )
9046                }
9047                Self::isOperation(inner) => {
9048                    <isOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(
9049                        inner,
9050                    )
9051                }
9052                Self::isOperationDone(inner) => {
9053                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encoded_size(
9054                        inner,
9055                    )
9056                }
9057                Self::isOperationPending(inner) => {
9058                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encoded_size(
9059                        inner,
9060                    )
9061                }
9062                Self::isOperationReady(inner) => {
9063                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encoded_size(
9064                        inner,
9065                    )
9066                }
9067                Self::onERC1155BatchReceived(inner) => {
9068                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
9069                        inner,
9070                    )
9071                }
9072                Self::onERC1155Received(inner) => {
9073                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
9074                        inner,
9075                    )
9076                }
9077                Self::onERC721Received(inner) => {
9078                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
9079                        inner,
9080                    )
9081                }
9082                Self::renounceRole(inner) => {
9083                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(
9084                        inner,
9085                    )
9086                }
9087                Self::revokeRole(inner) => {
9088                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9089                }
9090                Self::schedule(inner) => {
9091                    <scheduleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
9092                }
9093                Self::scheduleBatch(inner) => {
9094                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(
9095                        inner,
9096                    )
9097                }
9098                Self::supportsInterface(inner) => {
9099                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(
9100                        inner,
9101                    )
9102                }
9103                Self::updateDelay(inner) => {
9104                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(
9105                        inner,
9106                    )
9107                }
9108            }
9109        }
9110        #[inline]
9111        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9112            match self {
9113                Self::CANCELLER_ROLE(inner) => {
9114                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
9115                        inner,
9116                        out,
9117                    )
9118                }
9119                Self::DEFAULT_ADMIN_ROLE(inner) => {
9120                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
9121                        inner,
9122                        out,
9123                    )
9124                }
9125                Self::EXECUTOR_ROLE(inner) => {
9126                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
9127                        inner,
9128                        out,
9129                    )
9130                }
9131                Self::PROPOSER_ROLE(inner) => {
9132                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(
9133                        inner,
9134                        out,
9135                    )
9136                }
9137                Self::cancel(inner) => {
9138                    <cancelCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9139                }
9140                Self::execute(inner) => {
9141                    <executeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9142                }
9143                Self::executeBatch(inner) => {
9144                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
9145                        inner,
9146                        out,
9147                    )
9148                }
9149                Self::getMinDelay(inner) => {
9150                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
9151                        inner,
9152                        out,
9153                    )
9154                }
9155                Self::getOperationState(inner) => {
9156                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
9157                        inner,
9158                        out,
9159                    )
9160                }
9161                Self::getRoleAdmin(inner) => {
9162                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(
9163                        inner,
9164                        out,
9165                    )
9166                }
9167                Self::getTimestamp(inner) => {
9168                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(
9169                        inner,
9170                        out,
9171                    )
9172                }
9173                Self::grantRole(inner) => {
9174                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9175                        inner,
9176                        out,
9177                    )
9178                }
9179                Self::hasRole(inner) => {
9180                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
9181                }
9182                Self::hashOperation(inner) => {
9183                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9184                        inner,
9185                        out,
9186                    )
9187                }
9188                Self::hashOperationBatch(inner) => {
9189                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
9190                        inner,
9191                        out,
9192                    )
9193                }
9194                Self::isOperation(inner) => {
9195                    <isOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(
9196                        inner,
9197                        out,
9198                    )
9199                }
9200                Self::isOperationDone(inner) => {
9201                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encode_raw(
9202                        inner,
9203                        out,
9204                    )
9205                }
9206                Self::isOperationPending(inner) => {
9207                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encode_raw(
9208                        inner,
9209                        out,
9210                    )
9211                }
9212                Self::isOperationReady(inner) => {
9213                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encode_raw(
9214                        inner,
9215                        out,
9216                    )
9217                }
9218                Self::onERC1155BatchReceived(inner) => {
9219                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
9220                        inner,
9221                        out,
9222                    )
9223                }
9224                Self::onERC1155Received(inner) => {
9225                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
9226                        inner,
9227                        out,
9228                    )
9229                }
9230                Self::onERC721Received(inner) => {
9231                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
9232                        inner,
9233                        out,
9234                    )
9235                }
9236                Self::renounceRole(inner) => {
9237                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9238                        inner,
9239                        out,
9240                    )
9241                }
9242                Self::revokeRole(inner) => {
9243                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9244                        inner,
9245                        out,
9246                    )
9247                }
9248                Self::schedule(inner) => {
9249                    <scheduleCall as alloy_sol_types::SolCall>::abi_encode_raw(
9250                        inner,
9251                        out,
9252                    )
9253                }
9254                Self::scheduleBatch(inner) => {
9255                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(
9256                        inner,
9257                        out,
9258                    )
9259                }
9260                Self::supportsInterface(inner) => {
9261                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(
9262                        inner,
9263                        out,
9264                    )
9265                }
9266                Self::updateDelay(inner) => {
9267                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(
9268                        inner,
9269                        out,
9270                    )
9271                }
9272            }
9273        }
9274    }
9275    ///Container for all the [`OpsTimelock`](self) custom errors.
9276    #[derive(Clone)]
9277    #[derive(serde::Serialize, serde::Deserialize)]
9278    #[derive(Debug, PartialEq, Eq, Hash)]
9279    pub enum OpsTimelockErrors {
9280        #[allow(missing_docs)]
9281        AccessControlBadConfirmation(AccessControlBadConfirmation),
9282        #[allow(missing_docs)]
9283        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
9284        #[allow(missing_docs)]
9285        FailedInnerCall(FailedInnerCall),
9286        #[allow(missing_docs)]
9287        TimelockInsufficientDelay(TimelockInsufficientDelay),
9288        #[allow(missing_docs)]
9289        TimelockInvalidOperationLength(TimelockInvalidOperationLength),
9290        #[allow(missing_docs)]
9291        TimelockUnauthorizedCaller(TimelockUnauthorizedCaller),
9292        #[allow(missing_docs)]
9293        TimelockUnexecutedPredecessor(TimelockUnexecutedPredecessor),
9294        #[allow(missing_docs)]
9295        TimelockUnexpectedOperationState(TimelockUnexpectedOperationState),
9296    }
9297    impl OpsTimelockErrors {
9298        /// All the selectors of this enum.
9299        ///
9300        /// Note that the selectors might not be in the same order as the variants.
9301        /// No guarantees are made about the order of the selectors.
9302        ///
9303        /// Prefer using `SolInterface` methods instead.
9304        pub const SELECTORS: &'static [[u8; 4usize]] = &[
9305            [20u8, 37u8, 234u8, 66u8],
9306            [84u8, 51u8, 102u8, 9u8],
9307            [94u8, 173u8, 142u8, 181u8],
9308            [102u8, 151u8, 178u8, 50u8],
9309            [144u8, 169u8, 166u8, 24u8],
9310            [226u8, 81u8, 125u8, 63u8],
9311            [226u8, 133u8, 12u8, 89u8],
9312            [255u8, 176u8, 50u8, 17u8],
9313        ];
9314        /// The names of the variants in the same order as `SELECTORS`.
9315        pub const VARIANT_NAMES: &'static [&'static str] = &[
9316            ::core::stringify!(FailedInnerCall),
9317            ::core::stringify!(TimelockInsufficientDelay),
9318            ::core::stringify!(TimelockUnexpectedOperationState),
9319            ::core::stringify!(AccessControlBadConfirmation),
9320            ::core::stringify!(TimelockUnexecutedPredecessor),
9321            ::core::stringify!(AccessControlUnauthorizedAccount),
9322            ::core::stringify!(TimelockUnauthorizedCaller),
9323            ::core::stringify!(TimelockInvalidOperationLength),
9324        ];
9325        /// The signatures in the same order as `SELECTORS`.
9326        pub const SIGNATURES: &'static [&'static str] = &[
9327            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
9328            <TimelockInsufficientDelay as alloy_sol_types::SolError>::SIGNATURE,
9329            <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::SIGNATURE,
9330            <AccessControlBadConfirmation as alloy_sol_types::SolError>::SIGNATURE,
9331            <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::SIGNATURE,
9332            <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
9333            <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::SIGNATURE,
9334            <TimelockInvalidOperationLength as alloy_sol_types::SolError>::SIGNATURE,
9335        ];
9336        /// Returns the signature for the given selector, if known.
9337        #[inline]
9338        pub fn signature_by_selector(
9339            selector: [u8; 4usize],
9340        ) -> ::core::option::Option<&'static str> {
9341            match Self::SELECTORS.binary_search(&selector) {
9342                ::core::result::Result::Ok(idx) => {
9343                    ::core::option::Option::Some(Self::SIGNATURES[idx])
9344                }
9345                ::core::result::Result::Err(_) => ::core::option::Option::None,
9346            }
9347        }
9348        /// Returns the enum variant name for the given selector, if known.
9349        #[inline]
9350        pub fn name_by_selector(
9351            selector: [u8; 4usize],
9352        ) -> ::core::option::Option<&'static str> {
9353            let sig = Self::signature_by_selector(selector)?;
9354            sig.split_once('(').map(|(name, _)| name)
9355        }
9356    }
9357    #[automatically_derived]
9358    impl alloy_sol_types::SolInterface for OpsTimelockErrors {
9359        const NAME: &'static str = "OpsTimelockErrors";
9360        const MIN_DATA_LENGTH: usize = 0usize;
9361        const COUNT: usize = 8usize;
9362        #[inline]
9363        fn selector(&self) -> [u8; 4] {
9364            match self {
9365                Self::AccessControlBadConfirmation(_) => {
9366                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
9367                }
9368                Self::AccessControlUnauthorizedAccount(_) => {
9369                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
9370                }
9371                Self::FailedInnerCall(_) => {
9372                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
9373                }
9374                Self::TimelockInsufficientDelay(_) => {
9375                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::SELECTOR
9376                }
9377                Self::TimelockInvalidOperationLength(_) => {
9378                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::SELECTOR
9379                }
9380                Self::TimelockUnauthorizedCaller(_) => {
9381                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::SELECTOR
9382                }
9383                Self::TimelockUnexecutedPredecessor(_) => {
9384                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::SELECTOR
9385                }
9386                Self::TimelockUnexpectedOperationState(_) => {
9387                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::SELECTOR
9388                }
9389            }
9390        }
9391        #[inline]
9392        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
9393            Self::SELECTORS.get(i).copied()
9394        }
9395        #[inline]
9396        fn valid_selector(selector: [u8; 4]) -> bool {
9397            Self::SELECTORS.binary_search(&selector).is_ok()
9398        }
9399        #[inline]
9400        #[allow(non_snake_case)]
9401        fn abi_decode_raw(
9402            selector: [u8; 4],
9403            data: &[u8],
9404        ) -> alloy_sol_types::Result<Self> {
9405            Self::abi_decode_raw_with_config(
9406                selector,
9407                data,
9408                alloy_sol_types::abi::AbiDecoderConfig::default(),
9409            )
9410        }
9411        #[inline]
9412        #[allow(non_snake_case)]
9413        fn abi_decode_raw_with_config(
9414            selector: [u8; 4],
9415            data: &[u8],
9416            config: alloy_sol_types::abi::AbiDecoderConfig,
9417        ) -> alloy_sol_types::Result<Self> {
9418            static DECODE_SHIMS: &[fn(
9419                &[u8],
9420                alloy_sol_types::abi::AbiDecoderConfig,
9421            ) -> alloy_sol_types::Result<OpsTimelockErrors>] = &[
9422                {
9423                    fn FailedInnerCall(
9424                        data: &[u8],
9425                        config: alloy_sol_types::abi::AbiDecoderConfig,
9426                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9427                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9428                                data,
9429                                config,
9430                            )
9431                            .map(OpsTimelockErrors::FailedInnerCall)
9432                    }
9433                    FailedInnerCall
9434                },
9435                {
9436                    fn TimelockInsufficientDelay(
9437                        data: &[u8],
9438                        config: alloy_sol_types::abi::AbiDecoderConfig,
9439                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9440                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9441                                data,
9442                                config,
9443                            )
9444                            .map(OpsTimelockErrors::TimelockInsufficientDelay)
9445                    }
9446                    TimelockInsufficientDelay
9447                },
9448                {
9449                    fn TimelockUnexpectedOperationState(
9450                        data: &[u8],
9451                        config: alloy_sol_types::abi::AbiDecoderConfig,
9452                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9453                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9454                                data,
9455                                config,
9456                            )
9457                            .map(OpsTimelockErrors::TimelockUnexpectedOperationState)
9458                    }
9459                    TimelockUnexpectedOperationState
9460                },
9461                {
9462                    fn AccessControlBadConfirmation(
9463                        data: &[u8],
9464                        config: alloy_sol_types::abi::AbiDecoderConfig,
9465                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9466                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9467                                data,
9468                                config,
9469                            )
9470                            .map(OpsTimelockErrors::AccessControlBadConfirmation)
9471                    }
9472                    AccessControlBadConfirmation
9473                },
9474                {
9475                    fn TimelockUnexecutedPredecessor(
9476                        data: &[u8],
9477                        config: alloy_sol_types::abi::AbiDecoderConfig,
9478                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9479                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9480                                data,
9481                                config,
9482                            )
9483                            .map(OpsTimelockErrors::TimelockUnexecutedPredecessor)
9484                    }
9485                    TimelockUnexecutedPredecessor
9486                },
9487                {
9488                    fn AccessControlUnauthorizedAccount(
9489                        data: &[u8],
9490                        config: alloy_sol_types::abi::AbiDecoderConfig,
9491                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9492                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9493                                data,
9494                                config,
9495                            )
9496                            .map(OpsTimelockErrors::AccessControlUnauthorizedAccount)
9497                    }
9498                    AccessControlUnauthorizedAccount
9499                },
9500                {
9501                    fn TimelockUnauthorizedCaller(
9502                        data: &[u8],
9503                        config: alloy_sol_types::abi::AbiDecoderConfig,
9504                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9505                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9506                                data,
9507                                config,
9508                            )
9509                            .map(OpsTimelockErrors::TimelockUnauthorizedCaller)
9510                    }
9511                    TimelockUnauthorizedCaller
9512                },
9513                {
9514                    fn TimelockInvalidOperationLength(
9515                        data: &[u8],
9516                        config: alloy_sol_types::abi::AbiDecoderConfig,
9517                    ) -> alloy_sol_types::Result<OpsTimelockErrors> {
9518                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw_with_config(
9519                                data,
9520                                config,
9521                            )
9522                            .map(OpsTimelockErrors::TimelockInvalidOperationLength)
9523                    }
9524                    TimelockInvalidOperationLength
9525                },
9526            ];
9527            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
9528                return Err(
9529                    alloy_sol_types::Error::unknown_selector(
9530                        <Self as alloy_sol_types::SolInterface>::NAME,
9531                        selector,
9532                    ),
9533                );
9534            };
9535            DECODE_SHIMS[idx](data, config)
9536        }
9537        #[inline]
9538        #[allow(non_snake_case)]
9539        fn abi_decode_raw_validate(
9540            selector: [u8; 4],
9541            data: &[u8],
9542        ) -> alloy_sol_types::Result<Self> {
9543            Self::abi_decode_raw_with_config(
9544                selector,
9545                data,
9546                alloy_sol_types::abi::AbiDecoderConfig::new().validate(true),
9547            )
9548        }
9549        #[inline]
9550        fn abi_encoded_size(&self) -> usize {
9551            match self {
9552                Self::AccessControlBadConfirmation(inner) => {
9553                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
9554                        inner,
9555                    )
9556                }
9557                Self::AccessControlUnauthorizedAccount(inner) => {
9558                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
9559                        inner,
9560                    )
9561                }
9562                Self::FailedInnerCall(inner) => {
9563                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
9564                        inner,
9565                    )
9566                }
9567                Self::TimelockInsufficientDelay(inner) => {
9568                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encoded_size(
9569                        inner,
9570                    )
9571                }
9572                Self::TimelockInvalidOperationLength(inner) => {
9573                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encoded_size(
9574                        inner,
9575                    )
9576                }
9577                Self::TimelockUnauthorizedCaller(inner) => {
9578                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encoded_size(
9579                        inner,
9580                    )
9581                }
9582                Self::TimelockUnexecutedPredecessor(inner) => {
9583                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encoded_size(
9584                        inner,
9585                    )
9586                }
9587                Self::TimelockUnexpectedOperationState(inner) => {
9588                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encoded_size(
9589                        inner,
9590                    )
9591                }
9592            }
9593        }
9594        #[inline]
9595        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
9596            match self {
9597                Self::AccessControlBadConfirmation(inner) => {
9598                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
9599                        inner,
9600                        out,
9601                    )
9602                }
9603                Self::AccessControlUnauthorizedAccount(inner) => {
9604                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
9605                        inner,
9606                        out,
9607                    )
9608                }
9609                Self::FailedInnerCall(inner) => {
9610                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
9611                        inner,
9612                        out,
9613                    )
9614                }
9615                Self::TimelockInsufficientDelay(inner) => {
9616                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encode_raw(
9617                        inner,
9618                        out,
9619                    )
9620                }
9621                Self::TimelockInvalidOperationLength(inner) => {
9622                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encode_raw(
9623                        inner,
9624                        out,
9625                    )
9626                }
9627                Self::TimelockUnauthorizedCaller(inner) => {
9628                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encode_raw(
9629                        inner,
9630                        out,
9631                    )
9632                }
9633                Self::TimelockUnexecutedPredecessor(inner) => {
9634                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encode_raw(
9635                        inner,
9636                        out,
9637                    )
9638                }
9639                Self::TimelockUnexpectedOperationState(inner) => {
9640                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encode_raw(
9641                        inner,
9642                        out,
9643                    )
9644                }
9645            }
9646        }
9647    }
9648    #[automatically_derived]
9649    impl OpsTimelockErrors {
9650        /**Creates a [`AccessControlBadConfirmation`] error.
9651
9652```solidity
9653error AccessControlBadConfirmation()
9654```*/
9655        #[inline]
9656        pub fn access_control_bad_confirmation() -> Self {
9657            Self::AccessControlBadConfirmation(AccessControlBadConfirmation)
9658        }
9659        /**Creates a [`AccessControlUnauthorizedAccount`] error.
9660
9661```solidity
9662error AccessControlUnauthorizedAccount(address,bytes32)
9663```*/
9664        #[inline]
9665        pub fn access_control_unauthorized_account(
9666            account: alloy::sol_types::private::Address,
9667            needed_role: alloy::sol_types::private::FixedBytes<32>,
9668        ) -> Self {
9669            Self::AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount {
9670                account: account,
9671                neededRole: needed_role,
9672            })
9673        }
9674        /**Creates a [`FailedInnerCall`] error.
9675
9676```solidity
9677error FailedInnerCall()
9678```*/
9679        #[inline]
9680        pub fn failed_inner_call() -> Self {
9681            Self::FailedInnerCall(FailedInnerCall)
9682        }
9683        /**Creates a [`TimelockInsufficientDelay`] error.
9684
9685```solidity
9686error TimelockInsufficientDelay(uint256,uint256)
9687```*/
9688        #[inline]
9689        pub fn timelock_insufficient_delay(
9690            delay: alloy::sol_types::private::primitives::aliases::U256,
9691            min_delay: alloy::sol_types::private::primitives::aliases::U256,
9692        ) -> Self {
9693            Self::TimelockInsufficientDelay(TimelockInsufficientDelay {
9694                delay: delay,
9695                minDelay: min_delay,
9696            })
9697        }
9698        /**Creates a [`TimelockInvalidOperationLength`] error.
9699
9700```solidity
9701error TimelockInvalidOperationLength(uint256,uint256,uint256)
9702```*/
9703        #[inline]
9704        pub fn timelock_invalid_operation_length(
9705            targets: alloy::sol_types::private::primitives::aliases::U256,
9706            payloads: alloy::sol_types::private::primitives::aliases::U256,
9707            values: alloy::sol_types::private::primitives::aliases::U256,
9708        ) -> Self {
9709            Self::TimelockInvalidOperationLength(TimelockInvalidOperationLength {
9710                targets: targets,
9711                payloads: payloads,
9712                values: values,
9713            })
9714        }
9715        /**Creates a [`TimelockUnauthorizedCaller`] error.
9716
9717```solidity
9718error TimelockUnauthorizedCaller(address)
9719```*/
9720        #[inline]
9721        pub fn timelock_unauthorized_caller(
9722            caller: alloy::sol_types::private::Address,
9723        ) -> Self {
9724            Self::TimelockUnauthorizedCaller(TimelockUnauthorizedCaller {
9725                caller: caller,
9726            })
9727        }
9728        /**Creates a [`TimelockUnexecutedPredecessor`] error.
9729
9730```solidity
9731error TimelockUnexecutedPredecessor(bytes32)
9732```*/
9733        #[inline]
9734        pub fn timelock_unexecuted_predecessor(
9735            predecessor_id: alloy::sol_types::private::FixedBytes<32>,
9736        ) -> Self {
9737            Self::TimelockUnexecutedPredecessor(TimelockUnexecutedPredecessor {
9738                predecessorId: predecessor_id,
9739            })
9740        }
9741        /**Creates a [`TimelockUnexpectedOperationState`] error.
9742
9743```solidity
9744error TimelockUnexpectedOperationState(bytes32,bytes32)
9745```*/
9746        #[inline]
9747        pub fn timelock_unexpected_operation_state(
9748            operation_id: alloy::sol_types::private::FixedBytes<32>,
9749            expected_states: alloy::sol_types::private::FixedBytes<32>,
9750        ) -> Self {
9751            Self::TimelockUnexpectedOperationState(TimelockUnexpectedOperationState {
9752                operationId: operation_id,
9753                expectedStates: expected_states,
9754            })
9755        }
9756    }
9757    ///Container for all the [`OpsTimelock`](self) events.
9758    #[derive(Clone)]
9759    #[derive(serde::Serialize, serde::Deserialize)]
9760    #[derive(Debug, PartialEq, Eq, Hash)]
9761    pub enum OpsTimelockEvents {
9762        #[allow(missing_docs)]
9763        CallExecuted(CallExecuted),
9764        #[allow(missing_docs)]
9765        CallSalt(CallSalt),
9766        #[allow(missing_docs)]
9767        CallScheduled(CallScheduled),
9768        #[allow(missing_docs)]
9769        Cancelled(Cancelled),
9770        #[allow(missing_docs)]
9771        MinDelayChange(MinDelayChange),
9772        #[allow(missing_docs)]
9773        RoleAdminChanged(RoleAdminChanged),
9774        #[allow(missing_docs)]
9775        RoleGranted(RoleGranted),
9776        #[allow(missing_docs)]
9777        RoleRevoked(RoleRevoked),
9778    }
9779    impl OpsTimelockEvents {
9780        /// All the selectors of this enum.
9781        ///
9782        /// Note that the selectors might not be in the same order as the variants.
9783        /// No guarantees are made about the order of the selectors.
9784        ///
9785        /// Prefer using `SolInterface` methods instead.
9786        pub const SELECTORS: &'static [[u8; 32usize]] = &[
9787            [
9788                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8,
9789                127u8, 189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8,
9790                44u8, 198u8, 214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
9791            ],
9792            [
9793                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
9794                127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8,
9795                232u8, 246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
9796            ],
9797            [
9798                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8,
9799                236u8, 121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8,
9800                64u8, 48u8, 69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
9801            ],
9802            [
9803                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8,
9804                15u8, 69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8,
9805                214u8, 72u8, 212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
9806            ],
9807            [
9808                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8,
9809                97u8, 184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8,
9810                99u8, 187u8, 88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
9811            ],
9812            [
9813                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8,
9814                81u8, 66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8,
9815                71u8, 92u8, 58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
9816            ],
9817            [
9818                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8,
9819                33u8, 149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8,
9820                130u8, 113u8, 86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
9821            ],
9822            [
9823                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8,
9824                103u8, 11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8,
9825                253u8, 100u8, 235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
9826            ],
9827        ];
9828        /// The names of the variants in the same order as `SELECTORS`.
9829        pub const VARIANT_NAMES: &'static [&'static str] = &[
9830            ::core::stringify!(MinDelayChange),
9831            ::core::stringify!(CallSalt),
9832            ::core::stringify!(RoleGranted),
9833            ::core::stringify!(CallScheduled),
9834            ::core::stringify!(Cancelled),
9835            ::core::stringify!(RoleAdminChanged),
9836            ::core::stringify!(CallExecuted),
9837            ::core::stringify!(RoleRevoked),
9838        ];
9839        /// The signatures in the same order as `SELECTORS`.
9840        pub const SIGNATURES: &'static [&'static str] = &[
9841            <MinDelayChange as alloy_sol_types::SolEvent>::SIGNATURE,
9842            <CallSalt as alloy_sol_types::SolEvent>::SIGNATURE,
9843            <RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE,
9844            <CallScheduled as alloy_sol_types::SolEvent>::SIGNATURE,
9845            <Cancelled as alloy_sol_types::SolEvent>::SIGNATURE,
9846            <RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE,
9847            <CallExecuted as alloy_sol_types::SolEvent>::SIGNATURE,
9848            <RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE,
9849        ];
9850        /// Returns the signature for the given selector, if known.
9851        #[inline]
9852        pub fn signature_by_selector(
9853            selector: [u8; 32usize],
9854        ) -> ::core::option::Option<&'static str> {
9855            match Self::SELECTORS.binary_search(&selector) {
9856                ::core::result::Result::Ok(idx) => {
9857                    ::core::option::Option::Some(Self::SIGNATURES[idx])
9858                }
9859                ::core::result::Result::Err(_) => ::core::option::Option::None,
9860            }
9861        }
9862        /// Returns the enum variant name for the given selector, if known.
9863        #[inline]
9864        pub fn name_by_selector(
9865            selector: [u8; 32usize],
9866        ) -> ::core::option::Option<&'static str> {
9867            let sig = Self::signature_by_selector(selector)?;
9868            sig.split_once('(').map(|(name, _)| name)
9869        }
9870    }
9871    #[automatically_derived]
9872    impl alloy_sol_types::SolEventInterface for OpsTimelockEvents {
9873        const NAME: &'static str = "OpsTimelockEvents";
9874        const COUNT: usize = 8usize;
9875        fn decode_raw_log(
9876            topics: &[alloy_sol_types::Word],
9877            data: &[u8],
9878        ) -> alloy_sol_types::Result<Self> {
9879            <Self as alloy_sol_types::SolEventInterface>::decode_raw_log_with_config(
9880                topics,
9881                data,
9882                alloy_sol_types::abi::AbiDecoderConfig::default(),
9883            )
9884        }
9885        fn decode_raw_log_with_config(
9886            topics: &[alloy_sol_types::Word],
9887            data: &[u8],
9888            config: alloy_sol_types::abi::AbiDecoderConfig,
9889        ) -> alloy_sol_types::Result<Self> {
9890            match topics.first().copied() {
9891                Some(<CallExecuted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9892                    <CallExecuted as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9893                            topics,
9894                            data,
9895                            config,
9896                        )
9897                        .map(Self::CallExecuted)
9898                }
9899                Some(<CallSalt as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9900                    <CallSalt as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9901                            topics,
9902                            data,
9903                            config,
9904                        )
9905                        .map(Self::CallSalt)
9906                }
9907                Some(<CallScheduled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9908                    <CallScheduled as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9909                            topics,
9910                            data,
9911                            config,
9912                        )
9913                        .map(Self::CallScheduled)
9914                }
9915                Some(<Cancelled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9916                    <Cancelled as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9917                            topics,
9918                            data,
9919                            config,
9920                        )
9921                        .map(Self::Cancelled)
9922                }
9923                Some(<MinDelayChange as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9924                    <MinDelayChange as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9925                            topics,
9926                            data,
9927                            config,
9928                        )
9929                        .map(Self::MinDelayChange)
9930                }
9931                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9932                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9933                            topics,
9934                            data,
9935                            config,
9936                        )
9937                        .map(Self::RoleAdminChanged)
9938                }
9939                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9940                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9941                            topics,
9942                            data,
9943                            config,
9944                        )
9945                        .map(Self::RoleGranted)
9946                }
9947                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
9948                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log_with_config(
9949                            topics,
9950                            data,
9951                            config,
9952                        )
9953                        .map(Self::RoleRevoked)
9954                }
9955                _ => {
9956                    if topics
9957                        .len()
9958                        .checked_mul(alloy_sol_types::Word::len_bytes())
9959                        .and_then(|len| len.checked_add(data.len()))
9960                        .is_none_or(|len| len > config.get_memory_limit())
9961                    {
9962                        return alloy_sol_types::private::Err(
9963                            alloy_sol_types::Error::MemoryLimitExceeded(
9964                                config.get_memory_limit(),
9965                            ),
9966                        );
9967                    }
9968                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
9969                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
9970                        log: alloy_sol_types::private::Box::new(
9971                            alloy_sol_types::private::LogData::new_unchecked(
9972                                topics.to_vec(),
9973                                data.to_vec().into(),
9974                            ),
9975                        ),
9976                    })
9977                }
9978            }
9979        }
9980    }
9981    #[automatically_derived]
9982    impl alloy_sol_types::private::IntoLogData for OpsTimelockEvents {
9983        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
9984            match self {
9985                Self::CallExecuted(inner) => {
9986                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9987                }
9988                Self::CallSalt(inner) => {
9989                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9990                }
9991                Self::CallScheduled(inner) => {
9992                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9993                }
9994                Self::Cancelled(inner) => {
9995                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9996                }
9997                Self::MinDelayChange(inner) => {
9998                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
9999                }
10000                Self::RoleAdminChanged(inner) => {
10001                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10002                }
10003                Self::RoleGranted(inner) => {
10004                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10005                }
10006                Self::RoleRevoked(inner) => {
10007                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
10008                }
10009            }
10010        }
10011        fn into_log_data(self) -> alloy_sol_types::private::LogData {
10012            match self {
10013                Self::CallExecuted(inner) => {
10014                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10015                }
10016                Self::CallSalt(inner) => {
10017                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10018                }
10019                Self::CallScheduled(inner) => {
10020                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10021                }
10022                Self::Cancelled(inner) => {
10023                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10024                }
10025                Self::MinDelayChange(inner) => {
10026                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10027                }
10028                Self::RoleAdminChanged(inner) => {
10029                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10030                }
10031                Self::RoleGranted(inner) => {
10032                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10033                }
10034                Self::RoleRevoked(inner) => {
10035                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
10036                }
10037            }
10038        }
10039    }
10040    #[automatically_derived]
10041    impl OpsTimelockEvents {
10042        /**Creates a [`CallExecuted`] event.
10043
10044```solidity
10045event CallExecuted(bytes32,uint256,address,uint256,bytes)
10046```*/
10047        #[inline]
10048        pub fn call_executed(
10049            id: alloy::sol_types::private::FixedBytes<32>,
10050            index: alloy::sol_types::private::primitives::aliases::U256,
10051            target: alloy::sol_types::private::Address,
10052            value: alloy::sol_types::private::primitives::aliases::U256,
10053            data: alloy::sol_types::private::Bytes,
10054        ) -> Self {
10055            Self::CallExecuted(CallExecuted {
10056                id: id,
10057                index: index,
10058                target: target,
10059                value: value,
10060                data: data,
10061            })
10062        }
10063        /**Creates a [`CallSalt`] event.
10064
10065```solidity
10066event CallSalt(bytes32,bytes32)
10067```*/
10068        #[inline]
10069        pub fn call_salt(
10070            id: alloy::sol_types::private::FixedBytes<32>,
10071            salt: alloy::sol_types::private::FixedBytes<32>,
10072        ) -> Self {
10073            Self::CallSalt(CallSalt { id: id, salt: salt })
10074        }
10075        /**Creates a [`CallScheduled`] event.
10076
10077```solidity
10078event CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)
10079```*/
10080        #[inline]
10081        pub fn call_scheduled(
10082            id: alloy::sol_types::private::FixedBytes<32>,
10083            index: alloy::sol_types::private::primitives::aliases::U256,
10084            target: alloy::sol_types::private::Address,
10085            value: alloy::sol_types::private::primitives::aliases::U256,
10086            data: alloy::sol_types::private::Bytes,
10087            predecessor: alloy::sol_types::private::FixedBytes<32>,
10088            delay: alloy::sol_types::private::primitives::aliases::U256,
10089        ) -> Self {
10090            Self::CallScheduled(CallScheduled {
10091                id: id,
10092                index: index,
10093                target: target,
10094                value: value,
10095                data: data,
10096                predecessor: predecessor,
10097                delay: delay,
10098            })
10099        }
10100        /**Creates a [`Cancelled`] event.
10101
10102```solidity
10103event Cancelled(bytes32)
10104```*/
10105        #[inline]
10106        pub fn cancelled(id: alloy::sol_types::private::FixedBytes<32>) -> Self {
10107            Self::Cancelled(Cancelled { id: id })
10108        }
10109        /**Creates a [`MinDelayChange`] event.
10110
10111```solidity
10112event MinDelayChange(uint256,uint256)
10113```*/
10114        #[inline]
10115        pub fn min_delay_change(
10116            old_duration: alloy::sol_types::private::primitives::aliases::U256,
10117            new_duration: alloy::sol_types::private::primitives::aliases::U256,
10118        ) -> Self {
10119            Self::MinDelayChange(MinDelayChange {
10120                oldDuration: old_duration,
10121                newDuration: new_duration,
10122            })
10123        }
10124        /**Creates a [`RoleAdminChanged`] event.
10125
10126```solidity
10127event RoleAdminChanged(bytes32,bytes32,bytes32)
10128```*/
10129        #[inline]
10130        pub fn role_admin_changed(
10131            role: alloy::sol_types::private::FixedBytes<32>,
10132            previous_admin_role: alloy::sol_types::private::FixedBytes<32>,
10133            new_admin_role: alloy::sol_types::private::FixedBytes<32>,
10134        ) -> Self {
10135            Self::RoleAdminChanged(RoleAdminChanged {
10136                role: role,
10137                previousAdminRole: previous_admin_role,
10138                newAdminRole: new_admin_role,
10139            })
10140        }
10141        /**Creates a [`RoleGranted`] event.
10142
10143```solidity
10144event RoleGranted(bytes32,address,address)
10145```*/
10146        #[inline]
10147        pub fn role_granted(
10148            role: alloy::sol_types::private::FixedBytes<32>,
10149            account: alloy::sol_types::private::Address,
10150            sender: alloy::sol_types::private::Address,
10151        ) -> Self {
10152            Self::RoleGranted(RoleGranted {
10153                role: role,
10154                account: account,
10155                sender: sender,
10156            })
10157        }
10158        /**Creates a [`RoleRevoked`] event.
10159
10160```solidity
10161event RoleRevoked(bytes32,address,address)
10162```*/
10163        #[inline]
10164        pub fn role_revoked(
10165            role: alloy::sol_types::private::FixedBytes<32>,
10166            account: alloy::sol_types::private::Address,
10167            sender: alloy::sol_types::private::Address,
10168        ) -> Self {
10169            Self::RoleRevoked(RoleRevoked {
10170                role: role,
10171                account: account,
10172                sender: sender,
10173            })
10174        }
10175    }
10176    use alloy::contract as alloy_contract;
10177    /**Creates a new wrapper around an on-chain [`OpsTimelock`](self) contract instance.
10178
10179See the [wrapper's documentation](`OpsTimelockInstance`) for more details.*/
10180    #[inline]
10181    pub const fn new<
10182        P: alloy_contract::private::Provider<N>,
10183        N: alloy_contract::private::Network,
10184    >(
10185        address: alloy_sol_types::private::Address,
10186        __provider: P,
10187    ) -> OpsTimelockInstance<P, N> {
10188        OpsTimelockInstance::<P, N>::new(address, __provider)
10189    }
10190    /**Deploys this contract using the given `provider` and constructor arguments, if any.
10191
10192Returns a new instance of the contract, if the deployment was successful.
10193
10194For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10195    #[inline]
10196    pub fn deploy<
10197        P: alloy_contract::private::Provider<N>,
10198        N: alloy_contract::private::Network,
10199    >(
10200        __provider: P,
10201        minDelay: alloy::sol_types::private::primitives::aliases::U256,
10202        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10203        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10204        admin: alloy::sol_types::private::Address,
10205    ) -> impl ::core::future::Future<
10206        Output = alloy_contract::Result<OpsTimelockInstance<P, N>>,
10207    > {
10208        OpsTimelockInstance::<
10209            P,
10210            N,
10211        >::deploy(__provider, minDelay, proposers, executors, admin)
10212    }
10213    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10214and constructor arguments, if any.
10215
10216This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10217the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10218    #[inline]
10219    pub fn deploy_builder<
10220        P: alloy_contract::private::Provider<N>,
10221        N: alloy_contract::private::Network,
10222    >(
10223        __provider: P,
10224        minDelay: alloy::sol_types::private::primitives::aliases::U256,
10225        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10226        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10227        admin: alloy::sol_types::private::Address,
10228    ) -> alloy_contract::RawCallBuilder<P, N> {
10229        OpsTimelockInstance::<
10230            P,
10231            N,
10232        >::deploy_builder(__provider, minDelay, proposers, executors, admin)
10233    }
10234    /**A [`OpsTimelock`](self) instance.
10235
10236Contains type-safe methods for interacting with an on-chain instance of the
10237[`OpsTimelock`](self) contract located at a given `address`, using a given
10238provider `P`.
10239
10240If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
10241documentation on how to provide it), the `deploy` and `deploy_builder` methods can
10242be used to deploy a new instance of the contract.
10243
10244See the [module-level documentation](self) for all the available methods.*/
10245    #[derive(Clone)]
10246    pub struct OpsTimelockInstance<P, N = alloy_contract::private::Ethereum> {
10247        address: alloy_sol_types::private::Address,
10248        provider: P,
10249        _network: ::core::marker::PhantomData<N>,
10250    }
10251    #[automatically_derived]
10252    impl<P, N> ::core::fmt::Debug for OpsTimelockInstance<P, N> {
10253        #[inline]
10254        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
10255            f.debug_tuple("OpsTimelockInstance").field(&self.address).finish()
10256        }
10257    }
10258    /// Instantiation and getters/setters.
10259    impl<
10260        P: alloy_contract::private::Provider<N>,
10261        N: alloy_contract::private::Network,
10262    > OpsTimelockInstance<P, N> {
10263        /**Creates a new wrapper around an on-chain [`OpsTimelock`](self) contract instance.
10264
10265See the [wrapper's documentation](`OpsTimelockInstance`) for more details.*/
10266        #[inline]
10267        pub const fn new(
10268            address: alloy_sol_types::private::Address,
10269            __provider: P,
10270        ) -> Self {
10271            Self {
10272                address,
10273                provider: __provider,
10274                _network: ::core::marker::PhantomData,
10275            }
10276        }
10277        /**Deploys this contract using the given `provider` and constructor arguments, if any.
10278
10279Returns a new instance of the contract, if the deployment was successful.
10280
10281For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
10282        #[inline]
10283        pub async fn deploy(
10284            __provider: P,
10285            minDelay: alloy::sol_types::private::primitives::aliases::U256,
10286            proposers: alloy::sol_types::private::Vec<
10287                alloy::sol_types::private::Address,
10288            >,
10289            executors: alloy::sol_types::private::Vec<
10290                alloy::sol_types::private::Address,
10291            >,
10292            admin: alloy::sol_types::private::Address,
10293        ) -> alloy_contract::Result<OpsTimelockInstance<P, N>> {
10294            let call_builder = Self::deploy_builder(
10295                __provider,
10296                minDelay,
10297                proposers,
10298                executors,
10299                admin,
10300            );
10301            let contract_address = call_builder.deploy().await?;
10302            Ok(Self::new(contract_address, call_builder.provider))
10303        }
10304        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
10305and constructor arguments, if any.
10306
10307This is a simple wrapper around creating a `RawCallBuilder` with the data set to
10308the bytecode concatenated with the constructor's ABI-encoded arguments.*/
10309        #[inline]
10310        pub fn deploy_builder(
10311            __provider: P,
10312            minDelay: alloy::sol_types::private::primitives::aliases::U256,
10313            proposers: alloy::sol_types::private::Vec<
10314                alloy::sol_types::private::Address,
10315            >,
10316            executors: alloy::sol_types::private::Vec<
10317                alloy::sol_types::private::Address,
10318            >,
10319            admin: alloy::sol_types::private::Address,
10320        ) -> alloy_contract::RawCallBuilder<P, N> {
10321            alloy_contract::RawCallBuilder::new_raw_deploy(
10322                __provider,
10323                [
10324                    &BYTECODE[..],
10325                    &alloy_sol_types::SolConstructor::abi_encode(
10326                        &constructorCall {
10327                            minDelay,
10328                            proposers,
10329                            executors,
10330                            admin,
10331                        },
10332                    )[..],
10333                ]
10334                    .concat()
10335                    .into(),
10336            )
10337        }
10338        /// Returns a reference to the address.
10339        #[inline]
10340        pub const fn address(&self) -> &alloy_sol_types::private::Address {
10341            &self.address
10342        }
10343        /// Sets the address.
10344        #[inline]
10345        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
10346            self.address = address;
10347        }
10348        /// Sets the address and returns `self`.
10349        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
10350            self.set_address(address);
10351            self
10352        }
10353        /// Returns a reference to the provider.
10354        #[inline]
10355        pub const fn provider(&self) -> &P {
10356            &self.provider
10357        }
10358    }
10359    impl<P: ::core::clone::Clone, N> OpsTimelockInstance<&P, N> {
10360        /// Clones the provider and returns a new instance with the cloned provider.
10361        #[inline]
10362        pub fn with_cloned_provider(self) -> OpsTimelockInstance<P, N> {
10363            OpsTimelockInstance {
10364                address: self.address,
10365                provider: ::core::clone::Clone::clone(&self.provider),
10366                _network: ::core::marker::PhantomData,
10367            }
10368        }
10369    }
10370    /// Function calls.
10371    impl<
10372        P: alloy_contract::private::Provider<N>,
10373        N: alloy_contract::private::Network,
10374    > OpsTimelockInstance<P, N> {
10375        /// Creates a new call builder using this contract instance's provider and address.
10376        ///
10377        /// Note that the call can be any function call, not just those defined in this
10378        /// contract. Prefer using the other methods for building type-safe contract calls.
10379        pub fn call_builder<C: alloy_sol_types::SolCall>(
10380            &self,
10381            call: &C,
10382        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
10383            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
10384        }
10385        ///Creates a new call builder for the [`CANCELLER_ROLE`] function.
10386        pub fn CANCELLER_ROLE(
10387            &self,
10388        ) -> alloy_contract::SolCallBuilder<&P, CANCELLER_ROLECall, N> {
10389            self.call_builder(&CANCELLER_ROLECall)
10390        }
10391        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
10392        pub fn DEFAULT_ADMIN_ROLE(
10393            &self,
10394        ) -> alloy_contract::SolCallBuilder<&P, DEFAULT_ADMIN_ROLECall, N> {
10395            self.call_builder(&DEFAULT_ADMIN_ROLECall)
10396        }
10397        ///Creates a new call builder for the [`EXECUTOR_ROLE`] function.
10398        pub fn EXECUTOR_ROLE(
10399            &self,
10400        ) -> alloy_contract::SolCallBuilder<&P, EXECUTOR_ROLECall, N> {
10401            self.call_builder(&EXECUTOR_ROLECall)
10402        }
10403        ///Creates a new call builder for the [`PROPOSER_ROLE`] function.
10404        pub fn PROPOSER_ROLE(
10405            &self,
10406        ) -> alloy_contract::SolCallBuilder<&P, PROPOSER_ROLECall, N> {
10407            self.call_builder(&PROPOSER_ROLECall)
10408        }
10409        ///Creates a new call builder for the [`cancel`] function.
10410        pub fn cancel(
10411            &self,
10412            id: alloy::sol_types::private::FixedBytes<32>,
10413        ) -> alloy_contract::SolCallBuilder<&P, cancelCall, N> {
10414            self.call_builder(&cancelCall { id })
10415        }
10416        ///Creates a new call builder for the [`execute`] function.
10417        pub fn execute(
10418            &self,
10419            target: alloy::sol_types::private::Address,
10420            value: alloy::sol_types::private::primitives::aliases::U256,
10421            payload: alloy::sol_types::private::Bytes,
10422            predecessor: alloy::sol_types::private::FixedBytes<32>,
10423            salt: alloy::sol_types::private::FixedBytes<32>,
10424        ) -> alloy_contract::SolCallBuilder<&P, executeCall, N> {
10425            self.call_builder(
10426                &executeCall {
10427                    target,
10428                    value,
10429                    payload,
10430                    predecessor,
10431                    salt,
10432                },
10433            )
10434        }
10435        ///Creates a new call builder for the [`executeBatch`] function.
10436        pub fn executeBatch(
10437            &self,
10438            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10439            values: alloy::sol_types::private::Vec<
10440                alloy::sol_types::private::primitives::aliases::U256,
10441            >,
10442            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10443            predecessor: alloy::sol_types::private::FixedBytes<32>,
10444            salt: alloy::sol_types::private::FixedBytes<32>,
10445        ) -> alloy_contract::SolCallBuilder<&P, executeBatchCall, N> {
10446            self.call_builder(
10447                &executeBatchCall {
10448                    targets,
10449                    values,
10450                    payloads,
10451                    predecessor,
10452                    salt,
10453                },
10454            )
10455        }
10456        ///Creates a new call builder for the [`getMinDelay`] function.
10457        pub fn getMinDelay(
10458            &self,
10459        ) -> alloy_contract::SolCallBuilder<&P, getMinDelayCall, N> {
10460            self.call_builder(&getMinDelayCall)
10461        }
10462        ///Creates a new call builder for the [`getOperationState`] function.
10463        pub fn getOperationState(
10464            &self,
10465            id: alloy::sol_types::private::FixedBytes<32>,
10466        ) -> alloy_contract::SolCallBuilder<&P, getOperationStateCall, N> {
10467            self.call_builder(&getOperationStateCall { id })
10468        }
10469        ///Creates a new call builder for the [`getRoleAdmin`] function.
10470        pub fn getRoleAdmin(
10471            &self,
10472            role: alloy::sol_types::private::FixedBytes<32>,
10473        ) -> alloy_contract::SolCallBuilder<&P, getRoleAdminCall, N> {
10474            self.call_builder(&getRoleAdminCall { role })
10475        }
10476        ///Creates a new call builder for the [`getTimestamp`] function.
10477        pub fn getTimestamp(
10478            &self,
10479            id: alloy::sol_types::private::FixedBytes<32>,
10480        ) -> alloy_contract::SolCallBuilder<&P, getTimestampCall, N> {
10481            self.call_builder(&getTimestampCall { id })
10482        }
10483        ///Creates a new call builder for the [`grantRole`] function.
10484        pub fn grantRole(
10485            &self,
10486            role: alloy::sol_types::private::FixedBytes<32>,
10487            account: alloy::sol_types::private::Address,
10488        ) -> alloy_contract::SolCallBuilder<&P, grantRoleCall, N> {
10489            self.call_builder(&grantRoleCall { role, account })
10490        }
10491        ///Creates a new call builder for the [`hasRole`] function.
10492        pub fn hasRole(
10493            &self,
10494            role: alloy::sol_types::private::FixedBytes<32>,
10495            account: alloy::sol_types::private::Address,
10496        ) -> alloy_contract::SolCallBuilder<&P, hasRoleCall, N> {
10497            self.call_builder(&hasRoleCall { role, account })
10498        }
10499        ///Creates a new call builder for the [`hashOperation`] function.
10500        pub fn hashOperation(
10501            &self,
10502            target: alloy::sol_types::private::Address,
10503            value: alloy::sol_types::private::primitives::aliases::U256,
10504            data: alloy::sol_types::private::Bytes,
10505            predecessor: alloy::sol_types::private::FixedBytes<32>,
10506            salt: alloy::sol_types::private::FixedBytes<32>,
10507        ) -> alloy_contract::SolCallBuilder<&P, hashOperationCall, N> {
10508            self.call_builder(
10509                &hashOperationCall {
10510                    target,
10511                    value,
10512                    data,
10513                    predecessor,
10514                    salt,
10515                },
10516            )
10517        }
10518        ///Creates a new call builder for the [`hashOperationBatch`] function.
10519        pub fn hashOperationBatch(
10520            &self,
10521            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10522            values: alloy::sol_types::private::Vec<
10523                alloy::sol_types::private::primitives::aliases::U256,
10524            >,
10525            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10526            predecessor: alloy::sol_types::private::FixedBytes<32>,
10527            salt: alloy::sol_types::private::FixedBytes<32>,
10528        ) -> alloy_contract::SolCallBuilder<&P, hashOperationBatchCall, N> {
10529            self.call_builder(
10530                &hashOperationBatchCall {
10531                    targets,
10532                    values,
10533                    payloads,
10534                    predecessor,
10535                    salt,
10536                },
10537            )
10538        }
10539        ///Creates a new call builder for the [`isOperation`] function.
10540        pub fn isOperation(
10541            &self,
10542            id: alloy::sol_types::private::FixedBytes<32>,
10543        ) -> alloy_contract::SolCallBuilder<&P, isOperationCall, N> {
10544            self.call_builder(&isOperationCall { id })
10545        }
10546        ///Creates a new call builder for the [`isOperationDone`] function.
10547        pub fn isOperationDone(
10548            &self,
10549            id: alloy::sol_types::private::FixedBytes<32>,
10550        ) -> alloy_contract::SolCallBuilder<&P, isOperationDoneCall, N> {
10551            self.call_builder(&isOperationDoneCall { id })
10552        }
10553        ///Creates a new call builder for the [`isOperationPending`] function.
10554        pub fn isOperationPending(
10555            &self,
10556            id: alloy::sol_types::private::FixedBytes<32>,
10557        ) -> alloy_contract::SolCallBuilder<&P, isOperationPendingCall, N> {
10558            self.call_builder(&isOperationPendingCall { id })
10559        }
10560        ///Creates a new call builder for the [`isOperationReady`] function.
10561        pub fn isOperationReady(
10562            &self,
10563            id: alloy::sol_types::private::FixedBytes<32>,
10564        ) -> alloy_contract::SolCallBuilder<&P, isOperationReadyCall, N> {
10565            self.call_builder(&isOperationReadyCall { id })
10566        }
10567        ///Creates a new call builder for the [`onERC1155BatchReceived`] function.
10568        pub fn onERC1155BatchReceived(
10569            &self,
10570            _0: alloy::sol_types::private::Address,
10571            _1: alloy::sol_types::private::Address,
10572            _2: alloy::sol_types::private::Vec<
10573                alloy::sol_types::private::primitives::aliases::U256,
10574            >,
10575            _3: alloy::sol_types::private::Vec<
10576                alloy::sol_types::private::primitives::aliases::U256,
10577            >,
10578            _4: alloy::sol_types::private::Bytes,
10579        ) -> alloy_contract::SolCallBuilder<&P, onERC1155BatchReceivedCall, N> {
10580            self.call_builder(
10581                &onERC1155BatchReceivedCall {
10582                    _0,
10583                    _1,
10584                    _2,
10585                    _3,
10586                    _4,
10587                },
10588            )
10589        }
10590        ///Creates a new call builder for the [`onERC1155Received`] function.
10591        pub fn onERC1155Received(
10592            &self,
10593            _0: alloy::sol_types::private::Address,
10594            _1: alloy::sol_types::private::Address,
10595            _2: alloy::sol_types::private::primitives::aliases::U256,
10596            _3: alloy::sol_types::private::primitives::aliases::U256,
10597            _4: alloy::sol_types::private::Bytes,
10598        ) -> alloy_contract::SolCallBuilder<&P, onERC1155ReceivedCall, N> {
10599            self.call_builder(
10600                &onERC1155ReceivedCall {
10601                    _0,
10602                    _1,
10603                    _2,
10604                    _3,
10605                    _4,
10606                },
10607            )
10608        }
10609        ///Creates a new call builder for the [`onERC721Received`] function.
10610        pub fn onERC721Received(
10611            &self,
10612            _0: alloy::sol_types::private::Address,
10613            _1: alloy::sol_types::private::Address,
10614            _2: alloy::sol_types::private::primitives::aliases::U256,
10615            _3: alloy::sol_types::private::Bytes,
10616        ) -> alloy_contract::SolCallBuilder<&P, onERC721ReceivedCall, N> {
10617            self.call_builder(
10618                &onERC721ReceivedCall {
10619                    _0,
10620                    _1,
10621                    _2,
10622                    _3,
10623                },
10624            )
10625        }
10626        ///Creates a new call builder for the [`renounceRole`] function.
10627        pub fn renounceRole(
10628            &self,
10629            role: alloy::sol_types::private::FixedBytes<32>,
10630            callerConfirmation: alloy::sol_types::private::Address,
10631        ) -> alloy_contract::SolCallBuilder<&P, renounceRoleCall, N> {
10632            self.call_builder(
10633                &renounceRoleCall {
10634                    role,
10635                    callerConfirmation,
10636                },
10637            )
10638        }
10639        ///Creates a new call builder for the [`revokeRole`] function.
10640        pub fn revokeRole(
10641            &self,
10642            role: alloy::sol_types::private::FixedBytes<32>,
10643            account: alloy::sol_types::private::Address,
10644        ) -> alloy_contract::SolCallBuilder<&P, revokeRoleCall, N> {
10645            self.call_builder(&revokeRoleCall { role, account })
10646        }
10647        ///Creates a new call builder for the [`schedule`] function.
10648        pub fn schedule(
10649            &self,
10650            target: alloy::sol_types::private::Address,
10651            value: alloy::sol_types::private::primitives::aliases::U256,
10652            data: alloy::sol_types::private::Bytes,
10653            predecessor: alloy::sol_types::private::FixedBytes<32>,
10654            salt: alloy::sol_types::private::FixedBytes<32>,
10655            delay: alloy::sol_types::private::primitives::aliases::U256,
10656        ) -> alloy_contract::SolCallBuilder<&P, scheduleCall, N> {
10657            self.call_builder(
10658                &scheduleCall {
10659                    target,
10660                    value,
10661                    data,
10662                    predecessor,
10663                    salt,
10664                    delay,
10665                },
10666            )
10667        }
10668        ///Creates a new call builder for the [`scheduleBatch`] function.
10669        pub fn scheduleBatch(
10670            &self,
10671            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
10672            values: alloy::sol_types::private::Vec<
10673                alloy::sol_types::private::primitives::aliases::U256,
10674            >,
10675            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
10676            predecessor: alloy::sol_types::private::FixedBytes<32>,
10677            salt: alloy::sol_types::private::FixedBytes<32>,
10678            delay: alloy::sol_types::private::primitives::aliases::U256,
10679        ) -> alloy_contract::SolCallBuilder<&P, scheduleBatchCall, N> {
10680            self.call_builder(
10681                &scheduleBatchCall {
10682                    targets,
10683                    values,
10684                    payloads,
10685                    predecessor,
10686                    salt,
10687                    delay,
10688                },
10689            )
10690        }
10691        ///Creates a new call builder for the [`supportsInterface`] function.
10692        pub fn supportsInterface(
10693            &self,
10694            interfaceId: alloy::sol_types::private::FixedBytes<4>,
10695        ) -> alloy_contract::SolCallBuilder<&P, supportsInterfaceCall, N> {
10696            self.call_builder(
10697                &supportsInterfaceCall {
10698                    interfaceId,
10699                },
10700            )
10701        }
10702        ///Creates a new call builder for the [`updateDelay`] function.
10703        pub fn updateDelay(
10704            &self,
10705            newDelay: alloy::sol_types::private::primitives::aliases::U256,
10706        ) -> alloy_contract::SolCallBuilder<&P, updateDelayCall, N> {
10707            self.call_builder(&updateDelayCall { newDelay })
10708        }
10709    }
10710    /// Event filters.
10711    impl<
10712        P: alloy_contract::private::Provider<N>,
10713        N: alloy_contract::private::Network,
10714    > OpsTimelockInstance<P, N> {
10715        /// Creates a new event filter using this contract instance's provider and address.
10716        ///
10717        /// Note that the type can be any event, not just those defined in this contract.
10718        /// Prefer using the other methods for building type-safe event filters.
10719        pub fn event_filter<E: alloy_sol_types::SolEvent>(
10720            &self,
10721        ) -> alloy_contract::Event<&P, E, N> {
10722            alloy_contract::Event::new_sol(&self.provider, &self.address)
10723        }
10724        ///Creates a new event filter for the [`CallExecuted`] event.
10725        pub fn CallExecuted_filter(&self) -> alloy_contract::Event<&P, CallExecuted, N> {
10726            self.event_filter::<CallExecuted>()
10727        }
10728        ///Creates a new event filter for the [`CallSalt`] event.
10729        pub fn CallSalt_filter(&self) -> alloy_contract::Event<&P, CallSalt, N> {
10730            self.event_filter::<CallSalt>()
10731        }
10732        ///Creates a new event filter for the [`CallScheduled`] event.
10733        pub fn CallScheduled_filter(
10734            &self,
10735        ) -> alloy_contract::Event<&P, CallScheduled, N> {
10736            self.event_filter::<CallScheduled>()
10737        }
10738        ///Creates a new event filter for the [`Cancelled`] event.
10739        pub fn Cancelled_filter(&self) -> alloy_contract::Event<&P, Cancelled, N> {
10740            self.event_filter::<Cancelled>()
10741        }
10742        ///Creates a new event filter for the [`MinDelayChange`] event.
10743        pub fn MinDelayChange_filter(
10744            &self,
10745        ) -> alloy_contract::Event<&P, MinDelayChange, N> {
10746            self.event_filter::<MinDelayChange>()
10747        }
10748        ///Creates a new event filter for the [`RoleAdminChanged`] event.
10749        pub fn RoleAdminChanged_filter(
10750            &self,
10751        ) -> alloy_contract::Event<&P, RoleAdminChanged, N> {
10752            self.event_filter::<RoleAdminChanged>()
10753        }
10754        ///Creates a new event filter for the [`RoleGranted`] event.
10755        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<&P, RoleGranted, N> {
10756            self.event_filter::<RoleGranted>()
10757        }
10758        ///Creates a new event filter for the [`RoleRevoked`] event.
10759        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<&P, RoleRevoked, N> {
10760            self.event_filter::<RoleRevoked>()
10761        }
10762    }
10763}