/// <reference types="node" />
/// <reference types="node" />
import Transport from "@ledgerhq/hw-transport";
import { PaymentV2, SecurityExchangeV1, StakeValidatorV1, TokenBurnV1, TransferValidatorStakeV1, UnstakeValidatorV1 } from "@helium/transactions";
/**
 * Helium API
 *
 * @param transport a transport for sending commands to a device
 * @param scrambleKey a scramble key
 *
 * @example
 * import Helium from "@ledgerhq/hw-app-helium";
 * const helium = new Helium(transport);
 */
export default class Helium {
    private transport;
    constructor(transport: Transport, scrambleKey?: string);
    /**
     * Get application version.
     *
     * @returns version object
     *
     * @example
     * helium.getVersion().then(r => r.version)
     */
    getVersion(): Promise<{
        version: string;
    }>;
    /**
     * Get Helium address (public key) for a BIP32 path.
     *
     * @param path a BIP32 path
     * @param display flag to show display
     * @param accountIndex index of account address
     * @returns an object with the address field
     *
     * @example
     * helium.getAddress("44'/904'/0'/0'/0'").then(r => r.address)
     */
    getAddress(path: string, display?: boolean, accountIndex?: number): Promise<{
        index: number;
        address: string;
        publicKey: string;
    }>;
    /**
     * Sign a Helium `PaymentV2` transaction.
     *
     * @param txn a PaymentV2 transaction
     * @param accountIndex index of account address
     *
     * @returns an object with the signed transaction and signature
     *
     * @example
     * import { PaymentV2 } from '@helium/transactions'
     * const txn = new PaymentV2({ ... })
     * helium.signTransaction(txn).then(r => r.signature)
     */
    signPaymentV2(txn: PaymentV2, accountIndex?: number): Promise<{
        signature: Buffer;
        txn: PaymentV2;
    }>;
    /**
     * Sign a Helium `TokenBurnV1` transaction.
     *
     * @param txn a TokenBurnV1 transaction
     * @param accountIndex index of account address
     *
     * @returns an object with the signed transaction and signature
     *
     * @example
     * import { TokenBurnV1 } from '@helium/transactions'
     * const txn = new TokenBurnV1({ ... })
     * helium.signTransaction(txn).then(r => r.signature)
     */
    signTokenBurnV1(txn: TokenBurnV1, accountIndex?: number): Promise<{
        signature: Buffer;
        txn: TokenBurnV1;
    }>;
    /**
     * Sign a Helium `StakeValidatorV1` transaction.
     *
     * @param txn a StakeValidatorV1 transaction
     * @param accountIndex index of account address
     *
     * @returns an object with the signed transaction and signature
     *
     * @example
     * import { StakeValidatorV1 } from '@helium/transactions'
     * const txn = new StakeValidatorV1({ ... })
     * helium.signTransaction(txn).then(r => r.signature)
     */
    signStakeValidatorV1(txn: StakeValidatorV1, accountIndex?: number): Promise<{
        signature: Buffer;
        txn: StakeValidatorV1;
    }>;
    /**
     * Sign a Helium `UnstakeValidatorV1` transaction.
     *
     * @param txn a UnstakeValidatorV1 transaction
     * @param accountIndex index of account address
     *
     * @returns an object with the signed transaction and signature
     *
     * @example
     * import { UnstakeValidatorV1 } from '@helium/transactions'
     * const txn = new UnstakeValidatorV1({ ... })
     * helium.signTransaction(txn).then(r => r.signature)
     */
    signUnstakeValidatorV1(txn: UnstakeValidatorV1, accountIndex?: number): Promise<{
        signature: Buffer;
        txn: UnstakeValidatorV1;
    }>;
    /**
     * Sign a Helium `TransferValidatorStakeV1` transaction.
     *
     * @param txn a TransferValidatorStakeV1 transaction
     * @param ownerType whether to sign as the old or new owner in the transfer
     * @param accountIndex index of account address
     *
     * @returns an object with the signed transaction and signature
     *
     * @example
     * import { TransferValidatorStakeV1 } from '@helium/transactions'
     * const txn = new TransferValidatorStakeV1({ ... }, 'old')
     * helium.signTransaction(txn).then(r => r.signature)
     */
    signTransferValidatorStakeV1(txn: TransferValidatorStakeV1, ownerType: "old" | "new", accountIndex?: number): Promise<{
        signature: Buffer;
        txn: TransferValidatorStakeV1;
    }>;
    /**
     * Sign a Helium `SecurityExchangeV1` transaction.
     *
     * @param txn a SecurityExchangeV1 transaction
     * @param accountIndex index of account address
     *
     * @returns an object with the signed transaction and signature
     *
     * @example
     * import { SecurityExchangeV1 } from '@helium/transactions'
     * const txn = new SecurityExchangeV1({ ... })
     * helium.signTransaction(txn).then(r => r.signature)
     */
    signSecurityExchangeV1(txn: SecurityExchangeV1, accountIndex?: number): Promise<{
        signature: Buffer;
        txn: SecurityExchangeV1;
    }>;
    private sendToDevice;
    private throwOnFailure;
}
//# sourceMappingURL=Helium.d.ts.map