///
import { UnsignedTransaction } from '@airgap/coinlib-core';
import { IAirGapSignedTransaction } from '@airgap/coinlib-core/interfaces/IAirGapSignedTransaction';
import { AirGapTransactionStatus, IAirGapTransaction } from '@airgap/coinlib-core/interfaces/IAirGapTransaction';
import { Network } from '@airgap/coinlib-core/networks';
import { CurrencyUnit, FeeDefaults, ICoinProtocol } from '@airgap/coinlib-core/protocols/ICoinProtocol';
import { ICoinSubProtocol } from '@airgap/coinlib-core/protocols/ICoinSubProtocol';
import { ProtocolSymbols } from '@airgap/coinlib-core/utils/ProtocolSymbols';
import { SignedEthereumTransaction } from '../types/signed-transaction-ethereum';
import { RawEthereumTransaction, RawTypedEthereumTransaction } from '../types/transaction-ethereum';
import { EthereumInfoClient } from './clients/info-clients/InfoClient';
import { EthereumNodeClient } from './clients/node-clients/NodeClient';
import { EthereumCryptoClient } from './EthereumCryptoClient';
import { EthereumProtocolOptions } from './EthereumProtocolOptions';
import { EthereumAddressCursor, EthereumAddressResult, EthereumTransactionCursor, EthereumTransactionResult } from './EthereumTypes';
export declare abstract class BaseEthereumProtocol implements ICoinProtocol {
readonly options: EthereumProtocolOptions;
symbol: string;
name: string;
marketSymbol: string;
feeSymbol: string;
feeDefaults: FeeDefaults;
decimals: number;
feeDecimals: number;
identifier: ProtocolSymbols;
readonly MAX_GAS_ESTIMATE: string;
units: CurrencyUnit[];
supportsHD: boolean;
standardDerivationPath: string;
addressIsCaseSensitive: boolean;
addressValidationPattern: string;
addressPlaceholder: string;
network: Network;
readonly cryptoClient: EthereumCryptoClient;
constructor(options?: EthereumProtocolOptions);
getSymbol(): Promise;
getName(): Promise;
getMarketSymbol(): Promise;
getAssetSymbol(): Promise;
getFeeSymbol(): Promise;
getFeeDefaults(): Promise;
getDecimals(): Promise;
getFeeDecimals(): Promise;
getIdentifier(): Promise;
getUnits(): Promise;
getSupportsHD(): Promise;
getStandardDerivationPath(): Promise;
getAddressIsCaseSensitive(): Promise;
getAddressValidationPattern(): Promise;
getAddressPlaceholder(): Promise;
getOptions(): Promise;
getBlockExplorerLinkForAddress(address: string): Promise;
getBlockExplorerLinkForTxId(txId: string): Promise;
getPublicKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getExtendedPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getExtendedPublicKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getPublicKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getExtendedPublicKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getExtendedPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getAddressFromPublicKey(publicKey: string | Buffer, cursor?: EthereumAddressCursor): Promise;
getAddressesFromPublicKey(publicKey: string | Buffer, cursor?: EthereumAddressCursor): Promise;
private getPublicKeyFromExtendedPublicKey;
getAddressFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressDerivationIndex: number): Promise;
getAddressesFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressCount: number, offset: number): Promise;
private getPrivateKeyFromExtendedPrivateKey;
signWithExtendedPrivateKey(extendedPrivateKey: string, untypedTransaction: RawTypedEthereumTransaction | RawEthereumTransaction, childDerivationPath?: string): Promise;
signWithPrivateKey(privateKey: string, transaction: RawEthereumTransaction): Promise;
getTransactionDetails(unsignedTx: UnsignedTransaction): Promise;
getTransactionDetailsFromSigned(transaction: SignedEthereumTransaction): Promise;
getBalanceOfPublicKey(publicKey: string): Promise;
getBalanceOfAddresses(addresses: string[]): Promise;
getBalanceOfPublicKeyForSubProtocols(publicKey: string, subProtocols: ICoinSubProtocol[]): Promise;
getBalanceOfExtendedPublicKey(extendedPublicKey: string, offset?: number): Promise;
getAvailableBalanceOfAddresses(addresses: string[]): Promise;
estimateMaxTransactionValueFromExtendedPublicKey(extendedPublicKey: string, recipients: string[], fee?: string): Promise;
estimateFeeDefaultsFromExtendedPublicKey(extendedPublicKey: string, recipients: string[], values: string[], data?: any): Promise;
prepareTransactionFromExtendedPublicKey(extendedPublicKey: string, _offset: number, recipients: string[], values: string[], fee: string, data?: any): Promise;
estimateMaxTransactionValueFromPublicKey(publicKey: string, recipients: string[], fee?: string): Promise;
estimateFeeDefaultsFromPublicKey(publicKey: string, recipients: string[], values: string[], data?: any): Promise;
prepareTransactionFromPublicKey(publicKey: string, recipients: string[], values: string[], fee: string, data?: any): Promise;
broadcastTransaction(rawTransaction: string): Promise;
getTransactionsFromExtendedPublicKey(extendedPublicKey: string, limit: number, cursor: EthereumTransactionCursor): Promise;
getTransactionsFromPublicKey(publicKey: string, limit?: number, cursor?: EthereumTransactionCursor): Promise;
getTransactionsFromAddresses(addresses: string[], limit: number, cursor?: EthereumTransactionCursor): Promise;
signMessage(message: string, keypair: {
privateKey: string;
}): Promise;
verifyMessage(message: string, signature: string, publicKey: string): Promise;
encryptAsymmetric(message: string, publicKey: string): Promise;
decryptAsymmetric(message: string, keypair: {
publicKey: string;
privateKey: string;
}): Promise;
encryptAES(message: string, privateKey: string): Promise;
decryptAES(message: string, privateKey: string): Promise;
getTransactionStatuses(transactionHashes: string[]): Promise;
}