import AppEth from '@ledgerhq/hw-app-eth';
import Transport from '@ledgerhq/hw-transport';
import { Address } from '@xchainjs/xchain-util';
import { SignApproveParams, SignTransferParams } from '../types';
import { Signer, SignerParams } from './signer';
/**
 * Ledger signer parameters
 */
export type LedgerSignerParams = SignerParams & {
    transport: Transport;
};
/**
 * Signer which operates with an EVM account through the Ledger device
 */
export declare class LedgerSigner extends Signer {
    private app;
    constructor(params: LedgerSignerParams);
    /**
     * Get ethereum ledger app
     * @returns {AppEth} Ethereum ledger app
     */
    getApp(): AppEth;
    /**
     * Purge signer
     */
    purge(): void;
    /**
     * Get the current address.
     * @param {number} index The index of the address. Default 0
     * @param {boolean} verify True to check the address against the Ledger device, otherwise false
     * @returns {Address} The address corresponding to the index provided
     * @returns
     */
    getAddressAsync(index?: number, verify?: boolean): Promise<Address>;
    /**
     * Sign an EVM transaction with Ledger
     *
     * @param {SignTransferParams} params Sign transfer params
     * @param {string} SignTransferParams.sender Fee option (optional)
     * @param {Transaction} SignTransferParams.tx Fee option (optional)
     * @returns {string} The raw signed transaction.
     */
    signTransfer({ walletIndex, tx }: SignTransferParams): Promise<string>;
    /**
     * Sign an EVM approve transaction with Ledger
     *
     * @param {SignTransferParams} params Sign transfer params
     * @param {string} SignTransferParams.sender The sender address
     * @param {ethers.Transaction} SignTransferParams.tx Approve transaction to sign
     * @returns {string} The raw signed transaction.
     */
    signApprove({ walletIndex, tx }: SignApproveParams): Promise<string>;
}
