import { ProtocolBlockExplorer } from '../../utils/ProtocolBlockExplorer';
import { NetworkType, ProtocolNetwork } from '../../utils/ProtocolNetwork';
import { ProtocolOptions } from '../../utils/ProtocolOptions';
import { SubProtocolSymbols } from '../../utils/ProtocolSymbols';
import { EthereumInfoClient } from './clients/info-clients/InfoClient';
import { EthereumNodeClient } from './clients/node-clients/NodeClient';
export declare const NODE_URL: string;
export declare const BLOCK_EXPLORER_API: string;
export declare class EthereumProtocolNetworkExtras {
    readonly chainID: number;
    readonly blockExplorerApi: string;
    constructor(chainID?: number, blockExplorerApi?: string);
}
export declare class EtherscanBlockExplorer implements ProtocolBlockExplorer {
    readonly blockExplorer: string;
    constructor(blockExplorer?: string);
    getAddressLink(address: string): Promise<string>;
    getTransactionLink(transactionId: string): Promise<string>;
}
export declare class EthereumProtocolNetwork extends ProtocolNetwork<EthereumProtocolNetworkExtras> {
    constructor(name?: string, type?: NetworkType, rpcUrl?: string, blockExplorer?: ProtocolBlockExplorer, extras?: EthereumProtocolNetworkExtras);
}
export declare class EthereumProtocolConfig {
    constructor();
}
export declare class EthereumProtocolOptions implements ProtocolOptions<EthereumProtocolConfig> {
    readonly network: EthereumProtocolNetwork;
    readonly config: EthereumProtocolConfig;
    readonly nodeClient: EthereumNodeClient;
    readonly infoClient: EthereumInfoClient;
    constructor(network?: EthereumProtocolNetwork, config?: EthereumProtocolConfig);
}
export declare class EthereumERC20ProtocolConfig {
    readonly symbol: string;
    readonly name: string;
    readonly marketSymbol: string;
    readonly identifier: SubProtocolSymbols;
    readonly contractAddress: string;
    readonly decimals: number;
    constructor(symbol: string, name: string, marketSymbol: string, identifier: SubProtocolSymbols, contractAddress: string, decimals: number);
}
export declare class EthereumERC20ProtocolOptions extends EthereumProtocolOptions {
    readonly network: EthereumProtocolNetwork;
    readonly config: EthereumERC20ProtocolConfig;
    constructor(network: EthereumProtocolNetwork, config: EthereumERC20ProtocolConfig);
}
