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