openzeppelin_rs/contracts/
IERC4626.rs

1pub use ierc4626::*;
2/// This module was auto-generated with ethers-rs Abigen.
3/// More information at: <https://github.com/gakonst/ethers-rs>
4#[allow(
5    clippy::enum_variant_names,
6    clippy::too_many_arguments,
7    clippy::upper_case_acronyms,
8    clippy::type_complexity,
9    dead_code,
10    non_camel_case_types,
11)]
12pub mod ierc4626 {
13    #[rustfmt::skip]
14    const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Approval\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Deposit\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Transfer\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[],\"indexed\":false},{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[],\"indexed\":false}],\"type\":\"event\",\"name\":\"Withdraw\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"asset\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"assetTokenAddress\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"convertToAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"convertToShares\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"maxDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"maxMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"maxRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxShares\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"maxWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"maxAssets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"previewDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"previewMint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"previewRedeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"previewWithdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalAssets\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalManagedAssets\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"assets\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"shares\",\"type\":\"uint256\",\"components\":[]}]}]";
15    ///The parsed JSON ABI of the contract.
16    pub static IERC4626_ABI: ::ethers_contract::Lazy<::ethers_core::abi::Abi> = ::ethers_contract::Lazy::new(||
17    ::ethers_core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid"));
18    pub struct IERC4626<M>(::ethers_contract::Contract<M>);
19    impl<M> ::core::clone::Clone for IERC4626<M> {
20        fn clone(&self) -> Self {
21            Self(::core::clone::Clone::clone(&self.0))
22        }
23    }
24    impl<M> ::core::ops::Deref for IERC4626<M> {
25        type Target = ::ethers_contract::Contract<M>;
26        fn deref(&self) -> &Self::Target {
27            &self.0
28        }
29    }
30    impl<M> ::core::ops::DerefMut for IERC4626<M> {
31        fn deref_mut(&mut self) -> &mut Self::Target {
32            &mut self.0
33        }
34    }
35    impl<M> ::core::fmt::Debug for IERC4626<M> {
36        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
37            f.debug_tuple(stringify!(IERC4626)).field(&self.address()).finish()
38        }
39    }
40    impl<M: ::ethers_providers::Middleware> IERC4626<M> {
41        /// Creates a new contract instance with the specified `ethers` client at
42        /// `address`. The contract derefs to a `ethers::Contract` object.
43        pub fn new<T: Into<::ethers_core::types::Address>>(
44            address: T,
45            client: ::std::sync::Arc<M>,
46        ) -> Self {
47            Self(
48                ::ethers_contract::Contract::new(
49                    address.into(),
50                    IERC4626_ABI.clone(),
51                    client,
52                ),
53            )
54        }
55        ///Calls the contract's `allowance` (0xdd62ed3e) function
56        pub fn allowance(
57            &self,
58            owner: ::ethers_core::types::Address,
59            spender: ::ethers_core::types::Address,
60        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
61            self.0
62                .method_hash([221, 98, 237, 62], (owner, spender))
63                .expect("method not found (this should never happen)")
64        }
65        ///Calls the contract's `approve` (0x095ea7b3) function
66        pub fn approve(
67            &self,
68            spender: ::ethers_core::types::Address,
69            amount: ::ethers_core::types::U256,
70        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
71            self.0
72                .method_hash([9, 94, 167, 179], (spender, amount))
73                .expect("method not found (this should never happen)")
74        }
75        ///Calls the contract's `asset` (0x38d52e0f) function
76        pub fn asset(
77            &self,
78        ) -> ::ethers_contract::builders::ContractCall<
79            M,
80            ::ethers_core::types::Address,
81        > {
82            self.0
83                .method_hash([56, 213, 46, 15], ())
84                .expect("method not found (this should never happen)")
85        }
86        ///Calls the contract's `balanceOf` (0x70a08231) function
87        pub fn balance_of(
88            &self,
89            account: ::ethers_core::types::Address,
90        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
91            self.0
92                .method_hash([112, 160, 130, 49], account)
93                .expect("method not found (this should never happen)")
94        }
95        ///Calls the contract's `convertToAssets` (0x07a2d13a) function
96        pub fn convert_to_assets(
97            &self,
98            shares: ::ethers_core::types::U256,
99        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
100            self.0
101                .method_hash([7, 162, 209, 58], shares)
102                .expect("method not found (this should never happen)")
103        }
104        ///Calls the contract's `convertToShares` (0xc6e6f592) function
105        pub fn convert_to_shares(
106            &self,
107            assets: ::ethers_core::types::U256,
108        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
109            self.0
110                .method_hash([198, 230, 245, 146], assets)
111                .expect("method not found (this should never happen)")
112        }
113        ///Calls the contract's `decimals` (0x313ce567) function
114        pub fn decimals(&self) -> ::ethers_contract::builders::ContractCall<M, u8> {
115            self.0
116                .method_hash([49, 60, 229, 103], ())
117                .expect("method not found (this should never happen)")
118        }
119        ///Calls the contract's `deposit` (0x6e553f65) function
120        pub fn deposit(
121            &self,
122            assets: ::ethers_core::types::U256,
123            receiver: ::ethers_core::types::Address,
124        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
125            self.0
126                .method_hash([110, 85, 63, 101], (assets, receiver))
127                .expect("method not found (this should never happen)")
128        }
129        ///Calls the contract's `maxDeposit` (0x402d267d) function
130        pub fn max_deposit(
131            &self,
132            receiver: ::ethers_core::types::Address,
133        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
134            self.0
135                .method_hash([64, 45, 38, 125], receiver)
136                .expect("method not found (this should never happen)")
137        }
138        ///Calls the contract's `maxMint` (0xc63d75b6) function
139        pub fn max_mint(
140            &self,
141            receiver: ::ethers_core::types::Address,
142        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
143            self.0
144                .method_hash([198, 61, 117, 182], receiver)
145                .expect("method not found (this should never happen)")
146        }
147        ///Calls the contract's `maxRedeem` (0xd905777e) function
148        pub fn max_redeem(
149            &self,
150            owner: ::ethers_core::types::Address,
151        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
152            self.0
153                .method_hash([217, 5, 119, 126], owner)
154                .expect("method not found (this should never happen)")
155        }
156        ///Calls the contract's `maxWithdraw` (0xce96cb77) function
157        pub fn max_withdraw(
158            &self,
159            owner: ::ethers_core::types::Address,
160        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
161            self.0
162                .method_hash([206, 150, 203, 119], owner)
163                .expect("method not found (this should never happen)")
164        }
165        ///Calls the contract's `mint` (0x94bf804d) function
166        pub fn mint(
167            &self,
168            shares: ::ethers_core::types::U256,
169            receiver: ::ethers_core::types::Address,
170        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
171            self.0
172                .method_hash([148, 191, 128, 77], (shares, receiver))
173                .expect("method not found (this should never happen)")
174        }
175        ///Calls the contract's `name` (0x06fdde03) function
176        pub fn name(
177            &self,
178        ) -> ::ethers_contract::builders::ContractCall<M, ::std::string::String> {
179            self.0
180                .method_hash([6, 253, 222, 3], ())
181                .expect("method not found (this should never happen)")
182        }
183        ///Calls the contract's `previewDeposit` (0xef8b30f7) function
184        pub fn preview_deposit(
185            &self,
186            assets: ::ethers_core::types::U256,
187        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
188            self.0
189                .method_hash([239, 139, 48, 247], assets)
190                .expect("method not found (this should never happen)")
191        }
192        ///Calls the contract's `previewMint` (0xb3d7f6b9) function
193        pub fn preview_mint(
194            &self,
195            shares: ::ethers_core::types::U256,
196        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
197            self.0
198                .method_hash([179, 215, 246, 185], shares)
199                .expect("method not found (this should never happen)")
200        }
201        ///Calls the contract's `previewRedeem` (0x4cdad506) function
202        pub fn preview_redeem(
203            &self,
204            shares: ::ethers_core::types::U256,
205        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
206            self.0
207                .method_hash([76, 218, 213, 6], shares)
208                .expect("method not found (this should never happen)")
209        }
210        ///Calls the contract's `previewWithdraw` (0x0a28a477) function
211        pub fn preview_withdraw(
212            &self,
213            assets: ::ethers_core::types::U256,
214        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
215            self.0
216                .method_hash([10, 40, 164, 119], assets)
217                .expect("method not found (this should never happen)")
218        }
219        ///Calls the contract's `redeem` (0xba087652) function
220        pub fn redeem(
221            &self,
222            shares: ::ethers_core::types::U256,
223            receiver: ::ethers_core::types::Address,
224            owner: ::ethers_core::types::Address,
225        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
226            self.0
227                .method_hash([186, 8, 118, 82], (shares, receiver, owner))
228                .expect("method not found (this should never happen)")
229        }
230        ///Calls the contract's `symbol` (0x95d89b41) function
231        pub fn symbol(
232            &self,
233        ) -> ::ethers_contract::builders::ContractCall<M, ::std::string::String> {
234            self.0
235                .method_hash([149, 216, 155, 65], ())
236                .expect("method not found (this should never happen)")
237        }
238        ///Calls the contract's `totalAssets` (0x01e1d114) function
239        pub fn total_assets(
240            &self,
241        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
242            self.0
243                .method_hash([1, 225, 209, 20], ())
244                .expect("method not found (this should never happen)")
245        }
246        ///Calls the contract's `totalSupply` (0x18160ddd) function
247        pub fn total_supply(
248            &self,
249        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
250            self.0
251                .method_hash([24, 22, 13, 221], ())
252                .expect("method not found (this should never happen)")
253        }
254        ///Calls the contract's `transfer` (0xa9059cbb) function
255        pub fn transfer(
256            &self,
257            to: ::ethers_core::types::Address,
258            amount: ::ethers_core::types::U256,
259        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
260            self.0
261                .method_hash([169, 5, 156, 187], (to, amount))
262                .expect("method not found (this should never happen)")
263        }
264        ///Calls the contract's `transferFrom` (0x23b872dd) function
265        pub fn transfer_from(
266            &self,
267            from: ::ethers_core::types::Address,
268            to: ::ethers_core::types::Address,
269            amount: ::ethers_core::types::U256,
270        ) -> ::ethers_contract::builders::ContractCall<M, bool> {
271            self.0
272                .method_hash([35, 184, 114, 221], (from, to, amount))
273                .expect("method not found (this should never happen)")
274        }
275        ///Calls the contract's `withdraw` (0xb460af94) function
276        pub fn withdraw(
277            &self,
278            assets: ::ethers_core::types::U256,
279            receiver: ::ethers_core::types::Address,
280            owner: ::ethers_core::types::Address,
281        ) -> ::ethers_contract::builders::ContractCall<M, ::ethers_core::types::U256> {
282            self.0
283                .method_hash([180, 96, 175, 148], (assets, receiver, owner))
284                .expect("method not found (this should never happen)")
285        }
286        ///Gets the contract's `Approval` event
287        pub fn approval_filter(
288            &self,
289        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, ApprovalFilter> {
290            self.0.event()
291        }
292        ///Gets the contract's `Deposit` event
293        pub fn deposit_filter(
294            &self,
295        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, DepositFilter> {
296            self.0.event()
297        }
298        ///Gets the contract's `Transfer` event
299        pub fn transfer_filter(
300            &self,
301        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, TransferFilter> {
302            self.0.event()
303        }
304        ///Gets the contract's `Withdraw` event
305        pub fn withdraw_filter(
306            &self,
307        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, WithdrawFilter> {
308            self.0.event()
309        }
310        /// Returns an `Event` builder for all the events of this contract.
311        pub fn events(
312            &self,
313        ) -> ::ethers_contract::builders::Event<::std::sync::Arc<M>, M, IERC4626Events> {
314            self.0.event_with_filter(::core::default::Default::default())
315        }
316    }
317    impl<M: ::ethers_providers::Middleware> From<::ethers_contract::Contract<M>>
318    for IERC4626<M> {
319        fn from(contract: ::ethers_contract::Contract<M>) -> Self {
320            Self::new(contract.address(), contract.client())
321        }
322    }
323    #[derive(
324        Clone,
325        ::ethers_contract::EthEvent,
326        ::ethers_contract::EthDisplay,
327        Default,
328        Debug,
329        PartialEq,
330        Eq,
331        Hash
332    )]
333    #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")]
334    pub struct ApprovalFilter {
335        #[ethevent(indexed)]
336        pub owner: ::ethers_core::types::Address,
337        #[ethevent(indexed)]
338        pub spender: ::ethers_core::types::Address,
339        pub value: ::ethers_core::types::U256,
340    }
341    #[derive(
342        Clone,
343        ::ethers_contract::EthEvent,
344        ::ethers_contract::EthDisplay,
345        Default,
346        Debug,
347        PartialEq,
348        Eq,
349        Hash
350    )]
351    #[ethevent(name = "Deposit", abi = "Deposit(address,address,uint256,uint256)")]
352    pub struct DepositFilter {
353        #[ethevent(indexed)]
354        pub sender: ::ethers_core::types::Address,
355        #[ethevent(indexed)]
356        pub owner: ::ethers_core::types::Address,
357        pub assets: ::ethers_core::types::U256,
358        pub shares: ::ethers_core::types::U256,
359    }
360    #[derive(
361        Clone,
362        ::ethers_contract::EthEvent,
363        ::ethers_contract::EthDisplay,
364        Default,
365        Debug,
366        PartialEq,
367        Eq,
368        Hash
369    )]
370    #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")]
371    pub struct TransferFilter {
372        #[ethevent(indexed)]
373        pub from: ::ethers_core::types::Address,
374        #[ethevent(indexed)]
375        pub to: ::ethers_core::types::Address,
376        pub value: ::ethers_core::types::U256,
377    }
378    #[derive(
379        Clone,
380        ::ethers_contract::EthEvent,
381        ::ethers_contract::EthDisplay,
382        Default,
383        Debug,
384        PartialEq,
385        Eq,
386        Hash
387    )]
388    #[ethevent(
389        name = "Withdraw",
390        abi = "Withdraw(address,address,address,uint256,uint256)"
391    )]
392    pub struct WithdrawFilter {
393        #[ethevent(indexed)]
394        pub sender: ::ethers_core::types::Address,
395        #[ethevent(indexed)]
396        pub receiver: ::ethers_core::types::Address,
397        #[ethevent(indexed)]
398        pub owner: ::ethers_core::types::Address,
399        pub assets: ::ethers_core::types::U256,
400        pub shares: ::ethers_core::types::U256,
401    }
402    ///Container type for all of the contract's events
403    #[derive(Clone, ::ethers_contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
404    pub enum IERC4626Events {
405        ApprovalFilter(ApprovalFilter),
406        DepositFilter(DepositFilter),
407        TransferFilter(TransferFilter),
408        WithdrawFilter(WithdrawFilter),
409    }
410    impl ::ethers_contract::EthLogDecode for IERC4626Events {
411        fn decode_log(
412            log: &::ethers_core::abi::RawLog,
413        ) -> ::core::result::Result<Self, ::ethers_core::abi::Error> {
414            if let Ok(decoded) = ApprovalFilter::decode_log(log) {
415                return Ok(IERC4626Events::ApprovalFilter(decoded));
416            }
417            if let Ok(decoded) = DepositFilter::decode_log(log) {
418                return Ok(IERC4626Events::DepositFilter(decoded));
419            }
420            if let Ok(decoded) = TransferFilter::decode_log(log) {
421                return Ok(IERC4626Events::TransferFilter(decoded));
422            }
423            if let Ok(decoded) = WithdrawFilter::decode_log(log) {
424                return Ok(IERC4626Events::WithdrawFilter(decoded));
425            }
426            Err(::ethers_core::abi::Error::InvalidData)
427        }
428    }
429    impl ::core::fmt::Display for IERC4626Events {
430        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
431            match self {
432                Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f),
433                Self::DepositFilter(element) => ::core::fmt::Display::fmt(element, f),
434                Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f),
435                Self::WithdrawFilter(element) => ::core::fmt::Display::fmt(element, f),
436            }
437        }
438    }
439    impl ::core::convert::From<ApprovalFilter> for IERC4626Events {
440        fn from(value: ApprovalFilter) -> Self {
441            Self::ApprovalFilter(value)
442        }
443    }
444    impl ::core::convert::From<DepositFilter> for IERC4626Events {
445        fn from(value: DepositFilter) -> Self {
446            Self::DepositFilter(value)
447        }
448    }
449    impl ::core::convert::From<TransferFilter> for IERC4626Events {
450        fn from(value: TransferFilter) -> Self {
451            Self::TransferFilter(value)
452        }
453    }
454    impl ::core::convert::From<WithdrawFilter> for IERC4626Events {
455        fn from(value: WithdrawFilter) -> Self {
456            Self::WithdrawFilter(value)
457        }
458    }
459    ///Container type for all input parameters for the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
460    #[derive(
461        Clone,
462        ::ethers_contract::EthCall,
463        ::ethers_contract::EthDisplay,
464        Default,
465        Debug,
466        PartialEq,
467        Eq,
468        Hash
469    )]
470    #[ethcall(name = "allowance", abi = "allowance(address,address)")]
471    pub struct AllowanceCall {
472        pub owner: ::ethers_core::types::Address,
473        pub spender: ::ethers_core::types::Address,
474    }
475    ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
476    #[derive(
477        Clone,
478        ::ethers_contract::EthCall,
479        ::ethers_contract::EthDisplay,
480        Default,
481        Debug,
482        PartialEq,
483        Eq,
484        Hash
485    )]
486    #[ethcall(name = "approve", abi = "approve(address,uint256)")]
487    pub struct ApproveCall {
488        pub spender: ::ethers_core::types::Address,
489        pub amount: ::ethers_core::types::U256,
490    }
491    ///Container type for all input parameters for the `asset` function with signature `asset()` and selector `0x38d52e0f`
492    #[derive(
493        Clone,
494        ::ethers_contract::EthCall,
495        ::ethers_contract::EthDisplay,
496        Default,
497        Debug,
498        PartialEq,
499        Eq,
500        Hash
501    )]
502    #[ethcall(name = "asset", abi = "asset()")]
503    pub struct AssetCall;
504    ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
505    #[derive(
506        Clone,
507        ::ethers_contract::EthCall,
508        ::ethers_contract::EthDisplay,
509        Default,
510        Debug,
511        PartialEq,
512        Eq,
513        Hash
514    )]
515    #[ethcall(name = "balanceOf", abi = "balanceOf(address)")]
516    pub struct BalanceOfCall {
517        pub account: ::ethers_core::types::Address,
518    }
519    ///Container type for all input parameters for the `convertToAssets` function with signature `convertToAssets(uint256)` and selector `0x07a2d13a`
520    #[derive(
521        Clone,
522        ::ethers_contract::EthCall,
523        ::ethers_contract::EthDisplay,
524        Default,
525        Debug,
526        PartialEq,
527        Eq,
528        Hash
529    )]
530    #[ethcall(name = "convertToAssets", abi = "convertToAssets(uint256)")]
531    pub struct ConvertToAssetsCall {
532        pub shares: ::ethers_core::types::U256,
533    }
534    ///Container type for all input parameters for the `convertToShares` function with signature `convertToShares(uint256)` and selector `0xc6e6f592`
535    #[derive(
536        Clone,
537        ::ethers_contract::EthCall,
538        ::ethers_contract::EthDisplay,
539        Default,
540        Debug,
541        PartialEq,
542        Eq,
543        Hash
544    )]
545    #[ethcall(name = "convertToShares", abi = "convertToShares(uint256)")]
546    pub struct ConvertToSharesCall {
547        pub assets: ::ethers_core::types::U256,
548    }
549    ///Container type for all input parameters for the `decimals` function with signature `decimals()` and selector `0x313ce567`
550    #[derive(
551        Clone,
552        ::ethers_contract::EthCall,
553        ::ethers_contract::EthDisplay,
554        Default,
555        Debug,
556        PartialEq,
557        Eq,
558        Hash
559    )]
560    #[ethcall(name = "decimals", abi = "decimals()")]
561    pub struct DecimalsCall;
562    ///Container type for all input parameters for the `deposit` function with signature `deposit(uint256,address)` and selector `0x6e553f65`
563    #[derive(
564        Clone,
565        ::ethers_contract::EthCall,
566        ::ethers_contract::EthDisplay,
567        Default,
568        Debug,
569        PartialEq,
570        Eq,
571        Hash
572    )]
573    #[ethcall(name = "deposit", abi = "deposit(uint256,address)")]
574    pub struct DepositCall {
575        pub assets: ::ethers_core::types::U256,
576        pub receiver: ::ethers_core::types::Address,
577    }
578    ///Container type for all input parameters for the `maxDeposit` function with signature `maxDeposit(address)` and selector `0x402d267d`
579    #[derive(
580        Clone,
581        ::ethers_contract::EthCall,
582        ::ethers_contract::EthDisplay,
583        Default,
584        Debug,
585        PartialEq,
586        Eq,
587        Hash
588    )]
589    #[ethcall(name = "maxDeposit", abi = "maxDeposit(address)")]
590    pub struct MaxDepositCall {
591        pub receiver: ::ethers_core::types::Address,
592    }
593    ///Container type for all input parameters for the `maxMint` function with signature `maxMint(address)` and selector `0xc63d75b6`
594    #[derive(
595        Clone,
596        ::ethers_contract::EthCall,
597        ::ethers_contract::EthDisplay,
598        Default,
599        Debug,
600        PartialEq,
601        Eq,
602        Hash
603    )]
604    #[ethcall(name = "maxMint", abi = "maxMint(address)")]
605    pub struct MaxMintCall {
606        pub receiver: ::ethers_core::types::Address,
607    }
608    ///Container type for all input parameters for the `maxRedeem` function with signature `maxRedeem(address)` and selector `0xd905777e`
609    #[derive(
610        Clone,
611        ::ethers_contract::EthCall,
612        ::ethers_contract::EthDisplay,
613        Default,
614        Debug,
615        PartialEq,
616        Eq,
617        Hash
618    )]
619    #[ethcall(name = "maxRedeem", abi = "maxRedeem(address)")]
620    pub struct MaxRedeemCall {
621        pub owner: ::ethers_core::types::Address,
622    }
623    ///Container type for all input parameters for the `maxWithdraw` function with signature `maxWithdraw(address)` and selector `0xce96cb77`
624    #[derive(
625        Clone,
626        ::ethers_contract::EthCall,
627        ::ethers_contract::EthDisplay,
628        Default,
629        Debug,
630        PartialEq,
631        Eq,
632        Hash
633    )]
634    #[ethcall(name = "maxWithdraw", abi = "maxWithdraw(address)")]
635    pub struct MaxWithdrawCall {
636        pub owner: ::ethers_core::types::Address,
637    }
638    ///Container type for all input parameters for the `mint` function with signature `mint(uint256,address)` and selector `0x94bf804d`
639    #[derive(
640        Clone,
641        ::ethers_contract::EthCall,
642        ::ethers_contract::EthDisplay,
643        Default,
644        Debug,
645        PartialEq,
646        Eq,
647        Hash
648    )]
649    #[ethcall(name = "mint", abi = "mint(uint256,address)")]
650    pub struct MintCall {
651        pub shares: ::ethers_core::types::U256,
652        pub receiver: ::ethers_core::types::Address,
653    }
654    ///Container type for all input parameters for the `name` function with signature `name()` and selector `0x06fdde03`
655    #[derive(
656        Clone,
657        ::ethers_contract::EthCall,
658        ::ethers_contract::EthDisplay,
659        Default,
660        Debug,
661        PartialEq,
662        Eq,
663        Hash
664    )]
665    #[ethcall(name = "name", abi = "name()")]
666    pub struct NameCall;
667    ///Container type for all input parameters for the `previewDeposit` function with signature `previewDeposit(uint256)` and selector `0xef8b30f7`
668    #[derive(
669        Clone,
670        ::ethers_contract::EthCall,
671        ::ethers_contract::EthDisplay,
672        Default,
673        Debug,
674        PartialEq,
675        Eq,
676        Hash
677    )]
678    #[ethcall(name = "previewDeposit", abi = "previewDeposit(uint256)")]
679    pub struct PreviewDepositCall {
680        pub assets: ::ethers_core::types::U256,
681    }
682    ///Container type for all input parameters for the `previewMint` function with signature `previewMint(uint256)` and selector `0xb3d7f6b9`
683    #[derive(
684        Clone,
685        ::ethers_contract::EthCall,
686        ::ethers_contract::EthDisplay,
687        Default,
688        Debug,
689        PartialEq,
690        Eq,
691        Hash
692    )]
693    #[ethcall(name = "previewMint", abi = "previewMint(uint256)")]
694    pub struct PreviewMintCall {
695        pub shares: ::ethers_core::types::U256,
696    }
697    ///Container type for all input parameters for the `previewRedeem` function with signature `previewRedeem(uint256)` and selector `0x4cdad506`
698    #[derive(
699        Clone,
700        ::ethers_contract::EthCall,
701        ::ethers_contract::EthDisplay,
702        Default,
703        Debug,
704        PartialEq,
705        Eq,
706        Hash
707    )]
708    #[ethcall(name = "previewRedeem", abi = "previewRedeem(uint256)")]
709    pub struct PreviewRedeemCall {
710        pub shares: ::ethers_core::types::U256,
711    }
712    ///Container type for all input parameters for the `previewWithdraw` function with signature `previewWithdraw(uint256)` and selector `0x0a28a477`
713    #[derive(
714        Clone,
715        ::ethers_contract::EthCall,
716        ::ethers_contract::EthDisplay,
717        Default,
718        Debug,
719        PartialEq,
720        Eq,
721        Hash
722    )]
723    #[ethcall(name = "previewWithdraw", abi = "previewWithdraw(uint256)")]
724    pub struct PreviewWithdrawCall {
725        pub assets: ::ethers_core::types::U256,
726    }
727    ///Container type for all input parameters for the `redeem` function with signature `redeem(uint256,address,address)` and selector `0xba087652`
728    #[derive(
729        Clone,
730        ::ethers_contract::EthCall,
731        ::ethers_contract::EthDisplay,
732        Default,
733        Debug,
734        PartialEq,
735        Eq,
736        Hash
737    )]
738    #[ethcall(name = "redeem", abi = "redeem(uint256,address,address)")]
739    pub struct RedeemCall {
740        pub shares: ::ethers_core::types::U256,
741        pub receiver: ::ethers_core::types::Address,
742        pub owner: ::ethers_core::types::Address,
743    }
744    ///Container type for all input parameters for the `symbol` function with signature `symbol()` and selector `0x95d89b41`
745    #[derive(
746        Clone,
747        ::ethers_contract::EthCall,
748        ::ethers_contract::EthDisplay,
749        Default,
750        Debug,
751        PartialEq,
752        Eq,
753        Hash
754    )]
755    #[ethcall(name = "symbol", abi = "symbol()")]
756    pub struct SymbolCall;
757    ///Container type for all input parameters for the `totalAssets` function with signature `totalAssets()` and selector `0x01e1d114`
758    #[derive(
759        Clone,
760        ::ethers_contract::EthCall,
761        ::ethers_contract::EthDisplay,
762        Default,
763        Debug,
764        PartialEq,
765        Eq,
766        Hash
767    )]
768    #[ethcall(name = "totalAssets", abi = "totalAssets()")]
769    pub struct TotalAssetsCall;
770    ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
771    #[derive(
772        Clone,
773        ::ethers_contract::EthCall,
774        ::ethers_contract::EthDisplay,
775        Default,
776        Debug,
777        PartialEq,
778        Eq,
779        Hash
780    )]
781    #[ethcall(name = "totalSupply", abi = "totalSupply()")]
782    pub struct TotalSupplyCall;
783    ///Container type for all input parameters for the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
784    #[derive(
785        Clone,
786        ::ethers_contract::EthCall,
787        ::ethers_contract::EthDisplay,
788        Default,
789        Debug,
790        PartialEq,
791        Eq,
792        Hash
793    )]
794    #[ethcall(name = "transfer", abi = "transfer(address,uint256)")]
795    pub struct TransferCall {
796        pub to: ::ethers_core::types::Address,
797        pub amount: ::ethers_core::types::U256,
798    }
799    ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
800    #[derive(
801        Clone,
802        ::ethers_contract::EthCall,
803        ::ethers_contract::EthDisplay,
804        Default,
805        Debug,
806        PartialEq,
807        Eq,
808        Hash
809    )]
810    #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")]
811    pub struct TransferFromCall {
812        pub from: ::ethers_core::types::Address,
813        pub to: ::ethers_core::types::Address,
814        pub amount: ::ethers_core::types::U256,
815    }
816    ///Container type for all input parameters for the `withdraw` function with signature `withdraw(uint256,address,address)` and selector `0xb460af94`
817    #[derive(
818        Clone,
819        ::ethers_contract::EthCall,
820        ::ethers_contract::EthDisplay,
821        Default,
822        Debug,
823        PartialEq,
824        Eq,
825        Hash
826    )]
827    #[ethcall(name = "withdraw", abi = "withdraw(uint256,address,address)")]
828    pub struct WithdrawCall {
829        pub assets: ::ethers_core::types::U256,
830        pub receiver: ::ethers_core::types::Address,
831        pub owner: ::ethers_core::types::Address,
832    }
833    ///Container type for all of the contract's call
834    #[derive(Clone, ::ethers_contract::EthAbiType, Debug, PartialEq, Eq, Hash)]
835    pub enum IERC4626Calls {
836        Allowance(AllowanceCall),
837        Approve(ApproveCall),
838        Asset(AssetCall),
839        BalanceOf(BalanceOfCall),
840        ConvertToAssets(ConvertToAssetsCall),
841        ConvertToShares(ConvertToSharesCall),
842        Decimals(DecimalsCall),
843        Deposit(DepositCall),
844        MaxDeposit(MaxDepositCall),
845        MaxMint(MaxMintCall),
846        MaxRedeem(MaxRedeemCall),
847        MaxWithdraw(MaxWithdrawCall),
848        Mint(MintCall),
849        Name(NameCall),
850        PreviewDeposit(PreviewDepositCall),
851        PreviewMint(PreviewMintCall),
852        PreviewRedeem(PreviewRedeemCall),
853        PreviewWithdraw(PreviewWithdrawCall),
854        Redeem(RedeemCall),
855        Symbol(SymbolCall),
856        TotalAssets(TotalAssetsCall),
857        TotalSupply(TotalSupplyCall),
858        Transfer(TransferCall),
859        TransferFrom(TransferFromCall),
860        Withdraw(WithdrawCall),
861    }
862    impl ::ethers_core::abi::AbiDecode for IERC4626Calls {
863        fn decode(
864            data: impl AsRef<[u8]>,
865        ) -> ::core::result::Result<Self, ::ethers_core::abi::AbiError> {
866            let data = data.as_ref();
867            if let Ok(decoded)
868                = <AllowanceCall as ::ethers_core::abi::AbiDecode>::decode(data) {
869                return Ok(Self::Allowance(decoded));
870            }
871            if let Ok(decoded)
872                = <ApproveCall as ::ethers_core::abi::AbiDecode>::decode(data) {
873                return Ok(Self::Approve(decoded));
874            }
875            if let Ok(decoded)
876                = <AssetCall as ::ethers_core::abi::AbiDecode>::decode(data) {
877                return Ok(Self::Asset(decoded));
878            }
879            if let Ok(decoded)
880                = <BalanceOfCall as ::ethers_core::abi::AbiDecode>::decode(data) {
881                return Ok(Self::BalanceOf(decoded));
882            }
883            if let Ok(decoded)
884                = <ConvertToAssetsCall as ::ethers_core::abi::AbiDecode>::decode(data) {
885                return Ok(Self::ConvertToAssets(decoded));
886            }
887            if let Ok(decoded)
888                = <ConvertToSharesCall as ::ethers_core::abi::AbiDecode>::decode(data) {
889                return Ok(Self::ConvertToShares(decoded));
890            }
891            if let Ok(decoded)
892                = <DecimalsCall as ::ethers_core::abi::AbiDecode>::decode(data) {
893                return Ok(Self::Decimals(decoded));
894            }
895            if let Ok(decoded)
896                = <DepositCall as ::ethers_core::abi::AbiDecode>::decode(data) {
897                return Ok(Self::Deposit(decoded));
898            }
899            if let Ok(decoded)
900                = <MaxDepositCall as ::ethers_core::abi::AbiDecode>::decode(data) {
901                return Ok(Self::MaxDeposit(decoded));
902            }
903            if let Ok(decoded)
904                = <MaxMintCall as ::ethers_core::abi::AbiDecode>::decode(data) {
905                return Ok(Self::MaxMint(decoded));
906            }
907            if let Ok(decoded)
908                = <MaxRedeemCall as ::ethers_core::abi::AbiDecode>::decode(data) {
909                return Ok(Self::MaxRedeem(decoded));
910            }
911            if let Ok(decoded)
912                = <MaxWithdrawCall as ::ethers_core::abi::AbiDecode>::decode(data) {
913                return Ok(Self::MaxWithdraw(decoded));
914            }
915            if let Ok(decoded)
916                = <MintCall as ::ethers_core::abi::AbiDecode>::decode(data) {
917                return Ok(Self::Mint(decoded));
918            }
919            if let Ok(decoded)
920                = <NameCall as ::ethers_core::abi::AbiDecode>::decode(data) {
921                return Ok(Self::Name(decoded));
922            }
923            if let Ok(decoded)
924                = <PreviewDepositCall as ::ethers_core::abi::AbiDecode>::decode(data) {
925                return Ok(Self::PreviewDeposit(decoded));
926            }
927            if let Ok(decoded)
928                = <PreviewMintCall as ::ethers_core::abi::AbiDecode>::decode(data) {
929                return Ok(Self::PreviewMint(decoded));
930            }
931            if let Ok(decoded)
932                = <PreviewRedeemCall as ::ethers_core::abi::AbiDecode>::decode(data) {
933                return Ok(Self::PreviewRedeem(decoded));
934            }
935            if let Ok(decoded)
936                = <PreviewWithdrawCall as ::ethers_core::abi::AbiDecode>::decode(data) {
937                return Ok(Self::PreviewWithdraw(decoded));
938            }
939            if let Ok(decoded)
940                = <RedeemCall as ::ethers_core::abi::AbiDecode>::decode(data) {
941                return Ok(Self::Redeem(decoded));
942            }
943            if let Ok(decoded)
944                = <SymbolCall as ::ethers_core::abi::AbiDecode>::decode(data) {
945                return Ok(Self::Symbol(decoded));
946            }
947            if let Ok(decoded)
948                = <TotalAssetsCall as ::ethers_core::abi::AbiDecode>::decode(data) {
949                return Ok(Self::TotalAssets(decoded));
950            }
951            if let Ok(decoded)
952                = <TotalSupplyCall as ::ethers_core::abi::AbiDecode>::decode(data) {
953                return Ok(Self::TotalSupply(decoded));
954            }
955            if let Ok(decoded)
956                = <TransferCall as ::ethers_core::abi::AbiDecode>::decode(data) {
957                return Ok(Self::Transfer(decoded));
958            }
959            if let Ok(decoded)
960                = <TransferFromCall as ::ethers_core::abi::AbiDecode>::decode(data) {
961                return Ok(Self::TransferFrom(decoded));
962            }
963            if let Ok(decoded)
964                = <WithdrawCall as ::ethers_core::abi::AbiDecode>::decode(data) {
965                return Ok(Self::Withdraw(decoded));
966            }
967            Err(::ethers_core::abi::Error::InvalidData.into())
968        }
969    }
970    impl ::ethers_core::abi::AbiEncode for IERC4626Calls {
971        fn encode(self) -> Vec<u8> {
972            match self {
973                Self::Allowance(element) => {
974                    ::ethers_core::abi::AbiEncode::encode(element)
975                }
976                Self::Approve(element) => ::ethers_core::abi::AbiEncode::encode(element),
977                Self::Asset(element) => ::ethers_core::abi::AbiEncode::encode(element),
978                Self::BalanceOf(element) => {
979                    ::ethers_core::abi::AbiEncode::encode(element)
980                }
981                Self::ConvertToAssets(element) => {
982                    ::ethers_core::abi::AbiEncode::encode(element)
983                }
984                Self::ConvertToShares(element) => {
985                    ::ethers_core::abi::AbiEncode::encode(element)
986                }
987                Self::Decimals(element) => ::ethers_core::abi::AbiEncode::encode(element),
988                Self::Deposit(element) => ::ethers_core::abi::AbiEncode::encode(element),
989                Self::MaxDeposit(element) => {
990                    ::ethers_core::abi::AbiEncode::encode(element)
991                }
992                Self::MaxMint(element) => ::ethers_core::abi::AbiEncode::encode(element),
993                Self::MaxRedeem(element) => {
994                    ::ethers_core::abi::AbiEncode::encode(element)
995                }
996                Self::MaxWithdraw(element) => {
997                    ::ethers_core::abi::AbiEncode::encode(element)
998                }
999                Self::Mint(element) => ::ethers_core::abi::AbiEncode::encode(element),
1000                Self::Name(element) => ::ethers_core::abi::AbiEncode::encode(element),
1001                Self::PreviewDeposit(element) => {
1002                    ::ethers_core::abi::AbiEncode::encode(element)
1003                }
1004                Self::PreviewMint(element) => {
1005                    ::ethers_core::abi::AbiEncode::encode(element)
1006                }
1007                Self::PreviewRedeem(element) => {
1008                    ::ethers_core::abi::AbiEncode::encode(element)
1009                }
1010                Self::PreviewWithdraw(element) => {
1011                    ::ethers_core::abi::AbiEncode::encode(element)
1012                }
1013                Self::Redeem(element) => ::ethers_core::abi::AbiEncode::encode(element),
1014                Self::Symbol(element) => ::ethers_core::abi::AbiEncode::encode(element),
1015                Self::TotalAssets(element) => {
1016                    ::ethers_core::abi::AbiEncode::encode(element)
1017                }
1018                Self::TotalSupply(element) => {
1019                    ::ethers_core::abi::AbiEncode::encode(element)
1020                }
1021                Self::Transfer(element) => ::ethers_core::abi::AbiEncode::encode(element),
1022                Self::TransferFrom(element) => {
1023                    ::ethers_core::abi::AbiEncode::encode(element)
1024                }
1025                Self::Withdraw(element) => ::ethers_core::abi::AbiEncode::encode(element),
1026            }
1027        }
1028    }
1029    impl ::core::fmt::Display for IERC4626Calls {
1030        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
1031            match self {
1032                Self::Allowance(element) => ::core::fmt::Display::fmt(element, f),
1033                Self::Approve(element) => ::core::fmt::Display::fmt(element, f),
1034                Self::Asset(element) => ::core::fmt::Display::fmt(element, f),
1035                Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f),
1036                Self::ConvertToAssets(element) => ::core::fmt::Display::fmt(element, f),
1037                Self::ConvertToShares(element) => ::core::fmt::Display::fmt(element, f),
1038                Self::Decimals(element) => ::core::fmt::Display::fmt(element, f),
1039                Self::Deposit(element) => ::core::fmt::Display::fmt(element, f),
1040                Self::MaxDeposit(element) => ::core::fmt::Display::fmt(element, f),
1041                Self::MaxMint(element) => ::core::fmt::Display::fmt(element, f),
1042                Self::MaxRedeem(element) => ::core::fmt::Display::fmt(element, f),
1043                Self::MaxWithdraw(element) => ::core::fmt::Display::fmt(element, f),
1044                Self::Mint(element) => ::core::fmt::Display::fmt(element, f),
1045                Self::Name(element) => ::core::fmt::Display::fmt(element, f),
1046                Self::PreviewDeposit(element) => ::core::fmt::Display::fmt(element, f),
1047                Self::PreviewMint(element) => ::core::fmt::Display::fmt(element, f),
1048                Self::PreviewRedeem(element) => ::core::fmt::Display::fmt(element, f),
1049                Self::PreviewWithdraw(element) => ::core::fmt::Display::fmt(element, f),
1050                Self::Redeem(element) => ::core::fmt::Display::fmt(element, f),
1051                Self::Symbol(element) => ::core::fmt::Display::fmt(element, f),
1052                Self::TotalAssets(element) => ::core::fmt::Display::fmt(element, f),
1053                Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f),
1054                Self::Transfer(element) => ::core::fmt::Display::fmt(element, f),
1055                Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f),
1056                Self::Withdraw(element) => ::core::fmt::Display::fmt(element, f),
1057            }
1058        }
1059    }
1060    impl ::core::convert::From<AllowanceCall> for IERC4626Calls {
1061        fn from(value: AllowanceCall) -> Self {
1062            Self::Allowance(value)
1063        }
1064    }
1065    impl ::core::convert::From<ApproveCall> for IERC4626Calls {
1066        fn from(value: ApproveCall) -> Self {
1067            Self::Approve(value)
1068        }
1069    }
1070    impl ::core::convert::From<AssetCall> for IERC4626Calls {
1071        fn from(value: AssetCall) -> Self {
1072            Self::Asset(value)
1073        }
1074    }
1075    impl ::core::convert::From<BalanceOfCall> for IERC4626Calls {
1076        fn from(value: BalanceOfCall) -> Self {
1077            Self::BalanceOf(value)
1078        }
1079    }
1080    impl ::core::convert::From<ConvertToAssetsCall> for IERC4626Calls {
1081        fn from(value: ConvertToAssetsCall) -> Self {
1082            Self::ConvertToAssets(value)
1083        }
1084    }
1085    impl ::core::convert::From<ConvertToSharesCall> for IERC4626Calls {
1086        fn from(value: ConvertToSharesCall) -> Self {
1087            Self::ConvertToShares(value)
1088        }
1089    }
1090    impl ::core::convert::From<DecimalsCall> for IERC4626Calls {
1091        fn from(value: DecimalsCall) -> Self {
1092            Self::Decimals(value)
1093        }
1094    }
1095    impl ::core::convert::From<DepositCall> for IERC4626Calls {
1096        fn from(value: DepositCall) -> Self {
1097            Self::Deposit(value)
1098        }
1099    }
1100    impl ::core::convert::From<MaxDepositCall> for IERC4626Calls {
1101        fn from(value: MaxDepositCall) -> Self {
1102            Self::MaxDeposit(value)
1103        }
1104    }
1105    impl ::core::convert::From<MaxMintCall> for IERC4626Calls {
1106        fn from(value: MaxMintCall) -> Self {
1107            Self::MaxMint(value)
1108        }
1109    }
1110    impl ::core::convert::From<MaxRedeemCall> for IERC4626Calls {
1111        fn from(value: MaxRedeemCall) -> Self {
1112            Self::MaxRedeem(value)
1113        }
1114    }
1115    impl ::core::convert::From<MaxWithdrawCall> for IERC4626Calls {
1116        fn from(value: MaxWithdrawCall) -> Self {
1117            Self::MaxWithdraw(value)
1118        }
1119    }
1120    impl ::core::convert::From<MintCall> for IERC4626Calls {
1121        fn from(value: MintCall) -> Self {
1122            Self::Mint(value)
1123        }
1124    }
1125    impl ::core::convert::From<NameCall> for IERC4626Calls {
1126        fn from(value: NameCall) -> Self {
1127            Self::Name(value)
1128        }
1129    }
1130    impl ::core::convert::From<PreviewDepositCall> for IERC4626Calls {
1131        fn from(value: PreviewDepositCall) -> Self {
1132            Self::PreviewDeposit(value)
1133        }
1134    }
1135    impl ::core::convert::From<PreviewMintCall> for IERC4626Calls {
1136        fn from(value: PreviewMintCall) -> Self {
1137            Self::PreviewMint(value)
1138        }
1139    }
1140    impl ::core::convert::From<PreviewRedeemCall> for IERC4626Calls {
1141        fn from(value: PreviewRedeemCall) -> Self {
1142            Self::PreviewRedeem(value)
1143        }
1144    }
1145    impl ::core::convert::From<PreviewWithdrawCall> for IERC4626Calls {
1146        fn from(value: PreviewWithdrawCall) -> Self {
1147            Self::PreviewWithdraw(value)
1148        }
1149    }
1150    impl ::core::convert::From<RedeemCall> for IERC4626Calls {
1151        fn from(value: RedeemCall) -> Self {
1152            Self::Redeem(value)
1153        }
1154    }
1155    impl ::core::convert::From<SymbolCall> for IERC4626Calls {
1156        fn from(value: SymbolCall) -> Self {
1157            Self::Symbol(value)
1158        }
1159    }
1160    impl ::core::convert::From<TotalAssetsCall> for IERC4626Calls {
1161        fn from(value: TotalAssetsCall) -> Self {
1162            Self::TotalAssets(value)
1163        }
1164    }
1165    impl ::core::convert::From<TotalSupplyCall> for IERC4626Calls {
1166        fn from(value: TotalSupplyCall) -> Self {
1167            Self::TotalSupply(value)
1168        }
1169    }
1170    impl ::core::convert::From<TransferCall> for IERC4626Calls {
1171        fn from(value: TransferCall) -> Self {
1172            Self::Transfer(value)
1173        }
1174    }
1175    impl ::core::convert::From<TransferFromCall> for IERC4626Calls {
1176        fn from(value: TransferFromCall) -> Self {
1177            Self::TransferFrom(value)
1178        }
1179    }
1180    impl ::core::convert::From<WithdrawCall> for IERC4626Calls {
1181        fn from(value: WithdrawCall) -> Self {
1182            Self::Withdraw(value)
1183        }
1184    }
1185    ///Container type for all return fields from the `allowance` function with signature `allowance(address,address)` and selector `0xdd62ed3e`
1186    #[derive(
1187        Clone,
1188        ::ethers_contract::EthAbiType,
1189        ::ethers_contract::EthAbiCodec,
1190        Default,
1191        Debug,
1192        PartialEq,
1193        Eq,
1194        Hash
1195    )]
1196    pub struct AllowanceReturn(pub ::ethers_core::types::U256);
1197    ///Container type for all return fields from the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3`
1198    #[derive(
1199        Clone,
1200        ::ethers_contract::EthAbiType,
1201        ::ethers_contract::EthAbiCodec,
1202        Default,
1203        Debug,
1204        PartialEq,
1205        Eq,
1206        Hash
1207    )]
1208    pub struct ApproveReturn(pub bool);
1209    ///Container type for all return fields from the `asset` function with signature `asset()` and selector `0x38d52e0f`
1210    #[derive(
1211        Clone,
1212        ::ethers_contract::EthAbiType,
1213        ::ethers_contract::EthAbiCodec,
1214        Default,
1215        Debug,
1216        PartialEq,
1217        Eq,
1218        Hash
1219    )]
1220    pub struct AssetReturn {
1221        pub asset_token_address: ::ethers_core::types::Address,
1222    }
1223    ///Container type for all return fields from the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231`
1224    #[derive(
1225        Clone,
1226        ::ethers_contract::EthAbiType,
1227        ::ethers_contract::EthAbiCodec,
1228        Default,
1229        Debug,
1230        PartialEq,
1231        Eq,
1232        Hash
1233    )]
1234    pub struct BalanceOfReturn(pub ::ethers_core::types::U256);
1235    ///Container type for all return fields from the `convertToAssets` function with signature `convertToAssets(uint256)` and selector `0x07a2d13a`
1236    #[derive(
1237        Clone,
1238        ::ethers_contract::EthAbiType,
1239        ::ethers_contract::EthAbiCodec,
1240        Default,
1241        Debug,
1242        PartialEq,
1243        Eq,
1244        Hash
1245    )]
1246    pub struct ConvertToAssetsReturn {
1247        pub assets: ::ethers_core::types::U256,
1248    }
1249    ///Container type for all return fields from the `convertToShares` function with signature `convertToShares(uint256)` and selector `0xc6e6f592`
1250    #[derive(
1251        Clone,
1252        ::ethers_contract::EthAbiType,
1253        ::ethers_contract::EthAbiCodec,
1254        Default,
1255        Debug,
1256        PartialEq,
1257        Eq,
1258        Hash
1259    )]
1260    pub struct ConvertToSharesReturn {
1261        pub shares: ::ethers_core::types::U256,
1262    }
1263    ///Container type for all return fields from the `decimals` function with signature `decimals()` and selector `0x313ce567`
1264    #[derive(
1265        Clone,
1266        ::ethers_contract::EthAbiType,
1267        ::ethers_contract::EthAbiCodec,
1268        Default,
1269        Debug,
1270        PartialEq,
1271        Eq,
1272        Hash
1273    )]
1274    pub struct DecimalsReturn(pub u8);
1275    ///Container type for all return fields from the `deposit` function with signature `deposit(uint256,address)` and selector `0x6e553f65`
1276    #[derive(
1277        Clone,
1278        ::ethers_contract::EthAbiType,
1279        ::ethers_contract::EthAbiCodec,
1280        Default,
1281        Debug,
1282        PartialEq,
1283        Eq,
1284        Hash
1285    )]
1286    pub struct DepositReturn {
1287        pub shares: ::ethers_core::types::U256,
1288    }
1289    ///Container type for all return fields from the `maxDeposit` function with signature `maxDeposit(address)` and selector `0x402d267d`
1290    #[derive(
1291        Clone,
1292        ::ethers_contract::EthAbiType,
1293        ::ethers_contract::EthAbiCodec,
1294        Default,
1295        Debug,
1296        PartialEq,
1297        Eq,
1298        Hash
1299    )]
1300    pub struct MaxDepositReturn {
1301        pub max_assets: ::ethers_core::types::U256,
1302    }
1303    ///Container type for all return fields from the `maxMint` function with signature `maxMint(address)` and selector `0xc63d75b6`
1304    #[derive(
1305        Clone,
1306        ::ethers_contract::EthAbiType,
1307        ::ethers_contract::EthAbiCodec,
1308        Default,
1309        Debug,
1310        PartialEq,
1311        Eq,
1312        Hash
1313    )]
1314    pub struct MaxMintReturn {
1315        pub max_shares: ::ethers_core::types::U256,
1316    }
1317    ///Container type for all return fields from the `maxRedeem` function with signature `maxRedeem(address)` and selector `0xd905777e`
1318    #[derive(
1319        Clone,
1320        ::ethers_contract::EthAbiType,
1321        ::ethers_contract::EthAbiCodec,
1322        Default,
1323        Debug,
1324        PartialEq,
1325        Eq,
1326        Hash
1327    )]
1328    pub struct MaxRedeemReturn {
1329        pub max_shares: ::ethers_core::types::U256,
1330    }
1331    ///Container type for all return fields from the `maxWithdraw` function with signature `maxWithdraw(address)` and selector `0xce96cb77`
1332    #[derive(
1333        Clone,
1334        ::ethers_contract::EthAbiType,
1335        ::ethers_contract::EthAbiCodec,
1336        Default,
1337        Debug,
1338        PartialEq,
1339        Eq,
1340        Hash
1341    )]
1342    pub struct MaxWithdrawReturn {
1343        pub max_assets: ::ethers_core::types::U256,
1344    }
1345    ///Container type for all return fields from the `mint` function with signature `mint(uint256,address)` and selector `0x94bf804d`
1346    #[derive(
1347        Clone,
1348        ::ethers_contract::EthAbiType,
1349        ::ethers_contract::EthAbiCodec,
1350        Default,
1351        Debug,
1352        PartialEq,
1353        Eq,
1354        Hash
1355    )]
1356    pub struct MintReturn {
1357        pub assets: ::ethers_core::types::U256,
1358    }
1359    ///Container type for all return fields from the `name` function with signature `name()` and selector `0x06fdde03`
1360    #[derive(
1361        Clone,
1362        ::ethers_contract::EthAbiType,
1363        ::ethers_contract::EthAbiCodec,
1364        Default,
1365        Debug,
1366        PartialEq,
1367        Eq,
1368        Hash
1369    )]
1370    pub struct NameReturn(pub ::std::string::String);
1371    ///Container type for all return fields from the `previewDeposit` function with signature `previewDeposit(uint256)` and selector `0xef8b30f7`
1372    #[derive(
1373        Clone,
1374        ::ethers_contract::EthAbiType,
1375        ::ethers_contract::EthAbiCodec,
1376        Default,
1377        Debug,
1378        PartialEq,
1379        Eq,
1380        Hash
1381    )]
1382    pub struct PreviewDepositReturn {
1383        pub shares: ::ethers_core::types::U256,
1384    }
1385    ///Container type for all return fields from the `previewMint` function with signature `previewMint(uint256)` and selector `0xb3d7f6b9`
1386    #[derive(
1387        Clone,
1388        ::ethers_contract::EthAbiType,
1389        ::ethers_contract::EthAbiCodec,
1390        Default,
1391        Debug,
1392        PartialEq,
1393        Eq,
1394        Hash
1395    )]
1396    pub struct PreviewMintReturn {
1397        pub assets: ::ethers_core::types::U256,
1398    }
1399    ///Container type for all return fields from the `previewRedeem` function with signature `previewRedeem(uint256)` and selector `0x4cdad506`
1400    #[derive(
1401        Clone,
1402        ::ethers_contract::EthAbiType,
1403        ::ethers_contract::EthAbiCodec,
1404        Default,
1405        Debug,
1406        PartialEq,
1407        Eq,
1408        Hash
1409    )]
1410    pub struct PreviewRedeemReturn {
1411        pub assets: ::ethers_core::types::U256,
1412    }
1413    ///Container type for all return fields from the `previewWithdraw` function with signature `previewWithdraw(uint256)` and selector `0x0a28a477`
1414    #[derive(
1415        Clone,
1416        ::ethers_contract::EthAbiType,
1417        ::ethers_contract::EthAbiCodec,
1418        Default,
1419        Debug,
1420        PartialEq,
1421        Eq,
1422        Hash
1423    )]
1424    pub struct PreviewWithdrawReturn {
1425        pub shares: ::ethers_core::types::U256,
1426    }
1427    ///Container type for all return fields from the `redeem` function with signature `redeem(uint256,address,address)` and selector `0xba087652`
1428    #[derive(
1429        Clone,
1430        ::ethers_contract::EthAbiType,
1431        ::ethers_contract::EthAbiCodec,
1432        Default,
1433        Debug,
1434        PartialEq,
1435        Eq,
1436        Hash
1437    )]
1438    pub struct RedeemReturn {
1439        pub assets: ::ethers_core::types::U256,
1440    }
1441    ///Container type for all return fields from the `symbol` function with signature `symbol()` and selector `0x95d89b41`
1442    #[derive(
1443        Clone,
1444        ::ethers_contract::EthAbiType,
1445        ::ethers_contract::EthAbiCodec,
1446        Default,
1447        Debug,
1448        PartialEq,
1449        Eq,
1450        Hash
1451    )]
1452    pub struct SymbolReturn(pub ::std::string::String);
1453    ///Container type for all return fields from the `totalAssets` function with signature `totalAssets()` and selector `0x01e1d114`
1454    #[derive(
1455        Clone,
1456        ::ethers_contract::EthAbiType,
1457        ::ethers_contract::EthAbiCodec,
1458        Default,
1459        Debug,
1460        PartialEq,
1461        Eq,
1462        Hash
1463    )]
1464    pub struct TotalAssetsReturn {
1465        pub total_managed_assets: ::ethers_core::types::U256,
1466    }
1467    ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd`
1468    #[derive(
1469        Clone,
1470        ::ethers_contract::EthAbiType,
1471        ::ethers_contract::EthAbiCodec,
1472        Default,
1473        Debug,
1474        PartialEq,
1475        Eq,
1476        Hash
1477    )]
1478    pub struct TotalSupplyReturn(pub ::ethers_core::types::U256);
1479    ///Container type for all return fields from the `transfer` function with signature `transfer(address,uint256)` and selector `0xa9059cbb`
1480    #[derive(
1481        Clone,
1482        ::ethers_contract::EthAbiType,
1483        ::ethers_contract::EthAbiCodec,
1484        Default,
1485        Debug,
1486        PartialEq,
1487        Eq,
1488        Hash
1489    )]
1490    pub struct TransferReturn(pub bool);
1491    ///Container type for all return fields from the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd`
1492    #[derive(
1493        Clone,
1494        ::ethers_contract::EthAbiType,
1495        ::ethers_contract::EthAbiCodec,
1496        Default,
1497        Debug,
1498        PartialEq,
1499        Eq,
1500        Hash
1501    )]
1502    pub struct TransferFromReturn(pub bool);
1503    ///Container type for all return fields from the `withdraw` function with signature `withdraw(uint256,address,address)` and selector `0xb460af94`
1504    #[derive(
1505        Clone,
1506        ::ethers_contract::EthAbiType,
1507        ::ethers_contract::EthAbiCodec,
1508        Default,
1509        Debug,
1510        PartialEq,
1511        Eq,
1512        Hash
1513    )]
1514    pub struct WithdrawReturn {
1515        pub shares: ::ethers_core::types::U256,
1516    }
1517}