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        #[automatically_derived]
62        impl Timestamp {
63            /// The Solidity type name.
64            pub const NAME: &'static str = stringify!(@ name);
65            /// Convert from the underlying value type.
66            #[inline]
67            pub const fn from_underlying(value: u64) -> Self {
68                Self(value)
69            }
70            /// Return the underlying value.
71            #[inline]
72            pub const fn into_underlying(self) -> u64 {
73                self.0
74            }
75            /// Return the single encoding of this value, delegating to the
76            /// underlying type.
77            #[inline]
78            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
79                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
80            }
81            /// Return the packed encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
86            }
87        }
88        #[automatically_derived]
89        impl From<u64> for Timestamp {
90            fn from(value: u64) -> Self {
91                Self::from_underlying(value)
92            }
93        }
94        #[automatically_derived]
95        impl From<Timestamp> for u64 {
96            fn from(value: Timestamp) -> Self {
97                value.into_underlying()
98            }
99        }
100        #[automatically_derived]
101        impl alloy_sol_types::SolType for Timestamp {
102            type RustType = u64;
103            type Token<'a> = <alloy::sol_types::sol_data::Uint<
104                64,
105            > as alloy_sol_types::SolType>::Token<'a>;
106            const SOL_NAME: &'static str = Self::NAME;
107            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
108                64,
109            > as alloy_sol_types::SolType>::ENCODED_SIZE;
110            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
111                64,
112            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
113            #[inline]
114            fn valid_token(token: &Self::Token<'_>) -> bool {
115                Self::type_check(token).is_ok()
116            }
117            #[inline]
118            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
119                <alloy::sol_types::sol_data::Uint<
120                    64,
121                > as alloy_sol_types::SolType>::type_check(token)
122            }
123            #[inline]
124            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
125                <alloy::sol_types::sol_data::Uint<
126                    64,
127                > as alloy_sol_types::SolType>::detokenize(token)
128            }
129        }
130        #[automatically_derived]
131        impl alloy_sol_types::EventTopic for Timestamp {
132            #[inline]
133            fn topic_preimage_length(rust: &Self::RustType) -> usize {
134                <alloy::sol_types::sol_data::Uint<
135                    64,
136                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
137            }
138            #[inline]
139            fn encode_topic_preimage(
140                rust: &Self::RustType,
141                out: &mut alloy_sol_types::private::Vec<u8>,
142            ) {
143                <alloy::sol_types::sol_data::Uint<
144                    64,
145                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
146            }
147            #[inline]
148            fn encode_topic(
149                rust: &Self::RustType,
150            ) -> alloy_sol_types::abi::token::WordToken {
151                <alloy::sol_types::sol_data::Uint<
152                    64,
153                > as alloy_sol_types::EventTopic>::encode_topic(rust)
154            }
155        }
156    };
157    use alloy::contract as alloy_contract;
158    /**Creates a new wrapper around an on-chain [`Time`](self) contract instance.
159
160See the [wrapper's documentation](`TimeInstance`) for more details.*/
161    #[inline]
162    pub const fn new<
163        P: alloy_contract::private::Provider<N>,
164        N: alloy_contract::private::Network,
165    >(address: alloy_sol_types::private::Address, provider: P) -> TimeInstance<P, N> {
166        TimeInstance::<P, N>::new(address, provider)
167    }
168    /**A [`Time`](self) instance.
169
170Contains type-safe methods for interacting with an on-chain instance of the
171[`Time`](self) contract located at a given `address`, using a given
172provider `P`.
173
174If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
175documentation on how to provide it), the `deploy` and `deploy_builder` methods can
176be used to deploy a new instance of the contract.
177
178See the [module-level documentation](self) for all the available methods.*/
179    #[derive(Clone)]
180    pub struct TimeInstance<P, N = alloy_contract::private::Ethereum> {
181        address: alloy_sol_types::private::Address,
182        provider: P,
183        _network: ::core::marker::PhantomData<N>,
184    }
185    #[automatically_derived]
186    impl<P, N> ::core::fmt::Debug for TimeInstance<P, N> {
187        #[inline]
188        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
189            f.debug_tuple("TimeInstance").field(&self.address).finish()
190        }
191    }
192    /// Instantiation and getters/setters.
193    #[automatically_derived]
194    impl<
195        P: alloy_contract::private::Provider<N>,
196        N: alloy_contract::private::Network,
197    > TimeInstance<P, N> {
198        /**Creates a new wrapper around an on-chain [`Time`](self) contract instance.
199
200See the [wrapper's documentation](`TimeInstance`) for more details.*/
201        #[inline]
202        pub const fn new(
203            address: alloy_sol_types::private::Address,
204            provider: P,
205        ) -> Self {
206            Self {
207                address,
208                provider,
209                _network: ::core::marker::PhantomData,
210            }
211        }
212        /// Returns a reference to the address.
213        #[inline]
214        pub const fn address(&self) -> &alloy_sol_types::private::Address {
215            &self.address
216        }
217        /// Sets the address.
218        #[inline]
219        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
220            self.address = address;
221        }
222        /// Sets the address and returns `self`.
223        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
224            self.set_address(address);
225            self
226        }
227        /// Returns a reference to the provider.
228        #[inline]
229        pub const fn provider(&self) -> &P {
230            &self.provider
231        }
232    }
233    impl<P: ::core::clone::Clone, N> TimeInstance<&P, N> {
234        /// Clones the provider and returns a new instance with the cloned provider.
235        #[inline]
236        pub fn with_cloned_provider(self) -> TimeInstance<P, N> {
237            TimeInstance {
238                address: self.address,
239                provider: ::core::clone::Clone::clone(&self.provider),
240                _network: ::core::marker::PhantomData,
241            }
242        }
243    }
244    /// Function calls.
245    #[automatically_derived]
246    impl<
247        P: alloy_contract::private::Provider<N>,
248        N: alloy_contract::private::Network,
249    > TimeInstance<P, N> {
250        /// Creates a new call builder using this contract instance's provider and address.
251        ///
252        /// Note that the call can be any function call, not just those defined in this
253        /// contract. Prefer using the other methods for building type-safe contract calls.
254        pub fn call_builder<C: alloy_sol_types::SolCall>(
255            &self,
256            call: &C,
257        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
258            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
259        }
260    }
261    /// Event filters.
262    #[automatically_derived]
263    impl<
264        P: alloy_contract::private::Provider<N>,
265        N: alloy_contract::private::Network,
266    > TimeInstance<P, N> {
267        /// Creates a new event filter using this contract instance's provider and address.
268        ///
269        /// Note that the type can be any event, not just those defined in this contract.
270        /// Prefer using the other methods for building type-safe event filters.
271        pub fn event_filter<E: alloy_sol_types::SolEvent>(
272            &self,
273        ) -> alloy_contract::Event<&P, E, N> {
274            alloy_contract::Event::new_sol(&self.provider, &self.address)
275        }
276    }
277}
278/**
279
280Generated by the following Solidity interface...
281```solidity
282library Time {
283    type Timestamp is uint64;
284}
285
286interface Auction {
287    event BidSubmitted(uint256 indexed auction_id, address indexed bidder, Time.Timestamp indexed deadline, uint256 value, bytes data);
288
289    function submitBid(uint256 auction_id, Time.Timestamp deadline, uint256 value, bytes memory data) external;
290}
291```
292
293...which was generated by the following JSON ABI:
294```json
295[
296  {
297    "type": "function",
298    "name": "submitBid",
299    "inputs": [
300      {
301        "name": "auction_id",
302        "type": "uint256",
303        "internalType": "uint256"
304      },
305      {
306        "name": "deadline",
307        "type": "uint64",
308        "internalType": "Time.Timestamp"
309      },
310      {
311        "name": "value",
312        "type": "uint256",
313        "internalType": "uint256"
314      },
315      {
316        "name": "data",
317        "type": "bytes",
318        "internalType": "bytes"
319      }
320    ],
321    "outputs": [],
322    "stateMutability": "nonpayable"
323  },
324  {
325    "type": "event",
326    "name": "BidSubmitted",
327    "inputs": [
328      {
329        "name": "auction_id",
330        "type": "uint256",
331        "indexed": true,
332        "internalType": "uint256"
333      },
334      {
335        "name": "bidder",
336        "type": "address",
337        "indexed": true,
338        "internalType": "address"
339      },
340      {
341        "name": "deadline",
342        "type": "uint64",
343        "indexed": true,
344        "internalType": "Time.Timestamp"
345      },
346      {
347        "name": "value",
348        "type": "uint256",
349        "indexed": false,
350        "internalType": "uint256"
351      },
352      {
353        "name": "data",
354        "type": "bytes",
355        "indexed": false,
356        "internalType": "bytes"
357      }
358    ],
359    "anonymous": false
360  }
361]
362```*/
363#[allow(
364    non_camel_case_types,
365    non_snake_case,
366    clippy::pub_underscore_fields,
367    clippy::style,
368    clippy::empty_structs_with_brackets
369)]
370pub mod Auction {
371    use super::*;
372    use alloy::sol_types as alloy_sol_types;
373    /// The creation / init bytecode of the contract.
374    ///
375    /// ```text
376    ///0x6080604052348015600e575f5ffd5b506107bc8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c80634a19067e1461002d575b5f5ffd5b61004760048036038101906100429190610436565b610049565b005b610088846040518060400160405280601781526020017f41756374696f6e20646561646c696e65207061737365640000000000000000008152506100ed565b8367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867ffa9544cad94ab8507946215078af54be3ed0a1f19911d5dab2037baf8e064fb08686866040516100de93929190610523565b60405180910390a45050505050565b61011a610114836100fc61011e565b67ffffffffffffffff1661024c90919063ffffffff16565b8261026c565b5050565b5f5f5f7fba286e4d89dabf4b2878e896423bb123d9d5143e662606fd343b6766d7bcf7215f1c73ffffffffffffffffffffffffffffffffffffffff1660405161016690610580565b5f60405180830381855afa9150503d805f811461019e576040519150601f19603f3d011682016040523d82523d5f602084013e6101a3565b606091505b5091509150816101e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101df906105ee565b60405180910390fd5b602081511461022c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022390610656565b60405180910390fd5b5f81806020019051810190610241919061069e565b905080935050505090565b5f8167ffffffffffffffff168367ffffffffffffffff1610905092915050565b5f7f3dcdf63b41c103567d7225976ad9145e866c7a7dccc6c277ea86abbd268fbac95f1c73ffffffffffffffffffffffffffffffffffffffff16836040516020016102b791906106e3565b6040516020818303038152906040526040516102d39190610744565b5f60405180830381855afa9150503d805f811461030b576040519150601f19603f3d011682016040523d82523d5f602084013e610310565b606091505b50509050808290610357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034e919061079c565b60405180910390fd5b50505050565b5f5ffd5b5f5ffd5b5f819050919050565b61037781610365565b8114610381575f5ffd5b50565b5f813590506103928161036e565b92915050565b5f67ffffffffffffffff82169050919050565b6103b481610398565b81146103be575f5ffd5b50565b5f813590506103cf816103ab565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103f6576103f56103d5565b5b8235905067ffffffffffffffff811115610413576104126103d9565b5b60208301915083600182028301111561042f5761042e6103dd565b5b9250929050565b5f5f5f5f5f6080868803121561044f5761044e61035d565b5b5f61045c88828901610384565b955050602061046d888289016103c1565b945050604061047e88828901610384565b935050606086013567ffffffffffffffff81111561049f5761049e610361565b5b6104ab888289016103e1565b92509250509295509295909350565b6104c381610365565b82525050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f61050283856104c9565b935061050f8385846104d9565b610518836104e7565b840190509392505050565b5f6040820190506105365f8301866104ba565b81810360208301526105498184866104f7565b9050949350505050565b5f81905092915050565b50565b5f61056b5f83610553565b91506105768261055d565b5f82019050919050565b5f61058a82610560565b9150819050919050565b5f82825260208201905092915050565b7f507265636f6d70696c652063616c6c206661696c6564000000000000000000005f82015250565b5f6105d8601683610594565b91506105e3826105a4565b602082019050919050565b5f6020820190508181035f830152610605816105cc565b9050919050565b7f496e76616c6964206f7574707574206c656e67746800000000000000000000005f82015250565b5f610640601583610594565b915061064b8261060c565b602082019050919050565b5f6020820190508181035f83015261066d81610634565b9050919050565b61067d81610398565b8114610687575f5ffd5b50565b5f8151905061069881610674565b92915050565b5f602082840312156106b3576106b261035d565b5b5f6106c08482850161068a565b91505092915050565b5f8115159050919050565b6106dd816106c9565b82525050565b5f6020820190506106f65f8301846106d4565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61071e826106fc565b6107288185610553565b9350610738818560208601610706565b80840191505092915050565b5f61074f8284610714565b915081905092915050565b5f81519050919050565b5f61076e8261075a565b6107788185610594565b9350610788818560208601610706565b610791816104e7565b840191505092915050565b5f6020820190508181035f8301526107b48184610764565b90509291505056
377    /// ```
378    #[rustfmt::skip]
379    #[allow(clippy::all)]
380    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
381        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",
382    );
383    /// The runtime bytecode of the contract, as deployed on the network.
384    ///
385    /// ```text
386    ///0x608060405234801561000f575f5ffd5b5060043610610029575f3560e01c80634a19067e1461002d575b5f5ffd5b61004760048036038101906100429190610436565b610049565b005b610088846040518060400160405280601781526020017f41756374696f6e20646561646c696e65207061737365640000000000000000008152506100ed565b8367ffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16867ffa9544cad94ab8507946215078af54be3ed0a1f19911d5dab2037baf8e064fb08686866040516100de93929190610523565b60405180910390a45050505050565b61011a610114836100fc61011e565b67ffffffffffffffff1661024c90919063ffffffff16565b8261026c565b5050565b5f5f5f7fba286e4d89dabf4b2878e896423bb123d9d5143e662606fd343b6766d7bcf7215f1c73ffffffffffffffffffffffffffffffffffffffff1660405161016690610580565b5f60405180830381855afa9150503d805f811461019e576040519150601f19603f3d011682016040523d82523d5f602084013e6101a3565b606091505b5091509150816101e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101df906105ee565b60405180910390fd5b602081511461022c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022390610656565b60405180910390fd5b5f81806020019051810190610241919061069e565b905080935050505090565b5f8167ffffffffffffffff168367ffffffffffffffff1610905092915050565b5f7f3dcdf63b41c103567d7225976ad9145e866c7a7dccc6c277ea86abbd268fbac95f1c73ffffffffffffffffffffffffffffffffffffffff16836040516020016102b791906106e3565b6040516020818303038152906040526040516102d39190610744565b5f60405180830381855afa9150503d805f811461030b576040519150601f19603f3d011682016040523d82523d5f602084013e610310565b606091505b50509050808290610357576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161034e919061079c565b60405180910390fd5b50505050565b5f5ffd5b5f5ffd5b5f819050919050565b61037781610365565b8114610381575f5ffd5b50565b5f813590506103928161036e565b92915050565b5f67ffffffffffffffff82169050919050565b6103b481610398565b81146103be575f5ffd5b50565b5f813590506103cf816103ab565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126103f6576103f56103d5565b5b8235905067ffffffffffffffff811115610413576104126103d9565b5b60208301915083600182028301111561042f5761042e6103dd565b5b9250929050565b5f5f5f5f5f6080868803121561044f5761044e61035d565b5b5f61045c88828901610384565b955050602061046d888289016103c1565b945050604061047e88828901610384565b935050606086013567ffffffffffffffff81111561049f5761049e610361565b5b6104ab888289016103e1565b92509250509295509295909350565b6104c381610365565b82525050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f61050283856104c9565b935061050f8385846104d9565b610518836104e7565b840190509392505050565b5f6040820190506105365f8301866104ba565b81810360208301526105498184866104f7565b9050949350505050565b5f81905092915050565b50565b5f61056b5f83610553565b91506105768261055d565b5f82019050919050565b5f61058a82610560565b9150819050919050565b5f82825260208201905092915050565b7f507265636f6d70696c652063616c6c206661696c6564000000000000000000005f82015250565b5f6105d8601683610594565b91506105e3826105a4565b602082019050919050565b5f6020820190508181035f830152610605816105cc565b9050919050565b7f496e76616c6964206f7574707574206c656e67746800000000000000000000005f82015250565b5f610640601583610594565b915061064b8261060c565b602082019050919050565b5f6020820190508181035f83015261066d81610634565b9050919050565b61067d81610398565b8114610687575f5ffd5b50565b5f8151905061069881610674565b92915050565b5f602082840312156106b3576106b261035d565b5b5f6106c08482850161068a565b91505092915050565b5f8115159050919050565b6106dd816106c9565b82525050565b5f6020820190506106f65f8301846106d4565b92915050565b5f81519050919050565b8281835e5f83830152505050565b5f61071e826106fc565b6107288185610553565b9350610738818560208601610706565b80840191505092915050565b5f61074f8284610714565b915081905092915050565b5f81519050919050565b5f61076e8261075a565b6107788185610594565b9350610788818560208601610706565b610791816104e7565b840191505092915050565b5f6020820190508181035f8301526107b48184610764565b90509291505056
387    /// ```
388    #[rustfmt::skip]
389    #[allow(clippy::all)]
390    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
391        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",
392    );
393    #[derive(serde::Serialize, serde::Deserialize)]
394    #[derive(Default, Debug, PartialEq, Eq, Hash)]
395    /**Event with signature `BidSubmitted(uint256,address,uint64,uint256,bytes)` and selector `0xfa9544cad94ab8507946215078af54be3ed0a1f19911d5dab2037baf8e064fb0`.
396```solidity
397event BidSubmitted(uint256 indexed auction_id, address indexed bidder, Time.Timestamp indexed deadline, uint256 value, bytes data);
398```*/
399    #[allow(
400        non_camel_case_types,
401        non_snake_case,
402        clippy::pub_underscore_fields,
403        clippy::style
404    )]
405    #[derive(Clone)]
406    pub struct BidSubmitted {
407        #[allow(missing_docs)]
408        pub auction_id: alloy::sol_types::private::primitives::aliases::U256,
409        #[allow(missing_docs)]
410        pub bidder: alloy::sol_types::private::Address,
411        #[allow(missing_docs)]
412        pub deadline: <Time::Timestamp as alloy::sol_types::SolType>::RustType,
413        #[allow(missing_docs)]
414        pub value: alloy::sol_types::private::primitives::aliases::U256,
415        #[allow(missing_docs)]
416        pub data: alloy::sol_types::private::Bytes,
417    }
418    #[allow(
419        non_camel_case_types,
420        non_snake_case,
421        clippy::pub_underscore_fields,
422        clippy::style
423    )]
424    const _: () = {
425        use alloy::sol_types as alloy_sol_types;
426        #[automatically_derived]
427        impl alloy_sol_types::SolEvent for BidSubmitted {
428            type DataTuple<'a> = (
429                alloy::sol_types::sol_data::Uint<256>,
430                alloy::sol_types::sol_data::Bytes,
431            );
432            type DataToken<'a> = <Self::DataTuple<
433                'a,
434            > as alloy_sol_types::SolType>::Token<'a>;
435            type TopicList = (
436                alloy_sol_types::sol_data::FixedBytes<32>,
437                alloy::sol_types::sol_data::Uint<256>,
438                alloy::sol_types::sol_data::Address,
439                Time::Timestamp,
440            );
441            const SIGNATURE: &'static str = "BidSubmitted(uint256,address,uint64,uint256,bytes)";
442            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
443                250u8, 149u8, 68u8, 202u8, 217u8, 74u8, 184u8, 80u8, 121u8, 70u8, 33u8,
444                80u8, 120u8, 175u8, 84u8, 190u8, 62u8, 208u8, 161u8, 241u8, 153u8, 17u8,
445                213u8, 218u8, 178u8, 3u8, 123u8, 175u8, 142u8, 6u8, 79u8, 176u8,
446            ]);
447            const ANONYMOUS: bool = false;
448            #[allow(unused_variables)]
449            #[inline]
450            fn new(
451                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
452                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
453            ) -> Self {
454                Self {
455                    auction_id: topics.1,
456                    bidder: topics.2,
457                    deadline: topics.3,
458                    value: data.0,
459                    data: data.1,
460                }
461            }
462            #[inline]
463            fn check_signature(
464                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
465            ) -> alloy_sol_types::Result<()> {
466                if topics.0 != Self::SIGNATURE_HASH {
467                    return Err(
468                        alloy_sol_types::Error::invalid_event_signature_hash(
469                            Self::SIGNATURE,
470                            topics.0,
471                            Self::SIGNATURE_HASH,
472                        ),
473                    );
474                }
475                Ok(())
476            }
477            #[inline]
478            fn tokenize_body(&self) -> Self::DataToken<'_> {
479                (
480                    <alloy::sol_types::sol_data::Uint<
481                        256,
482                    > as alloy_sol_types::SolType>::tokenize(&self.value),
483                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
484                        &self.data,
485                    ),
486                )
487            }
488            #[inline]
489            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
490                (
491                    Self::SIGNATURE_HASH.into(),
492                    self.auction_id.clone(),
493                    self.bidder.clone(),
494                    self.deadline.clone(),
495                )
496            }
497            #[inline]
498            fn encode_topics_raw(
499                &self,
500                out: &mut [alloy_sol_types::abi::token::WordToken],
501            ) -> alloy_sol_types::Result<()> {
502                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
503                    return Err(alloy_sol_types::Error::Overrun);
504                }
505                out[0usize] = alloy_sol_types::abi::token::WordToken(
506                    Self::SIGNATURE_HASH,
507                );
508                out[1usize] = <alloy::sol_types::sol_data::Uint<
509                    256,
510                > as alloy_sol_types::EventTopic>::encode_topic(&self.auction_id);
511                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
512                    &self.bidder,
513                );
514                out[3usize] = <Time::Timestamp as alloy_sol_types::EventTopic>::encode_topic(
515                    &self.deadline,
516                );
517                Ok(())
518            }
519        }
520        #[automatically_derived]
521        impl alloy_sol_types::private::IntoLogData for BidSubmitted {
522            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
523                From::from(self)
524            }
525            fn into_log_data(self) -> alloy_sol_types::private::LogData {
526                From::from(&self)
527            }
528        }
529        #[automatically_derived]
530        impl From<&BidSubmitted> for alloy_sol_types::private::LogData {
531            #[inline]
532            fn from(this: &BidSubmitted) -> alloy_sol_types::private::LogData {
533                alloy_sol_types::SolEvent::encode_log_data(this)
534            }
535        }
536    };
537    #[derive(serde::Serialize, serde::Deserialize)]
538    #[derive(Default, Debug, PartialEq, Eq, Hash)]
539    /**Function with signature `submitBid(uint256,uint64,uint256,bytes)` and selector `0x4a19067e`.
540```solidity
541function submitBid(uint256 auction_id, Time.Timestamp deadline, uint256 value, bytes memory data) external;
542```*/
543    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
544    #[derive(Clone)]
545    pub struct submitBidCall {
546        #[allow(missing_docs)]
547        pub auction_id: alloy::sol_types::private::primitives::aliases::U256,
548        #[allow(missing_docs)]
549        pub deadline: <Time::Timestamp as alloy::sol_types::SolType>::RustType,
550        #[allow(missing_docs)]
551        pub value: alloy::sol_types::private::primitives::aliases::U256,
552        #[allow(missing_docs)]
553        pub data: alloy::sol_types::private::Bytes,
554    }
555    ///Container type for the return parameters of the [`submitBid(uint256,uint64,uint256,bytes)`](submitBidCall) function.
556    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
557    #[derive(Clone)]
558    pub struct submitBidReturn {}
559    #[allow(
560        non_camel_case_types,
561        non_snake_case,
562        clippy::pub_underscore_fields,
563        clippy::style
564    )]
565    const _: () = {
566        use alloy::sol_types as alloy_sol_types;
567        {
568            #[doc(hidden)]
569            type UnderlyingSolTuple<'a> = (
570                alloy::sol_types::sol_data::Uint<256>,
571                Time::Timestamp,
572                alloy::sol_types::sol_data::Uint<256>,
573                alloy::sol_types::sol_data::Bytes,
574            );
575            #[doc(hidden)]
576            type UnderlyingRustTuple<'a> = (
577                alloy::sol_types::private::primitives::aliases::U256,
578                <Time::Timestamp as alloy::sol_types::SolType>::RustType,
579                alloy::sol_types::private::primitives::aliases::U256,
580                alloy::sol_types::private::Bytes,
581            );
582            #[cfg(test)]
583            #[allow(dead_code, unreachable_patterns)]
584            fn _type_assertion(
585                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
586            ) {
587                match _t {
588                    alloy_sol_types::private::AssertTypeEq::<
589                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
590                    >(_) => {}
591                }
592            }
593            #[automatically_derived]
594            #[doc(hidden)]
595            impl ::core::convert::From<submitBidCall> for UnderlyingRustTuple<'_> {
596                fn from(value: submitBidCall) -> Self {
597                    (value.auction_id, value.deadline, value.value, value.data)
598                }
599            }
600            #[automatically_derived]
601            #[doc(hidden)]
602            impl ::core::convert::From<UnderlyingRustTuple<'_>> for submitBidCall {
603                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
604                    Self {
605                        auction_id: tuple.0,
606                        deadline: tuple.1,
607                        value: tuple.2,
608                        data: tuple.3,
609                    }
610                }
611            }
612        }
613        {
614            #[doc(hidden)]
615            type UnderlyingSolTuple<'a> = ();
616            #[doc(hidden)]
617            type UnderlyingRustTuple<'a> = ();
618            #[cfg(test)]
619            #[allow(dead_code, unreachable_patterns)]
620            fn _type_assertion(
621                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
622            ) {
623                match _t {
624                    alloy_sol_types::private::AssertTypeEq::<
625                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
626                    >(_) => {}
627                }
628            }
629            #[automatically_derived]
630            #[doc(hidden)]
631            impl ::core::convert::From<submitBidReturn> for UnderlyingRustTuple<'_> {
632                fn from(value: submitBidReturn) -> Self {
633                    ()
634                }
635            }
636            #[automatically_derived]
637            #[doc(hidden)]
638            impl ::core::convert::From<UnderlyingRustTuple<'_>> for submitBidReturn {
639                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
640                    Self {}
641                }
642            }
643        }
644        impl submitBidReturn {
645            fn _tokenize(
646                &self,
647            ) -> <submitBidCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
648                ()
649            }
650        }
651        #[automatically_derived]
652        impl alloy_sol_types::SolCall for submitBidCall {
653            type Parameters<'a> = (
654                alloy::sol_types::sol_data::Uint<256>,
655                Time::Timestamp,
656                alloy::sol_types::sol_data::Uint<256>,
657                alloy::sol_types::sol_data::Bytes,
658            );
659            type Token<'a> = <Self::Parameters<
660                'a,
661            > as alloy_sol_types::SolType>::Token<'a>;
662            type Return = submitBidReturn;
663            type ReturnTuple<'a> = ();
664            type ReturnToken<'a> = <Self::ReturnTuple<
665                'a,
666            > as alloy_sol_types::SolType>::Token<'a>;
667            const SIGNATURE: &'static str = "submitBid(uint256,uint64,uint256,bytes)";
668            const SELECTOR: [u8; 4] = [74u8, 25u8, 6u8, 126u8];
669            #[inline]
670            fn new<'a>(
671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
672            ) -> Self {
673                tuple.into()
674            }
675            #[inline]
676            fn tokenize(&self) -> Self::Token<'_> {
677                (
678                    <alloy::sol_types::sol_data::Uint<
679                        256,
680                    > as alloy_sol_types::SolType>::tokenize(&self.auction_id),
681                    <Time::Timestamp as alloy_sol_types::SolType>::tokenize(
682                        &self.deadline,
683                    ),
684                    <alloy::sol_types::sol_data::Uint<
685                        256,
686                    > as alloy_sol_types::SolType>::tokenize(&self.value),
687                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
688                        &self.data,
689                    ),
690                )
691            }
692            #[inline]
693            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
694                submitBidReturn::_tokenize(ret)
695            }
696            #[inline]
697            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
698                <Self::ReturnTuple<
699                    '_,
700                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
701                    .map(Into::into)
702            }
703            #[inline]
704            fn abi_decode_returns_validate(
705                data: &[u8],
706            ) -> alloy_sol_types::Result<Self::Return> {
707                <Self::ReturnTuple<
708                    '_,
709                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
710                    .map(Into::into)
711            }
712        }
713    };
714    ///Container for all the [`Auction`](self) function calls.
715    #[derive(serde::Serialize, serde::Deserialize)]
716    #[derive()]
717    pub enum AuctionCalls {
718        #[allow(missing_docs)]
719        submitBid(submitBidCall),
720    }
721    #[automatically_derived]
722    impl AuctionCalls {
723        /// All the selectors of this enum.
724        ///
725        /// Note that the selectors might not be in the same order as the variants.
726        /// No guarantees are made about the order of the selectors.
727        ///
728        /// Prefer using `SolInterface` methods instead.
729        pub const SELECTORS: &'static [[u8; 4usize]] = &[[74u8, 25u8, 6u8, 126u8]];
730    }
731    #[automatically_derived]
732    impl alloy_sol_types::SolInterface for AuctionCalls {
733        const NAME: &'static str = "AuctionCalls";
734        const MIN_DATA_LENGTH: usize = 160usize;
735        const COUNT: usize = 1usize;
736        #[inline]
737        fn selector(&self) -> [u8; 4] {
738            match self {
739                Self::submitBid(_) => {
740                    <submitBidCall as alloy_sol_types::SolCall>::SELECTOR
741                }
742            }
743        }
744        #[inline]
745        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
746            Self::SELECTORS.get(i).copied()
747        }
748        #[inline]
749        fn valid_selector(selector: [u8; 4]) -> bool {
750            Self::SELECTORS.binary_search(&selector).is_ok()
751        }
752        #[inline]
753        #[allow(non_snake_case)]
754        fn abi_decode_raw(
755            selector: [u8; 4],
756            data: &[u8],
757        ) -> alloy_sol_types::Result<Self> {
758            static DECODE_SHIMS: &[fn(&[u8]) -> alloy_sol_types::Result<AuctionCalls>] = &[
759                {
760                    fn submitBid(data: &[u8]) -> alloy_sol_types::Result<AuctionCalls> {
761                        <submitBidCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
762                            .map(AuctionCalls::submitBid)
763                    }
764                    submitBid
765                },
766            ];
767            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
768                return Err(
769                    alloy_sol_types::Error::unknown_selector(
770                        <Self as alloy_sol_types::SolInterface>::NAME,
771                        selector,
772                    ),
773                );
774            };
775            DECODE_SHIMS[idx](data)
776        }
777        #[inline]
778        #[allow(non_snake_case)]
779        fn abi_decode_raw_validate(
780            selector: [u8; 4],
781            data: &[u8],
782        ) -> alloy_sol_types::Result<Self> {
783            static DECODE_VALIDATE_SHIMS: &[fn(
784                &[u8],
785            ) -> alloy_sol_types::Result<AuctionCalls>] = &[
786                {
787                    fn submitBid(data: &[u8]) -> alloy_sol_types::Result<AuctionCalls> {
788                        <submitBidCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
789                                data,
790                            )
791                            .map(AuctionCalls::submitBid)
792                    }
793                    submitBid
794                },
795            ];
796            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
797                return Err(
798                    alloy_sol_types::Error::unknown_selector(
799                        <Self as alloy_sol_types::SolInterface>::NAME,
800                        selector,
801                    ),
802                );
803            };
804            DECODE_VALIDATE_SHIMS[idx](data)
805        }
806        #[inline]
807        fn abi_encoded_size(&self) -> usize {
808            match self {
809                Self::submitBid(inner) => {
810                    <submitBidCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
811                }
812            }
813        }
814        #[inline]
815        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
816            match self {
817                Self::submitBid(inner) => {
818                    <submitBidCall as alloy_sol_types::SolCall>::abi_encode_raw(
819                        inner,
820                        out,
821                    )
822                }
823            }
824        }
825    }
826    ///Container for all the [`Auction`](self) events.
827    #[derive(serde::Serialize, serde::Deserialize)]
828    #[derive(Debug, PartialEq, Eq, Hash)]
829    pub enum AuctionEvents {
830        #[allow(missing_docs)]
831        BidSubmitted(BidSubmitted),
832    }
833    #[automatically_derived]
834    impl AuctionEvents {
835        /// All the selectors of this enum.
836        ///
837        /// Note that the selectors might not be in the same order as the variants.
838        /// No guarantees are made about the order of the selectors.
839        ///
840        /// Prefer using `SolInterface` methods instead.
841        pub const SELECTORS: &'static [[u8; 32usize]] = &[
842            [
843                250u8, 149u8, 68u8, 202u8, 217u8, 74u8, 184u8, 80u8, 121u8, 70u8, 33u8,
844                80u8, 120u8, 175u8, 84u8, 190u8, 62u8, 208u8, 161u8, 241u8, 153u8, 17u8,
845                213u8, 218u8, 178u8, 3u8, 123u8, 175u8, 142u8, 6u8, 79u8, 176u8,
846            ],
847        ];
848    }
849    #[automatically_derived]
850    impl alloy_sol_types::SolEventInterface for AuctionEvents {
851        const NAME: &'static str = "AuctionEvents";
852        const COUNT: usize = 1usize;
853        fn decode_raw_log(
854            topics: &[alloy_sol_types::Word],
855            data: &[u8],
856        ) -> alloy_sol_types::Result<Self> {
857            match topics.first().copied() {
858                Some(<BidSubmitted as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
859                    <BidSubmitted as alloy_sol_types::SolEvent>::decode_raw_log(
860                            topics,
861                            data,
862                        )
863                        .map(Self::BidSubmitted)
864                }
865                _ => {
866                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
867                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
868                        log: alloy_sol_types::private::Box::new(
869                            alloy_sol_types::private::LogData::new_unchecked(
870                                topics.to_vec(),
871                                data.to_vec().into(),
872                            ),
873                        ),
874                    })
875                }
876            }
877        }
878    }
879    #[automatically_derived]
880    impl alloy_sol_types::private::IntoLogData for AuctionEvents {
881        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
882            match self {
883                Self::BidSubmitted(inner) => {
884                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
885                }
886            }
887        }
888        fn into_log_data(self) -> alloy_sol_types::private::LogData {
889            match self {
890                Self::BidSubmitted(inner) => {
891                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
892                }
893            }
894        }
895    }
896    use alloy::contract as alloy_contract;
897    /**Creates a new wrapper around an on-chain [`Auction`](self) contract instance.
898
899See the [wrapper's documentation](`AuctionInstance`) for more details.*/
900    #[inline]
901    pub const fn new<
902        P: alloy_contract::private::Provider<N>,
903        N: alloy_contract::private::Network,
904    >(address: alloy_sol_types::private::Address, provider: P) -> AuctionInstance<P, N> {
905        AuctionInstance::<P, N>::new(address, provider)
906    }
907    /**Deploys this contract using the given `provider` and constructor arguments, if any.
908
909Returns a new instance of the contract, if the deployment was successful.
910
911For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
912    #[inline]
913    pub fn deploy<
914        P: alloy_contract::private::Provider<N>,
915        N: alloy_contract::private::Network,
916    >(
917        provider: P,
918    ) -> impl ::core::future::Future<
919        Output = alloy_contract::Result<AuctionInstance<P, N>>,
920    > {
921        AuctionInstance::<P, N>::deploy(provider)
922    }
923    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
924and constructor arguments, if any.
925
926This is a simple wrapper around creating a `RawCallBuilder` with the data set to
927the bytecode concatenated with the constructor's ABI-encoded arguments.*/
928    #[inline]
929    pub fn deploy_builder<
930        P: alloy_contract::private::Provider<N>,
931        N: alloy_contract::private::Network,
932    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
933        AuctionInstance::<P, N>::deploy_builder(provider)
934    }
935    /**A [`Auction`](self) instance.
936
937Contains type-safe methods for interacting with an on-chain instance of the
938[`Auction`](self) contract located at a given `address`, using a given
939provider `P`.
940
941If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
942documentation on how to provide it), the `deploy` and `deploy_builder` methods can
943be used to deploy a new instance of the contract.
944
945See the [module-level documentation](self) for all the available methods.*/
946    #[derive(Clone)]
947    pub struct AuctionInstance<P, N = alloy_contract::private::Ethereum> {
948        address: alloy_sol_types::private::Address,
949        provider: P,
950        _network: ::core::marker::PhantomData<N>,
951    }
952    #[automatically_derived]
953    impl<P, N> ::core::fmt::Debug for AuctionInstance<P, N> {
954        #[inline]
955        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
956            f.debug_tuple("AuctionInstance").field(&self.address).finish()
957        }
958    }
959    /// Instantiation and getters/setters.
960    #[automatically_derived]
961    impl<
962        P: alloy_contract::private::Provider<N>,
963        N: alloy_contract::private::Network,
964    > AuctionInstance<P, N> {
965        /**Creates a new wrapper around an on-chain [`Auction`](self) contract instance.
966
967See the [wrapper's documentation](`AuctionInstance`) for more details.*/
968        #[inline]
969        pub const fn new(
970            address: alloy_sol_types::private::Address,
971            provider: P,
972        ) -> Self {
973            Self {
974                address,
975                provider,
976                _network: ::core::marker::PhantomData,
977            }
978        }
979        /**Deploys this contract using the given `provider` and constructor arguments, if any.
980
981Returns a new instance of the contract, if the deployment was successful.
982
983For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
984        #[inline]
985        pub async fn deploy(
986            provider: P,
987        ) -> alloy_contract::Result<AuctionInstance<P, N>> {
988            let call_builder = Self::deploy_builder(provider);
989            let contract_address = call_builder.deploy().await?;
990            Ok(Self::new(contract_address, call_builder.provider))
991        }
992        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
993and constructor arguments, if any.
994
995This is a simple wrapper around creating a `RawCallBuilder` with the data set to
996the bytecode concatenated with the constructor's ABI-encoded arguments.*/
997        #[inline]
998        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
999            alloy_contract::RawCallBuilder::new_raw_deploy(
1000                provider,
1001                ::core::clone::Clone::clone(&BYTECODE),
1002            )
1003        }
1004        /// Returns a reference to the address.
1005        #[inline]
1006        pub const fn address(&self) -> &alloy_sol_types::private::Address {
1007            &self.address
1008        }
1009        /// Sets the address.
1010        #[inline]
1011        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
1012            self.address = address;
1013        }
1014        /// Sets the address and returns `self`.
1015        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
1016            self.set_address(address);
1017            self
1018        }
1019        /// Returns a reference to the provider.
1020        #[inline]
1021        pub const fn provider(&self) -> &P {
1022            &self.provider
1023        }
1024    }
1025    impl<P: ::core::clone::Clone, N> AuctionInstance<&P, N> {
1026        /// Clones the provider and returns a new instance with the cloned provider.
1027        #[inline]
1028        pub fn with_cloned_provider(self) -> AuctionInstance<P, N> {
1029            AuctionInstance {
1030                address: self.address,
1031                provider: ::core::clone::Clone::clone(&self.provider),
1032                _network: ::core::marker::PhantomData,
1033            }
1034        }
1035    }
1036    /// Function calls.
1037    #[automatically_derived]
1038    impl<
1039        P: alloy_contract::private::Provider<N>,
1040        N: alloy_contract::private::Network,
1041    > AuctionInstance<P, N> {
1042        /// Creates a new call builder using this contract instance's provider and address.
1043        ///
1044        /// Note that the call can be any function call, not just those defined in this
1045        /// contract. Prefer using the other methods for building type-safe contract calls.
1046        pub fn call_builder<C: alloy_sol_types::SolCall>(
1047            &self,
1048            call: &C,
1049        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
1050            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
1051        }
1052        ///Creates a new call builder for the [`submitBid`] function.
1053        pub fn submitBid(
1054            &self,
1055            auction_id: alloy::sol_types::private::primitives::aliases::U256,
1056            deadline: <Time::Timestamp as alloy::sol_types::SolType>::RustType,
1057            value: alloy::sol_types::private::primitives::aliases::U256,
1058            data: alloy::sol_types::private::Bytes,
1059        ) -> alloy_contract::SolCallBuilder<&P, submitBidCall, N> {
1060            self.call_builder(
1061                &submitBidCall {
1062                    auction_id,
1063                    deadline,
1064                    value,
1065                    data,
1066                },
1067            )
1068        }
1069    }
1070    /// Event filters.
1071    #[automatically_derived]
1072    impl<
1073        P: alloy_contract::private::Provider<N>,
1074        N: alloy_contract::private::Network,
1075    > AuctionInstance<P, N> {
1076        /// Creates a new event filter using this contract instance's provider and address.
1077        ///
1078        /// Note that the type can be any event, not just those defined in this contract.
1079        /// Prefer using the other methods for building type-safe event filters.
1080        pub fn event_filter<E: alloy_sol_types::SolEvent>(
1081            &self,
1082        ) -> alloy_contract::Event<&P, E, N> {
1083            alloy_contract::Event::new_sol(&self.provider, &self.address)
1084        }
1085        ///Creates a new event filter for the [`BidSubmitted`] event.
1086        pub fn BidSubmitted_filter(&self) -> alloy_contract::Event<&P, BidSubmitted, N> {
1087            self.event_filter::<BidSubmitted>()
1088        }
1089    }
1090}