import { Connection } from "@solana/web3.js"; import { ethers } from "ethers"; import { BaseToken, TokenInfo } from "../base/BaseToken"; import BN from "bn.js"; import { TokenSolana } from "../tokens/TokenSolana"; import { TokenEVM } from "../tokens/TokenEVM"; /** * Interface for token identification */ export interface TokenIdentifier { id: string; chain: "solana" | "evm"; } /** * Class for managing multiple tokens across different chains */ export declare class MultiTokenManager { private solanaTokens; private evmTokens; /** * Add a Solana token manager to the MultiTokenManager * @param id Unique identifier for this token manager * @param connection Solana connection * @returns The added TokenSolana instance */ addSolanaToken(id: string, connection: Connection): TokenSolana; /** * Add an EVM token manager to the MultiTokenManager * @param id Unique identifier for this token manager * @param provider Ethers provider * @returns The added TokenEVM instance */ addEVMToken(id: string, provider: ethers.providers.Provider): TokenEVM; /** * Get a token manager by ID * @param id The token manager ID * @returns The token manager instance */ getToken(id: string): BaseToken; /** * Get a Solana token manager by ID * @param id The token manager ID * @returns The TokenSolana instance */ getSolanaToken(id: string): TokenSolana; /** * Get an EVM token manager by ID * @param id The token manager ID * @returns The TokenEVM instance */ getEVMToken(id: string): TokenEVM; /** * Remove a token manager by ID * @param id The token manager ID * @returns True if the token manager was removed, false otherwise */ removeToken(id: string): boolean; /** * Get all token manager identifiers * @returns Array of token manager identifiers */ getAllTokenIds(): TokenIdentifier[]; /** * Get token decimals * @param managerId The token manager ID * @param tokenAddress The token address or mint * @returns The number of decimals */ getDecimals(managerId: string, tokenAddress: string): Promise; /** * Get token name * @param managerId The token manager ID * @param tokenAddress The token address or mint * @returns The token name */ getName(managerId: string, tokenAddress: string): Promise; /** * Get token symbol * @param managerId The token manager ID * @param tokenAddress The token address or mint * @returns The token symbol */ getSymbol(managerId: string, tokenAddress: string): Promise; /** * Get token URI * @param managerId The token manager ID * @param tokenAddress The token address or mint * @returns The token URI */ getUri(managerId: string, tokenAddress: string): Promise; /** * Get token balance * @param managerId The token manager ID * @param owner The address of the token owner * @param tokenAddress The token address or mint * @returns The token balance as a number */ getBalance(managerId: string, owner: string, tokenAddress: string): Promise; /** * Get token allowance * @param managerId The token manager ID * @param owner The address of the token owner * @param tokenAddress The token address or mint * @param spender The address of the spender * @returns The allowance amount as a number */ getAllowance(managerId: string, owner: string, tokenAddress: string, spender: string): Promise; /** * Approve token spending * @param managerId The token manager ID * @param tokenAddress The token address or mint * @param spender The address of the spender * @param amount The amount to approve * @returns A transaction that can be signed and sent */ approve(managerId: string, tokenAddress: string, spender: string, amount: number | string): Promise; /** * Parse a token amount from human-readable to raw format * @param managerId The token manager ID * @param tokenAddress The token address or mint * @param amount The amount to parse * @returns The parsed amount (BigNumber for EVM, BN for Solana) */ parseAmount(managerId: string, tokenAddress: string, amount: number | string): Promise; /** * Format a raw token amount to human-readable format * @param managerId The token manager ID * @param tokenAddress The token address or mint * @param amount The raw amount to format * @returns The formatted amount */ formatAmount(managerId: string, tokenAddress: string, amount: ethers.BigNumber | BN): Promise; /** * Get complete token information * @param managerId The token manager ID * @param tokenAddress The token address or mint * @returns Promise resolving to token information */ getTokenInfo(managerId: string, tokenAddress: string): Promise; /** * Update provider for a token manager * @param managerId The token manager ID * @param provider The new provider */ updateProvider(managerId: string, provider: Connection | ethers.providers.Provider): void; /** * Execute a batch of operations across multiple token managers * @param operations Array of operations to execute * @returns Results of the operations */ executeBatch(operations: Array<{ managerId: string; operation: (token: BaseToken) => Promise; }>): Promise; } //# sourceMappingURL=MultiTokenManager.d.ts.map