import Web3 from 'web3';
import { PaymentsUtils, Payport, createUnitConverters, AutoFeeLevels, FeeRate, NetworkType, BalanceResult } from '@faast/payments-common';
import { Logger, Numeric } from '@faast/ts-common';
import { EthereumPaymentsUtilsConfig, EthereumTransactionInfo } from './types';
import { NetworkData } from './NetworkData';
declare type UnitConverters = ReturnType<typeof createUnitConverters>;
export declare class EthereumPaymentsUtils implements PaymentsUtils {
    readonly networkType: NetworkType;
    readonly coinSymbol: string;
    readonly coinName: string;
    readonly coinDecimals: number;
    logger: Logger;
    server: string | null;
    web3: Web3;
    eth: Web3['eth'];
    gasStation: NetworkData;
    constructor(config: EthereumPaymentsUtilsConfig);
    init(): Promise<void>;
    destroy(): Promise<void>;
    toMainDenominationBigNumber: UnitConverters['toMainDenominationBigNumber'];
    toBaseDenominationBigNumber: UnitConverters['toMainDenominationBigNumber'];
    toMainDenomination: UnitConverters['toMainDenominationString'];
    toBaseDenomination: UnitConverters['toBaseDenominationString'];
    toMainDenominationBigNumberEth: UnitConverters['toMainDenominationBigNumber'];
    toBaseDenominationBigNumberEth: UnitConverters['toMainDenominationBigNumber'];
    toMainDenominationEth: UnitConverters['toMainDenominationString'];
    toBaseDenominationEth: UnitConverters['toBaseDenominationString'];
    isValidAddress(address: string, options?: {
        format?: string;
    }): boolean;
    standardizeAddress(address: string, options?: {
        format?: string;
    }): string | null;
    isValidExtraId(extraId: unknown): boolean;
    isValidPayport(payport: Payport): boolean;
    validatePayport(payport: Payport): void;
    getPayportValidationMessage(payport: Payport): string | undefined;
    isValidXprv(xprv: string): boolean;
    isValidXpub(xpub: string): boolean;
    isValidPrivateKey(prv: string): boolean;
    privateKeyToAddress(prv: string): string;
    private _getPayportValidationMessage;
    getFeeRateRecommendation(level: AutoFeeLevels): Promise<FeeRate>;
    _retryDced<T>(fn: () => Promise<T>): Promise<T>;
    getCurrentBlockNumber(): Promise<number>;
    isAddressBalanceSweepable(balanceEth: Numeric): boolean;
    getAddressBalance(address: string): Promise<BalanceResult>;
    getAddressNextSequenceNumber(address: string): Promise<string>;
    getAddressUtxos(): Promise<never[]>;
    getTransactionInfo(txid: string): Promise<EthereumTransactionInfo>;
}
export {};
