/// <reference types="node" />
import Transport from '@secux/transport';
import { ISignature, IPublicKeyData, IPublicKey, Signature } from './interface';
export declare enum EllipticCurve {
    SECP256K1 = 0,
    ED25519 = 1
}
export { ISignature, IPublicKeyData, IPublicKey, Signature };
declare type SignTrxOptionType = {
    inputId?: number;
    balance?: string;
    address?: string;
    ellipticCurve?: EllipticCurve;
    isToken?: boolean;
    showConfirm?: boolean;
    showMessage?: string;
    transactionType?: number;
};
export declare const toCompressed: (array: Buffer) => Buffer;
export declare class ProtocolHDKey {
    transport: Transport;
    constructor(transport: Transport);
    trxPrepare(path: string, trxHash: Buffer, { inputId, balance, }?: SignTrxOptionType): Promise<void>;
    trxPrepareNew(path: string, trxHex: Buffer, { inputId, isToken }?: SignTrxOptionType): Promise<void>;
    trxPrepareGeneric(path: string, trxHash: Buffer, { inputId, balance, ellipticCurve }?: SignTrxOptionType): Promise<void>;
    trxBigin(amount: string | undefined, outputAddress: string | undefined, showConfirm: boolean | undefined, // false: confirm page, no message
    showMessage: string | undefined): Promise<void>;
    trxSign(inputId: number): Promise<ISignature>;
    trxFinish(): Promise<void>;
    getPublicKey(path: string, isCompressed?: boolean): Promise<IPublicKeyData>;
    getPublicKeyGeneric(path: string, ellipticCurve?: number): Promise<IPublicKey>;
    signTx(paths: string[] | string, trxHex: Buffer[] | Buffer, { balance, address, isToken, showConfirm, showMessage }?: SignTrxOptionType): Promise<Signature | Signature[]>;
    signRawTransaction(paths: Array<string> | string, preparedTransaction: Array<Buffer> | Buffer, { balance, address, ellipticCurve, showConfirm, showMessage }?: SignTrxOptionType): Promise<Signature | Signature[]>;
    signTransaction(paths: Array<string> | string, preparedTransaction: Array<Buffer> | Buffer, { balance, address, ellipticCurve, showConfirm, showMessage, transactionType }?: SignTrxOptionType): Promise<Signature | Signature[]>;
    signGenericTransaction(paths: Array<string> | string, preparedTransaction: Array<Buffer> | Buffer, { balance, address, ellipticCurve, showConfirm, showMessage, transactionType }?: SignTrxOptionType): Promise<Signature | Signature[]>;
}
