import { type PublicClient, type WalletClient, type Chain, type Transport, type Account } from 'viem'; import { type AzethContractAddresses } from '@azeth/common'; export interface DepositParams { /** The smart account to deposit into (must be owned by the caller) */ to: `0x${string}`; /** Amount to deposit (in smallest unit) */ amount: bigint; /** ERC-20 token address. Omit for native ETH deposit. */ token?: `0x${string}`; } export interface DepositResult { txHash: `0x${string}`; from: `0x${string}`; to: `0x${string}`; amount: bigint; token: `0x${string}` | 'ETH'; } /** Validate that a target address is an Azeth smart account owned by the depositor. * * SECURITY CRITICAL: Both checks are on-chain reads and cannot be spoofed. * 1. factory.isAzethAccount(target) — confirms it's a real Azeth account * 2. factory.getOwnerOf(target) == depositor — confirms ownership * * No TOCTOU risk: AzethAccount has no transferOwnership(), so ownership is immutable. */ export declare function validateDepositTarget(publicClient: PublicClient, addresses: AzethContractAddresses, depositor: `0x${string}`, target: `0x${string}`): Promise; /** Deposit ETH or ERC-20 tokens from the EOA to a self-owned smart account. * * SECURITY: Validates on-chain that the target is: * 1. A real Azeth smart account (via factory.isAzethAccount) * 2. Owned by the depositor (via factory.getOwnerOf) */ export declare function deposit(publicClient: PublicClient, walletClient: WalletClient, addresses: AzethContractAddresses, depositor: `0x${string}`, params: DepositParams): Promise; //# sourceMappingURL=deposit.d.ts.map