eigenlayer_contract_deployer/bindings/core/
upgradeable_beacon.rs

1#![allow(clippy::all, clippy::pedantic, clippy::nursery, warnings, unknown_lints, rustdoc::all, elided_lifetimes_in_paths)]
2use UpgradeableBeacon::*;
3
4/**
5
6Generated by the following Solidity interface...
7```solidity
8interface UpgradeableBeacon {
9    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
10    event Upgraded(address indexed implementation);
11
12    constructor(address implementation_);
13
14    function implementation() external view returns (address);
15    function owner() external view returns (address);
16    function renounceOwnership() external;
17    function transferOwnership(address newOwner) external;
18    function upgradeTo(address newImplementation) external;
19}
20```
21
22...which was generated by the following JSON ABI:
23```json
24[
25  {
26    "type": "constructor",
27    "inputs": [
28      {
29        "name": "implementation_",
30        "type": "address",
31        "internalType": "address"
32      }
33    ],
34    "stateMutability": "nonpayable"
35  },
36  {
37    "type": "function",
38    "name": "implementation",
39    "inputs": [],
40    "outputs": [
41      {
42        "name": "",
43        "type": "address",
44        "internalType": "address"
45      }
46    ],
47    "stateMutability": "view"
48  },
49  {
50    "type": "function",
51    "name": "owner",
52    "inputs": [],
53    "outputs": [
54      {
55        "name": "",
56        "type": "address",
57        "internalType": "address"
58      }
59    ],
60    "stateMutability": "view"
61  },
62  {
63    "type": "function",
64    "name": "renounceOwnership",
65    "inputs": [],
66    "outputs": [],
67    "stateMutability": "nonpayable"
68  },
69  {
70    "type": "function",
71    "name": "transferOwnership",
72    "inputs": [
73      {
74        "name": "newOwner",
75        "type": "address",
76        "internalType": "address"
77      }
78    ],
79    "outputs": [],
80    "stateMutability": "nonpayable"
81  },
82  {
83    "type": "function",
84    "name": "upgradeTo",
85    "inputs": [
86      {
87        "name": "newImplementation",
88        "type": "address",
89        "internalType": "address"
90      }
91    ],
92    "outputs": [],
93    "stateMutability": "nonpayable"
94  },
95  {
96    "type": "event",
97    "name": "OwnershipTransferred",
98    "inputs": [
99      {
100        "name": "previousOwner",
101        "type": "address",
102        "indexed": true,
103        "internalType": "address"
104      },
105      {
106        "name": "newOwner",
107        "type": "address",
108        "indexed": true,
109        "internalType": "address"
110      }
111    ],
112    "anonymous": false
113  },
114  {
115    "type": "event",
116    "name": "Upgraded",
117    "inputs": [
118      {
119        "name": "implementation",
120        "type": "address",
121        "indexed": true,
122        "internalType": "address"
123      }
124    ],
125    "anonymous": false
126  }
127]
128```*/
129#[allow(
130    non_camel_case_types,
131    non_snake_case,
132    clippy::pub_underscore_fields,
133    clippy::style,
134    clippy::empty_structs_with_brackets
135)]
136pub mod UpgradeableBeacon {
137    use super::*;
138    use alloy::sol_types as alloy_sol_types;
139    /// The creation / init bytecode of the contract.
140    ///
141    /// ```text
142    ///0x608060405234801561000f575f5ffd5b506040516104ac3803806104ac83398101604081905261002e91610138565b61003733610046565b61004081610095565b50610165565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381163b6101165760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f60208284031215610148575f5ffd5b81516001600160a01b038116811461015e575f5ffd5b9392505050565b61033a806101725f395ff3fe608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea264697066735822122036fba577453b06abc78cdb9ab2ad6dc2718aa0824935c297593cecb6d688577564736f6c634300081b0033
143    /// ```
144    #[rustfmt::skip]
145    #[allow(clippy::all)]
146    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
147        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`@Qa\x04\xAC8\x03\x80a\x04\xAC\x839\x81\x01`@\x81\x90Ra\0.\x91a\x018V[a\x0073a\0FV[a\0@\x81a\0\x95V[Pa\x01eV[_\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x01\x16W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01R\x7Fn is not a contract\0\0\0\0\0\0\0\0\0\0\0\0\0`d\x82\x01R`\x84\x01`@Q\x80\x91\x03\x90\xFD[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[_` \x82\x84\x03\x12\x15a\x01HW__\xFD[\x81Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x01^W__\xFD[\x93\x92PPPV[a\x03:\x80a\x01r_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0UW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0YW\x80c\\`\xDA\x1B\x14a\0nW\x80cqP\x18\xA6\x14a\0\x97W\x80c\x8D\xA5\xCB[\x14a\0\x9FW\x80c\xF2\xFD\xE3\x8B\x14a\0\xAFW[__\xFD[a\0la\0g6`\x04a\x02\xD7V[a\0\xC2V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0la\x01\tV[_T`\x01`\x01`\xA0\x1B\x03\x16a\0{V[a\0la\0\xBD6`\x04a\x02\xD7V[a\x01\x1CV[a\0\xCAa\x01\x9AV[a\0\xD3\x81a\x01\xF3V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[a\x01\x11a\x01\x9AV[a\x01\x1A_a\x02\x88V[V[a\x01$a\x01\x9AV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\x97\x81a\x02\x88V[PV[_T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x01\x85V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02fW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x85V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[_\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[_` \x82\x84\x03\x12\x15a\x02\xE7W__\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\xFDW__\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 6\xFB\xA5wE;\x06\xAB\xC7\x8C\xDB\x9A\xB2\xADm\xC2q\x8A\xA0\x82I5\xC2\x97Y<\xEC\xB6\xD6\x88WudsolcC\0\x08\x1B\x003",
148    );
149    /// The runtime bytecode of the contract, as deployed on the network.
150    ///
151    /// ```text
152    ///0x608060405234801561000f575f5ffd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f5ffd5b61006c6100673660046102d7565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c610109565b5f546001600160a01b031661007b565b61006c6100bd3660046102d7565b61011c565b6100ca61019a565b6100d3816101f3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b61011161019a565b61011a5f610288565b565b61012461019a565b6001600160a01b03811661018e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019781610288565b50565b5f546001600160a01b0316331461011a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610185565b6001600160a01b0381163b6102665760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b6064820152608401610185565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156102e7575f5ffd5b81356001600160a01b03811681146102fd575f5ffd5b939250505056fea264697066735822122036fba577453b06abc78cdb9ab2ad6dc2718aa0824935c297593cecb6d688577564736f6c634300081b0033
153    /// ```
154    #[rustfmt::skip]
155    #[allow(clippy::all)]
156    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
157        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0UW_5`\xE0\x1C\x80c6Y\xCF\xE6\x14a\0YW\x80c\\`\xDA\x1B\x14a\0nW\x80cqP\x18\xA6\x14a\0\x97W\x80c\x8D\xA5\xCB[\x14a\0\x9FW\x80c\xF2\xFD\xE3\x8B\x14a\0\xAFW[__\xFD[a\0la\0g6`\x04a\x02\xD7V[a\0\xC2V[\0[`\x01T`\x01`\x01`\xA0\x1B\x03\x16[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xF3[a\0la\x01\tV[_T`\x01`\x01`\xA0\x1B\x03\x16a\0{V[a\0la\0\xBD6`\x04a\x02\xD7V[a\x01\x1CV[a\0\xCAa\x01\x9AV[a\0\xD3\x81a\x01\xF3V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2PV[a\x01\x11a\x01\x9AV[a\x01\x1A_a\x02\x88V[V[a\x01$a\x01\x9AV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x01\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[a\x01\x97\x81a\x02\x88V[PV[_T`\x01`\x01`\xA0\x1B\x03\x163\x14a\x01\x1AW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x01\x85V[`\x01`\x01`\xA0\x1B\x03\x81\x16;a\x02fW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`3`$\x82\x01R\x7FUpgradeableBeacon: implementatio`D\x82\x01Rr\x1B\x88\x1A\\\xC8\x1B\x9B\xDD\x08\x18H\x18\xDB\xDB\x9D\x1C\x98X\xDD`j\x1B`d\x82\x01R`\x84\x01a\x01\x85V[`\x01\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[_\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[_` \x82\x84\x03\x12\x15a\x02\xE7W__\xFD[\x815`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x02\xFDW__\xFD[\x93\x92PPPV\xFE\xA2dipfsX\"\x12 6\xFB\xA5wE;\x06\xAB\xC7\x8C\xDB\x9A\xB2\xADm\xC2q\x8A\xA0\x82I5\xC2\x97Y<\xEC\xB6\xD6\x88WudsolcC\0\x08\x1B\x003",
158    );
159    #[derive(serde::Serialize, serde::Deserialize)]
160    #[derive(Default, Debug, PartialEq, Eq, Hash)]
161    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
162```solidity
163event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
164```*/
165    #[allow(
166        non_camel_case_types,
167        non_snake_case,
168        clippy::pub_underscore_fields,
169        clippy::style
170    )]
171    #[derive(Clone)]
172    pub struct OwnershipTransferred {
173        #[allow(missing_docs)]
174        pub previousOwner: alloy::sol_types::private::Address,
175        #[allow(missing_docs)]
176        pub newOwner: alloy::sol_types::private::Address,
177    }
178    #[allow(
179        non_camel_case_types,
180        non_snake_case,
181        clippy::pub_underscore_fields,
182        clippy::style
183    )]
184    const _: () = {
185        use alloy::sol_types as alloy_sol_types;
186        #[automatically_derived]
187        impl alloy_sol_types::SolEvent for OwnershipTransferred {
188            type DataTuple<'a> = ();
189            type DataToken<'a> = <Self::DataTuple<
190                'a,
191            > as alloy_sol_types::SolType>::Token<'a>;
192            type TopicList = (
193                alloy_sol_types::sol_data::FixedBytes<32>,
194                alloy::sol_types::sol_data::Address,
195                alloy::sol_types::sol_data::Address,
196            );
197            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
198            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
199                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
200                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
201                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
202            ]);
203            const ANONYMOUS: bool = false;
204            #[allow(unused_variables)]
205            #[inline]
206            fn new(
207                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
208                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
209            ) -> Self {
210                Self {
211                    previousOwner: topics.1,
212                    newOwner: topics.2,
213                }
214            }
215            #[inline]
216            fn check_signature(
217                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
218            ) -> alloy_sol_types::Result<()> {
219                if topics.0 != Self::SIGNATURE_HASH {
220                    return Err(
221                        alloy_sol_types::Error::invalid_event_signature_hash(
222                            Self::SIGNATURE,
223                            topics.0,
224                            Self::SIGNATURE_HASH,
225                        ),
226                    );
227                }
228                Ok(())
229            }
230            #[inline]
231            fn tokenize_body(&self) -> Self::DataToken<'_> {
232                ()
233            }
234            #[inline]
235            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
236                (
237                    Self::SIGNATURE_HASH.into(),
238                    self.previousOwner.clone(),
239                    self.newOwner.clone(),
240                )
241            }
242            #[inline]
243            fn encode_topics_raw(
244                &self,
245                out: &mut [alloy_sol_types::abi::token::WordToken],
246            ) -> alloy_sol_types::Result<()> {
247                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
248                    return Err(alloy_sol_types::Error::Overrun);
249                }
250                out[0usize] = alloy_sol_types::abi::token::WordToken(
251                    Self::SIGNATURE_HASH,
252                );
253                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
254                    &self.previousOwner,
255                );
256                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
257                    &self.newOwner,
258                );
259                Ok(())
260            }
261        }
262        #[automatically_derived]
263        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
264            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
265                From::from(self)
266            }
267            fn into_log_data(self) -> alloy_sol_types::private::LogData {
268                From::from(&self)
269            }
270        }
271        #[automatically_derived]
272        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
273            #[inline]
274            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
275                alloy_sol_types::SolEvent::encode_log_data(this)
276            }
277        }
278    };
279    #[derive(serde::Serialize, serde::Deserialize)]
280    #[derive(Default, Debug, PartialEq, Eq, Hash)]
281    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
282```solidity
283event Upgraded(address indexed implementation);
284```*/
285    #[allow(
286        non_camel_case_types,
287        non_snake_case,
288        clippy::pub_underscore_fields,
289        clippy::style
290    )]
291    #[derive(Clone)]
292    pub struct Upgraded {
293        #[allow(missing_docs)]
294        pub implementation: alloy::sol_types::private::Address,
295    }
296    #[allow(
297        non_camel_case_types,
298        non_snake_case,
299        clippy::pub_underscore_fields,
300        clippy::style
301    )]
302    const _: () = {
303        use alloy::sol_types as alloy_sol_types;
304        #[automatically_derived]
305        impl alloy_sol_types::SolEvent for Upgraded {
306            type DataTuple<'a> = ();
307            type DataToken<'a> = <Self::DataTuple<
308                'a,
309            > as alloy_sol_types::SolType>::Token<'a>;
310            type TopicList = (
311                alloy_sol_types::sol_data::FixedBytes<32>,
312                alloy::sol_types::sol_data::Address,
313            );
314            const SIGNATURE: &'static str = "Upgraded(address)";
315            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
316                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
317                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
318                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
319            ]);
320            const ANONYMOUS: bool = false;
321            #[allow(unused_variables)]
322            #[inline]
323            fn new(
324                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
325                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
326            ) -> Self {
327                Self { implementation: topics.1 }
328            }
329            #[inline]
330            fn check_signature(
331                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
332            ) -> alloy_sol_types::Result<()> {
333                if topics.0 != Self::SIGNATURE_HASH {
334                    return Err(
335                        alloy_sol_types::Error::invalid_event_signature_hash(
336                            Self::SIGNATURE,
337                            topics.0,
338                            Self::SIGNATURE_HASH,
339                        ),
340                    );
341                }
342                Ok(())
343            }
344            #[inline]
345            fn tokenize_body(&self) -> Self::DataToken<'_> {
346                ()
347            }
348            #[inline]
349            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
350                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
351            }
352            #[inline]
353            fn encode_topics_raw(
354                &self,
355                out: &mut [alloy_sol_types::abi::token::WordToken],
356            ) -> alloy_sol_types::Result<()> {
357                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
358                    return Err(alloy_sol_types::Error::Overrun);
359                }
360                out[0usize] = alloy_sol_types::abi::token::WordToken(
361                    Self::SIGNATURE_HASH,
362                );
363                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
364                    &self.implementation,
365                );
366                Ok(())
367            }
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::IntoLogData for Upgraded {
371            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
372                From::from(self)
373            }
374            fn into_log_data(self) -> alloy_sol_types::private::LogData {
375                From::from(&self)
376            }
377        }
378        #[automatically_derived]
379        impl From<&Upgraded> for alloy_sol_types::private::LogData {
380            #[inline]
381            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
382                alloy_sol_types::SolEvent::encode_log_data(this)
383            }
384        }
385    };
386    /**Constructor`.
387```solidity
388constructor(address implementation_);
389```*/
390    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
391    #[derive(Clone)]
392    pub struct constructorCall {
393        #[allow(missing_docs)]
394        pub implementation_: alloy::sol_types::private::Address,
395    }
396    const _: () = {
397        use alloy::sol_types as alloy_sol_types;
398        {
399            #[doc(hidden)]
400            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
401            #[doc(hidden)]
402            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
403            #[cfg(test)]
404            #[allow(dead_code, unreachable_patterns)]
405            fn _type_assertion(
406                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
407            ) {
408                match _t {
409                    alloy_sol_types::private::AssertTypeEq::<
410                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
411                    >(_) => {}
412                }
413            }
414            #[automatically_derived]
415            #[doc(hidden)]
416            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
417                fn from(value: constructorCall) -> Self {
418                    (value.implementation_,)
419                }
420            }
421            #[automatically_derived]
422            #[doc(hidden)]
423            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
424                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
425                    Self { implementation_: tuple.0 }
426                }
427            }
428        }
429        #[automatically_derived]
430        impl alloy_sol_types::SolConstructor for constructorCall {
431            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
432            type Token<'a> = <Self::Parameters<
433                'a,
434            > as alloy_sol_types::SolType>::Token<'a>;
435            #[inline]
436            fn new<'a>(
437                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
438            ) -> Self {
439                tuple.into()
440            }
441            #[inline]
442            fn tokenize(&self) -> Self::Token<'_> {
443                (
444                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
445                        &self.implementation_,
446                    ),
447                )
448            }
449        }
450    };
451    #[derive(serde::Serialize, serde::Deserialize)]
452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
453    /**Function with signature `implementation()` and selector `0x5c60da1b`.
454```solidity
455function implementation() external view returns (address);
456```*/
457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
458    #[derive(Clone)]
459    pub struct implementationCall;
460    #[derive(serde::Serialize, serde::Deserialize)]
461    #[derive(Default, Debug, PartialEq, Eq, Hash)]
462    ///Container type for the return parameters of the [`implementation()`](implementationCall) function.
463    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
464    #[derive(Clone)]
465    pub struct implementationReturn {
466        #[allow(missing_docs)]
467        pub _0: alloy::sol_types::private::Address,
468    }
469    #[allow(
470        non_camel_case_types,
471        non_snake_case,
472        clippy::pub_underscore_fields,
473        clippy::style
474    )]
475    const _: () = {
476        use alloy::sol_types as alloy_sol_types;
477        {
478            #[doc(hidden)]
479            type UnderlyingSolTuple<'a> = ();
480            #[doc(hidden)]
481            type UnderlyingRustTuple<'a> = ();
482            #[cfg(test)]
483            #[allow(dead_code, unreachable_patterns)]
484            fn _type_assertion(
485                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
486            ) {
487                match _t {
488                    alloy_sol_types::private::AssertTypeEq::<
489                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
490                    >(_) => {}
491                }
492            }
493            #[automatically_derived]
494            #[doc(hidden)]
495            impl ::core::convert::From<implementationCall> for UnderlyingRustTuple<'_> {
496                fn from(value: implementationCall) -> Self {
497                    ()
498                }
499            }
500            #[automatically_derived]
501            #[doc(hidden)]
502            impl ::core::convert::From<UnderlyingRustTuple<'_>> for implementationCall {
503                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
504                    Self
505                }
506            }
507        }
508        {
509            #[doc(hidden)]
510            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
511            #[doc(hidden)]
512            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
513            #[cfg(test)]
514            #[allow(dead_code, unreachable_patterns)]
515            fn _type_assertion(
516                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
517            ) {
518                match _t {
519                    alloy_sol_types::private::AssertTypeEq::<
520                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
521                    >(_) => {}
522                }
523            }
524            #[automatically_derived]
525            #[doc(hidden)]
526            impl ::core::convert::From<implementationReturn>
527            for UnderlyingRustTuple<'_> {
528                fn from(value: implementationReturn) -> Self {
529                    (value._0,)
530                }
531            }
532            #[automatically_derived]
533            #[doc(hidden)]
534            impl ::core::convert::From<UnderlyingRustTuple<'_>>
535            for implementationReturn {
536                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
537                    Self { _0: tuple.0 }
538                }
539            }
540        }
541        #[automatically_derived]
542        impl alloy_sol_types::SolCall for implementationCall {
543            type Parameters<'a> = ();
544            type Token<'a> = <Self::Parameters<
545                'a,
546            > as alloy_sol_types::SolType>::Token<'a>;
547            type Return = alloy::sol_types::private::Address;
548            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
549            type ReturnToken<'a> = <Self::ReturnTuple<
550                'a,
551            > as alloy_sol_types::SolType>::Token<'a>;
552            const SIGNATURE: &'static str = "implementation()";
553            const SELECTOR: [u8; 4] = [92u8, 96u8, 218u8, 27u8];
554            #[inline]
555            fn new<'a>(
556                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
557            ) -> Self {
558                tuple.into()
559            }
560            #[inline]
561            fn tokenize(&self) -> Self::Token<'_> {
562                ()
563            }
564            #[inline]
565            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
566                (
567                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
568                        ret,
569                    ),
570                )
571            }
572            #[inline]
573            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
574                <Self::ReturnTuple<
575                    '_,
576                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
577                    .map(|r| {
578                        let r: implementationReturn = r.into();
579                        r._0
580                    })
581            }
582            #[inline]
583            fn abi_decode_returns_validate(
584                data: &[u8],
585            ) -> alloy_sol_types::Result<Self::Return> {
586                <Self::ReturnTuple<
587                    '_,
588                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
589                    .map(|r| {
590                        let r: implementationReturn = r.into();
591                        r._0
592                    })
593            }
594        }
595    };
596    #[derive(serde::Serialize, serde::Deserialize)]
597    #[derive(Default, Debug, PartialEq, Eq, Hash)]
598    /**Function with signature `owner()` and selector `0x8da5cb5b`.
599```solidity
600function owner() external view returns (address);
601```*/
602    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
603    #[derive(Clone)]
604    pub struct ownerCall;
605    #[derive(serde::Serialize, serde::Deserialize)]
606    #[derive(Default, Debug, PartialEq, Eq, Hash)]
607    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
609    #[derive(Clone)]
610    pub struct ownerReturn {
611        #[allow(missing_docs)]
612        pub _0: alloy::sol_types::private::Address,
613    }
614    #[allow(
615        non_camel_case_types,
616        non_snake_case,
617        clippy::pub_underscore_fields,
618        clippy::style
619    )]
620    const _: () = {
621        use alloy::sol_types as alloy_sol_types;
622        {
623            #[doc(hidden)]
624            type UnderlyingSolTuple<'a> = ();
625            #[doc(hidden)]
626            type UnderlyingRustTuple<'a> = ();
627            #[cfg(test)]
628            #[allow(dead_code, unreachable_patterns)]
629            fn _type_assertion(
630                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
631            ) {
632                match _t {
633                    alloy_sol_types::private::AssertTypeEq::<
634                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
635                    >(_) => {}
636                }
637            }
638            #[automatically_derived]
639            #[doc(hidden)]
640            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
641                fn from(value: ownerCall) -> Self {
642                    ()
643                }
644            }
645            #[automatically_derived]
646            #[doc(hidden)]
647            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
648                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
649                    Self
650                }
651            }
652        }
653        {
654            #[doc(hidden)]
655            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
656            #[doc(hidden)]
657            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
658            #[cfg(test)]
659            #[allow(dead_code, unreachable_patterns)]
660            fn _type_assertion(
661                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
662            ) {
663                match _t {
664                    alloy_sol_types::private::AssertTypeEq::<
665                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
666                    >(_) => {}
667                }
668            }
669            #[automatically_derived]
670            #[doc(hidden)]
671            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
672                fn from(value: ownerReturn) -> Self {
673                    (value._0,)
674                }
675            }
676            #[automatically_derived]
677            #[doc(hidden)]
678            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
679                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
680                    Self { _0: tuple.0 }
681                }
682            }
683        }
684        #[automatically_derived]
685        impl alloy_sol_types::SolCall for ownerCall {
686            type Parameters<'a> = ();
687            type Token<'a> = <Self::Parameters<
688                'a,
689            > as alloy_sol_types::SolType>::Token<'a>;
690            type Return = alloy::sol_types::private::Address;
691            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
692            type ReturnToken<'a> = <Self::ReturnTuple<
693                'a,
694            > as alloy_sol_types::SolType>::Token<'a>;
695            const SIGNATURE: &'static str = "owner()";
696            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
697            #[inline]
698            fn new<'a>(
699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
700            ) -> Self {
701                tuple.into()
702            }
703            #[inline]
704            fn tokenize(&self) -> Self::Token<'_> {
705                ()
706            }
707            #[inline]
708            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
709                (
710                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
711                        ret,
712                    ),
713                )
714            }
715            #[inline]
716            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
717                <Self::ReturnTuple<
718                    '_,
719                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
720                    .map(|r| {
721                        let r: ownerReturn = r.into();
722                        r._0
723                    })
724            }
725            #[inline]
726            fn abi_decode_returns_validate(
727                data: &[u8],
728            ) -> alloy_sol_types::Result<Self::Return> {
729                <Self::ReturnTuple<
730                    '_,
731                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
732                    .map(|r| {
733                        let r: ownerReturn = r.into();
734                        r._0
735                    })
736            }
737        }
738    };
739    #[derive(serde::Serialize, serde::Deserialize)]
740    #[derive(Default, Debug, PartialEq, Eq, Hash)]
741    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
742```solidity
743function renounceOwnership() external;
744```*/
745    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
746    #[derive(Clone)]
747    pub struct renounceOwnershipCall;
748    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
749    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
750    #[derive(Clone)]
751    pub struct renounceOwnershipReturn {}
752    #[allow(
753        non_camel_case_types,
754        non_snake_case,
755        clippy::pub_underscore_fields,
756        clippy::style
757    )]
758    const _: () = {
759        use alloy::sol_types as alloy_sol_types;
760        {
761            #[doc(hidden)]
762            type UnderlyingSolTuple<'a> = ();
763            #[doc(hidden)]
764            type UnderlyingRustTuple<'a> = ();
765            #[cfg(test)]
766            #[allow(dead_code, unreachable_patterns)]
767            fn _type_assertion(
768                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769            ) {
770                match _t {
771                    alloy_sol_types::private::AssertTypeEq::<
772                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                    >(_) => {}
774                }
775            }
776            #[automatically_derived]
777            #[doc(hidden)]
778            impl ::core::convert::From<renounceOwnershipCall>
779            for UnderlyingRustTuple<'_> {
780                fn from(value: renounceOwnershipCall) -> Self {
781                    ()
782                }
783            }
784            #[automatically_derived]
785            #[doc(hidden)]
786            impl ::core::convert::From<UnderlyingRustTuple<'_>>
787            for renounceOwnershipCall {
788                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
789                    Self
790                }
791            }
792        }
793        {
794            #[doc(hidden)]
795            type UnderlyingSolTuple<'a> = ();
796            #[doc(hidden)]
797            type UnderlyingRustTuple<'a> = ();
798            #[cfg(test)]
799            #[allow(dead_code, unreachable_patterns)]
800            fn _type_assertion(
801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
802            ) {
803                match _t {
804                    alloy_sol_types::private::AssertTypeEq::<
805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
806                    >(_) => {}
807                }
808            }
809            #[automatically_derived]
810            #[doc(hidden)]
811            impl ::core::convert::From<renounceOwnershipReturn>
812            for UnderlyingRustTuple<'_> {
813                fn from(value: renounceOwnershipReturn) -> Self {
814                    ()
815                }
816            }
817            #[automatically_derived]
818            #[doc(hidden)]
819            impl ::core::convert::From<UnderlyingRustTuple<'_>>
820            for renounceOwnershipReturn {
821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
822                    Self {}
823                }
824            }
825        }
826        impl renounceOwnershipReturn {
827            fn _tokenize(
828                &self,
829            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
830                ()
831            }
832        }
833        #[automatically_derived]
834        impl alloy_sol_types::SolCall for renounceOwnershipCall {
835            type Parameters<'a> = ();
836            type Token<'a> = <Self::Parameters<
837                'a,
838            > as alloy_sol_types::SolType>::Token<'a>;
839            type Return = renounceOwnershipReturn;
840            type ReturnTuple<'a> = ();
841            type ReturnToken<'a> = <Self::ReturnTuple<
842                'a,
843            > as alloy_sol_types::SolType>::Token<'a>;
844            const SIGNATURE: &'static str = "renounceOwnership()";
845            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
846            #[inline]
847            fn new<'a>(
848                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
849            ) -> Self {
850                tuple.into()
851            }
852            #[inline]
853            fn tokenize(&self) -> Self::Token<'_> {
854                ()
855            }
856            #[inline]
857            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
858                renounceOwnershipReturn::_tokenize(ret)
859            }
860            #[inline]
861            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
862                <Self::ReturnTuple<
863                    '_,
864                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
865                    .map(Into::into)
866            }
867            #[inline]
868            fn abi_decode_returns_validate(
869                data: &[u8],
870            ) -> alloy_sol_types::Result<Self::Return> {
871                <Self::ReturnTuple<
872                    '_,
873                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
874                    .map(Into::into)
875            }
876        }
877    };
878    #[derive(serde::Serialize, serde::Deserialize)]
879    #[derive(Default, Debug, PartialEq, Eq, Hash)]
880    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
881```solidity
882function transferOwnership(address newOwner) external;
883```*/
884    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
885    #[derive(Clone)]
886    pub struct transferOwnershipCall {
887        #[allow(missing_docs)]
888        pub newOwner: alloy::sol_types::private::Address,
889    }
890    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
891    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
892    #[derive(Clone)]
893    pub struct transferOwnershipReturn {}
894    #[allow(
895        non_camel_case_types,
896        non_snake_case,
897        clippy::pub_underscore_fields,
898        clippy::style
899    )]
900    const _: () = {
901        use alloy::sol_types as alloy_sol_types;
902        {
903            #[doc(hidden)]
904            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
905            #[doc(hidden)]
906            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
907            #[cfg(test)]
908            #[allow(dead_code, unreachable_patterns)]
909            fn _type_assertion(
910                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
911            ) {
912                match _t {
913                    alloy_sol_types::private::AssertTypeEq::<
914                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
915                    >(_) => {}
916                }
917            }
918            #[automatically_derived]
919            #[doc(hidden)]
920            impl ::core::convert::From<transferOwnershipCall>
921            for UnderlyingRustTuple<'_> {
922                fn from(value: transferOwnershipCall) -> Self {
923                    (value.newOwner,)
924                }
925            }
926            #[automatically_derived]
927            #[doc(hidden)]
928            impl ::core::convert::From<UnderlyingRustTuple<'_>>
929            for transferOwnershipCall {
930                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
931                    Self { newOwner: tuple.0 }
932                }
933            }
934        }
935        {
936            #[doc(hidden)]
937            type UnderlyingSolTuple<'a> = ();
938            #[doc(hidden)]
939            type UnderlyingRustTuple<'a> = ();
940            #[cfg(test)]
941            #[allow(dead_code, unreachable_patterns)]
942            fn _type_assertion(
943                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
944            ) {
945                match _t {
946                    alloy_sol_types::private::AssertTypeEq::<
947                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
948                    >(_) => {}
949                }
950            }
951            #[automatically_derived]
952            #[doc(hidden)]
953            impl ::core::convert::From<transferOwnershipReturn>
954            for UnderlyingRustTuple<'_> {
955                fn from(value: transferOwnershipReturn) -> Self {
956                    ()
957                }
958            }
959            #[automatically_derived]
960            #[doc(hidden)]
961            impl ::core::convert::From<UnderlyingRustTuple<'_>>
962            for transferOwnershipReturn {
963                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
964                    Self {}
965                }
966            }
967        }
968        impl transferOwnershipReturn {
969            fn _tokenize(
970                &self,
971            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
972                ()
973            }
974        }
975        #[automatically_derived]
976        impl alloy_sol_types::SolCall for transferOwnershipCall {
977            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
978            type Token<'a> = <Self::Parameters<
979                'a,
980            > as alloy_sol_types::SolType>::Token<'a>;
981            type Return = transferOwnershipReturn;
982            type ReturnTuple<'a> = ();
983            type ReturnToken<'a> = <Self::ReturnTuple<
984                'a,
985            > as alloy_sol_types::SolType>::Token<'a>;
986            const SIGNATURE: &'static str = "transferOwnership(address)";
987            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
988            #[inline]
989            fn new<'a>(
990                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
991            ) -> Self {
992                tuple.into()
993            }
994            #[inline]
995            fn tokenize(&self) -> Self::Token<'_> {
996                (
997                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
998                        &self.newOwner,
999                    ),
1000                )
1001            }
1002            #[inline]
1003            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1004                transferOwnershipReturn::_tokenize(ret)
1005            }
1006            #[inline]
1007            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1008                <Self::ReturnTuple<
1009                    '_,
1010                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
1011                    .map(Into::into)
1012            }
1013            #[inline]
1014            fn abi_decode_returns_validate(
1015                data: &[u8],
1016            ) -> alloy_sol_types::Result<Self::Return> {
1017                <Self::ReturnTuple<
1018                    '_,
1019                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1020                    .map(Into::into)
1021            }
1022        }
1023    };
1024    #[derive(serde::Serialize, serde::Deserialize)]
1025    #[derive(Default, Debug, PartialEq, Eq, Hash)]
1026    /**Function with signature `upgradeTo(address)` and selector `0x3659cfe6`.
1027```solidity
1028function upgradeTo(address newImplementation) external;
1029```*/
1030    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1031    #[derive(Clone)]
1032    pub struct upgradeToCall {
1033        #[allow(missing_docs)]
1034        pub newImplementation: alloy::sol_types::private::Address,
1035    }
1036    ///Container type for the return parameters of the [`upgradeTo(address)`](upgradeToCall) function.
1037    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1038    #[derive(Clone)]
1039    pub struct upgradeToReturn {}
1040    #[allow(
1041        non_camel_case_types,
1042        non_snake_case,
1043        clippy::pub_underscore_fields,
1044        clippy::style
1045    )]
1046    const _: () = {
1047        use alloy::sol_types as alloy_sol_types;
1048        {
1049            #[doc(hidden)]
1050            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
1051            #[doc(hidden)]
1052            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
1053            #[cfg(test)]
1054            #[allow(dead_code, unreachable_patterns)]
1055            fn _type_assertion(
1056                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1057            ) {
1058                match _t {
1059                    alloy_sol_types::private::AssertTypeEq::<
1060                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1061                    >(_) => {}
1062                }
1063            }
1064            #[automatically_derived]
1065            #[doc(hidden)]
1066            impl ::core::convert::From<upgradeToCall> for UnderlyingRustTuple<'_> {
1067                fn from(value: upgradeToCall) -> Self {
1068                    (value.newImplementation,)
1069                }
1070            }
1071            #[automatically_derived]
1072            #[doc(hidden)]
1073            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToCall {
1074                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1075                    Self { newImplementation: tuple.0 }
1076                }
1077            }
1078        }
1079        {
1080            #[doc(hidden)]
1081            type UnderlyingSolTuple<'a> = ();
1082            #[doc(hidden)]
1083            type UnderlyingRustTuple<'a> = ();
1084            #[cfg(test)]
1085            #[allow(dead_code, unreachable_patterns)]
1086            fn _type_assertion(
1087                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1088            ) {
1089                match _t {
1090                    alloy_sol_types::private::AssertTypeEq::<
1091                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1092                    >(_) => {}
1093                }
1094            }
1095            #[automatically_derived]
1096            #[doc(hidden)]
1097            impl ::core::convert::From<upgradeToReturn> for UnderlyingRustTuple<'_> {
1098                fn from(value: upgradeToReturn) -> Self {
1099                    ()
1100                }
1101            }
1102            #[automatically_derived]
1103            #[doc(hidden)]
1104            impl ::core::convert::From<UnderlyingRustTuple<'_>> for upgradeToReturn {
1105                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1106                    Self {}
1107                }
1108            }
1109        }
1110        impl upgradeToReturn {
1111            fn _tokenize(
1112                &self,
1113            ) -> <upgradeToCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
1114                ()
1115            }
1116        }
1117        #[automatically_derived]
1118        impl alloy_sol_types::SolCall for upgradeToCall {
1119            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
1120            type Token<'a> = <Self::Parameters<
1121                'a,
1122            > as alloy_sol_types::SolType>::Token<'a>;
1123            type Return = upgradeToReturn;
1124            type ReturnTuple<'a> = ();
1125            type ReturnToken<'a> = <Self::ReturnTuple<
1126                'a,
1127            > as alloy_sol_types::SolType>::Token<'a>;
1128            const SIGNATURE: &'static str = "upgradeTo(address)";
1129            const SELECTOR: [u8; 4] = [54u8, 89u8, 207u8, 230u8];
1130            #[inline]
1131            fn new<'a>(
1132                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
1133            ) -> Self {
1134                tuple.into()
1135            }
1136            #[inline]
1137            fn tokenize(&self) -> Self::Token<'_> {
1138                (
1139                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
1140                        &self.newImplementation,
1141                    ),
1142                )
1143            }
1144            #[inline]
1145            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
1146                upgradeToReturn::_tokenize(ret)
1147            }
1148            #[inline]
1149            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
1150                <Self::ReturnTuple<
1151                    '_,
1152                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
1153                    .map(Into::into)
1154            }
1155            #[inline]
1156            fn abi_decode_returns_validate(
1157                data: &[u8],
1158            ) -> alloy_sol_types::Result<Self::Return> {
1159                <Self::ReturnTuple<
1160                    '_,
1161                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
1162                    .map(Into::into)
1163            }
1164        }
1165    };
1166    ///Container for all the [`UpgradeableBeacon`](self) function calls.
1167    #[derive(serde::Serialize, serde::Deserialize)]
1168    #[derive()]
1169    pub enum UpgradeableBeaconCalls {
1170        #[allow(missing_docs)]
1171        implementation(implementationCall),
1172        #[allow(missing_docs)]
1173        owner(ownerCall),
1174        #[allow(missing_docs)]
1175        renounceOwnership(renounceOwnershipCall),
1176        #[allow(missing_docs)]
1177        transferOwnership(transferOwnershipCall),
1178        #[allow(missing_docs)]
1179        upgradeTo(upgradeToCall),
1180    }
1181    #[automatically_derived]
1182    impl UpgradeableBeaconCalls {
1183        /// All the selectors of this enum.
1184        ///
1185        /// Note that the selectors might not be in the same order as the variants.
1186        /// No guarantees are made about the order of the selectors.
1187        ///
1188        /// Prefer using `SolInterface` methods instead.
1189        pub const SELECTORS: &'static [[u8; 4usize]] = &[
1190            [54u8, 89u8, 207u8, 230u8],
1191            [92u8, 96u8, 218u8, 27u8],
1192            [113u8, 80u8, 24u8, 166u8],
1193            [141u8, 165u8, 203u8, 91u8],
1194            [242u8, 253u8, 227u8, 139u8],
1195        ];
1196    }
1197    #[automatically_derived]
1198    impl alloy_sol_types::SolInterface for UpgradeableBeaconCalls {
1199        const NAME: &'static str = "UpgradeableBeaconCalls";
1200        const MIN_DATA_LENGTH: usize = 0usize;
1201        const COUNT: usize = 5usize;
1202        #[inline]
1203        fn selector(&self) -> [u8; 4] {
1204            match self {
1205                Self::implementation(_) => {
1206                    <implementationCall as alloy_sol_types::SolCall>::SELECTOR
1207                }
1208                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
1209                Self::renounceOwnership(_) => {
1210                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
1211                }
1212                Self::transferOwnership(_) => {
1213                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
1214                }
1215                Self::upgradeTo(_) => {
1216                    <upgradeToCall as alloy_sol_types::SolCall>::SELECTOR
1217                }
1218            }
1219        }
1220        #[inline]
1221        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
1222            Self::SELECTORS.get(i).copied()
1223        }
1224        #[inline]
1225        fn valid_selector(selector: [u8; 4]) -> bool {
1226            Self::SELECTORS.binary_search(&selector).is_ok()
1227        }
1228        #[inline]
1229        #[allow(non_snake_case)]
1230        fn abi_decode_raw(
1231            selector: [u8; 4],
1232            data: &[u8],
1233        ) -> alloy_sol_types::Result<Self> {
1234            static DECODE_SHIMS: &[fn(
1235                &[u8],
1236            ) -> alloy_sol_types::Result<UpgradeableBeaconCalls>] = &[
1237                {
1238                    fn upgradeTo(
1239                        data: &[u8],
1240                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1241                        <upgradeToCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
1242                            .map(UpgradeableBeaconCalls::upgradeTo)
1243                    }
1244                    upgradeTo
1245                },
1246                {
1247                    fn implementation(
1248                        data: &[u8],
1249                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1250                        <implementationCall as alloy_sol_types::SolCall>::abi_decode_raw(
1251                                data,
1252                            )
1253                            .map(UpgradeableBeaconCalls::implementation)
1254                    }
1255                    implementation
1256                },
1257                {
1258                    fn renounceOwnership(
1259                        data: &[u8],
1260                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1261                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
1262                                data,
1263                            )
1264                            .map(UpgradeableBeaconCalls::renounceOwnership)
1265                    }
1266                    renounceOwnership
1267                },
1268                {
1269                    fn owner(
1270                        data: &[u8],
1271                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1272                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
1273                            .map(UpgradeableBeaconCalls::owner)
1274                    }
1275                    owner
1276                },
1277                {
1278                    fn transferOwnership(
1279                        data: &[u8],
1280                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1281                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
1282                                data,
1283                            )
1284                            .map(UpgradeableBeaconCalls::transferOwnership)
1285                    }
1286                    transferOwnership
1287                },
1288            ];
1289            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
1290                return Err(
1291                    alloy_sol_types::Error::unknown_selector(
1292                        <Self as alloy_sol_types::SolInterface>::NAME,
1293                        selector,
1294                    ),
1295                );
1296            };
1297            DECODE_SHIMS[idx](data)
1298        }
1299        #[inline]
1300        #[allow(non_snake_case)]
1301        fn abi_decode_raw_validate(
1302            selector: [u8; 4],
1303            data: &[u8],
1304        ) -> alloy_sol_types::Result<Self> {
1305            static DECODE_VALIDATE_SHIMS: &[fn(
1306                &[u8],
1307            ) -> alloy_sol_types::Result<UpgradeableBeaconCalls>] = &[
1308                {
1309                    fn upgradeTo(
1310                        data: &[u8],
1311                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1312                        <upgradeToCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1313                                data,
1314                            )
1315                            .map(UpgradeableBeaconCalls::upgradeTo)
1316                    }
1317                    upgradeTo
1318                },
1319                {
1320                    fn implementation(
1321                        data: &[u8],
1322                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1323                        <implementationCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1324                                data,
1325                            )
1326                            .map(UpgradeableBeaconCalls::implementation)
1327                    }
1328                    implementation
1329                },
1330                {
1331                    fn renounceOwnership(
1332                        data: &[u8],
1333                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1334                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1335                                data,
1336                            )
1337                            .map(UpgradeableBeaconCalls::renounceOwnership)
1338                    }
1339                    renounceOwnership
1340                },
1341                {
1342                    fn owner(
1343                        data: &[u8],
1344                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1345                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1346                                data,
1347                            )
1348                            .map(UpgradeableBeaconCalls::owner)
1349                    }
1350                    owner
1351                },
1352                {
1353                    fn transferOwnership(
1354                        data: &[u8],
1355                    ) -> alloy_sol_types::Result<UpgradeableBeaconCalls> {
1356                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
1357                                data,
1358                            )
1359                            .map(UpgradeableBeaconCalls::transferOwnership)
1360                    }
1361                    transferOwnership
1362                },
1363            ];
1364            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
1365                return Err(
1366                    alloy_sol_types::Error::unknown_selector(
1367                        <Self as alloy_sol_types::SolInterface>::NAME,
1368                        selector,
1369                    ),
1370                );
1371            };
1372            DECODE_VALIDATE_SHIMS[idx](data)
1373        }
1374        #[inline]
1375        fn abi_encoded_size(&self) -> usize {
1376            match self {
1377                Self::implementation(inner) => {
1378                    <implementationCall as alloy_sol_types::SolCall>::abi_encoded_size(
1379                        inner,
1380                    )
1381                }
1382                Self::owner(inner) => {
1383                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
1384                }
1385                Self::renounceOwnership(inner) => {
1386                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
1387                        inner,
1388                    )
1389                }
1390                Self::transferOwnership(inner) => {
1391                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
1392                        inner,
1393                    )
1394                }
1395                Self::upgradeTo(inner) => {
1396                    <upgradeToCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
1397                }
1398            }
1399        }
1400        #[inline]
1401        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
1402            match self {
1403                Self::implementation(inner) => {
1404                    <implementationCall as alloy_sol_types::SolCall>::abi_encode_raw(
1405                        inner,
1406                        out,
1407                    )
1408                }
1409                Self::owner(inner) => {
1410                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
1411                }
1412                Self::renounceOwnership(inner) => {
1413                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
1414                        inner,
1415                        out,
1416                    )
1417                }
1418                Self::transferOwnership(inner) => {
1419                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
1420                        inner,
1421                        out,
1422                    )
1423                }
1424                Self::upgradeTo(inner) => {
1425                    <upgradeToCall as alloy_sol_types::SolCall>::abi_encode_raw(
1426                        inner,
1427                        out,
1428                    )
1429                }
1430            }
1431        }
1432    }
1433    ///Container for all the [`UpgradeableBeacon`](self) events.
1434    #[derive(serde::Serialize, serde::Deserialize)]
1435    #[derive(Debug, PartialEq, Eq, Hash)]
1436    pub enum UpgradeableBeaconEvents {
1437        #[allow(missing_docs)]
1438        OwnershipTransferred(OwnershipTransferred),
1439        #[allow(missing_docs)]
1440        Upgraded(Upgraded),
1441    }
1442    #[automatically_derived]
1443    impl UpgradeableBeaconEvents {
1444        /// All the selectors of this enum.
1445        ///
1446        /// Note that the selectors might not be in the same order as the variants.
1447        /// No guarantees are made about the order of the selectors.
1448        ///
1449        /// Prefer using `SolInterface` methods instead.
1450        pub const SELECTORS: &'static [[u8; 32usize]] = &[
1451            [
1452                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
1453                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
1454                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
1455            ],
1456            [
1457                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
1458                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
1459                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
1460            ],
1461        ];
1462    }
1463    #[automatically_derived]
1464    impl alloy_sol_types::SolEventInterface for UpgradeableBeaconEvents {
1465        const NAME: &'static str = "UpgradeableBeaconEvents";
1466        const COUNT: usize = 2usize;
1467        fn decode_raw_log(
1468            topics: &[alloy_sol_types::Word],
1469            data: &[u8],
1470        ) -> alloy_sol_types::Result<Self> {
1471            match topics.first().copied() {
1472                Some(
1473                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
1474                ) => {
1475                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
1476                            topics,
1477                            data,
1478                        )
1479                        .map(Self::OwnershipTransferred)
1480                }
1481                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
1482                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
1483                        .map(Self::Upgraded)
1484                }
1485                _ => {
1486                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
1487                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
1488                        log: alloy_sol_types::private::Box::new(
1489                            alloy_sol_types::private::LogData::new_unchecked(
1490                                topics.to_vec(),
1491                                data.to_vec().into(),
1492                            ),
1493                        ),
1494                    })
1495                }
1496            }
1497        }
1498    }
1499    #[automatically_derived]
1500    impl alloy_sol_types::private::IntoLogData for UpgradeableBeaconEvents {
1501        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
1502            match self {
1503                Self::OwnershipTransferred(inner) => {
1504                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
1505                }
1506                Self::Upgraded(inner) => {
1507                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
1508                }
1509            }
1510        }
1511        fn into_log_data(self) -> alloy_sol_types::private::LogData {
1512            match self {
1513                Self::OwnershipTransferred(inner) => {
1514                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
1515                }
1516                Self::Upgraded(inner) => {
1517                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
1518                }
1519            }
1520        }
1521    }
1522    use alloy::contract as alloy_contract;
1523    /**Creates a new wrapper around an on-chain [`UpgradeableBeacon`](self) contract instance.
1524
1525See the [wrapper's documentation](`UpgradeableBeaconInstance`) for more details.*/
1526    #[inline]
1527    pub const fn new<
1528        P: alloy_contract::private::Provider<N>,
1529        N: alloy_contract::private::Network,
1530    >(
1531        address: alloy_sol_types::private::Address,
1532        provider: P,
1533    ) -> UpgradeableBeaconInstance<P, N> {
1534        UpgradeableBeaconInstance::<P, N>::new(address, provider)
1535    }
1536    /**Deploys this contract using the given `provider` and constructor arguments, if any.
1537
1538Returns a new instance of the contract, if the deployment was successful.
1539
1540For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
1541    #[inline]
1542    pub fn deploy<
1543        P: alloy_contract::private::Provider<N>,
1544        N: alloy_contract::private::Network,
1545    >(
1546        provider: P,
1547        implementation_: alloy::sol_types::private::Address,
1548    ) -> impl ::core::future::Future<
1549        Output = alloy_contract::Result<UpgradeableBeaconInstance<P, N>>,
1550    > {
1551        UpgradeableBeaconInstance::<P, N>::deploy(provider, implementation_)
1552    }
1553    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
1554and constructor arguments, if any.
1555
1556This is a simple wrapper around creating a `RawCallBuilder` with the data set to
1557the bytecode concatenated with the constructor's ABI-encoded arguments.*/
1558    #[inline]
1559    pub fn deploy_builder<
1560        P: alloy_contract::private::Provider<N>,
1561        N: alloy_contract::private::Network,
1562    >(
1563        provider: P,
1564        implementation_: alloy::sol_types::private::Address,
1565    ) -> alloy_contract::RawCallBuilder<P, N> {
1566        UpgradeableBeaconInstance::<P, N>::deploy_builder(provider, implementation_)
1567    }
1568    /**A [`UpgradeableBeacon`](self) instance.
1569
1570Contains type-safe methods for interacting with an on-chain instance of the
1571[`UpgradeableBeacon`](self) contract located at a given `address`, using a given
1572provider `P`.
1573
1574If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
1575documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1576be used to deploy a new instance of the contract.
1577
1578See the [module-level documentation](self) for all the available methods.*/
1579    #[derive(Clone)]
1580    pub struct UpgradeableBeaconInstance<P, N = alloy_contract::private::Ethereum> {
1581        address: alloy_sol_types::private::Address,
1582        provider: P,
1583        _network: ::core::marker::PhantomData<N>,
1584    }
1585    #[automatically_derived]
1586    impl<P, N> ::core::fmt::Debug for UpgradeableBeaconInstance<P, N> {
1587        #[inline]
1588        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1589            f.debug_tuple("UpgradeableBeaconInstance").field(&self.address).finish()
1590        }
1591    }
1592    /// Instantiation and getters/setters.
1593    #[automatically_derived]
1594    impl<
1595        P: alloy_contract::private::Provider<N>,
1596        N: alloy_contract::private::Network,
1597    > UpgradeableBeaconInstance<P, N> {
1598        /**Creates a new wrapper around an on-chain [`UpgradeableBeacon`](self) contract instance.
1599
1600See the [wrapper's documentation](`UpgradeableBeaconInstance`) for more details.*/
1601        #[inline]
1602        pub const fn new(
1603            address: alloy_sol_types::private::Address,
1604            provider: P,
1605        ) -> Self {
1606            Self {
1607                address,
1608                provider,
1609                _network: ::core::marker::PhantomData,
1610            }
1611        }
1612        /**Deploys this contract using the given `provider` and constructor arguments, if any.
1613
1614Returns a new instance of the contract, if the deployment was successful.
1615
1616For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
1617        #[inline]
1618        pub async fn deploy(
1619            provider: P,
1620            implementation_: alloy::sol_types::private::Address,
1621        ) -> alloy_contract::Result<UpgradeableBeaconInstance<P, N>> {
1622            let call_builder = Self::deploy_builder(provider, implementation_);
1623            let contract_address = call_builder.deploy().await?;
1624            Ok(Self::new(contract_address, call_builder.provider))
1625        }
1626        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
1627and constructor arguments, if any.
1628
1629This is a simple wrapper around creating a `RawCallBuilder` with the data set to
1630the bytecode concatenated with the constructor's ABI-encoded arguments.*/
1631        #[inline]
1632        pub fn deploy_builder(
1633            provider: P,
1634            implementation_: alloy::sol_types::private::Address,
1635        ) -> alloy_contract::RawCallBuilder<P, N> {
1636            alloy_contract::RawCallBuilder::new_raw_deploy(
1637                provider,
1638                [
1639                    &BYTECODE[..],
1640                    &alloy_sol_types::SolConstructor::abi_encode(
1641                        &constructorCall { implementation_ },
1642                    )[..],
1643                ]
1644                    .concat()
1645                    .into(),
1646            )
1647        }
1648        /// Returns a reference to the address.
1649        #[inline]
1650        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1651            &self.address
1652        }
1653        /// Sets the address.
1654        #[inline]
1655        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1656            self.address = address;
1657        }
1658        /// Sets the address and returns `self`.
1659        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1660            self.set_address(address);
1661            self
1662        }
1663        /// Returns a reference to the provider.
1664        #[inline]
1665        pub const fn provider(&self) -> &P {
1666            &self.provider
1667        }
1668    }
1669    impl<P: ::core::clone::Clone, N> UpgradeableBeaconInstance<&P, N> {
1670        /// Clones the provider and returns a new instance with the cloned provider.
1671        #[inline]
1672        pub fn with_cloned_provider(self) -> UpgradeableBeaconInstance<P, N> {
1673            UpgradeableBeaconInstance {
1674                address: self.address,
1675                provider: ::core::clone::Clone::clone(&self.provider),
1676                _network: ::core::marker::PhantomData,
1677            }
1678        }
1679    }
1680    /// Function calls.
1681    #[automatically_derived]
1682    impl<
1683        P: alloy_contract::private::Provider<N>,
1684        N: alloy_contract::private::Network,
1685    > UpgradeableBeaconInstance<P, N> {
1686        /// Creates a new call builder using this contract instance's provider and address.
1687        ///
1688        /// Note that the call can be any function call, not just those defined in this
1689        /// contract. Prefer using the other methods for building type-safe contract calls.
1690        pub fn call_builder<C: alloy_sol_types::SolCall>(
1691            &self,
1692            call: &C,
1693        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1694            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1695        }
1696        ///Creates a new call builder for the [`implementation`] function.
1697        pub fn implementation(
1698            &self,
1699        ) -> alloy_contract::SolCallBuilder<&P, implementationCall, N> {
1700            self.call_builder(&implementationCall)
1701        }
1702        ///Creates a new call builder for the [`owner`] function.
1703        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
1704            self.call_builder(&ownerCall)
1705        }
1706        ///Creates a new call builder for the [`renounceOwnership`] function.
1707        pub fn renounceOwnership(
1708            &self,
1709        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
1710            self.call_builder(&renounceOwnershipCall)
1711        }
1712        ///Creates a new call builder for the [`transferOwnership`] function.
1713        pub fn transferOwnership(
1714            &self,
1715            newOwner: alloy::sol_types::private::Address,
1716        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
1717            self.call_builder(&transferOwnershipCall { newOwner })
1718        }
1719        ///Creates a new call builder for the [`upgradeTo`] function.
1720        pub fn upgradeTo(
1721            &self,
1722            newImplementation: alloy::sol_types::private::Address,
1723        ) -> alloy_contract::SolCallBuilder<&P, upgradeToCall, N> {
1724            self.call_builder(&upgradeToCall { newImplementation })
1725        }
1726    }
1727    /// Event filters.
1728    #[automatically_derived]
1729    impl<
1730        P: alloy_contract::private::Provider<N>,
1731        N: alloy_contract::private::Network,
1732    > UpgradeableBeaconInstance<P, N> {
1733        /// Creates a new event filter using this contract instance's provider and address.
1734        ///
1735        /// Note that the type can be any event, not just those defined in this contract.
1736        /// Prefer using the other methods for building type-safe event filters.
1737        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1738            &self,
1739        ) -> alloy_contract::Event<&P, E, N> {
1740            alloy_contract::Event::new_sol(&self.provider, &self.address)
1741        }
1742        ///Creates a new event filter for the [`OwnershipTransferred`] event.
1743        pub fn OwnershipTransferred_filter(
1744            &self,
1745        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
1746            self.event_filter::<OwnershipTransferred>()
1747        }
1748        ///Creates a new event filter for the [`Upgraded`] event.
1749        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
1750            self.event_filter::<Upgraded>()
1751        }
1752    }
1753}