import { CryptoClient, IAirGapTransaction } from '..';
import { IAirGapAddressResult, IProtocolAddressCursor } from '../interfaces/IAirGapAddress';
import { SignedTransaction } from '../types/signed-transaction';
import { UnsignedTransaction } from '../types/unsigned-transaction';
import { ProtocolOptions } from '../utils/ProtocolOptions';
import { ProtocolSymbols } from '../utils/ProtocolSymbols';
export interface FeeDefaults {
    low: string;
    medium: string;
    high: string;
}
export interface ICoinBaseProtocol {
    /**
     * @deprecated Use `getSymbol()` instead.
     */
    symbol: string;
    /**
     * @deprecated Use `getName()` instead.
     */
    name: string;
    /**
     * @deprecated Use `getMarketSymbol()` instead.
     */
    marketSymbol: string;
    /**
     * @deprecated Use `getFeeSymbol()` instead.
     */
    feeSymbol: string;
    /**
     * @deprecated Use `getFeeDefaults()` instead.
     */
    feeDefaults: FeeDefaults;
    /**
     * @deprecated Use `getDecimals()` instead.
     */
    decimals: number;
    /**
     * @deprecated Use `getFeeDecimals()` instead.
     */
    feeDecimals: number;
    /**
     * @deprecated Use `getIdentifier()` instead.
     */
    identifier: ProtocolSymbols;
    /**
     * @deprecated Use `getUnits()` instead.
     */
    units: {
        unitSymbol: string;
        factor: string;
    }[];
    /**
     * @deprecated Use `getSupportsHD()` instead.
     */
    supportsHD: boolean;
    /**
     * @deprecated Use `getStandardDerivationPath()` instead.
     */
    standardDerivationPath: string;
    /**
     * @deprecated Use `getAddressIsCaseSensitive()` instead.
     */
    addressIsCaseSensitive: boolean;
    /**
     * @deprecated Use `getAddressValidationPattern()` instead.
     */
    addressValidationPattern: string;
    /**
     * @deprecated Use `getAddressPlaceholder()` instead.
     */
    addressPlaceholder: string;
    /**
     * @deprecated Use `getOptions()` instead.
     */
    options: ProtocolOptions;
    cryptoClient: CryptoClient;
    getSymbol(): Promise<string>;
    getName(): Promise<string>;
    getMarketSymbol(): Promise<string>;
    getAssetSymbol(): Promise<string | undefined>;
    getFeeSymbol(): Promise<string>;
    getFeeDefaults(): Promise<FeeDefaults>;
    getDecimals(): Promise<number>;
    getFeeDecimals(): Promise<number>;
    getIdentifier(): Promise<ProtocolSymbols>;
    getUnits(): Promise<{
        unitSymbol: string;
        factor: string;
    }[]>;
    getSupportsHD(): Promise<boolean>;
    getStandardDerivationPath(): Promise<string>;
    getAddressIsCaseSensitive(): Promise<boolean>;
    getAddressValidationPattern(): Promise<string>;
    getAddressPlaceholder(): Promise<string>;
    getOptions(): Promise<ProtocolOptions>;
    getAddressFromPublicKey(publicKey: string, cursor?: IProtocolAddressCursor): Promise<IAirGapAddressResult>;
    getAddressesFromPublicKey(publicKey: string, cursor?: IProtocolAddressCursor): Promise<IAirGapAddressResult[]>;
    getAddressFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressDerivationIndex: number): Promise<IAirGapAddressResult>;
    getAddressesFromExtendedPublicKey(extendedPublicKey: string, visibilityDerivationIndex: number, addressCount: number, offset: number): Promise<IAirGapAddressResult[]>;
    getTransactionDetails(transaction: UnsignedTransaction, data?: {
        [key: string]: unknown;
    }): Promise<IAirGapTransaction[]>;
    getTransactionDetailsFromSigned(transaction: SignedTransaction, data?: {
        [key: string]: unknown;
    }): Promise<IAirGapTransaction[]>;
    verifyMessage(message: string, signature: string, publicKey: string): Promise<boolean>;
    encryptAsymmetric(payload: string, publicKey: string): Promise<string>;
}
