import type { Client } from '../Client/client'; import type { EvmAddressHistoryResponse, EvmAddressTxCountResponse, EvmBlockResponse, EvmBlockByHeightResponse, EvmBroadcastTxResponse, EvmCallContractBody, EvmCallContractResponse, EvmEstimateGasResponse, EvmFeeRateResponse, EvmLatestBlockResponse, EvmNetworkStatusResponse, EvmNftMetadataResponse, EvmTokenDataResponse, EvmTxDetailsResponse } from '../Client'; import { Amount } from '../utils/Amount'; import type { ChainGateGlobal } from '../ChainGate/ChainGate'; export type EvmNetwork = 'ethereum'; export declare class EvmExplorer { /** @internal */ readonly client: Client; /** @internal */ readonly network: EvmNetwork; /** @internal */ readonly baseUrl: string; /** @internal */ readonly apiKey: string; /** @internal */ readonly global: ChainGateGlobal; constructor(client: Client, network: EvmNetwork, baseUrl: string, apiKey: string, global: ChainGateGlobal); /** Returns the native coin data for this network. */ private nativeData; /** * Returns the confirmed and unconfirmed balance for an EVM address. * * The `confirmed` and `unconfirmed` fields are returned as `Amount` instances * with native token metadata (symbol, name, network). */ getAddressBalance(address: string): Promise<{ address: string; confirmed: Amount; unconfirmed: Amount; }>; /** * Returns paginated transaction history for an EVM address, including decoded * contract events (transfers, mints, approvals, etc.). */ getAddressHistory(address: string, page?: string): Promise; /** * Returns all ERC-20/ERC-721/ERC-1155 token balances for an EVM address. * * Each balance is returned as an {@link Amount} instance. Use `isToken` and * `isNFT` to distinguish token types, and access `contractAddress` or * `ownedTokens` accordingly. */ getAddressTokenBalances(address: string): Promise; /** * Returns the nonce (transaction count) for an EVM address. */ getAddressTransactionCount(address: string): Promise; /** * Returns detailed information about a transaction by its hash. * * The `amount` field is returned as an `Amount` instance with native token metadata. */ getTransactionDetails(transactionId: string): Promise & { amount: Amount; }>; /** * Returns block details for the given block hash. */ getBlockByHash(blockHash: string): Promise; /** * Returns block details for the given block height. */ getBlockByHeight(blockHeight: string): Promise; /** * Returns the latest block number and hash. */ getLatestBlock(): Promise; /** * Estimates the gas required for a transaction. */ estimateGas(params: { addressFrom: string; addressTo: string; nonce: string; amount: string; data?: string; }): Promise; /** * Returns the current fee rate recommendations (low, normal, high, maximum). * * Each tier contains EIP-1559 fee parameters (`maxFeePerGasGwei`, * `maxPriorityFeePerGasGwei`) and an estimated confirmation time. */ getFeeRate(): Promise; /** * Returns current network status including block time, gas usage, and fee predictions. */ getNetworkStatus(): Promise; /** * Returns the URL endpoint for the SVG logo of this EVM network. */ getLogoUrl(): string; /** * Returns metadata and on-chain information for a token contract. */ getTokenData(contractAddress: string): Promise; /** * Returns the URL endpoint for a token contract logo (PNG or SVG). */ getTokenLogoUrl(address: string): string; /** * Returns the full decoded metadata for a specific NFT token. */ getNftMetadata(contractAddress: string, tokenId: string): Promise; /** * Returns the URL endpoint for a specific NFT token image. */ getNftImageUrl(contractAddress: string, tokenId: string): string; /** * Returns the URL endpoint for a specific NFT token animation/video. */ getNftAnimationUrl(contractAddress: string, tokenId: string): string; /** * Broadcasts a signed raw transaction to the EVM network. */ broadcastTransaction(transactionRaw: string): Promise; /** * Executes a read-only (eth_call) call against a smart contract. */ callSmartContract(body: EvmCallContractBody): Promise; }