///Module containing a contract's types and functions.
/**
```solidity
library BN254 {
struct G1Point { uint256 X; uint256 Y; }
struct G2Point { uint256[2] X; uint256[2] Y; }
}
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod BN254 {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct G1Point { uint256 X; uint256 Y; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct G1Point {
#[allow(missing_docs)]
pub X: alloy::sol_types::private::primitives::aliases::U256,
#[allow(missing_docs)]
pub Y: alloy::sol_types::private::primitives::aliases::U256,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Uint<256>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::primitives::aliases::U256,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
fn from(value: G1Point) -> Self {
(value.X, value.Y)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
X: tuple.0,
Y: tuple.1,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for G1Point {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.X,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.Y,
),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for G1Point {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for G1Point {
const NAME: &'static str = "G1Point";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 X,uint256 Y)")
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::eip712_data_word(&self.X)
.0,
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for G1Point {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.X)
+ <alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.Y)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.X, out);
<alloy::sol_types::sol_data::Uint<
256,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(&rust.Y, out);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct G2Point { uint256[2] X; uint256[2] Y; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct G2Point {
#[allow(missing_docs)]
pub X: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
#[allow(missing_docs)]
pub Y: [alloy::sol_types::private::primitives::aliases::U256; 2usize],
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>,
alloy::sol_types::sol_data::FixedArray<alloy::sol_types::sol_data::Uint<256>, 2usize>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
[alloy::sol_types::private::primitives::aliases::U256; 2usize],
[alloy::sol_types::private::primitives::aliases::U256; 2usize],
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<G2Point> for UnderlyingRustTuple<'_> {
fn from(value: G2Point) -> Self {
(value.X, value.Y)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2Point {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
X: tuple.0,
Y: tuple.1,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for G2Point {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for G2Point {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::tokenize(&self.X),
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::tokenize(&self.Y),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for G2Point {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for G2Point {
const NAME: &'static str = "G2Point";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed("G2Point(uint256[2] X,uint256[2] Y)")
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::eip712_data_word(&self.X)
.0,
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::SolType>::eip712_data_word(&self.Y)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for G2Point {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.X
)
+ <alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.Y
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.X, out
);
<alloy::sol_types::sol_data::FixedArray<
alloy::sol_types::sol_data::Uint<256>,
2usize,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.Y, out
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
See the [wrapper's documentation](`BN254Instance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> BN254Instance<P, N> {
BN254Instance::<P, N>::new(address, provider)
}
/**A [`BN254`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`BN254`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("BN254Instance").field(&self.address).finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BN254Instance<P, N>
{
/**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
See the [wrapper's documentation](`BN254Instance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
BN254Instance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BN254Instance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BN254Instance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
}
}
///Module containing a contract's types and functions.
/**
```solidity
library IBLSApkRegistryTypes {
struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; }
struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; }
}
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod IBLSApkRegistryTypes {
use super::*;
use alloy::sol_types as alloy_sol_types;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct ApkUpdate { bytes24 apkHash; uint32 updateBlockNumber; uint32 nextUpdateBlockNumber; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ApkUpdate {
#[allow(missing_docs)]
pub apkHash: alloy::sol_types::private::FixedBytes<24>,
#[allow(missing_docs)]
pub updateBlockNumber: u32,
#[allow(missing_docs)]
pub nextUpdateBlockNumber: u32,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::FixedBytes<24>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::Uint<32>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>, u32, u32);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ApkUpdate> for UnderlyingRustTuple<'_> {
fn from(value: ApkUpdate) -> Self {
(
value.apkHash,
value.updateBlockNumber,
value.nextUpdateBlockNumber,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ApkUpdate {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
apkHash: tuple.0,
updateBlockNumber: tuple.1,
nextUpdateBlockNumber: tuple.2,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for ApkUpdate {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for ApkUpdate {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
24,
> as alloy_sol_types::SolType>::tokenize(&self.apkHash),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.updateBlockNumber),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.nextUpdateBlockNumber),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for ApkUpdate {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for ApkUpdate {
const NAME: &'static str = "ApkUpdate";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"ApkUpdate(bytes24 apkHash,uint32 updateBlockNumber,uint32 nextUpdateBlockNumber)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
alloy_sol_types::private::Vec::new()
}
#[inline]
fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
<Self as alloy_sol_types::SolStruct>::eip712_root_type()
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<alloy::sol_types::sol_data::FixedBytes<
24,
> as alloy_sol_types::SolType>::eip712_data_word(&self.apkHash)
.0,
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.updateBlockNumber,
)
.0,
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::eip712_data_word(
&self.nextUpdateBlockNumber,
)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for ApkUpdate {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <alloy::sol_types::sol_data::FixedBytes<
24,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.apkHash,
)
+ <alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.updateBlockNumber,
)
+ <alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.nextUpdateBlockNumber,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<alloy::sol_types::sol_data::FixedBytes<
24,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.apkHash,
out,
);
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.updateBlockNumber,
out,
);
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.nextUpdateBlockNumber,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**```solidity
struct PubkeyRegistrationParams { BN254.G1Point pubkeyRegistrationSignature; BN254.G1Point pubkeyG1; BN254.G2Point pubkeyG2; }
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct PubkeyRegistrationParams {
#[allow(missing_docs)]
pub pubkeyRegistrationSignature: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub pubkeyG1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub pubkeyG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (BN254::G1Point, BN254::G1Point, BN254::G2Point);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
<BN254::G2Point as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<PubkeyRegistrationParams> for UnderlyingRustTuple<'_> {
fn from(value: PubkeyRegistrationParams) -> Self {
(
value.pubkeyRegistrationSignature,
value.pubkeyG1,
value.pubkeyG2,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for PubkeyRegistrationParams {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
pubkeyRegistrationSignature: tuple.0,
pubkeyG1: tuple.1,
pubkeyG2: tuple.2,
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolValue for PubkeyRegistrationParams {
type SolType = Self;
}
#[automatically_derived]
impl alloy_sol_types::private::SolTypeValue<Self> for PubkeyRegistrationParams {
#[inline]
fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
(
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(
&self.pubkeyRegistrationSignature,
),
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.pubkeyG1),
<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.pubkeyG2),
)
}
#[inline]
fn stv_abi_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
}
#[inline]
fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
<Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
}
#[inline]
fn stv_abi_encode_packed_to(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_encode_packed_to(
&tuple, out,
)
}
#[inline]
fn stv_abi_packed_encoded_size(&self) -> usize {
if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
return size;
}
let tuple =
<UnderlyingRustTuple<'_> as ::core::convert::From<Self>>::from(self.clone());
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::abi_packed_encoded_size(
&tuple,
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolType for PubkeyRegistrationParams {
type RustType = Self;
type Token<'a> = <UnderlyingSolTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
const ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::ENCODED_SIZE;
const PACKED_ENCODED_SIZE: Option<usize> =
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
#[inline]
fn valid_token(token: &Self::Token<'_>) -> bool {
<UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
}
#[inline]
fn detokenize(token: Self::Token<'_>) -> Self::RustType {
let tuple = <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::detokenize(token);
<Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
}
}
#[automatically_derived]
impl alloy_sol_types::SolStruct for PubkeyRegistrationParams {
const NAME: &'static str = "PubkeyRegistrationParams";
#[inline]
fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
alloy_sol_types::private::Cow::Borrowed(
"PubkeyRegistrationParams(BN254.G1Point pubkeyRegistrationSignature,BN254.G1Point pubkeyG1,BN254.G2Point pubkeyG2)",
)
}
#[inline]
fn eip712_components(
) -> alloy_sol_types::private::Vec<alloy_sol_types::private::Cow<'static, str>>
{
let mut components = alloy_sol_types::private::Vec::with_capacity(3);
components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
components.push(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components());
components.push(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_root_type());
components
.extend(<BN254::G2Point as alloy_sol_types::SolStruct>::eip712_components());
components
}
#[inline]
fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
[
<BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
&self.pubkeyRegistrationSignature,
)
.0,
<BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(&self.pubkeyG1)
.0,
<BN254::G2Point as alloy_sol_types::SolType>::eip712_data_word(&self.pubkeyG2)
.0,
]
.concat()
}
}
#[automatically_derived]
impl alloy_sol_types::EventTopic for PubkeyRegistrationParams {
#[inline]
fn topic_preimage_length(rust: &Self::RustType) -> usize {
0usize
+ <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.pubkeyRegistrationSignature,
)
+ <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.pubkeyG1,
)
+ <BN254::G2Point as alloy_sol_types::EventTopic>::topic_preimage_length(
&rust.pubkeyG2,
)
}
#[inline]
fn encode_topic_preimage(
rust: &Self::RustType,
out: &mut alloy_sol_types::private::Vec<u8>,
) {
out.reserve(<Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust));
<BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.pubkeyRegistrationSignature,
out,
);
<BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.pubkeyG1,
out,
);
<BN254::G2Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
&rust.pubkeyG2,
out,
);
}
#[inline]
fn encode_topic(rust: &Self::RustType) -> alloy_sol_types::abi::token::WordToken {
let mut out = alloy_sol_types::private::Vec::new();
<Self as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, &mut out);
alloy_sol_types::abi::token::WordToken(alloy_sol_types::private::keccak256(out))
}
}
};
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`IBLSApkRegistryTypes`](self) contract instance.
See the [wrapper's documentation](`IBLSApkRegistryTypesInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> IBLSApkRegistryTypesInstance<P, N> {
IBLSApkRegistryTypesInstance::<P, N>::new(address, provider)
}
/**A [`IBLSApkRegistryTypes`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`IBLSApkRegistryTypes`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct IBLSApkRegistryTypesInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for IBLSApkRegistryTypesInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("IBLSApkRegistryTypesInstance")
.field(&self.address)
.finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IBLSApkRegistryTypesInstance<P, N>
{
/**Creates a new wrapper around an on-chain [`IBLSApkRegistryTypes`](self) contract instance.
See the [wrapper's documentation](`IBLSApkRegistryTypesInstance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> IBLSApkRegistryTypesInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> IBLSApkRegistryTypesInstance<P, N> {
IBLSApkRegistryTypesInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IBLSApkRegistryTypesInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
IBLSApkRegistryTypesInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
}
}
/**
Generated by the following Solidity interface...
```solidity
library BN254 {
struct G1Point {
uint256 X;
uint256 Y;
}
struct G2Point {
uint256[2] X;
uint256[2] Y;
}
}
library IBLSApkRegistryTypes {
struct ApkUpdate {
bytes24 apkHash;
uint32 updateBlockNumber;
uint32 nextUpdateBlockNumber;
}
struct PubkeyRegistrationParams {
BN254.G1Point pubkeyRegistrationSignature;
BN254.G1Point pubkeyG1;
BN254.G2Point pubkeyG2;
}
}
interface BLSApkRegistry {
error BLSPubkeyAlreadyRegistered();
error BlockNumberBeforeFirstUpdate();
error BlockNumberNotLatest();
error BlockNumberTooRecent();
error ECAddFailed();
error ECMulFailed();
error ECPairingFailed();
error G2PubkeyAlreadySet();
error InvalidBLSSignatureOrPrivateKey();
error OnlyRegistryCoordinator();
error OnlyRegistryCoordinatorOwner();
error OperatorAlreadyRegistered();
error OperatorNotRegistered();
error QuorumAlreadyExists();
error QuorumDoesNotExist();
error ZeroPubKey();
event Initialized(uint8 version);
event NewG2PubkeyRegistration(address indexed operator, BN254.G2Point pubkeyG2);
event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2);
event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers);
event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers);
constructor(address _slashingRegistryCoordinator);
function apkHistory(uint8 quorumNumber, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber);
function currentApk(uint8 quorumNumber) external view returns (uint256 X, uint256 Y);
function deregisterOperator(address operator, bytes memory quorumNumbers) external;
function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory);
function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24);
function getApkHistoryLength(uint8 quorumNumber) external view returns (uint32);
function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory);
function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistryTypes.ApkUpdate memory);
function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address);
function getOperatorId(address operator) external view returns (bytes32);
function getOperatorPubkeyG2(address operator) external view returns (BN254.G2Point memory);
function getOrRegisterOperatorId(address operator, IBLSApkRegistryTypes.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId);
function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32);
function initializeQuorum(uint8 quorumNumber) external;
function operatorToPubkey(address operator) external view returns (uint256 X, uint256 Y);
function operatorToPubkeyHash(address operator) external view returns (bytes32 operatorId);
function pubkeyHashToOperator(bytes32 pubkeyHash) external view returns (address operator);
function registerBLSPublicKey(address operator, IBLSApkRegistryTypes.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId);
function registerOperator(address operator, bytes memory quorumNumbers) external;
function registryCoordinator() external view returns (address);
function verifyAndRegisterG2PubkeyForOperator(address operator, BN254.G2Point memory pubkeyG2) external;
}
```
...which was generated by the following JSON ABI:
```json
[
{
"type": "constructor",
"inputs": [
{
"name": "_slashingRegistryCoordinator",
"type": "address",
"internalType": "contract ISlashingRegistryCoordinator"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "apkHistory",
"inputs": [
{
"name": "quorumNumber",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "apkHash",
"type": "bytes24",
"internalType": "bytes24"
},
{
"name": "updateBlockNumber",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "nextUpdateBlockNumber",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "currentApk",
"inputs": [
{
"name": "quorumNumber",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "deregisterOperator",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "quorumNumbers",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "getApk",
"inputs": [
{
"name": "quorumNumber",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getApkHashAtBlockNumberAndIndex",
"inputs": [
{
"name": "quorumNumber",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "blockNumber",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bytes24",
"internalType": "bytes24"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getApkHistoryLength",
"inputs": [
{
"name": "quorumNumber",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [
{
"name": "",
"type": "uint32",
"internalType": "uint32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getApkIndicesAtBlockNumber",
"inputs": [
{
"name": "quorumNumbers",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "blockNumber",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "uint32[]",
"internalType": "uint32[]"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getApkUpdateAtIndex",
"inputs": [
{
"name": "quorumNumber",
"type": "uint8",
"internalType": "uint8"
},
{
"name": "index",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct IBLSApkRegistryTypes.ApkUpdate",
"components": [
{
"name": "apkHash",
"type": "bytes24",
"internalType": "bytes24"
},
{
"name": "updateBlockNumber",
"type": "uint32",
"internalType": "uint32"
},
{
"name": "nextUpdateBlockNumber",
"type": "uint32",
"internalType": "uint32"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getOperatorFromPubkeyHash",
"inputs": [
{
"name": "pubkeyHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getOperatorId",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getOperatorPubkeyG2",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "getOrRegisterOperatorId",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "params",
"type": "tuple",
"internalType": "struct IBLSApkRegistryTypes.PubkeyRegistrationParams",
"components": [
{
"name": "pubkeyRegistrationSignature",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "pubkeyG1",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "pubkeyG2",
"type": "tuple",
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
}
]
},
{
"name": "pubkeyRegistrationMessageHash",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
}
],
"outputs": [
{
"name": "operatorId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "getRegisteredPubkey",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "initializeQuorum",
"inputs": [
{
"name": "quorumNumber",
"type": "uint8",
"internalType": "uint8"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "operatorToPubkey",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "operatorToPubkeyHash",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "operatorId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "pubkeyHashToOperator",
"inputs": [
{
"name": "pubkeyHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "registerBLSPublicKey",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "params",
"type": "tuple",
"internalType": "struct IBLSApkRegistryTypes.PubkeyRegistrationParams",
"components": [
{
"name": "pubkeyRegistrationSignature",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "pubkeyG1",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "pubkeyG2",
"type": "tuple",
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
}
]
},
{
"name": "pubkeyRegistrationMessageHash",
"type": "tuple",
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
}
],
"outputs": [
{
"name": "operatorId",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "registerOperator",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "quorumNumbers",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "registryCoordinator",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "verifyAndRegisterG2PubkeyForOperator",
"inputs": [
{
"name": "operator",
"type": "address",
"internalType": "address"
},
{
"name": "pubkeyG2",
"type": "tuple",
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"type": "event",
"name": "Initialized",
"inputs": [
{
"name": "version",
"type": "uint8",
"indexed": false,
"internalType": "uint8"
}
],
"anonymous": false
},
{
"type": "event",
"name": "NewG2PubkeyRegistration",
"inputs": [
{
"name": "operator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pubkeyG2",
"type": "tuple",
"indexed": false,
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
}
],
"anonymous": false
},
{
"type": "event",
"name": "NewPubkeyRegistration",
"inputs": [
{
"name": "operator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "pubkeyG1",
"type": "tuple",
"indexed": false,
"internalType": "struct BN254.G1Point",
"components": [
{
"name": "X",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "Y",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "pubkeyG2",
"type": "tuple",
"indexed": false,
"internalType": "struct BN254.G2Point",
"components": [
{
"name": "X",
"type": "uint256[2]",
"internalType": "uint256[2]"
},
{
"name": "Y",
"type": "uint256[2]",
"internalType": "uint256[2]"
}
]
}
],
"anonymous": false
},
{
"type": "event",
"name": "OperatorAddedToQuorums",
"inputs": [
{
"name": "operator",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "operatorId",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "quorumNumbers",
"type": "bytes",
"indexed": false,
"internalType": "bytes"
}
],
"anonymous": false
},
{
"type": "event",
"name": "OperatorRemovedFromQuorums",
"inputs": [
{
"name": "operator",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "operatorId",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "quorumNumbers",
"type": "bytes",
"indexed": false,
"internalType": "bytes"
}
],
"anonymous": false
},
{
"type": "error",
"name": "BLSPubkeyAlreadyRegistered",
"inputs": []
},
{
"type": "error",
"name": "BlockNumberBeforeFirstUpdate",
"inputs": []
},
{
"type": "error",
"name": "BlockNumberNotLatest",
"inputs": []
},
{
"type": "error",
"name": "BlockNumberTooRecent",
"inputs": []
},
{
"type": "error",
"name": "ECAddFailed",
"inputs": []
},
{
"type": "error",
"name": "ECMulFailed",
"inputs": []
},
{
"type": "error",
"name": "ECPairingFailed",
"inputs": []
},
{
"type": "error",
"name": "G2PubkeyAlreadySet",
"inputs": []
},
{
"type": "error",
"name": "InvalidBLSSignatureOrPrivateKey",
"inputs": []
},
{
"type": "error",
"name": "OnlyRegistryCoordinator",
"inputs": []
},
{
"type": "error",
"name": "OnlyRegistryCoordinatorOwner",
"inputs": []
},
{
"type": "error",
"name": "OperatorAlreadyRegistered",
"inputs": []
},
{
"type": "error",
"name": "OperatorNotRegistered",
"inputs": []
},
{
"type": "error",
"name": "QuorumAlreadyExists",
"inputs": []
},
{
"type": "error",
"name": "QuorumDoesNotExist",
"inputs": []
},
{
"type": "error",
"name": "ZeroPubKey",
"inputs": []
}
]
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod BLSApkRegistry {
use super::*;
use alloy::sol_types as alloy_sol_types;
/// The creation / init bytecode of the contract.
///
/// ```text
///0x60a060405234801561000f575f5ffd5b50604051611ef9380380611ef983398101604081905261002e91610107565b6001600160a01b0381166080528061004461004b565b5050610134565b5f54610100900460ff16156100b65760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b5f5460ff90811614610105575f805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b5f60208284031215610117575f5ffd5b81516001600160a01b038116811461012d575f5ffd5b9392505050565b608051611d9f61015a5f395f818161035701528181610eb901526114bd0152611d9f5ff3fe608060405234801561000f575f5ffd5b5060043610610131575f3560e01c806368bccaac116100b4578063bf79ce5811610079578063bf79ce5814610413578063d1a6465014610426578063d5254a8c14610439578063de29fac014610459578063e8bb9ae614610478578063f4e24fe5146104a0575f5ffd5b806368bccaac146103255780636d14a987146103525780637916cea6146103795780637ff81a87146103ba578063a3db80e2146103ed575f5ffd5b80633fb27952116100fa5780633fb279521461020a57806347b314e81461021d5780635f61a8841461025d578063605747d5146102b75780636716991114610305575f5ffd5b8062a1f4cb1461013557806303c5a6b61461017557806313542a4e1461019657806326d941f2146101be578063377ed99d146101d3575b5f5ffd5b61015b61014336600461175c565b60036020525f90815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610188610183366004611777565b6104b3565b60405190815260200161016c565b6101886101a436600461175c565b6001600160a01b03165f9081526001602052604090205490565b6101d16101cc3660046117e1565b6104f2565b005b6101f56101e13660046117e1565b60ff165f9081526004602052604090205490565b60405163ffffffff909116815260200161016c565b6101d1610218366004611868565b6105b2565b61024561022b36600461190f565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161016c565b6102aa61026b3660046117e1565b604080518082019091525f80825260208201525060ff165f90815260056020908152604091829020825180840190935280548352600101549082015290565b60405161016c9190611926565b6102ca6102c536600461193d565b61062e565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161016c565b61031861031336600461175c565b6106bf565b60405161016c9190611987565b6103386103333660046119b2565b610753565b60405167ffffffffffffffff19909116815260200161016c565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b61038c61038736600461193d565b610836565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161016c565b6103cd6103c836600461175c565b61087d565b60408051835181526020938401519381019390935282015260600161016c565b61015b6103fb3660046117e1565b60056020525f90815260409020805460019091015482565b610188610421366004611777565b6108f3565b6101d16104343660046119f6565b610bc8565b61044c610447366004611a34565b610caf565b60405161016c9190611aa6565b61018861046736600461175c565b60016020525f908152604090205481565b61024561048636600461190f565b60026020525f90815260409020546001600160a01b031681565b6101d16104ae366004611868565b610e47565b5f6104bc610eae565b506001600160a01b0383165f90815260016020526040812054908190036104eb576104e88484846108f3565b90505b9392505050565b6104fa610eae565b60ff81165f908152600460205260409020541561052a576040516310cda51760e21b815260040160405180910390fd5b60ff165f908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b6105ba610eae565b5f6105c48361087d565b5090506105d18282610ef9565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610611856001600160a01b03165f9081526001602052604090205490565b8460405161062193929190611aee565b60405180910390a1505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600490529190912080548390811061066a5761066a611b39565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b6106c7611689565b6001600160a01b0382165f9081526006602052604090819020815160808101835291829081018260028282826020028201915b8154815260200190600101908083116106fa57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610730575050505050815250509050919050565b60ff83165f90815260046020526040812080548291908490811061077957610779611b39565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107ea57604051633d22884160e01b815260040160405180910390fd5b604081015163ffffffff1615806108105750806040015163ffffffff168463ffffffff16105b61082d57604051636fe02d4b60e01b815260040160405180910390fd5b51949350505050565b6004602052815f5260405f20818154811061084f575f80fd5b5f91825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b604080518082019091525f80825260208201526001600160a01b0382165f818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806108e9576040516325ec6c1f60e01b815260040160405180910390fd5b9094909350915050565b5f6108fc610eae565b5f61092861091236869003860160408701611b4d565b80515f9081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5810361096a57604051630cc7509160e01b815260040160405180910390fd5b6001600160a01b0385165f90815260016020526040812054146109a0576040516342ee68b560e01b815260040160405180910390fd5b5f818152600260205260409020546001600160a01b0316156109d557604051634c334c9760e11b815260040160405180910390fd5b604080515f917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610a2d918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611b7e565b604051602081830303815290604052805190602001205f1c610a4f9190611bc0565b9050610ae8610a88610a7383610a6d368a90038a0160408b01611b4d565b906110e0565b610a8236899003890189611b4d565b90611150565b610a906111c4565b610ad1610ac285610a6d6040805180820182525f80825260209182015281518083019092526001825260029082015290565b610a82368a90038a018a611b4d565b610ae3368a90038a0160808b01611c21565b611284565b610b055760405163a72d026360e01b815260040160405180910390fd5b6001600160a01b0386165f9081526003602090815260408083208882013581556060890135600190910155600690915290206080860190610b468282611c8b565b50506001600160a01b0386165f81815260016020908152604080832086905585835260029091529081902080546001600160a01b0319168317905580517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610bb7919089019060808a0190611ce6565b60405180910390a250949350505050565b610bd06114bb565b5f610bda8361087d565b509050610be68361156c565b610c2681610bf26111c4565b6040805180820182525f808252602091820152815180830190925260018252600290820152610ae336879003870187611c21565b610c435760405163a72d026360e01b815260040160405180910390fd5b6001600160a01b0383165f9081526006602052604090208290610c668282611c8b565b905050826001600160a01b03167f5c4f9f28153dbf3f00e69607a59e82ad806fffb78d09f179f62432f7e9d2511a83604051610ca29190611d05565b60405180910390a2505050565b60605f8367ffffffffffffffff811115610ccb57610ccb6117fa565b604051908082528060200260200182016040528015610cf4578160200160208202803683370190505b5090505f5b84811015610e3e575f868683818110610d1457610d14611b39565b919091013560f81c5f818152600460205260409020549092509050801580610d74575060ff82165f9081526004602052604081208054909190610d5957610d59611b39565b5f91825260209091200154600160c01b900463ffffffff1686105b15610d9257604051633f4cb70f60e01b815260040160405180910390fd5b805b8015610e335760ff83165f9081526004602052604090208790610db8600184611d13565b81548110610dc857610dc8611b39565b5f91825260209091200154600160c01b900463ffffffff1611610e2157610df0600182611d13565b858581518110610e0257610e02611b39565b602002602001019063ffffffff16908163ffffffff1681525050610e33565b80610e2b81611d26565b915050610d94565b505050600101610cf9565b50949350505050565b610e4f610eae565b5f610e598361087d565b509050610e6e82610e69836115cd565b610ef9565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610611856001600160a01b03165f9081526001602052604090205490565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ef757604051634394dbdf60e11b815260040160405180910390fd5b565b604080518082019091525f80825260208201525f5b83518110156110da575f848281518110610f2a57610f2a611b39565b0160209081015160f81c5f8181526004909252604082205490925090819003610f6657604051637310cff560e11b815260040160405180910390fd5b60ff82165f908152600560209081526040918290208251808401909352805483526001015490820152610f999086611150565b60ff83165f818152600560209081526040808320855180825586840180516001938401559085525183528184209484526004909252822093975091929091610fe19085611d13565b81548110610ff157610ff1611b39565b5f918252602090912001805490915063ffffffff438116600160c01b909204160361102f5780546001600160c01b031916604083901c1781556110ca565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88165f908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b505060019092019150610f0e9050565b50505050565b604080518082019091525f80825260208201526110fb6116ae565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061112957fe5b508061114857604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261116b6116cc565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa905080806111a557fe5b50806111485760405163d4b68fd760e01b815260040160405180910390fd5b6111cc611689565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390525f916112b26116ea565b5f5b6002811015611469575f6112c9826006611c74565b90508482600281106112dd576112dd611b39565b602002015151836112ee835f611d3b565b600c81106112fe576112fe611b39565b602002015284826002811061131557611315611b39565b6020020151602001518382600161132c9190611d3b565b600c811061133c5761133c611b39565b602002015283826002811061135357611353611b39565b6020020151515183611366836002611d3b565b600c811061137657611376611b39565b602002015283826002811061138d5761138d611b39565b60200201515160016020020151836113a6836003611d3b565b600c81106113b6576113b6611b39565b60200201528382600281106113cd576113cd611b39565b6020020151602001515f600281106113e7576113e7611b39565b6020020151836113f8836004611d3b565b600c811061140857611408611b39565b602002015283826002811061141f5761141f611b39565b60200201516020015160016002811061143a5761143a611b39565b60200201518361144b836005611d3b565b600c811061145b5761145b611b39565b6020020152506001016112b4565b50611472611709565b5f6020826101808560086107d05a03fa9050808061148c57fe5b50806114ab576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611517573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153b9190611d4e565b6001600160a01b0316336001600160a01b031614610ef757604051637070f3b160e11b815260040160405180910390fd5b5f611576826106bf565b80515190915015801561158c5750805160200151155b801561159b5750602081015151155b80156115ac57506020818101510151155b6115c957604051630849e5cf60e41b815260040160405180910390fd5b5050565b604080518082019091525f808252602082015281511580156115f157506020820151155b1561160e575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516116529190611bc0565b61167c907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611d13565b905292915050565b919050565b604051806040016040528061169c611727565b81526020016116a9611727565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b0381168114611759575f5ffd5b50565b5f6020828403121561176c575f5ffd5b81356104eb81611745565b5f5f5f83850361016081121561178b575f5ffd5b843561179681611745565b9350610100601f19820112156117aa575f5ffd5b602085019250604061011f19820112156117c2575f5ffd5b50610120840190509250925092565b803560ff81168114611684575f5ffd5b5f602082840312156117f1575f5ffd5b6104eb826117d1565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611831576118316117fa565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611860576118606117fa565b604052919050565b5f5f60408385031215611879575f5ffd5b823561188481611745565b9150602083013567ffffffffffffffff81111561189f575f5ffd5b8301601f810185136118af575f5ffd5b803567ffffffffffffffff8111156118c9576118c96117fa565b6118dc601f8201601f1916602001611837565b8181528660208385010111156118f0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6020828403121561191f575f5ffd5b5035919050565b8151815260208083015190820152604081016106b9565b5f5f6040838503121561194e575f5ffd5b611957836117d1565b946020939093013593505050565b805f5b60028110156110da578151845260209384019390910190600101611968565b5f608082019050611999828451611965565b60208301516119ab6040840182611965565b5092915050565b5f5f5f606084860312156119c4575f5ffd5b6119cd846117d1565b9250602084013563ffffffff811681146119e5575f5ffd5b929592945050506040919091013590565b5f5f82840360a0811215611a08575f5ffd5b8335611a1381611745565b92506080601f1982011215611a26575f5ffd5b506020830190509250929050565b5f5f5f60408486031215611a46575f5ffd5b833567ffffffffffffffff811115611a5c575f5ffd5b8401601f81018613611a6c575f5ffd5b803567ffffffffffffffff811115611a82575f5ffd5b866020828401011115611a93575f5ffd5b6020918201979096509401359392505050565b602080825282518282018190525f918401906040840190835b81811015611ae357835163ffffffff16835260209384019390920191600101611abf565b509095945050505050565b60018060a01b0384168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6040828403128015611b5e575f5ffd5b50611b6761180e565b823581526020928301359281019290925250919050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b5f82611bda57634e487b7160e01b5f52601260045260245ffd5b500690565b5f82601f830112611bee575f5ffd5b611bf661180e565b806040840185811115611c07575f5ffd5b845b81811015611ae3578035845260209384019301611c09565b5f6080828403128015611c32575f5ffd5b50611c3b61180e565b611c458484611bdf565b8152611c548460408501611bdf565b60208201529392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106b9576106b9611c60565b815f5b6002811015611cab57813583820155602090910190600101611c8e565b5050604082015f5b60028110156110da57813583820160020155602090910190600101611cb3565b6040818337604080820160408401375050565b823581526020808401359082015260c081016104eb6040830184611cd3565b608081016106b98284611cd3565b818103818111156106b9576106b9611c60565b5f81611d3457611d34611c60565b505f190190565b808201808211156106b9576106b9611c60565b5f60208284031215611d5e575f5ffd5b81516104eb8161174556fea26469706673582212208ee2ee102a7a463365cca52a0c343be3c955570cf85e1c99c4e1aaa821700f0c64736f6c634300081b0033
/// ```
#[rustfmt::skip]
#[allow(clippy::all)]
pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
b"`\xA0`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x1E\xF98\x03\x80a\x1E\xF9\x839\x81\x01`@\x81\x90Ra\0.\x91a\x01\x07V[`\x01`\x01`\xA0\x1B\x03\x81\x16`\x80R\x80a\0Da\0KV[PPa\x014V[_Ta\x01\0\x90\x04`\xFF\x16\x15a\0\xB6W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`'`$\x82\x01R\x7FInitializable: contract is initi`D\x82\x01Rfalizing`\xC8\x1B`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[_T`\xFF\x90\x81\x16\x14a\x01\x05W_\x80T`\xFF\x19\x16`\xFF\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x7F&\xB8?\xF9n\x1F+jh/\x138R\xF6y\x8A\t\xC4e\xDA\x95\x92\x14`\xCE\xFB8G@$\x98\x90` \x01`@Q\x80\x91\x03\x90\xA1[V[_` \x82\x84\x03\x12\x15a\x01\x17W__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01-W__\xFD[\x93\x92PPPV[`\x80Qa\x1D\x9Fa\x01Z_9_\x81\x81a\x03W\x01R\x81\x81a\x0E\xB9\x01Ra\x14\xBD\x01Ra\x1D\x9F_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x011W_5`\xE0\x1C\x80ch\xBC\xCA\xAC\x11a\0\xB4W\x80c\xBFy\xCEX\x11a\0yW\x80c\xBFy\xCEX\x14a\x04\x13W\x80c\xD1\xA6FP\x14a\x04&W\x80c\xD5%J\x8C\x14a\x049W\x80c\xDE)\xFA\xC0\x14a\x04YW\x80c\xE8\xBB\x9A\xE6\x14a\x04xW\x80c\xF4\xE2O\xE5\x14a\x04\xA0W__\xFD[\x80ch\xBC\xCA\xAC\x14a\x03%W\x80cm\x14\xA9\x87\x14a\x03RW\x80cy\x16\xCE\xA6\x14a\x03yW\x80c\x7F\xF8\x1A\x87\x14a\x03\xBAW\x80c\xA3\xDB\x80\xE2\x14a\x03\xEDW__\xFD[\x80c?\xB2yR\x11a\0\xFAW\x80c?\xB2yR\x14a\x02\nW\x80cG\xB3\x14\xE8\x14a\x02\x1DW\x80c_a\xA8\x84\x14a\x02]W\x80c`WG\xD5\x14a\x02\xB7W\x80cg\x16\x99\x11\x14a\x03\x05W__\xFD[\x80b\xA1\xF4\xCB\x14a\x015W\x80c\x03\xC5\xA6\xB6\x14a\x01uW\x80c\x13T*N\x14a\x01\x96W\x80c&\xD9A\xF2\x14a\x01\xBEW\x80c7~\xD9\x9D\x14a\x01\xD3W[__\xFD[a\x01[a\x01C6`\x04a\x17\\V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x88a\x01\x836`\x04a\x17wV[a\x04\xB3V[`@Q\x90\x81R` \x01a\x01lV[a\x01\x88a\x01\xA46`\x04a\x17\\V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[a\x01\xD1a\x01\xCC6`\x04a\x17\xE1V[a\x04\xF2V[\0[a\x01\xF5a\x01\xE16`\x04a\x17\xE1V[`\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01lV[a\x01\xD1a\x02\x186`\x04a\x18hV[a\x05\xB2V[a\x02Ea\x02+6`\x04a\x19\x0FV[_\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01lV[a\x02\xAAa\x02k6`\x04a\x17\xE1V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01RP`\xFF\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01l\x91\x90a\x19&V[a\x02\xCAa\x02\xC56`\x04a\x19=V[a\x06.V[`@\x80Q\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x80\x84\x01Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x01lV[a\x03\x18a\x03\x136`\x04a\x17\\V[a\x06\xBFV[`@Qa\x01l\x91\x90a\x19\x87V[a\x038a\x0336`\x04a\x19\xB2V[a\x07SV[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01lV[a\x02E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03\x8Ca\x03\x876`\x04a\x19=V[a\x086V[`@\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84Rc\xFF\xFF\xFF\xFF\x92\x83\x16` \x85\x01R\x91\x16\x90\x82\x01R``\x01a\x01lV[a\x03\xCDa\x03\xC86`\x04a\x17\\V[a\x08}V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01lV[a\x01[a\x03\xFB6`\x04a\x17\xE1V[`\x05` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x88a\x04!6`\x04a\x17wV[a\x08\xF3V[a\x01\xD1a\x0446`\x04a\x19\xF6V[a\x0B\xC8V[a\x04La\x04G6`\x04a\x1A4V[a\x0C\xAFV[`@Qa\x01l\x91\x90a\x1A\xA6V[a\x01\x88a\x04g6`\x04a\x17\\V[`\x01` R_\x90\x81R`@\x90 T\x81V[a\x02Ea\x04\x866`\x04a\x19\x0FV[`\x02` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xD1a\x04\xAE6`\x04a\x18hV[a\x0EGV[_a\x04\xBCa\x0E\xAEV[P`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x01` R`@\x81 T\x90\x81\x90\x03a\x04\xEBWa\x04\xE8\x84\x84\x84a\x08\xF3V[\x90P[\x93\x92PPPV[a\x04\xFAa\x0E\xAEV[`\xFF\x81\x16_\x90\x81R`\x04` R`@\x90 T\x15a\x05*W`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x84\x81Rc\xFF\xFF\xFF\xFFC\x81\x16\x82\x86\x01\x90\x81R\x82\x85\x01\x87\x81R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x94Q\x83\x16`\x01`\xE0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x95\x90\x93\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x90\x96\x16\x91\x90\x93\x1C\x17\x93\x90\x93\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UV[a\x05\xBAa\x0E\xAEV[_a\x05\xC4\x83a\x08}V[P\x90Pa\x05\xD1\x82\x82a\x0E\xF9V[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06\x11\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06!\x93\x92\x91\x90a\x1A\xEEV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x04\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x06jWa\x06ja\x1B9V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\xE0\x1B\x90\x04\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[a\x06\xC7a\x16\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x06` R`@\x90\x81\x90 \x81Q`\x80\x81\x01\x83R\x91\x82\x90\x81\x01\x82`\x02\x82\x82\x82` \x02\x82\x01\x91[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x06\xFAWPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x070WPPPPP\x81RPP\x90P\x91\x90PV[`\xFF\x83\x16_\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x07yWa\x07ya\x1B9V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x85\x90R`\x01`\xE0\x1B\x90\x91\x04\x81\x16\x92\x82\x01\x92\x90\x92R\x92P\x85\x16\x10\x15a\x07\xEAW`@Qc=\"\x88A`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x10WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08-W`@Qco\xE0-K`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[Q\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x08OW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`@\x81\x90\x1B\x92Pc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x92P`\x01`\xE0\x1B\x90\x91\x04\x16\x83V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x83R\x81T\x81R`\x01\x91\x82\x01T\x81\x85\x01R\x94\x84R\x90\x91R\x81 T\x90\x91\x90\x80a\x08\xE9W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x90\x94\x90\x93P\x91PPV[_a\x08\xFCa\x0E\xAEV[_a\t(a\t\x126\x86\x90\x03\x86\x01`@\x87\x01a\x1BMV[\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x90P\x7F\xAD2(\xB6v\xF7\xD3\xCDB\x84\xA5D?\x17\xF1\x96+6\xE4\x91\xB3\n@\xB2@XI\xE5\x97\xBA_\xB5\x81\x03a\tjW`@Qc\x0C\xC7P\x91`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x01` R`@\x81 T\x14a\t\xA0W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xD5W`@QcL3L\x97`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\n-\x91\x885\x91` \x80\x8B\x015\x92\x8B\x015\x91``\x8C\x015\x91`\x80\x8D\x01\x91`\xC0\x8E\x01\x91\x8D5\x91\x8E\x82\x015\x91\x01a\x1B~V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\nO\x91\x90a\x1B\xC0V[\x90Pa\n\xE8a\n\x88a\ns\x83a\nm6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1BMV[\x90a\x10\xE0V[a\n\x826\x89\x90\x03\x89\x01\x89a\x1BMV[\x90a\x11PV[a\n\x90a\x11\xC4V[a\n\xD1a\n\xC2\x85a\nm`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\n\x826\x8A\x90\x03\x8A\x01\x8Aa\x1BMV[a\n\xE36\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1C!V[a\x12\x84V[a\x0B\x05W`@Qc\xA7-\x02c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x88\x82\x015\x81U``\x89\x015`\x01\x90\x91\x01U`\x06\x90\x91R\x90 `\x80\x86\x01\x90a\x0BF\x82\x82a\x1C\x8BV[PP`\x01`\x01`\xA0\x1B\x03\x86\x16_\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x86\x90U\x85\x83R`\x02\x90\x91R\x90\x81\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x83\x17\x90U\x80Q\x7F\xE3\xFBf\x13\xAF.\x890\xCF\x85\xD4\x7F\xCFm\xB1\x01\x92\"Jd\xC6\xCB\xE8\x02>\x0E\xEE\x1B\xA3\x82\x80A\x91a\x0B\xB7\x91\x90\x89\x01\x90`\x80\x8A\x01\x90a\x1C\xE6V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[a\x0B\xD0a\x14\xBBV[_a\x0B\xDA\x83a\x08}V[P\x90Pa\x0B\xE6\x83a\x15lV[a\x0C&\x81a\x0B\xF2a\x11\xC4V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01Ra\n\xE36\x87\x90\x03\x87\x01\x87a\x1C!V[a\x0CCW`@Qc\xA7-\x02c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x06` R`@\x90 \x82\x90a\x0Cf\x82\x82a\x1C\x8BV[\x90PP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\\O\x9F(\x15=\xBF?\0\xE6\x96\x07\xA5\x9E\x82\xAD\x80o\xFF\xB7\x8D\t\xF1y\xF6$2\xF7\xE9\xD2Q\x1A\x83`@Qa\x0C\xA2\x91\x90a\x1D\x05V[`@Q\x80\x91\x03\x90\xA2PPPV[``_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xCBWa\x0C\xCBa\x17\xFAV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0E>W_\x86\x86\x83\x81\x81\x10a\r\x14Wa\r\x14a\x1B9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\rtWP`\xFF\x82\x16_\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\rYWa\rYa\x1B9V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\r\x92W`@Qc?L\xB7\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80[\x80\x15a\x0E3W`\xFF\x83\x16_\x90\x81R`\x04` R`@\x90 \x87\x90a\r\xB8`\x01\x84a\x1D\x13V[\x81T\x81\x10a\r\xC8Wa\r\xC8a\x1B9V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0E!Wa\r\xF0`\x01\x82a\x1D\x13V[\x85\x85\x81Q\x81\x10a\x0E\x02Wa\x0E\x02a\x1B9V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0E3V[\x80a\x0E+\x81a\x1D&V[\x91PPa\r\x94V[PPP`\x01\x01a\x0C\xF9V[P\x94\x93PPPPV[a\x0EOa\x0E\xAEV[_a\x0EY\x83a\x08}V[P\x90Pa\x0En\x82a\x0Ei\x83a\x15\xCDV[a\x0E\xF9V[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06\x11\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0E\xF7W`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_[\x83Q\x81\x10\x15a\x10\xDAW_\x84\x82\x81Q\x81\x10a\x0F*Wa\x0F*a\x1B9V[\x01` \x90\x81\x01Q`\xF8\x1C_\x81\x81R`\x04\x90\x92R`@\x82 T\x90\x92P\x90\x81\x90\x03a\x0FfW`@Qcs\x10\xCF\xF5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x0F\x99\x90\x86a\x11PV[`\xFF\x83\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x85Q\x80\x82U\x86\x84\x01\x80Q`\x01\x93\x84\x01U\x90\x85RQ\x83R\x81\x84 \x94\x84R`\x04\x90\x92R\x82 \x93\x97P\x91\x92\x90\x91a\x0F\xE1\x90\x85a\x1D\x13V[\x81T\x81\x10a\x0F\xF1Wa\x0F\xF1a\x1B9V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x03a\x10/W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x10\xCAV[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xE0\x1B\x81\x81\x02`\x01`\x01`\xE0\x1B\x03\x94\x85\x16\x17\x85U`\xFF\x88\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x8B\x16\x81R\x80\x84\x01\x96\x87R\x80\x83\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x93Q\x93\x01\x80T\x95Q\x92Q\x87\x16\x90\x94\x02\x91\x90\x95\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x94\x90\x94\x16\x91\x90\x94\x1C\x17\x91\x90\x91\x17\x90\x92\x16\x17\x90U[PP`\x01\x90\x92\x01\x91Pa\x0F\x0E\x90PV[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x10\xFBa\x16\xAEV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x11)W\xFE[P\x80a\x11HW`@Qc#\x19\xDF\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11ka\x16\xCCV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x11\xA5W\xFE[P\x80a\x11HW`@Qc\xD4\xB6\x8F\xD7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xCCa\x16\x89V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x85\x90R\x82Q\x80\x84\x01\x90\x93R\x85\x83R\x82\x01\x83\x90R_\x91a\x12\xB2a\x16\xEAV[_[`\x02\x81\x10\x15a\x14iW_a\x12\xC9\x82`\x06a\x1CtV[\x90P\x84\x82`\x02\x81\x10a\x12\xDDWa\x12\xDDa\x1B9V[` \x02\x01QQ\x83a\x12\xEE\x83_a\x1D;V[`\x0C\x81\x10a\x12\xFEWa\x12\xFEa\x1B9V[` \x02\x01R\x84\x82`\x02\x81\x10a\x13\x15Wa\x13\x15a\x1B9V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x13,\x91\x90a\x1D;V[`\x0C\x81\x10a\x13<Wa\x13<a\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x13SWa\x13Sa\x1B9V[` \x02\x01QQQ\x83a\x13f\x83`\x02a\x1D;V[`\x0C\x81\x10a\x13vWa\x13va\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x13\x8DWa\x13\x8Da\x1B9V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x13\xA6\x83`\x03a\x1D;V[`\x0C\x81\x10a\x13\xB6Wa\x13\xB6a\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x13\xCDWa\x13\xCDa\x1B9V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x13\xE7Wa\x13\xE7a\x1B9V[` \x02\x01Q\x83a\x13\xF8\x83`\x04a\x1D;V[`\x0C\x81\x10a\x14\x08Wa\x14\x08a\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x14\x1FWa\x14\x1Fa\x1B9V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x14:Wa\x14:a\x1B9V[` \x02\x01Q\x83a\x14K\x83`\x05a\x1D;V[`\x0C\x81\x10a\x14[Wa\x14[a\x1B9V[` \x02\x01RP`\x01\x01a\x12\xB4V[Pa\x14ra\x17\tV[_` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x14\x8CW\xFE[P\x80a\x14\xABW`@Qc$\xCC\xC7\x93`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PQ\x15\x15\x98\x97PPPPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15;\x91\x90a\x1DNV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\xF7W`@Qcpp\xF3\xB1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15v\x82a\x06\xBFV[\x80QQ\x90\x91P\x15\x80\x15a\x15\x8CWP\x80Q` \x01Q\x15[\x80\x15a\x15\x9BWP` \x81\x01QQ\x15[\x80\x15a\x15\xACWP` \x81\x81\x01Q\x01Q\x15[a\x15\xC9W`@Qc\x08I\xE5\xCF`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x15\xF1WP` \x82\x01Q\x15[\x15a\x16\x0EWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x16R\x91\x90a\x1B\xC0V[a\x16|\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\x13V[\x90R\x92\x91PPV[\x91\x90PV[`@Q\x80`@\x01`@R\x80a\x16\x9Ca\x17'V[\x81R` \x01a\x16\xA9a\x17'V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x17YW__\xFD[PV[_` \x82\x84\x03\x12\x15a\x17lW__\xFD[\x815a\x04\xEB\x81a\x17EV[___\x83\x85\x03a\x01`\x81\x12\x15a\x17\x8BW__\xFD[\x845a\x17\x96\x81a\x17EV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x17\xAAW__\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x17\xC2W__\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[\x805`\xFF\x81\x16\x81\x14a\x16\x84W__\xFD[_` \x82\x84\x03\x12\x15a\x17\xF1W__\xFD[a\x04\xEB\x82a\x17\xD1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x181Wa\x181a\x17\xFAV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x18`Wa\x18`a\x17\xFAV[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x18yW__\xFD[\x825a\x18\x84\x81a\x17EV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\x9FW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\xAFW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC9Wa\x18\xC9a\x17\xFAV[a\x18\xDC`\x1F\x82\x01`\x1F\x19\x16` \x01a\x187V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x18\xF0W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x19\x1FW__\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xB9V[__`@\x83\x85\x03\x12\x15a\x19NW__\xFD[a\x19W\x83a\x17\xD1V[\x94` \x93\x90\x93\x015\x93PPPV[\x80_[`\x02\x81\x10\x15a\x10\xDAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a\x19hV[_`\x80\x82\x01\x90Pa\x19\x99\x82\x84Qa\x19eV[` \x83\x01Qa\x19\xAB`@\x84\x01\x82a\x19eV[P\x92\x91PPV[___``\x84\x86\x03\x12\x15a\x19\xC4W__\xFD[a\x19\xCD\x84a\x17\xD1V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x19\xE5W__\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[__\x82\x84\x03`\xA0\x81\x12\x15a\x1A\x08W__\xFD[\x835a\x1A\x13\x81a\x17EV[\x92P`\x80`\x1F\x19\x82\x01\x12\x15a\x1A&W__\xFD[P` \x83\x01\x90P\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15a\x1AFW__\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\\W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x1AlW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\x82W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x1A\x93W__\xFD[` \x91\x82\x01\x97\x90\x96P\x94\x015\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1A\xE3W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1A\xBFV[P\x90\x95\x94PPPPPV[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R_\x82Q\x80``\x84\x01R\x80` \x85\x01`\x80\x85\x01^_`\x80\x82\x85\x01\x01R`\x80`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`@\x82\x84\x03\x12\x80\x15a\x1B^W__\xFD[Pa\x1Bga\x18\x0EV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`@\x84`\xC0\x83\x017a\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[_\x82a\x1B\xDAWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_\x82`\x1F\x83\x01\x12a\x1B\xEEW__\xFD[a\x1B\xF6a\x18\x0EV[\x80`@\x84\x01\x85\x81\x11\x15a\x1C\x07W__\xFD[\x84[\x81\x81\x10\x15a\x1A\xE3W\x805\x84R` \x93\x84\x01\x93\x01a\x1C\tV[_`\x80\x82\x84\x03\x12\x80\x15a\x1C2W__\xFD[Pa\x1C;a\x18\x0EV[a\x1CE\x84\x84a\x1B\xDFV[\x81Ra\x1CT\x84`@\x85\x01a\x1B\xDFV[` \x82\x01R\x93\x92PPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xB9Wa\x06\xB9a\x1C`V[\x81_[`\x02\x81\x10\x15a\x1C\xABW\x815\x83\x82\x01U` \x90\x91\x01\x90`\x01\x01a\x1C\x8EV[PP`@\x82\x01_[`\x02\x81\x10\x15a\x10\xDAW\x815\x83\x82\x01`\x02\x01U` \x90\x91\x01\x90`\x01\x01a\x1C\xB3V[`@\x81\x837`@\x80\x82\x01`@\x84\x017PPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01a\x04\xEB`@\x83\x01\x84a\x1C\xD3V[`\x80\x81\x01a\x06\xB9\x82\x84a\x1C\xD3V[\x81\x81\x03\x81\x81\x11\x15a\x06\xB9Wa\x06\xB9a\x1C`V[_\x81a\x1D4Wa\x1D4a\x1C`V[P_\x19\x01\x90V[\x80\x82\x01\x80\x82\x11\x15a\x06\xB9Wa\x06\xB9a\x1C`V[_` \x82\x84\x03\x12\x15a\x1D^W__\xFD[\x81Qa\x04\xEB\x81a\x17EV\xFE\xA2dipfsX\"\x12 \x8E\xE2\xEE\x10*zF3e\xCC\xA5*\x0C4;\xE3\xC9UW\x0C\xF8^\x1C\x99\xC4\xE1\xAA\xA8!p\x0F\x0CdsolcC\0\x08\x1B\x003",
);
/// The runtime bytecode of the contract, as deployed on the network.
///
/// ```text
///0x608060405234801561000f575f5ffd5b5060043610610131575f3560e01c806368bccaac116100b4578063bf79ce5811610079578063bf79ce5814610413578063d1a6465014610426578063d5254a8c14610439578063de29fac014610459578063e8bb9ae614610478578063f4e24fe5146104a0575f5ffd5b806368bccaac146103255780636d14a987146103525780637916cea6146103795780637ff81a87146103ba578063a3db80e2146103ed575f5ffd5b80633fb27952116100fa5780633fb279521461020a57806347b314e81461021d5780635f61a8841461025d578063605747d5146102b75780636716991114610305575f5ffd5b8062a1f4cb1461013557806303c5a6b61461017557806313542a4e1461019657806326d941f2146101be578063377ed99d146101d3575b5f5ffd5b61015b61014336600461175c565b60036020525f90815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b610188610183366004611777565b6104b3565b60405190815260200161016c565b6101886101a436600461175c565b6001600160a01b03165f9081526001602052604090205490565b6101d16101cc3660046117e1565b6104f2565b005b6101f56101e13660046117e1565b60ff165f9081526004602052604090205490565b60405163ffffffff909116815260200161016c565b6101d1610218366004611868565b6105b2565b61024561022b36600461190f565b5f908152600260205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161016c565b6102aa61026b3660046117e1565b604080518082019091525f80825260208201525060ff165f90815260056020908152604091829020825180840190935280548352600101549082015290565b60405161016c9190611926565b6102ca6102c536600461193d565b61062e565b60408051825167ffffffffffffffff1916815260208084015163ffffffff90811691830191909152928201519092169082015260600161016c565b61031861031336600461175c565b6106bf565b60405161016c9190611987565b6103386103333660046119b2565b610753565b60405167ffffffffffffffff19909116815260200161016c565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b61038c61038736600461193d565b610836565b6040805167ffffffffffffffff19909416845263ffffffff928316602085015291169082015260600161016c565b6103cd6103c836600461175c565b61087d565b60408051835181526020938401519381019390935282015260600161016c565b61015b6103fb3660046117e1565b60056020525f90815260409020805460019091015482565b610188610421366004611777565b6108f3565b6101d16104343660046119f6565b610bc8565b61044c610447366004611a34565b610caf565b60405161016c9190611aa6565b61018861046736600461175c565b60016020525f908152604090205481565b61024561048636600461190f565b60026020525f90815260409020546001600160a01b031681565b6101d16104ae366004611868565b610e47565b5f6104bc610eae565b506001600160a01b0383165f90815260016020526040812054908190036104eb576104e88484846108f3565b90505b9392505050565b6104fa610eae565b60ff81165f908152600460205260409020541561052a576040516310cda51760e21b815260040160405180910390fd5b60ff165f908152600460209081526040808320815160608101835284815263ffffffff4381168286019081528285018781528454600181018655948852959096209151919092018054955194518316600160e01b026001600160e01b0395909316600160c01b026001600160e01b03199096169190931c179390931791909116919091179055565b6105ba610eae565b5f6105c48361087d565b5090506105d18282610ef9565b7f73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e83610611856001600160a01b03165f9081526001602052604090205490565b8460405161062193929190611aee565b60405180910390a1505050565b604080516060810182525f808252602080830182905282840182905260ff86168252600490529190912080548390811061066a5761066a611b39565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b8204811694830194909452600160e01b90049092169082015290505b92915050565b6106c7611689565b6001600160a01b0382165f9081526006602052604090819020815160808101835291829081018260028282826020028201915b8154815260200190600101908083116106fa57505050918352505060408051808201918290526020909201919060028481019182845b815481526020019060010190808311610730575050505050815250509050919050565b60ff83165f90815260046020526040812080548291908490811061077957610779611b39565b5f91825260209182902060408051606081018252919092015467ffffffffffffffff1981841b16825263ffffffff600160c01b82048116948301859052600160e01b9091048116928201929092529250851610156107ea57604051633d22884160e01b815260040160405180910390fd5b604081015163ffffffff1615806108105750806040015163ffffffff168463ffffffff16105b61082d57604051636fe02d4b60e01b815260040160405180910390fd5b51949350505050565b6004602052815f5260405f20818154811061084f575f80fd5b5f91825260209091200154604081901b925063ffffffff600160c01b820481169250600160e01b9091041683565b604080518082019091525f80825260208201526001600160a01b0382165f818152600360209081526040808320815180830183528154815260019182015481850152948452909152812054909190806108e9576040516325ec6c1f60e01b815260040160405180910390fd5b9094909350915050565b5f6108fc610eae565b5f61092861091236869003860160408701611b4d565b80515f9081526020918201519091526040902090565b90507fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5810361096a57604051630cc7509160e01b815260040160405180910390fd5b6001600160a01b0385165f90815260016020526040812054146109a0576040516342ee68b560e01b815260040160405180910390fd5b5f818152600260205260409020546001600160a01b0316156109d557604051634c334c9760e11b815260040160405180910390fd5b604080515f917f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000191610a2d918835916020808b0135928b01359160608c01359160808d019160c08e01918d35918e8201359101611b7e565b604051602081830303815290604052805190602001205f1c610a4f9190611bc0565b9050610ae8610a88610a7383610a6d368a90038a0160408b01611b4d565b906110e0565b610a8236899003890189611b4d565b90611150565b610a906111c4565b610ad1610ac285610a6d6040805180820182525f80825260209182015281518083019092526001825260029082015290565b610a82368a90038a018a611b4d565b610ae3368a90038a0160808b01611c21565b611284565b610b055760405163a72d026360e01b815260040160405180910390fd5b6001600160a01b0386165f9081526003602090815260408083208882013581556060890135600190910155600690915290206080860190610b468282611c8b565b50506001600160a01b0386165f81815260016020908152604080832086905585835260029091529081902080546001600160a01b0319168317905580517fe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba382804191610bb7919089019060808a0190611ce6565b60405180910390a250949350505050565b610bd06114bb565b5f610bda8361087d565b509050610be68361156c565b610c2681610bf26111c4565b6040805180820182525f808252602091820152815180830190925260018252600290820152610ae336879003870187611c21565b610c435760405163a72d026360e01b815260040160405180910390fd5b6001600160a01b0383165f9081526006602052604090208290610c668282611c8b565b905050826001600160a01b03167f5c4f9f28153dbf3f00e69607a59e82ad806fffb78d09f179f62432f7e9d2511a83604051610ca29190611d05565b60405180910390a2505050565b60605f8367ffffffffffffffff811115610ccb57610ccb6117fa565b604051908082528060200260200182016040528015610cf4578160200160208202803683370190505b5090505f5b84811015610e3e575f868683818110610d1457610d14611b39565b919091013560f81c5f818152600460205260409020549092509050801580610d74575060ff82165f9081526004602052604081208054909190610d5957610d59611b39565b5f91825260209091200154600160c01b900463ffffffff1686105b15610d9257604051633f4cb70f60e01b815260040160405180910390fd5b805b8015610e335760ff83165f9081526004602052604090208790610db8600184611d13565b81548110610dc857610dc8611b39565b5f91825260209091200154600160c01b900463ffffffff1611610e2157610df0600182611d13565b858581518110610e0257610e02611b39565b602002602001019063ffffffff16908163ffffffff1681525050610e33565b80610e2b81611d26565b915050610d94565b505050600101610cf9565b50949350505050565b610e4f610eae565b5f610e598361087d565b509050610e6e82610e69836115cd565b610ef9565b7ff843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e83610611856001600160a01b03165f9081526001602052604090205490565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ef757604051634394dbdf60e11b815260040160405180910390fd5b565b604080518082019091525f80825260208201525f5b83518110156110da575f848281518110610f2a57610f2a611b39565b0160209081015160f81c5f8181526004909252604082205490925090819003610f6657604051637310cff560e11b815260040160405180910390fd5b60ff82165f908152600560209081526040918290208251808401909352805483526001015490820152610f999086611150565b60ff83165f818152600560209081526040808320855180825586840180516001938401559085525183528184209484526004909252822093975091929091610fe19085611d13565b81548110610ff157610ff1611b39565b5f918252602090912001805490915063ffffffff438116600160c01b909204160361102f5780546001600160c01b031916604083901c1781556110ca565b805463ffffffff438116600160e01b8181026001600160e01b0394851617855560ff88165f908152600460209081526040808320815160608101835267ffffffffffffffff198b16815280840196875280830185815282546001810184559286529390942093519301805495519251871690940291909516600160c01b026001600160e01b0319949094169190941c17919091179092161790555b505060019092019150610f0e9050565b50505050565b604080518082019091525f80825260208201526110fb6116ae565b835181526020808501519082015260408082018490525f908360608460076107d05a03fa9050808061112957fe5b508061114857604051632319df1960e11b815260040160405180910390fd5b505092915050565b604080518082019091525f808252602082015261116b6116cc565b835181526020808501518183015283516040808401919091529084015160608301525f908360808460066107d05a03fa905080806111a557fe5b50806111485760405163d4b68fd760e01b815260040160405180910390fd5b6111cc611689565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390525f916112b26116ea565b5f5b6002811015611469575f6112c9826006611c74565b90508482600281106112dd576112dd611b39565b602002015151836112ee835f611d3b565b600c81106112fe576112fe611b39565b602002015284826002811061131557611315611b39565b6020020151602001518382600161132c9190611d3b565b600c811061133c5761133c611b39565b602002015283826002811061135357611353611b39565b6020020151515183611366836002611d3b565b600c811061137657611376611b39565b602002015283826002811061138d5761138d611b39565b60200201515160016020020151836113a6836003611d3b565b600c81106113b6576113b6611b39565b60200201528382600281106113cd576113cd611b39565b6020020151602001515f600281106113e7576113e7611b39565b6020020151836113f8836004611d3b565b600c811061140857611408611b39565b602002015283826002811061141f5761141f611b39565b60200201516020015160016002811061143a5761143a611b39565b60200201518361144b836005611d3b565b600c811061145b5761145b611b39565b6020020152506001016112b4565b50611472611709565b5f6020826101808560086107d05a03fa9050808061148c57fe5b50806114ab576040516324ccc79360e21b815260040160405180910390fd5b5051151598975050505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611517573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153b9190611d4e565b6001600160a01b0316336001600160a01b031614610ef757604051637070f3b160e11b815260040160405180910390fd5b5f611576826106bf565b80515190915015801561158c5750805160200151155b801561159b5750602081015151155b80156115ac57506020818101510151155b6115c957604051630849e5cf60e41b815260040160405180910390fd5b5050565b604080518082019091525f808252602082015281511580156115f157506020820151155b1561160e575050604080518082019091525f808252602082015290565b6040518060400160405280835f015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4784602001516116529190611bc0565b61167c907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611d13565b905292915050565b919050565b604051806040016040528061169c611727565b81526020016116a9611727565b905290565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b0381168114611759575f5ffd5b50565b5f6020828403121561176c575f5ffd5b81356104eb81611745565b5f5f5f83850361016081121561178b575f5ffd5b843561179681611745565b9350610100601f19820112156117aa575f5ffd5b602085019250604061011f19820112156117c2575f5ffd5b50610120840190509250925092565b803560ff81168114611684575f5ffd5b5f602082840312156117f1575f5ffd5b6104eb826117d1565b634e487b7160e01b5f52604160045260245ffd5b6040805190810167ffffffffffffffff81118282101715611831576118316117fa565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715611860576118606117fa565b604052919050565b5f5f60408385031215611879575f5ffd5b823561188481611745565b9150602083013567ffffffffffffffff81111561189f575f5ffd5b8301601f810185136118af575f5ffd5b803567ffffffffffffffff8111156118c9576118c96117fa565b6118dc601f8201601f1916602001611837565b8181528660208385010111156118f0575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6020828403121561191f575f5ffd5b5035919050565b8151815260208083015190820152604081016106b9565b5f5f6040838503121561194e575f5ffd5b611957836117d1565b946020939093013593505050565b805f5b60028110156110da578151845260209384019390910190600101611968565b5f608082019050611999828451611965565b60208301516119ab6040840182611965565b5092915050565b5f5f5f606084860312156119c4575f5ffd5b6119cd846117d1565b9250602084013563ffffffff811681146119e5575f5ffd5b929592945050506040919091013590565b5f5f82840360a0811215611a08575f5ffd5b8335611a1381611745565b92506080601f1982011215611a26575f5ffd5b506020830190509250929050565b5f5f5f60408486031215611a46575f5ffd5b833567ffffffffffffffff811115611a5c575f5ffd5b8401601f81018613611a6c575f5ffd5b803567ffffffffffffffff811115611a82575f5ffd5b866020828401011115611a93575f5ffd5b6020918201979096509401359392505050565b602080825282518282018190525f918401906040840190835b81811015611ae357835163ffffffff16835260209384019390920191600101611abf565b509095945050505050565b60018060a01b0384168152826020820152606060408201525f82518060608401528060208501608085015e5f608082850101526080601f19601f830116840101915050949350505050565b634e487b7160e01b5f52603260045260245ffd5b5f6040828403128015611b5e575f5ffd5b50611b6761180e565b823581526020928301359281019290925250919050565b888152876020820152866040820152856060820152604085608083013760408460c0830137610100810192909252610120820152610140019695505050505050565b5f82611bda57634e487b7160e01b5f52601260045260245ffd5b500690565b5f82601f830112611bee575f5ffd5b611bf661180e565b806040840185811115611c07575f5ffd5b845b81811015611ae3578035845260209384019301611c09565b5f6080828403128015611c32575f5ffd5b50611c3b61180e565b611c458484611bdf565b8152611c548460408501611bdf565b60208201529392505050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176106b9576106b9611c60565b815f5b6002811015611cab57813583820155602090910190600101611c8e565b5050604082015f5b60028110156110da57813583820160020155602090910190600101611cb3565b6040818337604080820160408401375050565b823581526020808401359082015260c081016104eb6040830184611cd3565b608081016106b98284611cd3565b818103818111156106b9576106b9611c60565b5f81611d3457611d34611c60565b505f190190565b808201808211156106b9576106b9611c60565b5f60208284031215611d5e575f5ffd5b81516104eb8161174556fea26469706673582212208ee2ee102a7a463365cca52a0c343be3c955570cf85e1c99c4e1aaa821700f0c64736f6c634300081b0033
/// ```
#[rustfmt::skip]
#[allow(clippy::all)]
pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\x011W_5`\xE0\x1C\x80ch\xBC\xCA\xAC\x11a\0\xB4W\x80c\xBFy\xCEX\x11a\0yW\x80c\xBFy\xCEX\x14a\x04\x13W\x80c\xD1\xA6FP\x14a\x04&W\x80c\xD5%J\x8C\x14a\x049W\x80c\xDE)\xFA\xC0\x14a\x04YW\x80c\xE8\xBB\x9A\xE6\x14a\x04xW\x80c\xF4\xE2O\xE5\x14a\x04\xA0W__\xFD[\x80ch\xBC\xCA\xAC\x14a\x03%W\x80cm\x14\xA9\x87\x14a\x03RW\x80cy\x16\xCE\xA6\x14a\x03yW\x80c\x7F\xF8\x1A\x87\x14a\x03\xBAW\x80c\xA3\xDB\x80\xE2\x14a\x03\xEDW__\xFD[\x80c?\xB2yR\x11a\0\xFAW\x80c?\xB2yR\x14a\x02\nW\x80cG\xB3\x14\xE8\x14a\x02\x1DW\x80c_a\xA8\x84\x14a\x02]W\x80c`WG\xD5\x14a\x02\xB7W\x80cg\x16\x99\x11\x14a\x03\x05W__\xFD[\x80b\xA1\xF4\xCB\x14a\x015W\x80c\x03\xC5\xA6\xB6\x14a\x01uW\x80c\x13T*N\x14a\x01\x96W\x80c&\xD9A\xF2\x14a\x01\xBEW\x80c7~\xD9\x9D\x14a\x01\xD3W[__\xFD[a\x01[a\x01C6`\x04a\x17\\V[`\x03` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[`@\x80Q\x92\x83R` \x83\x01\x91\x90\x91R\x01[`@Q\x80\x91\x03\x90\xF3[a\x01\x88a\x01\x836`\x04a\x17wV[a\x04\xB3V[`@Q\x90\x81R` \x01a\x01lV[a\x01\x88a\x01\xA46`\x04a\x17\\V[`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[a\x01\xD1a\x01\xCC6`\x04a\x17\xE1V[a\x04\xF2V[\0[a\x01\xF5a\x01\xE16`\x04a\x17\xE1V[`\xFF\x16_\x90\x81R`\x04` R`@\x90 T\x90V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01lV[a\x01\xD1a\x02\x186`\x04a\x18hV[a\x05\xB2V[a\x02Ea\x02+6`\x04a\x19\x0FV[_\x90\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01lV[a\x02\xAAa\x02k6`\x04a\x17\xE1V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01RP`\xFF\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01R\x90V[`@Qa\x01l\x91\x90a\x19&V[a\x02\xCAa\x02\xC56`\x04a\x19=V[a\x06.V[`@\x80Q\x82Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16\x81R` \x80\x84\x01Qc\xFF\xFF\xFF\xFF\x90\x81\x16\x91\x83\x01\x91\x90\x91R\x92\x82\x01Q\x90\x92\x16\x90\x82\x01R``\x01a\x01lV[a\x03\x18a\x03\x136`\x04a\x17\\V[a\x06\xBFV[`@Qa\x01l\x91\x90a\x19\x87V[a\x038a\x0336`\x04a\x19\xB2V[a\x07SV[`@Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x91\x16\x81R` \x01a\x01lV[a\x02E\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81V[a\x03\x8Ca\x03\x876`\x04a\x19=V[a\x086V[`@\x80Qg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x90\x94\x16\x84Rc\xFF\xFF\xFF\xFF\x92\x83\x16` \x85\x01R\x91\x16\x90\x82\x01R``\x01a\x01lV[a\x03\xCDa\x03\xC86`\x04a\x17\\V[a\x08}V[`@\x80Q\x83Q\x81R` \x93\x84\x01Q\x93\x81\x01\x93\x90\x93R\x82\x01R``\x01a\x01lV[a\x01[a\x03\xFB6`\x04a\x17\xE1V[`\x05` R_\x90\x81R`@\x90 \x80T`\x01\x90\x91\x01T\x82V[a\x01\x88a\x04!6`\x04a\x17wV[a\x08\xF3V[a\x01\xD1a\x0446`\x04a\x19\xF6V[a\x0B\xC8V[a\x04La\x04G6`\x04a\x1A4V[a\x0C\xAFV[`@Qa\x01l\x91\x90a\x1A\xA6V[a\x01\x88a\x04g6`\x04a\x17\\V[`\x01` R_\x90\x81R`@\x90 T\x81V[a\x02Ea\x04\x866`\x04a\x19\x0FV[`\x02` R_\x90\x81R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x81V[a\x01\xD1a\x04\xAE6`\x04a\x18hV[a\x0EGV[_a\x04\xBCa\x0E\xAEV[P`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x01` R`@\x81 T\x90\x81\x90\x03a\x04\xEBWa\x04\xE8\x84\x84\x84a\x08\xF3V[\x90P[\x93\x92PPPV[a\x04\xFAa\x0E\xAEV[`\xFF\x81\x16_\x90\x81R`\x04` R`@\x90 T\x15a\x05*W`@Qc\x10\xCD\xA5\x17`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83R\x84\x81Rc\xFF\xFF\xFF\xFFC\x81\x16\x82\x86\x01\x90\x81R\x82\x85\x01\x87\x81R\x84T`\x01\x81\x01\x86U\x94\x88R\x95\x90\x96 \x91Q\x91\x90\x92\x01\x80T\x95Q\x94Q\x83\x16`\x01`\xE0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x95\x90\x93\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x90\x96\x16\x91\x90\x93\x1C\x17\x93\x90\x93\x17\x91\x90\x91\x16\x91\x90\x91\x17\x90UV[a\x05\xBAa\x0E\xAEV[_a\x05\xC4\x83a\x08}V[P\x90Pa\x05\xD1\x82\x82a\x0E\xF9V[\x7Fs\xA2\xB7\xFB\x84G$\xB9q\x80*\xE9\xB1]\xB0\x94\xD4\xB7\x19-\xF9\xD75\x0E\x14\xEBFk\x9B\"\xEBN\x83a\x06\x11\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[\x84`@Qa\x06!\x93\x92\x91\x90a\x1A\xEEV[`@Q\x80\x91\x03\x90\xA1PPPV[`@\x80Q``\x81\x01\x82R_\x80\x82R` \x80\x83\x01\x82\x90R\x82\x84\x01\x82\x90R`\xFF\x86\x16\x82R`\x04\x90R\x91\x90\x91 \x80T\x83\x90\x81\x10a\x06jWa\x06ja\x1B9V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x94\x90\x94R`\x01`\xE0\x1B\x90\x04\x90\x92\x16\x90\x82\x01R\x90P[\x92\x91PPV[a\x06\xC7a\x16\x89V[`\x01`\x01`\xA0\x1B\x03\x82\x16_\x90\x81R`\x06` R`@\x90\x81\x90 \x81Q`\x80\x81\x01\x83R\x91\x82\x90\x81\x01\x82`\x02\x82\x82\x82` \x02\x82\x01\x91[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x06\xFAWPPP\x91\x83RPP`@\x80Q\x80\x82\x01\x91\x82\x90R` \x90\x92\x01\x91\x90`\x02\x84\x81\x01\x91\x82\x84[\x81T\x81R` \x01\x90`\x01\x01\x90\x80\x83\x11a\x070WPPPPP\x81RPP\x90P\x91\x90PV[`\xFF\x83\x16_\x90\x81R`\x04` R`@\x81 \x80T\x82\x91\x90\x84\x90\x81\x10a\x07yWa\x07ya\x1B9V[_\x91\x82R` \x91\x82\x90 `@\x80Q``\x81\x01\x82R\x91\x90\x92\x01Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x81\x84\x1B\x16\x82Rc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x94\x83\x01\x85\x90R`\x01`\xE0\x1B\x90\x91\x04\x81\x16\x92\x82\x01\x92\x90\x92R\x92P\x85\x16\x10\x15a\x07\xEAW`@Qc=\"\x88A`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x81\x01Qc\xFF\xFF\xFF\xFF\x16\x15\x80a\x08\x10WP\x80`@\x01Qc\xFF\xFF\xFF\xFF\x16\x84c\xFF\xFF\xFF\xFF\x16\x10[a\x08-W`@Qco\xE0-K`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[Q\x94\x93PPPPV[`\x04` R\x81_R`@_ \x81\x81T\x81\x10a\x08OW_\x80\xFD[_\x91\x82R` \x90\x91 \x01T`@\x81\x90\x1B\x92Pc\xFF\xFF\xFF\xFF`\x01`\xC0\x1B\x82\x04\x81\x16\x92P`\x01`\xE0\x1B\x90\x91\x04\x16\x83V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R`\x01`\x01`\xA0\x1B\x03\x82\x16_\x81\x81R`\x03` \x90\x81R`@\x80\x83 \x81Q\x80\x83\x01\x83R\x81T\x81R`\x01\x91\x82\x01T\x81\x85\x01R\x94\x84R\x90\x91R\x81 T\x90\x91\x90\x80a\x08\xE9W`@Qc%\xECl\x1F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x90\x94\x90\x93P\x91PPV[_a\x08\xFCa\x0E\xAEV[_a\t(a\t\x126\x86\x90\x03\x86\x01`@\x87\x01a\x1BMV[\x80Q_\x90\x81R` \x91\x82\x01Q\x90\x91R`@\x90 \x90V[\x90P\x7F\xAD2(\xB6v\xF7\xD3\xCDB\x84\xA5D?\x17\xF1\x96+6\xE4\x91\xB3\n@\xB2@XI\xE5\x97\xBA_\xB5\x81\x03a\tjW`@Qc\x0C\xC7P\x91`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x85\x16_\x90\x81R`\x01` R`@\x81 T\x14a\t\xA0W`@QcB\xEEh\xB5`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x81\x81R`\x02` R`@\x90 T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xD5W`@QcL3L\x97`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@\x80Q_\x91\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x91a\n-\x91\x885\x91` \x80\x8B\x015\x92\x8B\x015\x91``\x8C\x015\x91`\x80\x8D\x01\x91`\xC0\x8E\x01\x91\x8D5\x91\x8E\x82\x015\x91\x01a\x1B~V[`@Q` \x81\x83\x03\x03\x81R\x90`@R\x80Q\x90` \x01 _\x1Ca\nO\x91\x90a\x1B\xC0V[\x90Pa\n\xE8a\n\x88a\ns\x83a\nm6\x8A\x90\x03\x8A\x01`@\x8B\x01a\x1BMV[\x90a\x10\xE0V[a\n\x826\x89\x90\x03\x89\x01\x89a\x1BMV[\x90a\x11PV[a\n\x90a\x11\xC4V[a\n\xD1a\n\xC2\x85a\nm`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01R\x90V[a\n\x826\x8A\x90\x03\x8A\x01\x8Aa\x1BMV[a\n\xE36\x8A\x90\x03\x8A\x01`\x80\x8B\x01a\x1C!V[a\x12\x84V[a\x0B\x05W`@Qc\xA7-\x02c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x86\x16_\x90\x81R`\x03` \x90\x81R`@\x80\x83 \x88\x82\x015\x81U``\x89\x015`\x01\x90\x91\x01U`\x06\x90\x91R\x90 `\x80\x86\x01\x90a\x0BF\x82\x82a\x1C\x8BV[PP`\x01`\x01`\xA0\x1B\x03\x86\x16_\x81\x81R`\x01` \x90\x81R`@\x80\x83 \x86\x90U\x85\x83R`\x02\x90\x91R\x90\x81\x90 \x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x83\x17\x90U\x80Q\x7F\xE3\xFBf\x13\xAF.\x890\xCF\x85\xD4\x7F\xCFm\xB1\x01\x92\"Jd\xC6\xCB\xE8\x02>\x0E\xEE\x1B\xA3\x82\x80A\x91a\x0B\xB7\x91\x90\x89\x01\x90`\x80\x8A\x01\x90a\x1C\xE6V[`@Q\x80\x91\x03\x90\xA2P\x94\x93PPPPV[a\x0B\xD0a\x14\xBBV[_a\x0B\xDA\x83a\x08}V[P\x90Pa\x0B\xE6\x83a\x15lV[a\x0C&\x81a\x0B\xF2a\x11\xC4V[`@\x80Q\x80\x82\x01\x82R_\x80\x82R` \x91\x82\x01R\x81Q\x80\x83\x01\x90\x92R`\x01\x82R`\x02\x90\x82\x01Ra\n\xE36\x87\x90\x03\x87\x01\x87a\x1C!V[a\x0CCW`@Qc\xA7-\x02c`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x01`\x01`\xA0\x1B\x03\x83\x16_\x90\x81R`\x06` R`@\x90 \x82\x90a\x0Cf\x82\x82a\x1C\x8BV[\x90PP\x82`\x01`\x01`\xA0\x1B\x03\x16\x7F\\O\x9F(\x15=\xBF?\0\xE6\x96\x07\xA5\x9E\x82\xAD\x80o\xFF\xB7\x8D\t\xF1y\xF6$2\xF7\xE9\xD2Q\x1A\x83`@Qa\x0C\xA2\x91\x90a\x1D\x05V[`@Q\x80\x91\x03\x90\xA2PPPV[``_\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x0C\xCBWa\x0C\xCBa\x17\xFAV[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0C\xF4W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x90P_[\x84\x81\x10\x15a\x0E>W_\x86\x86\x83\x81\x81\x10a\r\x14Wa\r\x14a\x1B9V[\x91\x90\x91\x015`\xF8\x1C_\x81\x81R`\x04` R`@\x90 T\x90\x92P\x90P\x80\x15\x80a\rtWP`\xFF\x82\x16_\x90\x81R`\x04` R`@\x81 \x80T\x90\x91\x90a\rYWa\rYa\x1B9V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x86\x10[\x15a\r\x92W`@Qc?L\xB7\x0F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80[\x80\x15a\x0E3W`\xFF\x83\x16_\x90\x81R`\x04` R`@\x90 \x87\x90a\r\xB8`\x01\x84a\x1D\x13V[\x81T\x81\x10a\r\xC8Wa\r\xC8a\x1B9V[_\x91\x82R` \x90\x91 \x01T`\x01`\xC0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x11a\x0E!Wa\r\xF0`\x01\x82a\x1D\x13V[\x85\x85\x81Q\x81\x10a\x0E\x02Wa\x0E\x02a\x1B9V[` \x02` \x01\x01\x90c\xFF\xFF\xFF\xFF\x16\x90\x81c\xFF\xFF\xFF\xFF\x16\x81RPPa\x0E3V[\x80a\x0E+\x81a\x1D&V[\x91PPa\r\x94V[PPP`\x01\x01a\x0C\xF9V[P\x94\x93PPPPV[a\x0EOa\x0E\xAEV[_a\x0EY\x83a\x08}V[P\x90Pa\x0En\x82a\x0Ei\x83a\x15\xCDV[a\x0E\xF9V[\x7F\xF8C\xEC\xD5:V6u\xE6!\x07\xBE\x14\x94\xFD\xDEJ=I\xAE\xED\xAF\x8D\x88\xC6\x16\xD8SF\xE3P\x0E\x83a\x06\x11\x85`\x01`\x01`\xA0\x1B\x03\x16_\x90\x81R`\x01` R`@\x90 T\x90V[3`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\x0E\xF7W`@QcC\x94\xDB\xDF`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R_[\x83Q\x81\x10\x15a\x10\xDAW_\x84\x82\x81Q\x81\x10a\x0F*Wa\x0F*a\x1B9V[\x01` \x90\x81\x01Q`\xF8\x1C_\x81\x81R`\x04\x90\x92R`@\x82 T\x90\x92P\x90\x81\x90\x03a\x0FfW`@Qcs\x10\xCF\xF5`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\xFF\x82\x16_\x90\x81R`\x05` \x90\x81R`@\x91\x82\x90 \x82Q\x80\x84\x01\x90\x93R\x80T\x83R`\x01\x01T\x90\x82\x01Ra\x0F\x99\x90\x86a\x11PV[`\xFF\x83\x16_\x81\x81R`\x05` \x90\x81R`@\x80\x83 \x85Q\x80\x82U\x86\x84\x01\x80Q`\x01\x93\x84\x01U\x90\x85RQ\x83R\x81\x84 \x94\x84R`\x04\x90\x92R\x82 \x93\x97P\x91\x92\x90\x91a\x0F\xE1\x90\x85a\x1D\x13V[\x81T\x81\x10a\x0F\xF1Wa\x0F\xF1a\x1B9V[_\x91\x82R` \x90\x91 \x01\x80T\x90\x91Pc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xC0\x1B\x90\x92\x04\x16\x03a\x10/W\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16`@\x83\x90\x1C\x17\x81Ua\x10\xCAV[\x80Tc\xFF\xFF\xFF\xFFC\x81\x16`\x01`\xE0\x1B\x81\x81\x02`\x01`\x01`\xE0\x1B\x03\x94\x85\x16\x17\x85U`\xFF\x88\x16_\x90\x81R`\x04` \x90\x81R`@\x80\x83 \x81Q``\x81\x01\x83Rg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x8B\x16\x81R\x80\x84\x01\x96\x87R\x80\x83\x01\x85\x81R\x82T`\x01\x81\x01\x84U\x92\x86R\x93\x90\x94 \x93Q\x93\x01\x80T\x95Q\x92Q\x87\x16\x90\x94\x02\x91\x90\x95\x16`\x01`\xC0\x1B\x02`\x01`\x01`\xE0\x1B\x03\x19\x94\x90\x94\x16\x91\x90\x94\x1C\x17\x91\x90\x91\x17\x90\x92\x16\x17\x90U[PP`\x01\x90\x92\x01\x91Pa\x0F\x0E\x90PV[PPPPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x10\xFBa\x16\xAEV[\x83Q\x81R` \x80\x85\x01Q\x90\x82\x01R`@\x80\x82\x01\x84\x90R_\x90\x83``\x84`\x07a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x11)W\xFE[P\x80a\x11HW`@Qc#\x19\xDF\x19`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PP\x92\x91PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01Ra\x11ka\x16\xCCV[\x83Q\x81R` \x80\x85\x01Q\x81\x83\x01R\x83Q`@\x80\x84\x01\x91\x90\x91R\x90\x84\x01Q``\x83\x01R_\x90\x83`\x80\x84`\x06a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x11\xA5W\xFE[P\x80a\x11HW`@Qc\xD4\xB6\x8F\xD7`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x11\xCCa\x16\x89V[P`@\x80Q`\x80\x81\x01\x82R\x7F\x19\x8E\x93\x93\x92\rH:r`\xBF\xB71\xFB]%\xF1\xAAI35\xA9\xE7\x12\x97\xE4\x85\xB7\xAE\xF3\x12\xC2\x81\x83\x01\x90\x81R\x7F\x18\0\xDE\xEF\x12\x1F\x1EvBj\0f^\\DygC\"\xD4\xF7^\xDA\xDDF\xDE\xBD\\\xD9\x92\xF6\xED``\x83\x01R\x81R\x81Q\x80\x83\x01\x90\x92R\x7F']\xC4\xA2\x88\xD1\xAF\xB3\xCB\xB1\xAC\t\x18u$\xC7\xDB69]\xF7\xBE;\x99\xE6s\xB1:\x07Ze\xEC\x82R\x7F\x1D\x9B\xEF\xCD\x05\xA52>m\xA4\xD45\xF3\xB6\x17\xCD\xB3\xAF\x83(\\-\xF7\x11\xEF9\xC0\x15q\x82\x7F\x9D` \x83\x81\x01\x91\x90\x91R\x81\x01\x91\x90\x91R\x90V[`@\x80Q\x80\x82\x01\x82R\x85\x81R` \x80\x82\x01\x85\x90R\x82Q\x80\x84\x01\x90\x93R\x85\x83R\x82\x01\x83\x90R_\x91a\x12\xB2a\x16\xEAV[_[`\x02\x81\x10\x15a\x14iW_a\x12\xC9\x82`\x06a\x1CtV[\x90P\x84\x82`\x02\x81\x10a\x12\xDDWa\x12\xDDa\x1B9V[` \x02\x01QQ\x83a\x12\xEE\x83_a\x1D;V[`\x0C\x81\x10a\x12\xFEWa\x12\xFEa\x1B9V[` \x02\x01R\x84\x82`\x02\x81\x10a\x13\x15Wa\x13\x15a\x1B9V[` \x02\x01Q` \x01Q\x83\x82`\x01a\x13,\x91\x90a\x1D;V[`\x0C\x81\x10a\x13<Wa\x13<a\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x13SWa\x13Sa\x1B9V[` \x02\x01QQQ\x83a\x13f\x83`\x02a\x1D;V[`\x0C\x81\x10a\x13vWa\x13va\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x13\x8DWa\x13\x8Da\x1B9V[` \x02\x01QQ`\x01` \x02\x01Q\x83a\x13\xA6\x83`\x03a\x1D;V[`\x0C\x81\x10a\x13\xB6Wa\x13\xB6a\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x13\xCDWa\x13\xCDa\x1B9V[` \x02\x01Q` \x01Q_`\x02\x81\x10a\x13\xE7Wa\x13\xE7a\x1B9V[` \x02\x01Q\x83a\x13\xF8\x83`\x04a\x1D;V[`\x0C\x81\x10a\x14\x08Wa\x14\x08a\x1B9V[` \x02\x01R\x83\x82`\x02\x81\x10a\x14\x1FWa\x14\x1Fa\x1B9V[` \x02\x01Q` \x01Q`\x01`\x02\x81\x10a\x14:Wa\x14:a\x1B9V[` \x02\x01Q\x83a\x14K\x83`\x05a\x1D;V[`\x0C\x81\x10a\x14[Wa\x14[a\x1B9V[` \x02\x01RP`\x01\x01a\x12\xB4V[Pa\x14ra\x17\tV[_` \x82a\x01\x80\x85`\x08a\x07\xD0Z\x03\xFA\x90P\x80\x80a\x14\x8CW\xFE[P\x80a\x14\xABW`@Qc$\xCC\xC7\x93`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PQ\x15\x15\x98\x97PPPPPPPPV[\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16c\x8D\xA5\xCB[`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x15\x17W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15;\x91\x90a\x1DNV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x0E\xF7W`@Qcpp\xF3\xB1`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x15v\x82a\x06\xBFV[\x80QQ\x90\x91P\x15\x80\x15a\x15\x8CWP\x80Q` \x01Q\x15[\x80\x15a\x15\x9BWP` \x81\x01QQ\x15[\x80\x15a\x15\xACWP` \x81\x81\x01Q\x01Q\x15[a\x15\xC9W`@Qc\x08I\xE5\xCF`\xE4\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPV[`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x81Q\x15\x80\x15a\x15\xF1WP` \x82\x01Q\x15[\x15a\x16\x0EWPP`@\x80Q\x80\x82\x01\x90\x91R_\x80\x82R` \x82\x01R\x90V[`@Q\x80`@\x01`@R\x80\x83_\x01Q\x81R` \x01\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDG\x84` \x01Qa\x16R\x91\x90a\x1B\xC0V[a\x16|\x90\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X]\x97\x81j\x91hq\xCA\x8D< \x8C\x16\xD8|\xFDGa\x1D\x13V[\x90R\x92\x91PPV[\x91\x90PV[`@Q\x80`@\x01`@R\x80a\x16\x9Ca\x17'V[\x81R` \x01a\x16\xA9a\x17'V[\x90R\x90V[`@Q\x80``\x01`@R\x80`\x03\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`\x80\x01`@R\x80`\x04\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80a\x01\x80\x01`@R\x80`\x0C\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80` \x01`@R\x80`\x01\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`@Q\x80`@\x01`@R\x80`\x02\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x17YW__\xFD[PV[_` \x82\x84\x03\x12\x15a\x17lW__\xFD[\x815a\x04\xEB\x81a\x17EV[___\x83\x85\x03a\x01`\x81\x12\x15a\x17\x8BW__\xFD[\x845a\x17\x96\x81a\x17EV[\x93Pa\x01\0`\x1F\x19\x82\x01\x12\x15a\x17\xAAW__\xFD[` \x85\x01\x92P`@a\x01\x1F\x19\x82\x01\x12\x15a\x17\xC2W__\xFD[Pa\x01 \x84\x01\x90P\x92P\x92P\x92V[\x805`\xFF\x81\x16\x81\x14a\x16\x84W__\xFD[_` \x82\x84\x03\x12\x15a\x17\xF1W__\xFD[a\x04\xEB\x82a\x17\xD1V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@\x80Q\x90\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x181Wa\x181a\x17\xFAV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x82\x82\x10\x17\x15a\x18`Wa\x18`a\x17\xFAV[`@R\x91\x90PV[__`@\x83\x85\x03\x12\x15a\x18yW__\xFD[\x825a\x18\x84\x81a\x17EV[\x91P` \x83\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\x9FW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a\x18\xAFW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x18\xC9Wa\x18\xC9a\x17\xFAV[a\x18\xDC`\x1F\x82\x01`\x1F\x19\x16` \x01a\x187V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a\x18\xF0W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_` \x82\x84\x03\x12\x15a\x19\x1FW__\xFD[P5\x91\x90PV[\x81Q\x81R` \x80\x83\x01Q\x90\x82\x01R`@\x81\x01a\x06\xB9V[__`@\x83\x85\x03\x12\x15a\x19NW__\xFD[a\x19W\x83a\x17\xD1V[\x94` \x93\x90\x93\x015\x93PPPV[\x80_[`\x02\x81\x10\x15a\x10\xDAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a\x19hV[_`\x80\x82\x01\x90Pa\x19\x99\x82\x84Qa\x19eV[` \x83\x01Qa\x19\xAB`@\x84\x01\x82a\x19eV[P\x92\x91PPV[___``\x84\x86\x03\x12\x15a\x19\xC4W__\xFD[a\x19\xCD\x84a\x17\xD1V[\x92P` \x84\x015c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x19\xE5W__\xFD[\x92\x95\x92\x94PPP`@\x91\x90\x91\x015\x90V[__\x82\x84\x03`\xA0\x81\x12\x15a\x1A\x08W__\xFD[\x835a\x1A\x13\x81a\x17EV[\x92P`\x80`\x1F\x19\x82\x01\x12\x15a\x1A&W__\xFD[P` \x83\x01\x90P\x92P\x92\x90PV[___`@\x84\x86\x03\x12\x15a\x1AFW__\xFD[\x835g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\\W__\xFD[\x84\x01`\x1F\x81\x01\x86\x13a\x1AlW__\xFD[\x805g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x1A\x82W__\xFD[\x86` \x82\x84\x01\x01\x11\x15a\x1A\x93W__\xFD[` \x91\x82\x01\x97\x90\x96P\x94\x015\x93\x92PPPV[` \x80\x82R\x82Q\x82\x82\x01\x81\x90R_\x91\x84\x01\x90`@\x84\x01\x90\x83[\x81\x81\x10\x15a\x1A\xE3W\x83Qc\xFF\xFF\xFF\xFF\x16\x83R` \x93\x84\x01\x93\x90\x92\x01\x91`\x01\x01a\x1A\xBFV[P\x90\x95\x94PPPPPV[`\x01\x80`\xA0\x1B\x03\x84\x16\x81R\x82` \x82\x01R```@\x82\x01R_\x82Q\x80``\x84\x01R\x80` \x85\x01`\x80\x85\x01^_`\x80\x82\x85\x01\x01R`\x80`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x94\x93PPPPV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`@\x82\x84\x03\x12\x80\x15a\x1B^W__\xFD[Pa\x1Bga\x18\x0EV[\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[\x88\x81R\x87` \x82\x01R\x86`@\x82\x01R\x85``\x82\x01R`@\x85`\x80\x83\x017`@\x84`\xC0\x83\x017a\x01\0\x81\x01\x92\x90\x92Ra\x01 \x82\x01Ra\x01@\x01\x96\x95PPPPPPV[_\x82a\x1B\xDAWcNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[P\x06\x90V[_\x82`\x1F\x83\x01\x12a\x1B\xEEW__\xFD[a\x1B\xF6a\x18\x0EV[\x80`@\x84\x01\x85\x81\x11\x15a\x1C\x07W__\xFD[\x84[\x81\x81\x10\x15a\x1A\xE3W\x805\x84R` \x93\x84\x01\x93\x01a\x1C\tV[_`\x80\x82\x84\x03\x12\x80\x15a\x1C2W__\xFD[Pa\x1C;a\x18\x0EV[a\x1CE\x84\x84a\x1B\xDFV[\x81Ra\x1CT\x84`@\x85\x01a\x1B\xDFV[` \x82\x01R\x93\x92PPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x06\xB9Wa\x06\xB9a\x1C`V[\x81_[`\x02\x81\x10\x15a\x1C\xABW\x815\x83\x82\x01U` \x90\x91\x01\x90`\x01\x01a\x1C\x8EV[PP`@\x82\x01_[`\x02\x81\x10\x15a\x10\xDAW\x815\x83\x82\x01`\x02\x01U` \x90\x91\x01\x90`\x01\x01a\x1C\xB3V[`@\x81\x837`@\x80\x82\x01`@\x84\x017PPV[\x825\x81R` \x80\x84\x015\x90\x82\x01R`\xC0\x81\x01a\x04\xEB`@\x83\x01\x84a\x1C\xD3V[`\x80\x81\x01a\x06\xB9\x82\x84a\x1C\xD3V[\x81\x81\x03\x81\x81\x11\x15a\x06\xB9Wa\x06\xB9a\x1C`V[_\x81a\x1D4Wa\x1D4a\x1C`V[P_\x19\x01\x90V[\x80\x82\x01\x80\x82\x11\x15a\x06\xB9Wa\x06\xB9a\x1C`V[_` \x82\x84\x03\x12\x15a\x1D^W__\xFD[\x81Qa\x04\xEB\x81a\x17EV\xFE\xA2dipfsX\"\x12 \x8E\xE2\xEE\x10*zF3e\xCC\xA5*\x0C4;\xE3\xC9UW\x0C\xF8^\x1C\x99\xC4\xE1\xAA\xA8!p\x0F\x0CdsolcC\0\x08\x1B\x003",
);
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `BLSPubkeyAlreadyRegistered()` and selector `0x9866992e`.
```solidity
error BLSPubkeyAlreadyRegistered();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct BLSPubkeyAlreadyRegistered;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<BLSPubkeyAlreadyRegistered> for UnderlyingRustTuple<'_> {
fn from(value: BLSPubkeyAlreadyRegistered) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for BLSPubkeyAlreadyRegistered {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for BLSPubkeyAlreadyRegistered {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "BLSPubkeyAlreadyRegistered()";
const SELECTOR: [u8; 4] = [152u8, 102u8, 153u8, 46u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `BlockNumberBeforeFirstUpdate()` and selector `0x3f4cb70f`.
```solidity
error BlockNumberBeforeFirstUpdate();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct BlockNumberBeforeFirstUpdate;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<BlockNumberBeforeFirstUpdate> for UnderlyingRustTuple<'_> {
fn from(value: BlockNumberBeforeFirstUpdate) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlockNumberBeforeFirstUpdate {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for BlockNumberBeforeFirstUpdate {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "BlockNumberBeforeFirstUpdate()";
const SELECTOR: [u8; 4] = [63u8, 76u8, 183u8, 15u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `BlockNumberNotLatest()` and selector `0x6fe02d4b`.
```solidity
error BlockNumberNotLatest();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct BlockNumberNotLatest;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<BlockNumberNotLatest> for UnderlyingRustTuple<'_> {
fn from(value: BlockNumberNotLatest) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlockNumberNotLatest {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for BlockNumberNotLatest {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "BlockNumberNotLatest()";
const SELECTOR: [u8; 4] = [111u8, 224u8, 45u8, 75u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `BlockNumberTooRecent()` and selector `0x3d228841`.
```solidity
error BlockNumberTooRecent();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct BlockNumberTooRecent;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<BlockNumberTooRecent> for UnderlyingRustTuple<'_> {
fn from(value: BlockNumberTooRecent) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for BlockNumberTooRecent {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for BlockNumberTooRecent {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "BlockNumberTooRecent()";
const SELECTOR: [u8; 4] = [61u8, 34u8, 136u8, 65u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ECAddFailed()` and selector `0xd4b68fd7`.
```solidity
error ECAddFailed();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ECAddFailed;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ECAddFailed> for UnderlyingRustTuple<'_> {
fn from(value: ECAddFailed) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECAddFailed {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ECAddFailed {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ECAddFailed()";
const SELECTOR: [u8; 4] = [212u8, 182u8, 143u8, 215u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ECMulFailed()` and selector `0x4633be32`.
```solidity
error ECMulFailed();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ECMulFailed;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ECMulFailed> for UnderlyingRustTuple<'_> {
fn from(value: ECMulFailed) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECMulFailed {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ECMulFailed {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ECMulFailed()";
const SELECTOR: [u8; 4] = [70u8, 51u8, 190u8, 50u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ECPairingFailed()` and selector `0x93331e4c`.
```solidity
error ECPairingFailed();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ECPairingFailed;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ECPairingFailed> for UnderlyingRustTuple<'_> {
fn from(value: ECPairingFailed) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ECPairingFailed {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ECPairingFailed {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ECPairingFailed()";
const SELECTOR: [u8; 4] = [147u8, 51u8, 30u8, 76u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `G2PubkeyAlreadySet()` and selector `0x849e5cf0`.
```solidity
error G2PubkeyAlreadySet();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct G2PubkeyAlreadySet;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<G2PubkeyAlreadySet> for UnderlyingRustTuple<'_> {
fn from(value: G2PubkeyAlreadySet) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for G2PubkeyAlreadySet {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for G2PubkeyAlreadySet {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "G2PubkeyAlreadySet()";
const SELECTOR: [u8; 4] = [132u8, 158u8, 92u8, 240u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `InvalidBLSSignatureOrPrivateKey()` and selector `0xa72d0263`.
```solidity
error InvalidBLSSignatureOrPrivateKey();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct InvalidBLSSignatureOrPrivateKey;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<InvalidBLSSignatureOrPrivateKey> for UnderlyingRustTuple<'_> {
fn from(value: InvalidBLSSignatureOrPrivateKey) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidBLSSignatureOrPrivateKey {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for InvalidBLSSignatureOrPrivateKey {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "InvalidBLSSignatureOrPrivateKey()";
const SELECTOR: [u8; 4] = [167u8, 45u8, 2u8, 99u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `OnlyRegistryCoordinator()` and selector `0x8729b7be`.
```solidity
error OnlyRegistryCoordinator();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OnlyRegistryCoordinator;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OnlyRegistryCoordinator> for UnderlyingRustTuple<'_> {
fn from(value: OnlyRegistryCoordinator) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyRegistryCoordinator {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for OnlyRegistryCoordinator {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "OnlyRegistryCoordinator()";
const SELECTOR: [u8; 4] = [135u8, 41u8, 183u8, 190u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `OnlyRegistryCoordinatorOwner()` and selector `0xe0e1e762`.
```solidity
error OnlyRegistryCoordinatorOwner();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OnlyRegistryCoordinatorOwner;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OnlyRegistryCoordinatorOwner> for UnderlyingRustTuple<'_> {
fn from(value: OnlyRegistryCoordinatorOwner) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OnlyRegistryCoordinatorOwner {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for OnlyRegistryCoordinatorOwner {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "OnlyRegistryCoordinatorOwner()";
const SELECTOR: [u8; 4] = [224u8, 225u8, 231u8, 98u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `OperatorAlreadyRegistered()` and selector `0x42ee68b5`.
```solidity
error OperatorAlreadyRegistered();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OperatorAlreadyRegistered;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OperatorAlreadyRegistered> for UnderlyingRustTuple<'_> {
fn from(value: OperatorAlreadyRegistered) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorAlreadyRegistered {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for OperatorAlreadyRegistered {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "OperatorAlreadyRegistered()";
const SELECTOR: [u8; 4] = [66u8, 238u8, 104u8, 181u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `OperatorNotRegistered()` and selector `0x25ec6c1f`.
```solidity
error OperatorNotRegistered();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct OperatorNotRegistered;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<OperatorNotRegistered> for UnderlyingRustTuple<'_> {
fn from(value: OperatorNotRegistered) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for OperatorNotRegistered {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for OperatorNotRegistered {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "OperatorNotRegistered()";
const SELECTOR: [u8; 4] = [37u8, 236u8, 108u8, 31u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `QuorumAlreadyExists()` and selector `0x4336945c`.
```solidity
error QuorumAlreadyExists();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct QuorumAlreadyExists;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<QuorumAlreadyExists> for UnderlyingRustTuple<'_> {
fn from(value: QuorumAlreadyExists) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumAlreadyExists {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for QuorumAlreadyExists {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "QuorumAlreadyExists()";
const SELECTOR: [u8; 4] = [67u8, 54u8, 148u8, 92u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `QuorumDoesNotExist()` and selector `0xe6219fea`.
```solidity
error QuorumDoesNotExist();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct QuorumDoesNotExist;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<QuorumDoesNotExist> for UnderlyingRustTuple<'_> {
fn from(value: QuorumDoesNotExist) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for QuorumDoesNotExist {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for QuorumDoesNotExist {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "QuorumDoesNotExist()";
const SELECTOR: [u8; 4] = [230u8, 33u8, 159u8, 234u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Custom error with signature `ZeroPubKey()` and selector `0x0cc75091`.
```solidity
error ZeroPubKey();
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct ZeroPubKey;
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<ZeroPubKey> for UnderlyingRustTuple<'_> {
fn from(value: ZeroPubKey) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for ZeroPubKey {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
#[automatically_derived]
impl alloy_sol_types::SolError for ZeroPubKey {
type Parameters<'a> = UnderlyingSolTuple<'a>;
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "ZeroPubKey()";
const SELECTOR: [u8; 4] = [12u8, 199u8, 80u8, 145u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
<Self::Parameters<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Self::new)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `Initialized(uint8)` and selector `0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498`.
```solidity
event Initialized(uint8 version);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct Initialized {
#[allow(missing_docs)]
pub version: u8,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for Initialized {
type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
const SIGNATURE: &'static str = "Initialized(uint8)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8,
56u8, 82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8,
96u8, 206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self { version: data.0 }
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.version,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for Initialized {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&Initialized> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `NewG2PubkeyRegistration(address,(uint256[2],uint256[2]))` and selector `0x5c4f9f28153dbf3f00e69607a59e82ad806fffb78d09f179f62432f7e9d2511a`.
```solidity
event NewG2PubkeyRegistration(address indexed operator, BN254.G2Point pubkeyG2);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct NewG2PubkeyRegistration {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub pubkeyG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for NewG2PubkeyRegistration {
type DataTuple<'a> = (BN254::G2Point,);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (
alloy_sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Address,
);
const SIGNATURE: &'static str =
"NewG2PubkeyRegistration(address,(uint256[2],uint256[2]))";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
92u8, 79u8, 159u8, 40u8, 21u8, 61u8, 191u8, 63u8, 0u8, 230u8, 150u8, 7u8,
165u8, 158u8, 130u8, 173u8, 128u8, 111u8, 255u8, 183u8, 141u8, 9u8, 241u8,
121u8, 246u8, 36u8, 50u8, 247u8, 233u8, 210u8, 81u8, 26u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
operator: topics.1,
pubkeyG2: data.0,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(<BN254::G2Point as alloy_sol_types::SolType>::tokenize(
&self.pubkeyG2,
),)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(), self.operator.clone())
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
&self.operator,
);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for NewG2PubkeyRegistration {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&NewG2PubkeyRegistration> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &NewG2PubkeyRegistration) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))` and selector `0xe3fb6613af2e8930cf85d47fcf6db10192224a64c6cbe8023e0eee1ba3828041`.
```solidity
event NewPubkeyRegistration(address indexed operator, BN254.G1Point pubkeyG1, BN254.G2Point pubkeyG2);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct NewPubkeyRegistration {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub pubkeyG1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub pubkeyG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for NewPubkeyRegistration {
type DataTuple<'a> = (BN254::G1Point, BN254::G2Point);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (
alloy_sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Address,
);
const SIGNATURE: &'static str =
"NewPubkeyRegistration(address,(uint256,uint256),(uint256[2],uint256[2]))";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8,
127u8, 207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8,
2u8, 62u8, 14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
operator: topics.1,
pubkeyG1: data.0,
pubkeyG2: data.1,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.pubkeyG1),
<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.pubkeyG2),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(), self.operator.clone())
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
&self.operator,
);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for NewPubkeyRegistration {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&NewPubkeyRegistration> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &NewPubkeyRegistration) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `OperatorAddedToQuorums(address,bytes32,bytes)` and selector `0x73a2b7fb844724b971802ae9b15db094d4b7192df9d7350e14eb466b9b22eb4e`.
```solidity
event OperatorAddedToQuorums(address operator, bytes32 operatorId, bytes quorumNumbers);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct OperatorAddedToQuorums {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub operatorId: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub quorumNumbers: alloy::sol_types::private::Bytes,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for OperatorAddedToQuorums {
type DataTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
const SIGNATURE: &'static str = "OperatorAddedToQuorums(address,bytes32,bytes)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8,
233u8, 177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8,
14u8, 20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
operator: data.0,
operatorId: data.1,
quorumNumbers: data.2,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.operatorId),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.quorumNumbers,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for OperatorAddedToQuorums {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&OperatorAddedToQuorums> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &OperatorAddedToQuorums) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `OperatorRemovedFromQuorums(address,bytes32,bytes)` and selector `0xf843ecd53a563675e62107be1494fdde4a3d49aeedaf8d88c616d85346e3500e`.
```solidity
event OperatorRemovedFromQuorums(address operator, bytes32 operatorId, bytes quorumNumbers);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct OperatorRemovedFromQuorums {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub operatorId: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub quorumNumbers: alloy::sol_types::private::Bytes,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for OperatorRemovedFromQuorums {
type DataTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
);
type DataToken<'a> = <Self::DataTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
const SIGNATURE: &'static str = "OperatorRemovedFromQuorums(address,bytes32,bytes)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 =
alloy_sol_types::private::B256::new([
248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8,
20u8, 148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8,
198u8, 22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
operator: data.0,
operatorId: data.1,
quorumNumbers: data.2,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
));
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.operatorId),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.quorumNumbers,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(),)
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(Self::SIGNATURE_HASH);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for OperatorRemovedFromQuorums {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&OperatorRemovedFromQuorums> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &OperatorRemovedFromQuorums) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
/**Constructor`.
```solidity
constructor(address _slashingRegistryCoordinator);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct constructorCall {
#[allow(missing_docs)]
pub _slashingRegistryCoordinator: alloy::sol_types::private::Address,
}
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
fn from(value: constructorCall) -> Self {
(value._slashingRegistryCoordinator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
_slashingRegistryCoordinator: tuple.0,
}
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolConstructor for constructorCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self._slashingRegistryCoordinator,
),
)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `apkHistory(uint8,uint256)` and selector `0x7916cea6`.
```solidity
function apkHistory(uint8 quorumNumber, uint256) external view returns (bytes24 apkHash, uint32 updateBlockNumber, uint32 nextUpdateBlockNumber);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct apkHistoryCall {
#[allow(missing_docs)]
pub quorumNumber: u8,
#[allow(missing_docs)]
pub _1: alloy::sol_types::private::primitives::aliases::U256,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`apkHistory(uint8,uint256)`](apkHistoryCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct apkHistoryReturn {
#[allow(missing_docs)]
pub apkHash: alloy::sol_types::private::FixedBytes<24>,
#[allow(missing_docs)]
pub updateBlockNumber: u32,
#[allow(missing_docs)]
pub nextUpdateBlockNumber: u32,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Uint<8>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(u8, alloy::sol_types::private::primitives::aliases::U256);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<apkHistoryCall> for UnderlyingRustTuple<'_> {
fn from(value: apkHistoryCall) -> Self {
(value.quorumNumber, value._1)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for apkHistoryCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumber: tuple.0,
_1: tuple.1,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::FixedBytes<24>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::Uint<32>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>, u32, u32);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<apkHistoryReturn> for UnderlyingRustTuple<'_> {
fn from(value: apkHistoryReturn) -> Self {
(
value.apkHash,
value.updateBlockNumber,
value.nextUpdateBlockNumber,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for apkHistoryReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
apkHash: tuple.0,
updateBlockNumber: tuple.1,
nextUpdateBlockNumber: tuple.2,
}
}
}
}
impl apkHistoryReturn {
fn _tokenize(&self) -> <apkHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
24,
> as alloy_sol_types::SolType>::tokenize(&self.apkHash),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.updateBlockNumber),
<alloy::sol_types::sol_data::Uint<
32,
> as alloy_sol_types::SolType>::tokenize(&self.nextUpdateBlockNumber),
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for apkHistoryCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Uint<8>,
alloy::sol_types::sol_data::Uint<256>,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = apkHistoryReturn;
type ReturnTuple<'a> = (
alloy::sol_types::sol_data::FixedBytes<24>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::Uint<32>,
);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "apkHistory(uint8,uint256)";
const SELECTOR: [u8; 4] = [121u8, 22u8, 206u8, 166u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.quorumNumber,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self._1,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
apkHistoryReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `currentApk(uint8)` and selector `0xa3db80e2`.
```solidity
function currentApk(uint8 quorumNumber) external view returns (uint256 X, uint256 Y);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct currentApkCall {
#[allow(missing_docs)]
pub quorumNumber: u8,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`currentApk(uint8)`](currentApkCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct currentApkReturn {
#[allow(missing_docs)]
pub X: alloy::sol_types::private::primitives::aliases::U256,
#[allow(missing_docs)]
pub Y: alloy::sol_types::private::primitives::aliases::U256,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (u8,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<currentApkCall> for UnderlyingRustTuple<'_> {
fn from(value: currentApkCall) -> Self {
(value.quorumNumber,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentApkCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumber: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Uint<256>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::primitives::aliases::U256,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<currentApkReturn> for UnderlyingRustTuple<'_> {
fn from(value: currentApkReturn) -> Self {
(value.X, value.Y)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentApkReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
X: tuple.0,
Y: tuple.1,
}
}
}
}
impl currentApkReturn {
fn _tokenize(&self) -> <currentApkCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.X,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.Y,
),
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for currentApkCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = currentApkReturn;
type ReturnTuple<'a> = (
alloy::sol_types::sol_data::Uint<256>,
alloy::sol_types::sol_data::Uint<256>,
);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "currentApk(uint8)";
const SELECTOR: [u8; 4] = [163u8, 219u8, 128u8, 226u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.quorumNumber,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
currentApkReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `deregisterOperator(address,bytes)` and selector `0xf4e24fe5`.
```solidity
function deregisterOperator(address operator, bytes memory quorumNumbers) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct deregisterOperatorCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub quorumNumbers: alloy::sol_types::private::Bytes,
}
///Container type for the return parameters of the [`deregisterOperator(address,bytes)`](deregisterOperatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct deregisterOperatorReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Bytes,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::Bytes,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<deregisterOperatorCall> for UnderlyingRustTuple<'_> {
fn from(value: deregisterOperatorCall) -> Self {
(value.operator, value.quorumNumbers)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterOperatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operator: tuple.0,
quorumNumbers: tuple.1,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<deregisterOperatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: deregisterOperatorReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for deregisterOperatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl deregisterOperatorReturn {
fn _tokenize(
&self,
) -> <deregisterOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for deregisterOperatorCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Bytes,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = deregisterOperatorReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "deregisterOperator(address,bytes)";
const SELECTOR: [u8; 4] = [244u8, 226u8, 79u8, 229u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.quorumNumbers,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
deregisterOperatorReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getApk(uint8)` and selector `0x5f61a884`.
```solidity
function getApk(uint8 quorumNumber) external view returns (BN254.G1Point memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkCall {
#[allow(missing_docs)]
pub quorumNumber: u8,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getApk(uint8)`](getApkCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkReturn {
#[allow(missing_docs)]
pub _0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (u8,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkCall> for UnderlyingRustTuple<'_> {
fn from(value: getApkCall) -> Self {
(value.quorumNumber,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumber: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (BN254::G1Point,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<BN254::G1Point as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkReturn> for UnderlyingRustTuple<'_> {
fn from(value: getApkReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getApkCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <BN254::G1Point as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (BN254::G1Point,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getApk(uint8)";
const SELECTOR: [u8; 4] = [95u8, 97u8, 168u8, 132u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.quorumNumber,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<BN254::G1Point as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getApkReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getApkReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)` and selector `0x68bccaac`.
```solidity
function getApkHashAtBlockNumberAndIndex(uint8 quorumNumber, uint32 blockNumber, uint256 index) external view returns (bytes24);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkHashAtBlockNumberAndIndexCall {
#[allow(missing_docs)]
pub quorumNumber: u8,
#[allow(missing_docs)]
pub blockNumber: u32,
#[allow(missing_docs)]
pub index: alloy::sol_types::private::primitives::aliases::U256,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)`](getApkHashAtBlockNumberAndIndexCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkHashAtBlockNumberAndIndexReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::FixedBytes<24>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Uint<8>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
u8,
u32,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkHashAtBlockNumberAndIndexCall> for UnderlyingRustTuple<'_> {
fn from(value: getApkHashAtBlockNumberAndIndexCall) -> Self {
(value.quorumNumber, value.blockNumber, value.index)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkHashAtBlockNumberAndIndexCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumber: tuple.0,
blockNumber: tuple.1,
index: tuple.2,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<24>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkHashAtBlockNumberAndIndexReturn> for UnderlyingRustTuple<'_> {
fn from(value: getApkHashAtBlockNumberAndIndexReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkHashAtBlockNumberAndIndexReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getApkHashAtBlockNumberAndIndexCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Uint<8>,
alloy::sol_types::sol_data::Uint<32>,
alloy::sol_types::sol_data::Uint<256>,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::FixedBytes<24>;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<24>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getApkHashAtBlockNumberAndIndex(uint8,uint32,uint256)";
const SELECTOR: [u8; 4] = [104u8, 188u8, 202u8, 172u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.quorumNumber,
),
<alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
&self.blockNumber,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.index,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
24,
> as alloy_sol_types::SolType>::tokenize(ret),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getApkHashAtBlockNumberAndIndexReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getApkHashAtBlockNumberAndIndexReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getApkHistoryLength(uint8)` and selector `0x377ed99d`.
```solidity
function getApkHistoryLength(uint8 quorumNumber) external view returns (uint32);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkHistoryLengthCall {
#[allow(missing_docs)]
pub quorumNumber: u8,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getApkHistoryLength(uint8)`](getApkHistoryLengthCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkHistoryLengthReturn {
#[allow(missing_docs)]
pub _0: u32,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (u8,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkHistoryLengthCall> for UnderlyingRustTuple<'_> {
fn from(value: getApkHistoryLengthCall) -> Self {
(value.quorumNumber,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkHistoryLengthCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumber: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (u32,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkHistoryLengthReturn> for UnderlyingRustTuple<'_> {
fn from(value: getApkHistoryLengthReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkHistoryLengthReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getApkHistoryLengthCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = u32;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getApkHistoryLength(uint8)";
const SELECTOR: [u8; 4] = [55u8, 126u8, 217u8, 157u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.quorumNumber,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<32> as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getApkHistoryLengthReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getApkHistoryLengthReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getApkIndicesAtBlockNumber(bytes,uint256)` and selector `0xd5254a8c`.
```solidity
function getApkIndicesAtBlockNumber(bytes memory quorumNumbers, uint256 blockNumber) external view returns (uint32[] memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkIndicesAtBlockNumberCall {
#[allow(missing_docs)]
pub quorumNumbers: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getApkIndicesAtBlockNumber(bytes,uint256)`](getApkIndicesAtBlockNumberCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkIndicesAtBlockNumberReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Vec<u32>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Bytes,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkIndicesAtBlockNumberCall> for UnderlyingRustTuple<'_> {
fn from(value: getApkIndicesAtBlockNumberCall) -> Self {
(value.quorumNumbers, value.blockNumber)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkIndicesAtBlockNumberCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumbers: tuple.0,
blockNumber: tuple.1,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> =
(alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Vec<u32>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkIndicesAtBlockNumberReturn> for UnderlyingRustTuple<'_> {
fn from(value: getApkIndicesAtBlockNumberReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkIndicesAtBlockNumberReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getApkIndicesAtBlockNumberCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::Uint<256>,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Vec<u32>;
type ReturnTuple<'a> =
(alloy::sol_types::sol_data::Array<alloy::sol_types::sol_data::Uint<32>>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getApkIndicesAtBlockNumber(bytes,uint256)";
const SELECTOR: [u8; 4] = [213u8, 37u8, 74u8, 140u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.quorumNumbers,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.blockNumber,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<alloy::sol_types::sol_data::Array<
alloy::sol_types::sol_data::Uint<32>,
> as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getApkIndicesAtBlockNumberReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getApkIndicesAtBlockNumberReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getApkUpdateAtIndex(uint8,uint256)` and selector `0x605747d5`.
```solidity
function getApkUpdateAtIndex(uint8 quorumNumber, uint256 index) external view returns (IBLSApkRegistryTypes.ApkUpdate memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkUpdateAtIndexCall {
#[allow(missing_docs)]
pub quorumNumber: u8,
#[allow(missing_docs)]
pub index: alloy::sol_types::private::primitives::aliases::U256,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getApkUpdateAtIndex(uint8,uint256)`](getApkUpdateAtIndexCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getApkUpdateAtIndexReturn {
#[allow(missing_docs)]
pub _0: <IBLSApkRegistryTypes::ApkUpdate as alloy::sol_types::SolType>::RustType,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Uint<8>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(u8, alloy::sol_types::private::primitives::aliases::U256);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkUpdateAtIndexCall> for UnderlyingRustTuple<'_> {
fn from(value: getApkUpdateAtIndexCall) -> Self {
(value.quorumNumber, value.index)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkUpdateAtIndexCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumber: tuple.0,
index: tuple.1,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (IBLSApkRegistryTypes::ApkUpdate,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<IBLSApkRegistryTypes::ApkUpdate as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getApkUpdateAtIndexReturn> for UnderlyingRustTuple<'_> {
fn from(value: getApkUpdateAtIndexReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getApkUpdateAtIndexReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getApkUpdateAtIndexCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Uint<8>,
alloy::sol_types::sol_data::Uint<256>,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <IBLSApkRegistryTypes::ApkUpdate as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (IBLSApkRegistryTypes::ApkUpdate,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getApkUpdateAtIndex(uint8,uint256)";
const SELECTOR: [u8; 4] = [96u8, 87u8, 71u8, 213u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.quorumNumber,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.index,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<IBLSApkRegistryTypes::ApkUpdate as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getApkUpdateAtIndexReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getApkUpdateAtIndexReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getOperatorFromPubkeyHash(bytes32)` and selector `0x47b314e8`.
```solidity
function getOperatorFromPubkeyHash(bytes32 pubkeyHash) external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorFromPubkeyHashCall {
#[allow(missing_docs)]
pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getOperatorFromPubkeyHash(bytes32)`](getOperatorFromPubkeyHashCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorFromPubkeyHashReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorFromPubkeyHashCall> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorFromPubkeyHashCall) -> Self {
(value.pubkeyHash,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorFromPubkeyHashCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
pubkeyHash: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorFromPubkeyHashReturn> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorFromPubkeyHashReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorFromPubkeyHashReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getOperatorFromPubkeyHashCall {
type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getOperatorFromPubkeyHash(bytes32)";
const SELECTOR: [u8; 4] = [71u8, 179u8, 20u8, 232u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getOperatorFromPubkeyHashReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getOperatorFromPubkeyHashReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getOperatorId(address)` and selector `0x13542a4e`.
```solidity
function getOperatorId(address operator) external view returns (bytes32);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorIdCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getOperatorId(address)`](getOperatorIdCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorIdReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::FixedBytes<32>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorIdCall> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorIdCall) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorIdCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorIdReturn> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorIdReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorIdReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getOperatorIdCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::FixedBytes<32>;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getOperatorId(address)";
const SELECTOR: [u8; 4] = [19u8, 84u8, 42u8, 78u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(ret),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getOperatorIdReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getOperatorIdReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getOperatorPubkeyG2(address)` and selector `0x67169911`.
```solidity
function getOperatorPubkeyG2(address operator) external view returns (BN254.G2Point memory);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorPubkeyG2Call {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getOperatorPubkeyG2(address)`](getOperatorPubkeyG2Call) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOperatorPubkeyG2Return {
#[allow(missing_docs)]
pub _0: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorPubkeyG2Call> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorPubkeyG2Call) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorPubkeyG2Call {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (BN254::G2Point,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> =
(<BN254::G2Point as alloy::sol_types::SolType>::RustType,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOperatorPubkeyG2Return> for UnderlyingRustTuple<'_> {
fn from(value: getOperatorPubkeyG2Return) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOperatorPubkeyG2Return {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getOperatorPubkeyG2Call {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = <BN254::G2Point as alloy::sol_types::SolType>::RustType;
type ReturnTuple<'a> = (BN254::G2Point,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getOperatorPubkeyG2(address)";
const SELECTOR: [u8; 4] = [103u8, 22u8, 153u8, 17u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(<BN254::G2Point as alloy_sol_types::SolType>::tokenize(ret),)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getOperatorPubkeyG2Return = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getOperatorPubkeyG2Return = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getOrRegisterOperatorId(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))` and selector `0x03c5a6b6`.
```solidity
function getOrRegisterOperatorId(address operator, IBLSApkRegistryTypes.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOrRegisterOperatorIdCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub params:
<IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub pubkeyRegistrationMessageHash: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getOrRegisterOperatorId(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))`](getOrRegisterOperatorIdCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getOrRegisterOperatorIdReturn {
#[allow(missing_docs)]
pub operatorId: alloy::sol_types::private::FixedBytes<32>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
IBLSApkRegistryTypes::PubkeyRegistrationParams,
BN254::G1Point,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
<IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy::sol_types::SolType>::RustType,
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOrRegisterOperatorIdCall> for UnderlyingRustTuple<'_> {
fn from(value: getOrRegisterOperatorIdCall) -> Self {
(
value.operator,
value.params,
value.pubkeyRegistrationMessageHash,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOrRegisterOperatorIdCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operator: tuple.0,
params: tuple.1,
pubkeyRegistrationMessageHash: tuple.2,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getOrRegisterOperatorIdReturn> for UnderlyingRustTuple<'_> {
fn from(value: getOrRegisterOperatorIdReturn) -> Self {
(value.operatorId,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getOrRegisterOperatorIdReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operatorId: tuple.0,
}
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getOrRegisterOperatorIdCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
IBLSApkRegistryTypes::PubkeyRegistrationParams,
BN254::G1Point,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::FixedBytes<32>;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getOrRegisterOperatorId(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))";
const SELECTOR: [u8; 4] = [3u8, 197u8, 166u8, 182u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy_sol_types::SolType>::tokenize(
&self.params,
),
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(
&self.pubkeyRegistrationMessageHash,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(ret),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: getOrRegisterOperatorIdReturn = r.into();
r.operatorId
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: getOrRegisterOperatorIdReturn = r.into();
r.operatorId
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `getRegisteredPubkey(address)` and selector `0x7ff81a87`.
```solidity
function getRegisteredPubkey(address operator) external view returns (BN254.G1Point memory, bytes32);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getRegisteredPubkeyCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`getRegisteredPubkey(address)`](getRegisteredPubkeyCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct getRegisteredPubkeyReturn {
#[allow(missing_docs)]
pub _0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub _1: alloy::sol_types::private::FixedBytes<32>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getRegisteredPubkeyCall> for UnderlyingRustTuple<'_> {
fn from(value: getRegisteredPubkeyCall) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRegisteredPubkeyCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> =
(BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
alloy::sol_types::private::FixedBytes<32>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<getRegisteredPubkeyReturn> for UnderlyingRustTuple<'_> {
fn from(value: getRegisteredPubkeyReturn) -> Self {
(value._0, value._1)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for getRegisteredPubkeyReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
_0: tuple.0,
_1: tuple.1,
}
}
}
}
impl getRegisteredPubkeyReturn {
fn _tokenize(
&self,
) -> <getRegisteredPubkeyCall as alloy_sol_types::SolCall>::ReturnToken<'_>
{
(
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self._0),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self._1),
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for getRegisteredPubkeyCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = getRegisteredPubkeyReturn;
type ReturnTuple<'a> = (BN254::G1Point, alloy::sol_types::sol_data::FixedBytes<32>);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "getRegisteredPubkey(address)";
const SELECTOR: [u8; 4] = [127u8, 248u8, 26u8, 135u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
getRegisteredPubkeyReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `initializeQuorum(uint8)` and selector `0x26d941f2`.
```solidity
function initializeQuorum(uint8 quorumNumber) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct initializeQuorumCall {
#[allow(missing_docs)]
pub quorumNumber: u8,
}
///Container type for the return parameters of the [`initializeQuorum(uint8)`](initializeQuorumCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct initializeQuorumReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<8>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (u8,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<initializeQuorumCall> for UnderlyingRustTuple<'_> {
fn from(value: initializeQuorumCall) -> Self {
(value.quorumNumber,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeQuorumCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
quorumNumber: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<initializeQuorumReturn> for UnderlyingRustTuple<'_> {
fn from(value: initializeQuorumReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeQuorumReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl initializeQuorumReturn {
fn _tokenize(
&self,
) -> <initializeQuorumCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for initializeQuorumCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Uint<8>,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = initializeQuorumReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "initializeQuorum(uint8)";
const SELECTOR: [u8; 4] = [38u8, 217u8, 65u8, 242u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Uint<8> as alloy_sol_types::SolType>::tokenize(
&self.quorumNumber,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
initializeQuorumReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `operatorToPubkey(address)` and selector `0x00a1f4cb`.
```solidity
function operatorToPubkey(address operator) external view returns (uint256 X, uint256 Y);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct operatorToPubkeyCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`operatorToPubkey(address)`](operatorToPubkeyCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct operatorToPubkeyReturn {
#[allow(missing_docs)]
pub X: alloy::sol_types::private::primitives::aliases::U256,
#[allow(missing_docs)]
pub Y: alloy::sol_types::private::primitives::aliases::U256,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<operatorToPubkeyCall> for UnderlyingRustTuple<'_> {
fn from(value: operatorToPubkeyCall) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorToPubkeyCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Uint<256>,
alloy::sol_types::sol_data::Uint<256>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::primitives::aliases::U256,
alloy::sol_types::private::primitives::aliases::U256,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<operatorToPubkeyReturn> for UnderlyingRustTuple<'_> {
fn from(value: operatorToPubkeyReturn) -> Self {
(value.X, value.Y)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorToPubkeyReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
X: tuple.0,
Y: tuple.1,
}
}
}
}
impl operatorToPubkeyReturn {
fn _tokenize(
&self,
) -> <operatorToPubkeyCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.X,
),
<alloy::sol_types::sol_data::Uint<256> as alloy_sol_types::SolType>::tokenize(
&self.Y,
),
)
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for operatorToPubkeyCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = operatorToPubkeyReturn;
type ReturnTuple<'a> = (
alloy::sol_types::sol_data::Uint<256>,
alloy::sol_types::sol_data::Uint<256>,
);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "operatorToPubkey(address)";
const SELECTOR: [u8; 4] = [0u8, 161u8, 244u8, 203u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
operatorToPubkeyReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `operatorToPubkeyHash(address)` and selector `0xde29fac0`.
```solidity
function operatorToPubkeyHash(address operator) external view returns (bytes32 operatorId);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct operatorToPubkeyHashCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`operatorToPubkeyHash(address)`](operatorToPubkeyHashCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct operatorToPubkeyHashReturn {
#[allow(missing_docs)]
pub operatorId: alloy::sol_types::private::FixedBytes<32>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<operatorToPubkeyHashCall> for UnderlyingRustTuple<'_> {
fn from(value: operatorToPubkeyHashCall) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorToPubkeyHashCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<operatorToPubkeyHashReturn> for UnderlyingRustTuple<'_> {
fn from(value: operatorToPubkeyHashReturn) -> Self {
(value.operatorId,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for operatorToPubkeyHashReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operatorId: tuple.0,
}
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for operatorToPubkeyHashCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::FixedBytes<32>;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "operatorToPubkeyHash(address)";
const SELECTOR: [u8; 4] = [222u8, 41u8, 250u8, 192u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(ret),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: operatorToPubkeyHashReturn = r.into();
r.operatorId
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: operatorToPubkeyHashReturn = r.into();
r.operatorId
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `pubkeyHashToOperator(bytes32)` and selector `0xe8bb9ae6`.
```solidity
function pubkeyHashToOperator(bytes32 pubkeyHash) external view returns (address operator);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct pubkeyHashToOperatorCall {
#[allow(missing_docs)]
pub pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`pubkeyHashToOperator(bytes32)`](pubkeyHashToOperatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct pubkeyHashToOperatorReturn {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<pubkeyHashToOperatorCall> for UnderlyingRustTuple<'_> {
fn from(value: pubkeyHashToOperatorCall) -> Self {
(value.pubkeyHash,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for pubkeyHashToOperatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
pubkeyHash: tuple.0,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<pubkeyHashToOperatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: pubkeyHashToOperatorReturn) -> Self {
(value.operator,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for pubkeyHashToOperatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { operator: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for pubkeyHashToOperatorCall {
type Parameters<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "pubkeyHashToOperator(bytes32)";
const SELECTOR: [u8; 4] = [232u8, 187u8, 154u8, 230u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.pubkeyHash),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: pubkeyHashToOperatorReturn = r.into();
r.operator
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: pubkeyHashToOperatorReturn = r.into();
r.operator
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))` and selector `0xbf79ce58`.
```solidity
function registerBLSPublicKey(address operator, IBLSApkRegistryTypes.PubkeyRegistrationParams memory params, BN254.G1Point memory pubkeyRegistrationMessageHash) external returns (bytes32 operatorId);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registerBLSPublicKeyCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub params:
<IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy::sol_types::SolType>::RustType,
#[allow(missing_docs)]
pub pubkeyRegistrationMessageHash: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
}
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))`](registerBLSPublicKeyCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registerBLSPublicKeyReturn {
#[allow(missing_docs)]
pub operatorId: alloy::sol_types::private::FixedBytes<32>,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
IBLSApkRegistryTypes::PubkeyRegistrationParams,
BN254::G1Point,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
<IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy::sol_types::SolType>::RustType,
<BN254::G1Point as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registerBLSPublicKeyCall> for UnderlyingRustTuple<'_> {
fn from(value: registerBLSPublicKeyCall) -> Self {
(
value.operator,
value.params,
value.pubkeyRegistrationMessageHash,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerBLSPublicKeyCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operator: tuple.0,
params: tuple.1,
pubkeyRegistrationMessageHash: tuple.2,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registerBLSPublicKeyReturn> for UnderlyingRustTuple<'_> {
fn from(value: registerBLSPublicKeyReturn) -> Self {
(value.operatorId,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerBLSPublicKeyReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operatorId: tuple.0,
}
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for registerBLSPublicKeyCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
IBLSApkRegistryTypes::PubkeyRegistrationParams,
BN254::G1Point,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::FixedBytes<32>;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "registerBLSPublicKey(address,((uint256,uint256),(uint256,uint256),(uint256[2],uint256[2])),(uint256,uint256))";
const SELECTOR: [u8; 4] = [191u8, 121u8, 206u8, 88u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy_sol_types::SolType>::tokenize(
&self.params,
),
<BN254::G1Point as alloy_sol_types::SolType>::tokenize(
&self.pubkeyRegistrationMessageHash,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(ret),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: registerBLSPublicKeyReturn = r.into();
r.operatorId
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: registerBLSPublicKeyReturn = r.into();
r.operatorId
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `registerOperator(address,bytes)` and selector `0x3fb27952`.
```solidity
function registerOperator(address operator, bytes memory quorumNumbers) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registerOperatorCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub quorumNumbers: alloy::sol_types::private::Bytes,
}
///Container type for the return parameters of the [`registerOperator(address,bytes)`](registerOperatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registerOperatorReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Bytes,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::Bytes,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registerOperatorCall> for UnderlyingRustTuple<'_> {
fn from(value: registerOperatorCall) -> Self {
(value.operator, value.quorumNumbers)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerOperatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operator: tuple.0,
quorumNumbers: tuple.1,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registerOperatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: registerOperatorReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registerOperatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl registerOperatorReturn {
fn _tokenize(
&self,
) -> <registerOperatorCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for registerOperatorCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Bytes,
);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = registerOperatorReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "registerOperator(address,bytes)";
const SELECTOR: [u8; 4] = [63u8, 178u8, 121u8, 82u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.quorumNumbers,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
registerOperatorReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `registryCoordinator()` and selector `0x6d14a987`.
```solidity
function registryCoordinator() external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registryCoordinatorCall;
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`registryCoordinator()`](registryCoordinatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct registryCoordinatorReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registryCoordinatorCall> for UnderlyingRustTuple<'_> {
fn from(value: registryCoordinatorCall) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<registryCoordinatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: registryCoordinatorReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for registryCoordinatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for registryCoordinatorCall {
type Parameters<'a> = ();
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "registryCoordinator()";
const SELECTOR: [u8; 4] = [109u8, 20u8, 169u8, 135u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
()
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data).map(
|r| {
let r: registryCoordinatorReturn = r.into();
r._0
},
)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(|r| {
let r: registryCoordinatorReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize, Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `verifyAndRegisterG2PubkeyForOperator(address,(uint256[2],uint256[2]))` and selector `0xd1a64650`.
```solidity
function verifyAndRegisterG2PubkeyForOperator(address operator, BN254.G2Point memory pubkeyG2) external;
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct verifyAndRegisterG2PubkeyForOperatorCall {
#[allow(missing_docs)]
pub operator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub pubkeyG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
}
///Container type for the return parameters of the [`verifyAndRegisterG2PubkeyForOperator(address,(uint256[2],uint256[2]))`](verifyAndRegisterG2PubkeyForOperatorCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct verifyAndRegisterG2PubkeyForOperatorReturn {}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address, BN254::G2Point);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
<BN254::G2Point as alloy::sol_types::SolType>::RustType,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyAndRegisterG2PubkeyForOperatorCall> for UnderlyingRustTuple<'_> {
fn from(value: verifyAndRegisterG2PubkeyForOperatorCall) -> Self {
(value.operator, value.pubkeyG2)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyAndRegisterG2PubkeyForOperatorCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
operator: tuple.0,
pubkeyG2: tuple.1,
}
}
}
}
{
#[doc(hidden)]
type UnderlyingSolTuple<'a> = ();
#[doc(hidden)]
type UnderlyingRustTuple<'a> = ();
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<verifyAndRegisterG2PubkeyForOperatorReturn> for UnderlyingRustTuple<'_> {
fn from(value: verifyAndRegisterG2PubkeyForOperatorReturn) -> Self {
()
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>> for verifyAndRegisterG2PubkeyForOperatorReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {}
}
}
}
impl verifyAndRegisterG2PubkeyForOperatorReturn {
fn _tokenize(
&self,
) -> <verifyAndRegisterG2PubkeyForOperatorCall as alloy_sol_types::SolCall>::ReturnToken<
'_,
>{
()
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for verifyAndRegisterG2PubkeyForOperatorCall {
type Parameters<'a> = (alloy::sol_types::sol_data::Address, BN254::G2Point);
type Token<'a> = <Self::Parameters<'a> as alloy_sol_types::SolType>::Token<'a>;
type Return = verifyAndRegisterG2PubkeyForOperatorReturn;
type ReturnTuple<'a> = ();
type ReturnToken<'a> = <Self::ReturnTuple<'a> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str =
"verifyAndRegisterG2PubkeyForOperator(address,(uint256[2],uint256[2]))";
const SELECTOR: [u8; 4] = [209u8, 166u8, 70u8, 80u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.operator,
),
<BN254::G2Point as alloy_sol_types::SolType>::tokenize(&self.pubkeyG2),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
verifyAndRegisterG2PubkeyForOperatorReturn::_tokenize(ret)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(Into::into)
}
#[inline]
fn abi_decode_returns_validate(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<'_> as alloy_sol_types::SolType>::abi_decode_sequence_validate(
data,
)
.map(Into::into)
}
}
};
///Container for all the [`BLSApkRegistry`](self) function calls.
#[derive(serde::Serialize, serde::Deserialize)]
pub enum BLSApkRegistryCalls {
#[allow(missing_docs)]
apkHistory(apkHistoryCall),
#[allow(missing_docs)]
currentApk(currentApkCall),
#[allow(missing_docs)]
deregisterOperator(deregisterOperatorCall),
#[allow(missing_docs)]
getApk(getApkCall),
#[allow(missing_docs)]
getApkHashAtBlockNumberAndIndex(getApkHashAtBlockNumberAndIndexCall),
#[allow(missing_docs)]
getApkHistoryLength(getApkHistoryLengthCall),
#[allow(missing_docs)]
getApkIndicesAtBlockNumber(getApkIndicesAtBlockNumberCall),
#[allow(missing_docs)]
getApkUpdateAtIndex(getApkUpdateAtIndexCall),
#[allow(missing_docs)]
getOperatorFromPubkeyHash(getOperatorFromPubkeyHashCall),
#[allow(missing_docs)]
getOperatorId(getOperatorIdCall),
#[allow(missing_docs)]
getOperatorPubkeyG2(getOperatorPubkeyG2Call),
#[allow(missing_docs)]
getOrRegisterOperatorId(getOrRegisterOperatorIdCall),
#[allow(missing_docs)]
getRegisteredPubkey(getRegisteredPubkeyCall),
#[allow(missing_docs)]
initializeQuorum(initializeQuorumCall),
#[allow(missing_docs)]
operatorToPubkey(operatorToPubkeyCall),
#[allow(missing_docs)]
operatorToPubkeyHash(operatorToPubkeyHashCall),
#[allow(missing_docs)]
pubkeyHashToOperator(pubkeyHashToOperatorCall),
#[allow(missing_docs)]
registerBLSPublicKey(registerBLSPublicKeyCall),
#[allow(missing_docs)]
registerOperator(registerOperatorCall),
#[allow(missing_docs)]
registryCoordinator(registryCoordinatorCall),
#[allow(missing_docs)]
verifyAndRegisterG2PubkeyForOperator(verifyAndRegisterG2PubkeyForOperatorCall),
}
#[automatically_derived]
impl BLSApkRegistryCalls {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same order as the variants.
/// No guarantees are made about the order of the selectors.
///
/// Prefer using `SolInterface` methods instead.
pub const SELECTORS: &'static [[u8; 4usize]] = &[
[0u8, 161u8, 244u8, 203u8],
[3u8, 197u8, 166u8, 182u8],
[19u8, 84u8, 42u8, 78u8],
[38u8, 217u8, 65u8, 242u8],
[55u8, 126u8, 217u8, 157u8],
[63u8, 178u8, 121u8, 82u8],
[71u8, 179u8, 20u8, 232u8],
[95u8, 97u8, 168u8, 132u8],
[96u8, 87u8, 71u8, 213u8],
[103u8, 22u8, 153u8, 17u8],
[104u8, 188u8, 202u8, 172u8],
[109u8, 20u8, 169u8, 135u8],
[121u8, 22u8, 206u8, 166u8],
[127u8, 248u8, 26u8, 135u8],
[163u8, 219u8, 128u8, 226u8],
[191u8, 121u8, 206u8, 88u8],
[209u8, 166u8, 70u8, 80u8],
[213u8, 37u8, 74u8, 140u8],
[222u8, 41u8, 250u8, 192u8],
[232u8, 187u8, 154u8, 230u8],
[244u8, 226u8, 79u8, 229u8],
];
}
#[automatically_derived]
impl alloy_sol_types::SolInterface for BLSApkRegistryCalls {
const NAME: &'static str = "BLSApkRegistryCalls";
const MIN_DATA_LENGTH: usize = 0usize;
const COUNT: usize = 21usize;
#[inline]
fn selector(&self) -> [u8; 4] {
match self {
Self::apkHistory(_) => <apkHistoryCall as alloy_sol_types::SolCall>::SELECTOR,
Self::currentApk(_) => <currentApkCall as alloy_sol_types::SolCall>::SELECTOR,
Self::deregisterOperator(_) => {
<deregisterOperatorCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getApk(_) => <getApkCall as alloy_sol_types::SolCall>::SELECTOR,
Self::getApkHashAtBlockNumberAndIndex(_) => {
<getApkHashAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getApkHistoryLength(_) => {
<getApkHistoryLengthCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getApkIndicesAtBlockNumber(_) => {
<getApkIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getApkUpdateAtIndex(_) => {
<getApkUpdateAtIndexCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getOperatorFromPubkeyHash(_) => {
<getOperatorFromPubkeyHashCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getOperatorId(_) => <getOperatorIdCall as alloy_sol_types::SolCall>::SELECTOR,
Self::getOperatorPubkeyG2(_) => {
<getOperatorPubkeyG2Call as alloy_sol_types::SolCall>::SELECTOR
}
Self::getOrRegisterOperatorId(_) => {
<getOrRegisterOperatorIdCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::getRegisteredPubkey(_) => {
<getRegisteredPubkeyCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::initializeQuorum(_) => {
<initializeQuorumCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::operatorToPubkey(_) => {
<operatorToPubkeyCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::operatorToPubkeyHash(_) => {
<operatorToPubkeyHashCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::pubkeyHashToOperator(_) => {
<pubkeyHashToOperatorCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::registerBLSPublicKey(_) => {
<registerBLSPublicKeyCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::registerOperator(_) => {
<registerOperatorCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::registryCoordinator(_) => {
<registryCoordinatorCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::verifyAndRegisterG2PubkeyForOperator(_) => {
<verifyAndRegisterG2PubkeyForOperatorCall as alloy_sol_types::SolCall>::SELECTOR
}
}
}
#[inline]
fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
Self::SELECTORS.get(i).copied()
}
#[inline]
fn valid_selector(selector: [u8; 4]) -> bool {
Self::SELECTORS.binary_search(&selector).is_ok()
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls>] = &[
{
fn operatorToPubkey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<operatorToPubkeyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::operatorToPubkey)
}
operatorToPubkey
},
{
fn getOrRegisterOperatorId(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOrRegisterOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(BLSApkRegistryCalls::getOrRegisterOperatorId)
}
getOrRegisterOperatorId
},
{
fn getOperatorId(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::getOperatorId)
}
getOperatorId
},
{
fn initializeQuorum(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<initializeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::initializeQuorum)
}
initializeQuorum
},
{
fn getApkHistoryLength(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::getApkHistoryLength)
}
getApkHistoryLength
},
{
fn registerOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<registerOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::registerOperator)
}
registerOperator
},
{
fn getOperatorFromPubkeyHash(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOperatorFromPubkeyHashCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(BLSApkRegistryCalls::getOperatorFromPubkeyHash)
}
getOperatorFromPubkeyHash
},
{
fn getApk(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::getApk)
}
getApk
},
{
fn getApkUpdateAtIndex(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::getApkUpdateAtIndex)
}
getApkUpdateAtIndex
},
{
fn getOperatorPubkeyG2(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOperatorPubkeyG2Call as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::getOperatorPubkeyG2)
}
getOperatorPubkeyG2
},
{
fn getApkHashAtBlockNumberAndIndex(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkHashAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(BLSApkRegistryCalls::getApkHashAtBlockNumberAndIndex)
}
getApkHashAtBlockNumberAndIndex
},
{
fn registryCoordinator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::registryCoordinator)
}
registryCoordinator
},
{
fn apkHistory(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<apkHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::apkHistory)
}
apkHistory
},
{
fn getRegisteredPubkey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getRegisteredPubkeyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::getRegisteredPubkey)
}
getRegisteredPubkey
},
{
fn currentApk(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<currentApkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::currentApk)
}
currentApk
},
{
fn registerBLSPublicKey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<registerBLSPublicKeyCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::registerBLSPublicKey)
}
registerBLSPublicKey
},
{
fn verifyAndRegisterG2PubkeyForOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<verifyAndRegisterG2PubkeyForOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(
BLSApkRegistryCalls::verifyAndRegisterG2PubkeyForOperator,
)
}
verifyAndRegisterG2PubkeyForOperator
},
{
fn getApkIndicesAtBlockNumber(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(BLSApkRegistryCalls::getApkIndicesAtBlockNumber)
}
getApkIndicesAtBlockNumber
},
{
fn operatorToPubkeyHash(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<operatorToPubkeyHashCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::operatorToPubkeyHash)
}
operatorToPubkeyHash
},
{
fn pubkeyHashToOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<pubkeyHashToOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::pubkeyHashToOperator)
}
pubkeyHashToOperator
},
{
fn deregisterOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<deregisterOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
.map(BLSApkRegistryCalls::deregisterOperator)
}
deregisterOperator
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_SHIMS[idx](data)
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw_validate(
selector: [u8; 4],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
static DECODE_VALIDATE_SHIMS: &[fn(
&[u8],
)
-> alloy_sol_types::Result<BLSApkRegistryCalls>] = &[
{
fn operatorToPubkey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<operatorToPubkeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::operatorToPubkey)
}
operatorToPubkey
},
{
fn getOrRegisterOperatorId(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOrRegisterOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getOrRegisterOperatorId)
}
getOrRegisterOperatorId
},
{
fn getOperatorId(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOperatorIdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getOperatorId)
}
getOperatorId
},
{
fn initializeQuorum(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<initializeQuorumCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::initializeQuorum)
}
initializeQuorum
},
{
fn getApkHistoryLength(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkHistoryLengthCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getApkHistoryLength)
}
getApkHistoryLength
},
{
fn registerOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<registerOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::registerOperator)
}
registerOperator
},
{
fn getOperatorFromPubkeyHash(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOperatorFromPubkeyHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getOperatorFromPubkeyHash)
}
getOperatorFromPubkeyHash
},
{
fn getApk(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(BLSApkRegistryCalls::getApk)
}
getApk
},
{
fn getApkUpdateAtIndex(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getApkUpdateAtIndex)
}
getApkUpdateAtIndex
},
{
fn getOperatorPubkeyG2(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getOperatorPubkeyG2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getOperatorPubkeyG2)
}
getOperatorPubkeyG2
},
{
fn getApkHashAtBlockNumberAndIndex(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkHashAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getApkHashAtBlockNumberAndIndex)
}
getApkHashAtBlockNumberAndIndex
},
{
fn registryCoordinator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::registryCoordinator)
}
registryCoordinator
},
{
fn apkHistory(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<apkHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(BLSApkRegistryCalls::apkHistory)
}
apkHistory
},
{
fn getRegisteredPubkey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getRegisteredPubkeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getRegisteredPubkey)
}
getRegisteredPubkey
},
{
fn currentApk(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<currentApkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(data)
.map(BLSApkRegistryCalls::currentApk)
}
currentApk
},
{
fn registerBLSPublicKey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<registerBLSPublicKeyCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::registerBLSPublicKey)
}
registerBLSPublicKey
},
{
fn verifyAndRegisterG2PubkeyForOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<verifyAndRegisterG2PubkeyForOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(
BLSApkRegistryCalls::verifyAndRegisterG2PubkeyForOperator,
)
}
verifyAndRegisterG2PubkeyForOperator
},
{
fn getApkIndicesAtBlockNumber(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<getApkIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::getApkIndicesAtBlockNumber)
}
getApkIndicesAtBlockNumber
},
{
fn operatorToPubkeyHash(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<operatorToPubkeyHashCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::operatorToPubkeyHash)
}
operatorToPubkeyHash
},
{
fn pubkeyHashToOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<pubkeyHashToOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::pubkeyHashToOperator)
}
pubkeyHashToOperator
},
{
fn deregisterOperator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryCalls> {
<deregisterOperatorCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryCalls::deregisterOperator)
}
deregisterOperator
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_VALIDATE_SHIMS[idx](data)
}
#[inline]
fn abi_encoded_size(&self) -> usize {
match self {
Self::apkHistory(inner) => {
<apkHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::currentApk(inner) => {
<currentApkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::deregisterOperator(inner) => {
<deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getApk(inner) => {
<getApkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
}
Self::getApkHashAtBlockNumberAndIndex(inner) => {
<getApkHashAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getApkHistoryLength(inner) => {
<getApkHistoryLengthCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getApkIndicesAtBlockNumber(inner) => {
<getApkIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getApkUpdateAtIndex(inner) => {
<getApkUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getOperatorFromPubkeyHash(inner) => {
<getOperatorFromPubkeyHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getOperatorId(inner) => {
<getOperatorIdCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getOperatorPubkeyG2(inner) => {
<getOperatorPubkeyG2Call as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getOrRegisterOperatorId(inner) => {
<getOrRegisterOperatorIdCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::getRegisteredPubkey(inner) => {
<getRegisteredPubkeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::initializeQuorum(inner) => {
<initializeQuorumCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::operatorToPubkey(inner) => {
<operatorToPubkeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::operatorToPubkeyHash(inner) => {
<operatorToPubkeyHashCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::pubkeyHashToOperator(inner) => {
<pubkeyHashToOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::registerBLSPublicKey(inner) => {
<registerBLSPublicKeyCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::registerOperator(inner) => {
<registerOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::registryCoordinator(inner) => {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::verifyAndRegisterG2PubkeyForOperator(inner) => {
<verifyAndRegisterG2PubkeyForOperatorCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
}
}
#[inline]
fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
match self {
Self::apkHistory(inner) => {
<apkHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::currentApk(inner) => {
<currentApkCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::deregisterOperator(inner) => {
<deregisterOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getApk(inner) => {
<getApkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
}
Self::getApkHashAtBlockNumberAndIndex(inner) => {
<getApkHashAtBlockNumberAndIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getApkHistoryLength(inner) => {
<getApkHistoryLengthCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getApkIndicesAtBlockNumber(inner) => {
<getApkIndicesAtBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getApkUpdateAtIndex(inner) => {
<getApkUpdateAtIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getOperatorFromPubkeyHash(inner) => {
<getOperatorFromPubkeyHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getOperatorId(inner) => {
<getOperatorIdCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getOperatorPubkeyG2(inner) => {
<getOperatorPubkeyG2Call as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getOrRegisterOperatorId(inner) => {
<getOrRegisterOperatorIdCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::getRegisteredPubkey(inner) => {
<getRegisteredPubkeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::initializeQuorum(inner) => {
<initializeQuorumCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::operatorToPubkey(inner) => {
<operatorToPubkeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::operatorToPubkeyHash(inner) => {
<operatorToPubkeyHashCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::pubkeyHashToOperator(inner) => {
<pubkeyHashToOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::registerBLSPublicKey(inner) => {
<registerBLSPublicKeyCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::registerOperator(inner) => {
<registerOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::registryCoordinator(inner) => {
<registryCoordinatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::verifyAndRegisterG2PubkeyForOperator(inner) => {
<verifyAndRegisterG2PubkeyForOperatorCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
}
}
}
///Container for all the [`BLSApkRegistry`](self) custom errors.
#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
pub enum BLSApkRegistryErrors {
#[allow(missing_docs)]
BLSPubkeyAlreadyRegistered(BLSPubkeyAlreadyRegistered),
#[allow(missing_docs)]
BlockNumberBeforeFirstUpdate(BlockNumberBeforeFirstUpdate),
#[allow(missing_docs)]
BlockNumberNotLatest(BlockNumberNotLatest),
#[allow(missing_docs)]
BlockNumberTooRecent(BlockNumberTooRecent),
#[allow(missing_docs)]
ECAddFailed(ECAddFailed),
#[allow(missing_docs)]
ECMulFailed(ECMulFailed),
#[allow(missing_docs)]
ECPairingFailed(ECPairingFailed),
#[allow(missing_docs)]
G2PubkeyAlreadySet(G2PubkeyAlreadySet),
#[allow(missing_docs)]
InvalidBLSSignatureOrPrivateKey(InvalidBLSSignatureOrPrivateKey),
#[allow(missing_docs)]
OnlyRegistryCoordinator(OnlyRegistryCoordinator),
#[allow(missing_docs)]
OnlyRegistryCoordinatorOwner(OnlyRegistryCoordinatorOwner),
#[allow(missing_docs)]
OperatorAlreadyRegistered(OperatorAlreadyRegistered),
#[allow(missing_docs)]
OperatorNotRegistered(OperatorNotRegistered),
#[allow(missing_docs)]
QuorumAlreadyExists(QuorumAlreadyExists),
#[allow(missing_docs)]
QuorumDoesNotExist(QuorumDoesNotExist),
#[allow(missing_docs)]
ZeroPubKey(ZeroPubKey),
}
#[automatically_derived]
impl BLSApkRegistryErrors {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same order as the variants.
/// No guarantees are made about the order of the selectors.
///
/// Prefer using `SolInterface` methods instead.
pub const SELECTORS: &'static [[u8; 4usize]] = &[
[12u8, 199u8, 80u8, 145u8],
[37u8, 236u8, 108u8, 31u8],
[61u8, 34u8, 136u8, 65u8],
[63u8, 76u8, 183u8, 15u8],
[66u8, 238u8, 104u8, 181u8],
[67u8, 54u8, 148u8, 92u8],
[70u8, 51u8, 190u8, 50u8],
[111u8, 224u8, 45u8, 75u8],
[132u8, 158u8, 92u8, 240u8],
[135u8, 41u8, 183u8, 190u8],
[147u8, 51u8, 30u8, 76u8],
[152u8, 102u8, 153u8, 46u8],
[167u8, 45u8, 2u8, 99u8],
[212u8, 182u8, 143u8, 215u8],
[224u8, 225u8, 231u8, 98u8],
[230u8, 33u8, 159u8, 234u8],
];
}
#[automatically_derived]
impl alloy_sol_types::SolInterface for BLSApkRegistryErrors {
const NAME: &'static str = "BLSApkRegistryErrors";
const MIN_DATA_LENGTH: usize = 0usize;
const COUNT: usize = 16usize;
#[inline]
fn selector(&self) -> [u8; 4] {
match self {
Self::BLSPubkeyAlreadyRegistered(_) => {
<BLSPubkeyAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
}
Self::BlockNumberBeforeFirstUpdate(_) => {
<BlockNumberBeforeFirstUpdate as alloy_sol_types::SolError>::SELECTOR
}
Self::BlockNumberNotLatest(_) => {
<BlockNumberNotLatest as alloy_sol_types::SolError>::SELECTOR
}
Self::BlockNumberTooRecent(_) => {
<BlockNumberTooRecent as alloy_sol_types::SolError>::SELECTOR
}
Self::ECAddFailed(_) => <ECAddFailed as alloy_sol_types::SolError>::SELECTOR,
Self::ECMulFailed(_) => <ECMulFailed as alloy_sol_types::SolError>::SELECTOR,
Self::ECPairingFailed(_) => {
<ECPairingFailed as alloy_sol_types::SolError>::SELECTOR
}
Self::G2PubkeyAlreadySet(_) => {
<G2PubkeyAlreadySet as alloy_sol_types::SolError>::SELECTOR
}
Self::InvalidBLSSignatureOrPrivateKey(_) => {
<InvalidBLSSignatureOrPrivateKey as alloy_sol_types::SolError>::SELECTOR
}
Self::OnlyRegistryCoordinator(_) => {
<OnlyRegistryCoordinator as alloy_sol_types::SolError>::SELECTOR
}
Self::OnlyRegistryCoordinatorOwner(_) => {
<OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::SELECTOR
}
Self::OperatorAlreadyRegistered(_) => {
<OperatorAlreadyRegistered as alloy_sol_types::SolError>::SELECTOR
}
Self::OperatorNotRegistered(_) => {
<OperatorNotRegistered as alloy_sol_types::SolError>::SELECTOR
}
Self::QuorumAlreadyExists(_) => {
<QuorumAlreadyExists as alloy_sol_types::SolError>::SELECTOR
}
Self::QuorumDoesNotExist(_) => {
<QuorumDoesNotExist as alloy_sol_types::SolError>::SELECTOR
}
Self::ZeroPubKey(_) => <ZeroPubKey as alloy_sol_types::SolError>::SELECTOR,
}
}
#[inline]
fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
Self::SELECTORS.get(i).copied()
}
#[inline]
fn valid_selector(selector: [u8; 4]) -> bool {
Self::SELECTORS.binary_search(&selector).is_ok()
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw(selector: [u8; 4], data: &[u8]) -> alloy_sol_types::Result<Self> {
static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<BLSApkRegistryErrors>] = &[
{
fn ZeroPubKey(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ZeroPubKey as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::ZeroPubKey)
}
ZeroPubKey
},
{
fn OperatorNotRegistered(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::OperatorNotRegistered)
}
OperatorNotRegistered
},
{
fn BlockNumberTooRecent(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BlockNumberTooRecent as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::BlockNumberTooRecent)
}
BlockNumberTooRecent
},
{
fn BlockNumberBeforeFirstUpdate(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BlockNumberBeforeFirstUpdate as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(BLSApkRegistryErrors::BlockNumberBeforeFirstUpdate)
}
BlockNumberBeforeFirstUpdate
},
{
fn OperatorAlreadyRegistered(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OperatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(BLSApkRegistryErrors::OperatorAlreadyRegistered)
}
OperatorAlreadyRegistered
},
{
fn QuorumAlreadyExists(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<QuorumAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::QuorumAlreadyExists)
}
QuorumAlreadyExists
},
{
fn ECMulFailed(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ECMulFailed as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::ECMulFailed)
}
ECMulFailed
},
{
fn BlockNumberNotLatest(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BlockNumberNotLatest as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::BlockNumberNotLatest)
}
BlockNumberNotLatest
},
{
fn G2PubkeyAlreadySet(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<G2PubkeyAlreadySet as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::G2PubkeyAlreadySet)
}
G2PubkeyAlreadySet
},
{
fn OnlyRegistryCoordinator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::OnlyRegistryCoordinator)
}
OnlyRegistryCoordinator
},
{
fn ECPairingFailed(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ECPairingFailed as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::ECPairingFailed)
}
ECPairingFailed
},
{
fn BLSPubkeyAlreadyRegistered(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BLSPubkeyAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(BLSApkRegistryErrors::BLSPubkeyAlreadyRegistered)
}
BLSPubkeyAlreadyRegistered
},
{
fn InvalidBLSSignatureOrPrivateKey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<InvalidBLSSignatureOrPrivateKey as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(BLSApkRegistryErrors::InvalidBLSSignatureOrPrivateKey)
}
InvalidBLSSignatureOrPrivateKey
},
{
fn ECAddFailed(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ECAddFailed as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::ECAddFailed)
}
ECAddFailed
},
{
fn OnlyRegistryCoordinatorOwner(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw(
data,
)
.map(BLSApkRegistryErrors::OnlyRegistryCoordinatorOwner)
}
OnlyRegistryCoordinatorOwner
},
{
fn QuorumDoesNotExist(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<QuorumDoesNotExist as alloy_sol_types::SolError>::abi_decode_raw(data)
.map(BLSApkRegistryErrors::QuorumDoesNotExist)
}
QuorumDoesNotExist
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_SHIMS[idx](data)
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw_validate(
selector: [u8; 4],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
static DECODE_VALIDATE_SHIMS: &[fn(
&[u8],
)
-> alloy_sol_types::Result<BLSApkRegistryErrors>] = &[
{
fn ZeroPubKey(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ZeroPubKey as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
.map(BLSApkRegistryErrors::ZeroPubKey)
}
ZeroPubKey
},
{
fn OperatorNotRegistered(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OperatorNotRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::OperatorNotRegistered)
}
OperatorNotRegistered
},
{
fn BlockNumberTooRecent(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BlockNumberTooRecent as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::BlockNumberTooRecent)
}
BlockNumberTooRecent
},
{
fn BlockNumberBeforeFirstUpdate(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BlockNumberBeforeFirstUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::BlockNumberBeforeFirstUpdate)
}
BlockNumberBeforeFirstUpdate
},
{
fn OperatorAlreadyRegistered(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OperatorAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::OperatorAlreadyRegistered)
}
OperatorAlreadyRegistered
},
{
fn QuorumAlreadyExists(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<QuorumAlreadyExists as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::QuorumAlreadyExists)
}
QuorumAlreadyExists
},
{
fn ECMulFailed(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ECMulFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
.map(BLSApkRegistryErrors::ECMulFailed)
}
ECMulFailed
},
{
fn BlockNumberNotLatest(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BlockNumberNotLatest as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::BlockNumberNotLatest)
}
BlockNumberNotLatest
},
{
fn G2PubkeyAlreadySet(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<G2PubkeyAlreadySet as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::G2PubkeyAlreadySet)
}
G2PubkeyAlreadySet
},
{
fn OnlyRegistryCoordinator(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::OnlyRegistryCoordinator)
}
OnlyRegistryCoordinator
},
{
fn ECPairingFailed(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ECPairingFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::ECPairingFailed)
}
ECPairingFailed
},
{
fn BLSPubkeyAlreadyRegistered(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<BLSPubkeyAlreadyRegistered as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::BLSPubkeyAlreadyRegistered)
}
BLSPubkeyAlreadyRegistered
},
{
fn InvalidBLSSignatureOrPrivateKey(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<InvalidBLSSignatureOrPrivateKey as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::InvalidBLSSignatureOrPrivateKey)
}
InvalidBLSSignatureOrPrivateKey
},
{
fn ECAddFailed(data: &[u8]) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<ECAddFailed as alloy_sol_types::SolError>::abi_decode_raw_validate(data)
.map(BLSApkRegistryErrors::ECAddFailed)
}
ECAddFailed
},
{
fn OnlyRegistryCoordinatorOwner(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::OnlyRegistryCoordinatorOwner)
}
OnlyRegistryCoordinatorOwner
},
{
fn QuorumDoesNotExist(
data: &[u8],
) -> alloy_sol_types::Result<BLSApkRegistryErrors> {
<QuorumDoesNotExist as alloy_sol_types::SolError>::abi_decode_raw_validate(
data,
)
.map(BLSApkRegistryErrors::QuorumDoesNotExist)
}
QuorumDoesNotExist
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
));
};
DECODE_VALIDATE_SHIMS[idx](data)
}
#[inline]
fn abi_encoded_size(&self) -> usize {
match self {
Self::BLSPubkeyAlreadyRegistered(inner) => {
<BLSPubkeyAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::BlockNumberBeforeFirstUpdate(inner) => {
<BlockNumberBeforeFirstUpdate as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::BlockNumberNotLatest(inner) => {
<BlockNumberNotLatest as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::BlockNumberTooRecent(inner) => {
<BlockNumberTooRecent as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::ECAddFailed(inner) => {
<ECAddFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::ECMulFailed(inner) => {
<ECMulFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::ECPairingFailed(inner) => {
<ECPairingFailed as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::G2PubkeyAlreadySet(inner) => {
<G2PubkeyAlreadySet as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::InvalidBLSSignatureOrPrivateKey(inner) => {
<InvalidBLSSignatureOrPrivateKey as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::OnlyRegistryCoordinator(inner) => {
<OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::OnlyRegistryCoordinatorOwner(inner) => {
<OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::OperatorAlreadyRegistered(inner) => {
<OperatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encoded_size(
inner,
)
}
Self::OperatorNotRegistered(inner) => {
<OperatorNotRegistered as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::QuorumAlreadyExists(inner) => {
<QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::QuorumDoesNotExist(inner) => {
<QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
Self::ZeroPubKey(inner) => {
<ZeroPubKey as alloy_sol_types::SolError>::abi_encoded_size(inner)
}
}
}
#[inline]
fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
match self {
Self::BLSPubkeyAlreadyRegistered(inner) => {
<BLSPubkeyAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
inner, out,
)
}
Self::BlockNumberBeforeFirstUpdate(inner) => {
<BlockNumberBeforeFirstUpdate as alloy_sol_types::SolError>::abi_encode_raw(
inner, out,
)
}
Self::BlockNumberNotLatest(inner) => {
<BlockNumberNotLatest as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::BlockNumberTooRecent(inner) => {
<BlockNumberTooRecent as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::ECAddFailed(inner) => {
<ECAddFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::ECMulFailed(inner) => {
<ECMulFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::ECPairingFailed(inner) => {
<ECPairingFailed as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::G2PubkeyAlreadySet(inner) => {
<G2PubkeyAlreadySet as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::InvalidBLSSignatureOrPrivateKey(inner) => {
<InvalidBLSSignatureOrPrivateKey as alloy_sol_types::SolError>::abi_encode_raw(
inner, out,
)
}
Self::OnlyRegistryCoordinator(inner) => {
<OnlyRegistryCoordinator as alloy_sol_types::SolError>::abi_encode_raw(
inner, out,
)
}
Self::OnlyRegistryCoordinatorOwner(inner) => {
<OnlyRegistryCoordinatorOwner as alloy_sol_types::SolError>::abi_encode_raw(
inner, out,
)
}
Self::OperatorAlreadyRegistered(inner) => {
<OperatorAlreadyRegistered as alloy_sol_types::SolError>::abi_encode_raw(
inner, out,
)
}
Self::OperatorNotRegistered(inner) => {
<OperatorNotRegistered as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::QuorumAlreadyExists(inner) => {
<QuorumAlreadyExists as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::QuorumDoesNotExist(inner) => {
<QuorumDoesNotExist as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
Self::ZeroPubKey(inner) => {
<ZeroPubKey as alloy_sol_types::SolError>::abi_encode_raw(inner, out)
}
}
}
}
///Container for all the [`BLSApkRegistry`](self) events.
#[derive(serde::Serialize, serde::Deserialize, Debug, PartialEq, Eq, Hash)]
pub enum BLSApkRegistryEvents {
#[allow(missing_docs)]
Initialized(Initialized),
#[allow(missing_docs)]
NewG2PubkeyRegistration(NewG2PubkeyRegistration),
#[allow(missing_docs)]
NewPubkeyRegistration(NewPubkeyRegistration),
#[allow(missing_docs)]
OperatorAddedToQuorums(OperatorAddedToQuorums),
#[allow(missing_docs)]
OperatorRemovedFromQuorums(OperatorRemovedFromQuorums),
}
#[automatically_derived]
impl BLSApkRegistryEvents {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same order as the variants.
/// No guarantees are made about the order of the selectors.
///
/// Prefer using `SolInterface` methods instead.
pub const SELECTORS: &'static [[u8; 32usize]] = &[
[
92u8, 79u8, 159u8, 40u8, 21u8, 61u8, 191u8, 63u8, 0u8, 230u8, 150u8, 7u8, 165u8,
158u8, 130u8, 173u8, 128u8, 111u8, 255u8, 183u8, 141u8, 9u8, 241u8, 121u8, 246u8,
36u8, 50u8, 247u8, 233u8, 210u8, 81u8, 26u8,
],
[
115u8, 162u8, 183u8, 251u8, 132u8, 71u8, 36u8, 185u8, 113u8, 128u8, 42u8, 233u8,
177u8, 93u8, 176u8, 148u8, 212u8, 183u8, 25u8, 45u8, 249u8, 215u8, 53u8, 14u8,
20u8, 235u8, 70u8, 107u8, 155u8, 34u8, 235u8, 78u8,
],
[
127u8, 38u8, 184u8, 63u8, 249u8, 110u8, 31u8, 43u8, 106u8, 104u8, 47u8, 19u8, 56u8,
82u8, 246u8, 121u8, 138u8, 9u8, 196u8, 101u8, 218u8, 149u8, 146u8, 20u8, 96u8,
206u8, 251u8, 56u8, 71u8, 64u8, 36u8, 152u8,
],
[
227u8, 251u8, 102u8, 19u8, 175u8, 46u8, 137u8, 48u8, 207u8, 133u8, 212u8, 127u8,
207u8, 109u8, 177u8, 1u8, 146u8, 34u8, 74u8, 100u8, 198u8, 203u8, 232u8, 2u8, 62u8,
14u8, 238u8, 27u8, 163u8, 130u8, 128u8, 65u8,
],
[
248u8, 67u8, 236u8, 213u8, 58u8, 86u8, 54u8, 117u8, 230u8, 33u8, 7u8, 190u8, 20u8,
148u8, 253u8, 222u8, 74u8, 61u8, 73u8, 174u8, 237u8, 175u8, 141u8, 136u8, 198u8,
22u8, 216u8, 83u8, 70u8, 227u8, 80u8, 14u8,
],
];
}
#[automatically_derived]
impl alloy_sol_types::SolEventInterface for BLSApkRegistryEvents {
const NAME: &'static str = "BLSApkRegistryEvents";
const COUNT: usize = 5usize;
fn decode_raw_log(
topics: &[alloy_sol_types::Word],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
match topics.first().copied() {
Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<Initialized as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
.map(Self::Initialized)
}
Some(<NewG2PubkeyRegistration as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<NewG2PubkeyRegistration as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::NewG2PubkeyRegistration)
}
Some(<NewPubkeyRegistration as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<NewPubkeyRegistration as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::NewPubkeyRegistration)
}
Some(<OperatorAddedToQuorums as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<OperatorAddedToQuorums as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::OperatorAddedToQuorums)
}
Some(<OperatorRemovedFromQuorums as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
<OperatorRemovedFromQuorums as alloy_sol_types::SolEvent>::decode_raw_log(
topics, data,
)
.map(Self::OperatorRemovedFromQuorums)
}
_ => alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
name: <Self as alloy_sol_types::SolEventInterface>::NAME,
log: alloy_sol_types::private::Box::new(
alloy_sol_types::private::LogData::new_unchecked(
topics.to_vec(),
data.to_vec().into(),
),
),
}),
}
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for BLSApkRegistryEvents {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
match self {
Self::Initialized(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
Self::NewG2PubkeyRegistration(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
Self::NewPubkeyRegistration(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
Self::OperatorAddedToQuorums(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
Self::OperatorRemovedFromQuorums(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
}
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
match self {
Self::Initialized(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
Self::NewG2PubkeyRegistration(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
Self::NewPubkeyRegistration(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
Self::OperatorAddedToQuorums(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
Self::OperatorRemovedFromQuorums(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
}
}
}
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`BLSApkRegistry`](self) contract instance.
See the [wrapper's documentation](`BLSApkRegistryInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
provider: P,
) -> BLSApkRegistryInstance<P, N> {
BLSApkRegistryInstance::<P, N>::new(address, provider)
}
/**Deploys this contract using the given `provider` and constructor arguments, if any.
Returns a new instance of the contract, if the deployment was successful.
For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
#[inline]
pub fn deploy<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>(
provider: P,
_slashingRegistryCoordinator: alloy::sol_types::private::Address,
) -> impl ::core::future::Future<Output = alloy_contract::Result<BLSApkRegistryInstance<P, N>>>
{
BLSApkRegistryInstance::<P, N>::deploy(provider, _slashingRegistryCoordinator)
}
/**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
and constructor arguments, if any.
This is a simple wrapper around creating a `RawCallBuilder` with the data set to
the bytecode concatenated with the constructor's ABI-encoded arguments.*/
#[inline]
pub fn deploy_builder<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
provider: P,
_slashingRegistryCoordinator: alloy::sol_types::private::Address,
) -> alloy_contract::RawCallBuilder<P, N> {
BLSApkRegistryInstance::<P, N>::deploy_builder(provider, _slashingRegistryCoordinator)
}
/**A [`BLSApkRegistry`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`BLSApkRegistry`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct BLSApkRegistryInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for BLSApkRegistryInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("BLSApkRegistryInstance")
.field(&self.address)
.finish()
}
}
/// Instantiation and getters/setters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BLSApkRegistryInstance<P, N>
{
/**Creates a new wrapper around an on-chain [`BLSApkRegistry`](self) contract instance.
See the [wrapper's documentation](`BLSApkRegistryInstance`) for more details.*/
#[inline]
pub const fn new(address: alloy_sol_types::private::Address, provider: P) -> Self {
Self {
address,
provider,
_network: ::core::marker::PhantomData,
}
}
/**Deploys this contract using the given `provider` and constructor arguments, if any.
Returns a new instance of the contract, if the deployment was successful.
For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
#[inline]
pub async fn deploy(
provider: P,
_slashingRegistryCoordinator: alloy::sol_types::private::Address,
) -> alloy_contract::Result<BLSApkRegistryInstance<P, N>> {
let call_builder = Self::deploy_builder(provider, _slashingRegistryCoordinator);
let contract_address = call_builder.deploy().await?;
Ok(Self::new(contract_address, call_builder.provider))
}
/**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
and constructor arguments, if any.
This is a simple wrapper around creating a `RawCallBuilder` with the data set to
the bytecode concatenated with the constructor's ABI-encoded arguments.*/
#[inline]
pub fn deploy_builder(
provider: P,
_slashingRegistryCoordinator: alloy::sol_types::private::Address,
) -> alloy_contract::RawCallBuilder<P, N> {
alloy_contract::RawCallBuilder::new_raw_deploy(
provider,
[
&BYTECODE[..],
&alloy_sol_types::SolConstructor::abi_encode(&constructorCall {
_slashingRegistryCoordinator,
})[..],
]
.concat()
.into(),
)
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> BLSApkRegistryInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> BLSApkRegistryInstance<P, N> {
BLSApkRegistryInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BLSApkRegistryInstance<P, N>
{
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
///Creates a new call builder for the [`apkHistory`] function.
pub fn apkHistory(
&self,
quorumNumber: u8,
_1: alloy::sol_types::private::primitives::aliases::U256,
) -> alloy_contract::SolCallBuilder<&P, apkHistoryCall, N> {
self.call_builder(&apkHistoryCall { quorumNumber, _1 })
}
///Creates a new call builder for the [`currentApk`] function.
pub fn currentApk(
&self,
quorumNumber: u8,
) -> alloy_contract::SolCallBuilder<&P, currentApkCall, N> {
self.call_builder(¤tApkCall { quorumNumber })
}
///Creates a new call builder for the [`deregisterOperator`] function.
pub fn deregisterOperator(
&self,
operator: alloy::sol_types::private::Address,
quorumNumbers: alloy::sol_types::private::Bytes,
) -> alloy_contract::SolCallBuilder<&P, deregisterOperatorCall, N> {
self.call_builder(&deregisterOperatorCall {
operator,
quorumNumbers,
})
}
///Creates a new call builder for the [`getApk`] function.
pub fn getApk(
&self,
quorumNumber: u8,
) -> alloy_contract::SolCallBuilder<&P, getApkCall, N> {
self.call_builder(&getApkCall { quorumNumber })
}
///Creates a new call builder for the [`getApkHashAtBlockNumberAndIndex`] function.
pub fn getApkHashAtBlockNumberAndIndex(
&self,
quorumNumber: u8,
blockNumber: u32,
index: alloy::sol_types::private::primitives::aliases::U256,
) -> alloy_contract::SolCallBuilder<&P, getApkHashAtBlockNumberAndIndexCall, N> {
self.call_builder(&getApkHashAtBlockNumberAndIndexCall {
quorumNumber,
blockNumber,
index,
})
}
///Creates a new call builder for the [`getApkHistoryLength`] function.
pub fn getApkHistoryLength(
&self,
quorumNumber: u8,
) -> alloy_contract::SolCallBuilder<&P, getApkHistoryLengthCall, N> {
self.call_builder(&getApkHistoryLengthCall { quorumNumber })
}
///Creates a new call builder for the [`getApkIndicesAtBlockNumber`] function.
pub fn getApkIndicesAtBlockNumber(
&self,
quorumNumbers: alloy::sol_types::private::Bytes,
blockNumber: alloy::sol_types::private::primitives::aliases::U256,
) -> alloy_contract::SolCallBuilder<&P, getApkIndicesAtBlockNumberCall, N> {
self.call_builder(&getApkIndicesAtBlockNumberCall {
quorumNumbers,
blockNumber,
})
}
///Creates a new call builder for the [`getApkUpdateAtIndex`] function.
pub fn getApkUpdateAtIndex(
&self,
quorumNumber: u8,
index: alloy::sol_types::private::primitives::aliases::U256,
) -> alloy_contract::SolCallBuilder<&P, getApkUpdateAtIndexCall, N> {
self.call_builder(&getApkUpdateAtIndexCall {
quorumNumber,
index,
})
}
///Creates a new call builder for the [`getOperatorFromPubkeyHash`] function.
pub fn getOperatorFromPubkeyHash(
&self,
pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
) -> alloy_contract::SolCallBuilder<&P, getOperatorFromPubkeyHashCall, N> {
self.call_builder(&getOperatorFromPubkeyHashCall { pubkeyHash })
}
///Creates a new call builder for the [`getOperatorId`] function.
pub fn getOperatorId(
&self,
operator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, getOperatorIdCall, N> {
self.call_builder(&getOperatorIdCall { operator })
}
///Creates a new call builder for the [`getOperatorPubkeyG2`] function.
pub fn getOperatorPubkeyG2(
&self,
operator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, getOperatorPubkeyG2Call, N> {
self.call_builder(&getOperatorPubkeyG2Call { operator })
}
///Creates a new call builder for the [`getOrRegisterOperatorId`] function.
pub fn getOrRegisterOperatorId(
&self,
operator: alloy::sol_types::private::Address,
params: <IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy::sol_types::SolType>::RustType,
pubkeyRegistrationMessageHash: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
) -> alloy_contract::SolCallBuilder<&P, getOrRegisterOperatorIdCall, N> {
self.call_builder(&getOrRegisterOperatorIdCall {
operator,
params,
pubkeyRegistrationMessageHash,
})
}
///Creates a new call builder for the [`getRegisteredPubkey`] function.
pub fn getRegisteredPubkey(
&self,
operator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, getRegisteredPubkeyCall, N> {
self.call_builder(&getRegisteredPubkeyCall { operator })
}
///Creates a new call builder for the [`initializeQuorum`] function.
pub fn initializeQuorum(
&self,
quorumNumber: u8,
) -> alloy_contract::SolCallBuilder<&P, initializeQuorumCall, N> {
self.call_builder(&initializeQuorumCall { quorumNumber })
}
///Creates a new call builder for the [`operatorToPubkey`] function.
pub fn operatorToPubkey(
&self,
operator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, operatorToPubkeyCall, N> {
self.call_builder(&operatorToPubkeyCall { operator })
}
///Creates a new call builder for the [`operatorToPubkeyHash`] function.
pub fn operatorToPubkeyHash(
&self,
operator: alloy::sol_types::private::Address,
) -> alloy_contract::SolCallBuilder<&P, operatorToPubkeyHashCall, N> {
self.call_builder(&operatorToPubkeyHashCall { operator })
}
///Creates a new call builder for the [`pubkeyHashToOperator`] function.
pub fn pubkeyHashToOperator(
&self,
pubkeyHash: alloy::sol_types::private::FixedBytes<32>,
) -> alloy_contract::SolCallBuilder<&P, pubkeyHashToOperatorCall, N> {
self.call_builder(&pubkeyHashToOperatorCall { pubkeyHash })
}
///Creates a new call builder for the [`registerBLSPublicKey`] function.
pub fn registerBLSPublicKey(
&self,
operator: alloy::sol_types::private::Address,
params: <IBLSApkRegistryTypes::PubkeyRegistrationParams as alloy::sol_types::SolType>::RustType,
pubkeyRegistrationMessageHash: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
) -> alloy_contract::SolCallBuilder<&P, registerBLSPublicKeyCall, N> {
self.call_builder(®isterBLSPublicKeyCall {
operator,
params,
pubkeyRegistrationMessageHash,
})
}
///Creates a new call builder for the [`registerOperator`] function.
pub fn registerOperator(
&self,
operator: alloy::sol_types::private::Address,
quorumNumbers: alloy::sol_types::private::Bytes,
) -> alloy_contract::SolCallBuilder<&P, registerOperatorCall, N> {
self.call_builder(®isterOperatorCall {
operator,
quorumNumbers,
})
}
///Creates a new call builder for the [`registryCoordinator`] function.
pub fn registryCoordinator(
&self,
) -> alloy_contract::SolCallBuilder<&P, registryCoordinatorCall, N> {
self.call_builder(®istryCoordinatorCall)
}
///Creates a new call builder for the [`verifyAndRegisterG2PubkeyForOperator`] function.
pub fn verifyAndRegisterG2PubkeyForOperator(
&self,
operator: alloy::sol_types::private::Address,
pubkeyG2: <BN254::G2Point as alloy::sol_types::SolType>::RustType,
) -> alloy_contract::SolCallBuilder<&P, verifyAndRegisterG2PubkeyForOperatorCall, N>
{
self.call_builder(&verifyAndRegisterG2PubkeyForOperatorCall { operator, pubkeyG2 })
}
}
/// Event filters.
#[automatically_derived]
impl<P: alloy_contract::private::Provider<N>, N: alloy_contract::private::Network>
BLSApkRegistryInstance<P, N>
{
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
///Creates a new event filter for the [`Initialized`] event.
pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
self.event_filter::<Initialized>()
}
///Creates a new event filter for the [`NewG2PubkeyRegistration`] event.
pub fn NewG2PubkeyRegistration_filter(
&self,
) -> alloy_contract::Event<&P, NewG2PubkeyRegistration, N> {
self.event_filter::<NewG2PubkeyRegistration>()
}
///Creates a new event filter for the [`NewPubkeyRegistration`] event.
pub fn NewPubkeyRegistration_filter(
&self,
) -> alloy_contract::Event<&P, NewPubkeyRegistration, N> {
self.event_filter::<NewPubkeyRegistration>()
}
///Creates a new event filter for the [`OperatorAddedToQuorums`] event.
pub fn OperatorAddedToQuorums_filter(
&self,
) -> alloy_contract::Event<&P, OperatorAddedToQuorums, N> {
self.event_filter::<OperatorAddedToQuorums>()
}
///Creates a new event filter for the [`OperatorRemovedFromQuorums`] event.
pub fn OperatorRemovedFromQuorums_filter(
&self,
) -> alloy_contract::Event<&P, OperatorRemovedFromQuorums, N> {
self.event_filter::<OperatorRemovedFromQuorums>()
}
}
}