import { type Address } from "viem"; import { type DepositAmountArgs, type Metadata, type RequirementSignature, type Transaction, type VaultV2DepositAction } from "../../types"; export interface VaultV2DepositParams { vault: { chainId: number; address: Address; asset: Address; }; args: DepositAmountArgs & { maxSharePrice: bigint; recipient: Address; requirementSignature?: RequirementSignature; }; metadata?: Metadata; } /** * Prepares a deposit transaction for the VaultV2 contract. * * Routed through the bundler to atomically execute the asset transfer and vault deposit. * The general adapter enforces `maxSharePrice` on-chain to prevent inflation attacks. * Never bypass the general adapter. * * When `nativeAmount` is provided, that amount of native ETH is sent as `msg.value` * to the Bundler3 multicall and wrapped into WETH via `GeneralAdapter1.wrapNative()`. * The vault's underlying asset must be the chain's wrapped native token (wNative). * * @param {Object} params - The deposit parameters. * @param {Object} params.vault - The vault identifiers. * @param {number} params.vault.chainId - The chain ID. * @param {Address} params.vault.address - The vault address. * @param {Address} params.vault.asset - The underlying ERC20 asset address. * @param {Object} params.args - The deposit arguments. * @param {bigint} [params.args.amount=0n] - Amount of ERC-20 assets to deposit. At least one of amount or nativeAmount must be provided. * @param {bigint} params.args.maxSharePrice - Maximum acceptable share price (slippage protection). * @param {Address} params.args.recipient - Receives the vault shares. * @param {RequirementSignature} [params.args.requirementSignature] - Pre-signed permit/permit2 approval. * @param {bigint} [params.args.nativeAmount] - Amount of native token to wrap into wNative for the deposit. * @param {Metadata} [params.metadata] - Optional analytics metadata. * @returns {Readonly>} The prepared deposit transaction. */ export declare const vaultV2Deposit: ({ vault: { chainId, address: vaultAddress, asset }, args: { amount, maxSharePrice, recipient, requirementSignature, nativeAmount, }, metadata, }: VaultV2DepositParams) => Readonly>;