/**
 * Verify raw signature
 *
 * @param {Uint8Array} signature
 * @param {Uint8Array} data
 * @param {Uint8Array} publicKey
 * @returns {boolean}
 * @example
 * ```ts twoslash
 * import { verifyRaw } from 'iso-filecoin/ledger'
 *
 * const signature = new Uint8Array([1, 2, 3])
 * const data = new Uint8Array([4, 5, 6])
 * const publicKey = new Uint8Array([7, 8, 9])
 * const isValid = verifyRaw(signature, data, publicKey)
 * // => true
 * ```
 */
export function verifyRaw(signature: Uint8Array, data: Uint8Array, publicKey: Uint8Array): boolean;
export namespace APDU_CODES {
    let OK: number;
    let BUSY: number;
    let EXECUTION_ERROR: number;
    let WRONG_LENGTH: number;
    let EMPTY_BUFFER: number;
    let OUTPUT_BUFFER_TOO_SMALL: number;
    let DATA_INVALID: number;
    let CONDITIONS_NOT_SATISFIED: number;
    let COMMAND_NOT_ALLOWED: number;
    let BAD_KEY_HANDLE: number;
    let INVALIDP1P2: number;
    let INS_NOT_SUPPORTED: number;
    let CLA_NOT_SUPPORTED: number;
    let UNKNOWN: number;
    let SIGN_VERIFY_ERROR: number;
    let APP_NOT_OPEN: number;
}
export const EIP191_PREFIX: "Filecoin Sign Bytes:\n";
export const IS_HID_SUPPORTED: boolean;
/**
 * Filecoin app error
 */
export class FilecoinAppError extends Error {
    /**
     * @param {number} statusCode The error status code coming from a Transport implementation
     * @param {string} [data] The error message coming from a instruction call
     */
    constructor(statusCode: number, data?: string);
    /** @type {number} */
    statusCode: number;
}
/**
 * Ledger Filecoin app client
 */
export class LedgerFilecoin {
    /**
     *
     * @param {Transport} transport  - Ledger transport
     */
    constructor(transport: Transport);
    transport: import("@ledgerhq/hw-transport/lib-es/Transport.js").default;
    /**
     * Get the version of the Filecoin app
     *
     * @see https://github.com/LedgerHQ/app-filecoin/blob/develop/docs/APDUSPEC.md#get_version
     * @example
     * ```ts twoslash
     * import { LedgerFilecoin } from 'iso-filecoin/ledger'
     * import TransportWebUSB from '@ledgerhq/hw-transport-webusb'
     *
     * const transport = await TransportWebUSB.create()
     * const ledger = new LedgerFilecoin(transport)
     * const version = await ledger.getVersion()
     * // => '1.0.0'
     * ```
     */
    getVersion(): Promise<string>;
    /**
     * Get the secp256k1 address for a given derivation path
     *
     * @see https://github.com/LedgerHQ/app-filecoin/blob/develop/docs/APDUSPEC.md#ins_get_addr_secp256k1
     *
     * @param {string} path - Derivation path
     * @param {boolean} [showOnDevice=false] - Whether to show the address on the device
     * @returns {Promise<import('./types.js').IAccount>}
     */
    getAddress(path: string, showOnDevice?: boolean): Promise<import("./types.js").IAccount>;
    /**
     * Sign a message
     *
     * @param {string} path - Derivation path
     * @param {Uint8Array} message - Message to sign in bytes
     * @param {SignatureType} [type=SECP256K1] - Signature type
     */
    sign(path: string, message: Uint8Array, type?: SignatureType): Promise<Uint8Array<ArrayBufferLike>>;
    /**
     * Sign raw bytes using prefixed message similar to EIP-191
     *
     * @param {string} path - Derivation path
     * @param {Uint8Array} message - Message to sign
     */
    signRaw(path: string, message: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>;
    /**
     * Close the transport
     */
    close(): Promise<void>;
}
export type Transport = import("./types.js").Transport;
export type SignatureType = keyof typeof SIGNATURE_TYPE;
declare namespace SIGNATURE_TYPE {
    let SECP256K1: number;
    let DATA_CAP: number;
    let CLIENT_DEAL: number;
    let RAW_BYTES: number;
}
export {};
//# sourceMappingURL=ledger.d.ts.map