iso-filecoin
Version:
Isomorphic filecoin abstractions for RPC, signatures, address, token and wallet
125 lines • 4.11 kB
TypeScript
/**
* 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>>;
/**
* Sign a message using FRC-102
*
* @param {string} path - Derivation path
* @param {Uint8Array} message - Message to sign
*/
personalSign(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;
let PERSONAL_MESSAGE: number;
}
export {};
//# sourceMappingURL=ledger.d.ts.map