hotshot_contract_adapter/bindings/
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 alloy::sol_types as alloy_sol_types;
18
19    use super::*;
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<8> as alloy_sol_types::SolType>::Token<'_>
32            {
33                alloy_sol_types::private::SolTypeValue::<
34                    alloy::sol_types::sol_data::Uint<8>,
35                >::stv_to_tokens(self)
36            }
37            #[inline]
38            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
39                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(self).0
40            }
41            #[inline]
42            fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
43                <alloy::sol_types::sol_data::Uint<
44                    8,
45                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
46            }
47            #[inline]
48            fn stv_abi_packed_encoded_size(&self) -> usize {
49                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::abi_encoded_size(
50                    self,
51                )
52            }
53        }
54        #[automatically_derived]
55        impl OperationState {
56            /// The Solidity type name.
57            pub const NAME: &'static str = stringify!(@ name);
58            /// Convert from the underlying value type.
59            #[inline]
60            pub const fn from(value: u8) -> Self {
61                Self(value)
62            }
63            /// Return the underlying value.
64            #[inline]
65            pub const fn into(self) -> u8 {
66                self.0
67            }
68            /// Return the single encoding of this value, delegating to the
69            /// underlying type.
70            #[inline]
71            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
72                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
73            }
74            /// Return the packed encoding of this value, delegating to the
75            /// underlying type.
76            #[inline]
77            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
78                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
79            }
80        }
81        #[automatically_derived]
82        impl alloy_sol_types::SolType for OperationState {
83            type RustType = u8;
84            type Token<'a> =
85                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::Token<'a>;
86            const SOL_NAME: &'static str = Self::NAME;
87            const ENCODED_SIZE: Option<usize> =
88                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::ENCODED_SIZE;
89            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
90                8,
91            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
92            #[inline]
93            fn valid_token(token: &Self::Token<'_>) -> bool {
94                Self::type_check(token).is_ok()
95            }
96            #[inline]
97            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
98                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::type_check(token)
99            }
100            #[inline]
101            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
102                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::detokenize(token)
103            }
104        }
105        #[automatically_derived]
106        impl alloy_sol_types::EventTopic for OperationState {
107            #[inline]
108            fn topic_preimage_length(rust: &Self::RustType) -> usize {
109                <alloy::sol_types::sol_data::Uint<
110                    8,
111                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
112            }
113            #[inline]
114            fn encode_topic_preimage(
115                rust: &Self::RustType,
116                out: &mut alloy_sol_types::private::Vec<u8>,
117            ) {
118                <alloy::sol_types::sol_data::Uint<
119                    8,
120                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
121            }
122            #[inline]
123            fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
124                <alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::EventTopic>::encode_topic(
125                    rust,
126                )
127            }
128        }
129    };
130    use alloy::contract as alloy_contract;
131    /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
132
133    See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
134    #[inline]
135    pub const fn new<
136        T: alloy_contract::private::Transport + ::core::clone::Clone,
137        P: alloy_contract::private::Provider<T, N>,
138        N: alloy_contract::private::Network,
139    >(
140        address: alloy_sol_types::private::Address,
141        provider: P,
142    ) -> TimelockControllerInstance<T, P, N> {
143        TimelockControllerInstance::<T, P, N>::new(address, provider)
144    }
145    /**A [`TimelockController`](self) instance.
146
147    Contains type-safe methods for interacting with an on-chain instance of the
148    [`TimelockController`](self) contract located at a given `address`, using a given
149    provider `P`.
150
151    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
152    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
153    be used to deploy a new instance of the contract.
154
155    See the [module-level documentation](self) for all the available methods.*/
156    #[derive(Clone)]
157    pub struct TimelockControllerInstance<T, P, N = alloy_contract::private::Ethereum> {
158        address: alloy_sol_types::private::Address,
159        provider: P,
160        _network_transport: ::core::marker::PhantomData<(N, T)>,
161    }
162    #[automatically_derived]
163    impl<T, P, N> ::core::fmt::Debug for TimelockControllerInstance<T, P, N> {
164        #[inline]
165        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
166            f.debug_tuple("TimelockControllerInstance")
167                .field(&self.address)
168                .finish()
169        }
170    }
171    /// Instantiation and getters/setters.
172    #[automatically_derived]
173    impl<
174            T: alloy_contract::private::Transport + ::core::clone::Clone,
175            P: alloy_contract::private::Provider<T, N>,
176            N: alloy_contract::private::Network,
177        > TimelockControllerInstance<T, P, N>
178    {
179        /**Creates a new wrapper around an on-chain [`TimelockController`](self) contract instance.
180
181        See the [wrapper's documentation](`TimelockControllerInstance`) for more details.*/
182        #[inline]
183        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
184            Self {
185                address,
186                provider,
187                _network_transport: ::core::marker::PhantomData,
188            }
189        }
190        /// Returns a reference to the address.
191        #[inline]
192        pub const fn address(&self) -> &alloy_sol_types::private::Address {
193            &self.address
194        }
195        /// Sets the address.
196        #[inline]
197        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
198            self.address = address;
199        }
200        /// Sets the address and returns `self`.
201        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
202            self.set_address(address);
203            self
204        }
205        /// Returns a reference to the provider.
206        #[inline]
207        pub const fn provider(&self) -> &P {
208            &self.provider
209        }
210    }
211    impl<T, P: ::core::clone::Clone, N> TimelockControllerInstance<T, &P, N> {
212        /// Clones the provider and returns a new instance with the cloned provider.
213        #[inline]
214        pub fn with_cloned_provider(self) -> TimelockControllerInstance<T, P, N> {
215            TimelockControllerInstance {
216                address: self.address,
217                provider: ::core::clone::Clone::clone(&self.provider),
218                _network_transport: ::core::marker::PhantomData,
219            }
220        }
221    }
222    /// Function calls.
223    #[automatically_derived]
224    impl<
225            T: alloy_contract::private::Transport + ::core::clone::Clone,
226            P: alloy_contract::private::Provider<T, N>,
227            N: alloy_contract::private::Network,
228        > TimelockControllerInstance<T, P, N>
229    {
230        /// Creates a new call builder using this contract instance's provider and address.
231        ///
232        /// Note that the call can be any function call, not just those defined in this
233        /// contract. Prefer using the other methods for building type-safe contract calls.
234        pub fn call_builder<C: alloy_sol_types::SolCall>(
235            &self,
236            call: &C,
237        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
238            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
239        }
240    }
241    /// Event filters.
242    #[automatically_derived]
243    impl<
244            T: alloy_contract::private::Transport + ::core::clone::Clone,
245            P: alloy_contract::private::Provider<T, N>,
246            N: alloy_contract::private::Network,
247        > TimelockControllerInstance<T, P, N>
248    {
249        /// Creates a new event filter using this contract instance's provider and address.
250        ///
251        /// Note that the type can be any event, not just those defined in this contract.
252        /// Prefer using the other methods for building type-safe event filters.
253        pub fn event_filter<E: alloy_sol_types::SolEvent>(
254            &self,
255        ) -> alloy_contract::Event<T, &P, E, N> {
256            alloy_contract::Event::new_sol(&self.provider, &self.address)
257        }
258    }
259}
260/**
261
262Generated by the following Solidity interface...
263```solidity
264library TimelockController {
265    type OperationState is uint8;
266}
267
268interface Timelock {
269    error AccessControlBadConfirmation();
270    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
271    error FailedInnerCall();
272    error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
273    error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
274    error TimelockUnauthorizedCaller(address caller);
275    error TimelockUnexecutedPredecessor(bytes32 predecessorId);
276    error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
277
278    event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
279    event CallSalt(bytes32 indexed id, bytes32 salt);
280    event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
281    event Cancelled(bytes32 indexed id);
282    event MinDelayChange(uint256 oldDuration, uint256 newDuration);
283    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
284    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
285    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
286
287    constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
288
289    receive() external payable;
290
291    function CANCELLER_ROLE() external view returns (bytes32);
292    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
293    function EXECUTOR_ROLE() external view returns (bytes32);
294    function PROPOSER_ROLE() external view returns (bytes32);
295    function cancel(bytes32 id) external;
296    function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
297    function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
298    function getMinDelay() external view returns (uint256);
299    function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
300    function getRoleAdmin(bytes32 role) external view returns (bytes32);
301    function getTimestamp(bytes32 id) external view returns (uint256);
302    function grantRole(bytes32 role, address account) external;
303    function hasRole(bytes32 role, address account) external view returns (bool);
304    function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
305    function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
306    function isOperation(bytes32 id) external view returns (bool);
307    function isOperationDone(bytes32 id) external view returns (bool);
308    function isOperationPending(bytes32 id) external view returns (bool);
309    function isOperationReady(bytes32 id) external view returns (bool);
310    function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
311    function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
312    function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
313    function renounceRole(bytes32 role, address callerConfirmation) external;
314    function revokeRole(bytes32 role, address account) external;
315    function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
316    function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
317    function supportsInterface(bytes4 interfaceId) external view returns (bool);
318    function updateDelay(uint256 newDelay) external;
319}
320```
321
322...which was generated by the following JSON ABI:
323```json
324[
325  {
326    "type": "constructor",
327    "inputs": [
328      {
329        "name": "minDelay",
330        "type": "uint256",
331        "internalType": "uint256"
332      },
333      {
334        "name": "proposers",
335        "type": "address[]",
336        "internalType": "address[]"
337      },
338      {
339        "name": "executors",
340        "type": "address[]",
341        "internalType": "address[]"
342      },
343      {
344        "name": "admin",
345        "type": "address",
346        "internalType": "address"
347      }
348    ],
349    "stateMutability": "nonpayable"
350  },
351  {
352    "type": "receive",
353    "stateMutability": "payable"
354  },
355  {
356    "type": "function",
357    "name": "CANCELLER_ROLE",
358    "inputs": [],
359    "outputs": [
360      {
361        "name": "",
362        "type": "bytes32",
363        "internalType": "bytes32"
364      }
365    ],
366    "stateMutability": "view"
367  },
368  {
369    "type": "function",
370    "name": "DEFAULT_ADMIN_ROLE",
371    "inputs": [],
372    "outputs": [
373      {
374        "name": "",
375        "type": "bytes32",
376        "internalType": "bytes32"
377      }
378    ],
379    "stateMutability": "view"
380  },
381  {
382    "type": "function",
383    "name": "EXECUTOR_ROLE",
384    "inputs": [],
385    "outputs": [
386      {
387        "name": "",
388        "type": "bytes32",
389        "internalType": "bytes32"
390      }
391    ],
392    "stateMutability": "view"
393  },
394  {
395    "type": "function",
396    "name": "PROPOSER_ROLE",
397    "inputs": [],
398    "outputs": [
399      {
400        "name": "",
401        "type": "bytes32",
402        "internalType": "bytes32"
403      }
404    ],
405    "stateMutability": "view"
406  },
407  {
408    "type": "function",
409    "name": "cancel",
410    "inputs": [
411      {
412        "name": "id",
413        "type": "bytes32",
414        "internalType": "bytes32"
415      }
416    ],
417    "outputs": [],
418    "stateMutability": "nonpayable"
419  },
420  {
421    "type": "function",
422    "name": "execute",
423    "inputs": [
424      {
425        "name": "target",
426        "type": "address",
427        "internalType": "address"
428      },
429      {
430        "name": "value",
431        "type": "uint256",
432        "internalType": "uint256"
433      },
434      {
435        "name": "payload",
436        "type": "bytes",
437        "internalType": "bytes"
438      },
439      {
440        "name": "predecessor",
441        "type": "bytes32",
442        "internalType": "bytes32"
443      },
444      {
445        "name": "salt",
446        "type": "bytes32",
447        "internalType": "bytes32"
448      }
449    ],
450    "outputs": [],
451    "stateMutability": "payable"
452  },
453  {
454    "type": "function",
455    "name": "executeBatch",
456    "inputs": [
457      {
458        "name": "targets",
459        "type": "address[]",
460        "internalType": "address[]"
461      },
462      {
463        "name": "values",
464        "type": "uint256[]",
465        "internalType": "uint256[]"
466      },
467      {
468        "name": "payloads",
469        "type": "bytes[]",
470        "internalType": "bytes[]"
471      },
472      {
473        "name": "predecessor",
474        "type": "bytes32",
475        "internalType": "bytes32"
476      },
477      {
478        "name": "salt",
479        "type": "bytes32",
480        "internalType": "bytes32"
481      }
482    ],
483    "outputs": [],
484    "stateMutability": "payable"
485  },
486  {
487    "type": "function",
488    "name": "getMinDelay",
489    "inputs": [],
490    "outputs": [
491      {
492        "name": "",
493        "type": "uint256",
494        "internalType": "uint256"
495      }
496    ],
497    "stateMutability": "view"
498  },
499  {
500    "type": "function",
501    "name": "getOperationState",
502    "inputs": [
503      {
504        "name": "id",
505        "type": "bytes32",
506        "internalType": "bytes32"
507      }
508    ],
509    "outputs": [
510      {
511        "name": "",
512        "type": "uint8",
513        "internalType": "enum TimelockController.OperationState"
514      }
515    ],
516    "stateMutability": "view"
517  },
518  {
519    "type": "function",
520    "name": "getRoleAdmin",
521    "inputs": [
522      {
523        "name": "role",
524        "type": "bytes32",
525        "internalType": "bytes32"
526      }
527    ],
528    "outputs": [
529      {
530        "name": "",
531        "type": "bytes32",
532        "internalType": "bytes32"
533      }
534    ],
535    "stateMutability": "view"
536  },
537  {
538    "type": "function",
539    "name": "getTimestamp",
540    "inputs": [
541      {
542        "name": "id",
543        "type": "bytes32",
544        "internalType": "bytes32"
545      }
546    ],
547    "outputs": [
548      {
549        "name": "",
550        "type": "uint256",
551        "internalType": "uint256"
552      }
553    ],
554    "stateMutability": "view"
555  },
556  {
557    "type": "function",
558    "name": "grantRole",
559    "inputs": [
560      {
561        "name": "role",
562        "type": "bytes32",
563        "internalType": "bytes32"
564      },
565      {
566        "name": "account",
567        "type": "address",
568        "internalType": "address"
569      }
570    ],
571    "outputs": [],
572    "stateMutability": "nonpayable"
573  },
574  {
575    "type": "function",
576    "name": "hasRole",
577    "inputs": [
578      {
579        "name": "role",
580        "type": "bytes32",
581        "internalType": "bytes32"
582      },
583      {
584        "name": "account",
585        "type": "address",
586        "internalType": "address"
587      }
588    ],
589    "outputs": [
590      {
591        "name": "",
592        "type": "bool",
593        "internalType": "bool"
594      }
595    ],
596    "stateMutability": "view"
597  },
598  {
599    "type": "function",
600    "name": "hashOperation",
601    "inputs": [
602      {
603        "name": "target",
604        "type": "address",
605        "internalType": "address"
606      },
607      {
608        "name": "value",
609        "type": "uint256",
610        "internalType": "uint256"
611      },
612      {
613        "name": "data",
614        "type": "bytes",
615        "internalType": "bytes"
616      },
617      {
618        "name": "predecessor",
619        "type": "bytes32",
620        "internalType": "bytes32"
621      },
622      {
623        "name": "salt",
624        "type": "bytes32",
625        "internalType": "bytes32"
626      }
627    ],
628    "outputs": [
629      {
630        "name": "",
631        "type": "bytes32",
632        "internalType": "bytes32"
633      }
634    ],
635    "stateMutability": "pure"
636  },
637  {
638    "type": "function",
639    "name": "hashOperationBatch",
640    "inputs": [
641      {
642        "name": "targets",
643        "type": "address[]",
644        "internalType": "address[]"
645      },
646      {
647        "name": "values",
648        "type": "uint256[]",
649        "internalType": "uint256[]"
650      },
651      {
652        "name": "payloads",
653        "type": "bytes[]",
654        "internalType": "bytes[]"
655      },
656      {
657        "name": "predecessor",
658        "type": "bytes32",
659        "internalType": "bytes32"
660      },
661      {
662        "name": "salt",
663        "type": "bytes32",
664        "internalType": "bytes32"
665      }
666    ],
667    "outputs": [
668      {
669        "name": "",
670        "type": "bytes32",
671        "internalType": "bytes32"
672      }
673    ],
674    "stateMutability": "pure"
675  },
676  {
677    "type": "function",
678    "name": "isOperation",
679    "inputs": [
680      {
681        "name": "id",
682        "type": "bytes32",
683        "internalType": "bytes32"
684      }
685    ],
686    "outputs": [
687      {
688        "name": "",
689        "type": "bool",
690        "internalType": "bool"
691      }
692    ],
693    "stateMutability": "view"
694  },
695  {
696    "type": "function",
697    "name": "isOperationDone",
698    "inputs": [
699      {
700        "name": "id",
701        "type": "bytes32",
702        "internalType": "bytes32"
703      }
704    ],
705    "outputs": [
706      {
707        "name": "",
708        "type": "bool",
709        "internalType": "bool"
710      }
711    ],
712    "stateMutability": "view"
713  },
714  {
715    "type": "function",
716    "name": "isOperationPending",
717    "inputs": [
718      {
719        "name": "id",
720        "type": "bytes32",
721        "internalType": "bytes32"
722      }
723    ],
724    "outputs": [
725      {
726        "name": "",
727        "type": "bool",
728        "internalType": "bool"
729      }
730    ],
731    "stateMutability": "view"
732  },
733  {
734    "type": "function",
735    "name": "isOperationReady",
736    "inputs": [
737      {
738        "name": "id",
739        "type": "bytes32",
740        "internalType": "bytes32"
741      }
742    ],
743    "outputs": [
744      {
745        "name": "",
746        "type": "bool",
747        "internalType": "bool"
748      }
749    ],
750    "stateMutability": "view"
751  },
752  {
753    "type": "function",
754    "name": "onERC1155BatchReceived",
755    "inputs": [
756      {
757        "name": "",
758        "type": "address",
759        "internalType": "address"
760      },
761      {
762        "name": "",
763        "type": "address",
764        "internalType": "address"
765      },
766      {
767        "name": "",
768        "type": "uint256[]",
769        "internalType": "uint256[]"
770      },
771      {
772        "name": "",
773        "type": "uint256[]",
774        "internalType": "uint256[]"
775      },
776      {
777        "name": "",
778        "type": "bytes",
779        "internalType": "bytes"
780      }
781    ],
782    "outputs": [
783      {
784        "name": "",
785        "type": "bytes4",
786        "internalType": "bytes4"
787      }
788    ],
789    "stateMutability": "nonpayable"
790  },
791  {
792    "type": "function",
793    "name": "onERC1155Received",
794    "inputs": [
795      {
796        "name": "",
797        "type": "address",
798        "internalType": "address"
799      },
800      {
801        "name": "",
802        "type": "address",
803        "internalType": "address"
804      },
805      {
806        "name": "",
807        "type": "uint256",
808        "internalType": "uint256"
809      },
810      {
811        "name": "",
812        "type": "uint256",
813        "internalType": "uint256"
814      },
815      {
816        "name": "",
817        "type": "bytes",
818        "internalType": "bytes"
819      }
820    ],
821    "outputs": [
822      {
823        "name": "",
824        "type": "bytes4",
825        "internalType": "bytes4"
826      }
827    ],
828    "stateMutability": "nonpayable"
829  },
830  {
831    "type": "function",
832    "name": "onERC721Received",
833    "inputs": [
834      {
835        "name": "",
836        "type": "address",
837        "internalType": "address"
838      },
839      {
840        "name": "",
841        "type": "address",
842        "internalType": "address"
843      },
844      {
845        "name": "",
846        "type": "uint256",
847        "internalType": "uint256"
848      },
849      {
850        "name": "",
851        "type": "bytes",
852        "internalType": "bytes"
853      }
854    ],
855    "outputs": [
856      {
857        "name": "",
858        "type": "bytes4",
859        "internalType": "bytes4"
860      }
861    ],
862    "stateMutability": "nonpayable"
863  },
864  {
865    "type": "function",
866    "name": "renounceRole",
867    "inputs": [
868      {
869        "name": "role",
870        "type": "bytes32",
871        "internalType": "bytes32"
872      },
873      {
874        "name": "callerConfirmation",
875        "type": "address",
876        "internalType": "address"
877      }
878    ],
879    "outputs": [],
880    "stateMutability": "nonpayable"
881  },
882  {
883    "type": "function",
884    "name": "revokeRole",
885    "inputs": [
886      {
887        "name": "role",
888        "type": "bytes32",
889        "internalType": "bytes32"
890      },
891      {
892        "name": "account",
893        "type": "address",
894        "internalType": "address"
895      }
896    ],
897    "outputs": [],
898    "stateMutability": "nonpayable"
899  },
900  {
901    "type": "function",
902    "name": "schedule",
903    "inputs": [
904      {
905        "name": "target",
906        "type": "address",
907        "internalType": "address"
908      },
909      {
910        "name": "value",
911        "type": "uint256",
912        "internalType": "uint256"
913      },
914      {
915        "name": "data",
916        "type": "bytes",
917        "internalType": "bytes"
918      },
919      {
920        "name": "predecessor",
921        "type": "bytes32",
922        "internalType": "bytes32"
923      },
924      {
925        "name": "salt",
926        "type": "bytes32",
927        "internalType": "bytes32"
928      },
929      {
930        "name": "delay",
931        "type": "uint256",
932        "internalType": "uint256"
933      }
934    ],
935    "outputs": [],
936    "stateMutability": "nonpayable"
937  },
938  {
939    "type": "function",
940    "name": "scheduleBatch",
941    "inputs": [
942      {
943        "name": "targets",
944        "type": "address[]",
945        "internalType": "address[]"
946      },
947      {
948        "name": "values",
949        "type": "uint256[]",
950        "internalType": "uint256[]"
951      },
952      {
953        "name": "payloads",
954        "type": "bytes[]",
955        "internalType": "bytes[]"
956      },
957      {
958        "name": "predecessor",
959        "type": "bytes32",
960        "internalType": "bytes32"
961      },
962      {
963        "name": "salt",
964        "type": "bytes32",
965        "internalType": "bytes32"
966      },
967      {
968        "name": "delay",
969        "type": "uint256",
970        "internalType": "uint256"
971      }
972    ],
973    "outputs": [],
974    "stateMutability": "nonpayable"
975  },
976  {
977    "type": "function",
978    "name": "supportsInterface",
979    "inputs": [
980      {
981        "name": "interfaceId",
982        "type": "bytes4",
983        "internalType": "bytes4"
984      }
985    ],
986    "outputs": [
987      {
988        "name": "",
989        "type": "bool",
990        "internalType": "bool"
991      }
992    ],
993    "stateMutability": "view"
994  },
995  {
996    "type": "function",
997    "name": "updateDelay",
998    "inputs": [
999      {
1000        "name": "newDelay",
1001        "type": "uint256",
1002        "internalType": "uint256"
1003      }
1004    ],
1005    "outputs": [],
1006    "stateMutability": "nonpayable"
1007  },
1008  {
1009    "type": "event",
1010    "name": "CallExecuted",
1011    "inputs": [
1012      {
1013        "name": "id",
1014        "type": "bytes32",
1015        "indexed": true,
1016        "internalType": "bytes32"
1017      },
1018      {
1019        "name": "index",
1020        "type": "uint256",
1021        "indexed": true,
1022        "internalType": "uint256"
1023      },
1024      {
1025        "name": "target",
1026        "type": "address",
1027        "indexed": false,
1028        "internalType": "address"
1029      },
1030      {
1031        "name": "value",
1032        "type": "uint256",
1033        "indexed": false,
1034        "internalType": "uint256"
1035      },
1036      {
1037        "name": "data",
1038        "type": "bytes",
1039        "indexed": false,
1040        "internalType": "bytes"
1041      }
1042    ],
1043    "anonymous": false
1044  },
1045  {
1046    "type": "event",
1047    "name": "CallSalt",
1048    "inputs": [
1049      {
1050        "name": "id",
1051        "type": "bytes32",
1052        "indexed": true,
1053        "internalType": "bytes32"
1054      },
1055      {
1056        "name": "salt",
1057        "type": "bytes32",
1058        "indexed": false,
1059        "internalType": "bytes32"
1060      }
1061    ],
1062    "anonymous": false
1063  },
1064  {
1065    "type": "event",
1066    "name": "CallScheduled",
1067    "inputs": [
1068      {
1069        "name": "id",
1070        "type": "bytes32",
1071        "indexed": true,
1072        "internalType": "bytes32"
1073      },
1074      {
1075        "name": "index",
1076        "type": "uint256",
1077        "indexed": true,
1078        "internalType": "uint256"
1079      },
1080      {
1081        "name": "target",
1082        "type": "address",
1083        "indexed": false,
1084        "internalType": "address"
1085      },
1086      {
1087        "name": "value",
1088        "type": "uint256",
1089        "indexed": false,
1090        "internalType": "uint256"
1091      },
1092      {
1093        "name": "data",
1094        "type": "bytes",
1095        "indexed": false,
1096        "internalType": "bytes"
1097      },
1098      {
1099        "name": "predecessor",
1100        "type": "bytes32",
1101        "indexed": false,
1102        "internalType": "bytes32"
1103      },
1104      {
1105        "name": "delay",
1106        "type": "uint256",
1107        "indexed": false,
1108        "internalType": "uint256"
1109      }
1110    ],
1111    "anonymous": false
1112  },
1113  {
1114    "type": "event",
1115    "name": "Cancelled",
1116    "inputs": [
1117      {
1118        "name": "id",
1119        "type": "bytes32",
1120        "indexed": true,
1121        "internalType": "bytes32"
1122      }
1123    ],
1124    "anonymous": false
1125  },
1126  {
1127    "type": "event",
1128    "name": "MinDelayChange",
1129    "inputs": [
1130      {
1131        "name": "oldDuration",
1132        "type": "uint256",
1133        "indexed": false,
1134        "internalType": "uint256"
1135      },
1136      {
1137        "name": "newDuration",
1138        "type": "uint256",
1139        "indexed": false,
1140        "internalType": "uint256"
1141      }
1142    ],
1143    "anonymous": false
1144  },
1145  {
1146    "type": "event",
1147    "name": "RoleAdminChanged",
1148    "inputs": [
1149      {
1150        "name": "role",
1151        "type": "bytes32",
1152        "indexed": true,
1153        "internalType": "bytes32"
1154      },
1155      {
1156        "name": "previousAdminRole",
1157        "type": "bytes32",
1158        "indexed": true,
1159        "internalType": "bytes32"
1160      },
1161      {
1162        "name": "newAdminRole",
1163        "type": "bytes32",
1164        "indexed": true,
1165        "internalType": "bytes32"
1166      }
1167    ],
1168    "anonymous": false
1169  },
1170  {
1171    "type": "event",
1172    "name": "RoleGranted",
1173    "inputs": [
1174      {
1175        "name": "role",
1176        "type": "bytes32",
1177        "indexed": true,
1178        "internalType": "bytes32"
1179      },
1180      {
1181        "name": "account",
1182        "type": "address",
1183        "indexed": true,
1184        "internalType": "address"
1185      },
1186      {
1187        "name": "sender",
1188        "type": "address",
1189        "indexed": true,
1190        "internalType": "address"
1191      }
1192    ],
1193    "anonymous": false
1194  },
1195  {
1196    "type": "event",
1197    "name": "RoleRevoked",
1198    "inputs": [
1199      {
1200        "name": "role",
1201        "type": "bytes32",
1202        "indexed": true,
1203        "internalType": "bytes32"
1204      },
1205      {
1206        "name": "account",
1207        "type": "address",
1208        "indexed": true,
1209        "internalType": "address"
1210      },
1211      {
1212        "name": "sender",
1213        "type": "address",
1214        "indexed": true,
1215        "internalType": "address"
1216      }
1217    ],
1218    "anonymous": false
1219  },
1220  {
1221    "type": "error",
1222    "name": "AccessControlBadConfirmation",
1223    "inputs": []
1224  },
1225  {
1226    "type": "error",
1227    "name": "AccessControlUnauthorizedAccount",
1228    "inputs": [
1229      {
1230        "name": "account",
1231        "type": "address",
1232        "internalType": "address"
1233      },
1234      {
1235        "name": "neededRole",
1236        "type": "bytes32",
1237        "internalType": "bytes32"
1238      }
1239    ]
1240  },
1241  {
1242    "type": "error",
1243    "name": "FailedInnerCall",
1244    "inputs": []
1245  },
1246  {
1247    "type": "error",
1248    "name": "TimelockInsufficientDelay",
1249    "inputs": [
1250      {
1251        "name": "delay",
1252        "type": "uint256",
1253        "internalType": "uint256"
1254      },
1255      {
1256        "name": "minDelay",
1257        "type": "uint256",
1258        "internalType": "uint256"
1259      }
1260    ]
1261  },
1262  {
1263    "type": "error",
1264    "name": "TimelockInvalidOperationLength",
1265    "inputs": [
1266      {
1267        "name": "targets",
1268        "type": "uint256",
1269        "internalType": "uint256"
1270      },
1271      {
1272        "name": "payloads",
1273        "type": "uint256",
1274        "internalType": "uint256"
1275      },
1276      {
1277        "name": "values",
1278        "type": "uint256",
1279        "internalType": "uint256"
1280      }
1281    ]
1282  },
1283  {
1284    "type": "error",
1285    "name": "TimelockUnauthorizedCaller",
1286    "inputs": [
1287      {
1288        "name": "caller",
1289        "type": "address",
1290        "internalType": "address"
1291      }
1292    ]
1293  },
1294  {
1295    "type": "error",
1296    "name": "TimelockUnexecutedPredecessor",
1297    "inputs": [
1298      {
1299        "name": "predecessorId",
1300        "type": "bytes32",
1301        "internalType": "bytes32"
1302      }
1303    ]
1304  },
1305  {
1306    "type": "error",
1307    "name": "TimelockUnexpectedOperationState",
1308    "inputs": [
1309      {
1310        "name": "operationId",
1311        "type": "bytes32",
1312        "internalType": "bytes32"
1313      },
1314      {
1315        "name": "expectedStates",
1316        "type": "bytes32",
1317        "internalType": "bytes32"
1318      }
1319    ]
1320  }
1321]
1322```*/
1323#[allow(
1324    non_camel_case_types,
1325    non_snake_case,
1326    clippy::pub_underscore_fields,
1327    clippy::style,
1328    clippy::empty_structs_with_brackets
1329)]
1330pub mod Timelock {
1331    use alloy::sol_types as alloy_sol_types;
1332
1333    use super::*;
1334    /// The creation / init bytecode of the contract.
1335    ///
1336    /// ```text
1337    ///0x608060405234801561000f575f5ffd5b50604051611d0b380380611d0b83398101604081905261002e916102fe565b8383838361003c5f30610183565b506001600160a01b03811615610058576100565f82610183565b505b5f5b83518110156100ec576100ac7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc18583815181106100995761009961037d565b602002602001015161018360201b60201c565b506100e37ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f7838583815181106100995761009961037d565b5060010161005a565b505f5b82518110156101375761012e7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e638483815181106100995761009961037d565b506001016100ef565b506002849055604080515f8152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a15050505050505050610391565b5f828152602081815260408083206001600160a01b038516845290915281205460ff16610223575f838152602081815260408083206001600160a01b03861684529091529020805460ff191660011790556101db3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610226565b505f5b92915050565b634e487b7160e01b5f52604160045260245ffd5b80516001600160a01b0381168114610256575f5ffd5b919050565b5f82601f83011261026a575f5ffd5b81516001600160401b038111156102835761028361022c565b604051600582901b90603f8201601f191681016001600160401b03811182821017156102b1576102b161022c565b6040529182526020818501810192908101868411156102ce575f5ffd5b6020860192505b838310156102f4576102e683610240565b8152602092830192016102d5565b5095945050505050565b5f5f5f5f60808587031215610311575f5ffd5b845160208601519094506001600160401b0381111561032e575f5ffd5b61033a8782880161025b565b604087015190945090506001600160401b03811115610357575f5ffd5b6103638782880161025b565b92505061037260608601610240565b905092959194509250565b634e487b7160e01b5f52603260045260245ffd5b61196d8061039e5f395ff3fe6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1338    /// ```
1339    #[rustfmt::skip]
1340    #[allow(clippy::all)]
1341    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1342        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1D\x0B8\x03\x80a\x1D\x0B\x839\x81\x01`@\x81\x90Ra\0.\x91a\x02\xFEV[\x83\x83\x83\x83a\0<_0a\x01\x83V[P`\x01`\x01`\xA0\x1B\x03\x81\x16\x15a\0XWa\0V_\x82a\x01\x83V[P[_[\x83Q\x81\x10\x15a\0\xECWa\0\xAC\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[` \x02` \x01\x01Qa\x01\x83` \x1B` \x1CV[Pa\0\xE3\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x85\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0ZV[P_[\x82Q\x81\x10\x15a\x017Wa\x01.\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x84\x83\x81Q\x81\x10a\0\x99Wa\0\x99a\x03}V[P`\x01\x01a\0\xEFV[P`\x02\x84\x90U`@\x80Q_\x81R` \x81\x01\x86\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1PPPPPPPPa\x03\x91V[_\x82\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x84R\x90\x91R\x81 T`\xFF\x16a\x02#W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x01\xDB3\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x02&V[P_[\x92\x91PPV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02VW__\xFD[\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x02jW__\xFD[\x81Q`\x01`\x01`@\x1B\x03\x81\x11\x15a\x02\x83Wa\x02\x83a\x02,V[`@Q`\x05\x82\x90\x1B\x90`?\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x02\xB1Wa\x02\xB1a\x02,V[`@R\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x86\x84\x11\x15a\x02\xCEW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x02\xF4Wa\x02\xE6\x83a\x02@V[\x81R` \x92\x83\x01\x92\x01a\x02\xD5V[P\x95\x94PPPPPV[____`\x80\x85\x87\x03\x12\x15a\x03\x11W__\xFD[\x84Q` \x86\x01Q\x90\x94P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03.W__\xFD[a\x03:\x87\x82\x88\x01a\x02[V[`@\x87\x01Q\x90\x94P\x90P`\x01`\x01`@\x1B\x03\x81\x11\x15a\x03WW__\xFD[a\x03c\x87\x82\x88\x01a\x02[V[\x92PPa\x03r``\x86\x01a\x02@V[\x90P\x92\x95\x91\x94P\x92PV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[a\x19m\x80a\x03\x9E_9_\xF3\xFE`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08\x1C\0\n",
1343    );
1344    /// The runtime bytecode of the contract, as deployed on the network.
1345    ///
1346    /// ```text
1347    ///0x6080604052600436106101b2575f3560e01c80638065657f116100e7578063bc197c8111610087578063d547741f11610062578063d547741f14610546578063e38335e514610565578063f23a6e6114610578578063f27a0c92146105a3575f5ffd5b8063bc197c81146104d1578063c4d252f5146104fc578063d45c44351461051b575f5ffd5b806391d14854116100c257806391d148541461044d578063a217fddf1461046c578063b08e51c01461047f578063b1c5f427146104b2575f5ffd5b80638065657f146103dc5780638f2a0bb0146103fb5780638f61f4f51461041a575f5ffd5b80632ab0f5291161015257806336568abe1161012d57806336568abe14610353578063584b153e1461037257806364d62353146103915780637958004c146103b0575f5ffd5b80632ab0f529146102f65780632f2ff15d1461031557806331d5075014610334575f5ffd5b8063134008d31161018d578063134008d31461025357806313bc9f2014610266578063150b7a0214610285578063248a9ca3146102c8575f5ffd5b806301d5062a146101bd57806301ffc9a7146101de57806307bd026514610212575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101dc6101d7366004611163565b6105b7565b005b3480156101e9575f5ffd5b506101fd6101f83660046111d1565b61068b565b60405190151581526020015b60405180910390f35b34801561021d575f5ffd5b506102457fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610209565b6101dc6102613660046111f8565b61069b565b348015610271575f5ffd5b506101fd61028036600461125e565b61074d565b348015610290575f5ffd5b506102af61029f366004611324565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610209565b3480156102d3575f5ffd5b506102456102e236600461125e565b5f9081526020819052604090206001015490565b348015610301575f5ffd5b506101fd61031036600461125e565b610772565b348015610320575f5ffd5b506101dc61032f366004611387565b61077a565b34801561033f575f5ffd5b506101fd61034e36600461125e565b6107a4565b34801561035e575f5ffd5b506101dc61036d366004611387565b6107c8565b34801561037d575f5ffd5b506101fd61038c36600461125e565b610800565b34801561039c575f5ffd5b506101dc6103ab36600461125e565b610845565b3480156103bb575f5ffd5b506103cf6103ca36600461125e565b6108b8565b60405161020991906113c5565b3480156103e7575f5ffd5b506102456103f63660046111f8565b610900565b348015610406575f5ffd5b506101dc61041536600461142b565b61093e565b348015610425575f5ffd5b506102457fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b348015610458575f5ffd5b506101fd610467366004611387565b610aca565b348015610477575f5ffd5b506102455f81565b34801561048a575f5ffd5b506102457ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104bd575f5ffd5b506102456104cc3660046114dd565b610af2565b3480156104dc575f5ffd5b506102af6104eb366004611606565b63bc197c8160e01b95945050505050565b348015610507575f5ffd5b506101dc61051636600461125e565b610b36565b348015610526575f5ffd5b5061024561053536600461125e565b5f9081526001602052604090205490565b348015610551575f5ffd5b506101dc610560366004611387565b610be0565b6101dc6105733660046114dd565b610c04565b348015610583575f5ffd5b506102af6105923660046116b2565b63f23a6e6160e01b95945050505050565b3480156105ae575f5ffd5b50600254610245565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16105e181610d85565b5f6105f0898989898989610900565b90506105fc8184610d92565b5f817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a6040516106379695949392919061172d565b60405180910390a3831561068057807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d03878560405161067791815260200190565b60405180910390a25b505050505050505050565b5f61069582610e23565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e636106c6815f610aca565b6106d4576106d48133610e47565b5f6106e3888888888888610900565b90506106ef8185610e84565b6106fb88888888610ed2565b5f817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107329493929190611769565b60405180910390a361074381610f46565b5050505050505050565b5f60025b61075a836108b8565b600381111561076b5761076b6113b1565b1492915050565b5f6003610751565b5f8281526020819052604090206001015461079481610d85565b61079e8383610f71565b50505050565b5f806107af836108b8565b60038111156107c0576107c06113b1565b141592915050565b6001600160a01b03811633146107f15760405163334bd91960e11b815260040160405180910390fd5b6107fb8282611000565b505050565b5f5f61080b836108b8565b90506001816003811115610821576108216113b1565b148061083e5750600281600381111561083c5761083c6113b1565b145b9392505050565b333081146108765760405163e2850c5960e01b81526001600160a01b03821660048201526024015b60405180910390fd5b60025460408051918252602082018490527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150600255565b5f81815260016020526040812054805f036108d557505f92915050565b600181036108e65750600392915050565b428111156108f75750600192915050565b50600292915050565b5f86868686868660405160200161091c9695949392919061172d565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161096881610d85565b88871415806109775750888514155b156109a9576040516001624fcdef60e01b03198152600481018a9052602481018690526044810188905260640161086d565b5f6109ba8b8b8b8b8b8b8b8b610af2565b90506109c68184610d92565b5f5b8a811015610a7b5780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a0557610a05611790565b9050602002016020810190610a1a91906117a4565b8d8d86818110610a2c57610a2c611790565b905060200201358c8c87818110610a4557610a45611790565b9050602002810190610a5791906117bd565b8c8b604051610a6b9695949392919061172d565b60405180910390a36001016109c8565b508315610abd57807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610ab491815260200190565b60405180910390a25b5050505050505050505050565b5f918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b5f8888888888888888604051602001610b12989796959493929190611893565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610b6081610d85565b610b6982610800565b610ba55781610b786002611069565b610b826001611069565b604051635ead8eb560e01b8152600481019390935217602482015260440161086d565b5f828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b5f82815260208190526040902060010154610bfa81610d85565b61079e8383611000565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610c2f815f610aca565b610c3d57610c3d8133610e47565b8786141580610c4c5750878414155b15610c7e576040516001624fcdef60e01b0319815260048101899052602481018590526044810187905260640161086d565b5f610c8f8a8a8a8a8a8a8a8a610af2565b9050610c9b8185610e84565b5f5b89811015610d6f575f8b8b83818110610cb857610cb8611790565b9050602002016020810190610ccd91906117a4565b90505f8a8a84818110610ce257610ce2611790565b905060200201359050365f8a8a86818110610cff57610cff611790565b9050602002810190610d1191906117bd565b91509150610d2184848484610ed2565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d589493929190611769565b60405180910390a350505050806001019050610c9d565b50610d7981610f46565b50505050505050505050565b610d8f8133610e47565b50565b610d9b826107a4565b15610dcc5781610daa5f611069565b604051635ead8eb560e01b81526004810192909252602482015260440161086d565b5f610dd660025490565b905080821015610e0357604051635433660960e01b8152600481018390526024810182905260440161086d565b610e0d8242611932565b5f93845260016020526040909320929092555050565b5f6001600160e01b03198216630271189760e51b148061069557506106958261108b565b610e518282610aca565b610e805760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161086d565b5050565b610e8d8261074d565b610e9c5781610daa6002611069565b8015801590610eb15750610eaf81610772565b155b15610e805760405163121534c360e31b81526004810182905260240161086d565b5f5f856001600160a01b0316858585604051610eef929190611951565b5f6040518083038185875af1925050503d805f8114610f29576040519150601f19603f3d011682016040523d82523d5f602084013e610f2e565b606091505b5091509150610f3d82826110bf565b50505050505050565b610f4f8161074d565b610f5e5780610daa6002611069565b5f90815260016020819052604090912055565b5f610f7c8383610aca565b610ff9575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055610fb13390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610695565b505f610695565b5f61100b8383610aca565b15610ff9575f838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610695565b5f81600381111561107c5761107c6113b1565b600160ff919091161b92915050565b5f6001600160e01b03198216637965db0b60e01b148061069557506301ffc9a760e01b6001600160e01b0319831614610695565b6060826110d4576110cf826110db565b610695565b5080610695565b8051156110eb5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461111a575f5ffd5b919050565b5f5f83601f84011261112f575f5ffd5b5081356001600160401b03811115611145575f5ffd5b60208301915083602082850101111561115c575f5ffd5b9250929050565b5f5f5f5f5f5f5f60c0888a031215611179575f5ffd5b61118288611104565b96506020880135955060408801356001600160401b038111156111a3575f5ffd5b6111af8a828b0161111f565b989b979a50986060810135976080820135975060a09091013595509350505050565b5f602082840312156111e1575f5ffd5b81356001600160e01b03198116811461083e575f5ffd5b5f5f5f5f5f5f60a0878903121561120d575f5ffd5b61121687611104565b95506020870135945060408701356001600160401b03811115611237575f5ffd5b61124389828a0161111f565b979a9699509760608101359660809091013595509350505050565b5f6020828403121561126e575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156112b1576112b1611275565b604052919050565b5f82601f8301126112c8575f5ffd5b81356001600160401b038111156112e1576112e1611275565b6112f4601f8201601f1916602001611289565b818152846020838601011115611308575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611337575f5ffd5b61134085611104565b935061134e60208601611104565b92506040850135915060608501356001600160401b0381111561136f575f5ffd5b61137b878288016112b9565b91505092959194509250565b5f5f60408385031215611398575f5ffd5b823591506113a860208401611104565b90509250929050565b634e487b7160e01b5f52602160045260245ffd5b60208101600483106113e557634e487b7160e01b5f52602160045260245ffd5b91905290565b5f5f83601f8401126113fb575f5ffd5b5081356001600160401b03811115611411575f5ffd5b6020830191508360208260051b850101111561115c575f5ffd5b5f5f5f5f5f5f5f5f5f60c08a8c031215611443575f5ffd5b89356001600160401b03811115611458575f5ffd5b6114648c828d016113eb565b909a5098505060208a01356001600160401b03811115611482575f5ffd5b61148e8c828d016113eb565b90985096505060408a01356001600160401b038111156114ac575f5ffd5b6114b88c828d016113eb565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b5f5f5f5f5f5f5f5f60a0898b0312156114f4575f5ffd5b88356001600160401b03811115611509575f5ffd5b6115158b828c016113eb565b90995097505060208901356001600160401b03811115611533575f5ffd5b61153f8b828c016113eb565b90975095505060408901356001600160401b0381111561155d575f5ffd5b6115698b828c016113eb565b999c989b509699959896976060870135966080013595509350505050565b5f82601f830112611596575f5ffd5b81356001600160401b038111156115af576115af611275565b8060051b6115bf60208201611289565b918252602081850181019290810190868411156115da575f5ffd5b6020860192505b838310156115fc5782358252602092830192909101906115e1565b9695505050505050565b5f5f5f5f5f60a0868803121561161a575f5ffd5b61162386611104565b945061163160208701611104565b935060408601356001600160401b0381111561164b575f5ffd5b61165788828901611587565b93505060608601356001600160401b03811115611672575f5ffd5b61167e88828901611587565b92505060808601356001600160401b03811115611699575f5ffd5b6116a5888289016112b9565b9150509295509295909350565b5f5f5f5f5f60a086880312156116c6575f5ffd5b6116cf86611104565b94506116dd60208701611104565b9350604086013592506060860135915060808601356001600160401b03811115611699575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201525f61175460a083018688611705565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201525f6115fc606083018486611705565b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156117b4575f5ffd5b61083e82611104565b5f5f8335601e198436030181126117d2575f5ffd5b8301803591506001600160401b038211156117eb575f5ffd5b60200191503681900382131561115c575f5ffd5b5f8383855260208501945060208460051b820101835f5b8681101561188757838303601f19018852813536879003601e1901811261183b575f5ffd5b86016020810190356001600160401b03811115611856575f5ffd5b803603821315611864575f5ffd5b61186f858284611705565b60209a8b019a90955093909301925050600101611816565b50909695505050505050565b60a080825281018890525f8960c08301825b8b8110156118d3576001600160a01b036118be84611104565b168252602092830192909101906001016118a5565b5083810360208501528881526001600160fb1b038911156118f2575f5ffd5b8860051b9150818a6020830137018281036020908101604085015261191a90820187896117ff565b60608401959095525050608001529695505050505050565b8082018082111561069557634e487b7160e01b5f52601160045260245ffd5b818382375f910190815291905056fea164736f6c634300081c000a
1348    /// ```
1349    #[rustfmt::skip]
1350    #[allow(clippy::all)]
1351    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1352        b"`\x80`@R`\x046\x10a\x01\xB2W_5`\xE0\x1C\x80c\x80ee\x7F\x11a\0\xE7W\x80c\xBC\x19|\x81\x11a\0\x87W\x80c\xD5Gt\x1F\x11a\0bW\x80c\xD5Gt\x1F\x14a\x05FW\x80c\xE3\x835\xE5\x14a\x05eW\x80c\xF2:na\x14a\x05xW\x80c\xF2z\x0C\x92\x14a\x05\xA3W__\xFD[\x80c\xBC\x19|\x81\x14a\x04\xD1W\x80c\xC4\xD2R\xF5\x14a\x04\xFCW\x80c\xD4\\D5\x14a\x05\x1BW__\xFD[\x80c\x91\xD1HT\x11a\0\xC2W\x80c\x91\xD1HT\x14a\x04MW\x80c\xA2\x17\xFD\xDF\x14a\x04lW\x80c\xB0\x8EQ\xC0\x14a\x04\x7FW\x80c\xB1\xC5\xF4'\x14a\x04\xB2W__\xFD[\x80c\x80ee\x7F\x14a\x03\xDCW\x80c\x8F*\x0B\xB0\x14a\x03\xFBW\x80c\x8Fa\xF4\xF5\x14a\x04\x1AW__\xFD[\x80c*\xB0\xF5)\x11a\x01RW\x80c6V\x8A\xBE\x11a\x01-W\x80c6V\x8A\xBE\x14a\x03SW\x80cXK\x15>\x14a\x03rW\x80cd\xD6#S\x14a\x03\x91W\x80cyX\0L\x14a\x03\xB0W__\xFD[\x80c*\xB0\xF5)\x14a\x02\xF6W\x80c//\xF1]\x14a\x03\x15W\x80c1\xD5\x07P\x14a\x034W__\xFD[\x80c\x13@\x08\xD3\x11a\x01\x8DW\x80c\x13@\x08\xD3\x14a\x02SW\x80c\x13\xBC\x9F \x14a\x02fW\x80c\x15\x0Bz\x02\x14a\x02\x85W\x80c$\x8A\x9C\xA3\x14a\x02\xC8W__\xFD[\x80c\x01\xD5\x06*\x14a\x01\xBDW\x80c\x01\xFF\xC9\xA7\x14a\x01\xDEW\x80c\x07\xBD\x02e\x14a\x02\x12W__\xFD[6a\x01\xB9W\0[__\xFD[4\x80\x15a\x01\xC8W__\xFD[Pa\x01\xDCa\x01\xD76`\x04a\x11cV[a\x05\xB7V[\0[4\x80\x15a\x01\xE9W__\xFD[Pa\x01\xFDa\x01\xF86`\x04a\x11\xD1V[a\x06\x8BV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x1DW__\xFD[Pa\x02E\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Ec\x81V[`@Q\x90\x81R` \x01a\x02\tV[a\x01\xDCa\x02a6`\x04a\x11\xF8V[a\x06\x9BV[4\x80\x15a\x02qW__\xFD[Pa\x01\xFDa\x02\x806`\x04a\x12^V[a\x07MV[4\x80\x15a\x02\x90W__\xFD[Pa\x02\xAFa\x02\x9F6`\x04a\x13$V[c\n\x85\xBD\x01`\xE1\x1B\x94\x93PPPPV[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x02\tV[4\x80\x15a\x02\xD3W__\xFD[Pa\x02Ea\x02\xE26`\x04a\x12^V[_\x90\x81R` \x81\x90R`@\x90 `\x01\x01T\x90V[4\x80\x15a\x03\x01W__\xFD[Pa\x01\xFDa\x03\x106`\x04a\x12^V[a\x07rV[4\x80\x15a\x03 W__\xFD[Pa\x01\xDCa\x03/6`\x04a\x13\x87V[a\x07zV[4\x80\x15a\x03?W__\xFD[Pa\x01\xFDa\x03N6`\x04a\x12^V[a\x07\xA4V[4\x80\x15a\x03^W__\xFD[Pa\x01\xDCa\x03m6`\x04a\x13\x87V[a\x07\xC8V[4\x80\x15a\x03}W__\xFD[Pa\x01\xFDa\x03\x8C6`\x04a\x12^V[a\x08\0V[4\x80\x15a\x03\x9CW__\xFD[Pa\x01\xDCa\x03\xAB6`\x04a\x12^V[a\x08EV[4\x80\x15a\x03\xBBW__\xFD[Pa\x03\xCFa\x03\xCA6`\x04a\x12^V[a\x08\xB8V[`@Qa\x02\t\x91\x90a\x13\xC5V[4\x80\x15a\x03\xE7W__\xFD[Pa\x02Ea\x03\xF66`\x04a\x11\xF8V[a\t\0V[4\x80\x15a\x04\x06W__\xFD[Pa\x01\xDCa\x04\x156`\x04a\x14+V[a\t>V[4\x80\x15a\x04%W__\xFD[Pa\x02E\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1\x81V[4\x80\x15a\x04XW__\xFD[Pa\x01\xFDa\x04g6`\x04a\x13\x87V[a\n\xCAV[4\x80\x15a\x04wW__\xFD[Pa\x02E_\x81V[4\x80\x15a\x04\x8AW__\xFD[Pa\x02E\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83\x81V[4\x80\x15a\x04\xBDW__\xFD[Pa\x02Ea\x04\xCC6`\x04a\x14\xDDV[a\n\xF2V[4\x80\x15a\x04\xDCW__\xFD[Pa\x02\xAFa\x04\xEB6`\x04a\x16\x06V[c\xBC\x19|\x81`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\x07W__\xFD[Pa\x01\xDCa\x05\x166`\x04a\x12^V[a\x0B6V[4\x80\x15a\x05&W__\xFD[Pa\x02Ea\x0556`\x04a\x12^V[_\x90\x81R`\x01` R`@\x90 T\x90V[4\x80\x15a\x05QW__\xFD[Pa\x01\xDCa\x05`6`\x04a\x13\x87V[a\x0B\xE0V[a\x01\xDCa\x05s6`\x04a\x14\xDDV[a\x0C\x04V[4\x80\x15a\x05\x83W__\xFD[Pa\x02\xAFa\x05\x926`\x04a\x16\xB2V[c\xF2:na`\xE0\x1B\x95\x94PPPPPV[4\x80\x15a\x05\xAEW__\xFD[P`\x02Ta\x02EV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\x05\xE1\x81a\r\x85V[_a\x05\xF0\x89\x89\x89\x89\x89\x89a\t\0V[\x90Pa\x05\xFC\x81\x84a\r\x92V[_\x81\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8B\x8B\x8B\x8B\x8B\x8A`@Qa\x067\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3\x83\x15a\x06\x80W\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\x06w\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPV[_a\x06\x95\x82a\x0E#V[\x92\x91PPV[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x06\xC6\x81_a\n\xCAV[a\x06\xD4Wa\x06\xD4\x813a\x0EGV[_a\x06\xE3\x88\x88\x88\x88\x88\x88a\t\0V[\x90Pa\x06\xEF\x81\x85a\x0E\x84V[a\x06\xFB\x88\x88\x88\x88a\x0E\xD2V[_\x81\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x8A\x8A\x8A\x8A`@Qa\x072\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3a\x07C\x81a\x0FFV[PPPPPPPPV[_`\x02[a\x07Z\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07kWa\x07ka\x13\xB1V[\x14\x92\x91PPV[_`\x03a\x07QV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x07\x94\x81a\r\x85V[a\x07\x9E\x83\x83a\x0FqV[PPPPV[_\x80a\x07\xAF\x83a\x08\xB8V[`\x03\x81\x11\x15a\x07\xC0Wa\x07\xC0a\x13\xB1V[\x14\x15\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\x07\xF1W`@Qc3K\xD9\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07\xFB\x82\x82a\x10\0V[PPPV[__a\x08\x0B\x83a\x08\xB8V[\x90P`\x01\x81`\x03\x81\x11\x15a\x08!Wa\x08!a\x13\xB1V[\x14\x80a\x08>WP`\x02\x81`\x03\x81\x11\x15a\x08<Wa\x08<a\x13\xB1V[\x14[\x93\x92PPPV[30\x81\x14a\x08vW`@Qc\xE2\x85\x0CY`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[`\x02T`@\x80Q\x91\x82R` \x82\x01\x84\x90R\x7F\x11\xC2ON\xAD\x16P|i\xACF\x7F\xBD^N\xED_\xB5\xC6\x99bm,\xC6\xD6d!\xDF%8\x86\xD5\x91\x01`@Q\x80\x91\x03\x90\xA1P`\x02UV[_\x81\x81R`\x01` R`@\x81 T\x80_\x03a\x08\xD5WP_\x92\x91PPV[`\x01\x81\x03a\x08\xE6WP`\x03\x92\x91PPV[B\x81\x11\x15a\x08\xF7WP`\x01\x92\x91PPV[P`\x02\x92\x91PPV[_\x86\x86\x86\x86\x86\x86`@Q` \x01a\t\x1C\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x96\x95PPPPPPV[\x7F\xB0\x9A\xA5\xAE\xB3p,\xFDP\xB6\xB6+\xC4S&\x04\x93\x8F!$\x8A'\xA1\xD5\xCAs`\x82\xB6\x81\x9C\xC1a\th\x81a\r\x85V[\x88\x87\x14\x15\x80a\twWP\x88\x85\x14\x15[\x15a\t\xA9W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x8A\x90R`$\x81\x01\x86\x90R`D\x81\x01\x88\x90R`d\x01a\x08mV[_a\t\xBA\x8B\x8B\x8B\x8B\x8B\x8B\x8B\x8Ba\n\xF2V[\x90Pa\t\xC6\x81\x84a\r\x92V[_[\x8A\x81\x10\x15a\n{W\x80\x82\x7FL\xF4A\x0C\xC5p@\xE4Hb\xEF\x0FE\xF3\xDDZ^\x02\xDB\x8E\xB8\xAD\xD6H\xD4\xB0\xE26\xF1\xD0}\xCA\x8E\x8E\x85\x81\x81\x10a\n\x05Wa\n\x05a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\n\x1A\x91\x90a\x17\xA4V[\x8D\x8D\x86\x81\x81\x10a\n,Wa\n,a\x17\x90V[\x90P` \x02\x015\x8C\x8C\x87\x81\x81\x10a\nEWa\nEa\x17\x90V[\x90P` \x02\x81\x01\x90a\nW\x91\x90a\x17\xBDV[\x8C\x8B`@Qa\nk\x96\x95\x94\x93\x92\x91\x90a\x17-V[`@Q\x80\x91\x03\x90\xA3`\x01\x01a\t\xC8V[P\x83\x15a\n\xBDW\x80\x7F \xFD\xA5\xFD'\xA1\xEA{\xF5\xB9V\x7F\x14:\xC5G\x0B\xB0Y7J'\xE8\xF6|\xB4O\x94om\x03\x87\x85`@Qa\n\xB4\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA2[PPPPPPPPPPPV[_\x91\x82R` \x82\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[_\x88\x88\x88\x88\x88\x88\x88\x88`@Q` \x01a\x0B\x12\x98\x97\x96\x95\x94\x93\x92\x91\x90a\x18\x93V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 \x90P\x98\x97PPPPPPPPV[\x7F\xFDd<rq\x0Cc\xC0\x18\x02Y\xAB\xA6\xB2\xD0TQ\xE3Y\x1A$\xE5\x8Bb#\x93x\x08W&\xF7\x83a\x0B`\x81a\r\x85V[a\x0Bi\x82a\x08\0V[a\x0B\xA5W\x81a\x0Bx`\x02a\x10iV[a\x0B\x82`\x01a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x93\x90\x93R\x17`$\x82\x01R`D\x01a\x08mV[_\x82\x81R`\x01` R`@\x80\x82 \x82\x90UQ\x83\x91\x7F\xBA\xA1\xEB\"\xF2\xA4\x92\xBA\x1A_\xEAa\xB8\xDFM'\xC6\xC8\xB5\xF3\x97\x1Ec\xBBX\xFA\x14\xFFr\xEE\xDBp\x91\xA2PPV[_\x82\x81R` \x81\x90R`@\x90 `\x01\x01Ta\x0B\xFA\x81a\r\x85V[a\x07\x9E\x83\x83a\x10\0V[\x7F\xD8\xAA\x0F1\x94\x97\x1A*\x11fy\xF7\xC2\t\x0Fi9\xC8\xD4\xE0\x1A*\x8D~A\xD5^SQF\x9Eca\x0C/\x81_a\n\xCAV[a\x0C=Wa\x0C=\x813a\x0EGV[\x87\x86\x14\x15\x80a\x0CLWP\x87\x84\x14\x15[\x15a\x0C~W`@Q`\x01bO\xCD\xEF`\xE0\x1B\x03\x19\x81R`\x04\x81\x01\x89\x90R`$\x81\x01\x85\x90R`D\x81\x01\x87\x90R`d\x01a\x08mV[_a\x0C\x8F\x8A\x8A\x8A\x8A\x8A\x8A\x8A\x8Aa\n\xF2V[\x90Pa\x0C\x9B\x81\x85a\x0E\x84V[_[\x89\x81\x10\x15a\roW_\x8B\x8B\x83\x81\x81\x10a\x0C\xB8Wa\x0C\xB8a\x17\x90V[\x90P` \x02\x01` \x81\x01\x90a\x0C\xCD\x91\x90a\x17\xA4V[\x90P_\x8A\x8A\x84\x81\x81\x10a\x0C\xE2Wa\x0C\xE2a\x17\x90V[\x90P` \x02\x015\x90P6_\x8A\x8A\x86\x81\x81\x10a\x0C\xFFWa\x0C\xFFa\x17\x90V[\x90P` \x02\x81\x01\x90a\r\x11\x91\x90a\x17\xBDV[\x91P\x91Pa\r!\x84\x84\x84\x84a\x0E\xD2V[\x84\x86\x7F\xC2a~\xFAi\xBA\xB6g\x82\xFA!\x95CqC8H\x9CN\x9E\x17\x82qV\n\x91\xB8,?a+X\x86\x86\x86\x86`@Qa\rX\x94\x93\x92\x91\x90a\x17iV[`@Q\x80\x91\x03\x90\xA3PPPP\x80`\x01\x01\x90Pa\x0C\x9DV[Pa\ry\x81a\x0FFV[PPPPPPPPPPV[a\r\x8F\x813a\x0EGV[PV[a\r\x9B\x82a\x07\xA4V[\x15a\r\xCCW\x81a\r\xAA_a\x10iV[`@Qc^\xAD\x8E\xB5`\xE0\x1B\x81R`\x04\x81\x01\x92\x90\x92R`$\x82\x01R`D\x01a\x08mV[_a\r\xD6`\x02T\x90V[\x90P\x80\x82\x10\x15a\x0E\x03W`@QcT3f\t`\xE0\x1B\x81R`\x04\x81\x01\x83\x90R`$\x81\x01\x82\x90R`D\x01a\x08mV[a\x0E\r\x82Ba\x192V[_\x93\x84R`\x01` R`@\x90\x93 \x92\x90\x92UPPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16c\x02q\x18\x97`\xE5\x1B\x14\x80a\x06\x95WPa\x06\x95\x82a\x10\x8BV[a\x0EQ\x82\x82a\n\xCAV[a\x0E\x80W`@Qc\xE2Q}?`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x81\x01\x83\x90R`D\x01a\x08mV[PPV[a\x0E\x8D\x82a\x07MV[a\x0E\x9CW\x81a\r\xAA`\x02a\x10iV[\x80\x15\x80\x15\x90a\x0E\xB1WPa\x0E\xAF\x81a\x07rV[\x15[\x15a\x0E\x80W`@Qc\x12\x154\xC3`\xE3\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x08mV[__\x85`\x01`\x01`\xA0\x1B\x03\x16\x85\x85\x85`@Qa\x0E\xEF\x92\x91\x90a\x19QV[_`@Q\x80\x83\x03\x81\x85\x87Z\xF1\x92PPP=\x80_\x81\x14a\x0F)W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x0F.V[``\x91P[P\x91P\x91Pa\x0F=\x82\x82a\x10\xBFV[PPPPPPPV[a\x0FO\x81a\x07MV[a\x0F^W\x80a\r\xAA`\x02a\x10iV[_\x90\x81R`\x01` \x81\x90R`@\x90\x91 UV[_a\x0F|\x83\x83a\n\xCAV[a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x84R\x90\x91R\x90 \x80T`\xFF\x19\x16`\x01\x17\x90Ua\x0F\xB13\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x82`\x01`\x01`\xA0\x1B\x03\x16\x84\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r`@Q`@Q\x80\x91\x03\x90\xA4P`\x01a\x06\x95V[P_a\x06\x95V[_a\x10\x0B\x83\x83a\n\xCAV[\x15a\x0F\xF9W_\x83\x81R` \x81\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x86\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4P`\x01a\x06\x95V[_\x81`\x03\x81\x11\x15a\x10|Wa\x10|a\x13\xB1V[`\x01`\xFF\x91\x90\x91\x16\x1B\x92\x91PPV[_`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x06\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14a\x06\x95V[``\x82a\x10\xD4Wa\x10\xCF\x82a\x10\xDBV[a\x06\x95V[P\x80a\x06\x95V[\x80Q\x15a\x10\xEBW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x1AW__\xFD[\x91\x90PV[__\x83`\x1F\x84\x01\x12a\x11/W__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11EW__\xFD[` \x83\x01\x91P\x83` \x82\x85\x01\x01\x11\x15a\x11\\W__\xFD[\x92P\x92\x90PV[_______`\xC0\x88\x8A\x03\x12\x15a\x11yW__\xFD[a\x11\x82\x88a\x11\x04V[\x96P` \x88\x015\x95P`@\x88\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x11\xA3W__\xFD[a\x11\xAF\x8A\x82\x8B\x01a\x11\x1FV[\x98\x9B\x97\x9AP\x98``\x81\x015\x97`\x80\x82\x015\x97P`\xA0\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x11\xE1W__\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x08>W__\xFD[______`\xA0\x87\x89\x03\x12\x15a\x12\rW__\xFD[a\x12\x16\x87a\x11\x04V[\x95P` \x87\x015\x94P`@\x87\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x127W__\xFD[a\x12C\x89\x82\x8A\x01a\x11\x1FV[\x97\x9A\x96\x99P\x97``\x81\x015\x96`\x80\x90\x91\x015\x95P\x93PPPPV[_` \x82\x84\x03\x12\x15a\x12nW__\xFD[P5\x91\x90PV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\x12\xB1Wa\x12\xB1a\x12uV[`@R\x91\x90PV[_\x82`\x1F\x83\x01\x12a\x12\xC8W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x12\xE1Wa\x12\xE1a\x12uV[a\x12\xF4`\x1F\x82\x01`\x1F\x19\x16` \x01a\x12\x89V[\x81\x81R\x84` \x83\x86\x01\x01\x11\x15a\x13\x08W__\xFD[\x81` \x85\x01` \x83\x017_\x91\x81\x01` \x01\x91\x90\x91R\x93\x92PPPV[____`\x80\x85\x87\x03\x12\x15a\x137W__\xFD[a\x13@\x85a\x11\x04V[\x93Pa\x13N` \x86\x01a\x11\x04V[\x92P`@\x85\x015\x91P``\x85\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x13oW__\xFD[a\x13{\x87\x82\x88\x01a\x12\xB9V[\x91PP\x92\x95\x91\x94P\x92PV[__`@\x83\x85\x03\x12\x15a\x13\x98W__\xFD[\x825\x91Pa\x13\xA8` \x84\x01a\x11\x04V[\x90P\x92P\x92\x90PV[cNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[` \x81\x01`\x04\x83\x10a\x13\xE5WcNH{q`\xE0\x1B_R`!`\x04R`$_\xFD[\x91\x90R\x90V[__\x83`\x1F\x84\x01\x12a\x13\xFBW__\xFD[P\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x11W__\xFD[` \x83\x01\x91P\x83` \x82`\x05\x1B\x85\x01\x01\x11\x15a\x11\\W__\xFD[_________`\xC0\x8A\x8C\x03\x12\x15a\x14CW__\xFD[\x895`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14XW__\xFD[a\x14d\x8C\x82\x8D\x01a\x13\xEBV[\x90\x9AP\x98PP` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\x82W__\xFD[a\x14\x8E\x8C\x82\x8D\x01a\x13\xEBV[\x90\x98P\x96PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x14\xACW__\xFD[a\x14\xB8\x8C\x82\x8D\x01a\x13\xEBV[\x9A\x9D\x99\x9CP\x97\x9A\x96\x99\x97\x98``\x88\x015\x97`\x80\x81\x015\x97P`\xA0\x015\x95P\x93PPPPV[________`\xA0\x89\x8B\x03\x12\x15a\x14\xF4W__\xFD[\x885`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\tW__\xFD[a\x15\x15\x8B\x82\x8C\x01a\x13\xEBV[\x90\x99P\x97PP` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x153W__\xFD[a\x15?\x8B\x82\x8C\x01a\x13\xEBV[\x90\x97P\x95PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15]W__\xFD[a\x15i\x8B\x82\x8C\x01a\x13\xEBV[\x99\x9C\x98\x9BP\x96\x99\x95\x98\x96\x97``\x87\x015\x96`\x80\x015\x95P\x93PPPPV[_\x82`\x1F\x83\x01\x12a\x15\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a\x15\xAFWa\x15\xAFa\x12uV[\x80`\x05\x1Ba\x15\xBF` \x82\x01a\x12\x89V[\x91\x82R` \x81\x85\x01\x81\x01\x92\x90\x81\x01\x90\x86\x84\x11\x15a\x15\xDAW__\xFD[` \x86\x01\x92P[\x83\x83\x10\x15a\x15\xFCW\x825\x82R` \x92\x83\x01\x92\x90\x91\x01\x90a\x15\xE1V[\x96\x95PPPPPPV[_____`\xA0\x86\x88\x03\x12\x15a\x16\x1AW__\xFD[a\x16#\x86a\x11\x04V[\x94Pa\x161` \x87\x01a\x11\x04V[\x93P`@\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16KW__\xFD[a\x16W\x88\x82\x89\x01a\x15\x87V[\x93PP``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16rW__\xFD[a\x16~\x88\x82\x89\x01a\x15\x87V[\x92PP`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[a\x16\xA5\x88\x82\x89\x01a\x12\xB9V[\x91PP\x92\x95P\x92\x95\x90\x93PV[_____`\xA0\x86\x88\x03\x12\x15a\x16\xC6W__\xFD[a\x16\xCF\x86a\x11\x04V[\x94Pa\x16\xDD` \x87\x01a\x11\x04V[\x93P`@\x86\x015\x92P``\x86\x015\x91P`\x80\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a\x16\x99W__\xFD[\x81\x83R\x81\x81` \x85\x017P_\x82\x82\x01` \x90\x81\x01\x91\x90\x91R`\x1F\x90\x91\x01`\x1F\x19\x16\x90\x91\x01\x01\x90V[`\x01\x80`\xA0\x1B\x03\x87\x16\x81R\x85` \x82\x01R`\xA0`@\x82\x01R_a\x17T`\xA0\x83\x01\x86\x88a\x17\x05V[``\x83\x01\x94\x90\x94RP`\x80\x01R\x94\x93PPPPV[`\x01\x80`\xA0\x1B\x03\x85\x16\x81R\x83` \x82\x01R```@\x82\x01R_a\x15\xFC``\x83\x01\x84\x86a\x17\x05V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_` \x82\x84\x03\x12\x15a\x17\xB4W__\xFD[a\x08>\x82a\x11\x04V[__\x835`\x1E\x19\x846\x03\x01\x81\x12a\x17\xD2W__\xFD[\x83\x01\x805\x91P`\x01`\x01`@\x1B\x03\x82\x11\x15a\x17\xEBW__\xFD[` \x01\x91P6\x81\x90\x03\x82\x13\x15a\x11\\W__\xFD[_\x83\x83\x85R` \x85\x01\x94P` \x84`\x05\x1B\x82\x01\x01\x83_[\x86\x81\x10\x15a\x18\x87W\x83\x83\x03`\x1F\x19\x01\x88R\x8156\x87\x90\x03`\x1E\x19\x01\x81\x12a\x18;W__\xFD[\x86\x01` \x81\x01\x905`\x01`\x01`@\x1B\x03\x81\x11\x15a\x18VW__\xFD[\x806\x03\x82\x13\x15a\x18dW__\xFD[a\x18o\x85\x82\x84a\x17\x05V[` \x9A\x8B\x01\x9A\x90\x95P\x93\x90\x93\x01\x92PP`\x01\x01a\x18\x16V[P\x90\x96\x95PPPPPPV[`\xA0\x80\x82R\x81\x01\x88\x90R_\x89`\xC0\x83\x01\x82[\x8B\x81\x10\x15a\x18\xD3W`\x01`\x01`\xA0\x1B\x03a\x18\xBE\x84a\x11\x04V[\x16\x82R` \x92\x83\x01\x92\x90\x91\x01\x90`\x01\x01a\x18\xA5V[P\x83\x81\x03` \x85\x01R\x88\x81R`\x01`\x01`\xFB\x1B\x03\x89\x11\x15a\x18\xF2W__\xFD[\x88`\x05\x1B\x91P\x81\x8A` \x83\x017\x01\x82\x81\x03` \x90\x81\x01`@\x85\x01Ra\x19\x1A\x90\x82\x01\x87\x89a\x17\xFFV[``\x84\x01\x95\x90\x95RPP`\x80\x01R\x96\x95PPPPPPV[\x80\x82\x01\x80\x82\x11\x15a\x06\x95WcNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x83\x827_\x91\x01\x90\x81R\x91\x90PV\xFE\xA1dsolcC\0\x08\x1C\0\n",
1353    );
1354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1355    /**Custom error with signature `AccessControlBadConfirmation()` and selector `0x6697b232`.
1356    ```solidity
1357    error AccessControlBadConfirmation();
1358    ```*/
1359    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1360    #[derive(Clone)]
1361    pub struct AccessControlBadConfirmation {}
1362    #[allow(
1363        non_camel_case_types,
1364        non_snake_case,
1365        clippy::pub_underscore_fields,
1366        clippy::style
1367    )]
1368    const _: () = {
1369        use alloy::sol_types as alloy_sol_types;
1370        #[doc(hidden)]
1371        type UnderlyingSolTuple<'a> = ();
1372        #[doc(hidden)]
1373        type UnderlyingRustTuple<'a> = ();
1374        #[cfg(test)]
1375        #[allow(dead_code, unreachable_patterns)]
1376        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1377            match _t {
1378                alloy_sol_types::private::AssertTypeEq::<
1379                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1380                >(_) => {},
1381            }
1382        }
1383        #[automatically_derived]
1384        #[doc(hidden)]
1385        impl ::core::convert::From<AccessControlBadConfirmation> for UnderlyingRustTuple<'_> {
1386            fn from(value: AccessControlBadConfirmation) -> Self {
1387                ()
1388            }
1389        }
1390        #[automatically_derived]
1391        #[doc(hidden)]
1392        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AccessControlBadConfirmation {
1393            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1394                Self {}
1395            }
1396        }
1397        #[automatically_derived]
1398        impl alloy_sol_types::SolError for AccessControlBadConfirmation {
1399            type Parameters<'a> = UnderlyingSolTuple<'a>;
1400            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1401            const SIGNATURE: &'static str = "AccessControlBadConfirmation()";
1402            const SELECTOR: [u8; 4] = [102u8, 151u8, 178u8, 50u8];
1403            #[inline]
1404            fn new<'a>(
1405                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1406            ) -> Self {
1407                tuple.into()
1408            }
1409            #[inline]
1410            fn tokenize(&self) -> Self::Token<'_> {
1411                ()
1412            }
1413        }
1414    };
1415    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1416    /**Custom error with signature `AccessControlUnauthorizedAccount(address,bytes32)` and selector `0xe2517d3f`.
1417    ```solidity
1418    error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);
1419    ```*/
1420    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1421    #[derive(Clone)]
1422    pub struct AccessControlUnauthorizedAccount {
1423        #[allow(missing_docs)]
1424        pub account: alloy::sol_types::private::Address,
1425        #[allow(missing_docs)]
1426        pub neededRole: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Address,
1439            alloy::sol_types::sol_data::FixedBytes<32>,
1440        );
1441        #[doc(hidden)]
1442        type UnderlyingRustTuple<'a> = (
1443            alloy::sol_types::private::Address,
1444            alloy::sol_types::private::FixedBytes<32>,
1445        );
1446        #[cfg(test)]
1447        #[allow(dead_code, unreachable_patterns)]
1448        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1449            match _t {
1450                alloy_sol_types::private::AssertTypeEq::<
1451                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1452                >(_) => {},
1453            }
1454        }
1455        #[automatically_derived]
1456        #[doc(hidden)]
1457        impl ::core::convert::From<AccessControlUnauthorizedAccount> for UnderlyingRustTuple<'_> {
1458            fn from(value: AccessControlUnauthorizedAccount) -> Self {
1459                (value.account, value.neededRole)
1460            }
1461        }
1462        #[automatically_derived]
1463        #[doc(hidden)]
1464        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AccessControlUnauthorizedAccount {
1465            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1466                Self {
1467                    account: tuple.0,
1468                    neededRole: tuple.1,
1469                }
1470            }
1471        }
1472        #[automatically_derived]
1473        impl alloy_sol_types::SolError for AccessControlUnauthorizedAccount {
1474            type Parameters<'a> = UnderlyingSolTuple<'a>;
1475            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1476            const SIGNATURE: &'static str = "AccessControlUnauthorizedAccount(address,bytes32)";
1477            const SELECTOR: [u8; 4] = [226u8, 81u8, 125u8, 63u8];
1478            #[inline]
1479            fn new<'a>(
1480                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1481            ) -> Self {
1482                tuple.into()
1483            }
1484            #[inline]
1485            fn tokenize(&self) -> Self::Token<'_> {
1486                (
1487                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1488                        &self.account,
1489                    ),
1490                    <alloy::sol_types::sol_data::FixedBytes<
1491                        32,
1492                    > as alloy_sol_types::SolType>::tokenize(&self.neededRole),
1493                )
1494            }
1495        }
1496    };
1497    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1498    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
1499    ```solidity
1500    error FailedInnerCall();
1501    ```*/
1502    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1503    #[derive(Clone)]
1504    pub struct FailedInnerCall {}
1505    #[allow(
1506        non_camel_case_types,
1507        non_snake_case,
1508        clippy::pub_underscore_fields,
1509        clippy::style
1510    )]
1511    const _: () = {
1512        use alloy::sol_types as alloy_sol_types;
1513        #[doc(hidden)]
1514        type UnderlyingSolTuple<'a> = ();
1515        #[doc(hidden)]
1516        type UnderlyingRustTuple<'a> = ();
1517        #[cfg(test)]
1518        #[allow(dead_code, unreachable_patterns)]
1519        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1520            match _t {
1521                alloy_sol_types::private::AssertTypeEq::<
1522                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1523                >(_) => {},
1524            }
1525        }
1526        #[automatically_derived]
1527        #[doc(hidden)]
1528        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
1529            fn from(value: FailedInnerCall) -> Self {
1530                ()
1531            }
1532        }
1533        #[automatically_derived]
1534        #[doc(hidden)]
1535        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
1536            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1537                Self {}
1538            }
1539        }
1540        #[automatically_derived]
1541        impl alloy_sol_types::SolError for FailedInnerCall {
1542            type Parameters<'a> = UnderlyingSolTuple<'a>;
1543            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1544            const SIGNATURE: &'static str = "FailedInnerCall()";
1545            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
1546            #[inline]
1547            fn new<'a>(
1548                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1549            ) -> Self {
1550                tuple.into()
1551            }
1552            #[inline]
1553            fn tokenize(&self) -> Self::Token<'_> {
1554                ()
1555            }
1556        }
1557    };
1558    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1559    /**Custom error with signature `TimelockInsufficientDelay(uint256,uint256)` and selector `0x54336609`.
1560    ```solidity
1561    error TimelockInsufficientDelay(uint256 delay, uint256 minDelay);
1562    ```*/
1563    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1564    #[derive(Clone)]
1565    pub struct TimelockInsufficientDelay {
1566        #[allow(missing_docs)]
1567        pub delay: alloy::sol_types::private::primitives::aliases::U256,
1568        #[allow(missing_docs)]
1569        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
1570    }
1571    #[allow(
1572        non_camel_case_types,
1573        non_snake_case,
1574        clippy::pub_underscore_fields,
1575        clippy::style
1576    )]
1577    const _: () = {
1578        use alloy::sol_types as alloy_sol_types;
1579        #[doc(hidden)]
1580        type UnderlyingSolTuple<'a> = (
1581            alloy::sol_types::sol_data::Uint<256>,
1582            alloy::sol_types::sol_data::Uint<256>,
1583        );
1584        #[doc(hidden)]
1585        type UnderlyingRustTuple<'a> = (
1586            alloy::sol_types::private::primitives::aliases::U256,
1587            alloy::sol_types::private::primitives::aliases::U256,
1588        );
1589        #[cfg(test)]
1590        #[allow(dead_code, unreachable_patterns)]
1591        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1592            match _t {
1593                alloy_sol_types::private::AssertTypeEq::<
1594                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1595                >(_) => {},
1596            }
1597        }
1598        #[automatically_derived]
1599        #[doc(hidden)]
1600        impl ::core::convert::From<TimelockInsufficientDelay> for UnderlyingRustTuple<'_> {
1601            fn from(value: TimelockInsufficientDelay) -> Self {
1602                (value.delay, value.minDelay)
1603            }
1604        }
1605        #[automatically_derived]
1606        #[doc(hidden)]
1607        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimelockInsufficientDelay {
1608            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1609                Self {
1610                    delay: tuple.0,
1611                    minDelay: tuple.1,
1612                }
1613            }
1614        }
1615        #[automatically_derived]
1616        impl alloy_sol_types::SolError for TimelockInsufficientDelay {
1617            type Parameters<'a> = UnderlyingSolTuple<'a>;
1618            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1619            const SIGNATURE: &'static str = "TimelockInsufficientDelay(uint256,uint256)";
1620            const SELECTOR: [u8; 4] = [84u8, 51u8, 102u8, 9u8];
1621            #[inline]
1622            fn new<'a>(
1623                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1624            ) -> Self {
1625                tuple.into()
1626            }
1627            #[inline]
1628            fn tokenize(&self) -> Self::Token<'_> {
1629                (
1630                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
1631                        &self.delay,
1632                    ),
1633                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
1634                        &self.minDelay,
1635                    ),
1636                )
1637            }
1638        }
1639    };
1640    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1641    /**Custom error with signature `TimelockInvalidOperationLength(uint256,uint256,uint256)` and selector `0xffb03211`.
1642    ```solidity
1643    error TimelockInvalidOperationLength(uint256 targets, uint256 payloads, uint256 values);
1644    ```*/
1645    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1646    #[derive(Clone)]
1647    pub struct TimelockInvalidOperationLength {
1648        #[allow(missing_docs)]
1649        pub targets: alloy::sol_types::private::primitives::aliases::U256,
1650        #[allow(missing_docs)]
1651        pub payloads: alloy::sol_types::private::primitives::aliases::U256,
1652        #[allow(missing_docs)]
1653        pub values: alloy::sol_types::private::primitives::aliases::U256,
1654    }
1655    #[allow(
1656        non_camel_case_types,
1657        non_snake_case,
1658        clippy::pub_underscore_fields,
1659        clippy::style
1660    )]
1661    const _: () = {
1662        use alloy::sol_types as alloy_sol_types;
1663        #[doc(hidden)]
1664        type UnderlyingSolTuple<'a> = (
1665            alloy::sol_types::sol_data::Uint<256>,
1666            alloy::sol_types::sol_data::Uint<256>,
1667            alloy::sol_types::sol_data::Uint<256>,
1668        );
1669        #[doc(hidden)]
1670        type UnderlyingRustTuple<'a> = (
1671            alloy::sol_types::private::primitives::aliases::U256,
1672            alloy::sol_types::private::primitives::aliases::U256,
1673            alloy::sol_types::private::primitives::aliases::U256,
1674        );
1675        #[cfg(test)]
1676        #[allow(dead_code, unreachable_patterns)]
1677        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1678            match _t {
1679                alloy_sol_types::private::AssertTypeEq::<
1680                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1681                >(_) => {},
1682            }
1683        }
1684        #[automatically_derived]
1685        #[doc(hidden)]
1686        impl ::core::convert::From<TimelockInvalidOperationLength> for UnderlyingRustTuple<'_> {
1687            fn from(value: TimelockInvalidOperationLength) -> Self {
1688                (value.targets, value.payloads, value.values)
1689            }
1690        }
1691        #[automatically_derived]
1692        #[doc(hidden)]
1693        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimelockInvalidOperationLength {
1694            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1695                Self {
1696                    targets: tuple.0,
1697                    payloads: tuple.1,
1698                    values: tuple.2,
1699                }
1700            }
1701        }
1702        #[automatically_derived]
1703        impl alloy_sol_types::SolError for TimelockInvalidOperationLength {
1704            type Parameters<'a> = UnderlyingSolTuple<'a>;
1705            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1706            const SIGNATURE: &'static str =
1707                "TimelockInvalidOperationLength(uint256,uint256,uint256)";
1708            const SELECTOR: [u8; 4] = [255u8, 176u8, 50u8, 17u8];
1709            #[inline]
1710            fn new<'a>(
1711                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1712            ) -> Self {
1713                tuple.into()
1714            }
1715            #[inline]
1716            fn tokenize(&self) -> Self::Token<'_> {
1717                (
1718                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
1719                        &self.targets,
1720                    ),
1721                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
1722                        &self.payloads,
1723                    ),
1724                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
1725                        &self.values,
1726                    ),
1727                )
1728            }
1729        }
1730    };
1731    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1732    /**Custom error with signature `TimelockUnauthorizedCaller(address)` and selector `0xe2850c59`.
1733    ```solidity
1734    error TimelockUnauthorizedCaller(address caller);
1735    ```*/
1736    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1737    #[derive(Clone)]
1738    pub struct TimelockUnauthorizedCaller {
1739        #[allow(missing_docs)]
1740        pub caller: alloy::sol_types::private::Address,
1741    }
1742    #[allow(
1743        non_camel_case_types,
1744        non_snake_case,
1745        clippy::pub_underscore_fields,
1746        clippy::style
1747    )]
1748    const _: () = {
1749        use alloy::sol_types as alloy_sol_types;
1750        #[doc(hidden)]
1751        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1752        #[doc(hidden)]
1753        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1754        #[cfg(test)]
1755        #[allow(dead_code, unreachable_patterns)]
1756        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1757            match _t {
1758                alloy_sol_types::private::AssertTypeEq::<
1759                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1760                >(_) => {},
1761            }
1762        }
1763        #[automatically_derived]
1764        #[doc(hidden)]
1765        impl ::core::convert::From<TimelockUnauthorizedCaller> for UnderlyingRustTuple<'_> {
1766            fn from(value: TimelockUnauthorizedCaller) -> Self {
1767                (value.caller,)
1768            }
1769        }
1770        #[automatically_derived]
1771        #[doc(hidden)]
1772        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimelockUnauthorizedCaller {
1773            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1774                Self { caller: tuple.0 }
1775            }
1776        }
1777        #[automatically_derived]
1778        impl alloy_sol_types::SolError for TimelockUnauthorizedCaller {
1779            type Parameters<'a> = UnderlyingSolTuple<'a>;
1780            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1781            const SIGNATURE: &'static str = "TimelockUnauthorizedCaller(address)";
1782            const SELECTOR: [u8; 4] = [226u8, 133u8, 12u8, 89u8];
1783            #[inline]
1784            fn new<'a>(
1785                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1786            ) -> Self {
1787                tuple.into()
1788            }
1789            #[inline]
1790            fn tokenize(&self) -> Self::Token<'_> {
1791                (
1792                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1793                        &self.caller,
1794                    ),
1795                )
1796            }
1797        }
1798    };
1799    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1800    /**Custom error with signature `TimelockUnexecutedPredecessor(bytes32)` and selector `0x90a9a618`.
1801    ```solidity
1802    error TimelockUnexecutedPredecessor(bytes32 predecessorId);
1803    ```*/
1804    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1805    #[derive(Clone)]
1806    pub struct TimelockUnexecutedPredecessor {
1807        #[allow(missing_docs)]
1808        pub predecessorId: alloy::sol_types::private::FixedBytes<32>,
1809    }
1810    #[allow(
1811        non_camel_case_types,
1812        non_snake_case,
1813        clippy::pub_underscore_fields,
1814        clippy::style
1815    )]
1816    const _: () = {
1817        use alloy::sol_types as alloy_sol_types;
1818        #[doc(hidden)]
1819        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
1820        #[doc(hidden)]
1821        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
1822        #[cfg(test)]
1823        #[allow(dead_code, unreachable_patterns)]
1824        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1825            match _t {
1826                alloy_sol_types::private::AssertTypeEq::<
1827                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1828                >(_) => {},
1829            }
1830        }
1831        #[automatically_derived]
1832        #[doc(hidden)]
1833        impl ::core::convert::From<TimelockUnexecutedPredecessor> for UnderlyingRustTuple<'_> {
1834            fn from(value: TimelockUnexecutedPredecessor) -> Self {
1835                (value.predecessorId,)
1836            }
1837        }
1838        #[automatically_derived]
1839        #[doc(hidden)]
1840        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimelockUnexecutedPredecessor {
1841            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1842                Self {
1843                    predecessorId: tuple.0,
1844                }
1845            }
1846        }
1847        #[automatically_derived]
1848        impl alloy_sol_types::SolError for TimelockUnexecutedPredecessor {
1849            type Parameters<'a> = UnderlyingSolTuple<'a>;
1850            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1851            const SIGNATURE: &'static str = "TimelockUnexecutedPredecessor(bytes32)";
1852            const SELECTOR: [u8; 4] = [144u8, 169u8, 166u8, 24u8];
1853            #[inline]
1854            fn new<'a>(
1855                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1856            ) -> Self {
1857                tuple.into()
1858            }
1859            #[inline]
1860            fn tokenize(&self) -> Self::Token<'_> {
1861                (
1862                    <alloy::sol_types::sol_data::FixedBytes<
1863                        32,
1864                    > as alloy_sol_types::SolType>::tokenize(&self.predecessorId),
1865                )
1866            }
1867        }
1868    };
1869    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1870    /**Custom error with signature `TimelockUnexpectedOperationState(bytes32,bytes32)` and selector `0x5ead8eb5`.
1871    ```solidity
1872    error TimelockUnexpectedOperationState(bytes32 operationId, bytes32 expectedStates);
1873    ```*/
1874    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1875    #[derive(Clone)]
1876    pub struct TimelockUnexpectedOperationState {
1877        #[allow(missing_docs)]
1878        pub operationId: alloy::sol_types::private::FixedBytes<32>,
1879        #[allow(missing_docs)]
1880        pub expectedStates: alloy::sol_types::private::FixedBytes<32>,
1881    }
1882    #[allow(
1883        non_camel_case_types,
1884        non_snake_case,
1885        clippy::pub_underscore_fields,
1886        clippy::style
1887    )]
1888    const _: () = {
1889        use alloy::sol_types as alloy_sol_types;
1890        #[doc(hidden)]
1891        type UnderlyingSolTuple<'a> = (
1892            alloy::sol_types::sol_data::FixedBytes<32>,
1893            alloy::sol_types::sol_data::FixedBytes<32>,
1894        );
1895        #[doc(hidden)]
1896        type UnderlyingRustTuple<'a> = (
1897            alloy::sol_types::private::FixedBytes<32>,
1898            alloy::sol_types::private::FixedBytes<32>,
1899        );
1900        #[cfg(test)]
1901        #[allow(dead_code, unreachable_patterns)]
1902        fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
1903            match _t {
1904                alloy_sol_types::private::AssertTypeEq::<
1905                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1906                >(_) => {},
1907            }
1908        }
1909        #[automatically_derived]
1910        #[doc(hidden)]
1911        impl ::core::convert::From<TimelockUnexpectedOperationState> for UnderlyingRustTuple<'_> {
1912            fn from(value: TimelockUnexpectedOperationState) -> Self {
1913                (value.operationId, value.expectedStates)
1914            }
1915        }
1916        #[automatically_derived]
1917        #[doc(hidden)]
1918        impl ::core::convert::From<UnderlyingRustTuple<'_>> for TimelockUnexpectedOperationState {
1919            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1920                Self {
1921                    operationId: tuple.0,
1922                    expectedStates: tuple.1,
1923                }
1924            }
1925        }
1926        #[automatically_derived]
1927        impl alloy_sol_types::SolError for TimelockUnexpectedOperationState {
1928            type Parameters<'a> = UnderlyingSolTuple<'a>;
1929            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
1930            const SIGNATURE: &'static str = "TimelockUnexpectedOperationState(bytes32,bytes32)";
1931            const SELECTOR: [u8; 4] = [94u8, 173u8, 142u8, 181u8];
1932            #[inline]
1933            fn new<'a>(
1934                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1935            ) -> Self {
1936                tuple.into()
1937            }
1938            #[inline]
1939            fn tokenize(&self) -> Self::Token<'_> {
1940                (
1941                    <alloy::sol_types::sol_data::FixedBytes<
1942                        32,
1943                    > as alloy_sol_types::SolType>::tokenize(&self.operationId),
1944                    <alloy::sol_types::sol_data::FixedBytes<
1945                        32,
1946                    > as alloy_sol_types::SolType>::tokenize(&self.expectedStates),
1947                )
1948            }
1949        }
1950    };
1951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1952    /**Event with signature `CallExecuted(bytes32,uint256,address,uint256,bytes)` and selector `0xc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b58`.
1953    ```solidity
1954    event CallExecuted(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data);
1955    ```*/
1956    #[allow(
1957        non_camel_case_types,
1958        non_snake_case,
1959        clippy::pub_underscore_fields,
1960        clippy::style
1961    )]
1962    #[derive(Clone)]
1963    pub struct CallExecuted {
1964        #[allow(missing_docs)]
1965        pub id: alloy::sol_types::private::FixedBytes<32>,
1966        #[allow(missing_docs)]
1967        pub index: alloy::sol_types::private::primitives::aliases::U256,
1968        #[allow(missing_docs)]
1969        pub target: alloy::sol_types::private::Address,
1970        #[allow(missing_docs)]
1971        pub value: alloy::sol_types::private::primitives::aliases::U256,
1972        #[allow(missing_docs)]
1973        pub data: alloy::sol_types::private::Bytes,
1974    }
1975    #[allow(
1976        non_camel_case_types,
1977        non_snake_case,
1978        clippy::pub_underscore_fields,
1979        clippy::style
1980    )]
1981    const _: () = {
1982        use alloy::sol_types as alloy_sol_types;
1983        #[automatically_derived]
1984        impl alloy_sol_types::SolEvent for CallExecuted {
1985            type DataTuple<'a> = (
1986                alloy::sol_types::sol_data::Address,
1987                alloy::sol_types::sol_data::Uint<256>,
1988                alloy::sol_types::sol_data::Bytes,
1989            );
1990            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
1991            type TopicList = (
1992                alloy_sol_types::sol_data::FixedBytes<32>,
1993                alloy::sol_types::sol_data::FixedBytes<32>,
1994                alloy::sol_types::sol_data::Uint<256>,
1995            );
1996            const SIGNATURE: &'static str = "CallExecuted(bytes32,uint256,address,uint256,bytes)";
1997            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
1998                alloy_sol_types::private::B256::new([
1999                    194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8, 33u8,
2000                    149u8, 67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8, 130u8, 113u8,
2001                    86u8, 10u8, 145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
2002                ]);
2003            const ANONYMOUS: bool = false;
2004            #[allow(unused_variables)]
2005            #[inline]
2006            fn new(
2007                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2008                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2009            ) -> Self {
2010                Self {
2011                    id: topics.1,
2012                    index: topics.2,
2013                    target: data.0,
2014                    value: data.1,
2015                    data: data.2,
2016                }
2017            }
2018            #[inline]
2019            fn check_signature(
2020                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2021            ) -> alloy_sol_types::Result<()> {
2022                if topics.0 != Self::SIGNATURE_HASH {
2023                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2024                        Self::SIGNATURE,
2025                        topics.0,
2026                        Self::SIGNATURE_HASH,
2027                    ));
2028                }
2029                Ok(())
2030            }
2031            #[inline]
2032            fn tokenize_body(&self) -> Self::DataToken<'_> {
2033                (
2034                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2035                        &self.target,
2036                    ),
2037                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2038                        &self.value,
2039                    ),
2040                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2041                        &self.data,
2042                    ),
2043                )
2044            }
2045            #[inline]
2046            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2047                (
2048                    Self::SIGNATURE_HASH.into(),
2049                    self.id.clone(),
2050                    self.index.clone(),
2051                )
2052            }
2053            #[inline]
2054            fn encode_topics_raw(
2055                &self,
2056                out: &mut [alloy_sol_types::abi::token::WordToken],
2057            ) -> alloy_sol_types::Result<()> {
2058                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2059                    return Err(alloy_sol_types::Error::Overrun);
2060                }
2061                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2062                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2063                    32,
2064                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2065                out[2usize] = <alloy::sol_types::sol_data::Uint<
2066                    256,
2067                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2068                Ok(())
2069            }
2070        }
2071        #[automatically_derived]
2072        impl alloy_sol_types::private::IntoLogData for CallExecuted {
2073            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2074                From::from(self)
2075            }
2076            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2077                From::from(&self)
2078            }
2079        }
2080        #[automatically_derived]
2081        impl From<&CallExecuted> for alloy_sol_types::private::LogData {
2082            #[inline]
2083            fn from(this: &CallExecuted) -> alloy_sol_types::private::LogData {
2084                alloy_sol_types::SolEvent::encode_log_data(this)
2085            }
2086        }
2087    };
2088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2089    /**Event with signature `CallSalt(bytes32,bytes32)` and selector `0x20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387`.
2090    ```solidity
2091    event CallSalt(bytes32 indexed id, bytes32 salt);
2092    ```*/
2093    #[allow(
2094        non_camel_case_types,
2095        non_snake_case,
2096        clippy::pub_underscore_fields,
2097        clippy::style
2098    )]
2099    #[derive(Clone)]
2100    pub struct CallSalt {
2101        #[allow(missing_docs)]
2102        pub id: alloy::sol_types::private::FixedBytes<32>,
2103        #[allow(missing_docs)]
2104        pub salt: alloy::sol_types::private::FixedBytes<32>,
2105    }
2106    #[allow(
2107        non_camel_case_types,
2108        non_snake_case,
2109        clippy::pub_underscore_fields,
2110        clippy::style
2111    )]
2112    const _: () = {
2113        use alloy::sol_types as alloy_sol_types;
2114        #[automatically_derived]
2115        impl alloy_sol_types::SolEvent for CallSalt {
2116            type DataTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
2117            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2118            type TopicList = (
2119                alloy_sol_types::sol_data::FixedBytes<32>,
2120                alloy::sol_types::sol_data::FixedBytes<32>,
2121            );
2122            const SIGNATURE: &'static str = "CallSalt(bytes32,bytes32)";
2123            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2124                alloy_sol_types::private::B256::new([
2125                    32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8,
2126                    127u8, 20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8, 232u8,
2127                    246u8, 124u8, 180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
2128                ]);
2129            const ANONYMOUS: bool = false;
2130            #[allow(unused_variables)]
2131            #[inline]
2132            fn new(
2133                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2134                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2135            ) -> Self {
2136                Self {
2137                    id: topics.1,
2138                    salt: data.0,
2139                }
2140            }
2141            #[inline]
2142            fn check_signature(
2143                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2144            ) -> alloy_sol_types::Result<()> {
2145                if topics.0 != Self::SIGNATURE_HASH {
2146                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2147                        Self::SIGNATURE,
2148                        topics.0,
2149                        Self::SIGNATURE_HASH,
2150                    ));
2151                }
2152                Ok(())
2153            }
2154            #[inline]
2155            fn tokenize_body(&self) -> Self::DataToken<'_> {
2156                (
2157                    <alloy::sol_types::sol_data::FixedBytes<
2158                        32,
2159                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
2160                )
2161            }
2162            #[inline]
2163            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2164                (Self::SIGNATURE_HASH.into(), self.id.clone())
2165            }
2166            #[inline]
2167            fn encode_topics_raw(
2168                &self,
2169                out: &mut [alloy_sol_types::abi::token::WordToken],
2170            ) -> alloy_sol_types::Result<()> {
2171                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2172                    return Err(alloy_sol_types::Error::Overrun);
2173                }
2174                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2175                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2176                    32,
2177                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2178                Ok(())
2179            }
2180        }
2181        #[automatically_derived]
2182        impl alloy_sol_types::private::IntoLogData for CallSalt {
2183            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2184                From::from(self)
2185            }
2186            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2187                From::from(&self)
2188            }
2189        }
2190        #[automatically_derived]
2191        impl From<&CallSalt> for alloy_sol_types::private::LogData {
2192            #[inline]
2193            fn from(this: &CallSalt) -> alloy_sol_types::private::LogData {
2194                alloy_sol_types::SolEvent::encode_log_data(this)
2195            }
2196        }
2197    };
2198    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2199    /**Event with signature `CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)` and selector `0x4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca`.
2200    ```solidity
2201    event CallScheduled(bytes32 indexed id, uint256 indexed index, address target, uint256 value, bytes data, bytes32 predecessor, uint256 delay);
2202    ```*/
2203    #[allow(
2204        non_camel_case_types,
2205        non_snake_case,
2206        clippy::pub_underscore_fields,
2207        clippy::style
2208    )]
2209    #[derive(Clone)]
2210    pub struct CallScheduled {
2211        #[allow(missing_docs)]
2212        pub id: alloy::sol_types::private::FixedBytes<32>,
2213        #[allow(missing_docs)]
2214        pub index: alloy::sol_types::private::primitives::aliases::U256,
2215        #[allow(missing_docs)]
2216        pub target: alloy::sol_types::private::Address,
2217        #[allow(missing_docs)]
2218        pub value: alloy::sol_types::private::primitives::aliases::U256,
2219        #[allow(missing_docs)]
2220        pub data: alloy::sol_types::private::Bytes,
2221        #[allow(missing_docs)]
2222        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
2223        #[allow(missing_docs)]
2224        pub delay: alloy::sol_types::private::primitives::aliases::U256,
2225    }
2226    #[allow(
2227        non_camel_case_types,
2228        non_snake_case,
2229        clippy::pub_underscore_fields,
2230        clippy::style
2231    )]
2232    const _: () = {
2233        use alloy::sol_types as alloy_sol_types;
2234        #[automatically_derived]
2235        impl alloy_sol_types::SolEvent for CallScheduled {
2236            type DataTuple<'a> = (
2237                alloy::sol_types::sol_data::Address,
2238                alloy::sol_types::sol_data::Uint<256>,
2239                alloy::sol_types::sol_data::Bytes,
2240                alloy::sol_types::sol_data::FixedBytes<32>,
2241                alloy::sol_types::sol_data::Uint<256>,
2242            );
2243            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2244            type TopicList = (
2245                alloy_sol_types::sol_data::FixedBytes<32>,
2246                alloy::sol_types::sol_data::FixedBytes<32>,
2247                alloy::sol_types::sol_data::Uint<256>,
2248            );
2249            const SIGNATURE: &'static str =
2250                "CallScheduled(bytes32,uint256,address,uint256,bytes,bytes32,uint256)";
2251            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2252                alloy_sol_types::private::B256::new([
2253                    76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8, 15u8,
2254                    69u8, 243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8, 214u8, 72u8,
2255                    212u8, 176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
2256                ]);
2257            const ANONYMOUS: bool = false;
2258            #[allow(unused_variables)]
2259            #[inline]
2260            fn new(
2261                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2262                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2263            ) -> Self {
2264                Self {
2265                    id: topics.1,
2266                    index: topics.2,
2267                    target: data.0,
2268                    value: data.1,
2269                    data: data.2,
2270                    predecessor: data.3,
2271                    delay: data.4,
2272                }
2273            }
2274            #[inline]
2275            fn check_signature(
2276                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2277            ) -> alloy_sol_types::Result<()> {
2278                if topics.0 != Self::SIGNATURE_HASH {
2279                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2280                        Self::SIGNATURE,
2281                        topics.0,
2282                        Self::SIGNATURE_HASH,
2283                    ));
2284                }
2285                Ok(())
2286            }
2287            #[inline]
2288            fn tokenize_body(&self) -> Self::DataToken<'_> {
2289                (
2290                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
2291                        &self.target,
2292                    ),
2293                    <alloy::sol_types::sol_data::Uint<
2294                        256,
2295                    > as alloy_sol_types::SolType>::tokenize(&self.value),
2296                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
2297                        &self.data,
2298                    ),
2299                    <alloy::sol_types::sol_data::FixedBytes<
2300                        32,
2301                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
2302                    <alloy::sol_types::sol_data::Uint<
2303                        256,
2304                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
2305                )
2306            }
2307            #[inline]
2308            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2309                (
2310                    Self::SIGNATURE_HASH.into(),
2311                    self.id.clone(),
2312                    self.index.clone(),
2313                )
2314            }
2315            #[inline]
2316            fn encode_topics_raw(
2317                &self,
2318                out: &mut [alloy_sol_types::abi::token::WordToken],
2319            ) -> alloy_sol_types::Result<()> {
2320                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2321                    return Err(alloy_sol_types::Error::Overrun);
2322                }
2323                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2324                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2325                    32,
2326                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2327                out[2usize] = <alloy::sol_types::sol_data::Uint<
2328                    256,
2329                > as alloy_sol_types::EventTopic>::encode_topic(&self.index);
2330                Ok(())
2331            }
2332        }
2333        #[automatically_derived]
2334        impl alloy_sol_types::private::IntoLogData for CallScheduled {
2335            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2336                From::from(self)
2337            }
2338            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2339                From::from(&self)
2340            }
2341        }
2342        #[automatically_derived]
2343        impl From<&CallScheduled> for alloy_sol_types::private::LogData {
2344            #[inline]
2345            fn from(this: &CallScheduled) -> alloy_sol_types::private::LogData {
2346                alloy_sol_types::SolEvent::encode_log_data(this)
2347            }
2348        }
2349    };
2350    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2351    /**Event with signature `Cancelled(bytes32)` and selector `0xbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb70`.
2352    ```solidity
2353    event Cancelled(bytes32 indexed id);
2354    ```*/
2355    #[allow(
2356        non_camel_case_types,
2357        non_snake_case,
2358        clippy::pub_underscore_fields,
2359        clippy::style
2360    )]
2361    #[derive(Clone)]
2362    pub struct Cancelled {
2363        #[allow(missing_docs)]
2364        pub id: alloy::sol_types::private::FixedBytes<32>,
2365    }
2366    #[allow(
2367        non_camel_case_types,
2368        non_snake_case,
2369        clippy::pub_underscore_fields,
2370        clippy::style
2371    )]
2372    const _: () = {
2373        use alloy::sol_types as alloy_sol_types;
2374        #[automatically_derived]
2375        impl alloy_sol_types::SolEvent for Cancelled {
2376            type DataTuple<'a> = ();
2377            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2378            type TopicList = (
2379                alloy_sol_types::sol_data::FixedBytes<32>,
2380                alloy::sol_types::sol_data::FixedBytes<32>,
2381            );
2382            const SIGNATURE: &'static str = "Cancelled(bytes32)";
2383            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2384                alloy_sol_types::private::B256::new([
2385                    186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8, 97u8,
2386                    184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8, 99u8, 187u8,
2387                    88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
2388                ]);
2389            const ANONYMOUS: bool = false;
2390            #[allow(unused_variables)]
2391            #[inline]
2392            fn new(
2393                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2394                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2395            ) -> Self {
2396                Self { id: topics.1 }
2397            }
2398            #[inline]
2399            fn check_signature(
2400                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2401            ) -> alloy_sol_types::Result<()> {
2402                if topics.0 != Self::SIGNATURE_HASH {
2403                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2404                        Self::SIGNATURE,
2405                        topics.0,
2406                        Self::SIGNATURE_HASH,
2407                    ));
2408                }
2409                Ok(())
2410            }
2411            #[inline]
2412            fn tokenize_body(&self) -> Self::DataToken<'_> {
2413                ()
2414            }
2415            #[inline]
2416            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2417                (Self::SIGNATURE_HASH.into(), self.id.clone())
2418            }
2419            #[inline]
2420            fn encode_topics_raw(
2421                &self,
2422                out: &mut [alloy_sol_types::abi::token::WordToken],
2423            ) -> alloy_sol_types::Result<()> {
2424                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2425                    return Err(alloy_sol_types::Error::Overrun);
2426                }
2427                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2428                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2429                    32,
2430                > as alloy_sol_types::EventTopic>::encode_topic(&self.id);
2431                Ok(())
2432            }
2433        }
2434        #[automatically_derived]
2435        impl alloy_sol_types::private::IntoLogData for Cancelled {
2436            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2437                From::from(self)
2438            }
2439            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2440                From::from(&self)
2441            }
2442        }
2443        #[automatically_derived]
2444        impl From<&Cancelled> for alloy_sol_types::private::LogData {
2445            #[inline]
2446            fn from(this: &Cancelled) -> alloy_sol_types::private::LogData {
2447                alloy_sol_types::SolEvent::encode_log_data(this)
2448            }
2449        }
2450    };
2451    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2452    /**Event with signature `MinDelayChange(uint256,uint256)` and selector `0x11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5`.
2453    ```solidity
2454    event MinDelayChange(uint256 oldDuration, uint256 newDuration);
2455    ```*/
2456    #[allow(
2457        non_camel_case_types,
2458        non_snake_case,
2459        clippy::pub_underscore_fields,
2460        clippy::style
2461    )]
2462    #[derive(Clone)]
2463    pub struct MinDelayChange {
2464        #[allow(missing_docs)]
2465        pub oldDuration: alloy::sol_types::private::primitives::aliases::U256,
2466        #[allow(missing_docs)]
2467        pub newDuration: alloy::sol_types::private::primitives::aliases::U256,
2468    }
2469    #[allow(
2470        non_camel_case_types,
2471        non_snake_case,
2472        clippy::pub_underscore_fields,
2473        clippy::style
2474    )]
2475    const _: () = {
2476        use alloy::sol_types as alloy_sol_types;
2477        #[automatically_derived]
2478        impl alloy_sol_types::SolEvent for MinDelayChange {
2479            type DataTuple<'a> = (
2480                alloy::sol_types::sol_data::Uint<256>,
2481                alloy::sol_types::sol_data::Uint<256>,
2482            );
2483            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2484            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
2485            const SIGNATURE: &'static str = "MinDelayChange(uint256,uint256)";
2486            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2487                alloy_sol_types::private::B256::new([
2488                    17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8, 127u8,
2489                    189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8, 44u8, 198u8,
2490                    214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
2491                ]);
2492            const ANONYMOUS: bool = false;
2493            #[allow(unused_variables)]
2494            #[inline]
2495            fn new(
2496                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2497                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2498            ) -> Self {
2499                Self {
2500                    oldDuration: data.0,
2501                    newDuration: data.1,
2502                }
2503            }
2504            #[inline]
2505            fn check_signature(
2506                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2507            ) -> alloy_sol_types::Result<()> {
2508                if topics.0 != Self::SIGNATURE_HASH {
2509                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2510                        Self::SIGNATURE,
2511                        topics.0,
2512                        Self::SIGNATURE_HASH,
2513                    ));
2514                }
2515                Ok(())
2516            }
2517            #[inline]
2518            fn tokenize_body(&self) -> Self::DataToken<'_> {
2519                (
2520                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2521                        &self.oldDuration,
2522                    ),
2523                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
2524                        &self.newDuration,
2525                    ),
2526                )
2527            }
2528            #[inline]
2529            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2530                (Self::SIGNATURE_HASH.into(),)
2531            }
2532            #[inline]
2533            fn encode_topics_raw(
2534                &self,
2535                out: &mut [alloy_sol_types::abi::token::WordToken],
2536            ) -> alloy_sol_types::Result<()> {
2537                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2538                    return Err(alloy_sol_types::Error::Overrun);
2539                }
2540                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2541                Ok(())
2542            }
2543        }
2544        #[automatically_derived]
2545        impl alloy_sol_types::private::IntoLogData for MinDelayChange {
2546            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2547                From::from(self)
2548            }
2549            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2550                From::from(&self)
2551            }
2552        }
2553        #[automatically_derived]
2554        impl From<&MinDelayChange> for alloy_sol_types::private::LogData {
2555            #[inline]
2556            fn from(this: &MinDelayChange) -> alloy_sol_types::private::LogData {
2557                alloy_sol_types::SolEvent::encode_log_data(this)
2558            }
2559        }
2560    };
2561    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2562    /**Event with signature `RoleAdminChanged(bytes32,bytes32,bytes32)` and selector `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff`.
2563    ```solidity
2564    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
2565    ```*/
2566    #[allow(
2567        non_camel_case_types,
2568        non_snake_case,
2569        clippy::pub_underscore_fields,
2570        clippy::style
2571    )]
2572    #[derive(Clone)]
2573    pub struct RoleAdminChanged {
2574        #[allow(missing_docs)]
2575        pub role: alloy::sol_types::private::FixedBytes<32>,
2576        #[allow(missing_docs)]
2577        pub previousAdminRole: alloy::sol_types::private::FixedBytes<32>,
2578        #[allow(missing_docs)]
2579        pub newAdminRole: alloy::sol_types::private::FixedBytes<32>,
2580    }
2581    #[allow(
2582        non_camel_case_types,
2583        non_snake_case,
2584        clippy::pub_underscore_fields,
2585        clippy::style
2586    )]
2587    const _: () = {
2588        use alloy::sol_types as alloy_sol_types;
2589        #[automatically_derived]
2590        impl alloy_sol_types::SolEvent for RoleAdminChanged {
2591            type DataTuple<'a> = ();
2592            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2593            type TopicList = (
2594                alloy_sol_types::sol_data::FixedBytes<32>,
2595                alloy::sol_types::sol_data::FixedBytes<32>,
2596                alloy::sol_types::sol_data::FixedBytes<32>,
2597                alloy::sol_types::sol_data::FixedBytes<32>,
2598            );
2599            const SIGNATURE: &'static str = "RoleAdminChanged(bytes32,bytes32,bytes32)";
2600            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2601                alloy_sol_types::private::B256::new([
2602                    189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8, 81u8,
2603                    66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8, 71u8, 92u8,
2604                    58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
2605                ]);
2606            const ANONYMOUS: bool = false;
2607            #[allow(unused_variables)]
2608            #[inline]
2609            fn new(
2610                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2611                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2612            ) -> Self {
2613                Self {
2614                    role: topics.1,
2615                    previousAdminRole: topics.2,
2616                    newAdminRole: topics.3,
2617                }
2618            }
2619            #[inline]
2620            fn check_signature(
2621                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2622            ) -> alloy_sol_types::Result<()> {
2623                if topics.0 != Self::SIGNATURE_HASH {
2624                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2625                        Self::SIGNATURE,
2626                        topics.0,
2627                        Self::SIGNATURE_HASH,
2628                    ));
2629                }
2630                Ok(())
2631            }
2632            #[inline]
2633            fn tokenize_body(&self) -> Self::DataToken<'_> {
2634                ()
2635            }
2636            #[inline]
2637            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2638                (
2639                    Self::SIGNATURE_HASH.into(),
2640                    self.role.clone(),
2641                    self.previousAdminRole.clone(),
2642                    self.newAdminRole.clone(),
2643                )
2644            }
2645            #[inline]
2646            fn encode_topics_raw(
2647                &self,
2648                out: &mut [alloy_sol_types::abi::token::WordToken],
2649            ) -> alloy_sol_types::Result<()> {
2650                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2651                    return Err(alloy_sol_types::Error::Overrun);
2652                }
2653                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2654                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2655                    32,
2656                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2657                out[2usize] = <alloy::sol_types::sol_data::FixedBytes<
2658                    32,
2659                > as alloy_sol_types::EventTopic>::encode_topic(&self.previousAdminRole);
2660                out[3usize] = <alloy::sol_types::sol_data::FixedBytes<
2661                    32,
2662                > as alloy_sol_types::EventTopic>::encode_topic(&self.newAdminRole);
2663                Ok(())
2664            }
2665        }
2666        #[automatically_derived]
2667        impl alloy_sol_types::private::IntoLogData for RoleAdminChanged {
2668            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2669                From::from(self)
2670            }
2671            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2672                From::from(&self)
2673            }
2674        }
2675        #[automatically_derived]
2676        impl From<&RoleAdminChanged> for alloy_sol_types::private::LogData {
2677            #[inline]
2678            fn from(this: &RoleAdminChanged) -> alloy_sol_types::private::LogData {
2679                alloy_sol_types::SolEvent::encode_log_data(this)
2680            }
2681        }
2682    };
2683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2684    /**Event with signature `RoleGranted(bytes32,address,address)` and selector `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d`.
2685    ```solidity
2686    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
2687    ```*/
2688    #[allow(
2689        non_camel_case_types,
2690        non_snake_case,
2691        clippy::pub_underscore_fields,
2692        clippy::style
2693    )]
2694    #[derive(Clone)]
2695    pub struct RoleGranted {
2696        #[allow(missing_docs)]
2697        pub role: alloy::sol_types::private::FixedBytes<32>,
2698        #[allow(missing_docs)]
2699        pub account: alloy::sol_types::private::Address,
2700        #[allow(missing_docs)]
2701        pub sender: alloy::sol_types::private::Address,
2702    }
2703    #[allow(
2704        non_camel_case_types,
2705        non_snake_case,
2706        clippy::pub_underscore_fields,
2707        clippy::style
2708    )]
2709    const _: () = {
2710        use alloy::sol_types as alloy_sol_types;
2711        #[automatically_derived]
2712        impl alloy_sol_types::SolEvent for RoleGranted {
2713            type DataTuple<'a> = ();
2714            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2715            type TopicList = (
2716                alloy_sol_types::sol_data::FixedBytes<32>,
2717                alloy::sol_types::sol_data::FixedBytes<32>,
2718                alloy::sol_types::sol_data::Address,
2719                alloy::sol_types::sol_data::Address,
2720            );
2721            const SIGNATURE: &'static str = "RoleGranted(bytes32,address,address)";
2722            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2723                alloy_sol_types::private::B256::new([
2724                    47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8, 236u8,
2725                    121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8, 64u8, 48u8,
2726                    69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
2727                ]);
2728            const ANONYMOUS: bool = false;
2729            #[allow(unused_variables)]
2730            #[inline]
2731            fn new(
2732                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2733                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2734            ) -> Self {
2735                Self {
2736                    role: topics.1,
2737                    account: topics.2,
2738                    sender: topics.3,
2739                }
2740            }
2741            #[inline]
2742            fn check_signature(
2743                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2744            ) -> alloy_sol_types::Result<()> {
2745                if topics.0 != Self::SIGNATURE_HASH {
2746                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2747                        Self::SIGNATURE,
2748                        topics.0,
2749                        Self::SIGNATURE_HASH,
2750                    ));
2751                }
2752                Ok(())
2753            }
2754            #[inline]
2755            fn tokenize_body(&self) -> Self::DataToken<'_> {
2756                ()
2757            }
2758            #[inline]
2759            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2760                (
2761                    Self::SIGNATURE_HASH.into(),
2762                    self.role.clone(),
2763                    self.account.clone(),
2764                    self.sender.clone(),
2765                )
2766            }
2767            #[inline]
2768            fn encode_topics_raw(
2769                &self,
2770                out: &mut [alloy_sol_types::abi::token::WordToken],
2771            ) -> alloy_sol_types::Result<()> {
2772                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2773                    return Err(alloy_sol_types::Error::Overrun);
2774                }
2775                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2776                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2777                    32,
2778                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2779                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2780                    &self.account,
2781                );
2782                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2783                    &self.sender,
2784                );
2785                Ok(())
2786            }
2787        }
2788        #[automatically_derived]
2789        impl alloy_sol_types::private::IntoLogData for RoleGranted {
2790            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2791                From::from(self)
2792            }
2793            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2794                From::from(&self)
2795            }
2796        }
2797        #[automatically_derived]
2798        impl From<&RoleGranted> for alloy_sol_types::private::LogData {
2799            #[inline]
2800            fn from(this: &RoleGranted) -> alloy_sol_types::private::LogData {
2801                alloy_sol_types::SolEvent::encode_log_data(this)
2802            }
2803        }
2804    };
2805    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2806    /**Event with signature `RoleRevoked(bytes32,address,address)` and selector `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b`.
2807    ```solidity
2808    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);
2809    ```*/
2810    #[allow(
2811        non_camel_case_types,
2812        non_snake_case,
2813        clippy::pub_underscore_fields,
2814        clippy::style
2815    )]
2816    #[derive(Clone)]
2817    pub struct RoleRevoked {
2818        #[allow(missing_docs)]
2819        pub role: alloy::sol_types::private::FixedBytes<32>,
2820        #[allow(missing_docs)]
2821        pub account: alloy::sol_types::private::Address,
2822        #[allow(missing_docs)]
2823        pub sender: alloy::sol_types::private::Address,
2824    }
2825    #[allow(
2826        non_camel_case_types,
2827        non_snake_case,
2828        clippy::pub_underscore_fields,
2829        clippy::style
2830    )]
2831    const _: () = {
2832        use alloy::sol_types as alloy_sol_types;
2833        #[automatically_derived]
2834        impl alloy_sol_types::SolEvent for RoleRevoked {
2835            type DataTuple<'a> = ();
2836            type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
2837            type TopicList = (
2838                alloy_sol_types::sol_data::FixedBytes<32>,
2839                alloy::sol_types::sol_data::FixedBytes<32>,
2840                alloy::sol_types::sol_data::Address,
2841                alloy::sol_types::sol_data::Address,
2842            );
2843            const SIGNATURE: &'static str = "RoleRevoked(bytes32,address,address)";
2844            const SIGNATURE_HASH: alloy_sol_types::private::B256 =
2845                alloy_sol_types::private::B256::new([
2846                    246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8, 103u8,
2847                    11u8, 68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8, 253u8, 100u8,
2848                    235u8, 33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
2849                ]);
2850            const ANONYMOUS: bool = false;
2851            #[allow(unused_variables)]
2852            #[inline]
2853            fn new(
2854                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
2855                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
2856            ) -> Self {
2857                Self {
2858                    role: topics.1,
2859                    account: topics.2,
2860                    sender: topics.3,
2861                }
2862            }
2863            #[inline]
2864            fn check_signature(
2865                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
2866            ) -> alloy_sol_types::Result<()> {
2867                if topics.0 != Self::SIGNATURE_HASH {
2868                    return Err(alloy_sol_types::Error::invalid_event_signature_hash(
2869                        Self::SIGNATURE,
2870                        topics.0,
2871                        Self::SIGNATURE_HASH,
2872                    ));
2873                }
2874                Ok(())
2875            }
2876            #[inline]
2877            fn tokenize_body(&self) -> Self::DataToken<'_> {
2878                ()
2879            }
2880            #[inline]
2881            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
2882                (
2883                    Self::SIGNATURE_HASH.into(),
2884                    self.role.clone(),
2885                    self.account.clone(),
2886                    self.sender.clone(),
2887                )
2888            }
2889            #[inline]
2890            fn encode_topics_raw(
2891                &self,
2892                out: &mut [alloy_sol_types::abi::token::WordToken],
2893            ) -> alloy_sol_types::Result<()> {
2894                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
2895                    return Err(alloy_sol_types::Error::Overrun);
2896                }
2897                out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
2898                out[1usize] = <alloy::sol_types::sol_data::FixedBytes<
2899                    32,
2900                > as alloy_sol_types::EventTopic>::encode_topic(&self.role);
2901                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2902                    &self.account,
2903                );
2904                out[3usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
2905                    &self.sender,
2906                );
2907                Ok(())
2908            }
2909        }
2910        #[automatically_derived]
2911        impl alloy_sol_types::private::IntoLogData for RoleRevoked {
2912            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
2913                From::from(self)
2914            }
2915            fn into_log_data(self) -> alloy_sol_types::private::LogData {
2916                From::from(&self)
2917            }
2918        }
2919        #[automatically_derived]
2920        impl From<&RoleRevoked> for alloy_sol_types::private::LogData {
2921            #[inline]
2922            fn from(this: &RoleRevoked) -> alloy_sol_types::private::LogData {
2923                alloy_sol_types::SolEvent::encode_log_data(this)
2924            }
2925        }
2926    };
2927    /**Constructor`.
2928    ```solidity
2929    constructor(uint256 minDelay, address[] proposers, address[] executors, address admin);
2930    ```*/
2931    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2932    #[derive(Clone)]
2933    pub struct constructorCall {
2934        #[allow(missing_docs)]
2935        pub minDelay: alloy::sol_types::private::primitives::aliases::U256,
2936        #[allow(missing_docs)]
2937        pub proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
2938        #[allow(missing_docs)]
2939        pub executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
2940        #[allow(missing_docs)]
2941        pub admin: alloy::sol_types::private::Address,
2942    }
2943    const _: () = {
2944        use alloy::sol_types as alloy_sol_types;
2945        {
2946            #[doc(hidden)]
2947            type UnderlyingSolTuple<'a> = (
2948                alloy::sol_types::sol_data::Uint<256>,
2949                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
2950                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
2951                alloy::sol_types::sol_data::Address,
2952            );
2953            #[doc(hidden)]
2954            type UnderlyingRustTuple<'a> = (
2955                alloy::sol_types::private::primitives::aliases::U256,
2956                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
2957                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
2958                alloy::sol_types::private::Address,
2959            );
2960            #[cfg(test)]
2961            #[allow(dead_code, unreachable_patterns)]
2962            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
2963                match _t {
2964                    alloy_sol_types::private::AssertTypeEq::<
2965                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2966                    >(_) => {},
2967                }
2968            }
2969            #[automatically_derived]
2970            #[doc(hidden)]
2971            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
2972                fn from(value: constructorCall) -> Self {
2973                    (
2974                        value.minDelay,
2975                        value.proposers,
2976                        value.executors,
2977                        value.admin,
2978                    )
2979                }
2980            }
2981            #[automatically_derived]
2982            #[doc(hidden)]
2983            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
2984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2985                    Self {
2986                        minDelay: tuple.0,
2987                        proposers: tuple.1,
2988                        executors: tuple.2,
2989                        admin: tuple.3,
2990                    }
2991                }
2992            }
2993        }
2994        #[automatically_derived]
2995        impl alloy_sol_types::SolConstructor for constructorCall {
2996            type Parameters<'a> = (
2997                alloy::sol_types::sol_data::Uint<256>,
2998                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
2999                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3000                alloy::sol_types::sol_data::Address,
3001            );
3002            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3003            #[inline]
3004            fn new<'a>(
3005                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3006            ) -> Self {
3007                tuple.into()
3008            }
3009            #[inline]
3010            fn tokenize(&self) -> Self::Token<'_> {
3011                (
3012                    <alloy::sol_types::sol_data::Uint<
3013                        256,
3014                    > as alloy_sol_types::SolType>::tokenize(&self.minDelay),
3015                    <alloy::sol_types::sol_data::Array<
3016                        alloy::sol_types::sol_data::Address,
3017                    > as alloy_sol_types::SolType>::tokenize(&self.proposers),
3018                    <alloy::sol_types::sol_data::Array<
3019                        alloy::sol_types::sol_data::Address,
3020                    > as alloy_sol_types::SolType>::tokenize(&self.executors),
3021                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3022                        &self.admin,
3023                    ),
3024                )
3025            }
3026        }
3027    };
3028    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3029    /**Function with signature `CANCELLER_ROLE()` and selector `0xb08e51c0`.
3030    ```solidity
3031    function CANCELLER_ROLE() external view returns (bytes32);
3032    ```*/
3033    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3034    #[derive(Clone)]
3035    pub struct CANCELLER_ROLECall {}
3036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3037    ///Container type for the return parameters of the [`CANCELLER_ROLE()`](CANCELLER_ROLECall) function.
3038    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3039    #[derive(Clone)]
3040    pub struct CANCELLER_ROLEReturn {
3041        #[allow(missing_docs)]
3042        pub _0: alloy::sol_types::private::FixedBytes<32>,
3043    }
3044    #[allow(
3045        non_camel_case_types,
3046        non_snake_case,
3047        clippy::pub_underscore_fields,
3048        clippy::style
3049    )]
3050    const _: () = {
3051        use alloy::sol_types as alloy_sol_types;
3052        {
3053            #[doc(hidden)]
3054            type UnderlyingSolTuple<'a> = ();
3055            #[doc(hidden)]
3056            type UnderlyingRustTuple<'a> = ();
3057            #[cfg(test)]
3058            #[allow(dead_code, unreachable_patterns)]
3059            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3060                match _t {
3061                    alloy_sol_types::private::AssertTypeEq::<
3062                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3063                    >(_) => {},
3064                }
3065            }
3066            #[automatically_derived]
3067            #[doc(hidden)]
3068            impl ::core::convert::From<CANCELLER_ROLECall> for UnderlyingRustTuple<'_> {
3069                fn from(value: CANCELLER_ROLECall) -> Self {
3070                    ()
3071                }
3072            }
3073            #[automatically_derived]
3074            #[doc(hidden)]
3075            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CANCELLER_ROLECall {
3076                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3077                    Self {}
3078                }
3079            }
3080        }
3081        {
3082            #[doc(hidden)]
3083            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3084            #[doc(hidden)]
3085            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3086            #[cfg(test)]
3087            #[allow(dead_code, unreachable_patterns)]
3088            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3089                match _t {
3090                    alloy_sol_types::private::AssertTypeEq::<
3091                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3092                    >(_) => {},
3093                }
3094            }
3095            #[automatically_derived]
3096            #[doc(hidden)]
3097            impl ::core::convert::From<CANCELLER_ROLEReturn> for UnderlyingRustTuple<'_> {
3098                fn from(value: CANCELLER_ROLEReturn) -> Self {
3099                    (value._0,)
3100                }
3101            }
3102            #[automatically_derived]
3103            #[doc(hidden)]
3104            impl ::core::convert::From<UnderlyingRustTuple<'_>> for CANCELLER_ROLEReturn {
3105                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3106                    Self { _0: tuple.0 }
3107                }
3108            }
3109        }
3110        #[automatically_derived]
3111        impl alloy_sol_types::SolCall for CANCELLER_ROLECall {
3112            type Parameters<'a> = ();
3113            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3114            type Return = CANCELLER_ROLEReturn;
3115            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3116            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3117            const SIGNATURE: &'static str = "CANCELLER_ROLE()";
3118            const SELECTOR: [u8; 4] = [176u8, 142u8, 81u8, 192u8];
3119            #[inline]
3120            fn new<'a>(
3121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3122            ) -> Self {
3123                tuple.into()
3124            }
3125            #[inline]
3126            fn tokenize(&self) -> Self::Token<'_> {
3127                ()
3128            }
3129            #[inline]
3130            fn abi_decode_returns(
3131                data: &[u8],
3132                validate: bool,
3133            ) -> alloy_sol_types::Result<Self::Return> {
3134                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3135                    data, validate,
3136                )
3137                .map(Into::into)
3138            }
3139        }
3140    };
3141    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3142    /**Function with signature `DEFAULT_ADMIN_ROLE()` and selector `0xa217fddf`.
3143    ```solidity
3144    function DEFAULT_ADMIN_ROLE() external view returns (bytes32);
3145    ```*/
3146    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3147    #[derive(Clone)]
3148    pub struct DEFAULT_ADMIN_ROLECall {}
3149    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3150    ///Container type for the return parameters of the [`DEFAULT_ADMIN_ROLE()`](DEFAULT_ADMIN_ROLECall) function.
3151    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3152    #[derive(Clone)]
3153    pub struct DEFAULT_ADMIN_ROLEReturn {
3154        #[allow(missing_docs)]
3155        pub _0: alloy::sol_types::private::FixedBytes<32>,
3156    }
3157    #[allow(
3158        non_camel_case_types,
3159        non_snake_case,
3160        clippy::pub_underscore_fields,
3161        clippy::style
3162    )]
3163    const _: () = {
3164        use alloy::sol_types as alloy_sol_types;
3165        {
3166            #[doc(hidden)]
3167            type UnderlyingSolTuple<'a> = ();
3168            #[doc(hidden)]
3169            type UnderlyingRustTuple<'a> = ();
3170            #[cfg(test)]
3171            #[allow(dead_code, unreachable_patterns)]
3172            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3173                match _t {
3174                    alloy_sol_types::private::AssertTypeEq::<
3175                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3176                    >(_) => {},
3177                }
3178            }
3179            #[automatically_derived]
3180            #[doc(hidden)]
3181            impl ::core::convert::From<DEFAULT_ADMIN_ROLECall> for UnderlyingRustTuple<'_> {
3182                fn from(value: DEFAULT_ADMIN_ROLECall) -> Self {
3183                    ()
3184                }
3185            }
3186            #[automatically_derived]
3187            #[doc(hidden)]
3188            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEFAULT_ADMIN_ROLECall {
3189                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3190                    Self {}
3191                }
3192            }
3193        }
3194        {
3195            #[doc(hidden)]
3196            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3197            #[doc(hidden)]
3198            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3199            #[cfg(test)]
3200            #[allow(dead_code, unreachable_patterns)]
3201            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3202                match _t {
3203                    alloy_sol_types::private::AssertTypeEq::<
3204                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3205                    >(_) => {},
3206                }
3207            }
3208            #[automatically_derived]
3209            #[doc(hidden)]
3210            impl ::core::convert::From<DEFAULT_ADMIN_ROLEReturn> for UnderlyingRustTuple<'_> {
3211                fn from(value: DEFAULT_ADMIN_ROLEReturn) -> Self {
3212                    (value._0,)
3213                }
3214            }
3215            #[automatically_derived]
3216            #[doc(hidden)]
3217            impl ::core::convert::From<UnderlyingRustTuple<'_>> for DEFAULT_ADMIN_ROLEReturn {
3218                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3219                    Self { _0: tuple.0 }
3220                }
3221            }
3222        }
3223        #[automatically_derived]
3224        impl alloy_sol_types::SolCall for DEFAULT_ADMIN_ROLECall {
3225            type Parameters<'a> = ();
3226            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3227            type Return = DEFAULT_ADMIN_ROLEReturn;
3228            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3229            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3230            const SIGNATURE: &'static str = "DEFAULT_ADMIN_ROLE()";
3231            const SELECTOR: [u8; 4] = [162u8, 23u8, 253u8, 223u8];
3232            #[inline]
3233            fn new<'a>(
3234                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3235            ) -> Self {
3236                tuple.into()
3237            }
3238            #[inline]
3239            fn tokenize(&self) -> Self::Token<'_> {
3240                ()
3241            }
3242            #[inline]
3243            fn abi_decode_returns(
3244                data: &[u8],
3245                validate: bool,
3246            ) -> alloy_sol_types::Result<Self::Return> {
3247                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3248                    data, validate,
3249                )
3250                .map(Into::into)
3251            }
3252        }
3253    };
3254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3255    /**Function with signature `EXECUTOR_ROLE()` and selector `0x07bd0265`.
3256    ```solidity
3257    function EXECUTOR_ROLE() external view returns (bytes32);
3258    ```*/
3259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3260    #[derive(Clone)]
3261    pub struct EXECUTOR_ROLECall {}
3262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3263    ///Container type for the return parameters of the [`EXECUTOR_ROLE()`](EXECUTOR_ROLECall) function.
3264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3265    #[derive(Clone)]
3266    pub struct EXECUTOR_ROLEReturn {
3267        #[allow(missing_docs)]
3268        pub _0: alloy::sol_types::private::FixedBytes<32>,
3269    }
3270    #[allow(
3271        non_camel_case_types,
3272        non_snake_case,
3273        clippy::pub_underscore_fields,
3274        clippy::style
3275    )]
3276    const _: () = {
3277        use alloy::sol_types as alloy_sol_types;
3278        {
3279            #[doc(hidden)]
3280            type UnderlyingSolTuple<'a> = ();
3281            #[doc(hidden)]
3282            type UnderlyingRustTuple<'a> = ();
3283            #[cfg(test)]
3284            #[allow(dead_code, unreachable_patterns)]
3285            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3286                match _t {
3287                    alloy_sol_types::private::AssertTypeEq::<
3288                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3289                    >(_) => {},
3290                }
3291            }
3292            #[automatically_derived]
3293            #[doc(hidden)]
3294            impl ::core::convert::From<EXECUTOR_ROLECall> for UnderlyingRustTuple<'_> {
3295                fn from(value: EXECUTOR_ROLECall) -> Self {
3296                    ()
3297                }
3298            }
3299            #[automatically_derived]
3300            #[doc(hidden)]
3301            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLECall {
3302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3303                    Self {}
3304                }
3305            }
3306        }
3307        {
3308            #[doc(hidden)]
3309            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3310            #[doc(hidden)]
3311            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3312            #[cfg(test)]
3313            #[allow(dead_code, unreachable_patterns)]
3314            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3315                match _t {
3316                    alloy_sol_types::private::AssertTypeEq::<
3317                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3318                    >(_) => {},
3319                }
3320            }
3321            #[automatically_derived]
3322            #[doc(hidden)]
3323            impl ::core::convert::From<EXECUTOR_ROLEReturn> for UnderlyingRustTuple<'_> {
3324                fn from(value: EXECUTOR_ROLEReturn) -> Self {
3325                    (value._0,)
3326                }
3327            }
3328            #[automatically_derived]
3329            #[doc(hidden)]
3330            impl ::core::convert::From<UnderlyingRustTuple<'_>> for EXECUTOR_ROLEReturn {
3331                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3332                    Self { _0: tuple.0 }
3333                }
3334            }
3335        }
3336        #[automatically_derived]
3337        impl alloy_sol_types::SolCall for EXECUTOR_ROLECall {
3338            type Parameters<'a> = ();
3339            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3340            type Return = EXECUTOR_ROLEReturn;
3341            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3342            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3343            const SIGNATURE: &'static str = "EXECUTOR_ROLE()";
3344            const SELECTOR: [u8; 4] = [7u8, 189u8, 2u8, 101u8];
3345            #[inline]
3346            fn new<'a>(
3347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3348            ) -> Self {
3349                tuple.into()
3350            }
3351            #[inline]
3352            fn tokenize(&self) -> Self::Token<'_> {
3353                ()
3354            }
3355            #[inline]
3356            fn abi_decode_returns(
3357                data: &[u8],
3358                validate: bool,
3359            ) -> alloy_sol_types::Result<Self::Return> {
3360                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3361                    data, validate,
3362                )
3363                .map(Into::into)
3364            }
3365        }
3366    };
3367    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3368    /**Function with signature `PROPOSER_ROLE()` and selector `0x8f61f4f5`.
3369    ```solidity
3370    function PROPOSER_ROLE() external view returns (bytes32);
3371    ```*/
3372    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3373    #[derive(Clone)]
3374    pub struct PROPOSER_ROLECall {}
3375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3376    ///Container type for the return parameters of the [`PROPOSER_ROLE()`](PROPOSER_ROLECall) function.
3377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3378    #[derive(Clone)]
3379    pub struct PROPOSER_ROLEReturn {
3380        #[allow(missing_docs)]
3381        pub _0: alloy::sol_types::private::FixedBytes<32>,
3382    }
3383    #[allow(
3384        non_camel_case_types,
3385        non_snake_case,
3386        clippy::pub_underscore_fields,
3387        clippy::style
3388    )]
3389    const _: () = {
3390        use alloy::sol_types as alloy_sol_types;
3391        {
3392            #[doc(hidden)]
3393            type UnderlyingSolTuple<'a> = ();
3394            #[doc(hidden)]
3395            type UnderlyingRustTuple<'a> = ();
3396            #[cfg(test)]
3397            #[allow(dead_code, unreachable_patterns)]
3398            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3399                match _t {
3400                    alloy_sol_types::private::AssertTypeEq::<
3401                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3402                    >(_) => {},
3403                }
3404            }
3405            #[automatically_derived]
3406            #[doc(hidden)]
3407            impl ::core::convert::From<PROPOSER_ROLECall> for UnderlyingRustTuple<'_> {
3408                fn from(value: PROPOSER_ROLECall) -> Self {
3409                    ()
3410                }
3411            }
3412            #[automatically_derived]
3413            #[doc(hidden)]
3414            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLECall {
3415                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3416                    Self {}
3417                }
3418            }
3419        }
3420        {
3421            #[doc(hidden)]
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(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3428                match _t {
3429                    alloy_sol_types::private::AssertTypeEq::<
3430                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3431                    >(_) => {},
3432                }
3433            }
3434            #[automatically_derived]
3435            #[doc(hidden)]
3436            impl ::core::convert::From<PROPOSER_ROLEReturn> for UnderlyingRustTuple<'_> {
3437                fn from(value: PROPOSER_ROLEReturn) -> Self {
3438                    (value._0,)
3439                }
3440            }
3441            #[automatically_derived]
3442            #[doc(hidden)]
3443            impl ::core::convert::From<UnderlyingRustTuple<'_>> for PROPOSER_ROLEReturn {
3444                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3445                    Self { _0: tuple.0 }
3446                }
3447            }
3448        }
3449        #[automatically_derived]
3450        impl alloy_sol_types::SolCall for PROPOSER_ROLECall {
3451            type Parameters<'a> = ();
3452            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3453            type Return = PROPOSER_ROLEReturn;
3454            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3455            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3456            const SIGNATURE: &'static str = "PROPOSER_ROLE()";
3457            const SELECTOR: [u8; 4] = [143u8, 97u8, 244u8, 245u8];
3458            #[inline]
3459            fn new<'a>(
3460                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3461            ) -> Self {
3462                tuple.into()
3463            }
3464            #[inline]
3465            fn tokenize(&self) -> Self::Token<'_> {
3466                ()
3467            }
3468            #[inline]
3469            fn abi_decode_returns(
3470                data: &[u8],
3471                validate: bool,
3472            ) -> alloy_sol_types::Result<Self::Return> {
3473                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3474                    data, validate,
3475                )
3476                .map(Into::into)
3477            }
3478        }
3479    };
3480    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3481    /**Function with signature `cancel(bytes32)` and selector `0xc4d252f5`.
3482    ```solidity
3483    function cancel(bytes32 id) external;
3484    ```*/
3485    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3486    #[derive(Clone)]
3487    pub struct cancelCall {
3488        #[allow(missing_docs)]
3489        pub id: alloy::sol_types::private::FixedBytes<32>,
3490    }
3491    ///Container type for the return parameters of the [`cancel(bytes32)`](cancelCall) function.
3492    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3493    #[derive(Clone)]
3494    pub struct cancelReturn {}
3495    #[allow(
3496        non_camel_case_types,
3497        non_snake_case,
3498        clippy::pub_underscore_fields,
3499        clippy::style
3500    )]
3501    const _: () = {
3502        use alloy::sol_types as alloy_sol_types;
3503        {
3504            #[doc(hidden)]
3505            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3506            #[doc(hidden)]
3507            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
3508            #[cfg(test)]
3509            #[allow(dead_code, unreachable_patterns)]
3510            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3511                match _t {
3512                    alloy_sol_types::private::AssertTypeEq::<
3513                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3514                    >(_) => {},
3515                }
3516            }
3517            #[automatically_derived]
3518            #[doc(hidden)]
3519            impl ::core::convert::From<cancelCall> for UnderlyingRustTuple<'_> {
3520                fn from(value: cancelCall) -> Self {
3521                    (value.id,)
3522                }
3523            }
3524            #[automatically_derived]
3525            #[doc(hidden)]
3526            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelCall {
3527                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3528                    Self { id: tuple.0 }
3529                }
3530            }
3531        }
3532        {
3533            #[doc(hidden)]
3534            type UnderlyingSolTuple<'a> = ();
3535            #[doc(hidden)]
3536            type UnderlyingRustTuple<'a> = ();
3537            #[cfg(test)]
3538            #[allow(dead_code, unreachable_patterns)]
3539            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3540                match _t {
3541                    alloy_sol_types::private::AssertTypeEq::<
3542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3543                    >(_) => {},
3544                }
3545            }
3546            #[automatically_derived]
3547            #[doc(hidden)]
3548            impl ::core::convert::From<cancelReturn> for UnderlyingRustTuple<'_> {
3549                fn from(value: cancelReturn) -> Self {
3550                    ()
3551                }
3552            }
3553            #[automatically_derived]
3554            #[doc(hidden)]
3555            impl ::core::convert::From<UnderlyingRustTuple<'_>> for cancelReturn {
3556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3557                    Self {}
3558                }
3559            }
3560        }
3561        #[automatically_derived]
3562        impl alloy_sol_types::SolCall for cancelCall {
3563            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
3564            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3565            type Return = cancelReturn;
3566            type ReturnTuple<'a> = ();
3567            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3568            const SIGNATURE: &'static str = "cancel(bytes32)";
3569            const SELECTOR: [u8; 4] = [196u8, 210u8, 82u8, 245u8];
3570            #[inline]
3571            fn new<'a>(
3572                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3573            ) -> Self {
3574                tuple.into()
3575            }
3576            #[inline]
3577            fn tokenize(&self) -> Self::Token<'_> {
3578                (
3579                    <alloy::sol_types::sol_data::FixedBytes<
3580                        32,
3581                    > as alloy_sol_types::SolType>::tokenize(&self.id),
3582                )
3583            }
3584            #[inline]
3585            fn abi_decode_returns(
3586                data: &[u8],
3587                validate: bool,
3588            ) -> alloy_sol_types::Result<Self::Return> {
3589                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3590                    data, validate,
3591                )
3592                .map(Into::into)
3593            }
3594        }
3595    };
3596    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3597    /**Function with signature `execute(address,uint256,bytes,bytes32,bytes32)` and selector `0x134008d3`.
3598    ```solidity
3599    function execute(address target, uint256 value, bytes memory payload, bytes32 predecessor, bytes32 salt) external payable;
3600    ```*/
3601    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3602    #[derive(Clone)]
3603    pub struct executeCall {
3604        #[allow(missing_docs)]
3605        pub target: alloy::sol_types::private::Address,
3606        #[allow(missing_docs)]
3607        pub value: alloy::sol_types::private::primitives::aliases::U256,
3608        #[allow(missing_docs)]
3609        pub payload: alloy::sol_types::private::Bytes,
3610        #[allow(missing_docs)]
3611        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
3612        #[allow(missing_docs)]
3613        pub salt: alloy::sol_types::private::FixedBytes<32>,
3614    }
3615    ///Container type for the return parameters of the [`execute(address,uint256,bytes,bytes32,bytes32)`](executeCall) function.
3616    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3617    #[derive(Clone)]
3618    pub struct executeReturn {}
3619    #[allow(
3620        non_camel_case_types,
3621        non_snake_case,
3622        clippy::pub_underscore_fields,
3623        clippy::style
3624    )]
3625    const _: () = {
3626        use alloy::sol_types as alloy_sol_types;
3627        {
3628            #[doc(hidden)]
3629            type UnderlyingSolTuple<'a> = (
3630                alloy::sol_types::sol_data::Address,
3631                alloy::sol_types::sol_data::Uint<256>,
3632                alloy::sol_types::sol_data::Bytes,
3633                alloy::sol_types::sol_data::FixedBytes<32>,
3634                alloy::sol_types::sol_data::FixedBytes<32>,
3635            );
3636            #[doc(hidden)]
3637            type UnderlyingRustTuple<'a> = (
3638                alloy::sol_types::private::Address,
3639                alloy::sol_types::private::primitives::aliases::U256,
3640                alloy::sol_types::private::Bytes,
3641                alloy::sol_types::private::FixedBytes<32>,
3642                alloy::sol_types::private::FixedBytes<32>,
3643            );
3644            #[cfg(test)]
3645            #[allow(dead_code, unreachable_patterns)]
3646            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3647                match _t {
3648                    alloy_sol_types::private::AssertTypeEq::<
3649                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3650                    >(_) => {},
3651                }
3652            }
3653            #[automatically_derived]
3654            #[doc(hidden)]
3655            impl ::core::convert::From<executeCall> for UnderlyingRustTuple<'_> {
3656                fn from(value: executeCall) -> Self {
3657                    (
3658                        value.target,
3659                        value.value,
3660                        value.payload,
3661                        value.predecessor,
3662                        value.salt,
3663                    )
3664                }
3665            }
3666            #[automatically_derived]
3667            #[doc(hidden)]
3668            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeCall {
3669                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3670                    Self {
3671                        target: tuple.0,
3672                        value: tuple.1,
3673                        payload: tuple.2,
3674                        predecessor: tuple.3,
3675                        salt: tuple.4,
3676                    }
3677                }
3678            }
3679        }
3680        {
3681            #[doc(hidden)]
3682            type UnderlyingSolTuple<'a> = ();
3683            #[doc(hidden)]
3684            type UnderlyingRustTuple<'a> = ();
3685            #[cfg(test)]
3686            #[allow(dead_code, unreachable_patterns)]
3687            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3688                match _t {
3689                    alloy_sol_types::private::AssertTypeEq::<
3690                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3691                    >(_) => {},
3692                }
3693            }
3694            #[automatically_derived]
3695            #[doc(hidden)]
3696            impl ::core::convert::From<executeReturn> for UnderlyingRustTuple<'_> {
3697                fn from(value: executeReturn) -> Self {
3698                    ()
3699                }
3700            }
3701            #[automatically_derived]
3702            #[doc(hidden)]
3703            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeReturn {
3704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3705                    Self {}
3706                }
3707            }
3708        }
3709        #[automatically_derived]
3710        impl alloy_sol_types::SolCall for executeCall {
3711            type Parameters<'a> = (
3712                alloy::sol_types::sol_data::Address,
3713                alloy::sol_types::sol_data::Uint<256>,
3714                alloy::sol_types::sol_data::Bytes,
3715                alloy::sol_types::sol_data::FixedBytes<32>,
3716                alloy::sol_types::sol_data::FixedBytes<32>,
3717            );
3718            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3719            type Return = executeReturn;
3720            type ReturnTuple<'a> = ();
3721            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3722            const SIGNATURE: &'static str = "execute(address,uint256,bytes,bytes32,bytes32)";
3723            const SELECTOR: [u8; 4] = [19u8, 64u8, 8u8, 211u8];
3724            #[inline]
3725            fn new<'a>(
3726                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3727            ) -> Self {
3728                tuple.into()
3729            }
3730            #[inline]
3731            fn tokenize(&self) -> Self::Token<'_> {
3732                (
3733                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
3734                        &self.target,
3735                    ),
3736                    <alloy::sol_types::sol_data::Uint<
3737                        256,
3738                    > as alloy_sol_types::SolType>::tokenize(&self.value),
3739                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
3740                        &self.payload,
3741                    ),
3742                    <alloy::sol_types::sol_data::FixedBytes<
3743                        32,
3744                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
3745                    <alloy::sol_types::sol_data::FixedBytes<
3746                        32,
3747                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
3748                )
3749            }
3750            #[inline]
3751            fn abi_decode_returns(
3752                data: &[u8],
3753                validate: bool,
3754            ) -> alloy_sol_types::Result<Self::Return> {
3755                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3756                    data, validate,
3757                )
3758                .map(Into::into)
3759            }
3760        }
3761    };
3762    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3763    /**Function with signature `executeBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xe38335e5`.
3764    ```solidity
3765    function executeBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external payable;
3766    ```*/
3767    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3768    #[derive(Clone)]
3769    pub struct executeBatchCall {
3770        #[allow(missing_docs)]
3771        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3772        #[allow(missing_docs)]
3773        pub values:
3774            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
3775        #[allow(missing_docs)]
3776        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
3777        #[allow(missing_docs)]
3778        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
3779        #[allow(missing_docs)]
3780        pub salt: alloy::sol_types::private::FixedBytes<32>,
3781    }
3782    ///Container type for the return parameters of the [`executeBatch(address[],uint256[],bytes[],bytes32,bytes32)`](executeBatchCall) function.
3783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3784    #[derive(Clone)]
3785    pub struct executeBatchReturn {}
3786    #[allow(
3787        non_camel_case_types,
3788        non_snake_case,
3789        clippy::pub_underscore_fields,
3790        clippy::style
3791    )]
3792    const _: () = {
3793        use alloy::sol_types as alloy_sol_types;
3794        {
3795            #[doc(hidden)]
3796            type UnderlyingSolTuple<'a> = (
3797                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3798                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
3799                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
3800                alloy::sol_types::sol_data::FixedBytes<32>,
3801                alloy::sol_types::sol_data::FixedBytes<32>,
3802            );
3803            #[doc(hidden)]
3804            type UnderlyingRustTuple<'a> = (
3805                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
3806                alloy::sol_types::private::Vec<
3807                    alloy::sol_types::private::primitives::aliases::U256,
3808                >,
3809                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
3810                alloy::sol_types::private::FixedBytes<32>,
3811                alloy::sol_types::private::FixedBytes<32>,
3812            );
3813            #[cfg(test)]
3814            #[allow(dead_code, unreachable_patterns)]
3815            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3816                match _t {
3817                    alloy_sol_types::private::AssertTypeEq::<
3818                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3819                    >(_) => {},
3820                }
3821            }
3822            #[automatically_derived]
3823            #[doc(hidden)]
3824            impl ::core::convert::From<executeBatchCall> for UnderlyingRustTuple<'_> {
3825                fn from(value: executeBatchCall) -> Self {
3826                    (
3827                        value.targets,
3828                        value.values,
3829                        value.payloads,
3830                        value.predecessor,
3831                        value.salt,
3832                    )
3833                }
3834            }
3835            #[automatically_derived]
3836            #[doc(hidden)]
3837            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchCall {
3838                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3839                    Self {
3840                        targets: tuple.0,
3841                        values: tuple.1,
3842                        payloads: tuple.2,
3843                        predecessor: tuple.3,
3844                        salt: tuple.4,
3845                    }
3846                }
3847            }
3848        }
3849        {
3850            #[doc(hidden)]
3851            type UnderlyingSolTuple<'a> = ();
3852            #[doc(hidden)]
3853            type UnderlyingRustTuple<'a> = ();
3854            #[cfg(test)]
3855            #[allow(dead_code, unreachable_patterns)]
3856            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3857                match _t {
3858                    alloy_sol_types::private::AssertTypeEq::<
3859                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3860                    >(_) => {},
3861                }
3862            }
3863            #[automatically_derived]
3864            #[doc(hidden)]
3865            impl ::core::convert::From<executeBatchReturn> for UnderlyingRustTuple<'_> {
3866                fn from(value: executeBatchReturn) -> Self {
3867                    ()
3868                }
3869            }
3870            #[automatically_derived]
3871            #[doc(hidden)]
3872            impl ::core::convert::From<UnderlyingRustTuple<'_>> for executeBatchReturn {
3873                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3874                    Self {}
3875                }
3876            }
3877        }
3878        #[automatically_derived]
3879        impl alloy_sol_types::SolCall for executeBatchCall {
3880            type Parameters<'a> = (
3881                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
3882                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
3883                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
3884                alloy::sol_types::sol_data::FixedBytes<32>,
3885                alloy::sol_types::sol_data::FixedBytes<32>,
3886            );
3887            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
3888            type Return = executeBatchReturn;
3889            type ReturnTuple<'a> = ();
3890            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
3891            const SIGNATURE: &'static str =
3892                "executeBatch(address[],uint256[],bytes[],bytes32,bytes32)";
3893            const SELECTOR: [u8; 4] = [227u8, 131u8, 53u8, 229u8];
3894            #[inline]
3895            fn new<'a>(
3896                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
3897            ) -> Self {
3898                tuple.into()
3899            }
3900            #[inline]
3901            fn tokenize(&self) -> Self::Token<'_> {
3902                (
3903                    <alloy::sol_types::sol_data::Array<
3904                        alloy::sol_types::sol_data::Address,
3905                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
3906                    <alloy::sol_types::sol_data::Array<
3907                        alloy::sol_types::sol_data::Uint<256>,
3908                    > as alloy_sol_types::SolType>::tokenize(&self.values),
3909                    <alloy::sol_types::sol_data::Array<
3910                        alloy::sol_types::sol_data::Bytes,
3911                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
3912                    <alloy::sol_types::sol_data::FixedBytes<
3913                        32,
3914                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
3915                    <alloy::sol_types::sol_data::FixedBytes<
3916                        32,
3917                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
3918                )
3919            }
3920            #[inline]
3921            fn abi_decode_returns(
3922                data: &[u8],
3923                validate: bool,
3924            ) -> alloy_sol_types::Result<Self::Return> {
3925                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
3926                    data, validate,
3927                )
3928                .map(Into::into)
3929            }
3930        }
3931    };
3932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3933    /**Function with signature `getMinDelay()` and selector `0xf27a0c92`.
3934    ```solidity
3935    function getMinDelay() external view returns (uint256);
3936    ```*/
3937    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3938    #[derive(Clone)]
3939    pub struct getMinDelayCall {}
3940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3941    ///Container type for the return parameters of the [`getMinDelay()`](getMinDelayCall) function.
3942    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3943    #[derive(Clone)]
3944    pub struct getMinDelayReturn {
3945        #[allow(missing_docs)]
3946        pub _0: alloy::sol_types::private::primitives::aliases::U256,
3947    }
3948    #[allow(
3949        non_camel_case_types,
3950        non_snake_case,
3951        clippy::pub_underscore_fields,
3952        clippy::style
3953    )]
3954    const _: () = {
3955        use alloy::sol_types as alloy_sol_types;
3956        {
3957            #[doc(hidden)]
3958            type UnderlyingSolTuple<'a> = ();
3959            #[doc(hidden)]
3960            type UnderlyingRustTuple<'a> = ();
3961            #[cfg(test)]
3962            #[allow(dead_code, unreachable_patterns)]
3963            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3964                match _t {
3965                    alloy_sol_types::private::AssertTypeEq::<
3966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3967                    >(_) => {},
3968                }
3969            }
3970            #[automatically_derived]
3971            #[doc(hidden)]
3972            impl ::core::convert::From<getMinDelayCall> for UnderlyingRustTuple<'_> {
3973                fn from(value: getMinDelayCall) -> Self {
3974                    ()
3975                }
3976            }
3977            #[automatically_derived]
3978            #[doc(hidden)]
3979            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayCall {
3980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3981                    Self {}
3982                }
3983            }
3984        }
3985        {
3986            #[doc(hidden)]
3987            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
3988            #[doc(hidden)]
3989            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
3990            #[cfg(test)]
3991            #[allow(dead_code, unreachable_patterns)]
3992            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
3993                match _t {
3994                    alloy_sol_types::private::AssertTypeEq::<
3995                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3996                    >(_) => {},
3997                }
3998            }
3999            #[automatically_derived]
4000            #[doc(hidden)]
4001            impl ::core::convert::From<getMinDelayReturn> for UnderlyingRustTuple<'_> {
4002                fn from(value: getMinDelayReturn) -> Self {
4003                    (value._0,)
4004                }
4005            }
4006            #[automatically_derived]
4007            #[doc(hidden)]
4008            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getMinDelayReturn {
4009                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4010                    Self { _0: tuple.0 }
4011                }
4012            }
4013        }
4014        #[automatically_derived]
4015        impl alloy_sol_types::SolCall for getMinDelayCall {
4016            type Parameters<'a> = ();
4017            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4018            type Return = getMinDelayReturn;
4019            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4020            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4021            const SIGNATURE: &'static str = "getMinDelay()";
4022            const SELECTOR: [u8; 4] = [242u8, 122u8, 12u8, 146u8];
4023            #[inline]
4024            fn new<'a>(
4025                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4026            ) -> Self {
4027                tuple.into()
4028            }
4029            #[inline]
4030            fn tokenize(&self) -> Self::Token<'_> {
4031                ()
4032            }
4033            #[inline]
4034            fn abi_decode_returns(
4035                data: &[u8],
4036                validate: bool,
4037            ) -> alloy_sol_types::Result<Self::Return> {
4038                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
4039                    data, validate,
4040                )
4041                .map(Into::into)
4042            }
4043        }
4044    };
4045    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4046    /**Function with signature `getOperationState(bytes32)` and selector `0x7958004c`.
4047    ```solidity
4048    function getOperationState(bytes32 id) external view returns (TimelockController.OperationState);
4049    ```*/
4050    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4051    #[derive(Clone)]
4052    pub struct getOperationStateCall {
4053        #[allow(missing_docs)]
4054        pub id: alloy::sol_types::private::FixedBytes<32>,
4055    }
4056    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4057    ///Container type for the return parameters of the [`getOperationState(bytes32)`](getOperationStateCall) function.
4058    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4059    #[derive(Clone)]
4060    pub struct getOperationStateReturn {
4061        #[allow(missing_docs)]
4062        pub _0: <TimelockController::OperationState as alloy::sol_types::SolType>::RustType,
4063    }
4064    #[allow(
4065        non_camel_case_types,
4066        non_snake_case,
4067        clippy::pub_underscore_fields,
4068        clippy::style
4069    )]
4070    const _: () = {
4071        use alloy::sol_types as alloy_sol_types;
4072        {
4073            #[doc(hidden)]
4074            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4075            #[doc(hidden)]
4076            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4077            #[cfg(test)]
4078            #[allow(dead_code, unreachable_patterns)]
4079            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4080                match _t {
4081                    alloy_sol_types::private::AssertTypeEq::<
4082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4083                    >(_) => {},
4084                }
4085            }
4086            #[automatically_derived]
4087            #[doc(hidden)]
4088            impl ::core::convert::From<getOperationStateCall> for UnderlyingRustTuple<'_> {
4089                fn from(value: getOperationStateCall) -> Self {
4090                    (value.id,)
4091                }
4092            }
4093            #[automatically_derived]
4094            #[doc(hidden)]
4095            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperationStateCall {
4096                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4097                    Self { id: tuple.0 }
4098                }
4099            }
4100        }
4101        {
4102            #[doc(hidden)]
4103            type UnderlyingSolTuple<'a> = (TimelockController::OperationState,);
4104            #[doc(hidden)]
4105            type UnderlyingRustTuple<'a> =
4106                (<TimelockController::OperationState as alloy::sol_types::SolType>::RustType,);
4107            #[cfg(test)]
4108            #[allow(dead_code, unreachable_patterns)]
4109            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4110                match _t {
4111                    alloy_sol_types::private::AssertTypeEq::<
4112                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4113                    >(_) => {},
4114                }
4115            }
4116            #[automatically_derived]
4117            #[doc(hidden)]
4118            impl ::core::convert::From<getOperationStateReturn> for UnderlyingRustTuple<'_> {
4119                fn from(value: getOperationStateReturn) -> Self {
4120                    (value._0,)
4121                }
4122            }
4123            #[automatically_derived]
4124            #[doc(hidden)]
4125            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperationStateReturn {
4126                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4127                    Self { _0: tuple.0 }
4128                }
4129            }
4130        }
4131        #[automatically_derived]
4132        impl alloy_sol_types::SolCall for getOperationStateCall {
4133            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4134            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4135            type Return = getOperationStateReturn;
4136            type ReturnTuple<'a> = (TimelockController::OperationState,);
4137            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4138            const SIGNATURE: &'static str = "getOperationState(bytes32)";
4139            const SELECTOR: [u8; 4] = [121u8, 88u8, 0u8, 76u8];
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::FixedBytes<
4150                        32,
4151                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4152                )
4153            }
4154            #[inline]
4155            fn abi_decode_returns(
4156                data: &[u8],
4157                validate: bool,
4158            ) -> alloy_sol_types::Result<Self::Return> {
4159                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
4160                    data, validate,
4161                )
4162                .map(Into::into)
4163            }
4164        }
4165    };
4166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4167    /**Function with signature `getRoleAdmin(bytes32)` and selector `0x248a9ca3`.
4168    ```solidity
4169    function getRoleAdmin(bytes32 role) external view returns (bytes32);
4170    ```*/
4171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4172    #[derive(Clone)]
4173    pub struct getRoleAdminCall {
4174        #[allow(missing_docs)]
4175        pub role: alloy::sol_types::private::FixedBytes<32>,
4176    }
4177    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4178    ///Container type for the return parameters of the [`getRoleAdmin(bytes32)`](getRoleAdminCall) function.
4179    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4180    #[derive(Clone)]
4181    pub struct getRoleAdminReturn {
4182        #[allow(missing_docs)]
4183        pub _0: alloy::sol_types::private::FixedBytes<32>,
4184    }
4185    #[allow(
4186        non_camel_case_types,
4187        non_snake_case,
4188        clippy::pub_underscore_fields,
4189        clippy::style
4190    )]
4191    const _: () = {
4192        use alloy::sol_types as alloy_sol_types;
4193        {
4194            #[doc(hidden)]
4195            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4196            #[doc(hidden)]
4197            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4198            #[cfg(test)]
4199            #[allow(dead_code, unreachable_patterns)]
4200            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4201                match _t {
4202                    alloy_sol_types::private::AssertTypeEq::<
4203                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4204                    >(_) => {},
4205                }
4206            }
4207            #[automatically_derived]
4208            #[doc(hidden)]
4209            impl ::core::convert::From<getRoleAdminCall> for UnderlyingRustTuple<'_> {
4210                fn from(value: getRoleAdminCall) -> Self {
4211                    (value.role,)
4212                }
4213            }
4214            #[automatically_derived]
4215            #[doc(hidden)]
4216            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminCall {
4217                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4218                    Self { role: tuple.0 }
4219                }
4220            }
4221        }
4222        {
4223            #[doc(hidden)]
4224            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4225            #[doc(hidden)]
4226            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4227            #[cfg(test)]
4228            #[allow(dead_code, unreachable_patterns)]
4229            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4230                match _t {
4231                    alloy_sol_types::private::AssertTypeEq::<
4232                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4233                    >(_) => {},
4234                }
4235            }
4236            #[automatically_derived]
4237            #[doc(hidden)]
4238            impl ::core::convert::From<getRoleAdminReturn> for UnderlyingRustTuple<'_> {
4239                fn from(value: getRoleAdminReturn) -> Self {
4240                    (value._0,)
4241                }
4242            }
4243            #[automatically_derived]
4244            #[doc(hidden)]
4245            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRoleAdminReturn {
4246                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4247                    Self { _0: tuple.0 }
4248                }
4249            }
4250        }
4251        #[automatically_derived]
4252        impl alloy_sol_types::SolCall for getRoleAdminCall {
4253            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4254            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4255            type Return = getRoleAdminReturn;
4256            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4257            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4258            const SIGNATURE: &'static str = "getRoleAdmin(bytes32)";
4259            const SELECTOR: [u8; 4] = [36u8, 138u8, 156u8, 163u8];
4260            #[inline]
4261            fn new<'a>(
4262                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4263            ) -> Self {
4264                tuple.into()
4265            }
4266            #[inline]
4267            fn tokenize(&self) -> Self::Token<'_> {
4268                (
4269                    <alloy::sol_types::sol_data::FixedBytes<
4270                        32,
4271                    > as alloy_sol_types::SolType>::tokenize(&self.role),
4272                )
4273            }
4274            #[inline]
4275            fn abi_decode_returns(
4276                data: &[u8],
4277                validate: bool,
4278            ) -> alloy_sol_types::Result<Self::Return> {
4279                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
4280                    data, validate,
4281                )
4282                .map(Into::into)
4283            }
4284        }
4285    };
4286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4287    /**Function with signature `getTimestamp(bytes32)` and selector `0xd45c4435`.
4288    ```solidity
4289    function getTimestamp(bytes32 id) external view returns (uint256);
4290    ```*/
4291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4292    #[derive(Clone)]
4293    pub struct getTimestampCall {
4294        #[allow(missing_docs)]
4295        pub id: alloy::sol_types::private::FixedBytes<32>,
4296    }
4297    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4298    ///Container type for the return parameters of the [`getTimestamp(bytes32)`](getTimestampCall) function.
4299    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4300    #[derive(Clone)]
4301    pub struct getTimestampReturn {
4302        #[allow(missing_docs)]
4303        pub _0: alloy::sol_types::private::primitives::aliases::U256,
4304    }
4305    #[allow(
4306        non_camel_case_types,
4307        non_snake_case,
4308        clippy::pub_underscore_fields,
4309        clippy::style
4310    )]
4311    const _: () = {
4312        use alloy::sol_types as alloy_sol_types;
4313        {
4314            #[doc(hidden)]
4315            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4316            #[doc(hidden)]
4317            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4318            #[cfg(test)]
4319            #[allow(dead_code, unreachable_patterns)]
4320            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4321                match _t {
4322                    alloy_sol_types::private::AssertTypeEq::<
4323                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4324                    >(_) => {},
4325                }
4326            }
4327            #[automatically_derived]
4328            #[doc(hidden)]
4329            impl ::core::convert::From<getTimestampCall> for UnderlyingRustTuple<'_> {
4330                fn from(value: getTimestampCall) -> Self {
4331                    (value.id,)
4332                }
4333            }
4334            #[automatically_derived]
4335            #[doc(hidden)]
4336            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampCall {
4337                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4338                    Self { id: tuple.0 }
4339                }
4340            }
4341        }
4342        {
4343            #[doc(hidden)]
4344            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4345            #[doc(hidden)]
4346            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
4347            #[cfg(test)]
4348            #[allow(dead_code, unreachable_patterns)]
4349            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4350                match _t {
4351                    alloy_sol_types::private::AssertTypeEq::<
4352                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4353                    >(_) => {},
4354                }
4355            }
4356            #[automatically_derived]
4357            #[doc(hidden)]
4358            impl ::core::convert::From<getTimestampReturn> for UnderlyingRustTuple<'_> {
4359                fn from(value: getTimestampReturn) -> Self {
4360                    (value._0,)
4361                }
4362            }
4363            #[automatically_derived]
4364            #[doc(hidden)]
4365            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getTimestampReturn {
4366                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4367                    Self { _0: tuple.0 }
4368                }
4369            }
4370        }
4371        #[automatically_derived]
4372        impl alloy_sol_types::SolCall for getTimestampCall {
4373            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4374            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4375            type Return = getTimestampReturn;
4376            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
4377            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4378            const SIGNATURE: &'static str = "getTimestamp(bytes32)";
4379            const SELECTOR: [u8; 4] = [212u8, 92u8, 68u8, 53u8];
4380            #[inline]
4381            fn new<'a>(
4382                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4383            ) -> Self {
4384                tuple.into()
4385            }
4386            #[inline]
4387            fn tokenize(&self) -> Self::Token<'_> {
4388                (
4389                    <alloy::sol_types::sol_data::FixedBytes<
4390                        32,
4391                    > as alloy_sol_types::SolType>::tokenize(&self.id),
4392                )
4393            }
4394            #[inline]
4395            fn abi_decode_returns(
4396                data: &[u8],
4397                validate: bool,
4398            ) -> alloy_sol_types::Result<Self::Return> {
4399                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
4400                    data, validate,
4401                )
4402                .map(Into::into)
4403            }
4404        }
4405    };
4406    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4407    /**Function with signature `grantRole(bytes32,address)` and selector `0x2f2ff15d`.
4408    ```solidity
4409    function grantRole(bytes32 role, address account) external;
4410    ```*/
4411    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4412    #[derive(Clone)]
4413    pub struct grantRoleCall {
4414        #[allow(missing_docs)]
4415        pub role: alloy::sol_types::private::FixedBytes<32>,
4416        #[allow(missing_docs)]
4417        pub account: alloy::sol_types::private::Address,
4418    }
4419    ///Container type for the return parameters of the [`grantRole(bytes32,address)`](grantRoleCall) function.
4420    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4421    #[derive(Clone)]
4422    pub struct grantRoleReturn {}
4423    #[allow(
4424        non_camel_case_types,
4425        non_snake_case,
4426        clippy::pub_underscore_fields,
4427        clippy::style
4428    )]
4429    const _: () = {
4430        use alloy::sol_types as alloy_sol_types;
4431        {
4432            #[doc(hidden)]
4433            type UnderlyingSolTuple<'a> = (
4434                alloy::sol_types::sol_data::FixedBytes<32>,
4435                alloy::sol_types::sol_data::Address,
4436            );
4437            #[doc(hidden)]
4438            type UnderlyingRustTuple<'a> = (
4439                alloy::sol_types::private::FixedBytes<32>,
4440                alloy::sol_types::private::Address,
4441            );
4442            #[cfg(test)]
4443            #[allow(dead_code, unreachable_patterns)]
4444            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4445                match _t {
4446                    alloy_sol_types::private::AssertTypeEq::<
4447                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4448                    >(_) => {},
4449                }
4450            }
4451            #[automatically_derived]
4452            #[doc(hidden)]
4453            impl ::core::convert::From<grantRoleCall> for UnderlyingRustTuple<'_> {
4454                fn from(value: grantRoleCall) -> Self {
4455                    (value.role, value.account)
4456                }
4457            }
4458            #[automatically_derived]
4459            #[doc(hidden)]
4460            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleCall {
4461                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4462                    Self {
4463                        role: tuple.0,
4464                        account: tuple.1,
4465                    }
4466                }
4467            }
4468        }
4469        {
4470            #[doc(hidden)]
4471            type UnderlyingSolTuple<'a> = ();
4472            #[doc(hidden)]
4473            type UnderlyingRustTuple<'a> = ();
4474            #[cfg(test)]
4475            #[allow(dead_code, unreachable_patterns)]
4476            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4477                match _t {
4478                    alloy_sol_types::private::AssertTypeEq::<
4479                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4480                    >(_) => {},
4481                }
4482            }
4483            #[automatically_derived]
4484            #[doc(hidden)]
4485            impl ::core::convert::From<grantRoleReturn> for UnderlyingRustTuple<'_> {
4486                fn from(value: grantRoleReturn) -> Self {
4487                    ()
4488                }
4489            }
4490            #[automatically_derived]
4491            #[doc(hidden)]
4492            impl ::core::convert::From<UnderlyingRustTuple<'_>> for grantRoleReturn {
4493                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4494                    Self {}
4495                }
4496            }
4497        }
4498        #[automatically_derived]
4499        impl alloy_sol_types::SolCall for grantRoleCall {
4500            type Parameters<'a> = (
4501                alloy::sol_types::sol_data::FixedBytes<32>,
4502                alloy::sol_types::sol_data::Address,
4503            );
4504            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4505            type Return = grantRoleReturn;
4506            type ReturnTuple<'a> = ();
4507            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4508            const SIGNATURE: &'static str = "grantRole(bytes32,address)";
4509            const SELECTOR: [u8; 4] = [47u8, 47u8, 241u8, 93u8];
4510            #[inline]
4511            fn new<'a>(
4512                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4513            ) -> Self {
4514                tuple.into()
4515            }
4516            #[inline]
4517            fn tokenize(&self) -> Self::Token<'_> {
4518                (
4519                    <alloy::sol_types::sol_data::FixedBytes<
4520                        32,
4521                    > as alloy_sol_types::SolType>::tokenize(&self.role),
4522                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4523                        &self.account,
4524                    ),
4525                )
4526            }
4527            #[inline]
4528            fn abi_decode_returns(
4529                data: &[u8],
4530                validate: bool,
4531            ) -> alloy_sol_types::Result<Self::Return> {
4532                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
4533                    data, validate,
4534                )
4535                .map(Into::into)
4536            }
4537        }
4538    };
4539    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4540    /**Function with signature `hasRole(bytes32,address)` and selector `0x91d14854`.
4541    ```solidity
4542    function hasRole(bytes32 role, address account) external view returns (bool);
4543    ```*/
4544    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4545    #[derive(Clone)]
4546    pub struct hasRoleCall {
4547        #[allow(missing_docs)]
4548        pub role: alloy::sol_types::private::FixedBytes<32>,
4549        #[allow(missing_docs)]
4550        pub account: alloy::sol_types::private::Address,
4551    }
4552    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4553    ///Container type for the return parameters of the [`hasRole(bytes32,address)`](hasRoleCall) function.
4554    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4555    #[derive(Clone)]
4556    pub struct hasRoleReturn {
4557        #[allow(missing_docs)]
4558        pub _0: bool,
4559    }
4560    #[allow(
4561        non_camel_case_types,
4562        non_snake_case,
4563        clippy::pub_underscore_fields,
4564        clippy::style
4565    )]
4566    const _: () = {
4567        use alloy::sol_types as alloy_sol_types;
4568        {
4569            #[doc(hidden)]
4570            type UnderlyingSolTuple<'a> = (
4571                alloy::sol_types::sol_data::FixedBytes<32>,
4572                alloy::sol_types::sol_data::Address,
4573            );
4574            #[doc(hidden)]
4575            type UnderlyingRustTuple<'a> = (
4576                alloy::sol_types::private::FixedBytes<32>,
4577                alloy::sol_types::private::Address,
4578            );
4579            #[cfg(test)]
4580            #[allow(dead_code, unreachable_patterns)]
4581            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4582                match _t {
4583                    alloy_sol_types::private::AssertTypeEq::<
4584                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4585                    >(_) => {},
4586                }
4587            }
4588            #[automatically_derived]
4589            #[doc(hidden)]
4590            impl ::core::convert::From<hasRoleCall> for UnderlyingRustTuple<'_> {
4591                fn from(value: hasRoleCall) -> Self {
4592                    (value.role, value.account)
4593                }
4594            }
4595            #[automatically_derived]
4596            #[doc(hidden)]
4597            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleCall {
4598                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4599                    Self {
4600                        role: tuple.0,
4601                        account: tuple.1,
4602                    }
4603                }
4604            }
4605        }
4606        {
4607            #[doc(hidden)]
4608            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
4609            #[doc(hidden)]
4610            type UnderlyingRustTuple<'a> = (bool,);
4611            #[cfg(test)]
4612            #[allow(dead_code, unreachable_patterns)]
4613            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4614                match _t {
4615                    alloy_sol_types::private::AssertTypeEq::<
4616                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4617                    >(_) => {},
4618                }
4619            }
4620            #[automatically_derived]
4621            #[doc(hidden)]
4622            impl ::core::convert::From<hasRoleReturn> for UnderlyingRustTuple<'_> {
4623                fn from(value: hasRoleReturn) -> Self {
4624                    (value._0,)
4625                }
4626            }
4627            #[automatically_derived]
4628            #[doc(hidden)]
4629            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hasRoleReturn {
4630                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4631                    Self { _0: tuple.0 }
4632                }
4633            }
4634        }
4635        #[automatically_derived]
4636        impl alloy_sol_types::SolCall for hasRoleCall {
4637            type Parameters<'a> = (
4638                alloy::sol_types::sol_data::FixedBytes<32>,
4639                alloy::sol_types::sol_data::Address,
4640            );
4641            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4642            type Return = hasRoleReturn;
4643            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
4644            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4645            const SIGNATURE: &'static str = "hasRole(bytes32,address)";
4646            const SELECTOR: [u8; 4] = [145u8, 209u8, 72u8, 84u8];
4647            #[inline]
4648            fn new<'a>(
4649                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4650            ) -> Self {
4651                tuple.into()
4652            }
4653            #[inline]
4654            fn tokenize(&self) -> Self::Token<'_> {
4655                (
4656                    <alloy::sol_types::sol_data::FixedBytes<
4657                        32,
4658                    > as alloy_sol_types::SolType>::tokenize(&self.role),
4659                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4660                        &self.account,
4661                    ),
4662                )
4663            }
4664            #[inline]
4665            fn abi_decode_returns(
4666                data: &[u8],
4667                validate: bool,
4668            ) -> alloy_sol_types::Result<Self::Return> {
4669                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
4670                    data, validate,
4671                )
4672                .map(Into::into)
4673            }
4674        }
4675    };
4676    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4677    /**Function with signature `hashOperation(address,uint256,bytes,bytes32,bytes32)` and selector `0x8065657f`.
4678    ```solidity
4679    function hashOperation(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
4680    ```*/
4681    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4682    #[derive(Clone)]
4683    pub struct hashOperationCall {
4684        #[allow(missing_docs)]
4685        pub target: alloy::sol_types::private::Address,
4686        #[allow(missing_docs)]
4687        pub value: alloy::sol_types::private::primitives::aliases::U256,
4688        #[allow(missing_docs)]
4689        pub data: alloy::sol_types::private::Bytes,
4690        #[allow(missing_docs)]
4691        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
4692        #[allow(missing_docs)]
4693        pub salt: alloy::sol_types::private::FixedBytes<32>,
4694    }
4695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4696    ///Container type for the return parameters of the [`hashOperation(address,uint256,bytes,bytes32,bytes32)`](hashOperationCall) function.
4697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4698    #[derive(Clone)]
4699    pub struct hashOperationReturn {
4700        #[allow(missing_docs)]
4701        pub _0: alloy::sol_types::private::FixedBytes<32>,
4702    }
4703    #[allow(
4704        non_camel_case_types,
4705        non_snake_case,
4706        clippy::pub_underscore_fields,
4707        clippy::style
4708    )]
4709    const _: () = {
4710        use alloy::sol_types as alloy_sol_types;
4711        {
4712            #[doc(hidden)]
4713            type UnderlyingSolTuple<'a> = (
4714                alloy::sol_types::sol_data::Address,
4715                alloy::sol_types::sol_data::Uint<256>,
4716                alloy::sol_types::sol_data::Bytes,
4717                alloy::sol_types::sol_data::FixedBytes<32>,
4718                alloy::sol_types::sol_data::FixedBytes<32>,
4719            );
4720            #[doc(hidden)]
4721            type UnderlyingRustTuple<'a> = (
4722                alloy::sol_types::private::Address,
4723                alloy::sol_types::private::primitives::aliases::U256,
4724                alloy::sol_types::private::Bytes,
4725                alloy::sol_types::private::FixedBytes<32>,
4726                alloy::sol_types::private::FixedBytes<32>,
4727            );
4728            #[cfg(test)]
4729            #[allow(dead_code, unreachable_patterns)]
4730            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4731                match _t {
4732                    alloy_sol_types::private::AssertTypeEq::<
4733                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4734                    >(_) => {},
4735                }
4736            }
4737            #[automatically_derived]
4738            #[doc(hidden)]
4739            impl ::core::convert::From<hashOperationCall> for UnderlyingRustTuple<'_> {
4740                fn from(value: hashOperationCall) -> Self {
4741                    (
4742                        value.target,
4743                        value.value,
4744                        value.data,
4745                        value.predecessor,
4746                        value.salt,
4747                    )
4748                }
4749            }
4750            #[automatically_derived]
4751            #[doc(hidden)]
4752            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationCall {
4753                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4754                    Self {
4755                        target: tuple.0,
4756                        value: tuple.1,
4757                        data: tuple.2,
4758                        predecessor: tuple.3,
4759                        salt: tuple.4,
4760                    }
4761                }
4762            }
4763        }
4764        {
4765            #[doc(hidden)]
4766            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4767            #[doc(hidden)]
4768            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4769            #[cfg(test)]
4770            #[allow(dead_code, unreachable_patterns)]
4771            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4772                match _t {
4773                    alloy_sol_types::private::AssertTypeEq::<
4774                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4775                    >(_) => {},
4776                }
4777            }
4778            #[automatically_derived]
4779            #[doc(hidden)]
4780            impl ::core::convert::From<hashOperationReturn> for UnderlyingRustTuple<'_> {
4781                fn from(value: hashOperationReturn) -> Self {
4782                    (value._0,)
4783                }
4784            }
4785            #[automatically_derived]
4786            #[doc(hidden)]
4787            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationReturn {
4788                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4789                    Self { _0: tuple.0 }
4790                }
4791            }
4792        }
4793        #[automatically_derived]
4794        impl alloy_sol_types::SolCall for hashOperationCall {
4795            type Parameters<'a> = (
4796                alloy::sol_types::sol_data::Address,
4797                alloy::sol_types::sol_data::Uint<256>,
4798                alloy::sol_types::sol_data::Bytes,
4799                alloy::sol_types::sol_data::FixedBytes<32>,
4800                alloy::sol_types::sol_data::FixedBytes<32>,
4801            );
4802            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4803            type Return = hashOperationReturn;
4804            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4805            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4806            const SIGNATURE: &'static str = "hashOperation(address,uint256,bytes,bytes32,bytes32)";
4807            const SELECTOR: [u8; 4] = [128u8, 101u8, 101u8, 127u8];
4808            #[inline]
4809            fn new<'a>(
4810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4811            ) -> Self {
4812                tuple.into()
4813            }
4814            #[inline]
4815            fn tokenize(&self) -> Self::Token<'_> {
4816                (
4817                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4818                        &self.target,
4819                    ),
4820                    <alloy::sol_types::sol_data::Uint<
4821                        256,
4822                    > as alloy_sol_types::SolType>::tokenize(&self.value),
4823                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
4824                        &self.data,
4825                    ),
4826                    <alloy::sol_types::sol_data::FixedBytes<
4827                        32,
4828                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
4829                    <alloy::sol_types::sol_data::FixedBytes<
4830                        32,
4831                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
4832                )
4833            }
4834            #[inline]
4835            fn abi_decode_returns(
4836                data: &[u8],
4837                validate: bool,
4838            ) -> alloy_sol_types::Result<Self::Return> {
4839                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
4840                    data, validate,
4841                )
4842                .map(Into::into)
4843            }
4844        }
4845    };
4846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4847    /**Function with signature `hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)` and selector `0xb1c5f427`.
4848    ```solidity
4849    function hashOperationBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt) external pure returns (bytes32);
4850    ```*/
4851    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4852    #[derive(Clone)]
4853    pub struct hashOperationBatchCall {
4854        #[allow(missing_docs)]
4855        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4856        #[allow(missing_docs)]
4857        pub values:
4858            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
4859        #[allow(missing_docs)]
4860        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4861        #[allow(missing_docs)]
4862        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
4863        #[allow(missing_docs)]
4864        pub salt: alloy::sol_types::private::FixedBytes<32>,
4865    }
4866    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4867    ///Container type for the return parameters of the [`hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)`](hashOperationBatchCall) function.
4868    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4869    #[derive(Clone)]
4870    pub struct hashOperationBatchReturn {
4871        #[allow(missing_docs)]
4872        pub _0: alloy::sol_types::private::FixedBytes<32>,
4873    }
4874    #[allow(
4875        non_camel_case_types,
4876        non_snake_case,
4877        clippy::pub_underscore_fields,
4878        clippy::style
4879    )]
4880    const _: () = {
4881        use alloy::sol_types as alloy_sol_types;
4882        {
4883            #[doc(hidden)]
4884            type UnderlyingSolTuple<'a> = (
4885                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4886                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4887                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4888                alloy::sol_types::sol_data::FixedBytes<32>,
4889                alloy::sol_types::sol_data::FixedBytes<32>,
4890            );
4891            #[doc(hidden)]
4892            type UnderlyingRustTuple<'a> = (
4893                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
4894                alloy::sol_types::private::Vec<
4895                    alloy::sol_types::private::primitives::aliases::U256,
4896                >,
4897                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
4898                alloy::sol_types::private::FixedBytes<32>,
4899                alloy::sol_types::private::FixedBytes<32>,
4900            );
4901            #[cfg(test)]
4902            #[allow(dead_code, unreachable_patterns)]
4903            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4904                match _t {
4905                    alloy_sol_types::private::AssertTypeEq::<
4906                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4907                    >(_) => {},
4908                }
4909            }
4910            #[automatically_derived]
4911            #[doc(hidden)]
4912            impl ::core::convert::From<hashOperationBatchCall> for UnderlyingRustTuple<'_> {
4913                fn from(value: hashOperationBatchCall) -> Self {
4914                    (
4915                        value.targets,
4916                        value.values,
4917                        value.payloads,
4918                        value.predecessor,
4919                        value.salt,
4920                    )
4921                }
4922            }
4923            #[automatically_derived]
4924            #[doc(hidden)]
4925            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationBatchCall {
4926                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4927                    Self {
4928                        targets: tuple.0,
4929                        values: tuple.1,
4930                        payloads: tuple.2,
4931                        predecessor: tuple.3,
4932                        salt: tuple.4,
4933                    }
4934                }
4935            }
4936        }
4937        {
4938            #[doc(hidden)]
4939            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4940            #[doc(hidden)]
4941            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
4942            #[cfg(test)]
4943            #[allow(dead_code, unreachable_patterns)]
4944            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
4945                match _t {
4946                    alloy_sol_types::private::AssertTypeEq::<
4947                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4948                    >(_) => {},
4949                }
4950            }
4951            #[automatically_derived]
4952            #[doc(hidden)]
4953            impl ::core::convert::From<hashOperationBatchReturn> for UnderlyingRustTuple<'_> {
4954                fn from(value: hashOperationBatchReturn) -> Self {
4955                    (value._0,)
4956                }
4957            }
4958            #[automatically_derived]
4959            #[doc(hidden)]
4960            impl ::core::convert::From<UnderlyingRustTuple<'_>> for hashOperationBatchReturn {
4961                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4962                    Self { _0: tuple.0 }
4963                }
4964            }
4965        }
4966        #[automatically_derived]
4967        impl alloy_sol_types::SolCall for hashOperationBatchCall {
4968            type Parameters<'a> = (
4969                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
4970                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
4971                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
4972                alloy::sol_types::sol_data::FixedBytes<32>,
4973                alloy::sol_types::sol_data::FixedBytes<32>,
4974            );
4975            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
4976            type Return = hashOperationBatchReturn;
4977            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
4978            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
4979            const SIGNATURE: &'static str =
4980                "hashOperationBatch(address[],uint256[],bytes[],bytes32,bytes32)";
4981            const SELECTOR: [u8; 4] = [177u8, 197u8, 244u8, 39u8];
4982            #[inline]
4983            fn new<'a>(
4984                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4985            ) -> Self {
4986                tuple.into()
4987            }
4988            #[inline]
4989            fn tokenize(&self) -> Self::Token<'_> {
4990                (
4991                    <alloy::sol_types::sol_data::Array<
4992                        alloy::sol_types::sol_data::Address,
4993                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
4994                    <alloy::sol_types::sol_data::Array<
4995                        alloy::sol_types::sol_data::Uint<256>,
4996                    > as alloy_sol_types::SolType>::tokenize(&self.values),
4997                    <alloy::sol_types::sol_data::Array<
4998                        alloy::sol_types::sol_data::Bytes,
4999                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
5000                    <alloy::sol_types::sol_data::FixedBytes<
5001                        32,
5002                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
5003                    <alloy::sol_types::sol_data::FixedBytes<
5004                        32,
5005                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
5006                )
5007            }
5008            #[inline]
5009            fn abi_decode_returns(
5010                data: &[u8],
5011                validate: bool,
5012            ) -> alloy_sol_types::Result<Self::Return> {
5013                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5014                    data, validate,
5015                )
5016                .map(Into::into)
5017            }
5018        }
5019    };
5020    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5021    /**Function with signature `isOperation(bytes32)` and selector `0x31d50750`.
5022    ```solidity
5023    function isOperation(bytes32 id) external view returns (bool);
5024    ```*/
5025    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5026    #[derive(Clone)]
5027    pub struct isOperationCall {
5028        #[allow(missing_docs)]
5029        pub id: alloy::sol_types::private::FixedBytes<32>,
5030    }
5031    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5032    ///Container type for the return parameters of the [`isOperation(bytes32)`](isOperationCall) function.
5033    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5034    #[derive(Clone)]
5035    pub struct isOperationReturn {
5036        #[allow(missing_docs)]
5037        pub _0: bool,
5038    }
5039    #[allow(
5040        non_camel_case_types,
5041        non_snake_case,
5042        clippy::pub_underscore_fields,
5043        clippy::style
5044    )]
5045    const _: () = {
5046        use alloy::sol_types as alloy_sol_types;
5047        {
5048            #[doc(hidden)]
5049            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5050            #[doc(hidden)]
5051            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5052            #[cfg(test)]
5053            #[allow(dead_code, unreachable_patterns)]
5054            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5055                match _t {
5056                    alloy_sol_types::private::AssertTypeEq::<
5057                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5058                    >(_) => {},
5059                }
5060            }
5061            #[automatically_derived]
5062            #[doc(hidden)]
5063            impl ::core::convert::From<isOperationCall> for UnderlyingRustTuple<'_> {
5064                fn from(value: isOperationCall) -> Self {
5065                    (value.id,)
5066                }
5067            }
5068            #[automatically_derived]
5069            #[doc(hidden)]
5070            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationCall {
5071                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5072                    Self { id: tuple.0 }
5073                }
5074            }
5075        }
5076        {
5077            #[doc(hidden)]
5078            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5079            #[doc(hidden)]
5080            type UnderlyingRustTuple<'a> = (bool,);
5081            #[cfg(test)]
5082            #[allow(dead_code, unreachable_patterns)]
5083            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5084                match _t {
5085                    alloy_sol_types::private::AssertTypeEq::<
5086                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5087                    >(_) => {},
5088                }
5089            }
5090            #[automatically_derived]
5091            #[doc(hidden)]
5092            impl ::core::convert::From<isOperationReturn> for UnderlyingRustTuple<'_> {
5093                fn from(value: isOperationReturn) -> Self {
5094                    (value._0,)
5095                }
5096            }
5097            #[automatically_derived]
5098            #[doc(hidden)]
5099            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationReturn {
5100                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5101                    Self { _0: tuple.0 }
5102                }
5103            }
5104        }
5105        #[automatically_derived]
5106        impl alloy_sol_types::SolCall for isOperationCall {
5107            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5108            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5109            type Return = isOperationReturn;
5110            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5111            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5112            const SIGNATURE: &'static str = "isOperation(bytes32)";
5113            const SELECTOR: [u8; 4] = [49u8, 213u8, 7u8, 80u8];
5114            #[inline]
5115            fn new<'a>(
5116                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5117            ) -> Self {
5118                tuple.into()
5119            }
5120            #[inline]
5121            fn tokenize(&self) -> Self::Token<'_> {
5122                (
5123                    <alloy::sol_types::sol_data::FixedBytes<
5124                        32,
5125                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5126                )
5127            }
5128            #[inline]
5129            fn abi_decode_returns(
5130                data: &[u8],
5131                validate: bool,
5132            ) -> alloy_sol_types::Result<Self::Return> {
5133                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5134                    data, validate,
5135                )
5136                .map(Into::into)
5137            }
5138        }
5139    };
5140    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5141    /**Function with signature `isOperationDone(bytes32)` and selector `0x2ab0f529`.
5142    ```solidity
5143    function isOperationDone(bytes32 id) external view returns (bool);
5144    ```*/
5145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5146    #[derive(Clone)]
5147    pub struct isOperationDoneCall {
5148        #[allow(missing_docs)]
5149        pub id: alloy::sol_types::private::FixedBytes<32>,
5150    }
5151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5152    ///Container type for the return parameters of the [`isOperationDone(bytes32)`](isOperationDoneCall) function.
5153    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5154    #[derive(Clone)]
5155    pub struct isOperationDoneReturn {
5156        #[allow(missing_docs)]
5157        pub _0: bool,
5158    }
5159    #[allow(
5160        non_camel_case_types,
5161        non_snake_case,
5162        clippy::pub_underscore_fields,
5163        clippy::style
5164    )]
5165    const _: () = {
5166        use alloy::sol_types as alloy_sol_types;
5167        {
5168            #[doc(hidden)]
5169            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5170            #[doc(hidden)]
5171            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5172            #[cfg(test)]
5173            #[allow(dead_code, unreachable_patterns)]
5174            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5175                match _t {
5176                    alloy_sol_types::private::AssertTypeEq::<
5177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5178                    >(_) => {},
5179                }
5180            }
5181            #[automatically_derived]
5182            #[doc(hidden)]
5183            impl ::core::convert::From<isOperationDoneCall> for UnderlyingRustTuple<'_> {
5184                fn from(value: isOperationDoneCall) -> Self {
5185                    (value.id,)
5186                }
5187            }
5188            #[automatically_derived]
5189            #[doc(hidden)]
5190            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationDoneCall {
5191                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5192                    Self { id: tuple.0 }
5193                }
5194            }
5195        }
5196        {
5197            #[doc(hidden)]
5198            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5199            #[doc(hidden)]
5200            type UnderlyingRustTuple<'a> = (bool,);
5201            #[cfg(test)]
5202            #[allow(dead_code, unreachable_patterns)]
5203            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5204                match _t {
5205                    alloy_sol_types::private::AssertTypeEq::<
5206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5207                    >(_) => {},
5208                }
5209            }
5210            #[automatically_derived]
5211            #[doc(hidden)]
5212            impl ::core::convert::From<isOperationDoneReturn> for UnderlyingRustTuple<'_> {
5213                fn from(value: isOperationDoneReturn) -> Self {
5214                    (value._0,)
5215                }
5216            }
5217            #[automatically_derived]
5218            #[doc(hidden)]
5219            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationDoneReturn {
5220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5221                    Self { _0: tuple.0 }
5222                }
5223            }
5224        }
5225        #[automatically_derived]
5226        impl alloy_sol_types::SolCall for isOperationDoneCall {
5227            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5228            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5229            type Return = isOperationDoneReturn;
5230            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5231            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5232            const SIGNATURE: &'static str = "isOperationDone(bytes32)";
5233            const SELECTOR: [u8; 4] = [42u8, 176u8, 245u8, 41u8];
5234            #[inline]
5235            fn new<'a>(
5236                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5237            ) -> Self {
5238                tuple.into()
5239            }
5240            #[inline]
5241            fn tokenize(&self) -> Self::Token<'_> {
5242                (
5243                    <alloy::sol_types::sol_data::FixedBytes<
5244                        32,
5245                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5246                )
5247            }
5248            #[inline]
5249            fn abi_decode_returns(
5250                data: &[u8],
5251                validate: bool,
5252            ) -> alloy_sol_types::Result<Self::Return> {
5253                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5254                    data, validate,
5255                )
5256                .map(Into::into)
5257            }
5258        }
5259    };
5260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5261    /**Function with signature `isOperationPending(bytes32)` and selector `0x584b153e`.
5262    ```solidity
5263    function isOperationPending(bytes32 id) external view returns (bool);
5264    ```*/
5265    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5266    #[derive(Clone)]
5267    pub struct isOperationPendingCall {
5268        #[allow(missing_docs)]
5269        pub id: alloy::sol_types::private::FixedBytes<32>,
5270    }
5271    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5272    ///Container type for the return parameters of the [`isOperationPending(bytes32)`](isOperationPendingCall) function.
5273    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5274    #[derive(Clone)]
5275    pub struct isOperationPendingReturn {
5276        #[allow(missing_docs)]
5277        pub _0: bool,
5278    }
5279    #[allow(
5280        non_camel_case_types,
5281        non_snake_case,
5282        clippy::pub_underscore_fields,
5283        clippy::style
5284    )]
5285    const _: () = {
5286        use alloy::sol_types as alloy_sol_types;
5287        {
5288            #[doc(hidden)]
5289            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5290            #[doc(hidden)]
5291            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5292            #[cfg(test)]
5293            #[allow(dead_code, unreachable_patterns)]
5294            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5295                match _t {
5296                    alloy_sol_types::private::AssertTypeEq::<
5297                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5298                    >(_) => {},
5299                }
5300            }
5301            #[automatically_derived]
5302            #[doc(hidden)]
5303            impl ::core::convert::From<isOperationPendingCall> for UnderlyingRustTuple<'_> {
5304                fn from(value: isOperationPendingCall) -> Self {
5305                    (value.id,)
5306                }
5307            }
5308            #[automatically_derived]
5309            #[doc(hidden)]
5310            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationPendingCall {
5311                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5312                    Self { id: tuple.0 }
5313                }
5314            }
5315        }
5316        {
5317            #[doc(hidden)]
5318            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5319            #[doc(hidden)]
5320            type UnderlyingRustTuple<'a> = (bool,);
5321            #[cfg(test)]
5322            #[allow(dead_code, unreachable_patterns)]
5323            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5324                match _t {
5325                    alloy_sol_types::private::AssertTypeEq::<
5326                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5327                    >(_) => {},
5328                }
5329            }
5330            #[automatically_derived]
5331            #[doc(hidden)]
5332            impl ::core::convert::From<isOperationPendingReturn> for UnderlyingRustTuple<'_> {
5333                fn from(value: isOperationPendingReturn) -> Self {
5334                    (value._0,)
5335                }
5336            }
5337            #[automatically_derived]
5338            #[doc(hidden)]
5339            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationPendingReturn {
5340                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5341                    Self { _0: tuple.0 }
5342                }
5343            }
5344        }
5345        #[automatically_derived]
5346        impl alloy_sol_types::SolCall for isOperationPendingCall {
5347            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5348            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5349            type Return = isOperationPendingReturn;
5350            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5351            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5352            const SIGNATURE: &'static str = "isOperationPending(bytes32)";
5353            const SELECTOR: [u8; 4] = [88u8, 75u8, 21u8, 62u8];
5354            #[inline]
5355            fn new<'a>(
5356                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5357            ) -> Self {
5358                tuple.into()
5359            }
5360            #[inline]
5361            fn tokenize(&self) -> Self::Token<'_> {
5362                (
5363                    <alloy::sol_types::sol_data::FixedBytes<
5364                        32,
5365                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5366                )
5367            }
5368            #[inline]
5369            fn abi_decode_returns(
5370                data: &[u8],
5371                validate: bool,
5372            ) -> alloy_sol_types::Result<Self::Return> {
5373                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5374                    data, validate,
5375                )
5376                .map(Into::into)
5377            }
5378        }
5379    };
5380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5381    /**Function with signature `isOperationReady(bytes32)` and selector `0x13bc9f20`.
5382    ```solidity
5383    function isOperationReady(bytes32 id) external view returns (bool);
5384    ```*/
5385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5386    #[derive(Clone)]
5387    pub struct isOperationReadyCall {
5388        #[allow(missing_docs)]
5389        pub id: alloy::sol_types::private::FixedBytes<32>,
5390    }
5391    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5392    ///Container type for the return parameters of the [`isOperationReady(bytes32)`](isOperationReadyCall) function.
5393    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5394    #[derive(Clone)]
5395    pub struct isOperationReadyReturn {
5396        #[allow(missing_docs)]
5397        pub _0: bool,
5398    }
5399    #[allow(
5400        non_camel_case_types,
5401        non_snake_case,
5402        clippy::pub_underscore_fields,
5403        clippy::style
5404    )]
5405    const _: () = {
5406        use alloy::sol_types as alloy_sol_types;
5407        {
5408            #[doc(hidden)]
5409            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5410            #[doc(hidden)]
5411            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5412            #[cfg(test)]
5413            #[allow(dead_code, unreachable_patterns)]
5414            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5415                match _t {
5416                    alloy_sol_types::private::AssertTypeEq::<
5417                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5418                    >(_) => {},
5419                }
5420            }
5421            #[automatically_derived]
5422            #[doc(hidden)]
5423            impl ::core::convert::From<isOperationReadyCall> for UnderlyingRustTuple<'_> {
5424                fn from(value: isOperationReadyCall) -> Self {
5425                    (value.id,)
5426                }
5427            }
5428            #[automatically_derived]
5429            #[doc(hidden)]
5430            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationReadyCall {
5431                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5432                    Self { id: tuple.0 }
5433                }
5434            }
5435        }
5436        {
5437            #[doc(hidden)]
5438            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5439            #[doc(hidden)]
5440            type UnderlyingRustTuple<'a> = (bool,);
5441            #[cfg(test)]
5442            #[allow(dead_code, unreachable_patterns)]
5443            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5444                match _t {
5445                    alloy_sol_types::private::AssertTypeEq::<
5446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5447                    >(_) => {},
5448                }
5449            }
5450            #[automatically_derived]
5451            #[doc(hidden)]
5452            impl ::core::convert::From<isOperationReadyReturn> for UnderlyingRustTuple<'_> {
5453                fn from(value: isOperationReadyReturn) -> Self {
5454                    (value._0,)
5455                }
5456            }
5457            #[automatically_derived]
5458            #[doc(hidden)]
5459            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isOperationReadyReturn {
5460                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5461                    Self { _0: tuple.0 }
5462                }
5463            }
5464        }
5465        #[automatically_derived]
5466        impl alloy_sol_types::SolCall for isOperationReadyCall {
5467            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5468            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5469            type Return = isOperationReadyReturn;
5470            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
5471            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5472            const SIGNATURE: &'static str = "isOperationReady(bytes32)";
5473            const SELECTOR: [u8; 4] = [19u8, 188u8, 159u8, 32u8];
5474            #[inline]
5475            fn new<'a>(
5476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5477            ) -> Self {
5478                tuple.into()
5479            }
5480            #[inline]
5481            fn tokenize(&self) -> Self::Token<'_> {
5482                (
5483                    <alloy::sol_types::sol_data::FixedBytes<
5484                        32,
5485                    > as alloy_sol_types::SolType>::tokenize(&self.id),
5486                )
5487            }
5488            #[inline]
5489            fn abi_decode_returns(
5490                data: &[u8],
5491                validate: bool,
5492            ) -> alloy_sol_types::Result<Self::Return> {
5493                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5494                    data, validate,
5495                )
5496                .map(Into::into)
5497            }
5498        }
5499    };
5500    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5501    /**Function with signature `onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)` and selector `0xbc197c81`.
5502    ```solidity
5503    function onERC1155BatchReceived(address, address, uint256[] memory, uint256[] memory, bytes memory) external returns (bytes4);
5504    ```*/
5505    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5506    #[derive(Clone)]
5507    pub struct onERC1155BatchReceivedCall {
5508        #[allow(missing_docs)]
5509        pub _0: alloy::sol_types::private::Address,
5510        #[allow(missing_docs)]
5511        pub _1: alloy::sol_types::private::Address,
5512        #[allow(missing_docs)]
5513        pub _2:
5514            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
5515        #[allow(missing_docs)]
5516        pub _3:
5517            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
5518        #[allow(missing_docs)]
5519        pub _4: alloy::sol_types::private::Bytes,
5520    }
5521    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5522    ///Container type for the return parameters of the [`onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)`](onERC1155BatchReceivedCall) function.
5523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5524    #[derive(Clone)]
5525    pub struct onERC1155BatchReceivedReturn {
5526        #[allow(missing_docs)]
5527        pub _0: alloy::sol_types::private::FixedBytes<4>,
5528    }
5529    #[allow(
5530        non_camel_case_types,
5531        non_snake_case,
5532        clippy::pub_underscore_fields,
5533        clippy::style
5534    )]
5535    const _: () = {
5536        use alloy::sol_types as alloy_sol_types;
5537        {
5538            #[doc(hidden)]
5539            type UnderlyingSolTuple<'a> = (
5540                alloy::sol_types::sol_data::Address,
5541                alloy::sol_types::sol_data::Address,
5542                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5543                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5544                alloy::sol_types::sol_data::Bytes,
5545            );
5546            #[doc(hidden)]
5547            type UnderlyingRustTuple<'a> = (
5548                alloy::sol_types::private::Address,
5549                alloy::sol_types::private::Address,
5550                alloy::sol_types::private::Vec<
5551                    alloy::sol_types::private::primitives::aliases::U256,
5552                >,
5553                alloy::sol_types::private::Vec<
5554                    alloy::sol_types::private::primitives::aliases::U256,
5555                >,
5556                alloy::sol_types::private::Bytes,
5557            );
5558            #[cfg(test)]
5559            #[allow(dead_code, unreachable_patterns)]
5560            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5561                match _t {
5562                    alloy_sol_types::private::AssertTypeEq::<
5563                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5564                    >(_) => {},
5565                }
5566            }
5567            #[automatically_derived]
5568            #[doc(hidden)]
5569            impl ::core::convert::From<onERC1155BatchReceivedCall> for UnderlyingRustTuple<'_> {
5570                fn from(value: onERC1155BatchReceivedCall) -> Self {
5571                    (value._0, value._1, value._2, value._3, value._4)
5572                }
5573            }
5574            #[automatically_derived]
5575            #[doc(hidden)]
5576            impl ::core::convert::From<UnderlyingRustTuple<'_>> for onERC1155BatchReceivedCall {
5577                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5578                    Self {
5579                        _0: tuple.0,
5580                        _1: tuple.1,
5581                        _2: tuple.2,
5582                        _3: tuple.3,
5583                        _4: tuple.4,
5584                    }
5585                }
5586            }
5587        }
5588        {
5589            #[doc(hidden)]
5590            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
5591            #[doc(hidden)]
5592            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
5593            #[cfg(test)]
5594            #[allow(dead_code, unreachable_patterns)]
5595            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5596                match _t {
5597                    alloy_sol_types::private::AssertTypeEq::<
5598                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5599                    >(_) => {},
5600                }
5601            }
5602            #[automatically_derived]
5603            #[doc(hidden)]
5604            impl ::core::convert::From<onERC1155BatchReceivedReturn> for UnderlyingRustTuple<'_> {
5605                fn from(value: onERC1155BatchReceivedReturn) -> Self {
5606                    (value._0,)
5607                }
5608            }
5609            #[automatically_derived]
5610            #[doc(hidden)]
5611            impl ::core::convert::From<UnderlyingRustTuple<'_>> for onERC1155BatchReceivedReturn {
5612                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5613                    Self { _0: tuple.0 }
5614                }
5615            }
5616        }
5617        #[automatically_derived]
5618        impl alloy_sol_types::SolCall for onERC1155BatchReceivedCall {
5619            type Parameters<'a> = (
5620                alloy::sol_types::sol_data::Address,
5621                alloy::sol_types::sol_data::Address,
5622                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5623                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
5624                alloy::sol_types::sol_data::Bytes,
5625            );
5626            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5627            type Return = onERC1155BatchReceivedReturn;
5628            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
5629            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5630            const SIGNATURE: &'static str =
5631                "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)";
5632            const SELECTOR: [u8; 4] = [188u8, 25u8, 124u8, 129u8];
5633            #[inline]
5634            fn new<'a>(
5635                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5636            ) -> Self {
5637                tuple.into()
5638            }
5639            #[inline]
5640            fn tokenize(&self) -> Self::Token<'_> {
5641                (
5642                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5643                        &self._0,
5644                    ),
5645                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5646                        &self._1,
5647                    ),
5648                    <alloy::sol_types::sol_data::Array<
5649                        alloy::sol_types::sol_data::Uint<256>,
5650                    > as alloy_sol_types::SolType>::tokenize(&self._2),
5651                    <alloy::sol_types::sol_data::Array<
5652                        alloy::sol_types::sol_data::Uint<256>,
5653                    > as alloy_sol_types::SolType>::tokenize(&self._3),
5654                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5655                        &self._4,
5656                    ),
5657                )
5658            }
5659            #[inline]
5660            fn abi_decode_returns(
5661                data: &[u8],
5662                validate: bool,
5663            ) -> alloy_sol_types::Result<Self::Return> {
5664                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5665                    data, validate,
5666                )
5667                .map(Into::into)
5668            }
5669        }
5670    };
5671    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5672    /**Function with signature `onERC1155Received(address,address,uint256,uint256,bytes)` and selector `0xf23a6e61`.
5673    ```solidity
5674    function onERC1155Received(address, address, uint256, uint256, bytes memory) external returns (bytes4);
5675    ```*/
5676    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5677    #[derive(Clone)]
5678    pub struct onERC1155ReceivedCall {
5679        #[allow(missing_docs)]
5680        pub _0: alloy::sol_types::private::Address,
5681        #[allow(missing_docs)]
5682        pub _1: alloy::sol_types::private::Address,
5683        #[allow(missing_docs)]
5684        pub _2: alloy::sol_types::private::primitives::aliases::U256,
5685        #[allow(missing_docs)]
5686        pub _3: alloy::sol_types::private::primitives::aliases::U256,
5687        #[allow(missing_docs)]
5688        pub _4: alloy::sol_types::private::Bytes,
5689    }
5690    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5691    ///Container type for the return parameters of the [`onERC1155Received(address,address,uint256,uint256,bytes)`](onERC1155ReceivedCall) function.
5692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5693    #[derive(Clone)]
5694    pub struct onERC1155ReceivedReturn {
5695        #[allow(missing_docs)]
5696        pub _0: alloy::sol_types::private::FixedBytes<4>,
5697    }
5698    #[allow(
5699        non_camel_case_types,
5700        non_snake_case,
5701        clippy::pub_underscore_fields,
5702        clippy::style
5703    )]
5704    const _: () = {
5705        use alloy::sol_types as alloy_sol_types;
5706        {
5707            #[doc(hidden)]
5708            type UnderlyingSolTuple<'a> = (
5709                alloy::sol_types::sol_data::Address,
5710                alloy::sol_types::sol_data::Address,
5711                alloy::sol_types::sol_data::Uint<256>,
5712                alloy::sol_types::sol_data::Uint<256>,
5713                alloy::sol_types::sol_data::Bytes,
5714            );
5715            #[doc(hidden)]
5716            type UnderlyingRustTuple<'a> = (
5717                alloy::sol_types::private::Address,
5718                alloy::sol_types::private::Address,
5719                alloy::sol_types::private::primitives::aliases::U256,
5720                alloy::sol_types::private::primitives::aliases::U256,
5721                alloy::sol_types::private::Bytes,
5722            );
5723            #[cfg(test)]
5724            #[allow(dead_code, unreachable_patterns)]
5725            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5726                match _t {
5727                    alloy_sol_types::private::AssertTypeEq::<
5728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5729                    >(_) => {},
5730                }
5731            }
5732            #[automatically_derived]
5733            #[doc(hidden)]
5734            impl ::core::convert::From<onERC1155ReceivedCall> for UnderlyingRustTuple<'_> {
5735                fn from(value: onERC1155ReceivedCall) -> Self {
5736                    (value._0, value._1, value._2, value._3, value._4)
5737                }
5738            }
5739            #[automatically_derived]
5740            #[doc(hidden)]
5741            impl ::core::convert::From<UnderlyingRustTuple<'_>> for onERC1155ReceivedCall {
5742                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5743                    Self {
5744                        _0: tuple.0,
5745                        _1: tuple.1,
5746                        _2: tuple.2,
5747                        _3: tuple.3,
5748                        _4: tuple.4,
5749                    }
5750                }
5751            }
5752        }
5753        {
5754            #[doc(hidden)]
5755            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
5756            #[doc(hidden)]
5757            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
5758            #[cfg(test)]
5759            #[allow(dead_code, unreachable_patterns)]
5760            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5761                match _t {
5762                    alloy_sol_types::private::AssertTypeEq::<
5763                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5764                    >(_) => {},
5765                }
5766            }
5767            #[automatically_derived]
5768            #[doc(hidden)]
5769            impl ::core::convert::From<onERC1155ReceivedReturn> for UnderlyingRustTuple<'_> {
5770                fn from(value: onERC1155ReceivedReturn) -> Self {
5771                    (value._0,)
5772                }
5773            }
5774            #[automatically_derived]
5775            #[doc(hidden)]
5776            impl ::core::convert::From<UnderlyingRustTuple<'_>> for onERC1155ReceivedReturn {
5777                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5778                    Self { _0: tuple.0 }
5779                }
5780            }
5781        }
5782        #[automatically_derived]
5783        impl alloy_sol_types::SolCall for onERC1155ReceivedCall {
5784            type Parameters<'a> = (
5785                alloy::sol_types::sol_data::Address,
5786                alloy::sol_types::sol_data::Address,
5787                alloy::sol_types::sol_data::Uint<256>,
5788                alloy::sol_types::sol_data::Uint<256>,
5789                alloy::sol_types::sol_data::Bytes,
5790            );
5791            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5792            type Return = onERC1155ReceivedReturn;
5793            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
5794            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5795            const SIGNATURE: &'static str =
5796                "onERC1155Received(address,address,uint256,uint256,bytes)";
5797            const SELECTOR: [u8; 4] = [242u8, 58u8, 110u8, 97u8];
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::Address as alloy_sol_types::SolType>::tokenize(
5808                        &self._0,
5809                    ),
5810                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5811                        &self._1,
5812                    ),
5813                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5814                        &self._2,
5815                    ),
5816                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5817                        &self._3,
5818                    ),
5819                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5820                        &self._4,
5821                    ),
5822                )
5823            }
5824            #[inline]
5825            fn abi_decode_returns(
5826                data: &[u8],
5827                validate: bool,
5828            ) -> alloy_sol_types::Result<Self::Return> {
5829                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5830                    data, validate,
5831                )
5832                .map(Into::into)
5833            }
5834        }
5835    };
5836    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5837    /**Function with signature `onERC721Received(address,address,uint256,bytes)` and selector `0x150b7a02`.
5838    ```solidity
5839    function onERC721Received(address, address, uint256, bytes memory) external returns (bytes4);
5840    ```*/
5841    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5842    #[derive(Clone)]
5843    pub struct onERC721ReceivedCall {
5844        #[allow(missing_docs)]
5845        pub _0: alloy::sol_types::private::Address,
5846        #[allow(missing_docs)]
5847        pub _1: alloy::sol_types::private::Address,
5848        #[allow(missing_docs)]
5849        pub _2: alloy::sol_types::private::primitives::aliases::U256,
5850        #[allow(missing_docs)]
5851        pub _3: alloy::sol_types::private::Bytes,
5852    }
5853    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5854    ///Container type for the return parameters of the [`onERC721Received(address,address,uint256,bytes)`](onERC721ReceivedCall) function.
5855    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5856    #[derive(Clone)]
5857    pub struct onERC721ReceivedReturn {
5858        #[allow(missing_docs)]
5859        pub _0: alloy::sol_types::private::FixedBytes<4>,
5860    }
5861    #[allow(
5862        non_camel_case_types,
5863        non_snake_case,
5864        clippy::pub_underscore_fields,
5865        clippy::style
5866    )]
5867    const _: () = {
5868        use alloy::sol_types as alloy_sol_types;
5869        {
5870            #[doc(hidden)]
5871            type UnderlyingSolTuple<'a> = (
5872                alloy::sol_types::sol_data::Address,
5873                alloy::sol_types::sol_data::Address,
5874                alloy::sol_types::sol_data::Uint<256>,
5875                alloy::sol_types::sol_data::Bytes,
5876            );
5877            #[doc(hidden)]
5878            type UnderlyingRustTuple<'a> = (
5879                alloy::sol_types::private::Address,
5880                alloy::sol_types::private::Address,
5881                alloy::sol_types::private::primitives::aliases::U256,
5882                alloy::sol_types::private::Bytes,
5883            );
5884            #[cfg(test)]
5885            #[allow(dead_code, unreachable_patterns)]
5886            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5887                match _t {
5888                    alloy_sol_types::private::AssertTypeEq::<
5889                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5890                    >(_) => {},
5891                }
5892            }
5893            #[automatically_derived]
5894            #[doc(hidden)]
5895            impl ::core::convert::From<onERC721ReceivedCall> for UnderlyingRustTuple<'_> {
5896                fn from(value: onERC721ReceivedCall) -> Self {
5897                    (value._0, value._1, value._2, value._3)
5898                }
5899            }
5900            #[automatically_derived]
5901            #[doc(hidden)]
5902            impl ::core::convert::From<UnderlyingRustTuple<'_>> for onERC721ReceivedCall {
5903                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5904                    Self {
5905                        _0: tuple.0,
5906                        _1: tuple.1,
5907                        _2: tuple.2,
5908                        _3: tuple.3,
5909                    }
5910                }
5911            }
5912        }
5913        {
5914            #[doc(hidden)]
5915            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
5916            #[doc(hidden)]
5917            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
5918            #[cfg(test)]
5919            #[allow(dead_code, unreachable_patterns)]
5920            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
5921                match _t {
5922                    alloy_sol_types::private::AssertTypeEq::<
5923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5924                    >(_) => {},
5925                }
5926            }
5927            #[automatically_derived]
5928            #[doc(hidden)]
5929            impl ::core::convert::From<onERC721ReceivedReturn> for UnderlyingRustTuple<'_> {
5930                fn from(value: onERC721ReceivedReturn) -> Self {
5931                    (value._0,)
5932                }
5933            }
5934            #[automatically_derived]
5935            #[doc(hidden)]
5936            impl ::core::convert::From<UnderlyingRustTuple<'_>> for onERC721ReceivedReturn {
5937                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5938                    Self { _0: tuple.0 }
5939                }
5940            }
5941        }
5942        #[automatically_derived]
5943        impl alloy_sol_types::SolCall for onERC721ReceivedCall {
5944            type Parameters<'a> = (
5945                alloy::sol_types::sol_data::Address,
5946                alloy::sol_types::sol_data::Address,
5947                alloy::sol_types::sol_data::Uint<256>,
5948                alloy::sol_types::sol_data::Bytes,
5949            );
5950            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
5951            type Return = onERC721ReceivedReturn;
5952            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
5953            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
5954            const SIGNATURE: &'static str = "onERC721Received(address,address,uint256,bytes)";
5955            const SELECTOR: [u8; 4] = [21u8, 11u8, 122u8, 2u8];
5956            #[inline]
5957            fn new<'a>(
5958                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5959            ) -> Self {
5960                tuple.into()
5961            }
5962            #[inline]
5963            fn tokenize(&self) -> Self::Token<'_> {
5964                (
5965                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5966                        &self._0,
5967                    ),
5968                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5969                        &self._1,
5970                    ),
5971                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
5972                        &self._2,
5973                    ),
5974                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
5975                        &self._3,
5976                    ),
5977                )
5978            }
5979            #[inline]
5980            fn abi_decode_returns(
5981                data: &[u8],
5982                validate: bool,
5983            ) -> alloy_sol_types::Result<Self::Return> {
5984                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
5985                    data, validate,
5986                )
5987                .map(Into::into)
5988            }
5989        }
5990    };
5991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5992    /**Function with signature `renounceRole(bytes32,address)` and selector `0x36568abe`.
5993    ```solidity
5994    function renounceRole(bytes32 role, address callerConfirmation) external;
5995    ```*/
5996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5997    #[derive(Clone)]
5998    pub struct renounceRoleCall {
5999        #[allow(missing_docs)]
6000        pub role: alloy::sol_types::private::FixedBytes<32>,
6001        #[allow(missing_docs)]
6002        pub callerConfirmation: alloy::sol_types::private::Address,
6003    }
6004    ///Container type for the return parameters of the [`renounceRole(bytes32,address)`](renounceRoleCall) function.
6005    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6006    #[derive(Clone)]
6007    pub struct renounceRoleReturn {}
6008    #[allow(
6009        non_camel_case_types,
6010        non_snake_case,
6011        clippy::pub_underscore_fields,
6012        clippy::style
6013    )]
6014    const _: () = {
6015        use alloy::sol_types as alloy_sol_types;
6016        {
6017            #[doc(hidden)]
6018            type UnderlyingSolTuple<'a> = (
6019                alloy::sol_types::sol_data::FixedBytes<32>,
6020                alloy::sol_types::sol_data::Address,
6021            );
6022            #[doc(hidden)]
6023            type UnderlyingRustTuple<'a> = (
6024                alloy::sol_types::private::FixedBytes<32>,
6025                alloy::sol_types::private::Address,
6026            );
6027            #[cfg(test)]
6028            #[allow(dead_code, unreachable_patterns)]
6029            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6030                match _t {
6031                    alloy_sol_types::private::AssertTypeEq::<
6032                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6033                    >(_) => {},
6034                }
6035            }
6036            #[automatically_derived]
6037            #[doc(hidden)]
6038            impl ::core::convert::From<renounceRoleCall> for UnderlyingRustTuple<'_> {
6039                fn from(value: renounceRoleCall) -> Self {
6040                    (value.role, value.callerConfirmation)
6041                }
6042            }
6043            #[automatically_derived]
6044            #[doc(hidden)]
6045            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleCall {
6046                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6047                    Self {
6048                        role: tuple.0,
6049                        callerConfirmation: tuple.1,
6050                    }
6051                }
6052            }
6053        }
6054        {
6055            #[doc(hidden)]
6056            type UnderlyingSolTuple<'a> = ();
6057            #[doc(hidden)]
6058            type UnderlyingRustTuple<'a> = ();
6059            #[cfg(test)]
6060            #[allow(dead_code, unreachable_patterns)]
6061            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6062                match _t {
6063                    alloy_sol_types::private::AssertTypeEq::<
6064                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6065                    >(_) => {},
6066                }
6067            }
6068            #[automatically_derived]
6069            #[doc(hidden)]
6070            impl ::core::convert::From<renounceRoleReturn> for UnderlyingRustTuple<'_> {
6071                fn from(value: renounceRoleReturn) -> Self {
6072                    ()
6073                }
6074            }
6075            #[automatically_derived]
6076            #[doc(hidden)]
6077            impl ::core::convert::From<UnderlyingRustTuple<'_>> for renounceRoleReturn {
6078                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6079                    Self {}
6080                }
6081            }
6082        }
6083        #[automatically_derived]
6084        impl alloy_sol_types::SolCall for renounceRoleCall {
6085            type Parameters<'a> = (
6086                alloy::sol_types::sol_data::FixedBytes<32>,
6087                alloy::sol_types::sol_data::Address,
6088            );
6089            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6090            type Return = renounceRoleReturn;
6091            type ReturnTuple<'a> = ();
6092            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6093            const SIGNATURE: &'static str = "renounceRole(bytes32,address)";
6094            const SELECTOR: [u8; 4] = [54u8, 86u8, 138u8, 190u8];
6095            #[inline]
6096            fn new<'a>(
6097                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6098            ) -> Self {
6099                tuple.into()
6100            }
6101            #[inline]
6102            fn tokenize(&self) -> Self::Token<'_> {
6103                (
6104                    <alloy::sol_types::sol_data::FixedBytes<
6105                        32,
6106                    > as alloy_sol_types::SolType>::tokenize(&self.role),
6107                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6108                        &self.callerConfirmation,
6109                    ),
6110                )
6111            }
6112            #[inline]
6113            fn abi_decode_returns(
6114                data: &[u8],
6115                validate: bool,
6116            ) -> alloy_sol_types::Result<Self::Return> {
6117                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6118                    data, validate,
6119                )
6120                .map(Into::into)
6121            }
6122        }
6123    };
6124    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6125    /**Function with signature `revokeRole(bytes32,address)` and selector `0xd547741f`.
6126    ```solidity
6127    function revokeRole(bytes32 role, address account) external;
6128    ```*/
6129    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6130    #[derive(Clone)]
6131    pub struct revokeRoleCall {
6132        #[allow(missing_docs)]
6133        pub role: alloy::sol_types::private::FixedBytes<32>,
6134        #[allow(missing_docs)]
6135        pub account: alloy::sol_types::private::Address,
6136    }
6137    ///Container type for the return parameters of the [`revokeRole(bytes32,address)`](revokeRoleCall) function.
6138    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6139    #[derive(Clone)]
6140    pub struct revokeRoleReturn {}
6141    #[allow(
6142        non_camel_case_types,
6143        non_snake_case,
6144        clippy::pub_underscore_fields,
6145        clippy::style
6146    )]
6147    const _: () = {
6148        use alloy::sol_types as alloy_sol_types;
6149        {
6150            #[doc(hidden)]
6151            type UnderlyingSolTuple<'a> = (
6152                alloy::sol_types::sol_data::FixedBytes<32>,
6153                alloy::sol_types::sol_data::Address,
6154            );
6155            #[doc(hidden)]
6156            type UnderlyingRustTuple<'a> = (
6157                alloy::sol_types::private::FixedBytes<32>,
6158                alloy::sol_types::private::Address,
6159            );
6160            #[cfg(test)]
6161            #[allow(dead_code, unreachable_patterns)]
6162            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6163                match _t {
6164                    alloy_sol_types::private::AssertTypeEq::<
6165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6166                    >(_) => {},
6167                }
6168            }
6169            #[automatically_derived]
6170            #[doc(hidden)]
6171            impl ::core::convert::From<revokeRoleCall> for UnderlyingRustTuple<'_> {
6172                fn from(value: revokeRoleCall) -> Self {
6173                    (value.role, value.account)
6174                }
6175            }
6176            #[automatically_derived]
6177            #[doc(hidden)]
6178            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleCall {
6179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6180                    Self {
6181                        role: tuple.0,
6182                        account: tuple.1,
6183                    }
6184                }
6185            }
6186        }
6187        {
6188            #[doc(hidden)]
6189            type UnderlyingSolTuple<'a> = ();
6190            #[doc(hidden)]
6191            type UnderlyingRustTuple<'a> = ();
6192            #[cfg(test)]
6193            #[allow(dead_code, unreachable_patterns)]
6194            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6195                match _t {
6196                    alloy_sol_types::private::AssertTypeEq::<
6197                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6198                    >(_) => {},
6199                }
6200            }
6201            #[automatically_derived]
6202            #[doc(hidden)]
6203            impl ::core::convert::From<revokeRoleReturn> for UnderlyingRustTuple<'_> {
6204                fn from(value: revokeRoleReturn) -> Self {
6205                    ()
6206                }
6207            }
6208            #[automatically_derived]
6209            #[doc(hidden)]
6210            impl ::core::convert::From<UnderlyingRustTuple<'_>> for revokeRoleReturn {
6211                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6212                    Self {}
6213                }
6214            }
6215        }
6216        #[automatically_derived]
6217        impl alloy_sol_types::SolCall for revokeRoleCall {
6218            type Parameters<'a> = (
6219                alloy::sol_types::sol_data::FixedBytes<32>,
6220                alloy::sol_types::sol_data::Address,
6221            );
6222            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6223            type Return = revokeRoleReturn;
6224            type ReturnTuple<'a> = ();
6225            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6226            const SIGNATURE: &'static str = "revokeRole(bytes32,address)";
6227            const SELECTOR: [u8; 4] = [213u8, 71u8, 116u8, 31u8];
6228            #[inline]
6229            fn new<'a>(
6230                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6231            ) -> Self {
6232                tuple.into()
6233            }
6234            #[inline]
6235            fn tokenize(&self) -> Self::Token<'_> {
6236                (
6237                    <alloy::sol_types::sol_data::FixedBytes<
6238                        32,
6239                    > as alloy_sol_types::SolType>::tokenize(&self.role),
6240                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6241                        &self.account,
6242                    ),
6243                )
6244            }
6245            #[inline]
6246            fn abi_decode_returns(
6247                data: &[u8],
6248                validate: bool,
6249            ) -> alloy_sol_types::Result<Self::Return> {
6250                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6251                    data, validate,
6252                )
6253                .map(Into::into)
6254            }
6255        }
6256    };
6257    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6258    /**Function with signature `schedule(address,uint256,bytes,bytes32,bytes32,uint256)` and selector `0x01d5062a`.
6259    ```solidity
6260    function schedule(address target, uint256 value, bytes memory data, bytes32 predecessor, bytes32 salt, uint256 delay) external;
6261    ```*/
6262    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6263    #[derive(Clone)]
6264    pub struct scheduleCall {
6265        #[allow(missing_docs)]
6266        pub target: alloy::sol_types::private::Address,
6267        #[allow(missing_docs)]
6268        pub value: alloy::sol_types::private::primitives::aliases::U256,
6269        #[allow(missing_docs)]
6270        pub data: alloy::sol_types::private::Bytes,
6271        #[allow(missing_docs)]
6272        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
6273        #[allow(missing_docs)]
6274        pub salt: alloy::sol_types::private::FixedBytes<32>,
6275        #[allow(missing_docs)]
6276        pub delay: alloy::sol_types::private::primitives::aliases::U256,
6277    }
6278    ///Container type for the return parameters of the [`schedule(address,uint256,bytes,bytes32,bytes32,uint256)`](scheduleCall) function.
6279    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6280    #[derive(Clone)]
6281    pub struct scheduleReturn {}
6282    #[allow(
6283        non_camel_case_types,
6284        non_snake_case,
6285        clippy::pub_underscore_fields,
6286        clippy::style
6287    )]
6288    const _: () = {
6289        use alloy::sol_types as alloy_sol_types;
6290        {
6291            #[doc(hidden)]
6292            type UnderlyingSolTuple<'a> = (
6293                alloy::sol_types::sol_data::Address,
6294                alloy::sol_types::sol_data::Uint<256>,
6295                alloy::sol_types::sol_data::Bytes,
6296                alloy::sol_types::sol_data::FixedBytes<32>,
6297                alloy::sol_types::sol_data::FixedBytes<32>,
6298                alloy::sol_types::sol_data::Uint<256>,
6299            );
6300            #[doc(hidden)]
6301            type UnderlyingRustTuple<'a> = (
6302                alloy::sol_types::private::Address,
6303                alloy::sol_types::private::primitives::aliases::U256,
6304                alloy::sol_types::private::Bytes,
6305                alloy::sol_types::private::FixedBytes<32>,
6306                alloy::sol_types::private::FixedBytes<32>,
6307                alloy::sol_types::private::primitives::aliases::U256,
6308            );
6309            #[cfg(test)]
6310            #[allow(dead_code, unreachable_patterns)]
6311            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6312                match _t {
6313                    alloy_sol_types::private::AssertTypeEq::<
6314                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6315                    >(_) => {},
6316                }
6317            }
6318            #[automatically_derived]
6319            #[doc(hidden)]
6320            impl ::core::convert::From<scheduleCall> for UnderlyingRustTuple<'_> {
6321                fn from(value: scheduleCall) -> Self {
6322                    (
6323                        value.target,
6324                        value.value,
6325                        value.data,
6326                        value.predecessor,
6327                        value.salt,
6328                        value.delay,
6329                    )
6330                }
6331            }
6332            #[automatically_derived]
6333            #[doc(hidden)]
6334            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleCall {
6335                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6336                    Self {
6337                        target: tuple.0,
6338                        value: tuple.1,
6339                        data: tuple.2,
6340                        predecessor: tuple.3,
6341                        salt: tuple.4,
6342                        delay: tuple.5,
6343                    }
6344                }
6345            }
6346        }
6347        {
6348            #[doc(hidden)]
6349            type UnderlyingSolTuple<'a> = ();
6350            #[doc(hidden)]
6351            type UnderlyingRustTuple<'a> = ();
6352            #[cfg(test)]
6353            #[allow(dead_code, unreachable_patterns)]
6354            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6355                match _t {
6356                    alloy_sol_types::private::AssertTypeEq::<
6357                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6358                    >(_) => {},
6359                }
6360            }
6361            #[automatically_derived]
6362            #[doc(hidden)]
6363            impl ::core::convert::From<scheduleReturn> for UnderlyingRustTuple<'_> {
6364                fn from(value: scheduleReturn) -> Self {
6365                    ()
6366                }
6367            }
6368            #[automatically_derived]
6369            #[doc(hidden)]
6370            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleReturn {
6371                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6372                    Self {}
6373                }
6374            }
6375        }
6376        #[automatically_derived]
6377        impl alloy_sol_types::SolCall for scheduleCall {
6378            type Parameters<'a> = (
6379                alloy::sol_types::sol_data::Address,
6380                alloy::sol_types::sol_data::Uint<256>,
6381                alloy::sol_types::sol_data::Bytes,
6382                alloy::sol_types::sol_data::FixedBytes<32>,
6383                alloy::sol_types::sol_data::FixedBytes<32>,
6384                alloy::sol_types::sol_data::Uint<256>,
6385            );
6386            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6387            type Return = scheduleReturn;
6388            type ReturnTuple<'a> = ();
6389            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6390            const SIGNATURE: &'static str =
6391                "schedule(address,uint256,bytes,bytes32,bytes32,uint256)";
6392            const SELECTOR: [u8; 4] = [1u8, 213u8, 6u8, 42u8];
6393            #[inline]
6394            fn new<'a>(
6395                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6396            ) -> Self {
6397                tuple.into()
6398            }
6399            #[inline]
6400            fn tokenize(&self) -> Self::Token<'_> {
6401                (
6402                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6403                        &self.target,
6404                    ),
6405                    <alloy::sol_types::sol_data::Uint<
6406                        256,
6407                    > as alloy_sol_types::SolType>::tokenize(&self.value),
6408                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
6409                        &self.data,
6410                    ),
6411                    <alloy::sol_types::sol_data::FixedBytes<
6412                        32,
6413                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
6414                    <alloy::sol_types::sol_data::FixedBytes<
6415                        32,
6416                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
6417                    <alloy::sol_types::sol_data::Uint<
6418                        256,
6419                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
6420                )
6421            }
6422            #[inline]
6423            fn abi_decode_returns(
6424                data: &[u8],
6425                validate: bool,
6426            ) -> alloy_sol_types::Result<Self::Return> {
6427                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6428                    data, validate,
6429                )
6430                .map(Into::into)
6431            }
6432        }
6433    };
6434    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6435    /**Function with signature `scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)` and selector `0x8f2a0bb0`.
6436    ```solidity
6437    function scheduleBatch(address[] memory targets, uint256[] memory values, bytes[] memory payloads, bytes32 predecessor, bytes32 salt, uint256 delay) external;
6438    ```*/
6439    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6440    #[derive(Clone)]
6441    pub struct scheduleBatchCall {
6442        #[allow(missing_docs)]
6443        pub targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6444        #[allow(missing_docs)]
6445        pub values:
6446            alloy::sol_types::private::Vec<alloy::sol_types::private::primitives::aliases::U256>,
6447        #[allow(missing_docs)]
6448        pub payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
6449        #[allow(missing_docs)]
6450        pub predecessor: alloy::sol_types::private::FixedBytes<32>,
6451        #[allow(missing_docs)]
6452        pub salt: alloy::sol_types::private::FixedBytes<32>,
6453        #[allow(missing_docs)]
6454        pub delay: alloy::sol_types::private::primitives::aliases::U256,
6455    }
6456    ///Container type for the return parameters of the [`scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)`](scheduleBatchCall) function.
6457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6458    #[derive(Clone)]
6459    pub struct scheduleBatchReturn {}
6460    #[allow(
6461        non_camel_case_types,
6462        non_snake_case,
6463        clippy::pub_underscore_fields,
6464        clippy::style
6465    )]
6466    const _: () = {
6467        use alloy::sol_types as alloy_sol_types;
6468        {
6469            #[doc(hidden)]
6470            type UnderlyingSolTuple<'a> = (
6471                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6472                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6473                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
6474                alloy::sol_types::sol_data::FixedBytes<32>,
6475                alloy::sol_types::sol_data::FixedBytes<32>,
6476                alloy::sol_types::sol_data::Uint<256>,
6477            );
6478            #[doc(hidden)]
6479            type UnderlyingRustTuple<'a> = (
6480                alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
6481                alloy::sol_types::private::Vec<
6482                    alloy::sol_types::private::primitives::aliases::U256,
6483                >,
6484                alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
6485                alloy::sol_types::private::FixedBytes<32>,
6486                alloy::sol_types::private::FixedBytes<32>,
6487                alloy::sol_types::private::primitives::aliases::U256,
6488            );
6489            #[cfg(test)]
6490            #[allow(dead_code, unreachable_patterns)]
6491            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6492                match _t {
6493                    alloy_sol_types::private::AssertTypeEq::<
6494                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6495                    >(_) => {},
6496                }
6497            }
6498            #[automatically_derived]
6499            #[doc(hidden)]
6500            impl ::core::convert::From<scheduleBatchCall> for UnderlyingRustTuple<'_> {
6501                fn from(value: scheduleBatchCall) -> Self {
6502                    (
6503                        value.targets,
6504                        value.values,
6505                        value.payloads,
6506                        value.predecessor,
6507                        value.salt,
6508                        value.delay,
6509                    )
6510                }
6511            }
6512            #[automatically_derived]
6513            #[doc(hidden)]
6514            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchCall {
6515                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6516                    Self {
6517                        targets: tuple.0,
6518                        values: tuple.1,
6519                        payloads: tuple.2,
6520                        predecessor: tuple.3,
6521                        salt: tuple.4,
6522                        delay: tuple.5,
6523                    }
6524                }
6525            }
6526        }
6527        {
6528            #[doc(hidden)]
6529            type UnderlyingSolTuple<'a> = ();
6530            #[doc(hidden)]
6531            type UnderlyingRustTuple<'a> = ();
6532            #[cfg(test)]
6533            #[allow(dead_code, unreachable_patterns)]
6534            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6535                match _t {
6536                    alloy_sol_types::private::AssertTypeEq::<
6537                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6538                    >(_) => {},
6539                }
6540            }
6541            #[automatically_derived]
6542            #[doc(hidden)]
6543            impl ::core::convert::From<scheduleBatchReturn> for UnderlyingRustTuple<'_> {
6544                fn from(value: scheduleBatchReturn) -> Self {
6545                    ()
6546                }
6547            }
6548            #[automatically_derived]
6549            #[doc(hidden)]
6550            impl ::core::convert::From<UnderlyingRustTuple<'_>> for scheduleBatchReturn {
6551                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6552                    Self {}
6553                }
6554            }
6555        }
6556        #[automatically_derived]
6557        impl alloy_sol_types::SolCall for scheduleBatchCall {
6558            type Parameters<'a> = (
6559                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Address>,
6560                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
6561                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Bytes>,
6562                alloy::sol_types::sol_data::FixedBytes<32>,
6563                alloy::sol_types::sol_data::FixedBytes<32>,
6564                alloy::sol_types::sol_data::Uint<256>,
6565            );
6566            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6567            type Return = scheduleBatchReturn;
6568            type ReturnTuple<'a> = ();
6569            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6570            const SIGNATURE: &'static str =
6571                "scheduleBatch(address[],uint256[],bytes[],bytes32,bytes32,uint256)";
6572            const SELECTOR: [u8; 4] = [143u8, 42u8, 11u8, 176u8];
6573            #[inline]
6574            fn new<'a>(
6575                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6576            ) -> Self {
6577                tuple.into()
6578            }
6579            #[inline]
6580            fn tokenize(&self) -> Self::Token<'_> {
6581                (
6582                    <alloy::sol_types::sol_data::Array<
6583                        alloy::sol_types::sol_data::Address,
6584                    > as alloy_sol_types::SolType>::tokenize(&self.targets),
6585                    <alloy::sol_types::sol_data::Array<
6586                        alloy::sol_types::sol_data::Uint<256>,
6587                    > as alloy_sol_types::SolType>::tokenize(&self.values),
6588                    <alloy::sol_types::sol_data::Array<
6589                        alloy::sol_types::sol_data::Bytes,
6590                    > as alloy_sol_types::SolType>::tokenize(&self.payloads),
6591                    <alloy::sol_types::sol_data::FixedBytes<
6592                        32,
6593                    > as alloy_sol_types::SolType>::tokenize(&self.predecessor),
6594                    <alloy::sol_types::sol_data::FixedBytes<
6595                        32,
6596                    > as alloy_sol_types::SolType>::tokenize(&self.salt),
6597                    <alloy::sol_types::sol_data::Uint<
6598                        256,
6599                    > as alloy_sol_types::SolType>::tokenize(&self.delay),
6600                )
6601            }
6602            #[inline]
6603            fn abi_decode_returns(
6604                data: &[u8],
6605                validate: bool,
6606            ) -> alloy_sol_types::Result<Self::Return> {
6607                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6608                    data, validate,
6609                )
6610                .map(Into::into)
6611            }
6612        }
6613    };
6614    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6615    /**Function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7`.
6616    ```solidity
6617    function supportsInterface(bytes4 interfaceId) external view returns (bool);
6618    ```*/
6619    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6620    #[derive(Clone)]
6621    pub struct supportsInterfaceCall {
6622        #[allow(missing_docs)]
6623        pub interfaceId: alloy::sol_types::private::FixedBytes<4>,
6624    }
6625    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6626    ///Container type for the return parameters of the [`supportsInterface(bytes4)`](supportsInterfaceCall) function.
6627    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6628    #[derive(Clone)]
6629    pub struct supportsInterfaceReturn {
6630        #[allow(missing_docs)]
6631        pub _0: bool,
6632    }
6633    #[allow(
6634        non_camel_case_types,
6635        non_snake_case,
6636        clippy::pub_underscore_fields,
6637        clippy::style
6638    )]
6639    const _: () = {
6640        use alloy::sol_types as alloy_sol_types;
6641        {
6642            #[doc(hidden)]
6643            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6644            #[doc(hidden)]
6645            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<4>,);
6646            #[cfg(test)]
6647            #[allow(dead_code, unreachable_patterns)]
6648            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6649                match _t {
6650                    alloy_sol_types::private::AssertTypeEq::<
6651                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6652                    >(_) => {},
6653                }
6654            }
6655            #[automatically_derived]
6656            #[doc(hidden)]
6657            impl ::core::convert::From<supportsInterfaceCall> for UnderlyingRustTuple<'_> {
6658                fn from(value: supportsInterfaceCall) -> Self {
6659                    (value.interfaceId,)
6660                }
6661            }
6662            #[automatically_derived]
6663            #[doc(hidden)]
6664            impl ::core::convert::From<UnderlyingRustTuple<'_>> for supportsInterfaceCall {
6665                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6666                    Self {
6667                        interfaceId: tuple.0,
6668                    }
6669                }
6670            }
6671        }
6672        {
6673            #[doc(hidden)]
6674            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6675            #[doc(hidden)]
6676            type UnderlyingRustTuple<'a> = (bool,);
6677            #[cfg(test)]
6678            #[allow(dead_code, unreachable_patterns)]
6679            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6680                match _t {
6681                    alloy_sol_types::private::AssertTypeEq::<
6682                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6683                    >(_) => {},
6684                }
6685            }
6686            #[automatically_derived]
6687            #[doc(hidden)]
6688            impl ::core::convert::From<supportsInterfaceReturn> for UnderlyingRustTuple<'_> {
6689                fn from(value: supportsInterfaceReturn) -> Self {
6690                    (value._0,)
6691                }
6692            }
6693            #[automatically_derived]
6694            #[doc(hidden)]
6695            impl ::core::convert::From<UnderlyingRustTuple<'_>> for supportsInterfaceReturn {
6696                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6697                    Self { _0: tuple.0 }
6698                }
6699            }
6700        }
6701        #[automatically_derived]
6702        impl alloy_sol_types::SolCall for supportsInterfaceCall {
6703            type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<4>,);
6704            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6705            type Return = supportsInterfaceReturn;
6706            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
6707            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6708            const SIGNATURE: &'static str = "supportsInterface(bytes4)";
6709            const SELECTOR: [u8; 4] = [1u8, 255u8, 201u8, 167u8];
6710            #[inline]
6711            fn new<'a>(
6712                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6713            ) -> Self {
6714                tuple.into()
6715            }
6716            #[inline]
6717            fn tokenize(&self) -> Self::Token<'_> {
6718                (
6719                    <alloy::sol_types::sol_data::FixedBytes<
6720                        4,
6721                    > as alloy_sol_types::SolType>::tokenize(&self.interfaceId),
6722                )
6723            }
6724            #[inline]
6725            fn abi_decode_returns(
6726                data: &[u8],
6727                validate: bool,
6728            ) -> alloy_sol_types::Result<Self::Return> {
6729                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6730                    data, validate,
6731                )
6732                .map(Into::into)
6733            }
6734        }
6735    };
6736    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6737    /**Function with signature `updateDelay(uint256)` and selector `0x64d62353`.
6738    ```solidity
6739    function updateDelay(uint256 newDelay) external;
6740    ```*/
6741    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6742    #[derive(Clone)]
6743    pub struct updateDelayCall {
6744        #[allow(missing_docs)]
6745        pub newDelay: alloy::sol_types::private::primitives::aliases::U256,
6746    }
6747    ///Container type for the return parameters of the [`updateDelay(uint256)`](updateDelayCall) function.
6748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6749    #[derive(Clone)]
6750    pub struct updateDelayReturn {}
6751    #[allow(
6752        non_camel_case_types,
6753        non_snake_case,
6754        clippy::pub_underscore_fields,
6755        clippy::style
6756    )]
6757    const _: () = {
6758        use alloy::sol_types as alloy_sol_types;
6759        {
6760            #[doc(hidden)]
6761            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6762            #[doc(hidden)]
6763            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::primitives::aliases::U256,);
6764            #[cfg(test)]
6765            #[allow(dead_code, unreachable_patterns)]
6766            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6767                match _t {
6768                    alloy_sol_types::private::AssertTypeEq::<
6769                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6770                    >(_) => {},
6771                }
6772            }
6773            #[automatically_derived]
6774            #[doc(hidden)]
6775            impl ::core::convert::From<updateDelayCall> for UnderlyingRustTuple<'_> {
6776                fn from(value: updateDelayCall) -> Self {
6777                    (value.newDelay,)
6778                }
6779            }
6780            #[automatically_derived]
6781            #[doc(hidden)]
6782            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayCall {
6783                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6784                    Self { newDelay: tuple.0 }
6785                }
6786            }
6787        }
6788        {
6789            #[doc(hidden)]
6790            type UnderlyingSolTuple<'a> = ();
6791            #[doc(hidden)]
6792            type UnderlyingRustTuple<'a> = ();
6793            #[cfg(test)]
6794            #[allow(dead_code, unreachable_patterns)]
6795            fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
6796                match _t {
6797                    alloy_sol_types::private::AssertTypeEq::<
6798                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6799                    >(_) => {},
6800                }
6801            }
6802            #[automatically_derived]
6803            #[doc(hidden)]
6804            impl ::core::convert::From<updateDelayReturn> for UnderlyingRustTuple<'_> {
6805                fn from(value: updateDelayReturn) -> Self {
6806                    ()
6807                }
6808            }
6809            #[automatically_derived]
6810            #[doc(hidden)]
6811            impl ::core::convert::From<UnderlyingRustTuple<'_>> for updateDelayReturn {
6812                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6813                    Self {}
6814                }
6815            }
6816        }
6817        #[automatically_derived]
6818        impl alloy_sol_types::SolCall for updateDelayCall {
6819            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
6820            type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
6821            type Return = updateDelayReturn;
6822            type ReturnTuple<'a> = ();
6823            type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
6824            const SIGNATURE: &'static str = "updateDelay(uint256)";
6825            const SELECTOR: [u8; 4] = [100u8, 214u8, 35u8, 83u8];
6826            #[inline]
6827            fn new<'a>(
6828                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6829            ) -> Self {
6830                tuple.into()
6831            }
6832            #[inline]
6833            fn tokenize(&self) -> Self::Token<'_> {
6834                (
6835                    <alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
6836                        &self.newDelay,
6837                    ),
6838                )
6839            }
6840            #[inline]
6841            fn abi_decode_returns(
6842                data: &[u8],
6843                validate: bool,
6844            ) -> alloy_sol_types::Result<Self::Return> {
6845                <Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(
6846                    data, validate,
6847                )
6848                .map(Into::into)
6849            }
6850        }
6851    };
6852    ///Container for all the [`Timelock`](self) function calls.
6853    #[derive()]
6854    pub enum TimelockCalls {
6855        #[allow(missing_docs)]
6856        CANCELLER_ROLE(CANCELLER_ROLECall),
6857        #[allow(missing_docs)]
6858        DEFAULT_ADMIN_ROLE(DEFAULT_ADMIN_ROLECall),
6859        #[allow(missing_docs)]
6860        EXECUTOR_ROLE(EXECUTOR_ROLECall),
6861        #[allow(missing_docs)]
6862        PROPOSER_ROLE(PROPOSER_ROLECall),
6863        #[allow(missing_docs)]
6864        cancel(cancelCall),
6865        #[allow(missing_docs)]
6866        execute(executeCall),
6867        #[allow(missing_docs)]
6868        executeBatch(executeBatchCall),
6869        #[allow(missing_docs)]
6870        getMinDelay(getMinDelayCall),
6871        #[allow(missing_docs)]
6872        getOperationState(getOperationStateCall),
6873        #[allow(missing_docs)]
6874        getRoleAdmin(getRoleAdminCall),
6875        #[allow(missing_docs)]
6876        getTimestamp(getTimestampCall),
6877        #[allow(missing_docs)]
6878        grantRole(grantRoleCall),
6879        #[allow(missing_docs)]
6880        hasRole(hasRoleCall),
6881        #[allow(missing_docs)]
6882        hashOperation(hashOperationCall),
6883        #[allow(missing_docs)]
6884        hashOperationBatch(hashOperationBatchCall),
6885        #[allow(missing_docs)]
6886        isOperation(isOperationCall),
6887        #[allow(missing_docs)]
6888        isOperationDone(isOperationDoneCall),
6889        #[allow(missing_docs)]
6890        isOperationPending(isOperationPendingCall),
6891        #[allow(missing_docs)]
6892        isOperationReady(isOperationReadyCall),
6893        #[allow(missing_docs)]
6894        onERC1155BatchReceived(onERC1155BatchReceivedCall),
6895        #[allow(missing_docs)]
6896        onERC1155Received(onERC1155ReceivedCall),
6897        #[allow(missing_docs)]
6898        onERC721Received(onERC721ReceivedCall),
6899        #[allow(missing_docs)]
6900        renounceRole(renounceRoleCall),
6901        #[allow(missing_docs)]
6902        revokeRole(revokeRoleCall),
6903        #[allow(missing_docs)]
6904        schedule(scheduleCall),
6905        #[allow(missing_docs)]
6906        scheduleBatch(scheduleBatchCall),
6907        #[allow(missing_docs)]
6908        supportsInterface(supportsInterfaceCall),
6909        #[allow(missing_docs)]
6910        updateDelay(updateDelayCall),
6911    }
6912    #[automatically_derived]
6913    impl TimelockCalls {
6914        /// All the selectors of this enum.
6915        ///
6916        /// Note that the selectors might not be in the same order as the variants.
6917        /// No guarantees are made about the order of the selectors.
6918        ///
6919        /// Prefer using `SolInterface` methods instead.
6920        pub const SELECTORS: &'static [[u8; 4usize]] = &[
6921            [1u8, 213u8, 6u8, 42u8],
6922            [1u8, 255u8, 201u8, 167u8],
6923            [7u8, 189u8, 2u8, 101u8],
6924            [19u8, 64u8, 8u8, 211u8],
6925            [19u8, 188u8, 159u8, 32u8],
6926            [21u8, 11u8, 122u8, 2u8],
6927            [36u8, 138u8, 156u8, 163u8],
6928            [42u8, 176u8, 245u8, 41u8],
6929            [47u8, 47u8, 241u8, 93u8],
6930            [49u8, 213u8, 7u8, 80u8],
6931            [54u8, 86u8, 138u8, 190u8],
6932            [88u8, 75u8, 21u8, 62u8],
6933            [100u8, 214u8, 35u8, 83u8],
6934            [121u8, 88u8, 0u8, 76u8],
6935            [128u8, 101u8, 101u8, 127u8],
6936            [143u8, 42u8, 11u8, 176u8],
6937            [143u8, 97u8, 244u8, 245u8],
6938            [145u8, 209u8, 72u8, 84u8],
6939            [162u8, 23u8, 253u8, 223u8],
6940            [176u8, 142u8, 81u8, 192u8],
6941            [177u8, 197u8, 244u8, 39u8],
6942            [188u8, 25u8, 124u8, 129u8],
6943            [196u8, 210u8, 82u8, 245u8],
6944            [212u8, 92u8, 68u8, 53u8],
6945            [213u8, 71u8, 116u8, 31u8],
6946            [227u8, 131u8, 53u8, 229u8],
6947            [242u8, 58u8, 110u8, 97u8],
6948            [242u8, 122u8, 12u8, 146u8],
6949        ];
6950    }
6951    #[automatically_derived]
6952    impl alloy_sol_types::SolInterface for TimelockCalls {
6953        const NAME: &'static str = "TimelockCalls";
6954        const MIN_DATA_LENGTH: usize = 0usize;
6955        const COUNT: usize = 28usize;
6956        #[inline]
6957        fn selector(&self) -> [u8; 4] {
6958            match self {
6959                Self::CANCELLER_ROLE(_) => {
6960                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::SELECTOR
6961                },
6962                Self::DEFAULT_ADMIN_ROLE(_) => {
6963                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::SELECTOR
6964                },
6965                Self::EXECUTOR_ROLE(_) => <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::SELECTOR,
6966                Self::PROPOSER_ROLE(_) => <PROPOSER_ROLECall as alloy_sol_types::SolCall>::SELECTOR,
6967                Self::cancel(_) => <cancelCall as alloy_sol_types::SolCall>::SELECTOR,
6968                Self::execute(_) => <executeCall as alloy_sol_types::SolCall>::SELECTOR,
6969                Self::executeBatch(_) => <executeBatchCall as alloy_sol_types::SolCall>::SELECTOR,
6970                Self::getMinDelay(_) => <getMinDelayCall as alloy_sol_types::SolCall>::SELECTOR,
6971                Self::getOperationState(_) => {
6972                    <getOperationStateCall as alloy_sol_types::SolCall>::SELECTOR
6973                },
6974                Self::getRoleAdmin(_) => <getRoleAdminCall as alloy_sol_types::SolCall>::SELECTOR,
6975                Self::getTimestamp(_) => <getTimestampCall as alloy_sol_types::SolCall>::SELECTOR,
6976                Self::grantRole(_) => <grantRoleCall as alloy_sol_types::SolCall>::SELECTOR,
6977                Self::hasRole(_) => <hasRoleCall as alloy_sol_types::SolCall>::SELECTOR,
6978                Self::hashOperation(_) => <hashOperationCall as alloy_sol_types::SolCall>::SELECTOR,
6979                Self::hashOperationBatch(_) => {
6980                    <hashOperationBatchCall as alloy_sol_types::SolCall>::SELECTOR
6981                },
6982                Self::isOperation(_) => <isOperationCall as alloy_sol_types::SolCall>::SELECTOR,
6983                Self::isOperationDone(_) => {
6984                    <isOperationDoneCall as alloy_sol_types::SolCall>::SELECTOR
6985                },
6986                Self::isOperationPending(_) => {
6987                    <isOperationPendingCall as alloy_sol_types::SolCall>::SELECTOR
6988                },
6989                Self::isOperationReady(_) => {
6990                    <isOperationReadyCall as alloy_sol_types::SolCall>::SELECTOR
6991                },
6992                Self::onERC1155BatchReceived(_) => {
6993                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::SELECTOR
6994                },
6995                Self::onERC1155Received(_) => {
6996                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
6997                },
6998                Self::onERC721Received(_) => {
6999                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::SELECTOR
7000                },
7001                Self::renounceRole(_) => <renounceRoleCall as alloy_sol_types::SolCall>::SELECTOR,
7002                Self::revokeRole(_) => <revokeRoleCall as alloy_sol_types::SolCall>::SELECTOR,
7003                Self::schedule(_) => <scheduleCall as alloy_sol_types::SolCall>::SELECTOR,
7004                Self::scheduleBatch(_) => <scheduleBatchCall as alloy_sol_types::SolCall>::SELECTOR,
7005                Self::supportsInterface(_) => {
7006                    <supportsInterfaceCall as alloy_sol_types::SolCall>::SELECTOR
7007                },
7008                Self::updateDelay(_) => <updateDelayCall as alloy_sol_types::SolCall>::SELECTOR,
7009            }
7010        }
7011        #[inline]
7012        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
7013            Self::SELECTORS.get(i).copied()
7014        }
7015        #[inline]
7016        fn valid_selector(selector: [u8; 4]) -> bool {
7017            Self::SELECTORS.binary_search(&selector).is_ok()
7018        }
7019        #[inline]
7020        #[allow(non_snake_case)]
7021        fn abi_decode_raw(
7022            selector: [u8; 4],
7023            data: &[u8],
7024            validate: bool,
7025        ) -> alloy_sol_types::Result<Self> {
7026            static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result<TimelockCalls>] = &[
7027                {
7028                    fn schedule(
7029                        data: &[u8],
7030                        validate: bool,
7031                    ) -> alloy_sol_types::Result<TimelockCalls> {
7032                        <scheduleCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
7033                            .map(TimelockCalls::schedule)
7034                    }
7035                    schedule
7036                },
7037                {
7038                    fn supportsInterface(
7039                        data: &[u8],
7040                        validate: bool,
7041                    ) -> alloy_sol_types::Result<TimelockCalls> {
7042                        <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_decode_raw(
7043                            data, validate,
7044                        )
7045                        .map(TimelockCalls::supportsInterface)
7046                    }
7047                    supportsInterface
7048                },
7049                {
7050                    fn EXECUTOR_ROLE(
7051                        data: &[u8],
7052                        validate: bool,
7053                    ) -> alloy_sol_types::Result<TimelockCalls> {
7054                        <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
7055                            data, validate,
7056                        )
7057                        .map(TimelockCalls::EXECUTOR_ROLE)
7058                    }
7059                    EXECUTOR_ROLE
7060                },
7061                {
7062                    fn execute(
7063                        data: &[u8],
7064                        validate: bool,
7065                    ) -> alloy_sol_types::Result<TimelockCalls> {
7066                        <executeCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
7067                            .map(TimelockCalls::execute)
7068                    }
7069                    execute
7070                },
7071                {
7072                    fn isOperationReady(
7073                        data: &[u8],
7074                        validate: bool,
7075                    ) -> alloy_sol_types::Result<TimelockCalls> {
7076                        <isOperationReadyCall as alloy_sol_types::SolCall>::abi_decode_raw(
7077                            data, validate,
7078                        )
7079                        .map(TimelockCalls::isOperationReady)
7080                    }
7081                    isOperationReady
7082                },
7083                {
7084                    fn onERC721Received(
7085                        data: &[u8],
7086                        validate: bool,
7087                    ) -> alloy_sol_types::Result<TimelockCalls> {
7088                        <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
7089                            data, validate,
7090                        )
7091                        .map(TimelockCalls::onERC721Received)
7092                    }
7093                    onERC721Received
7094                },
7095                {
7096                    fn getRoleAdmin(
7097                        data: &[u8],
7098                        validate: bool,
7099                    ) -> alloy_sol_types::Result<TimelockCalls> {
7100                        <getRoleAdminCall as alloy_sol_types::SolCall>::abi_decode_raw(
7101                            data, validate,
7102                        )
7103                        .map(TimelockCalls::getRoleAdmin)
7104                    }
7105                    getRoleAdmin
7106                },
7107                {
7108                    fn isOperationDone(
7109                        data: &[u8],
7110                        validate: bool,
7111                    ) -> alloy_sol_types::Result<TimelockCalls> {
7112                        <isOperationDoneCall as alloy_sol_types::SolCall>::abi_decode_raw(
7113                            data, validate,
7114                        )
7115                        .map(TimelockCalls::isOperationDone)
7116                    }
7117                    isOperationDone
7118                },
7119                {
7120                    fn grantRole(
7121                        data: &[u8],
7122                        validate: bool,
7123                    ) -> alloy_sol_types::Result<TimelockCalls> {
7124                        <grantRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
7125                            .map(TimelockCalls::grantRole)
7126                    }
7127                    grantRole
7128                },
7129                {
7130                    fn isOperation(
7131                        data: &[u8],
7132                        validate: bool,
7133                    ) -> alloy_sol_types::Result<TimelockCalls> {
7134                        <isOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
7135                            data, validate,
7136                        )
7137                        .map(TimelockCalls::isOperation)
7138                    }
7139                    isOperation
7140                },
7141                {
7142                    fn renounceRole(
7143                        data: &[u8],
7144                        validate: bool,
7145                    ) -> alloy_sol_types::Result<TimelockCalls> {
7146                        <renounceRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(
7147                            data, validate,
7148                        )
7149                        .map(TimelockCalls::renounceRole)
7150                    }
7151                    renounceRole
7152                },
7153                {
7154                    fn isOperationPending(
7155                        data: &[u8],
7156                        validate: bool,
7157                    ) -> alloy_sol_types::Result<TimelockCalls> {
7158                        <isOperationPendingCall as alloy_sol_types::SolCall>::abi_decode_raw(
7159                            data, validate,
7160                        )
7161                        .map(TimelockCalls::isOperationPending)
7162                    }
7163                    isOperationPending
7164                },
7165                {
7166                    fn updateDelay(
7167                        data: &[u8],
7168                        validate: bool,
7169                    ) -> alloy_sol_types::Result<TimelockCalls> {
7170                        <updateDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
7171                            data, validate,
7172                        )
7173                        .map(TimelockCalls::updateDelay)
7174                    }
7175                    updateDelay
7176                },
7177                {
7178                    fn getOperationState(
7179                        data: &[u8],
7180                        validate: bool,
7181                    ) -> alloy_sol_types::Result<TimelockCalls> {
7182                        <getOperationStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
7183                            data, validate,
7184                        )
7185                        .map(TimelockCalls::getOperationState)
7186                    }
7187                    getOperationState
7188                },
7189                {
7190                    fn hashOperation(
7191                        data: &[u8],
7192                        validate: bool,
7193                    ) -> alloy_sol_types::Result<TimelockCalls> {
7194                        <hashOperationCall as alloy_sol_types::SolCall>::abi_decode_raw(
7195                            data, validate,
7196                        )
7197                        .map(TimelockCalls::hashOperation)
7198                    }
7199                    hashOperation
7200                },
7201                {
7202                    fn scheduleBatch(
7203                        data: &[u8],
7204                        validate: bool,
7205                    ) -> alloy_sol_types::Result<TimelockCalls> {
7206                        <scheduleBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
7207                            data, validate,
7208                        )
7209                        .map(TimelockCalls::scheduleBatch)
7210                    }
7211                    scheduleBatch
7212                },
7213                {
7214                    fn PROPOSER_ROLE(
7215                        data: &[u8],
7216                        validate: bool,
7217                    ) -> alloy_sol_types::Result<TimelockCalls> {
7218                        <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
7219                            data, validate,
7220                        )
7221                        .map(TimelockCalls::PROPOSER_ROLE)
7222                    }
7223                    PROPOSER_ROLE
7224                },
7225                {
7226                    fn hasRole(
7227                        data: &[u8],
7228                        validate: bool,
7229                    ) -> alloy_sol_types::Result<TimelockCalls> {
7230                        <hasRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
7231                            .map(TimelockCalls::hasRole)
7232                    }
7233                    hasRole
7234                },
7235                {
7236                    fn DEFAULT_ADMIN_ROLE(
7237                        data: &[u8],
7238                        validate: bool,
7239                    ) -> alloy_sol_types::Result<TimelockCalls> {
7240                        <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
7241                            data, validate,
7242                        )
7243                        .map(TimelockCalls::DEFAULT_ADMIN_ROLE)
7244                    }
7245                    DEFAULT_ADMIN_ROLE
7246                },
7247                {
7248                    fn CANCELLER_ROLE(
7249                        data: &[u8],
7250                        validate: bool,
7251                    ) -> alloy_sol_types::Result<TimelockCalls> {
7252                        <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_decode_raw(
7253                            data, validate,
7254                        )
7255                        .map(TimelockCalls::CANCELLER_ROLE)
7256                    }
7257                    CANCELLER_ROLE
7258                },
7259                {
7260                    fn hashOperationBatch(
7261                        data: &[u8],
7262                        validate: bool,
7263                    ) -> alloy_sol_types::Result<TimelockCalls> {
7264                        <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
7265                            data, validate,
7266                        )
7267                        .map(TimelockCalls::hashOperationBatch)
7268                    }
7269                    hashOperationBatch
7270                },
7271                {
7272                    fn onERC1155BatchReceived(
7273                        data: &[u8],
7274                        validate: bool,
7275                    ) -> alloy_sol_types::Result<TimelockCalls> {
7276                        <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
7277                            data, validate,
7278                        )
7279                        .map(TimelockCalls::onERC1155BatchReceived)
7280                    }
7281                    onERC1155BatchReceived
7282                },
7283                {
7284                    fn cancel(
7285                        data: &[u8],
7286                        validate: bool,
7287                    ) -> alloy_sol_types::Result<TimelockCalls> {
7288                        <cancelCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
7289                            .map(TimelockCalls::cancel)
7290                    }
7291                    cancel
7292                },
7293                {
7294                    fn getTimestamp(
7295                        data: &[u8],
7296                        validate: bool,
7297                    ) -> alloy_sol_types::Result<TimelockCalls> {
7298                        <getTimestampCall as alloy_sol_types::SolCall>::abi_decode_raw(
7299                            data, validate,
7300                        )
7301                        .map(TimelockCalls::getTimestamp)
7302                    }
7303                    getTimestamp
7304                },
7305                {
7306                    fn revokeRole(
7307                        data: &[u8],
7308                        validate: bool,
7309                    ) -> alloy_sol_types::Result<TimelockCalls> {
7310                        <revokeRoleCall as alloy_sol_types::SolCall>::abi_decode_raw(data, validate)
7311                            .map(TimelockCalls::revokeRole)
7312                    }
7313                    revokeRole
7314                },
7315                {
7316                    fn executeBatch(
7317                        data: &[u8],
7318                        validate: bool,
7319                    ) -> alloy_sol_types::Result<TimelockCalls> {
7320                        <executeBatchCall as alloy_sol_types::SolCall>::abi_decode_raw(
7321                            data, validate,
7322                        )
7323                        .map(TimelockCalls::executeBatch)
7324                    }
7325                    executeBatch
7326                },
7327                {
7328                    fn onERC1155Received(
7329                        data: &[u8],
7330                        validate: bool,
7331                    ) -> alloy_sol_types::Result<TimelockCalls> {
7332                        <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_decode_raw(
7333                            data, validate,
7334                        )
7335                        .map(TimelockCalls::onERC1155Received)
7336                    }
7337                    onERC1155Received
7338                },
7339                {
7340                    fn getMinDelay(
7341                        data: &[u8],
7342                        validate: bool,
7343                    ) -> alloy_sol_types::Result<TimelockCalls> {
7344                        <getMinDelayCall as alloy_sol_types::SolCall>::abi_decode_raw(
7345                            data, validate,
7346                        )
7347                        .map(TimelockCalls::getMinDelay)
7348                    }
7349                    getMinDelay
7350                },
7351            ];
7352            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
7353                return Err(alloy_sol_types::Error::unknown_selector(
7354                    <Self as alloy_sol_types::SolInterface>::NAME,
7355                    selector,
7356                ));
7357            };
7358            DECODE_SHIMS[idx](data, validate)
7359        }
7360        #[inline]
7361        fn abi_encoded_size(&self) -> usize {
7362            match self {
7363                Self::CANCELLER_ROLE(inner) => {
7364                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7365                },
7366                Self::DEFAULT_ADMIN_ROLE(inner) => {
7367                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7368                },
7369                Self::EXECUTOR_ROLE(inner) => {
7370                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7371                },
7372                Self::PROPOSER_ROLE(inner) => {
7373                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7374                },
7375                Self::cancel(inner) => {
7376                    <cancelCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7377                },
7378                Self::execute(inner) => {
7379                    <executeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7380                },
7381                Self::executeBatch(inner) => {
7382                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7383                },
7384                Self::getMinDelay(inner) => {
7385                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7386                },
7387                Self::getOperationState(inner) => {
7388                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7389                },
7390                Self::getRoleAdmin(inner) => {
7391                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7392                },
7393                Self::getTimestamp(inner) => {
7394                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7395                },
7396                Self::grantRole(inner) => {
7397                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7398                },
7399                Self::hasRole(inner) => {
7400                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7401                },
7402                Self::hashOperation(inner) => {
7403                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7404                },
7405                Self::hashOperationBatch(inner) => {
7406                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7407                },
7408                Self::isOperation(inner) => {
7409                    <isOperationCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7410                },
7411                Self::isOperationDone(inner) => {
7412                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7413                },
7414                Self::isOperationPending(inner) => {
7415                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7416                },
7417                Self::isOperationReady(inner) => {
7418                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7419                },
7420                Self::onERC1155BatchReceived(inner) => {
7421                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(
7422                        inner,
7423                    )
7424                },
7425                Self::onERC1155Received(inner) => {
7426                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7427                },
7428                Self::onERC721Received(inner) => {
7429                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7430                },
7431                Self::renounceRole(inner) => {
7432                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7433                },
7434                Self::revokeRole(inner) => {
7435                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7436                },
7437                Self::schedule(inner) => {
7438                    <scheduleCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7439                },
7440                Self::scheduleBatch(inner) => {
7441                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7442                },
7443                Self::supportsInterface(inner) => {
7444                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7445                },
7446                Self::updateDelay(inner) => {
7447                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
7448                },
7449            }
7450        }
7451        #[inline]
7452        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
7453            match self {
7454                Self::CANCELLER_ROLE(inner) => {
7455                    <CANCELLER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7456                },
7457                Self::DEFAULT_ADMIN_ROLE(inner) => {
7458                    <DEFAULT_ADMIN_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7459                },
7460                Self::EXECUTOR_ROLE(inner) => {
7461                    <EXECUTOR_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7462                },
7463                Self::PROPOSER_ROLE(inner) => {
7464                    <PROPOSER_ROLECall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7465                },
7466                Self::cancel(inner) => {
7467                    <cancelCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7468                },
7469                Self::execute(inner) => {
7470                    <executeCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7471                },
7472                Self::executeBatch(inner) => {
7473                    <executeBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7474                },
7475                Self::getMinDelay(inner) => {
7476                    <getMinDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7477                },
7478                Self::getOperationState(inner) => {
7479                    <getOperationStateCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7480                },
7481                Self::getRoleAdmin(inner) => {
7482                    <getRoleAdminCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7483                },
7484                Self::getTimestamp(inner) => {
7485                    <getTimestampCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7486                },
7487                Self::grantRole(inner) => {
7488                    <grantRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7489                },
7490                Self::hasRole(inner) => {
7491                    <hasRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7492                },
7493                Self::hashOperation(inner) => {
7494                    <hashOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7495                },
7496                Self::hashOperationBatch(inner) => {
7497                    <hashOperationBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7498                },
7499                Self::isOperation(inner) => {
7500                    <isOperationCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7501                },
7502                Self::isOperationDone(inner) => {
7503                    <isOperationDoneCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7504                },
7505                Self::isOperationPending(inner) => {
7506                    <isOperationPendingCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7507                },
7508                Self::isOperationReady(inner) => {
7509                    <isOperationReadyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7510                },
7511                Self::onERC1155BatchReceived(inner) => {
7512                    <onERC1155BatchReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(
7513                        inner, out,
7514                    )
7515                },
7516                Self::onERC1155Received(inner) => {
7517                    <onERC1155ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7518                },
7519                Self::onERC721Received(inner) => {
7520                    <onERC721ReceivedCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7521                },
7522                Self::renounceRole(inner) => {
7523                    <renounceRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7524                },
7525                Self::revokeRole(inner) => {
7526                    <revokeRoleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7527                },
7528                Self::schedule(inner) => {
7529                    <scheduleCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7530                },
7531                Self::scheduleBatch(inner) => {
7532                    <scheduleBatchCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7533                },
7534                Self::supportsInterface(inner) => {
7535                    <supportsInterfaceCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7536                },
7537                Self::updateDelay(inner) => {
7538                    <updateDelayCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
7539                },
7540            }
7541        }
7542    }
7543    ///Container for all the [`Timelock`](self) custom errors.
7544    #[derive(Debug, PartialEq, Eq, Hash)]
7545    pub enum TimelockErrors {
7546        #[allow(missing_docs)]
7547        AccessControlBadConfirmation(AccessControlBadConfirmation),
7548        #[allow(missing_docs)]
7549        AccessControlUnauthorizedAccount(AccessControlUnauthorizedAccount),
7550        #[allow(missing_docs)]
7551        FailedInnerCall(FailedInnerCall),
7552        #[allow(missing_docs)]
7553        TimelockInsufficientDelay(TimelockInsufficientDelay),
7554        #[allow(missing_docs)]
7555        TimelockInvalidOperationLength(TimelockInvalidOperationLength),
7556        #[allow(missing_docs)]
7557        TimelockUnauthorizedCaller(TimelockUnauthorizedCaller),
7558        #[allow(missing_docs)]
7559        TimelockUnexecutedPredecessor(TimelockUnexecutedPredecessor),
7560        #[allow(missing_docs)]
7561        TimelockUnexpectedOperationState(TimelockUnexpectedOperationState),
7562    }
7563    #[automatically_derived]
7564    impl TimelockErrors {
7565        /// All the selectors of this enum.
7566        ///
7567        /// Note that the selectors might not be in the same order as the variants.
7568        /// No guarantees are made about the order of the selectors.
7569        ///
7570        /// Prefer using `SolInterface` methods instead.
7571        pub const SELECTORS: &'static [[u8; 4usize]] = &[
7572            [20u8, 37u8, 234u8, 66u8],
7573            [84u8, 51u8, 102u8, 9u8],
7574            [94u8, 173u8, 142u8, 181u8],
7575            [102u8, 151u8, 178u8, 50u8],
7576            [144u8, 169u8, 166u8, 24u8],
7577            [226u8, 81u8, 125u8, 63u8],
7578            [226u8, 133u8, 12u8, 89u8],
7579            [255u8, 176u8, 50u8, 17u8],
7580        ];
7581    }
7582    #[automatically_derived]
7583    impl alloy_sol_types::SolInterface for TimelockErrors {
7584        const NAME: &'static str = "TimelockErrors";
7585        const MIN_DATA_LENGTH: usize = 0usize;
7586        const COUNT: usize = 8usize;
7587        #[inline]
7588        fn selector(&self) -> [u8; 4] {
7589            match self {
7590                Self::AccessControlBadConfirmation(_) => {
7591                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::SELECTOR
7592                },
7593                Self::AccessControlUnauthorizedAccount(_) => {
7594                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
7595                },
7596                Self::FailedInnerCall(_) => {
7597                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
7598                },
7599                Self::TimelockInsufficientDelay(_) => {
7600                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::SELECTOR
7601                },
7602                Self::TimelockInvalidOperationLength(_) => {
7603                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::SELECTOR
7604                },
7605                Self::TimelockUnauthorizedCaller(_) => {
7606                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::SELECTOR
7607                },
7608                Self::TimelockUnexecutedPredecessor(_) => {
7609                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::SELECTOR
7610                },
7611                Self::TimelockUnexpectedOperationState(_) => {
7612                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::SELECTOR
7613                },
7614            }
7615        }
7616        #[inline]
7617        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
7618            Self::SELECTORS.get(i).copied()
7619        }
7620        #[inline]
7621        fn valid_selector(selector: [u8; 4]) -> bool {
7622            Self::SELECTORS.binary_search(&selector).is_ok()
7623        }
7624        #[inline]
7625        #[allow(non_snake_case)]
7626        fn abi_decode_raw(
7627            selector: [u8; 4],
7628            data: &[u8],
7629            validate: bool,
7630        ) -> alloy_sol_types::Result<Self> {
7631            static DECODE_SHIMS: &[fn(&[u8], bool) -> alloy_sol_types::Result<TimelockErrors>] = &[
7632                {
7633                    fn FailedInnerCall(
7634                        data: &[u8],
7635                        validate: bool,
7636                    ) -> alloy_sol_types::Result<TimelockErrors> {
7637                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
7638                            data, validate,
7639                        )
7640                        .map(TimelockErrors::FailedInnerCall)
7641                    }
7642                    FailedInnerCall
7643                },
7644                {
7645                    fn TimelockInsufficientDelay(
7646                        data: &[u8],
7647                        validate: bool,
7648                    ) -> alloy_sol_types::Result<TimelockErrors> {
7649                        <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_decode_raw(
7650                            data, validate,
7651                        )
7652                        .map(TimelockErrors::TimelockInsufficientDelay)
7653                    }
7654                    TimelockInsufficientDelay
7655                },
7656                {
7657                    fn TimelockUnexpectedOperationState(
7658                        data: &[u8],
7659                        validate: bool,
7660                    ) -> alloy_sol_types::Result<TimelockErrors> {
7661                        <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_decode_raw(
7662                                data,
7663                                validate,
7664                            )
7665                            .map(TimelockErrors::TimelockUnexpectedOperationState)
7666                    }
7667                    TimelockUnexpectedOperationState
7668                },
7669                {
7670                    fn AccessControlBadConfirmation(
7671                        data: &[u8],
7672                        validate: bool,
7673                    ) -> alloy_sol_types::Result<TimelockErrors> {
7674                        <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_decode_raw(
7675                            data, validate,
7676                        )
7677                        .map(TimelockErrors::AccessControlBadConfirmation)
7678                    }
7679                    AccessControlBadConfirmation
7680                },
7681                {
7682                    fn TimelockUnexecutedPredecessor(
7683                        data: &[u8],
7684                        validate: bool,
7685                    ) -> alloy_sol_types::Result<TimelockErrors> {
7686                        <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_decode_raw(
7687                                data,
7688                                validate,
7689                            )
7690                            .map(TimelockErrors::TimelockUnexecutedPredecessor)
7691                    }
7692                    TimelockUnexecutedPredecessor
7693                },
7694                {
7695                    fn AccessControlUnauthorizedAccount(
7696                        data: &[u8],
7697                        validate: bool,
7698                    ) -> alloy_sol_types::Result<TimelockErrors> {
7699                        <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
7700                                data,
7701                                validate,
7702                            )
7703                            .map(TimelockErrors::AccessControlUnauthorizedAccount)
7704                    }
7705                    AccessControlUnauthorizedAccount
7706                },
7707                {
7708                    fn TimelockUnauthorizedCaller(
7709                        data: &[u8],
7710                        validate: bool,
7711                    ) -> alloy_sol_types::Result<TimelockErrors> {
7712                        <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_decode_raw(
7713                            data, validate,
7714                        )
7715                        .map(TimelockErrors::TimelockUnauthorizedCaller)
7716                    }
7717                    TimelockUnauthorizedCaller
7718                },
7719                {
7720                    fn TimelockInvalidOperationLength(
7721                        data: &[u8],
7722                        validate: bool,
7723                    ) -> alloy_sol_types::Result<TimelockErrors> {
7724                        <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_decode_raw(
7725                                data,
7726                                validate,
7727                            )
7728                            .map(TimelockErrors::TimelockInvalidOperationLength)
7729                    }
7730                    TimelockInvalidOperationLength
7731                },
7732            ];
7733            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
7734                return Err(alloy_sol_types::Error::unknown_selector(
7735                    <Self as alloy_sol_types::SolInterface>::NAME,
7736                    selector,
7737                ));
7738            };
7739            DECODE_SHIMS[idx](data, validate)
7740        }
7741        #[inline]
7742        fn abi_encoded_size(&self) -> usize {
7743            match self {
7744                Self::AccessControlBadConfirmation(inner) => {
7745                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encoded_size(
7746                        inner,
7747                    )
7748                }
7749                Self::AccessControlUnauthorizedAccount(inner) => {
7750                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
7751                        inner,
7752                    )
7753                }
7754                Self::FailedInnerCall(inner) => {
7755                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
7756                        inner,
7757                    )
7758                }
7759                Self::TimelockInsufficientDelay(inner) => {
7760                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encoded_size(
7761                        inner,
7762                    )
7763                }
7764                Self::TimelockInvalidOperationLength(inner) => {
7765                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encoded_size(
7766                        inner,
7767                    )
7768                }
7769                Self::TimelockUnauthorizedCaller(inner) => {
7770                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encoded_size(
7771                        inner,
7772                    )
7773                }
7774                Self::TimelockUnexecutedPredecessor(inner) => {
7775                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encoded_size(
7776                        inner,
7777                    )
7778                }
7779                Self::TimelockUnexpectedOperationState(inner) => {
7780                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encoded_size(
7781                        inner,
7782                    )
7783                }
7784            }
7785        }
7786        #[inline]
7787        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
7788            match self {
7789                Self::AccessControlBadConfirmation(inner) => {
7790                    <AccessControlBadConfirmation as alloy_sol_types::SolError>::abi_encode_raw(
7791                        inner, out,
7792                    )
7793                },
7794                Self::AccessControlUnauthorizedAccount(inner) => {
7795                    <AccessControlUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
7796                        inner, out,
7797                    )
7798                },
7799                Self::FailedInnerCall(inner) => {
7800                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
7801                },
7802                Self::TimelockInsufficientDelay(inner) => {
7803                    <TimelockInsufficientDelay as alloy_sol_types::SolError>::abi_encode_raw(
7804                        inner, out,
7805                    )
7806                },
7807                Self::TimelockInvalidOperationLength(inner) => {
7808                    <TimelockInvalidOperationLength as alloy_sol_types::SolError>::abi_encode_raw(
7809                        inner, out,
7810                    )
7811                },
7812                Self::TimelockUnauthorizedCaller(inner) => {
7813                    <TimelockUnauthorizedCaller as alloy_sol_types::SolError>::abi_encode_raw(
7814                        inner, out,
7815                    )
7816                },
7817                Self::TimelockUnexecutedPredecessor(inner) => {
7818                    <TimelockUnexecutedPredecessor as alloy_sol_types::SolError>::abi_encode_raw(
7819                        inner, out,
7820                    )
7821                },
7822                Self::TimelockUnexpectedOperationState(inner) => {
7823                    <TimelockUnexpectedOperationState as alloy_sol_types::SolError>::abi_encode_raw(
7824                        inner, out,
7825                    )
7826                },
7827            }
7828        }
7829    }
7830    ///Container for all the [`Timelock`](self) events.
7831    #[derive(Debug, PartialEq, Eq, Hash)]
7832    pub enum TimelockEvents {
7833        #[allow(missing_docs)]
7834        CallExecuted(CallExecuted),
7835        #[allow(missing_docs)]
7836        CallSalt(CallSalt),
7837        #[allow(missing_docs)]
7838        CallScheduled(CallScheduled),
7839        #[allow(missing_docs)]
7840        Cancelled(Cancelled),
7841        #[allow(missing_docs)]
7842        MinDelayChange(MinDelayChange),
7843        #[allow(missing_docs)]
7844        RoleAdminChanged(RoleAdminChanged),
7845        #[allow(missing_docs)]
7846        RoleGranted(RoleGranted),
7847        #[allow(missing_docs)]
7848        RoleRevoked(RoleRevoked),
7849    }
7850    #[automatically_derived]
7851    impl TimelockEvents {
7852        /// All the selectors of this enum.
7853        ///
7854        /// Note that the selectors might not be in the same order as the variants.
7855        /// No guarantees are made about the order of the selectors.
7856        ///
7857        /// Prefer using `SolInterface` methods instead.
7858        pub const SELECTORS: &'static [[u8; 32usize]] = &[
7859            [
7860                17u8, 194u8, 79u8, 78u8, 173u8, 22u8, 80u8, 124u8, 105u8, 172u8, 70u8, 127u8,
7861                189u8, 94u8, 78u8, 237u8, 95u8, 181u8, 198u8, 153u8, 98u8, 109u8, 44u8, 198u8,
7862                214u8, 100u8, 33u8, 223u8, 37u8, 56u8, 134u8, 213u8,
7863            ],
7864            [
7865                32u8, 253u8, 165u8, 253u8, 39u8, 161u8, 234u8, 123u8, 245u8, 185u8, 86u8, 127u8,
7866                20u8, 58u8, 197u8, 71u8, 11u8, 176u8, 89u8, 55u8, 74u8, 39u8, 232u8, 246u8, 124u8,
7867                180u8, 79u8, 148u8, 111u8, 109u8, 3u8, 135u8,
7868            ],
7869            [
7870                47u8, 135u8, 136u8, 17u8, 126u8, 126u8, 255u8, 29u8, 130u8, 233u8, 38u8, 236u8,
7871                121u8, 73u8, 1u8, 209u8, 124u8, 120u8, 2u8, 74u8, 80u8, 39u8, 9u8, 64u8, 48u8,
7872                69u8, 64u8, 167u8, 51u8, 101u8, 111u8, 13u8,
7873            ],
7874            [
7875                76u8, 244u8, 65u8, 12u8, 197u8, 112u8, 64u8, 228u8, 72u8, 98u8, 239u8, 15u8, 69u8,
7876                243u8, 221u8, 90u8, 94u8, 2u8, 219u8, 142u8, 184u8, 173u8, 214u8, 72u8, 212u8,
7877                176u8, 226u8, 54u8, 241u8, 208u8, 125u8, 202u8,
7878            ],
7879            [
7880                186u8, 161u8, 235u8, 34u8, 242u8, 164u8, 146u8, 186u8, 26u8, 95u8, 234u8, 97u8,
7881                184u8, 223u8, 77u8, 39u8, 198u8, 200u8, 181u8, 243u8, 151u8, 30u8, 99u8, 187u8,
7882                88u8, 250u8, 20u8, 255u8, 114u8, 238u8, 219u8, 112u8,
7883            ],
7884            [
7885                189u8, 121u8, 184u8, 111u8, 254u8, 10u8, 184u8, 232u8, 119u8, 97u8, 81u8, 81u8,
7886                66u8, 23u8, 205u8, 124u8, 172u8, 213u8, 44u8, 144u8, 159u8, 102u8, 71u8, 92u8,
7887                58u8, 244u8, 78u8, 18u8, 159u8, 11u8, 0u8, 255u8,
7888            ],
7889            [
7890                194u8, 97u8, 126u8, 250u8, 105u8, 186u8, 182u8, 103u8, 130u8, 250u8, 33u8, 149u8,
7891                67u8, 113u8, 67u8, 56u8, 72u8, 156u8, 78u8, 158u8, 23u8, 130u8, 113u8, 86u8, 10u8,
7892                145u8, 184u8, 44u8, 63u8, 97u8, 43u8, 88u8,
7893            ],
7894            [
7895                246u8, 57u8, 31u8, 92u8, 50u8, 217u8, 198u8, 157u8, 42u8, 71u8, 234u8, 103u8, 11u8,
7896                68u8, 41u8, 116u8, 181u8, 57u8, 53u8, 209u8, 237u8, 199u8, 253u8, 100u8, 235u8,
7897                33u8, 224u8, 71u8, 168u8, 57u8, 23u8, 27u8,
7898            ],
7899        ];
7900    }
7901    #[automatically_derived]
7902    impl alloy_sol_types::SolEventInterface for TimelockEvents {
7903        const NAME: &'static str = "TimelockEvents";
7904        const COUNT: usize = 8usize;
7905        fn decode_raw_log(
7906            topics: &[alloy_sol_types::Word],
7907            data: &[u8],
7908            validate: bool,
7909        ) -> alloy_sol_types::Result<Self> {
7910            match topics.first().copied() {
7911                Some(<CallExecuted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7912                    <CallExecuted as alloy_sol_types::SolEvent>::decode_raw_log(
7913                        topics, data, validate,
7914                    )
7915                    .map(Self::CallExecuted)
7916                },
7917                Some(<CallSalt as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7918                    <CallSalt as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
7919                        .map(Self::CallSalt)
7920                },
7921                Some(<CallScheduled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7922                    <CallScheduled as alloy_sol_types::SolEvent>::decode_raw_log(
7923                        topics, data, validate,
7924                    )
7925                    .map(Self::CallScheduled)
7926                },
7927                Some(<Cancelled as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7928                    <Cancelled as alloy_sol_types::SolEvent>::decode_raw_log(topics, data, validate)
7929                        .map(Self::Cancelled)
7930                },
7931                Some(<MinDelayChange as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7932                    <MinDelayChange as alloy_sol_types::SolEvent>::decode_raw_log(
7933                        topics, data, validate,
7934                    )
7935                    .map(Self::MinDelayChange)
7936                },
7937                Some(<RoleAdminChanged as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7938                    <RoleAdminChanged as alloy_sol_types::SolEvent>::decode_raw_log(
7939                        topics, data, validate,
7940                    )
7941                    .map(Self::RoleAdminChanged)
7942                },
7943                Some(<RoleGranted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7944                    <RoleGranted as alloy_sol_types::SolEvent>::decode_raw_log(
7945                        topics, data, validate,
7946                    )
7947                    .map(Self::RoleGranted)
7948                },
7949                Some(<RoleRevoked as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
7950                    <RoleRevoked as alloy_sol_types::SolEvent>::decode_raw_log(
7951                        topics, data, validate,
7952                    )
7953                    .map(Self::RoleRevoked)
7954                },
7955                _ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
7956                    name: <Self as alloy_sol_types::SolEventInterface>::NAME,
7957                    log: alloy_sol_types::private::Box::new(
7958                        alloy_sol_types::private::LogData::new_unchecked(
7959                            topics.to_vec(),
7960                            data.to_vec().into(),
7961                        ),
7962                    ),
7963                }),
7964            }
7965        }
7966    }
7967    #[automatically_derived]
7968    impl alloy_sol_types::private::IntoLogData for TimelockEvents {
7969        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7970            match self {
7971                Self::CallExecuted(inner) => {
7972                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7973                },
7974                Self::CallSalt(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
7975                Self::CallScheduled(inner) => {
7976                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7977                },
7978                Self::Cancelled(inner) => alloy_sol_types::private::IntoLogData::to_log_data(inner),
7979                Self::MinDelayChange(inner) => {
7980                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7981                },
7982                Self::RoleAdminChanged(inner) => {
7983                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7984                },
7985                Self::RoleGranted(inner) => {
7986                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7987                },
7988                Self::RoleRevoked(inner) => {
7989                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
7990                },
7991            }
7992        }
7993        fn into_log_data(self) -> alloy_sol_types::private::LogData {
7994            match self {
7995                Self::CallExecuted(inner) => {
7996                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
7997                },
7998                Self::CallSalt(inner) => {
7999                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
8000                },
8001                Self::CallScheduled(inner) => {
8002                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
8003                },
8004                Self::Cancelled(inner) => {
8005                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
8006                },
8007                Self::MinDelayChange(inner) => {
8008                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
8009                },
8010                Self::RoleAdminChanged(inner) => {
8011                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
8012                },
8013                Self::RoleGranted(inner) => {
8014                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
8015                },
8016                Self::RoleRevoked(inner) => {
8017                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
8018                },
8019            }
8020        }
8021    }
8022    use alloy::contract as alloy_contract;
8023    /**Creates a new wrapper around an on-chain [`Timelock`](self) contract instance.
8024
8025    See the [wrapper's documentation](`TimelockInstance`) for more details.*/
8026    #[inline]
8027    pub const fn new<
8028        T: alloy_contract::private::Transport + ::core::clone::Clone,
8029        P: alloy_contract::private::Provider<T, N>,
8030        N: alloy_contract::private::Network,
8031    >(
8032        address: alloy_sol_types::private::Address,
8033        provider: P,
8034    ) -> TimelockInstance<T, P, N> {
8035        TimelockInstance::<T, P, N>::new(address, provider)
8036    }
8037    /**Deploys this contract using the given `provider` and constructor arguments, if any.
8038
8039    Returns a new instance of the contract, if the deployment was successful.
8040
8041    For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
8042    #[inline]
8043    pub fn deploy<
8044        T: alloy_contract::private::Transport + ::core::clone::Clone,
8045        P: alloy_contract::private::Provider<T, N>,
8046        N: alloy_contract::private::Network,
8047    >(
8048        provider: P,
8049        minDelay: alloy::sol_types::private::primitives::aliases::U256,
8050        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8051        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8052        admin: alloy::sol_types::private::Address,
8053    ) -> impl ::core::future::Future<Output = alloy_contract::Result<TimelockInstance<T, P, N>>>
8054    {
8055        TimelockInstance::<T, P, N>::deploy(provider, minDelay, proposers, executors, admin)
8056    }
8057    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
8058    and constructor arguments, if any.
8059
8060    This is a simple wrapper around creating a `RawCallBuilder` with the data set to
8061    the bytecode concatenated with the constructor's ABI-encoded arguments.*/
8062    #[inline]
8063    pub fn deploy_builder<
8064        T: alloy_contract::private::Transport + ::core::clone::Clone,
8065        P: alloy_contract::private::Provider<T, N>,
8066        N: alloy_contract::private::Network,
8067    >(
8068        provider: P,
8069        minDelay: alloy::sol_types::private::primitives::aliases::U256,
8070        proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8071        executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8072        admin: alloy::sol_types::private::Address,
8073    ) -> alloy_contract::RawCallBuilder<T, P, N> {
8074        TimelockInstance::<T, P, N>::deploy_builder(provider, minDelay, proposers, executors, admin)
8075    }
8076    /**A [`Timelock`](self) instance.
8077
8078    Contains type-safe methods for interacting with an on-chain instance of the
8079    [`Timelock`](self) contract located at a given `address`, using a given
8080    provider `P`.
8081
8082    If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
8083    documentation on how to provide it), the `deploy` and `deploy_builder` methods can
8084    be used to deploy a new instance of the contract.
8085
8086    See the [module-level documentation](self) for all the available methods.*/
8087    #[derive(Clone)]
8088    pub struct TimelockInstance<T, P, N = alloy_contract::private::Ethereum> {
8089        address: alloy_sol_types::private::Address,
8090        provider: P,
8091        _network_transport: ::core::marker::PhantomData<(N, T)>,
8092    }
8093    #[automatically_derived]
8094    impl<T, P, N> ::core::fmt::Debug for TimelockInstance<T, P, N> {
8095        #[inline]
8096        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
8097            f.debug_tuple("TimelockInstance")
8098                .field(&self.address)
8099                .finish()
8100        }
8101    }
8102    /// Instantiation and getters/setters.
8103    #[automatically_derived]
8104    impl<
8105            T: alloy_contract::private::Transport + ::core::clone::Clone,
8106            P: alloy_contract::private::Provider<T, N>,
8107            N: alloy_contract::private::Network,
8108        > TimelockInstance<T, P, N>
8109    {
8110        /**Creates a new wrapper around an on-chain [`Timelock`](self) contract instance.
8111
8112        See the [wrapper's documentation](`TimelockInstance`) for more details.*/
8113        #[inline]
8114        pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
8115            Self {
8116                address,
8117                provider,
8118                _network_transport: ::core::marker::PhantomData,
8119            }
8120        }
8121        /**Deploys this contract using the given `provider` and constructor arguments, if any.
8122
8123        Returns a new instance of the contract, if the deployment was successful.
8124
8125        For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
8126        #[inline]
8127        pub async fn deploy(
8128            provider: P,
8129            minDelay: alloy::sol_types::private::primitives::aliases::U256,
8130            proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8131            executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8132            admin: alloy::sol_types::private::Address,
8133        ) -> alloy_contract::Result<TimelockInstance<T, P, N>> {
8134            let call_builder =
8135                Self::deploy_builder(provider, minDelay, proposers, executors, admin);
8136            let contract_address = call_builder.deploy().await?;
8137            Ok(Self::new(contract_address, call_builder.provider))
8138        }
8139        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
8140        and constructor arguments, if any.
8141
8142        This is a simple wrapper around creating a `RawCallBuilder` with the data set to
8143        the bytecode concatenated with the constructor's ABI-encoded arguments.*/
8144        #[inline]
8145        pub fn deploy_builder(
8146            provider: P,
8147            minDelay: alloy::sol_types::private::primitives::aliases::U256,
8148            proposers: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8149            executors: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8150            admin: alloy::sol_types::private::Address,
8151        ) -> alloy_contract::RawCallBuilder<T, P, N> {
8152            alloy_contract::RawCallBuilder::new_raw_deploy(
8153                provider,
8154                [
8155                    &BYTECODE[..],
8156                    &alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
8157                        minDelay,
8158                        proposers,
8159                        executors,
8160                        admin,
8161                    })[..],
8162                ]
8163                .concat()
8164                .into(),
8165            )
8166        }
8167        /// Returns a reference to the address.
8168        #[inline]
8169        pub const fn address(&self) -> &alloy_sol_types::private::Address {
8170            &self.address
8171        }
8172        /// Sets the address.
8173        #[inline]
8174        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
8175            self.address = address;
8176        }
8177        /// Sets the address and returns `self`.
8178        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
8179            self.set_address(address);
8180            self
8181        }
8182        /// Returns a reference to the provider.
8183        #[inline]
8184        pub const fn provider(&self) -> &P {
8185            &self.provider
8186        }
8187    }
8188    impl<T, P: ::core::clone::Clone, N> TimelockInstance<T, &P, N> {
8189        /// Clones the provider and returns a new instance with the cloned provider.
8190        #[inline]
8191        pub fn with_cloned_provider(self) -> TimelockInstance<T, P, N> {
8192            TimelockInstance {
8193                address: self.address,
8194                provider: ::core::clone::Clone::clone(&self.provider),
8195                _network_transport: ::core::marker::PhantomData,
8196            }
8197        }
8198    }
8199    /// Function calls.
8200    #[automatically_derived]
8201    impl<
8202            T: alloy_contract::private::Transport + ::core::clone::Clone,
8203            P: alloy_contract::private::Provider<T, N>,
8204            N: alloy_contract::private::Network,
8205        > TimelockInstance<T, P, N>
8206    {
8207        /// Creates a new call builder using this contract instance's provider and address.
8208        ///
8209        /// Note that the call can be any function call, not just those defined in this
8210        /// contract. Prefer using the other methods for building type-safe contract calls.
8211        pub fn call_builder<C: alloy_sol_types::SolCall>(
8212            &self,
8213            call: &C,
8214        ) -> alloy_contract::SolCallBuilder<T, &P, C, N> {
8215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
8216        }
8217        ///Creates a new call builder for the [`CANCELLER_ROLE`] function.
8218        pub fn CANCELLER_ROLE(
8219            &self,
8220        ) -> alloy_contract::SolCallBuilder<T, &P, CANCELLER_ROLECall, N> {
8221            self.call_builder(&CANCELLER_ROLECall {})
8222        }
8223        ///Creates a new call builder for the [`DEFAULT_ADMIN_ROLE`] function.
8224        pub fn DEFAULT_ADMIN_ROLE(
8225            &self,
8226        ) -> alloy_contract::SolCallBuilder<T, &P, DEFAULT_ADMIN_ROLECall, N> {
8227            self.call_builder(&DEFAULT_ADMIN_ROLECall {})
8228        }
8229        ///Creates a new call builder for the [`EXECUTOR_ROLE`] function.
8230        pub fn EXECUTOR_ROLE(&self) -> alloy_contract::SolCallBuilder<T, &P, EXECUTOR_ROLECall, N> {
8231            self.call_builder(&EXECUTOR_ROLECall {})
8232        }
8233        ///Creates a new call builder for the [`PROPOSER_ROLE`] function.
8234        pub fn PROPOSER_ROLE(&self) -> alloy_contract::SolCallBuilder<T, &P, PROPOSER_ROLECall, N> {
8235            self.call_builder(&PROPOSER_ROLECall {})
8236        }
8237        ///Creates a new call builder for the [`cancel`] function.
8238        pub fn cancel(
8239            &self,
8240            id: alloy::sol_types::private::FixedBytes<32>,
8241        ) -> alloy_contract::SolCallBuilder<T, &P, cancelCall, N> {
8242            self.call_builder(&cancelCall { id })
8243        }
8244        ///Creates a new call builder for the [`execute`] function.
8245        pub fn execute(
8246            &self,
8247            target: alloy::sol_types::private::Address,
8248            value: alloy::sol_types::private::primitives::aliases::U256,
8249            payload: alloy::sol_types::private::Bytes,
8250            predecessor: alloy::sol_types::private::FixedBytes<32>,
8251            salt: alloy::sol_types::private::FixedBytes<32>,
8252        ) -> alloy_contract::SolCallBuilder<T, &P, executeCall, N> {
8253            self.call_builder(&executeCall {
8254                target,
8255                value,
8256                payload,
8257                predecessor,
8258                salt,
8259            })
8260        }
8261        ///Creates a new call builder for the [`executeBatch`] function.
8262        pub fn executeBatch(
8263            &self,
8264            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8265            values: alloy::sol_types::private::Vec<
8266                alloy::sol_types::private::primitives::aliases::U256,
8267            >,
8268            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
8269            predecessor: alloy::sol_types::private::FixedBytes<32>,
8270            salt: alloy::sol_types::private::FixedBytes<32>,
8271        ) -> alloy_contract::SolCallBuilder<T, &P, executeBatchCall, N> {
8272            self.call_builder(&executeBatchCall {
8273                targets,
8274                values,
8275                payloads,
8276                predecessor,
8277                salt,
8278            })
8279        }
8280        ///Creates a new call builder for the [`getMinDelay`] function.
8281        pub fn getMinDelay(&self) -> alloy_contract::SolCallBuilder<T, &P, getMinDelayCall, N> {
8282            self.call_builder(&getMinDelayCall {})
8283        }
8284        ///Creates a new call builder for the [`getOperationState`] function.
8285        pub fn getOperationState(
8286            &self,
8287            id: alloy::sol_types::private::FixedBytes<32>,
8288        ) -> alloy_contract::SolCallBuilder<T, &P, getOperationStateCall, N> {
8289            self.call_builder(&getOperationStateCall { id })
8290        }
8291        ///Creates a new call builder for the [`getRoleAdmin`] function.
8292        pub fn getRoleAdmin(
8293            &self,
8294            role: alloy::sol_types::private::FixedBytes<32>,
8295        ) -> alloy_contract::SolCallBuilder<T, &P, getRoleAdminCall, N> {
8296            self.call_builder(&getRoleAdminCall { role })
8297        }
8298        ///Creates a new call builder for the [`getTimestamp`] function.
8299        pub fn getTimestamp(
8300            &self,
8301            id: alloy::sol_types::private::FixedBytes<32>,
8302        ) -> alloy_contract::SolCallBuilder<T, &P, getTimestampCall, N> {
8303            self.call_builder(&getTimestampCall { id })
8304        }
8305        ///Creates a new call builder for the [`grantRole`] function.
8306        pub fn grantRole(
8307            &self,
8308            role: alloy::sol_types::private::FixedBytes<32>,
8309            account: alloy::sol_types::private::Address,
8310        ) -> alloy_contract::SolCallBuilder<T, &P, grantRoleCall, N> {
8311            self.call_builder(&grantRoleCall { role, account })
8312        }
8313        ///Creates a new call builder for the [`hasRole`] function.
8314        pub fn hasRole(
8315            &self,
8316            role: alloy::sol_types::private::FixedBytes<32>,
8317            account: alloy::sol_types::private::Address,
8318        ) -> alloy_contract::SolCallBuilder<T, &P, hasRoleCall, N> {
8319            self.call_builder(&hasRoleCall { role, account })
8320        }
8321        ///Creates a new call builder for the [`hashOperation`] function.
8322        pub fn hashOperation(
8323            &self,
8324            target: alloy::sol_types::private::Address,
8325            value: alloy::sol_types::private::primitives::aliases::U256,
8326            data: alloy::sol_types::private::Bytes,
8327            predecessor: alloy::sol_types::private::FixedBytes<32>,
8328            salt: alloy::sol_types::private::FixedBytes<32>,
8329        ) -> alloy_contract::SolCallBuilder<T, &P, hashOperationCall, N> {
8330            self.call_builder(&hashOperationCall {
8331                target,
8332                value,
8333                data,
8334                predecessor,
8335                salt,
8336            })
8337        }
8338        ///Creates a new call builder for the [`hashOperationBatch`] function.
8339        pub fn hashOperationBatch(
8340            &self,
8341            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8342            values: alloy::sol_types::private::Vec<
8343                alloy::sol_types::private::primitives::aliases::U256,
8344            >,
8345            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
8346            predecessor: alloy::sol_types::private::FixedBytes<32>,
8347            salt: alloy::sol_types::private::FixedBytes<32>,
8348        ) -> alloy_contract::SolCallBuilder<T, &P, hashOperationBatchCall, N> {
8349            self.call_builder(&hashOperationBatchCall {
8350                targets,
8351                values,
8352                payloads,
8353                predecessor,
8354                salt,
8355            })
8356        }
8357        ///Creates a new call builder for the [`isOperation`] function.
8358        pub fn isOperation(
8359            &self,
8360            id: alloy::sol_types::private::FixedBytes<32>,
8361        ) -> alloy_contract::SolCallBuilder<T, &P, isOperationCall, N> {
8362            self.call_builder(&isOperationCall { id })
8363        }
8364        ///Creates a new call builder for the [`isOperationDone`] function.
8365        pub fn isOperationDone(
8366            &self,
8367            id: alloy::sol_types::private::FixedBytes<32>,
8368        ) -> alloy_contract::SolCallBuilder<T, &P, isOperationDoneCall, N> {
8369            self.call_builder(&isOperationDoneCall { id })
8370        }
8371        ///Creates a new call builder for the [`isOperationPending`] function.
8372        pub fn isOperationPending(
8373            &self,
8374            id: alloy::sol_types::private::FixedBytes<32>,
8375        ) -> alloy_contract::SolCallBuilder<T, &P, isOperationPendingCall, N> {
8376            self.call_builder(&isOperationPendingCall { id })
8377        }
8378        ///Creates a new call builder for the [`isOperationReady`] function.
8379        pub fn isOperationReady(
8380            &self,
8381            id: alloy::sol_types::private::FixedBytes<32>,
8382        ) -> alloy_contract::SolCallBuilder<T, &P, isOperationReadyCall, N> {
8383            self.call_builder(&isOperationReadyCall { id })
8384        }
8385        ///Creates a new call builder for the [`onERC1155BatchReceived`] function.
8386        pub fn onERC1155BatchReceived(
8387            &self,
8388            _0: alloy::sol_types::private::Address,
8389            _1: alloy::sol_types::private::Address,
8390            _2: alloy::sol_types::private::Vec<
8391                alloy::sol_types::private::primitives::aliases::U256,
8392            >,
8393            _3: alloy::sol_types::private::Vec<
8394                alloy::sol_types::private::primitives::aliases::U256,
8395            >,
8396            _4: alloy::sol_types::private::Bytes,
8397        ) -> alloy_contract::SolCallBuilder<T, &P, onERC1155BatchReceivedCall, N> {
8398            self.call_builder(&onERC1155BatchReceivedCall { _0, _1, _2, _3, _4 })
8399        }
8400        ///Creates a new call builder for the [`onERC1155Received`] function.
8401        pub fn onERC1155Received(
8402            &self,
8403            _0: alloy::sol_types::private::Address,
8404            _1: alloy::sol_types::private::Address,
8405            _2: alloy::sol_types::private::primitives::aliases::U256,
8406            _3: alloy::sol_types::private::primitives::aliases::U256,
8407            _4: alloy::sol_types::private::Bytes,
8408        ) -> alloy_contract::SolCallBuilder<T, &P, onERC1155ReceivedCall, N> {
8409            self.call_builder(&onERC1155ReceivedCall { _0, _1, _2, _3, _4 })
8410        }
8411        ///Creates a new call builder for the [`onERC721Received`] function.
8412        pub fn onERC721Received(
8413            &self,
8414            _0: alloy::sol_types::private::Address,
8415            _1: alloy::sol_types::private::Address,
8416            _2: alloy::sol_types::private::primitives::aliases::U256,
8417            _3: alloy::sol_types::private::Bytes,
8418        ) -> alloy_contract::SolCallBuilder<T, &P, onERC721ReceivedCall, N> {
8419            self.call_builder(&onERC721ReceivedCall { _0, _1, _2, _3 })
8420        }
8421        ///Creates a new call builder for the [`renounceRole`] function.
8422        pub fn renounceRole(
8423            &self,
8424            role: alloy::sol_types::private::FixedBytes<32>,
8425            callerConfirmation: alloy::sol_types::private::Address,
8426        ) -> alloy_contract::SolCallBuilder<T, &P, renounceRoleCall, N> {
8427            self.call_builder(&renounceRoleCall {
8428                role,
8429                callerConfirmation,
8430            })
8431        }
8432        ///Creates a new call builder for the [`revokeRole`] function.
8433        pub fn revokeRole(
8434            &self,
8435            role: alloy::sol_types::private::FixedBytes<32>,
8436            account: alloy::sol_types::private::Address,
8437        ) -> alloy_contract::SolCallBuilder<T, &P, revokeRoleCall, N> {
8438            self.call_builder(&revokeRoleCall { role, account })
8439        }
8440        ///Creates a new call builder for the [`schedule`] function.
8441        pub fn schedule(
8442            &self,
8443            target: alloy::sol_types::private::Address,
8444            value: alloy::sol_types::private::primitives::aliases::U256,
8445            data: alloy::sol_types::private::Bytes,
8446            predecessor: alloy::sol_types::private::FixedBytes<32>,
8447            salt: alloy::sol_types::private::FixedBytes<32>,
8448            delay: alloy::sol_types::private::primitives::aliases::U256,
8449        ) -> alloy_contract::SolCallBuilder<T, &P, scheduleCall, N> {
8450            self.call_builder(&scheduleCall {
8451                target,
8452                value,
8453                data,
8454                predecessor,
8455                salt,
8456                delay,
8457            })
8458        }
8459        ///Creates a new call builder for the [`scheduleBatch`] function.
8460        pub fn scheduleBatch(
8461            &self,
8462            targets: alloy::sol_types::private::Vec<alloy::sol_types::private::Address>,
8463            values: alloy::sol_types::private::Vec<
8464                alloy::sol_types::private::primitives::aliases::U256,
8465            >,
8466            payloads: alloy::sol_types::private::Vec<alloy::sol_types::private::Bytes>,
8467            predecessor: alloy::sol_types::private::FixedBytes<32>,
8468            salt: alloy::sol_types::private::FixedBytes<32>,
8469            delay: alloy::sol_types::private::primitives::aliases::U256,
8470        ) -> alloy_contract::SolCallBuilder<T, &P, scheduleBatchCall, N> {
8471            self.call_builder(&scheduleBatchCall {
8472                targets,
8473                values,
8474                payloads,
8475                predecessor,
8476                salt,
8477                delay,
8478            })
8479        }
8480        ///Creates a new call builder for the [`supportsInterface`] function.
8481        pub fn supportsInterface(
8482            &self,
8483            interfaceId: alloy::sol_types::private::FixedBytes<4>,
8484        ) -> alloy_contract::SolCallBuilder<T, &P, supportsInterfaceCall, N> {
8485            self.call_builder(&supportsInterfaceCall { interfaceId })
8486        }
8487        ///Creates a new call builder for the [`updateDelay`] function.
8488        pub fn updateDelay(
8489            &self,
8490            newDelay: alloy::sol_types::private::primitives::aliases::U256,
8491        ) -> alloy_contract::SolCallBuilder<T, &P, updateDelayCall, N> {
8492            self.call_builder(&updateDelayCall { newDelay })
8493        }
8494    }
8495    /// Event filters.
8496    #[automatically_derived]
8497    impl<
8498            T: alloy_contract::private::Transport + ::core::clone::Clone,
8499            P: alloy_contract::private::Provider<T, N>,
8500            N: alloy_contract::private::Network,
8501        > TimelockInstance<T, P, N>
8502    {
8503        /// Creates a new event filter using this contract instance's provider and address.
8504        ///
8505        /// Note that the type can be any event, not just those defined in this contract.
8506        /// Prefer using the other methods for building type-safe event filters.
8507        pub fn event_filter<E: alloy_sol_types::SolEvent>(
8508            &self,
8509        ) -> alloy_contract::Event<T, &P, E, N> {
8510            alloy_contract::Event::new_sol(&self.provider, &self.address)
8511        }
8512        ///Creates a new event filter for the [`CallExecuted`] event.
8513        pub fn CallExecuted_filter(&self) -> alloy_contract::Event<T, &P, CallExecuted, N> {
8514            self.event_filter::<CallExecuted>()
8515        }
8516        ///Creates a new event filter for the [`CallSalt`] event.
8517        pub fn CallSalt_filter(&self) -> alloy_contract::Event<T, &P, CallSalt, N> {
8518            self.event_filter::<CallSalt>()
8519        }
8520        ///Creates a new event filter for the [`CallScheduled`] event.
8521        pub fn CallScheduled_filter(&self) -> alloy_contract::Event<T, &P, CallScheduled, N> {
8522            self.event_filter::<CallScheduled>()
8523        }
8524        ///Creates a new event filter for the [`Cancelled`] event.
8525        pub fn Cancelled_filter(&self) -> alloy_contract::Event<T, &P, Cancelled, N> {
8526            self.event_filter::<Cancelled>()
8527        }
8528        ///Creates a new event filter for the [`MinDelayChange`] event.
8529        pub fn MinDelayChange_filter(&self) -> alloy_contract::Event<T, &P, MinDelayChange, N> {
8530            self.event_filter::<MinDelayChange>()
8531        }
8532        ///Creates a new event filter for the [`RoleAdminChanged`] event.
8533        pub fn RoleAdminChanged_filter(&self) -> alloy_contract::Event<T, &P, RoleAdminChanged, N> {
8534            self.event_filter::<RoleAdminChanged>()
8535        }
8536        ///Creates a new event filter for the [`RoleGranted`] event.
8537        pub fn RoleGranted_filter(&self) -> alloy_contract::Event<T, &P, RoleGranted, N> {
8538            self.event_filter::<RoleGranted>()
8539        }
8540        ///Creates a new event filter for the [`RoleRevoked`] event.
8541        pub fn RoleRevoked_filter(&self) -> alloy_contract::Event<T, &P, RoleRevoked, N> {
8542            self.event_filter::<RoleRevoked>()
8543        }
8544    }
8545}