hotshot_contract_adapter/bindings/
i_plonk_verifier.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(@ name);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630/**
631
632Generated by the following Solidity interface...
633```solidity
634library BN254 {
635    type BaseField is uint256;
636    type ScalarField is uint256;
637    struct G1Point {
638        BaseField x;
639        BaseField y;
640    }
641}
642
643interface IPlonkVerifier {
644    struct PlonkProof {
645        BN254.G1Point wire0;
646        BN254.G1Point wire1;
647        BN254.G1Point wire2;
648        BN254.G1Point wire3;
649        BN254.G1Point wire4;
650        BN254.G1Point prodPerm;
651        BN254.G1Point split0;
652        BN254.G1Point split1;
653        BN254.G1Point split2;
654        BN254.G1Point split3;
655        BN254.G1Point split4;
656        BN254.G1Point zeta;
657        BN254.G1Point zetaOmega;
658        BN254.ScalarField wireEval0;
659        BN254.ScalarField wireEval1;
660        BN254.ScalarField wireEval2;
661        BN254.ScalarField wireEval3;
662        BN254.ScalarField wireEval4;
663        BN254.ScalarField sigmaEval0;
664        BN254.ScalarField sigmaEval1;
665        BN254.ScalarField sigmaEval2;
666        BN254.ScalarField sigmaEval3;
667        BN254.ScalarField prodPermZetaOmegaEval;
668    }
669    struct VerifyingKey {
670        uint256 domainSize;
671        uint256 numInputs;
672        BN254.G1Point sigma0;
673        BN254.G1Point sigma1;
674        BN254.G1Point sigma2;
675        BN254.G1Point sigma3;
676        BN254.G1Point sigma4;
677        BN254.G1Point q1;
678        BN254.G1Point q2;
679        BN254.G1Point q3;
680        BN254.G1Point q4;
681        BN254.G1Point qM12;
682        BN254.G1Point qM34;
683        BN254.G1Point qO;
684        BN254.G1Point qC;
685        BN254.G1Point qH1;
686        BN254.G1Point qH2;
687        BN254.G1Point qH3;
688        BN254.G1Point qH4;
689        BN254.G1Point qEcc;
690        bytes32 g2LSB;
691        bytes32 g2MSB;
692    }
693
694    function verify(VerifyingKey memory verifyingKey, uint256[] memory publicInput, PlonkProof memory proof) external view returns (bool);
695}
696```
697
698...which was generated by the following JSON ABI:
699```json
700[
701  {
702    "type": "function",
703    "name": "verify",
704    "inputs": [
705      {
706        "name": "verifyingKey",
707        "type": "tuple",
708        "internalType": "struct IPlonkVerifier.VerifyingKey",
709        "components": [
710          {
711            "name": "domainSize",
712            "type": "uint256",
713            "internalType": "uint256"
714          },
715          {
716            "name": "numInputs",
717            "type": "uint256",
718            "internalType": "uint256"
719          },
720          {
721            "name": "sigma0",
722            "type": "tuple",
723            "internalType": "struct BN254.G1Point",
724            "components": [
725              {
726                "name": "x",
727                "type": "uint256",
728                "internalType": "BN254.BaseField"
729              },
730              {
731                "name": "y",
732                "type": "uint256",
733                "internalType": "BN254.BaseField"
734              }
735            ]
736          },
737          {
738            "name": "sigma1",
739            "type": "tuple",
740            "internalType": "struct BN254.G1Point",
741            "components": [
742              {
743                "name": "x",
744                "type": "uint256",
745                "internalType": "BN254.BaseField"
746              },
747              {
748                "name": "y",
749                "type": "uint256",
750                "internalType": "BN254.BaseField"
751              }
752            ]
753          },
754          {
755            "name": "sigma2",
756            "type": "tuple",
757            "internalType": "struct BN254.G1Point",
758            "components": [
759              {
760                "name": "x",
761                "type": "uint256",
762                "internalType": "BN254.BaseField"
763              },
764              {
765                "name": "y",
766                "type": "uint256",
767                "internalType": "BN254.BaseField"
768              }
769            ]
770          },
771          {
772            "name": "sigma3",
773            "type": "tuple",
774            "internalType": "struct BN254.G1Point",
775            "components": [
776              {
777                "name": "x",
778                "type": "uint256",
779                "internalType": "BN254.BaseField"
780              },
781              {
782                "name": "y",
783                "type": "uint256",
784                "internalType": "BN254.BaseField"
785              }
786            ]
787          },
788          {
789            "name": "sigma4",
790            "type": "tuple",
791            "internalType": "struct BN254.G1Point",
792            "components": [
793              {
794                "name": "x",
795                "type": "uint256",
796                "internalType": "BN254.BaseField"
797              },
798              {
799                "name": "y",
800                "type": "uint256",
801                "internalType": "BN254.BaseField"
802              }
803            ]
804          },
805          {
806            "name": "q1",
807            "type": "tuple",
808            "internalType": "struct BN254.G1Point",
809            "components": [
810              {
811                "name": "x",
812                "type": "uint256",
813                "internalType": "BN254.BaseField"
814              },
815              {
816                "name": "y",
817                "type": "uint256",
818                "internalType": "BN254.BaseField"
819              }
820            ]
821          },
822          {
823            "name": "q2",
824            "type": "tuple",
825            "internalType": "struct BN254.G1Point",
826            "components": [
827              {
828                "name": "x",
829                "type": "uint256",
830                "internalType": "BN254.BaseField"
831              },
832              {
833                "name": "y",
834                "type": "uint256",
835                "internalType": "BN254.BaseField"
836              }
837            ]
838          },
839          {
840            "name": "q3",
841            "type": "tuple",
842            "internalType": "struct BN254.G1Point",
843            "components": [
844              {
845                "name": "x",
846                "type": "uint256",
847                "internalType": "BN254.BaseField"
848              },
849              {
850                "name": "y",
851                "type": "uint256",
852                "internalType": "BN254.BaseField"
853              }
854            ]
855          },
856          {
857            "name": "q4",
858            "type": "tuple",
859            "internalType": "struct BN254.G1Point",
860            "components": [
861              {
862                "name": "x",
863                "type": "uint256",
864                "internalType": "BN254.BaseField"
865              },
866              {
867                "name": "y",
868                "type": "uint256",
869                "internalType": "BN254.BaseField"
870              }
871            ]
872          },
873          {
874            "name": "qM12",
875            "type": "tuple",
876            "internalType": "struct BN254.G1Point",
877            "components": [
878              {
879                "name": "x",
880                "type": "uint256",
881                "internalType": "BN254.BaseField"
882              },
883              {
884                "name": "y",
885                "type": "uint256",
886                "internalType": "BN254.BaseField"
887              }
888            ]
889          },
890          {
891            "name": "qM34",
892            "type": "tuple",
893            "internalType": "struct BN254.G1Point",
894            "components": [
895              {
896                "name": "x",
897                "type": "uint256",
898                "internalType": "BN254.BaseField"
899              },
900              {
901                "name": "y",
902                "type": "uint256",
903                "internalType": "BN254.BaseField"
904              }
905            ]
906          },
907          {
908            "name": "qO",
909            "type": "tuple",
910            "internalType": "struct BN254.G1Point",
911            "components": [
912              {
913                "name": "x",
914                "type": "uint256",
915                "internalType": "BN254.BaseField"
916              },
917              {
918                "name": "y",
919                "type": "uint256",
920                "internalType": "BN254.BaseField"
921              }
922            ]
923          },
924          {
925            "name": "qC",
926            "type": "tuple",
927            "internalType": "struct BN254.G1Point",
928            "components": [
929              {
930                "name": "x",
931                "type": "uint256",
932                "internalType": "BN254.BaseField"
933              },
934              {
935                "name": "y",
936                "type": "uint256",
937                "internalType": "BN254.BaseField"
938              }
939            ]
940          },
941          {
942            "name": "qH1",
943            "type": "tuple",
944            "internalType": "struct BN254.G1Point",
945            "components": [
946              {
947                "name": "x",
948                "type": "uint256",
949                "internalType": "BN254.BaseField"
950              },
951              {
952                "name": "y",
953                "type": "uint256",
954                "internalType": "BN254.BaseField"
955              }
956            ]
957          },
958          {
959            "name": "qH2",
960            "type": "tuple",
961            "internalType": "struct BN254.G1Point",
962            "components": [
963              {
964                "name": "x",
965                "type": "uint256",
966                "internalType": "BN254.BaseField"
967              },
968              {
969                "name": "y",
970                "type": "uint256",
971                "internalType": "BN254.BaseField"
972              }
973            ]
974          },
975          {
976            "name": "qH3",
977            "type": "tuple",
978            "internalType": "struct BN254.G1Point",
979            "components": [
980              {
981                "name": "x",
982                "type": "uint256",
983                "internalType": "BN254.BaseField"
984              },
985              {
986                "name": "y",
987                "type": "uint256",
988                "internalType": "BN254.BaseField"
989              }
990            ]
991          },
992          {
993            "name": "qH4",
994            "type": "tuple",
995            "internalType": "struct BN254.G1Point",
996            "components": [
997              {
998                "name": "x",
999                "type": "uint256",
1000                "internalType": "BN254.BaseField"
1001              },
1002              {
1003                "name": "y",
1004                "type": "uint256",
1005                "internalType": "BN254.BaseField"
1006              }
1007            ]
1008          },
1009          {
1010            "name": "qEcc",
1011            "type": "tuple",
1012            "internalType": "struct BN254.G1Point",
1013            "components": [
1014              {
1015                "name": "x",
1016                "type": "uint256",
1017                "internalType": "BN254.BaseField"
1018              },
1019              {
1020                "name": "y",
1021                "type": "uint256",
1022                "internalType": "BN254.BaseField"
1023              }
1024            ]
1025          },
1026          {
1027            "name": "g2LSB",
1028            "type": "bytes32",
1029            "internalType": "bytes32"
1030          },
1031          {
1032            "name": "g2MSB",
1033            "type": "bytes32",
1034            "internalType": "bytes32"
1035          }
1036        ]
1037      },
1038      {
1039        "name": "publicInput",
1040        "type": "uint256[]",
1041        "internalType": "uint256[]"
1042      },
1043      {
1044        "name": "proof",
1045        "type": "tuple",
1046        "internalType": "struct IPlonkVerifier.PlonkProof",
1047        "components": [
1048          {
1049            "name": "wire0",
1050            "type": "tuple",
1051            "internalType": "struct BN254.G1Point",
1052            "components": [
1053              {
1054                "name": "x",
1055                "type": "uint256",
1056                "internalType": "BN254.BaseField"
1057              },
1058              {
1059                "name": "y",
1060                "type": "uint256",
1061                "internalType": "BN254.BaseField"
1062              }
1063            ]
1064          },
1065          {
1066            "name": "wire1",
1067            "type": "tuple",
1068            "internalType": "struct BN254.G1Point",
1069            "components": [
1070              {
1071                "name": "x",
1072                "type": "uint256",
1073                "internalType": "BN254.BaseField"
1074              },
1075              {
1076                "name": "y",
1077                "type": "uint256",
1078                "internalType": "BN254.BaseField"
1079              }
1080            ]
1081          },
1082          {
1083            "name": "wire2",
1084            "type": "tuple",
1085            "internalType": "struct BN254.G1Point",
1086            "components": [
1087              {
1088                "name": "x",
1089                "type": "uint256",
1090                "internalType": "BN254.BaseField"
1091              },
1092              {
1093                "name": "y",
1094                "type": "uint256",
1095                "internalType": "BN254.BaseField"
1096              }
1097            ]
1098          },
1099          {
1100            "name": "wire3",
1101            "type": "tuple",
1102            "internalType": "struct BN254.G1Point",
1103            "components": [
1104              {
1105                "name": "x",
1106                "type": "uint256",
1107                "internalType": "BN254.BaseField"
1108              },
1109              {
1110                "name": "y",
1111                "type": "uint256",
1112                "internalType": "BN254.BaseField"
1113              }
1114            ]
1115          },
1116          {
1117            "name": "wire4",
1118            "type": "tuple",
1119            "internalType": "struct BN254.G1Point",
1120            "components": [
1121              {
1122                "name": "x",
1123                "type": "uint256",
1124                "internalType": "BN254.BaseField"
1125              },
1126              {
1127                "name": "y",
1128                "type": "uint256",
1129                "internalType": "BN254.BaseField"
1130              }
1131            ]
1132          },
1133          {
1134            "name": "prodPerm",
1135            "type": "tuple",
1136            "internalType": "struct BN254.G1Point",
1137            "components": [
1138              {
1139                "name": "x",
1140                "type": "uint256",
1141                "internalType": "BN254.BaseField"
1142              },
1143              {
1144                "name": "y",
1145                "type": "uint256",
1146                "internalType": "BN254.BaseField"
1147              }
1148            ]
1149          },
1150          {
1151            "name": "split0",
1152            "type": "tuple",
1153            "internalType": "struct BN254.G1Point",
1154            "components": [
1155              {
1156                "name": "x",
1157                "type": "uint256",
1158                "internalType": "BN254.BaseField"
1159              },
1160              {
1161                "name": "y",
1162                "type": "uint256",
1163                "internalType": "BN254.BaseField"
1164              }
1165            ]
1166          },
1167          {
1168            "name": "split1",
1169            "type": "tuple",
1170            "internalType": "struct BN254.G1Point",
1171            "components": [
1172              {
1173                "name": "x",
1174                "type": "uint256",
1175                "internalType": "BN254.BaseField"
1176              },
1177              {
1178                "name": "y",
1179                "type": "uint256",
1180                "internalType": "BN254.BaseField"
1181              }
1182            ]
1183          },
1184          {
1185            "name": "split2",
1186            "type": "tuple",
1187            "internalType": "struct BN254.G1Point",
1188            "components": [
1189              {
1190                "name": "x",
1191                "type": "uint256",
1192                "internalType": "BN254.BaseField"
1193              },
1194              {
1195                "name": "y",
1196                "type": "uint256",
1197                "internalType": "BN254.BaseField"
1198              }
1199            ]
1200          },
1201          {
1202            "name": "split3",
1203            "type": "tuple",
1204            "internalType": "struct BN254.G1Point",
1205            "components": [
1206              {
1207                "name": "x",
1208                "type": "uint256",
1209                "internalType": "BN254.BaseField"
1210              },
1211              {
1212                "name": "y",
1213                "type": "uint256",
1214                "internalType": "BN254.BaseField"
1215              }
1216            ]
1217          },
1218          {
1219            "name": "split4",
1220            "type": "tuple",
1221            "internalType": "struct BN254.G1Point",
1222            "components": [
1223              {
1224                "name": "x",
1225                "type": "uint256",
1226                "internalType": "BN254.BaseField"
1227              },
1228              {
1229                "name": "y",
1230                "type": "uint256",
1231                "internalType": "BN254.BaseField"
1232              }
1233            ]
1234          },
1235          {
1236            "name": "zeta",
1237            "type": "tuple",
1238            "internalType": "struct BN254.G1Point",
1239            "components": [
1240              {
1241                "name": "x",
1242                "type": "uint256",
1243                "internalType": "BN254.BaseField"
1244              },
1245              {
1246                "name": "y",
1247                "type": "uint256",
1248                "internalType": "BN254.BaseField"
1249              }
1250            ]
1251          },
1252          {
1253            "name": "zetaOmega",
1254            "type": "tuple",
1255            "internalType": "struct BN254.G1Point",
1256            "components": [
1257              {
1258                "name": "x",
1259                "type": "uint256",
1260                "internalType": "BN254.BaseField"
1261              },
1262              {
1263                "name": "y",
1264                "type": "uint256",
1265                "internalType": "BN254.BaseField"
1266              }
1267            ]
1268          },
1269          {
1270            "name": "wireEval0",
1271            "type": "uint256",
1272            "internalType": "BN254.ScalarField"
1273          },
1274          {
1275            "name": "wireEval1",
1276            "type": "uint256",
1277            "internalType": "BN254.ScalarField"
1278          },
1279          {
1280            "name": "wireEval2",
1281            "type": "uint256",
1282            "internalType": "BN254.ScalarField"
1283          },
1284          {
1285            "name": "wireEval3",
1286            "type": "uint256",
1287            "internalType": "BN254.ScalarField"
1288          },
1289          {
1290            "name": "wireEval4",
1291            "type": "uint256",
1292            "internalType": "BN254.ScalarField"
1293          },
1294          {
1295            "name": "sigmaEval0",
1296            "type": "uint256",
1297            "internalType": "BN254.ScalarField"
1298          },
1299          {
1300            "name": "sigmaEval1",
1301            "type": "uint256",
1302            "internalType": "BN254.ScalarField"
1303          },
1304          {
1305            "name": "sigmaEval2",
1306            "type": "uint256",
1307            "internalType": "BN254.ScalarField"
1308          },
1309          {
1310            "name": "sigmaEval3",
1311            "type": "uint256",
1312            "internalType": "BN254.ScalarField"
1313          },
1314          {
1315            "name": "prodPermZetaOmegaEval",
1316            "type": "uint256",
1317            "internalType": "BN254.ScalarField"
1318          }
1319        ]
1320      }
1321    ],
1322    "outputs": [
1323      {
1324        "name": "",
1325        "type": "bool",
1326        "internalType": "bool"
1327      }
1328    ],
1329    "stateMutability": "view"
1330  }
1331]
1332```*/
1333#[allow(
1334    non_camel_case_types,
1335    non_snake_case,
1336    clippy::pub_underscore_fields,
1337    clippy::style,
1338    clippy::empty_structs_with_brackets
1339)]
1340pub mod IPlonkVerifier {
1341    use super::*;
1342    use alloy::sol_types as alloy_sol_types;
1343    /// The creation / init bytecode of the contract.
1344    ///
1345    /// ```text
1346    ///0x
1347    /// ```
1348    #[rustfmt::skip]
1349    #[allow(clippy::all)]
1350    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1351        b"",
1352    );
1353    /// The runtime bytecode of the contract, as deployed on the network.
1354    ///
1355    /// ```text
1356    ///0x
1357    /// ```
1358    #[rustfmt::skip]
1359    #[allow(clippy::all)]
1360    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
1361        b"",
1362    );
1363    #[derive(serde::Serialize, serde::Deserialize)]
1364    #[derive()]
1365    /**```solidity
1366struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
1367```*/
1368    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1369    #[derive(Clone)]
1370    pub struct PlonkProof {
1371        #[allow(missing_docs)]
1372        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1373        #[allow(missing_docs)]
1374        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1375        #[allow(missing_docs)]
1376        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1377        #[allow(missing_docs)]
1378        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1379        #[allow(missing_docs)]
1380        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1381        #[allow(missing_docs)]
1382        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1383        #[allow(missing_docs)]
1384        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1385        #[allow(missing_docs)]
1386        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1387        #[allow(missing_docs)]
1388        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1417    }
1418    #[allow(
1419        non_camel_case_types,
1420        non_snake_case,
1421        clippy::pub_underscore_fields,
1422        clippy::style
1423    )]
1424    const _: () = {
1425        use alloy::sol_types as alloy_sol_types;
1426        #[doc(hidden)]
1427        #[allow(dead_code)]
1428        type UnderlyingSolTuple<'a> = (
1429            BN254::G1Point,
1430            BN254::G1Point,
1431            BN254::G1Point,
1432            BN254::G1Point,
1433            BN254::G1Point,
1434            BN254::G1Point,
1435            BN254::G1Point,
1436            BN254::G1Point,
1437            BN254::G1Point,
1438            BN254::G1Point,
1439            BN254::G1Point,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::ScalarField,
1443            BN254::ScalarField,
1444            BN254::ScalarField,
1445            BN254::ScalarField,
1446            BN254::ScalarField,
1447            BN254::ScalarField,
1448            BN254::ScalarField,
1449            BN254::ScalarField,
1450            BN254::ScalarField,
1451            BN254::ScalarField,
1452        );
1453        #[doc(hidden)]
1454        type UnderlyingRustTuple<'a> = (
1455            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1456            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1457            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1458            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1459            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1460            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1461            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1462            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1469            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1470            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1471            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1472            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1473            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1474            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1475            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1476            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1477            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
1478        );
1479        #[cfg(test)]
1480        #[allow(dead_code, unreachable_patterns)]
1481        fn _type_assertion(
1482            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1483        ) {
1484            match _t {
1485                alloy_sol_types::private::AssertTypeEq::<
1486                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1487                >(_) => {}
1488            }
1489        }
1490        #[automatically_derived]
1491        #[doc(hidden)]
1492        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
1493            fn from(value: PlonkProof) -> Self {
1494                (
1495                    value.wire0,
1496                    value.wire1,
1497                    value.wire2,
1498                    value.wire3,
1499                    value.wire4,
1500                    value.prodPerm,
1501                    value.split0,
1502                    value.split1,
1503                    value.split2,
1504                    value.split3,
1505                    value.split4,
1506                    value.zeta,
1507                    value.zetaOmega,
1508                    value.wireEval0,
1509                    value.wireEval1,
1510                    value.wireEval2,
1511                    value.wireEval3,
1512                    value.wireEval4,
1513                    value.sigmaEval0,
1514                    value.sigmaEval1,
1515                    value.sigmaEval2,
1516                    value.sigmaEval3,
1517                    value.prodPermZetaOmegaEval,
1518                )
1519            }
1520        }
1521        #[automatically_derived]
1522        #[doc(hidden)]
1523        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
1524            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1525                Self {
1526                    wire0: tuple.0,
1527                    wire1: tuple.1,
1528                    wire2: tuple.2,
1529                    wire3: tuple.3,
1530                    wire4: tuple.4,
1531                    prodPerm: tuple.5,
1532                    split0: tuple.6,
1533                    split1: tuple.7,
1534                    split2: tuple.8,
1535                    split3: tuple.9,
1536                    split4: tuple.10,
1537                    zeta: tuple.11,
1538                    zetaOmega: tuple.12,
1539                    wireEval0: tuple.13,
1540                    wireEval1: tuple.14,
1541                    wireEval2: tuple.15,
1542                    wireEval3: tuple.16,
1543                    wireEval4: tuple.17,
1544                    sigmaEval0: tuple.18,
1545                    sigmaEval1: tuple.19,
1546                    sigmaEval2: tuple.20,
1547                    sigmaEval3: tuple.21,
1548                    prodPermZetaOmegaEval: tuple.22,
1549                }
1550            }
1551        }
1552        #[automatically_derived]
1553        impl alloy_sol_types::SolValue for PlonkProof {
1554            type SolType = Self;
1555        }
1556        #[automatically_derived]
1557        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
1558            #[inline]
1559            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1560                (
1561                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
1562                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
1563                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
1564                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
1565                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
1566                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
1567                        &self.prodPerm,
1568                    ),
1569                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
1576                        &self.zetaOmega,
1577                    ),
1578                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1579                        &self.wireEval0,
1580                    ),
1581                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1582                        &self.wireEval1,
1583                    ),
1584                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1585                        &self.wireEval2,
1586                    ),
1587                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1588                        &self.wireEval3,
1589                    ),
1590                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1591                        &self.wireEval4,
1592                    ),
1593                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1594                        &self.sigmaEval0,
1595                    ),
1596                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1597                        &self.sigmaEval1,
1598                    ),
1599                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1600                        &self.sigmaEval2,
1601                    ),
1602                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1603                        &self.sigmaEval3,
1604                    ),
1605                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
1606                        &self.prodPermZetaOmegaEval,
1607                    ),
1608                )
1609            }
1610            #[inline]
1611            fn stv_abi_encoded_size(&self) -> usize {
1612                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1613                    return size;
1614                }
1615                let tuple = <UnderlyingRustTuple<
1616                    '_,
1617                > as ::core::convert::From<Self>>::from(self.clone());
1618                <UnderlyingSolTuple<
1619                    '_,
1620                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1621            }
1622            #[inline]
1623            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1624                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1625            }
1626            #[inline]
1627            fn stv_abi_encode_packed_to(
1628                &self,
1629                out: &mut alloy_sol_types::private::Vec<u8>,
1630            ) {
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1637            }
1638            #[inline]
1639            fn stv_abi_packed_encoded_size(&self) -> usize {
1640                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1641                    return size;
1642                }
1643                let tuple = <UnderlyingRustTuple<
1644                    '_,
1645                > as ::core::convert::From<Self>>::from(self.clone());
1646                <UnderlyingSolTuple<
1647                    '_,
1648                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1649            }
1650        }
1651        #[automatically_derived]
1652        impl alloy_sol_types::SolType for PlonkProof {
1653            type RustType = Self;
1654            type Token<'a> = <UnderlyingSolTuple<
1655                'a,
1656            > as alloy_sol_types::SolType>::Token<'a>;
1657            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1658            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1659                '_,
1660            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1661            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1662                '_,
1663            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1664            #[inline]
1665            fn valid_token(token: &Self::Token<'_>) -> bool {
1666                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1667            }
1668            #[inline]
1669            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1670                let tuple = <UnderlyingSolTuple<
1671                    '_,
1672                > as alloy_sol_types::SolType>::detokenize(token);
1673                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1674            }
1675        }
1676        #[automatically_derived]
1677        impl alloy_sol_types::SolStruct for PlonkProof {
1678            const NAME: &'static str = "PlonkProof";
1679            #[inline]
1680            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1681                alloy_sol_types::private::Cow::Borrowed(
1682                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
1683                )
1684            }
1685            #[inline]
1686            fn eip712_components() -> alloy_sol_types::private::Vec<
1687                alloy_sol_types::private::Cow<'static, str>,
1688            > {
1689                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
1690                components
1691                    .push(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1693                    );
1694                components
1695                    .extend(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1697                    );
1698                components
1699                    .push(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1701                    );
1702                components
1703                    .extend(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1705                    );
1706                components
1707                    .push(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1709                    );
1710                components
1711                    .extend(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1713                    );
1714                components
1715                    .push(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1717                    );
1718                components
1719                    .extend(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1721                    );
1722                components
1723                    .push(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1725                    );
1726                components
1727                    .extend(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1729                    );
1730                components
1731                    .push(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1733                    );
1734                components
1735                    .extend(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1737                    );
1738                components
1739                    .push(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1741                    );
1742                components
1743                    .extend(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1745                    );
1746                components
1747                    .push(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1749                    );
1750                components
1751                    .extend(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1753                    );
1754                components
1755                    .push(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1757                    );
1758                components
1759                    .extend(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1761                    );
1762                components
1763                    .push(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1765                    );
1766                components
1767                    .extend(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1769                    );
1770                components
1771                    .push(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1773                    );
1774                components
1775                    .extend(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1777                    );
1778                components
1779                    .push(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1781                    );
1782                components
1783                    .extend(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1785                    );
1786                components
1787                    .push(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1789                    );
1790                components
1791                    .extend(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1793                    );
1794                components
1795            }
1796            #[inline]
1797            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1798                [
1799                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1800                            &self.wire0,
1801                        )
1802                        .0,
1803                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1804                            &self.wire1,
1805                        )
1806                        .0,
1807                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1808                            &self.wire2,
1809                        )
1810                        .0,
1811                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1812                            &self.wire3,
1813                        )
1814                        .0,
1815                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1816                            &self.wire4,
1817                        )
1818                        .0,
1819                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1820                            &self.prodPerm,
1821                        )
1822                        .0,
1823                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1824                            &self.split0,
1825                        )
1826                        .0,
1827                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1828                            &self.split1,
1829                        )
1830                        .0,
1831                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1832                            &self.split2,
1833                        )
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.split3,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.split4,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.zeta,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.zetaOmega,
1849                        )
1850                        .0,
1851                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.wireEval0,
1853                        )
1854                        .0,
1855                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.wireEval1,
1857                        )
1858                        .0,
1859                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.wireEval2,
1861                        )
1862                        .0,
1863                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.wireEval3,
1865                        )
1866                        .0,
1867                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.wireEval4,
1869                        )
1870                        .0,
1871                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.sigmaEval0,
1873                        )
1874                        .0,
1875                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.sigmaEval1,
1877                        )
1878                        .0,
1879                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.sigmaEval2,
1881                        )
1882                        .0,
1883                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.sigmaEval3,
1885                        )
1886                        .0,
1887                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.prodPermZetaOmegaEval,
1889                        )
1890                        .0,
1891                ]
1892                    .concat()
1893            }
1894        }
1895        #[automatically_derived]
1896        impl alloy_sol_types::EventTopic for PlonkProof {
1897            #[inline]
1898            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1899                0usize
1900                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1901                        &rust.wire0,
1902                    )
1903                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1904                        &rust.wire1,
1905                    )
1906                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1907                        &rust.wire2,
1908                    )
1909                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1910                        &rust.wire3,
1911                    )
1912                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1913                        &rust.wire4,
1914                    )
1915                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1916                        &rust.prodPerm,
1917                    )
1918                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1919                        &rust.split0,
1920                    )
1921                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1922                        &rust.split1,
1923                    )
1924                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.split2,
1926                    )
1927                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1928                        &rust.split3,
1929                    )
1930                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1931                        &rust.split4,
1932                    )
1933                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1934                        &rust.zeta,
1935                    )
1936                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1937                        &rust.zetaOmega,
1938                    )
1939                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1940                        &rust.wireEval0,
1941                    )
1942                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1943                        &rust.wireEval1,
1944                    )
1945                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1946                        &rust.wireEval2,
1947                    )
1948                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1949                        &rust.wireEval3,
1950                    )
1951                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1952                        &rust.wireEval4,
1953                    )
1954                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1955                        &rust.sigmaEval0,
1956                    )
1957                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1958                        &rust.sigmaEval1,
1959                    )
1960                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1961                        &rust.sigmaEval2,
1962                    )
1963                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1964                        &rust.sigmaEval3,
1965                    )
1966                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1967                        &rust.prodPermZetaOmegaEval,
1968                    )
1969            }
1970            #[inline]
1971            fn encode_topic_preimage(
1972                rust: &Self::RustType,
1973                out: &mut alloy_sol_types::private::Vec<u8>,
1974            ) {
1975                out.reserve(
1976                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1977                );
1978                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1979                    &rust.wire0,
1980                    out,
1981                );
1982                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1983                    &rust.wire1,
1984                    out,
1985                );
1986                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1987                    &rust.wire2,
1988                    out,
1989                );
1990                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1991                    &rust.wire3,
1992                    out,
1993                );
1994                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1995                    &rust.wire4,
1996                    out,
1997                );
1998                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1999                    &rust.prodPerm,
2000                    out,
2001                );
2002                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2003                    &rust.split0,
2004                    out,
2005                );
2006                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2007                    &rust.split1,
2008                    out,
2009                );
2010                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2011                    &rust.split2,
2012                    out,
2013                );
2014                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.split3,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.split4,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.zeta,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.zetaOmega,
2028                    out,
2029                );
2030                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.wireEval0,
2032                    out,
2033                );
2034                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.wireEval1,
2036                    out,
2037                );
2038                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.wireEval2,
2040                    out,
2041                );
2042                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.wireEval3,
2044                    out,
2045                );
2046                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.wireEval4,
2048                    out,
2049                );
2050                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.sigmaEval0,
2052                    out,
2053                );
2054                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.sigmaEval1,
2056                    out,
2057                );
2058                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.sigmaEval2,
2060                    out,
2061                );
2062                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.sigmaEval3,
2064                    out,
2065                );
2066                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.prodPermZetaOmegaEval,
2068                    out,
2069                );
2070            }
2071            #[inline]
2072            fn encode_topic(
2073                rust: &Self::RustType,
2074            ) -> alloy_sol_types::abi::token::WordToken {
2075                let mut out = alloy_sol_types::private::Vec::new();
2076                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2077                    rust,
2078                    &mut out,
2079                );
2080                alloy_sol_types::abi::token::WordToken(
2081                    alloy_sol_types::private::keccak256(out),
2082                )
2083            }
2084        }
2085    };
2086    #[derive(serde::Serialize, serde::Deserialize)]
2087    #[derive()]
2088    /**```solidity
2089struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
2090```*/
2091    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2092    #[derive(Clone)]
2093    pub struct VerifyingKey {
2094        #[allow(missing_docs)]
2095        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
2096        #[allow(missing_docs)]
2097        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
2098        #[allow(missing_docs)]
2099        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2100        #[allow(missing_docs)]
2101        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2102        #[allow(missing_docs)]
2103        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2104        #[allow(missing_docs)]
2105        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2106        #[allow(missing_docs)]
2107        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2108        #[allow(missing_docs)]
2109        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2110        #[allow(missing_docs)]
2111        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2112        #[allow(missing_docs)]
2113        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2114        #[allow(missing_docs)]
2115        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2116        #[allow(missing_docs)]
2117        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2118        #[allow(missing_docs)]
2119        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2120        #[allow(missing_docs)]
2121        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2122        #[allow(missing_docs)]
2123        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2124        #[allow(missing_docs)]
2125        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2126        #[allow(missing_docs)]
2127        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2128        #[allow(missing_docs)]
2129        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2130        #[allow(missing_docs)]
2131        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2132        #[allow(missing_docs)]
2133        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2134        #[allow(missing_docs)]
2135        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
2136        #[allow(missing_docs)]
2137        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
2138    }
2139    #[allow(
2140        non_camel_case_types,
2141        non_snake_case,
2142        clippy::pub_underscore_fields,
2143        clippy::style
2144    )]
2145    const _: () = {
2146        use alloy::sol_types as alloy_sol_types;
2147        #[doc(hidden)]
2148        #[allow(dead_code)]
2149        type UnderlyingSolTuple<'a> = (
2150            alloy::sol_types::sol_data::Uint<256>,
2151            alloy::sol_types::sol_data::Uint<256>,
2152            BN254::G1Point,
2153            BN254::G1Point,
2154            BN254::G1Point,
2155            BN254::G1Point,
2156            BN254::G1Point,
2157            BN254::G1Point,
2158            BN254::G1Point,
2159            BN254::G1Point,
2160            BN254::G1Point,
2161            BN254::G1Point,
2162            BN254::G1Point,
2163            BN254::G1Point,
2164            BN254::G1Point,
2165            BN254::G1Point,
2166            BN254::G1Point,
2167            BN254::G1Point,
2168            BN254::G1Point,
2169            BN254::G1Point,
2170            alloy::sol_types::sol_data::FixedBytes<32>,
2171            alloy::sol_types::sol_data::FixedBytes<32>,
2172        );
2173        #[doc(hidden)]
2174        type UnderlyingRustTuple<'a> = (
2175            alloy::sol_types::private::primitives::aliases::U256,
2176            alloy::sol_types::private::primitives::aliases::U256,
2177            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2178            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2179            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2180            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2181            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2182            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2183            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2184            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2185            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2186            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2187            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2188            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2189            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2190            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2191            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2192            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2193            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2194            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
2195            alloy::sol_types::private::FixedBytes<32>,
2196            alloy::sol_types::private::FixedBytes<32>,
2197        );
2198        #[cfg(test)]
2199        #[allow(dead_code, unreachable_patterns)]
2200        fn _type_assertion(
2201            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2202        ) {
2203            match _t {
2204                alloy_sol_types::private::AssertTypeEq::<
2205                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2206                >(_) => {}
2207            }
2208        }
2209        #[automatically_derived]
2210        #[doc(hidden)]
2211        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
2212            fn from(value: VerifyingKey) -> Self {
2213                (
2214                    value.domainSize,
2215                    value.numInputs,
2216                    value.sigma0,
2217                    value.sigma1,
2218                    value.sigma2,
2219                    value.sigma3,
2220                    value.sigma4,
2221                    value.q1,
2222                    value.q2,
2223                    value.q3,
2224                    value.q4,
2225                    value.qM12,
2226                    value.qM34,
2227                    value.qO,
2228                    value.qC,
2229                    value.qH1,
2230                    value.qH2,
2231                    value.qH3,
2232                    value.qH4,
2233                    value.qEcc,
2234                    value.g2LSB,
2235                    value.g2MSB,
2236                )
2237            }
2238        }
2239        #[automatically_derived]
2240        #[doc(hidden)]
2241        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
2242            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2243                Self {
2244                    domainSize: tuple.0,
2245                    numInputs: tuple.1,
2246                    sigma0: tuple.2,
2247                    sigma1: tuple.3,
2248                    sigma2: tuple.4,
2249                    sigma3: tuple.5,
2250                    sigma4: tuple.6,
2251                    q1: tuple.7,
2252                    q2: tuple.8,
2253                    q3: tuple.9,
2254                    q4: tuple.10,
2255                    qM12: tuple.11,
2256                    qM34: tuple.12,
2257                    qO: tuple.13,
2258                    qC: tuple.14,
2259                    qH1: tuple.15,
2260                    qH2: tuple.16,
2261                    qH3: tuple.17,
2262                    qH4: tuple.18,
2263                    qEcc: tuple.19,
2264                    g2LSB: tuple.20,
2265                    g2MSB: tuple.21,
2266                }
2267            }
2268        }
2269        #[automatically_derived]
2270        impl alloy_sol_types::SolValue for VerifyingKey {
2271            type SolType = Self;
2272        }
2273        #[automatically_derived]
2274        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
2275            #[inline]
2276            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2277                (
2278                    <alloy::sol_types::sol_data::Uint<
2279                        256,
2280                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
2281                    <alloy::sol_types::sol_data::Uint<
2282                        256,
2283                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
2284                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
2285                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
2286                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
2287                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
2288                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
2289                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
2290                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
2291                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
2292                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
2293                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
2294                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
2295                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
2296                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
2297                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
2298                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
2299                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
2300                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
2301                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
2302                    <alloy::sol_types::sol_data::FixedBytes<
2303                        32,
2304                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
2305                    <alloy::sol_types::sol_data::FixedBytes<
2306                        32,
2307                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
2308                )
2309            }
2310            #[inline]
2311            fn stv_abi_encoded_size(&self) -> usize {
2312                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2313                    return size;
2314                }
2315                let tuple = <UnderlyingRustTuple<
2316                    '_,
2317                > as ::core::convert::From<Self>>::from(self.clone());
2318                <UnderlyingSolTuple<
2319                    '_,
2320                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2321            }
2322            #[inline]
2323            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2324                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2325            }
2326            #[inline]
2327            fn stv_abi_encode_packed_to(
2328                &self,
2329                out: &mut alloy_sol_types::private::Vec<u8>,
2330            ) {
2331                let tuple = <UnderlyingRustTuple<
2332                    '_,
2333                > as ::core::convert::From<Self>>::from(self.clone());
2334                <UnderlyingSolTuple<
2335                    '_,
2336                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2337            }
2338            #[inline]
2339            fn stv_abi_packed_encoded_size(&self) -> usize {
2340                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2341                    return size;
2342                }
2343                let tuple = <UnderlyingRustTuple<
2344                    '_,
2345                > as ::core::convert::From<Self>>::from(self.clone());
2346                <UnderlyingSolTuple<
2347                    '_,
2348                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2349            }
2350        }
2351        #[automatically_derived]
2352        impl alloy_sol_types::SolType for VerifyingKey {
2353            type RustType = Self;
2354            type Token<'a> = <UnderlyingSolTuple<
2355                'a,
2356            > as alloy_sol_types::SolType>::Token<'a>;
2357            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2358            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2359                '_,
2360            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2361            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2362                '_,
2363            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2364            #[inline]
2365            fn valid_token(token: &Self::Token<'_>) -> bool {
2366                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2367            }
2368            #[inline]
2369            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2370                let tuple = <UnderlyingSolTuple<
2371                    '_,
2372                > as alloy_sol_types::SolType>::detokenize(token);
2373                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2374            }
2375        }
2376        #[automatically_derived]
2377        impl alloy_sol_types::SolStruct for VerifyingKey {
2378            const NAME: &'static str = "VerifyingKey";
2379            #[inline]
2380            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2381                alloy_sol_types::private::Cow::Borrowed(
2382                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
2383                )
2384            }
2385            #[inline]
2386            fn eip712_components() -> alloy_sol_types::private::Vec<
2387                alloy_sol_types::private::Cow<'static, str>,
2388            > {
2389                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
2390                components
2391                    .push(
2392                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2393                    );
2394                components
2395                    .extend(
2396                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2397                    );
2398                components
2399                    .push(
2400                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2401                    );
2402                components
2403                    .extend(
2404                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2405                    );
2406                components
2407                    .push(
2408                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2409                    );
2410                components
2411                    .extend(
2412                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2413                    );
2414                components
2415                    .push(
2416                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2417                    );
2418                components
2419                    .extend(
2420                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2421                    );
2422                components
2423                    .push(
2424                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2425                    );
2426                components
2427                    .extend(
2428                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2429                    );
2430                components
2431                    .push(
2432                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2433                    );
2434                components
2435                    .extend(
2436                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2437                    );
2438                components
2439                    .push(
2440                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2441                    );
2442                components
2443                    .extend(
2444                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2445                    );
2446                components
2447                    .push(
2448                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2449                    );
2450                components
2451                    .extend(
2452                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2453                    );
2454                components
2455                    .push(
2456                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2457                    );
2458                components
2459                    .extend(
2460                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2461                    );
2462                components
2463                    .push(
2464                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2465                    );
2466                components
2467                    .extend(
2468                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2469                    );
2470                components
2471                    .push(
2472                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2473                    );
2474                components
2475                    .extend(
2476                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2477                    );
2478                components
2479                    .push(
2480                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2481                    );
2482                components
2483                    .extend(
2484                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2485                    );
2486                components
2487                    .push(
2488                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2489                    );
2490                components
2491                    .extend(
2492                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2493                    );
2494                components
2495                    .push(
2496                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2497                    );
2498                components
2499                    .extend(
2500                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2501                    );
2502                components
2503                    .push(
2504                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2505                    );
2506                components
2507                    .extend(
2508                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2509                    );
2510                components
2511                    .push(
2512                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2513                    );
2514                components
2515                    .extend(
2516                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2517                    );
2518                components
2519                    .push(
2520                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2521                    );
2522                components
2523                    .extend(
2524                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2525                    );
2526                components
2527                    .push(
2528                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
2529                    );
2530                components
2531                    .extend(
2532                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
2533                    );
2534                components
2535            }
2536            #[inline]
2537            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2538                [
2539                    <alloy::sol_types::sol_data::Uint<
2540                        256,
2541                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
2542                        .0,
2543                    <alloy::sol_types::sol_data::Uint<
2544                        256,
2545                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
2546                        .0,
2547                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2548                            &self.sigma0,
2549                        )
2550                        .0,
2551                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2552                            &self.sigma1,
2553                        )
2554                        .0,
2555                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2556                            &self.sigma2,
2557                        )
2558                        .0,
2559                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2560                            &self.sigma3,
2561                        )
2562                        .0,
2563                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2564                            &self.sigma4,
2565                        )
2566                        .0,
2567                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2568                            &self.q1,
2569                        )
2570                        .0,
2571                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2572                            &self.q2,
2573                        )
2574                        .0,
2575                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2576                            &self.q3,
2577                        )
2578                        .0,
2579                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2580                            &self.q4,
2581                        )
2582                        .0,
2583                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2584                            &self.qM12,
2585                        )
2586                        .0,
2587                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2588                            &self.qM34,
2589                        )
2590                        .0,
2591                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2592                            &self.qO,
2593                        )
2594                        .0,
2595                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2596                            &self.qC,
2597                        )
2598                        .0,
2599                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2600                            &self.qH1,
2601                        )
2602                        .0,
2603                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2604                            &self.qH2,
2605                        )
2606                        .0,
2607                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2608                            &self.qH3,
2609                        )
2610                        .0,
2611                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2612                            &self.qH4,
2613                        )
2614                        .0,
2615                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
2616                            &self.qEcc,
2617                        )
2618                        .0,
2619                    <alloy::sol_types::sol_data::FixedBytes<
2620                        32,
2621                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
2622                        .0,
2623                    <alloy::sol_types::sol_data::FixedBytes<
2624                        32,
2625                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
2626                        .0,
2627                ]
2628                    .concat()
2629            }
2630        }
2631        #[automatically_derived]
2632        impl alloy_sol_types::EventTopic for VerifyingKey {
2633            #[inline]
2634            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2635                0usize
2636                    + <alloy::sol_types::sol_data::Uint<
2637                        256,
2638                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2639                        &rust.domainSize,
2640                    )
2641                    + <alloy::sol_types::sol_data::Uint<
2642                        256,
2643                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2644                        &rust.numInputs,
2645                    )
2646                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2647                        &rust.sigma0,
2648                    )
2649                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2650                        &rust.sigma1,
2651                    )
2652                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2653                        &rust.sigma2,
2654                    )
2655                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2656                        &rust.sigma3,
2657                    )
2658                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2659                        &rust.sigma4,
2660                    )
2661                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2662                        &rust.q1,
2663                    )
2664                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2665                        &rust.q2,
2666                    )
2667                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2668                        &rust.q3,
2669                    )
2670                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2671                        &rust.q4,
2672                    )
2673                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2674                        &rust.qM12,
2675                    )
2676                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2677                        &rust.qM34,
2678                    )
2679                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2680                        &rust.qO,
2681                    )
2682                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2683                        &rust.qC,
2684                    )
2685                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2686                        &rust.qH1,
2687                    )
2688                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2689                        &rust.qH2,
2690                    )
2691                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2692                        &rust.qH3,
2693                    )
2694                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2695                        &rust.qH4,
2696                    )
2697                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
2698                        &rust.qEcc,
2699                    )
2700                    + <alloy::sol_types::sol_data::FixedBytes<
2701                        32,
2702                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
2703                    + <alloy::sol_types::sol_data::FixedBytes<
2704                        32,
2705                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
2706            }
2707            #[inline]
2708            fn encode_topic_preimage(
2709                rust: &Self::RustType,
2710                out: &mut alloy_sol_types::private::Vec<u8>,
2711            ) {
2712                out.reserve(
2713                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2714                );
2715                <alloy::sol_types::sol_data::Uint<
2716                    256,
2717                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2718                    &rust.domainSize,
2719                    out,
2720                );
2721                <alloy::sol_types::sol_data::Uint<
2722                    256,
2723                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2724                    &rust.numInputs,
2725                    out,
2726                );
2727                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2728                    &rust.sigma0,
2729                    out,
2730                );
2731                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2732                    &rust.sigma1,
2733                    out,
2734                );
2735                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2736                    &rust.sigma2,
2737                    out,
2738                );
2739                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2740                    &rust.sigma3,
2741                    out,
2742                );
2743                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2744                    &rust.sigma4,
2745                    out,
2746                );
2747                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2748                    &rust.q1,
2749                    out,
2750                );
2751                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2752                    &rust.q2,
2753                    out,
2754                );
2755                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2756                    &rust.q3,
2757                    out,
2758                );
2759                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2760                    &rust.q4,
2761                    out,
2762                );
2763                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2764                    &rust.qM12,
2765                    out,
2766                );
2767                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2768                    &rust.qM34,
2769                    out,
2770                );
2771                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2772                    &rust.qO,
2773                    out,
2774                );
2775                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2776                    &rust.qC,
2777                    out,
2778                );
2779                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2780                    &rust.qH1,
2781                    out,
2782                );
2783                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2784                    &rust.qH2,
2785                    out,
2786                );
2787                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2788                    &rust.qH3,
2789                    out,
2790                );
2791                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2792                    &rust.qH4,
2793                    out,
2794                );
2795                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2796                    &rust.qEcc,
2797                    out,
2798                );
2799                <alloy::sol_types::sol_data::FixedBytes<
2800                    32,
2801                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2802                    &rust.g2LSB,
2803                    out,
2804                );
2805                <alloy::sol_types::sol_data::FixedBytes<
2806                    32,
2807                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2808                    &rust.g2MSB,
2809                    out,
2810                );
2811            }
2812            #[inline]
2813            fn encode_topic(
2814                rust: &Self::RustType,
2815            ) -> alloy_sol_types::abi::token::WordToken {
2816                let mut out = alloy_sol_types::private::Vec::new();
2817                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2818                    rust,
2819                    &mut out,
2820                );
2821                alloy_sol_types::abi::token::WordToken(
2822                    alloy_sol_types::private::keccak256(out),
2823                )
2824            }
2825        }
2826    };
2827    #[derive(serde::Serialize, serde::Deserialize)]
2828    #[derive()]
2829    /**Function with signature `verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0xe2605010`.
2830```solidity
2831function verify(VerifyingKey memory verifyingKey, uint256[] memory publicInput, PlonkProof memory proof) external view returns (bool);
2832```*/
2833    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2834    #[derive(Clone)]
2835    pub struct verifyCall {
2836        #[allow(missing_docs)]
2837        pub verifyingKey: <VerifyingKey as alloy::sol_types::SolType>::RustType,
2838        #[allow(missing_docs)]
2839        pub publicInput: alloy::sol_types::private::Vec<
2840            alloy::sol_types::private::primitives::aliases::U256,
2841        >,
2842        #[allow(missing_docs)]
2843        pub proof: <PlonkProof as alloy::sol_types::SolType>::RustType,
2844    }
2845    #[derive(serde::Serialize, serde::Deserialize)]
2846    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2847    ///Container type for the return parameters of the [`verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](verifyCall) function.
2848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2849    #[derive(Clone)]
2850    pub struct verifyReturn {
2851        #[allow(missing_docs)]
2852        pub _0: bool,
2853    }
2854    #[allow(
2855        non_camel_case_types,
2856        non_snake_case,
2857        clippy::pub_underscore_fields,
2858        clippy::style
2859    )]
2860    const _: () = {
2861        use alloy::sol_types as alloy_sol_types;
2862        {
2863            #[doc(hidden)]
2864            #[allow(dead_code)]
2865            type UnderlyingSolTuple<'a> = (
2866                VerifyingKey,
2867                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
2868                PlonkProof,
2869            );
2870            #[doc(hidden)]
2871            type UnderlyingRustTuple<'a> = (
2872                <VerifyingKey as alloy::sol_types::SolType>::RustType,
2873                alloy::sol_types::private::Vec<
2874                    alloy::sol_types::private::primitives::aliases::U256,
2875                >,
2876                <PlonkProof as alloy::sol_types::SolType>::RustType,
2877            );
2878            #[cfg(test)]
2879            #[allow(dead_code, unreachable_patterns)]
2880            fn _type_assertion(
2881                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2882            ) {
2883                match _t {
2884                    alloy_sol_types::private::AssertTypeEq::<
2885                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2886                    >(_) => {}
2887                }
2888            }
2889            #[automatically_derived]
2890            #[doc(hidden)]
2891            impl ::core::convert::From<verifyCall> for UnderlyingRustTuple<'_> {
2892                fn from(value: verifyCall) -> Self {
2893                    (value.verifyingKey, value.publicInput, value.proof)
2894                }
2895            }
2896            #[automatically_derived]
2897            #[doc(hidden)]
2898            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyCall {
2899                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2900                    Self {
2901                        verifyingKey: tuple.0,
2902                        publicInput: tuple.1,
2903                        proof: tuple.2,
2904                    }
2905                }
2906            }
2907        }
2908        {
2909            #[doc(hidden)]
2910            #[allow(dead_code)]
2911            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
2912            #[doc(hidden)]
2913            type UnderlyingRustTuple<'a> = (bool,);
2914            #[cfg(test)]
2915            #[allow(dead_code, unreachable_patterns)]
2916            fn _type_assertion(
2917                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2918            ) {
2919                match _t {
2920                    alloy_sol_types::private::AssertTypeEq::<
2921                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2922                    >(_) => {}
2923                }
2924            }
2925            #[automatically_derived]
2926            #[doc(hidden)]
2927            impl ::core::convert::From<verifyReturn> for UnderlyingRustTuple<'_> {
2928                fn from(value: verifyReturn) -> Self {
2929                    (value._0,)
2930                }
2931            }
2932            #[automatically_derived]
2933            #[doc(hidden)]
2934            impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyReturn {
2935                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2936                    Self { _0: tuple.0 }
2937                }
2938            }
2939        }
2940        #[automatically_derived]
2941        impl alloy_sol_types::SolCall for verifyCall {
2942            type Parameters<'a> = (
2943                VerifyingKey,
2944                alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<256>>,
2945                PlonkProof,
2946            );
2947            type Token<'a> = <Self::Parameters<
2948                'a,
2949            > as alloy_sol_types::SolType>::Token<'a>;
2950            type Return = bool;
2951            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
2952            type ReturnToken<'a> = <Self::ReturnTuple<
2953                'a,
2954            > as alloy_sol_types::SolType>::Token<'a>;
2955            const SIGNATURE: &'static str = "verify((uint256,uint256,(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),bytes32,bytes32),uint256[],((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
2956            const SELECTOR: [u8; 4] = [226u8, 96u8, 80u8, 16u8];
2957            #[inline]
2958            fn new<'a>(
2959                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
2960            ) -> Self {
2961                tuple.into()
2962            }
2963            #[inline]
2964            fn tokenize(&self) -> Self::Token<'_> {
2965                (
2966                    <VerifyingKey as alloy_sol_types::SolType>::tokenize(
2967                        &self.verifyingKey,
2968                    ),
2969                    <alloy::sol_types::sol_data::Array<
2970                        alloy::sol_types::sol_data::Uint<256>,
2971                    > as alloy_sol_types::SolType>::tokenize(&self.publicInput),
2972                    <PlonkProof as alloy_sol_types::SolType>::tokenize(&self.proof),
2973                )
2974            }
2975            #[inline]
2976            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
2977                (
2978                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
2979                        ret,
2980                    ),
2981                )
2982            }
2983            #[inline]
2984            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
2985                <Self::ReturnTuple<
2986                    '_,
2987                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
2988                    .map(|r| {
2989                        let r: verifyReturn = r.into();
2990                        r._0
2991                    })
2992            }
2993            #[inline]
2994            fn abi_decode_returns_validate(
2995                data: &[u8],
2996            ) -> alloy_sol_types::Result<Self::Return> {
2997                <Self::ReturnTuple<
2998                    '_,
2999                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
3000                    .map(|r| {
3001                        let r: verifyReturn = r.into();
3002                        r._0
3003                    })
3004            }
3005        }
3006    };
3007    ///Container for all the [`IPlonkVerifier`](self) function calls.
3008    #[derive(Clone)]
3009    #[derive(serde::Serialize, serde::Deserialize)]
3010    #[derive()]
3011    pub enum IPlonkVerifierCalls {
3012        #[allow(missing_docs)]
3013        verify(verifyCall),
3014    }
3015    impl IPlonkVerifierCalls {
3016        /// All the selectors of this enum.
3017        ///
3018        /// Note that the selectors might not be in the same order as the variants.
3019        /// No guarantees are made about the order of the selectors.
3020        ///
3021        /// Prefer using `SolInterface` methods instead.
3022        pub const SELECTORS: &'static [[u8; 4usize]] = &[[226u8, 96u8, 80u8, 16u8]];
3023        /// The names of the variants in the same order as `SELECTORS`.
3024        pub const VARIANT_NAMES: &'static [&'static str] = &[::core::stringify!(verify)];
3025        /// The signatures in the same order as `SELECTORS`.
3026        pub const SIGNATURES: &'static [&'static str] = &[
3027            <verifyCall as alloy_sol_types::SolCall>::SIGNATURE,
3028        ];
3029        /// Returns the signature for the given selector, if known.
3030        #[inline]
3031        pub fn signature_by_selector(
3032            selector: [u8; 4usize],
3033        ) -> ::core::option::Option<&'static str> {
3034            match Self::SELECTORS.binary_search(&selector) {
3035                ::core::result::Result::Ok(idx) => {
3036                    ::core::option::Option::Some(Self::SIGNATURES[idx])
3037                }
3038                ::core::result::Result::Err(_) => ::core::option::Option::None,
3039            }
3040        }
3041        /// Returns the enum variant name for the given selector, if known.
3042        #[inline]
3043        pub fn name_by_selector(
3044            selector: [u8; 4usize],
3045        ) -> ::core::option::Option<&'static str> {
3046            let sig = Self::signature_by_selector(selector)?;
3047            sig.split_once('(').map(|(name, _)| name)
3048        }
3049    }
3050    #[automatically_derived]
3051    impl alloy_sol_types::SolInterface for IPlonkVerifierCalls {
3052        const NAME: &'static str = "IPlonkVerifierCalls";
3053        const MIN_DATA_LENGTH: usize = 512usize;
3054        const COUNT: usize = 1usize;
3055        #[inline]
3056        fn selector(&self) -> [u8; 4] {
3057            match self {
3058                Self::verify(_) => <verifyCall as alloy_sol_types::SolCall>::SELECTOR,
3059            }
3060        }
3061        #[inline]
3062        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
3063            Self::SELECTORS.get(i).copied()
3064        }
3065        #[inline]
3066        fn valid_selector(selector: [u8; 4]) -> bool {
3067            Self::SELECTORS.binary_search(&selector).is_ok()
3068        }
3069        #[inline]
3070        #[allow(non_snake_case)]
3071        fn abi_decode_raw(
3072            selector: [u8; 4],
3073            data: &[u8],
3074        ) -> alloy_sol_types::Result<Self> {
3075            static DECODE_SHIMS: &[fn(
3076                &[u8],
3077            ) -> alloy_sol_types::Result<IPlonkVerifierCalls>] = &[
3078                {
3079                    fn verify(
3080                        data: &[u8],
3081                    ) -> alloy_sol_types::Result<IPlonkVerifierCalls> {
3082                        <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
3083                            .map(IPlonkVerifierCalls::verify)
3084                    }
3085                    verify
3086                },
3087            ];
3088            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3089                return Err(
3090                    alloy_sol_types::Error::unknown_selector(
3091                        <Self as alloy_sol_types::SolInterface>::NAME,
3092                        selector,
3093                    ),
3094                );
3095            };
3096            DECODE_SHIMS[idx](data)
3097        }
3098        #[inline]
3099        #[allow(non_snake_case)]
3100        fn abi_decode_raw_validate(
3101            selector: [u8; 4],
3102            data: &[u8],
3103        ) -> alloy_sol_types::Result<Self> {
3104            static DECODE_VALIDATE_SHIMS: &[fn(
3105                &[u8],
3106            ) -> alloy_sol_types::Result<IPlonkVerifierCalls>] = &[
3107                {
3108                    fn verify(
3109                        data: &[u8],
3110                    ) -> alloy_sol_types::Result<IPlonkVerifierCalls> {
3111                        <verifyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
3112                                data,
3113                            )
3114                            .map(IPlonkVerifierCalls::verify)
3115                    }
3116                    verify
3117                },
3118            ];
3119            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
3120                return Err(
3121                    alloy_sol_types::Error::unknown_selector(
3122                        <Self as alloy_sol_types::SolInterface>::NAME,
3123                        selector,
3124                    ),
3125                );
3126            };
3127            DECODE_VALIDATE_SHIMS[idx](data)
3128        }
3129        #[inline]
3130        fn abi_encoded_size(&self) -> usize {
3131            match self {
3132                Self::verify(inner) => {
3133                    <verifyCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
3134                }
3135            }
3136        }
3137        #[inline]
3138        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
3139            match self {
3140                Self::verify(inner) => {
3141                    <verifyCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
3142                }
3143            }
3144        }
3145    }
3146    use alloy::contract as alloy_contract;
3147    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
3148
3149See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
3150    #[inline]
3151    pub const fn new<
3152        P: alloy_contract::private::Provider<N>,
3153        N: alloy_contract::private::Network,
3154    >(
3155        address: alloy_sol_types::private::Address,
3156        __provider: P,
3157    ) -> IPlonkVerifierInstance<P, N> {
3158        IPlonkVerifierInstance::<P, N>::new(address, __provider)
3159    }
3160    /**Deploys this contract using the given `provider` and constructor arguments, if any.
3161
3162Returns a new instance of the contract, if the deployment was successful.
3163
3164For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
3165    #[inline]
3166    pub fn deploy<
3167        P: alloy_contract::private::Provider<N>,
3168        N: alloy_contract::private::Network,
3169    >(
3170        __provider: P,
3171    ) -> impl ::core::future::Future<
3172        Output = alloy_contract::Result<IPlonkVerifierInstance<P, N>>,
3173    > {
3174        IPlonkVerifierInstance::<P, N>::deploy(__provider)
3175    }
3176    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
3177and constructor arguments, if any.
3178
3179This is a simple wrapper around creating a `RawCallBuilder` with the data set to
3180the bytecode concatenated with the constructor's ABI-encoded arguments.*/
3181    #[inline]
3182    pub fn deploy_builder<
3183        P: alloy_contract::private::Provider<N>,
3184        N: alloy_contract::private::Network,
3185    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
3186        IPlonkVerifierInstance::<P, N>::deploy_builder(__provider)
3187    }
3188    /**A [`IPlonkVerifier`](self) instance.
3189
3190Contains type-safe methods for interacting with an on-chain instance of the
3191[`IPlonkVerifier`](self) contract located at a given `address`, using a given
3192provider `P`.
3193
3194If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3195documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3196be used to deploy a new instance of the contract.
3197
3198See the [module-level documentation](self) for all the available methods.*/
3199    #[derive(Clone)]
3200    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
3201        address: alloy_sol_types::private::Address,
3202        provider: P,
3203        _network: ::core::marker::PhantomData<N>,
3204    }
3205    #[automatically_derived]
3206    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
3207        #[inline]
3208        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3209            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
3210        }
3211    }
3212    /// Instantiation and getters/setters.
3213    impl<
3214        P: alloy_contract::private::Provider<N>,
3215        N: alloy_contract::private::Network,
3216    > IPlonkVerifierInstance<P, N> {
3217        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
3218
3219See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
3220        #[inline]
3221        pub const fn new(
3222            address: alloy_sol_types::private::Address,
3223            __provider: P,
3224        ) -> Self {
3225            Self {
3226                address,
3227                provider: __provider,
3228                _network: ::core::marker::PhantomData,
3229            }
3230        }
3231        /**Deploys this contract using the given `provider` and constructor arguments, if any.
3232
3233Returns a new instance of the contract, if the deployment was successful.
3234
3235For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
3236        #[inline]
3237        pub async fn deploy(
3238            __provider: P,
3239        ) -> alloy_contract::Result<IPlonkVerifierInstance<P, N>> {
3240            let call_builder = Self::deploy_builder(__provider);
3241            let contract_address = call_builder.deploy().await?;
3242            Ok(Self::new(contract_address, call_builder.provider))
3243        }
3244        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
3245and constructor arguments, if any.
3246
3247This is a simple wrapper around creating a `RawCallBuilder` with the data set to
3248the bytecode concatenated with the constructor's ABI-encoded arguments.*/
3249        #[inline]
3250        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
3251            alloy_contract::RawCallBuilder::new_raw_deploy(
3252                __provider,
3253                ::core::clone::Clone::clone(&BYTECODE),
3254            )
3255        }
3256        /// Returns a reference to the address.
3257        #[inline]
3258        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3259            &self.address
3260        }
3261        /// Sets the address.
3262        #[inline]
3263        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3264            self.address = address;
3265        }
3266        /// Sets the address and returns `self`.
3267        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3268            self.set_address(address);
3269            self
3270        }
3271        /// Returns a reference to the provider.
3272        #[inline]
3273        pub const fn provider(&self) -> &P {
3274            &self.provider
3275        }
3276    }
3277    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
3278        /// Clones the provider and returns a new instance with the cloned provider.
3279        #[inline]
3280        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
3281            IPlonkVerifierInstance {
3282                address: self.address,
3283                provider: ::core::clone::Clone::clone(&self.provider),
3284                _network: ::core::marker::PhantomData,
3285            }
3286        }
3287    }
3288    /// Function calls.
3289    impl<
3290        P: alloy_contract::private::Provider<N>,
3291        N: alloy_contract::private::Network,
3292    > IPlonkVerifierInstance<P, N> {
3293        /// Creates a new call builder using this contract instance's provider and address.
3294        ///
3295        /// Note that the call can be any function call, not just those defined in this
3296        /// contract. Prefer using the other methods for building type-safe contract calls.
3297        pub fn call_builder<C: alloy_sol_types::SolCall>(
3298            &self,
3299            call: &C,
3300        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3301            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3302        }
3303        ///Creates a new call builder for the [`verify`] function.
3304        pub fn verify(
3305            &self,
3306            verifyingKey: <VerifyingKey as alloy::sol_types::SolType>::RustType,
3307            publicInput: alloy::sol_types::private::Vec<
3308                alloy::sol_types::private::primitives::aliases::U256,
3309            >,
3310            proof: <PlonkProof as alloy::sol_types::SolType>::RustType,
3311        ) -> alloy_contract::SolCallBuilder<&P, verifyCall, N> {
3312            self.call_builder(
3313                &verifyCall {
3314                    verifyingKey,
3315                    publicInput,
3316                    proof,
3317                },
3318            )
3319        }
3320    }
3321    /// Event filters.
3322    impl<
3323        P: alloy_contract::private::Provider<N>,
3324        N: alloy_contract::private::Network,
3325    > IPlonkVerifierInstance<P, N> {
3326        /// Creates a new event filter using this contract instance's provider and address.
3327        ///
3328        /// Note that the type can be any event, not just those defined in this contract.
3329        /// Prefer using the other methods for building type-safe event filters.
3330        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3331            &self,
3332        ) -> alloy_contract::Event<&P, E, N> {
3333            alloy_contract::Event::new_sol(&self.provider, &self.address)
3334        }
3335    }
3336}