import { TAddress } from '../../models/TAddress'; import { TAccount } from '../../models/TAccount'; import { ClientEventsStream, TClientEventsStreamData } from '../../clients/ClientEventsStream'; import { ContractBase } from '../../contracts/ContractBase'; import { TxWriter } from '../../txs/TxWriter'; import { ITxLogItem } from '../../txs/receipt/ITxLogItem'; import { Web3Client } from '../../clients/Web3Client'; import { IBlockchainExplorer } from '../../explorer/IBlockchainExplorer'; import { SubjectStream } from '../../class/SubjectStream'; import type { TAbiItem } from '../../types/TAbi'; import type { TEth } from '../../models/TEth'; import type { TOverrideReturns } from '../../utils/types'; export declare class IERC4626 extends ContractBase { address: TEth.Address; client: Web3Client; explorer: IBlockchainExplorer; constructor(address?: TEth.Address, client?: Web3Client, explorer?: IBlockchainExplorer); Types: TIERC4626Types; $meta: { class: string; }; allowance(owner: TAddress, spender: TAddress): Promise; approve(sender: TSender, spender: TAddress, amount: bigint): Promise; asset(): Promise; balanceOf(account: TAddress): Promise; convertToAssets(shares: bigint): Promise; convertToShares(assets: bigint): Promise; decimals(): Promise; deposit(sender: TSender, assets: bigint, receiver: TAddress): Promise; maxDeposit(receiver: TAddress): Promise; maxMint(receiver: TAddress): Promise; maxRedeem(owner: TAddress): Promise; maxWithdraw(owner: TAddress): Promise; mint(sender: TSender, shares: bigint, receiver: TAddress): Promise; name(): Promise; previewDeposit(assets: bigint): Promise; previewMint(shares: bigint): Promise; previewRedeem(shares: bigint): Promise; previewWithdraw(assets: bigint): Promise; redeem(sender: TSender, shares: bigint, receiver: TAddress, owner: TAddress): Promise; symbol(): Promise; totalAssets(): Promise; totalSupply(): Promise; transfer(sender: TSender, to: TAddress, amount: bigint): Promise; transferFrom(sender: TSender, from: TAddress, to: TAddress, amount: bigint): Promise; withdraw(sender: TSender, assets: bigint, receiver: TAddress, owner: TAddress): Promise; $call(): IIERC4626TxCaller; $signed(): TOverrideReturns>; $data(): IIERC4626TxData; $gas(): TOverrideReturns>; onTransaction(method: TMethod, options: Parameters[0]): SubjectStream<{ tx: TEth.Tx; block: TEth.Block; calldata: { method: TMethod; arguments: TIERC4626Types['Methods'][TMethod]['arguments']; }; }>; onLog(event: keyof TEvents, cb?: (event: TClientEventsStreamData) => void): ClientEventsStream; getPastLogs(events: TEventName[], options?: TEventLogOptions>): Promise, TEventName>[]>; getPastLogs(event: TEventName, options?: TEventLogOptions>): Promise, TEventName>[]>; onApproval(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onDeposit(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onTransfer(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; onWithdraw(fn?: (event: TClientEventsStreamData>) => void): ClientEventsStream>>; extractLogsApproval(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsDeposit(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsTransfer(tx: TEth.TxReceipt): ITxLogItem>[]; extractLogsWithdraw(tx: TEth.TxReceipt): ITxLogItem>[]; getPastLogsApproval(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { owner?: TAddress; spender?: TAddress; }; }): Promise>[]>; getPastLogsDeposit(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { sender?: TAddress; owner?: TAddress; }; }): Promise>[]>; getPastLogsTransfer(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { from?: TAddress; to?: TAddress; }; }): Promise>[]>; getPastLogsWithdraw(options?: { fromBlock?: number | Date; toBlock?: number | Date; params?: { sender?: TAddress; receiver?: TAddress; owner?: TAddress; }; }): Promise>[]>; abi: TAbiItem[]; } type TSender = TAccount & { value?: string | number | bigint; }; type TEventLogOptions = { fromBlock?: number | Date; toBlock?: number | Date; params?: TParams; }; export type TIERC4626Types = { Events: { Approval: { outputParams: { owner: TAddress; spender: TAddress; value: bigint; }; outputArgs: [owner: TAddress, spender: TAddress, value: bigint]; }; Deposit: { outputParams: { _sender: TAddress; owner: TAddress; assets: bigint; shares: bigint; }; outputArgs: [_sender: TAddress, owner: TAddress, assets: bigint, shares: bigint]; }; Transfer: { outputParams: { from: TAddress; to: TAddress; value: bigint; }; outputArgs: [from: TAddress, to: TAddress, value: bigint]; }; Withdraw: { outputParams: { _sender: TAddress; receiver: TAddress; owner: TAddress; assets: bigint; shares: bigint; }; outputArgs: [_sender: TAddress, receiver: TAddress, owner: TAddress, assets: bigint, shares: bigint]; }; }; Methods: { allowance: { method: "allowance"; arguments: [owner: TAddress, spender: TAddress]; }; approve: { method: "approve"; arguments: [spender: TAddress, amount: bigint]; }; asset: { method: "asset"; arguments: []; }; balanceOf: { method: "balanceOf"; arguments: [account: TAddress]; }; convertToAssets: { method: "convertToAssets"; arguments: [shares: bigint]; }; convertToShares: { method: "convertToShares"; arguments: [assets: bigint]; }; decimals: { method: "decimals"; arguments: []; }; deposit: { method: "deposit"; arguments: [assets: bigint, receiver: TAddress]; }; maxDeposit: { method: "maxDeposit"; arguments: [receiver: TAddress]; }; maxMint: { method: "maxMint"; arguments: [receiver: TAddress]; }; maxRedeem: { method: "maxRedeem"; arguments: [owner: TAddress]; }; maxWithdraw: { method: "maxWithdraw"; arguments: [owner: TAddress]; }; mint: { method: "mint"; arguments: [shares: bigint, receiver: TAddress]; }; name: { method: "name"; arguments: []; }; previewDeposit: { method: "previewDeposit"; arguments: [assets: bigint]; }; previewMint: { method: "previewMint"; arguments: [shares: bigint]; }; previewRedeem: { method: "previewRedeem"; arguments: [shares: bigint]; }; previewWithdraw: { method: "previewWithdraw"; arguments: [assets: bigint]; }; redeem: { method: "redeem"; arguments: [shares: bigint, receiver: TAddress, owner: TAddress]; }; symbol: { method: "symbol"; arguments: []; }; totalAssets: { method: "totalAssets"; arguments: []; }; totalSupply: { method: "totalSupply"; arguments: []; }; transfer: { method: "transfer"; arguments: [to: TAddress, amount: bigint]; }; transferFrom: { method: "transferFrom"; arguments: [from: TAddress, to: TAddress, amount: bigint]; }; withdraw: { method: "withdraw"; arguments: [assets: bigint, receiver: TAddress, owner: TAddress]; }; }; }; interface IIERC4626TxCaller { approve(sender: TSender, spender: TAddress, amount: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; deposit(sender: TSender, assets: bigint, receiver: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; mint(sender: TSender, shares: bigint, receiver: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; redeem(sender: TSender, shares: bigint, receiver: TAddress, owner: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; transfer(sender: TSender, to: TAddress, amount: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; transferFrom(sender: TSender, from: TAddress, to: TAddress, amount: bigint): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; withdraw(sender: TSender, assets: bigint, receiver: TAddress, owner: TAddress): Promise<{ error?: Error & { data?: { type: string; params: any; }; }; result?: any; }>; } interface IIERC4626TxData { approve(sender: TSender, spender: TAddress, amount: bigint): Promise; deposit(sender: TSender, assets: bigint, receiver: TAddress): Promise; mint(sender: TSender, shares: bigint, receiver: TAddress): Promise; redeem(sender: TSender, shares: bigint, receiver: TAddress, owner: TAddress): Promise; transfer(sender: TSender, to: TAddress, amount: bigint): Promise; transferFrom(sender: TSender, from: TAddress, to: TAddress, amount: bigint): Promise; withdraw(sender: TSender, assets: bigint, receiver: TAddress, owner: TAddress): Promise; } type TEvents = TIERC4626Types['Events']; type TEventParams = Partial; type TEventArguments = Partial; export {};