import { ChainGateClient, EvmApi } from 'chaingate-client';
import { Address } from '../../../Address';
import { EvmCurrencyInfo } from './EvmCurrencyInfo';
import { CurrencyProviders } from '../../CurrencyProviders';
import { CurrencyAmount } from '../../CurrencyAmount';
import { EvmPreparedTransaction } from './EvmPreparedTransaction';
import { Currency } from '../../Currency';
export declare abstract class Evm<DefaultUnitSpecifier extends string> extends Currency {
    protected readonly api: EvmApi;
    readonly currencyInfo: EvmCurrencyInfo;
    currencyProviders: CurrencyProviders;
    protected constructor(currencyInfo: EvmCurrencyInfo, client: ChainGateClient, api: EvmApi, currencyProviders: CurrencyProviders);
    getAddress(): Promise<string>;
    getBalance(address?: string): Promise<{
        confirmed: CurrencyAmount;
        unconfirmed: CurrencyAmount;
    }>;
    createTransfer(toAddress: Address, amount: CurrencyAmount): Promise<EvmPreparedTransaction>;
    prepareSmartContractTransaction(smartContractAddress: Address, amount: CurrencyAmount, data: string): Promise<EvmPreparedTransaction>;
    callSmartContractRaw(smartContractAddress: Address, data: string): Promise<string>;
    amount(amountStr: string, unit: DefaultUnitSpecifier | 'wei'): Promise<CurrencyAmount>;
    networkStatus(): Promise<import("chaingate-client/dist/api").NetworkStatus>;
}
