/** * @file ERC20 Token Helpers * @version 1.0.0 * @lastModified 2024-06-07 * * Helper functions for interacting with ERC20 tokens */ import { ethers } from 'ethers'; import { EthersService } from '../ethersService.js'; import { ERC20Info, TokenOperationOptions } from './types.js'; /** * Get basic information about an ERC20 token * * @param tokenAddress Token contract address * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with token information */ export declare function getTokenInfo(ethersService: EthersService, tokenAddress: string, provider?: string, chainId?: number): Promise; /** * Get ERC20 token balance for an address * * @param tokenAddress ERC20 token contract address * @param ownerAddress Address to check balance for * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with formatted balance as string */ export declare function getBalance(ethersService: EthersService, tokenAddress: string, ownerAddress: string, provider?: string, chainId?: number): Promise; /** * Get the allowance amount approved for a spender * * @param tokenAddress ERC20 token contract address * @param ownerAddress Token owner address * @param spenderAddress Spender address * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with formatted allowance as string */ export declare function getAllowance(ethersService: EthersService, tokenAddress: string, ownerAddress: string, spenderAddress: string, provider?: string, chainId?: number): Promise; /** * Transfer ERC20 tokens to a recipient * * @param tokenAddress ERC20 token contract address * @param recipientAddress Recipient address * @param amount Amount to transfer in token units (e.g., "1.5" not wei) * @param provider Optional provider name or instance * @param chainId Optional chain ID * @param options Optional transaction options * @returns Promise with transaction response */ export declare function transfer(ethersService: EthersService, tokenAddress: string, recipientAddress: string, amount: string, provider?: string, chainId?: number, options?: TokenOperationOptions): Promise; /** * Approve a spender to use tokens * * @param tokenAddress ERC20 token contract address * @param spenderAddress Spender address to approve * @param amount Amount to approve in token units (e.g., "1.5" not wei) * @param provider Optional provider name or instance * @param chainId Optional chain ID * @param options Optional transaction options * @returns Promise with transaction response */ export declare function approve(ethersService: EthersService, tokenAddress: string, spenderAddress: string, amount: string, provider?: string, chainId?: number, options?: TokenOperationOptions): Promise; /** * Transfer tokens from one address to another (requires approval) * * @param tokenAddress ERC20 token contract address * @param senderAddress Address to transfer from * @param recipientAddress Recipient address * @param amount Amount to transfer in token units (e.g., "1.5" not wei) * @param provider Optional provider name or instance * @param chainId Optional chain ID * @param options Optional transaction options * @returns Promise with transaction response */ export declare function transferFrom(ethersService: EthersService, tokenAddress: string, senderAddress: string, recipientAddress: string, amount: string, provider?: string, chainId?: number, options?: TokenOperationOptions): Promise; /** * Parse a token amount from human-readable to raw units * * @param amount Amount in human-readable format (e.g., "1.5") * @param tokenAddress ERC20 token contract address * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with parsed amount as bigint */ export declare function parseTokenAmount(ethersService: EthersService, amount: string, tokenAddress: string, provider?: string, chainId?: number): Promise; /** * Format a token amount from raw units to human-readable format * * @param amount Amount in raw units (wei equivalent) * @param tokenAddress ERC20 token contract address * @param provider Optional provider name or instance * @param chainId Optional chain ID * @returns Promise with formatted amount as string */ export declare function formatTokenAmount(ethersService: EthersService, amount: string | bigint, tokenAddress: string, provider?: string, chainId?: number): Promise;