///
import { AirGapTransactionStatus, IAirGapTransaction } from '../../interfaces/IAirGapTransaction';
import { SignedSubstrateTransaction } from '../../serializer/schemas/definitions/signed-transaction-substrate';
import { UnsignedSubstrateTransaction } from '../../serializer/schemas/definitions/unsigned-transaction-substrate';
import { RawSubstrateTransaction } from '../../serializer/types';
import { ProtocolSymbols } from '../../utils/ProtocolSymbols';
import { CurrencyUnit, FeeDefaults } from '../ICoinProtocol';
import { ICoinSubProtocol } from '../ICoinSubProtocol';
import { NonExtendedProtocol } from '../NonExtendedProtocol';
import { SubstrateTransactionType } from './common/data/transaction/SubstrateTransaction';
import { SubstrateAccountId, SubstrateCompatAddressType } from './compat/SubstrateCompatAddress';
import { SubstrateCryptoClient } from './SubstrateCryptoClient';
import { SubstrateNetwork } from './SubstrateNetwork';
import { SubstrateProtocolOptions } from './SubstrateProtocolOptions';
import { SubstrateTransactionCursor, SubstrateTransactionResult } from './SubstrateTypes';
export declare abstract class SubstrateProtocol extends NonExtendedProtocol {
readonly options: SubstrateProtocolOptions;
abstract symbol: string;
abstract name: string;
abstract marketSymbol: string;
abstract feeSymbol: string;
abstract decimals: number;
abstract feeDecimals: number;
abstract identifier: ProtocolSymbols;
abstract feeDefaults: FeeDefaults;
abstract units: CurrencyUnit[];
abstract standardDerivationPath: string;
supportsHD: boolean;
abstract addressIsCaseSensitive: boolean;
addressValidationPattern: string;
addressPlaceholder: string;
readonly cryptoClient: SubstrateCryptoClient;
constructor(options: SubstrateProtocolOptions);
getBlockExplorerLinkForAddress(address: string): Promise;
getBlockExplorerLinkForTxId(txId: string): Promise;
getPublicKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getPrivateKeyFromMnemonic(mnemonic: string, derivationPath: string, password?: string): Promise;
getPublicKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getPrivateKeyFromHexSecret(secret: string, derivationPath: string): Promise;
getAddressFromPublicKey(publicKey: string): Promise;
getAddressesFromPublicKey(publicKey: string): Promise;
getNextAddressFromPublicKey(publicKey: string, current: SubstrateCompatAddressType[Network]): Promise;
getTransactionsFromPublicKey(publicKey: string, limit: number, cursor?: SubstrateTransactionCursor): Promise;
getTransactionsFromAddresses(addresses: string[], limit: number, cursor?: SubstrateTransactionCursor): Promise;
signWithPrivateKey(privateKey: Buffer, rawTransaction: RawSubstrateTransaction): Promise;
getTransactionDetails(transaction: UnsignedSubstrateTransaction): Promise;
getTransactionDetailsFromSigned(transaction: SignedSubstrateTransaction): Promise;
getBalanceOfAddresses(addresses: string[]): Promise;
getAvailableBalanceOfAddresses(addresses: string[]): Promise;
getBalanceOfPublicKey(publicKey: string): Promise;
getBalanceOfPublicKeyForSubProtocols(publicKey: string, subProtocols: ICoinSubProtocol[]): Promise;
estimateMaxTransactionValueFromPublicKey(publicKey: string, _recipients: string[], fee?: string, data?: {
excludeExistentialDeposit?: boolean;
}): Promise;
estimateFeeDefaultsFromPublicKey(publicKey: string, recipients: string[], values: string[], data?: any): Promise;
prepareTransactionFromPublicKey(publicKey: string, recipients: string[], values: string[], fee: string, data?: {
excludeExistentialDeposit?: boolean;
}): Promise;
broadcastTransaction(encoded: string): Promise;
getFutureRequiredTransactions(accountId: SubstrateAccountId, intention: 'check' | 'transfer' | 'delegate'): Promise<[SubstrateTransactionType, any][]>;
private getTransactionDetailsFromEncoded;
signMessage(message: string, keypair: {
publicKey: string;
privateKey: Buffer;
}): Promise;
verifyMessage(message: string, signature: string, publicKey: string): Promise;
encryptAsymmetric(message: string, publicKey: string): Promise;
decryptAsymmetric(message: string, keypair: {
publicKey: string;
privateKey: Buffer;
}): Promise;
encryptAES(message: string, privateKey: Buffer): Promise;
decryptAES(message: string, privateKey: Buffer): Promise;
getTransactionStatuses(transactionHashes: string[]): Promise;
}