import { PublicClient } from "viem";
/** Interface defining the required fields for a network configuration */
export interface NetworkFields {
    /** Display name of the network */
    name: string;
    /** RPC endpoint URL */
    rpcUrl: string;
    /** Unique chain identifier */
    chainId: number;
    /** Block explorer URL */
    scanUrl: string;
    /** Network logo URL */
    icon: string | undefined;
    /** Whether this is a test network */
    testnet: boolean;
    /** Native currency information */
    nativeCurrency: {
        /** Number of decimal places */
        decimals: number;
        /** Full name of the currency */
        name: string;
        /** Currency symbol */
        symbol: string;
        /** Address of wrapped token contract */
        wrappedAddress: string | undefined;
        /** Currency logo URL (may differ from network icon) */
        icon: string | undefined;
    };
}
/** Interface defining optional configuration overrides for a Network instance */
interface NetworkOptions {
    /** Override the default RPC URL */
    rpcUrl?: string;
    /** Override the default block explorer URL */
    scanUrl?: string;
}
/**
 * Network class that provides access to network-specific data and functionality
 * Leverages network data provided through viem to make all relevant network fields
 * accessible dynamically by chain ID.
 */
export declare class Network implements NetworkFields {
    name: string;
    rpcUrl: string;
    chainId: number;
    scanUrl: string;
    client: PublicClient;
    icon: string | undefined;
    testnet: boolean;
    nativeCurrency: {
        decimals: number;
        name: string;
        symbol: string;
        wrappedAddress: string | undefined;
        icon: string | undefined;
    };
    /**
     * Creates a new Network instance
     *
     * @param fields - Network configuration fields
     */
    constructor({ name, rpcUrl, chainId, scanUrl, nativeCurrency, icon, }: NetworkFields);
    /**
     * Creates a Network instance from a chain ID
     *
     * @param chainId - The chain ID to create the network for
     * @param options - Optional configuration overrides
     * @returns A new Network instance
     * @throws Error if the chain ID is not supported
     */
    static fromChainId(chainId: number, options?: NetworkOptions): Network;
}
/**
 * Checks if a given chain ID corresponds to a test network
 *
 * @param chainId - The chain ID to check
 * @returns True if the network is a testnet, false otherwise
 */
export declare function isTestnet(chainId: number): boolean;
export {};
