import type { Client } from '../Client/client';
import type { EvmAddressHistoryResponse, EvmAddressTxCountResponse, EvmBlockResponse, EvmBlockByHeightResponse, EvmBroadcastTxResponse, EvmCallContractBody, EvmCallContractResponse, EvmEstimateGasResponse, EvmFeeRateResponse, EvmLatestBlockResponse, EvmNetworkStatusResponse, EvmNftMetadataResponse, EvmNonceResponse, EvmTokenDataResponse, EvmTxDetailsResponse } from '../Client';
import { Amount } from '../utils/Amount';
import type { ChainGateGlobal } from '../ChainGate/ChainGate';
export type EvmNetwork = 'ethereum' | 'avalanche';
export declare class EvmExplorer {
    /** @internal */
    readonly client: Client;
    /** @internal */
    readonly network: EvmNetwork;
    /** @internal */
    readonly baseUrl: string;
    /** @internal */
    readonly apiKey: string | undefined;
    /** @internal */
    readonly global: ChainGateGlobal;
    constructor(client: Client, network: EvmNetwork, baseUrl: string, apiKey: string | undefined, 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<EvmAddressHistoryResponse>;
    /**
     * 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<Amount[]>;
    /**
     * Returns the nonce (transaction count) for an EVM address.
     */
    getAddressTransactionCount(address: string): Promise<EvmAddressTxCountResponse>;
    /**
     * Returns the next nonce to use when sending a transaction from an EVM address.
     */
    getNonce(address: string): Promise<EvmNonceResponse>;
    /**
     * 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<Omit<EvmTxDetailsResponse, 'amount'> & {
        amount: Amount;
    }>;
    /**
     * Returns block details for the given block hash.
     */
    getBlockByHash(blockHash: string): Promise<EvmBlockResponse>;
    /**
     * Returns block details for the given block height.
     */
    getBlockByHeight(blockHeight: string): Promise<EvmBlockByHeightResponse>;
    /**
     * Returns the latest block number and hash.
     */
    getLatestBlock(): Promise<EvmLatestBlockResponse>;
    /**
     * Estimates the gas required for a transaction.
     */
    estimateGas(params: {
        addressFrom: string;
        addressTo: string;
        nonce: string;
        amount: string;
        data?: string;
    }): Promise<EvmEstimateGasResponse>;
    /**
     * 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<EvmFeeRateResponse>;
    /**
     * Returns current network status including block time, gas usage, and fee predictions.
     */
    getNetworkStatus(): Promise<EvmNetworkStatusResponse>;
    /**
     * 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<EvmTokenDataResponse>;
    /**
     * 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<EvmNftMetadataResponse>;
    /**
     * 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<EvmBroadcastTxResponse>;
    /**
     * Executes a read-only (eth_call) call against a smart contract.
     */
    callSmartContract(body: EvmCallContractBody): Promise<EvmCallContractResponse>;
}
