pod_examples_solidity/
auction.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library Time {
6    type Timestamp is uint64;
7}
8```*/
9#[allow(
10    non_camel_case_types,
11    non_snake_case,
12    clippy::pub_underscore_fields,
13    clippy::style,
14    clippy::empty_structs_with_brackets
15)]
16pub mod Time {
17    use super::*;
18    use alloy::sol_types as alloy_sol_types;
19    #[derive(serde::Serialize, serde::Deserialize)]
20    #[derive(Default, Debug, PartialEq, Eq, Hash)]
21    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
22    #[derive(Clone)]
23    pub struct Timestamp(u64);
24    const _: () = {
25        use alloy::sol_types as alloy_sol_types;
26        #[automatically_derived]
27        impl alloy_sol_types::private::SolTypeValue<Timestamp> for u64 {
28            #[inline]
29            fn stv_to_tokens(
30                &self,
31            ) -> <alloy::sol_types::sol_data::Uint<
32                64,
33            > as alloy_sol_types::SolType>::Token<'_> {
34                alloy_sol_types::private::SolTypeValue::<
35                    alloy::sol_types::sol_data::Uint<64>,
36                >::stv_to_tokens(self)
37            }
38            #[inline]
39            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
40                <alloy::sol_types::sol_data::Uint<
41                    64,
42                > as alloy_sol_types::SolType>::tokenize(self)
43                    .0
44            }
45            #[inline]
46            fn stv_abi_encode_packed_to(
47                &self,
48                out: &mut alloy_sol_types::private::Vec<u8>,
49            ) {
50                <alloy::sol_types::sol_data::Uint<
51                    64,
52                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
53            }
54            #[inline]
55            fn stv_abi_packed_encoded_size(&self) -> usize {
56                <alloy::sol_types::sol_data::Uint<
57                    64,
58                > as alloy_sol_types::SolType>::abi_encoded_size(self)
59            }
60        }
61        impl Timestamp {
62            /// The Solidity type name.
63            pub const NAME: &'static str = stringify!(@ name);
64            /// Convert from the underlying value type.
65            #[inline]
66            pub const fn from_underlying(value: u64) -> Self {
67                Self(value)
68            }
69            /// Return the underlying value.
70            #[inline]
71            pub const fn into_underlying(self) -> u64 {
72                self.0
73            }
74            /// Return the single encoding of this value, delegating to the
75            /// underlying type.
76            #[inline]
77            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
78                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
79            }
80            /// Return the packed encoding of this value, delegating to the
81            /// underlying type.
82            #[inline]
83            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
84                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
85            }
86        }
87        #[automatically_derived]
88        impl From<u64> for Timestamp {
89            fn from(value: u64) -> Self {
90                Self::from_underlying(value)
91            }
92        }
93        #[automatically_derived]
94        impl From<Timestamp> for u64 {
95            fn from(value: Timestamp) -> Self {
96                value.into_underlying()
97            }
98        }
99        #[automatically_derived]
100        impl alloy_sol_types::SolType for Timestamp {
101            type RustType = u64;
102            type Token<'a> = <alloy::sol_types::sol_data::Uint<
103                64,
104            > as alloy_sol_types::SolType>::Token<'a>;
105            const SOL_NAME: &'static str = Self::NAME;
106            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
107                64,
108            > as alloy_sol_types::SolType>::ENCODED_SIZE;
109            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
110                64,
111            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
112            #[inline]
113            fn valid_token(token: &Self::Token<'_>) -> bool {
114                Self::type_check(token).is_ok()
115            }
116            #[inline]
117            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
118                <alloy::sol_types::sol_data::Uint<
119                    64,
120                > as alloy_sol_types::SolType>::type_check(token)
121            }
122            #[inline]
123            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
124                <alloy::sol_types::sol_data::Uint<
125                    64,
126                > as alloy_sol_types::SolType>::detokenize(token)
127            }
128        }
129        #[automatically_derived]
130        impl alloy_sol_types::EventTopic for Timestamp {
131            #[inline]
132            fn topic_preimage_length(rust: &Self::RustType) -> usize {
133                <alloy::sol_types::sol_data::Uint<
134                    64,
135                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
136            }
137            #[inline]
138            fn encode_topic_preimage(
139                rust: &Self::RustType,
140                out: &mut alloy_sol_types::private::Vec<u8>,
141            ) {
142                <alloy::sol_types::sol_data::Uint<
143                    64,
144                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
145            }
146            #[inline]
147            fn encode_topic(
148                rust: &Self::RustType,
149            ) -> alloy_sol_types::abi::token::WordToken {
150                <alloy::sol_types::sol_data::Uint<
151                    64,
152                > as alloy_sol_types::EventTopic>::encode_topic(rust)
153            }
154        }
155    };
156    use alloy::contract as alloy_contract;
157    /**Creates a new wrapper around an on-chain [`Time`](self) contract instance.
158
159See the [wrapper's documentation](`TimeInstance`) for more details.*/
160    #[inline]
161    pub const fn new<
162        P: alloy_contract::private::Provider<N>,
163        N: alloy_contract::private::Network,
164    >(address: alloy_sol_types::private::Address, __provider: P) -> TimeInstance<P, N> {
165        TimeInstance::<P, N>::new(address, __provider)
166    }
167    /**A [`Time`](self) instance.
168
169Contains type-safe methods for interacting with an on-chain instance of the
170[`Time`](self) contract located at a given `address`, using a given
171provider `P`.
172
173If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
174documentation on how to provide it), the `deploy` and `deploy_builder` methods can
175be used to deploy a new instance of the contract.
176
177See the [module-level documentation](self) for all the available methods.*/
178    #[derive(Clone)]
179    pub struct TimeInstance<P, N = alloy_contract::private::Ethereum> {
180        address: alloy_sol_types::private::Address,
181        provider: P,
182        _network: ::core::marker::PhantomData<N>,
183    }
184    #[automatically_derived]
185    impl<P, N> ::core::fmt::Debug for TimeInstance<P, N> {
186        #[inline]
187        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
188            f.debug_tuple("TimeInstance").field(&self.address).finish()
189        }
190    }
191    /// Instantiation and getters/setters.
192    impl<
193        P: alloy_contract::private::Provider<N>,
194        N: alloy_contract::private::Network,
195    > TimeInstance<P, N> {
196        /**Creates a new wrapper around an on-chain [`Time`](self) contract instance.
197
198See the [wrapper's documentation](`TimeInstance`) for more details.*/
199        #[inline]
200        pub const fn new(
201            address: alloy_sol_types::private::Address,
202            __provider: P,
203        ) -> Self {
204            Self {
205                address,
206                provider: __provider,
207                _network: ::core::marker::PhantomData,
208            }
209        }
210        /// Returns a reference to the address.
211        #[inline]
212        pub const fn address(&self) -> &alloy_sol_types::private::Address {
213            &self.address
214        }
215        /// Sets the address.
216        #[inline]
217        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
218            self.address = address;
219        }
220        /// Sets the address and returns `self`.
221        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
222            self.set_address(address);
223            self
224        }
225        /// Returns a reference to the provider.
226        #[inline]
227        pub const fn provider(&self) -> &P {
228            &self.provider
229        }
230    }
231    impl<P: ::core::clone::Clone, N> TimeInstance<&P, N> {
232        /// Clones the provider and returns a new instance with the cloned provider.
233        #[inline]
234        pub fn with_cloned_provider(self) -> TimeInstance<P, N> {
235            TimeInstance {
236                address: self.address,
237                provider: ::core::clone::Clone::clone(&self.provider),
238                _network: ::core::marker::PhantomData,
239            }
240        }
241    }
242    /// Function calls.
243    impl<
244        P: alloy_contract::private::Provider<N>,
245        N: alloy_contract::private::Network,
246    > TimeInstance<P, N> {
247        /// Creates a new call builder using this contract instance's provider and address.
248        ///
249        /// Note that the call can be any function call, not just those defined in this
250        /// contract. Prefer using the other methods for building type-safe contract calls.
251        pub fn call_builder<C: alloy_sol_types::SolCall>(
252            &self,
253            call: &C,
254        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
255            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
256        }
257    }
258    /// Event filters.
259    impl<
260        P: alloy_contract::private::Provider<N>,
261        N: alloy_contract::private::Network,
262    > TimeInstance<P, N> {
263        /// Creates a new event filter using this contract instance's provider and address.
264        ///
265        /// Note that the type can be any event, not just those defined in this contract.
266        /// Prefer using the other methods for building type-safe event filters.
267        pub fn event_filter<E: alloy_sol_types::SolEvent>(
268            &self,
269        ) -> alloy_contract::Event<&P, E, N> {
270            alloy_contract::Event::new_sol(&self.provider, &self.address)
271        }
272    }
273}
274/**
275
276Generated by the following Solidity interface...
277```solidity
278library Time {
279    type Timestamp is uint64;
280}
281
282interface Auction {
283    event BidSubmitted(uint256 indexed auction_id, address indexed bidder, Time.Timestamp indexed deadline, uint256 value, bytes data);
284
285    function submitBid(uint256 auction_id, Time.Timestamp deadline, uint256 value, bytes memory data) external;
286}
287```
288
289...which was generated by the following JSON ABI:
290```json
291[
292  {
293    "type": "function",
294    "name": "submitBid",
295    "inputs": [
296      {
297        "name": "auction_id",
298        "type": "uint256",
299        "internalType": "uint256"
300      },
301      {
302        "name": "deadline",
303        "type": "uint64",
304        "internalType": "Time.Timestamp"
305      },
306      {
307        "name": "value",
308        "type": "uint256",
309        "internalType": "uint256"
310      },
311      {
312        "name": "data",
313        "type": "bytes",
314        "internalType": "bytes"
315      }
316    ],
317    "outputs": [],
318    "stateMutability": "nonpayable"
319  },
320  {
321    "type": "event",
322    "name": "BidSubmitted",
323    "inputs": [
324      {
325        "name": "auction_id",
326        "type": "uint256",
327        "indexed": true,
328        "internalType": "uint256"
329      },
330      {
331        "name": "bidder",
332        "type": "address",
333        "indexed": true,
334        "internalType": "address"
335      },
336      {
337        "name": "deadline",
338        "type": "uint64",
339        "indexed": true,
340        "internalType": "Time.Timestamp"
341      },
342      {
343        "name": "value",
344        "type": "uint256",
345        "indexed": false,
346        "internalType": "uint256"
347      },
348      {
349        "name": "data",
350        "type": "bytes",
351        "indexed": false,
352        "internalType": "bytes"
353      }
354    ],
355    "anonymous": false
356  }
357]
358```*/
359#[allow(
360    non_camel_case_types,
361    non_snake_case,
362    clippy::pub_underscore_fields,
363    clippy::style,
364    clippy::empty_structs_with_brackets
365)]
366pub mod Auction {
367    use super::*;
368    use alloy::sol_types as alloy_sol_types;
369    /// The creation / init bytecode of the contract.
370    ///
371    /// ```text
372    ///0x6080604052348015600e575f5ffd5b506107bc8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c80634a19067e1461002d575b5f5ffd5b61004760048036038101906100429190610436565b610049565b005b610088846040518060400160405280601781526020017f41756374696f6e20646561646c696e65207061737365640000000000000000008152506100ed565b8367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867ffa9544cad94ab8507946215078af54be3ed0a1f19911d5dab2037baf8e064fb08686866040516100de93929190610523565b60405180910390a45050505050565b61011a610114836100fc61011e565b67ffffffffffffffff1661024c90919063ffffffff16565b8261026c565b5050565b5f5f5f7fba286e4d89dabf4b2878e896423bb123d9d5143e662606fd343b6766d7bcf7215f1c73ffffffffffffffffffffffffffffffffffffffff1660405161016690610580565b5f60405180830381855afa9150503d805f811461019e576040519150601f19603f3d011682016040523d82523d5f602084013e6101a3565b606091505b5091509150816101e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101df906105ee565b60405180910390fd5b602081511461022c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022390610656565b60405180910390fd5b5f81806020019051810190610241919061069e565b905080935050505090565b5f8167ffffffffffffffff168367ffffffffffffffff1610905092915050565b5f7f3dcdf63b41c103567d7225976ad9145e866c7a7dccc6c277ea86abbd268fbac95f1c73ffffffffffffffffffffffffffffffffffffffff16836040516020016102b791906106e3565b6040516020818303038152906040526040516102d39190610744565b5f60405180830381855afa9150503d805f811461030b576040519150601f19603f3d011682016040523d82523d5f602084013e610310565b606091505b50509050808290610357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034e919061079c565b60405180910390fd5b50505050565b5f5ffd5b5f5ffd5b5f819050919050565b61037781610365565b8114610381575f5ffd5b50565b5f813590506103928161036e565b92915050565b5f67ffffffffffffffff82169050919050565b6103b481610398565b81146103be575f5ffd5b50565b5f813590506103cf816103ab565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103f6576103f56103d5565b5b8235905067ffffffffffffffff811115610413576104126103d9565b5b60208301915083600182028301111561042f5761042e6103dd565b5b9250929050565b5f5f5f5f5f6080868803121561044f5761044e61035d565b5b5f61045c88828901610384565b955050602061046d888289016103c1565b945050604061047e88828901610384565b935050606086013567ffffffffffffffff81111561049f5761049e610361565b5b6104ab888289016103e1565b92509250509295509295909350565b6104c381610365565b82525050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f61050283856104c9565b935061050f8385846104d9565b610518836104e7565b840190509392505050565b5f6040820190506105365f8301866104ba565b81810360208301526105498184866104f7565b9050949350505050565b5f81905092915050565b50565b5f61056b5f83610553565b91506105768261055d565b5f82019050919050565b5f61058a82610560565b9150819050919050565b5f82825260208201905092915050565b7f507265636f6d70696c652063616c6c206661696c6564000000000000000000005f82015250565b5f6105d8601683610594565b91506105e3826105a4565b602082019050919050565b5f6020820190508181035f830152610605816105cc565b9050919050565b7f496e76616c6964206f7574707574206c656e67746800000000000000000000005f82015250565b5f610640601583610594565b915061064b8261060c565b602082019050919050565b5f6020820190508181035f83015261066d81610634565b9050919050565b61067d81610398565b8114610687575f5ffd5b50565b5f8151905061069881610674565b92915050565b5f602082840312156106b3576106b261035d565b5b5f6106c08482850161068a565b91505092915050565b5f8115159050919050565b6106dd816106c9565b82525050565b5f6020820190506106f65f8301846106d4565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61071e826106fc565b6107288185610553565b9350610738818560208601610706565b80840191505092915050565b5f61074f8284610714565b915081905092915050565b5f81519050919050565b5f61076e8261075a565b6107788185610594565b9350610788818560208601610706565b610791816104e7565b840191505092915050565b5f6020820190508181035f8301526107b48184610764565b90509291505056
373    /// ```
374    #[rustfmt::skip]
375    #[allow(clippy::all)]
376    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
377        b"`\x80`@R4\x80\x15`\x0EW__\xFD[Pa\x07\xBC\x80a\0\x1C_9_\xF3\xFE`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cJ\x19\x06~\x14a\0-W[__\xFD[a\0G`\x04\x806\x03\x81\x01\x90a\0B\x91\x90a\x046V[a\0IV[\0[a\0\x88\x84`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7FAuction deadline passed\0\0\0\0\0\0\0\0\0\x81RPa\0\xEDV[\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x7F\xFA\x95D\xCA\xD9J\xB8PyF!Px\xAFT\xBE>\xD0\xA1\xF1\x99\x11\xD5\xDA\xB2\x03{\xAF\x8E\x06O\xB0\x86\x86\x86`@Qa\0\xDE\x93\x92\x91\x90a\x05#V[`@Q\x80\x91\x03\x90\xA4PPPPPV[a\x01\x1Aa\x01\x14\x83a\0\xFCa\x01\x1EV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02L\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x82a\x02lV[PPV[___\x7F\xBA(nM\x89\xDA\xBFK(x\xE8\x96B;\xB1#\xD9\xD5\x14>f&\x06\xFD4;gf\xD7\xBC\xF7!_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`@Qa\x01f\x90a\x05\x80V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x01\x9EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x01\xA3V[``\x91P[P\x91P\x91P\x81a\x01\xE8W`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x01\xDF\x90a\x05\xEEV[`@Q\x80\x91\x03\x90\xFD[` \x81Q\x14a\x02,W`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x02#\x90a\x06VV[`@Q\x80\x91\x03\x90\xFD[_\x81\x80` \x01\x90Q\x81\x01\x90a\x02A\x91\x90a\x06\x9EV[\x90P\x80\x93PPPP\x90V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x10\x90P\x92\x91PPV[_\x7F=\xCD\xF6;A\xC1\x03V}r%\x97j\xD9\x14^\x86lz}\xCC\xC6\xC2w\xEA\x86\xAB\xBD&\x8F\xBA\xC9_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83`@Q` \x01a\x02\xB7\x91\x90a\x06\xE3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Qa\x02\xD3\x91\x90a\x07DV[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x03\x0BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\x10V[``\x91P[PP\x90P\x80\x82\x90a\x03WW`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x03N\x91\x90a\x07\x9CV[`@Q\x80\x91\x03\x90\xFD[PPPPV[__\xFD[__\xFD[_\x81\x90P\x91\x90PV[a\x03w\x81a\x03eV[\x81\x14a\x03\x81W__\xFD[PV[_\x815\x90Pa\x03\x92\x81a\x03nV[\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x90P\x91\x90PV[a\x03\xB4\x81a\x03\x98V[\x81\x14a\x03\xBEW__\xFD[PV[_\x815\x90Pa\x03\xCF\x81a\x03\xABV[\x92\x91PPV[__\xFD[__\xFD[__\xFD[__\x83`\x1F\x84\x01\x12a\x03\xF6Wa\x03\xF5a\x03\xD5V[[\x825\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x13Wa\x04\x12a\x03\xD9V[[` \x83\x01\x91P\x83`\x01\x82\x02\x83\x01\x11\x15a\x04/Wa\x04.a\x03\xDDV[[\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a\x04OWa\x04Na\x03]V[[_a\x04\\\x88\x82\x89\x01a\x03\x84V[\x95PP` a\x04m\x88\x82\x89\x01a\x03\xC1V[\x94PP`@a\x04~\x88\x82\x89\x01a\x03\x84V[\x93PP``\x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x9FWa\x04\x9Ea\x03aV[[a\x04\xAB\x88\x82\x89\x01a\x03\xE1V[\x92P\x92PP\x92\x95P\x92\x95\x90\x93PV[a\x04\xC3\x81a\x03eV[\x82RPPV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[\x82\x81\x837_\x83\x83\x01RPPPV[_`\x1F\x19`\x1F\x83\x01\x16\x90P\x91\x90PV[_a\x05\x02\x83\x85a\x04\xC9V[\x93Pa\x05\x0F\x83\x85\x84a\x04\xD9V[a\x05\x18\x83a\x04\xE7V[\x84\x01\x90P\x93\x92PPPV[_`@\x82\x01\x90Pa\x056_\x83\x01\x86a\x04\xBAV[\x81\x81\x03` \x83\x01Ra\x05I\x81\x84\x86a\x04\xF7V[\x90P\x94\x93PPPPV[_\x81\x90P\x92\x91PPV[PV[_a\x05k_\x83a\x05SV[\x91Pa\x05v\x82a\x05]V[_\x82\x01\x90P\x91\x90PV[_a\x05\x8A\x82a\x05`V[\x91P\x81\x90P\x91\x90PV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[\x7FPrecompile call failed\0\0\0\0\0\0\0\0\0\0_\x82\x01RPV[_a\x05\xD8`\x16\x83a\x05\x94V[\x91Pa\x05\xE3\x82a\x05\xA4V[` \x82\x01\x90P\x91\x90PV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06\x05\x81a\x05\xCCV[\x90P\x91\x90PV[\x7FInvalid output length\0\0\0\0\0\0\0\0\0\0\0_\x82\x01RPV[_a\x06@`\x15\x83a\x05\x94V[\x91Pa\x06K\x82a\x06\x0CV[` \x82\x01\x90P\x91\x90PV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06m\x81a\x064V[\x90P\x91\x90PV[a\x06}\x81a\x03\x98V[\x81\x14a\x06\x87W__\xFD[PV[_\x81Q\x90Pa\x06\x98\x81a\x06tV[\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x06\xB3Wa\x06\xB2a\x03]V[[_a\x06\xC0\x84\x82\x85\x01a\x06\x8AV[\x91PP\x92\x91PPV[_\x81\x15\x15\x90P\x91\x90PV[a\x06\xDD\x81a\x06\xC9V[\x82RPPV[_` \x82\x01\x90Pa\x06\xF6_\x83\x01\x84a\x06\xD4V[\x92\x91PPV[_\x81Q\x90P\x91\x90PV[\x82\x81\x83^_\x83\x83\x01RPPPV[_a\x07\x1E\x82a\x06\xFCV[a\x07(\x81\x85a\x05SV[\x93Pa\x078\x81\x85` \x86\x01a\x07\x06V[\x80\x84\x01\x91PP\x92\x91PPV[_a\x07O\x82\x84a\x07\x14V[\x91P\x81\x90P\x92\x91PPV[_\x81Q\x90P\x91\x90PV[_a\x07n\x82a\x07ZV[a\x07x\x81\x85a\x05\x94V[\x93Pa\x07\x88\x81\x85` \x86\x01a\x07\x06V[a\x07\x91\x81a\x04\xE7V[\x84\x01\x91PP\x92\x91PPV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x07\xB4\x81\x84a\x07dV[\x90P\x92\x91PPV",
378    );
379    /// The runtime bytecode of the contract, as deployed on the network.
380    ///
381    /// ```text
382    ///0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c80634a19067e1461002d575b5f5ffd5b61004760048036038101906100429190610436565b610049565b005b610088846040518060400160405280601781526020017f41756374696f6e20646561646c696e65207061737365640000000000000000008152506100ed565b8367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867ffa9544cad94ab8507946215078af54be3ed0a1f19911d5dab2037baf8e064fb08686866040516100de93929190610523565b60405180910390a45050505050565b61011a610114836100fc61011e565b67ffffffffffffffff1661024c90919063ffffffff16565b8261026c565b5050565b5f5f5f7fba286e4d89dabf4b2878e896423bb123d9d5143e662606fd343b6766d7bcf7215f1c73ffffffffffffffffffffffffffffffffffffffff1660405161016690610580565b5f60405180830381855afa9150503d805f811461019e576040519150601f19603f3d011682016040523d82523d5f602084013e6101a3565b606091505b5091509150816101e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101df906105ee565b60405180910390fd5b602081511461022c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022390610656565b60405180910390fd5b5f81806020019051810190610241919061069e565b905080935050505090565b5f8167ffffffffffffffff168367ffffffffffffffff1610905092915050565b5f7f3dcdf63b41c103567d7225976ad9145e866c7a7dccc6c277ea86abbd268fbac95f1c73ffffffffffffffffffffffffffffffffffffffff16836040516020016102b791906106e3565b6040516020818303038152906040526040516102d39190610744565b5f60405180830381855afa9150503d805f811461030b576040519150601f19603f3d011682016040523d82523d5f602084013e610310565b606091505b50509050808290610357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034e919061079c565b60405180910390fd5b50505050565b5f5ffd5b5f5ffd5b5f819050919050565b61037781610365565b8114610381575f5ffd5b50565b5f813590506103928161036e565b92915050565b5f67ffffffffffffffff82169050919050565b6103b481610398565b81146103be575f5ffd5b50565b5f813590506103cf816103ab565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103f6576103f56103d5565b5b8235905067ffffffffffffffff811115610413576104126103d9565b5b60208301915083600182028301111561042f5761042e6103dd565b5b9250929050565b5f5f5f5f5f6080868803121561044f5761044e61035d565b5b5f61045c88828901610384565b955050602061046d888289016103c1565b945050604061047e88828901610384565b935050606086013567ffffffffffffffff81111561049f5761049e610361565b5b6104ab888289016103e1565b92509250509295509295909350565b6104c381610365565b82525050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f61050283856104c9565b935061050f8385846104d9565b610518836104e7565b840190509392505050565b5f6040820190506105365f8301866104ba565b81810360208301526105498184866104f7565b9050949350505050565b5f81905092915050565b50565b5f61056b5f83610553565b91506105768261055d565b5f82019050919050565b5f61058a82610560565b9150819050919050565b5f82825260208201905092915050565b7f507265636f6d70696c652063616c6c206661696c6564000000000000000000005f82015250565b5f6105d8601683610594565b91506105e3826105a4565b602082019050919050565b5f6020820190508181035f830152610605816105cc565b9050919050565b7f496e76616c6964206f7574707574206c656e67746800000000000000000000005f82015250565b5f610640601583610594565b915061064b8261060c565b602082019050919050565b5f6020820190508181035f83015261066d81610634565b9050919050565b61067d81610398565b8114610687575f5ffd5b50565b5f8151905061069881610674565b92915050565b5f602082840312156106b3576106b261035d565b5b5f6106c08482850161068a565b91505092915050565b5f8115159050919050565b6106dd816106c9565b82525050565b5f6020820190506106f65f8301846106d4565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61071e826106fc565b6107288185610553565b9350610738818560208601610706565b80840191505092915050565b5f61074f8284610714565b915081905092915050565b5f81519050919050565b5f61076e8261075a565b6107788185610594565b9350610788818560208601610706565b610791816104e7565b840191505092915050565b5f6020820190508181035f8301526107b48184610764565b90509291505056
383    /// ```
384    #[rustfmt::skip]
385    #[allow(clippy::all)]
386    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
387        b"`\x80`@R4\x80\x15a\0\x0FW__\xFD[P`\x046\x10a\0)W_5`\xE0\x1C\x80cJ\x19\x06~\x14a\0-W[__\xFD[a\0G`\x04\x806\x03\x81\x01\x90a\0B\x91\x90a\x046V[a\0IV[\0[a\0\x88\x84`@Q\x80`@\x01`@R\x80`\x17\x81R` \x01\x7FAuction deadline passed\0\0\0\0\0\0\0\0\0\x81RPa\0\xEDV[\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x163s\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x86\x7F\xFA\x95D\xCA\xD9J\xB8PyF!Px\xAFT\xBE>\xD0\xA1\xF1\x99\x11\xD5\xDA\xB2\x03{\xAF\x8E\x06O\xB0\x86\x86\x86`@Qa\0\xDE\x93\x92\x91\x90a\x05#V[`@Q\x80\x91\x03\x90\xA4PPPPPV[a\x01\x1Aa\x01\x14\x83a\0\xFCa\x01\x1EV[g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16a\x02L\x90\x91\x90c\xFF\xFF\xFF\xFF\x16V[\x82a\x02lV[PPV[___\x7F\xBA(nM\x89\xDA\xBFK(x\xE8\x96B;\xB1#\xD9\xD5\x14>f&\x06\xFD4;gf\xD7\xBC\xF7!_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16`@Qa\x01f\x90a\x05\x80V[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x01\x9EW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x01\xA3V[``\x91P[P\x91P\x91P\x81a\x01\xE8W`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x01\xDF\x90a\x05\xEEV[`@Q\x80\x91\x03\x90\xFD[` \x81Q\x14a\x02,W`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x02#\x90a\x06VV[`@Q\x80\x91\x03\x90\xFD[_\x81\x80` \x01\x90Q\x81\x01\x90a\x02A\x91\x90a\x06\x9EV[\x90P\x80\x93PPPP\x90V[_\x81g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x10\x90P\x92\x91PPV[_\x7F=\xCD\xF6;A\xC1\x03V}r%\x97j\xD9\x14^\x86lz}\xCC\xC6\xC2w\xEA\x86\xAB\xBD&\x8F\xBA\xC9_\x1Cs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x16\x83`@Q` \x01a\x02\xB7\x91\x90a\x06\xE3V[`@Q` \x81\x83\x03\x03\x81R\x90`@R`@Qa\x02\xD3\x91\x90a\x07DV[_`@Q\x80\x83\x03\x81\x85Z\xFA\x91PP=\x80_\x81\x14a\x03\x0BW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x03\x10V[``\x91P[PP\x90P\x80\x82\x90a\x03WW`@Q\x7F\x08\xC3y\xA0\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\x81R`\x04\x01a\x03N\x91\x90a\x07\x9CV[`@Q\x80\x91\x03\x90\xFD[PPPPV[__\xFD[__\xFD[_\x81\x90P\x91\x90PV[a\x03w\x81a\x03eV[\x81\x14a\x03\x81W__\xFD[PV[_\x815\x90Pa\x03\x92\x81a\x03nV[\x92\x91PPV[_g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x16\x90P\x91\x90PV[a\x03\xB4\x81a\x03\x98V[\x81\x14a\x03\xBEW__\xFD[PV[_\x815\x90Pa\x03\xCF\x81a\x03\xABV[\x92\x91PPV[__\xFD[__\xFD[__\xFD[__\x83`\x1F\x84\x01\x12a\x03\xF6Wa\x03\xF5a\x03\xD5V[[\x825\x90Pg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x13Wa\x04\x12a\x03\xD9V[[` \x83\x01\x91P\x83`\x01\x82\x02\x83\x01\x11\x15a\x04/Wa\x04.a\x03\xDDV[[\x92P\x92\x90PV[_____`\x80\x86\x88\x03\x12\x15a\x04OWa\x04Na\x03]V[[_a\x04\\\x88\x82\x89\x01a\x03\x84V[\x95PP` a\x04m\x88\x82\x89\x01a\x03\xC1V[\x94PP`@a\x04~\x88\x82\x89\x01a\x03\x84V[\x93PP``\x86\x015g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11\x15a\x04\x9FWa\x04\x9Ea\x03aV[[a\x04\xAB\x88\x82\x89\x01a\x03\xE1V[\x92P\x92PP\x92\x95P\x92\x95\x90\x93PV[a\x04\xC3\x81a\x03eV[\x82RPPV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[\x82\x81\x837_\x83\x83\x01RPPPV[_`\x1F\x19`\x1F\x83\x01\x16\x90P\x91\x90PV[_a\x05\x02\x83\x85a\x04\xC9V[\x93Pa\x05\x0F\x83\x85\x84a\x04\xD9V[a\x05\x18\x83a\x04\xE7V[\x84\x01\x90P\x93\x92PPPV[_`@\x82\x01\x90Pa\x056_\x83\x01\x86a\x04\xBAV[\x81\x81\x03` \x83\x01Ra\x05I\x81\x84\x86a\x04\xF7V[\x90P\x94\x93PPPPV[_\x81\x90P\x92\x91PPV[PV[_a\x05k_\x83a\x05SV[\x91Pa\x05v\x82a\x05]V[_\x82\x01\x90P\x91\x90PV[_a\x05\x8A\x82a\x05`V[\x91P\x81\x90P\x91\x90PV[_\x82\x82R` \x82\x01\x90P\x92\x91PPV[\x7FPrecompile call failed\0\0\0\0\0\0\0\0\0\0_\x82\x01RPV[_a\x05\xD8`\x16\x83a\x05\x94V[\x91Pa\x05\xE3\x82a\x05\xA4V[` \x82\x01\x90P\x91\x90PV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06\x05\x81a\x05\xCCV[\x90P\x91\x90PV[\x7FInvalid output length\0\0\0\0\0\0\0\0\0\0\0_\x82\x01RPV[_a\x06@`\x15\x83a\x05\x94V[\x91Pa\x06K\x82a\x06\x0CV[` \x82\x01\x90P\x91\x90PV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x06m\x81a\x064V[\x90P\x91\x90PV[a\x06}\x81a\x03\x98V[\x81\x14a\x06\x87W__\xFD[PV[_\x81Q\x90Pa\x06\x98\x81a\x06tV[\x92\x91PPV[_` \x82\x84\x03\x12\x15a\x06\xB3Wa\x06\xB2a\x03]V[[_a\x06\xC0\x84\x82\x85\x01a\x06\x8AV[\x91PP\x92\x91PPV[_\x81\x15\x15\x90P\x91\x90PV[a\x06\xDD\x81a\x06\xC9V[\x82RPPV[_` \x82\x01\x90Pa\x06\xF6_\x83\x01\x84a\x06\xD4V[\x92\x91PPV[_\x81Q\x90P\x91\x90PV[\x82\x81\x83^_\x83\x83\x01RPPPV[_a\x07\x1E\x82a\x06\xFCV[a\x07(\x81\x85a\x05SV[\x93Pa\x078\x81\x85` \x86\x01a\x07\x06V[\x80\x84\x01\x91PP\x92\x91PPV[_a\x07O\x82\x84a\x07\x14V[\x91P\x81\x90P\x92\x91PPV[_\x81Q\x90P\x91\x90PV[_a\x07n\x82a\x07ZV[a\x07x\x81\x85a\x05\x94V[\x93Pa\x07\x88\x81\x85` \x86\x01a\x07\x06V[a\x07\x91\x81a\x04\xE7V[\x84\x01\x91PP\x92\x91PPV[_` \x82\x01\x90P\x81\x81\x03_\x83\x01Ra\x07\xB4\x81\x84a\x07dV[\x90P\x92\x91PPV",
388    );
389    #[derive(serde::Serialize, serde::Deserialize)]
390    #[derive(Default, Debug, PartialEq, Eq, Hash)]
391    /**Event with signature `BidSubmitted(uint256,address,uint64,uint256,bytes)` and selector `0xfa9544cad94ab8507946215078af54be3ed0a1f19911d5dab2037baf8e064fb0`.
392```solidity
393event BidSubmitted(uint256 indexed auction_id, address indexed bidder, Time.Timestamp indexed deadline, uint256 value, bytes data);
394```*/
395    #[allow(
396        non_camel_case_types,
397        non_snake_case,
398        clippy::pub_underscore_fields,
399        clippy::style
400    )]
401    #[derive(Clone)]
402    pub struct BidSubmitted {
403        #[allow(missing_docs)]
404        pub auction_id: alloy::sol_types::private::primitives::aliases::U256,
405        #[allow(missing_docs)]
406        pub bidder: alloy::sol_types::private::Address,
407        #[allow(missing_docs)]
408        pub deadline: <Time::Timestamp as alloy::sol_types::SolType>::RustType,
409        #[allow(missing_docs)]
410        pub value: alloy::sol_types::private::primitives::aliases::U256,
411        #[allow(missing_docs)]
412        pub data: alloy::sol_types::private::Bytes,
413    }
414    #[allow(
415        non_camel_case_types,
416        non_snake_case,
417        clippy::pub_underscore_fields,
418        clippy::style
419    )]
420    const _: () = {
421        use alloy::sol_types as alloy_sol_types;
422        #[automatically_derived]
423        impl alloy_sol_types::SolEvent for BidSubmitted {
424            type DataTuple<'a> = (
425                alloy::sol_types::sol_data::Uint<256>,
426                alloy::sol_types::sol_data::Bytes,
427            );
428            type DataToken<'a> = <Self::DataTuple<
429                'a,
430            > as alloy_sol_types::SolType>::Token<'a>;
431            type TopicList = (
432                alloy_sol_types::sol_data::FixedBytes<32>,
433                alloy::sol_types::sol_data::Uint<256>,
434                alloy::sol_types::sol_data::Address,
435                Time::Timestamp,
436            );
437            const SIGNATURE: &'static str = "BidSubmitted(uint256,address,uint64,uint256,bytes)";
438            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
439                250u8, 149u8, 68u8, 202u8, 217u8, 74u8, 184u8, 80u8, 121u8, 70u8, 33u8,
440                80u8, 120u8, 175u8, 84u8, 190u8, 62u8, 208u8, 161u8, 241u8, 153u8, 17u8,
441                213u8, 218u8, 178u8, 3u8, 123u8, 175u8, 142u8, 6u8, 79u8, 176u8,
442            ]);
443            const ANONYMOUS: bool = false;
444            #[allow(unused_variables)]
445            #[inline]
446            fn new(
447                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
448                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
449            ) -> Self {
450                Self {
451                    auction_id: topics.1,
452                    bidder: topics.2,
453                    deadline: topics.3,
454                    value: data.0,
455                    data: data.1,
456                }
457            }
458            #[inline]
459            fn check_signature(
460                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
461            ) -> alloy_sol_types::Result<()> {
462                if topics.0 != Self::SIGNATURE_HASH {
463                    return Err(
464                        alloy_sol_types::Error::invalid_event_signature_hash(
465                            Self::SIGNATURE,
466                            topics.0,
467                            Self::SIGNATURE_HASH,
468                        ),
469                    );
470                }
471                Ok(())
472            }
473            #[inline]
474            fn tokenize_body(&self) -> Self::DataToken<'_> {
475                (
476                    <alloy::sol_types::sol_data::Uint<
477                        256,
478                    > as alloy_sol_types::SolType>::tokenize(&self.value),
479                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
480                        &self.data,
481                    ),
482                )
483            }
484            #[inline]
485            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
486                (
487                    Self::SIGNATURE_HASH.into(),
488                    self.auction_id.clone(),
489                    self.bidder.clone(),
490                    self.deadline.clone(),
491                )
492            }
493            #[inline]
494            fn encode_topics_raw(
495                &self,
496                out: &mut [alloy_sol_types::abi::token::WordToken],
497            ) -> alloy_sol_types::Result<()> {
498                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
499                    return Err(alloy_sol_types::Error::Overrun);
500                }
501                out[0usize] = alloy_sol_types::abi::token::WordToken(
502                    Self::SIGNATURE_HASH,
503                );
504                out[1usize] = <alloy::sol_types::sol_data::Uint<
505                    256,
506                > as alloy_sol_types::EventTopic>::encode_topic(&self.auction_id);
507                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
508                    &self.bidder,
509                );
510                out[3usize] = <Time::Timestamp as alloy_sol_types::EventTopic>::encode_topic(
511                    &self.deadline,
512                );
513                Ok(())
514            }
515        }
516        #[automatically_derived]
517        impl alloy_sol_types::private::IntoLogData for BidSubmitted {
518            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
519                From::from(self)
520            }
521            fn into_log_data(self) -> alloy_sol_types::private::LogData {
522                From::from(&self)
523            }
524        }
525        #[automatically_derived]
526        impl From<&BidSubmitted> for alloy_sol_types::private::LogData {
527            #[inline]
528            fn from(this: &BidSubmitted) -> alloy_sol_types::private::LogData {
529                alloy_sol_types::SolEvent::encode_log_data(this)
530            }
531        }
532    };
533    #[derive(serde::Serialize, serde::Deserialize)]
534    #[derive(Default, Debug, PartialEq, Eq, Hash)]
535    /**Function with signature `submitBid(uint256,uint64,uint256,bytes)` and selector `0x4a19067e`.
536```solidity
537function submitBid(uint256 auction_id, Time.Timestamp deadline, uint256 value, bytes memory data) external;
538```*/
539    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
540    #[derive(Clone)]
541    pub struct submitBidCall {
542        #[allow(missing_docs)]
543        pub auction_id: alloy::sol_types::private::primitives::aliases::U256,
544        #[allow(missing_docs)]
545        pub deadline: <Time::Timestamp as alloy::sol_types::SolType>::RustType,
546        #[allow(missing_docs)]
547        pub value: alloy::sol_types::private::primitives::aliases::U256,
548        #[allow(missing_docs)]
549        pub data: alloy::sol_types::private::Bytes,
550    }
551    ///Container type for the return parameters of the [`submitBid(uint256,uint64,uint256,bytes)`](submitBidCall) function.
552    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
553    #[derive(Clone)]
554    pub struct submitBidReturn {}
555    #[allow(
556        non_camel_case_types,
557        non_snake_case,
558        clippy::pub_underscore_fields,
559        clippy::style
560    )]
561    const _: () = {
562        use alloy::sol_types as alloy_sol_types;
563        {
564            #[doc(hidden)]
565            #[allow(dead_code)]
566            type UnderlyingSolTuple<'a> = (
567                alloy::sol_types::sol_data::Uint<256>,
568                Time::Timestamp,
569                alloy::sol_types::sol_data::Uint<256>,
570                alloy::sol_types::sol_data::Bytes,
571            );
572            #[doc(hidden)]
573            type UnderlyingRustTuple<'a> = (
574                alloy::sol_types::private::primitives::aliases::U256,
575                <Time::Timestamp as alloy::sol_types::SolType>::RustType,
576                alloy::sol_types::private::primitives::aliases::U256,
577                alloy::sol_types::private::Bytes,
578            );
579            #[cfg(test)]
580            #[allow(dead_code, unreachable_patterns)]
581            fn _type_assertion(
582                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
583            ) {
584                match _t {
585                    alloy_sol_types::private::AssertTypeEq::<
586                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
587                    >(_) => {}
588                }
589            }
590            #[automatically_derived]
591            #[doc(hidden)]
592            impl ::core::convert::From<submitBidCall> for UnderlyingRustTuple<'_> {
593                fn from(value: submitBidCall) -> Self {
594                    (value.auction_id, value.deadline, value.value, value.data)
595                }
596            }
597            #[automatically_derived]
598            #[doc(hidden)]
599            impl ::core::convert::From<UnderlyingRustTuple<'_>> for submitBidCall {
600                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
601                    Self {
602                        auction_id: tuple.0,
603                        deadline: tuple.1,
604                        value: tuple.2,
605                        data: tuple.3,
606                    }
607                }
608            }
609        }
610        {
611            #[doc(hidden)]
612            #[allow(dead_code)]
613            type UnderlyingSolTuple<'a> = ();
614            #[doc(hidden)]
615            type UnderlyingRustTuple<'a> = ();
616            #[cfg(test)]
617            #[allow(dead_code, unreachable_patterns)]
618            fn _type_assertion(
619                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
620            ) {
621                match _t {
622                    alloy_sol_types::private::AssertTypeEq::<
623                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
624                    >(_) => {}
625                }
626            }
627            #[automatically_derived]
628            #[doc(hidden)]
629            impl ::core::convert::From<submitBidReturn> for UnderlyingRustTuple<'_> {
630                fn from(value: submitBidReturn) -> Self {
631                    ()
632                }
633            }
634            #[automatically_derived]
635            #[doc(hidden)]
636            impl ::core::convert::From<UnderlyingRustTuple<'_>> for submitBidReturn {
637                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
638                    Self {}
639                }
640            }
641        }
642        impl submitBidReturn {
643            fn _tokenize(
644                &self,
645            ) -> <submitBidCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
646                ()
647            }
648        }
649        #[automatically_derived]
650        impl alloy_sol_types::SolCall for submitBidCall {
651            type Parameters<'a> = (
652                alloy::sol_types::sol_data::Uint<256>,
653                Time::Timestamp,
654                alloy::sol_types::sol_data::Uint<256>,
655                alloy::sol_types::sol_data::Bytes,
656            );
657            type Token<'a> = <Self::Parameters<
658                'a,
659            > as alloy_sol_types::SolType>::Token<'a>;
660            type Return = submitBidReturn;
661            type ReturnTuple<'a> = ();
662            type ReturnToken<'a> = <Self::ReturnTuple<
663                'a,
664            > as alloy_sol_types::SolType>::Token<'a>;
665            const SIGNATURE: &'static str = "submitBid(uint256,uint64,uint256,bytes)";
666            const SELECTOR: [u8; 4] = [74u8, 25u8, 6u8, 126u8];
667            #[inline]
668            fn new<'a>(
669                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
670            ) -> Self {
671                tuple.into()
672            }
673            #[inline]
674            fn tokenize(&self) -> Self::Token<'_> {
675                (
676                    <alloy::sol_types::sol_data::Uint<
677                        256,
678                    > as alloy_sol_types::SolType>::tokenize(&self.auction_id),
679                    <Time::Timestamp as alloy_sol_types::SolType>::tokenize(
680                        &self.deadline,
681                    ),
682                    <alloy::sol_types::sol_data::Uint<
683                        256,
684                    > as alloy_sol_types::SolType>::tokenize(&self.value),
685                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
686                        &self.data,
687                    ),
688                )
689            }
690            #[inline]
691            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
692                submitBidReturn::_tokenize(ret)
693            }
694            #[inline]
695            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
696                <Self::ReturnTuple<
697                    '_,
698                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
699                    .map(Into::into)
700            }
701            #[inline]
702            fn abi_decode_returns_validate(
703                data: &[u8],
704            ) -> alloy_sol_types::Result<Self::Return> {
705                <Self::ReturnTuple<
706                    '_,
707                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
708                    .map(Into::into)
709            }
710        }
711    };
712    ///Container for all the [`Auction`](self) function calls.
713    #[derive(Clone)]
714    #[derive(serde::Serialize, serde::Deserialize)]
715    #[derive()]
716    pub enum AuctionCalls {
717        #[allow(missing_docs)]
718        submitBid(submitBidCall),
719    }
720    impl AuctionCalls {
721        /// All the selectors of this enum.
722        ///
723        /// Note that the selectors might not be in the same order as the variants.
724        /// No guarantees are made about the order of the selectors.
725        ///
726        /// Prefer using `SolInterface` methods instead.
727        pub const SELECTORS: &'static [[u8; 4usize]] = &[[74u8, 25u8, 6u8, 126u8]];
728        /// The names of the variants in the same order as `SELECTORS`.
729        pub const VARIANT_NAMES: &'static [&'static str] = &[
730            ::core::stringify!(submitBid),
731        ];
732        /// The signatures in the same order as `SELECTORS`.
733        pub const SIGNATURES: &'static [&'static str] = &[
734            <submitBidCall as alloy_sol_types::SolCall>::SIGNATURE,
735        ];
736        /// Returns the signature for the given selector, if known.
737        #[inline]
738        pub fn signature_by_selector(
739            selector: [u8; 4usize],
740        ) -> ::core::option::Option<&'static str> {
741            match Self::SELECTORS.binary_search(&selector) {
742                ::core::result::Result::Ok(idx) => {
743                    ::core::option::Option::Some(Self::SIGNATURES[idx])
744                }
745                ::core::result::Result::Err(_) => ::core::option::Option::None,
746            }
747        }
748        /// Returns the enum variant name for the given selector, if known.
749        #[inline]
750        pub fn name_by_selector(
751            selector: [u8; 4usize],
752        ) -> ::core::option::Option<&'static str> {
753            let sig = Self::signature_by_selector(selector)?;
754            sig.split_once('(').map(|(name, _)| name)
755        }
756    }
757    #[automatically_derived]
758    impl alloy_sol_types::SolInterface for AuctionCalls {
759        const NAME: &'static str = "AuctionCalls";
760        const MIN_DATA_LENGTH: usize = 160usize;
761        const COUNT: usize = 1usize;
762        #[inline]
763        fn selector(&self) -> [u8; 4] {
764            match self {
765                Self::submitBid(_) => {
766                    <submitBidCall as alloy_sol_types::SolCall>::SELECTOR
767                }
768            }
769        }
770        #[inline]
771        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
772            Self::SELECTORS.get(i).copied()
773        }
774        #[inline]
775        fn valid_selector(selector: [u8; 4]) -> bool {
776            Self::SELECTORS.binary_search(&selector).is_ok()
777        }
778        #[inline]
779        #[allow(non_snake_case)]
780        fn abi_decode_raw(
781            selector: [u8; 4],
782            data: &[u8],
783        ) -> alloy_sol_types::Result<Self> {
784            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<AuctionCalls>] = &[
785                {
786                    fn submitBid(data: &[u8]) -> alloy_sol_types::Result<AuctionCalls> {
787                        <submitBidCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
788                            .map(AuctionCalls::submitBid)
789                    }
790                    submitBid
791                },
792            ];
793            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
794                return Err(
795                    alloy_sol_types::Error::unknown_selector(
796                        <Self as alloy_sol_types::SolInterface>::NAME,
797                        selector,
798                    ),
799                );
800            };
801            DECODE_SHIMS[idx](data)
802        }
803        #[inline]
804        #[allow(non_snake_case)]
805        fn abi_decode_raw_validate(
806            selector: [u8; 4],
807            data: &[u8],
808        ) -> alloy_sol_types::Result<Self> {
809            static DECODE_VALIDATE_SHIMS: &[fn(
810                &[u8],
811            ) -> alloy_sol_types::Result<AuctionCalls>] = &[
812                {
813                    fn submitBid(data: &[u8]) -> alloy_sol_types::Result<AuctionCalls> {
814                        <submitBidCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
815                                data,
816                            )
817                            .map(AuctionCalls::submitBid)
818                    }
819                    submitBid
820                },
821            ];
822            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
823                return Err(
824                    alloy_sol_types::Error::unknown_selector(
825                        <Self as alloy_sol_types::SolInterface>::NAME,
826                        selector,
827                    ),
828                );
829            };
830            DECODE_VALIDATE_SHIMS[idx](data)
831        }
832        #[inline]
833        fn abi_encoded_size(&self) -> usize {
834            match self {
835                Self::submitBid(inner) => {
836                    <submitBidCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
837                }
838            }
839        }
840        #[inline]
841        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
842            match self {
843                Self::submitBid(inner) => {
844                    <submitBidCall as alloy_sol_types::SolCall>::abi_encode_raw(
845                        inner,
846                        out,
847                    )
848                }
849            }
850        }
851    }
852    ///Container for all the [`Auction`](self) events.
853    #[derive(Clone)]
854    #[derive(serde::Serialize, serde::Deserialize)]
855    #[derive(Debug, PartialEq, Eq, Hash)]
856    pub enum AuctionEvents {
857        #[allow(missing_docs)]
858        BidSubmitted(BidSubmitted),
859    }
860    impl AuctionEvents {
861        /// All the selectors of this enum.
862        ///
863        /// Note that the selectors might not be in the same order as the variants.
864        /// No guarantees are made about the order of the selectors.
865        ///
866        /// Prefer using `SolInterface` methods instead.
867        pub const SELECTORS: &'static [[u8; 32usize]] = &[
868            [
869                250u8, 149u8, 68u8, 202u8, 217u8, 74u8, 184u8, 80u8, 121u8, 70u8, 33u8,
870                80u8, 120u8, 175u8, 84u8, 190u8, 62u8, 208u8, 161u8, 241u8, 153u8, 17u8,
871                213u8, 218u8, 178u8, 3u8, 123u8, 175u8, 142u8, 6u8, 79u8, 176u8,
872            ],
873        ];
874        /// The names of the variants in the same order as `SELECTORS`.
875        pub const VARIANT_NAMES: &'static [&'static str] = &[
876            ::core::stringify!(BidSubmitted),
877        ];
878        /// The signatures in the same order as `SELECTORS`.
879        pub const SIGNATURES: &'static [&'static str] = &[
880            <BidSubmitted as alloy_sol_types::SolEvent>::SIGNATURE,
881        ];
882        /// Returns the signature for the given selector, if known.
883        #[inline]
884        pub fn signature_by_selector(
885            selector: [u8; 32usize],
886        ) -> ::core::option::Option<&'static str> {
887            match Self::SELECTORS.binary_search(&selector) {
888                ::core::result::Result::Ok(idx) => {
889                    ::core::option::Option::Some(Self::SIGNATURES[idx])
890                }
891                ::core::result::Result::Err(_) => ::core::option::Option::None,
892            }
893        }
894        /// Returns the enum variant name for the given selector, if known.
895        #[inline]
896        pub fn name_by_selector(
897            selector: [u8; 32usize],
898        ) -> ::core::option::Option<&'static str> {
899            let sig = Self::signature_by_selector(selector)?;
900            sig.split_once('(').map(|(name, _)| name)
901        }
902    }
903    #[automatically_derived]
904    impl alloy_sol_types::SolEventInterface for AuctionEvents {
905        const NAME: &'static str = "AuctionEvents";
906        const COUNT: usize = 1usize;
907        fn decode_raw_log(
908            topics: &[alloy_sol_types::Word],
909            data: &[u8],
910        ) -> alloy_sol_types::Result<Self> {
911            match topics.first().copied() {
912                Some(<BidSubmitted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
913                    <BidSubmitted as alloy_sol_types::SolEvent>::decode_raw_log(
914                            topics,
915                            data,
916                        )
917                        .map(Self::BidSubmitted)
918                }
919                _ => {
920                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
921                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
922                        log: alloy_sol_types::private::Box::new(
923                            alloy_sol_types::private::LogData::new_unchecked(
924                                topics.to_vec(),
925                                data.to_vec().into(),
926                            ),
927                        ),
928                    })
929                }
930            }
931        }
932    }
933    #[automatically_derived]
934    impl alloy_sol_types::private::IntoLogData for AuctionEvents {
935        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
936            match self {
937                Self::BidSubmitted(inner) => {
938                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
939                }
940            }
941        }
942        fn into_log_data(self) -> alloy_sol_types::private::LogData {
943            match self {
944                Self::BidSubmitted(inner) => {
945                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
946                }
947            }
948        }
949    }
950    use alloy::contract as alloy_contract;
951    /**Creates a new wrapper around an on-chain [`Auction`](self) contract instance.
952
953See the [wrapper's documentation](`AuctionInstance`) for more details.*/
954    #[inline]
955    pub const fn new<
956        P: alloy_contract::private::Provider<N>,
957        N: alloy_contract::private::Network,
958    >(
959        address: alloy_sol_types::private::Address,
960        __provider: P,
961    ) -> AuctionInstance<P, N> {
962        AuctionInstance::<P, N>::new(address, __provider)
963    }
964    /**Deploys this contract using the given `provider` and constructor arguments, if any.
965
966Returns a new instance of the contract, if the deployment was successful.
967
968For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
969    #[inline]
970    pub fn deploy<
971        P: alloy_contract::private::Provider<N>,
972        N: alloy_contract::private::Network,
973    >(
974        __provider: P,
975    ) -> impl ::core::future::Future<
976        Output = alloy_contract::Result<AuctionInstance<P, N>>,
977    > {
978        AuctionInstance::<P, N>::deploy(__provider)
979    }
980    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
981and constructor arguments, if any.
982
983This is a simple wrapper around creating a `RawCallBuilder` with the data set to
984the bytecode concatenated with the constructor's ABI-encoded arguments.*/
985    #[inline]
986    pub fn deploy_builder<
987        P: alloy_contract::private::Provider<N>,
988        N: alloy_contract::private::Network,
989    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
990        AuctionInstance::<P, N>::deploy_builder(__provider)
991    }
992    /**A [`Auction`](self) instance.
993
994Contains type-safe methods for interacting with an on-chain instance of the
995[`Auction`](self) contract located at a given `address`, using a given
996provider `P`.
997
998If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
999documentation on how to provide it), the `deploy` and `deploy_builder` methods can
1000be used to deploy a new instance of the contract.
1001
1002See the [module-level documentation](self) for all the available methods.*/
1003    #[derive(Clone)]
1004    pub struct AuctionInstance<P, N = alloy_contract::private::Ethereum> {
1005        address: alloy_sol_types::private::Address,
1006        provider: P,
1007        _network: ::core::marker::PhantomData<N>,
1008    }
1009    #[automatically_derived]
1010    impl<P, N> ::core::fmt::Debug for AuctionInstance<P, N> {
1011        #[inline]
1012        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1013            f.debug_tuple("AuctionInstance").field(&self.address).finish()
1014        }
1015    }
1016    /// Instantiation and getters/setters.
1017    impl<
1018        P: alloy_contract::private::Provider<N>,
1019        N: alloy_contract::private::Network,
1020    > AuctionInstance<P, N> {
1021        /**Creates a new wrapper around an on-chain [`Auction`](self) contract instance.
1022
1023See the [wrapper's documentation](`AuctionInstance`) for more details.*/
1024        #[inline]
1025        pub const fn new(
1026            address: alloy_sol_types::private::Address,
1027            __provider: P,
1028        ) -> Self {
1029            Self {
1030                address,
1031                provider: __provider,
1032                _network: ::core::marker::PhantomData,
1033            }
1034        }
1035        /**Deploys this contract using the given `provider` and constructor arguments, if any.
1036
1037Returns a new instance of the contract, if the deployment was successful.
1038
1039For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
1040        #[inline]
1041        pub async fn deploy(
1042            __provider: P,
1043        ) -> alloy_contract::Result<AuctionInstance<P, N>> {
1044            let call_builder = Self::deploy_builder(__provider);
1045            let contract_address = call_builder.deploy().await?;
1046            Ok(Self::new(contract_address, call_builder.provider))
1047        }
1048        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
1049and constructor arguments, if any.
1050
1051This is a simple wrapper around creating a `RawCallBuilder` with the data set to
1052the bytecode concatenated with the constructor's ABI-encoded arguments.*/
1053        #[inline]
1054        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
1055            alloy_contract::RawCallBuilder::new_raw_deploy(
1056                __provider,
1057                ::core::clone::Clone::clone(&BYTECODE),
1058            )
1059        }
1060        /// Returns a reference to the address.
1061        #[inline]
1062        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1063            &self.address
1064        }
1065        /// Sets the address.
1066        #[inline]
1067        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1068            self.address = address;
1069        }
1070        /// Sets the address and returns `self`.
1071        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1072            self.set_address(address);
1073            self
1074        }
1075        /// Returns a reference to the provider.
1076        #[inline]
1077        pub const fn provider(&self) -> &P {
1078            &self.provider
1079        }
1080    }
1081    impl<P: ::core::clone::Clone, N> AuctionInstance<&P, N> {
1082        /// Clones the provider and returns a new instance with the cloned provider.
1083        #[inline]
1084        pub fn with_cloned_provider(self) -> AuctionInstance<P, N> {
1085            AuctionInstance {
1086                address: self.address,
1087                provider: ::core::clone::Clone::clone(&self.provider),
1088                _network: ::core::marker::PhantomData,
1089            }
1090        }
1091    }
1092    /// Function calls.
1093    impl<
1094        P: alloy_contract::private::Provider<N>,
1095        N: alloy_contract::private::Network,
1096    > AuctionInstance<P, N> {
1097        /// Creates a new call builder using this contract instance's provider and address.
1098        ///
1099        /// Note that the call can be any function call, not just those defined in this
1100        /// contract. Prefer using the other methods for building type-safe contract calls.
1101        pub fn call_builder<C: alloy_sol_types::SolCall>(
1102            &self,
1103            call: &C,
1104        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1105            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1106        }
1107        ///Creates a new call builder for the [`submitBid`] function.
1108        pub fn submitBid(
1109            &self,
1110            auction_id: alloy::sol_types::private::primitives::aliases::U256,
1111            deadline: <Time::Timestamp as alloy::sol_types::SolType>::RustType,
1112            value: alloy::sol_types::private::primitives::aliases::U256,
1113            data: alloy::sol_types::private::Bytes,
1114        ) -> alloy_contract::SolCallBuilder<&P, submitBidCall, N> {
1115            self.call_builder(
1116                &submitBidCall {
1117                    auction_id,
1118                    deadline,
1119                    value,
1120                    data,
1121                },
1122            )
1123        }
1124    }
1125    /// Event filters.
1126    impl<
1127        P: alloy_contract::private::Provider<N>,
1128        N: alloy_contract::private::Network,
1129    > AuctionInstance<P, N> {
1130        /// Creates a new event filter using this contract instance's provider and address.
1131        ///
1132        /// Note that the type can be any event, not just those defined in this contract.
1133        /// Prefer using the other methods for building type-safe event filters.
1134        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1135            &self,
1136        ) -> alloy_contract::Event<&P, E, N> {
1137            alloy_contract::Event::new_sol(&self.provider, &self.address)
1138        }
1139        ///Creates a new event filter for the [`BidSubmitted`] event.
1140        pub fn BidSubmitted_filter(&self) -> alloy_contract::Event<&P, BidSubmitted, N> {
1141            self.event_filter::<BidSubmitted>()
1142        }
1143    }
1144}