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