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