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