Skip to content

Latest commit

 

History

History
69 lines (55 loc) · 1.77 KB

README-npm.md

File metadata and controls

69 lines (55 loc) · 1.77 KB

BitBox02 TypeScript/WASM library

A library to interact with the BitBox02 hardware wallet.

Check out the sandbox project that shows how to use this library.

Example:

import * as bitbox from 'bitbox-api';

// Run this in e.g. a button onClick event handler.
async function example() {
  try {
    const onClose = () => {
      // Handle disconnect.
    };
    const unpaired = await bitbox.bitbox02ConnectAuto(onClose);
    const pairing = await unpaired.unlockAndPair();
    const pairingCode = pairing.getPairingCode();
    if (pairingCode !== undefined) {
      // Display pairingCode to user
    }
    const bb02 = await pairing.waitConfirm();
    console.log('Product', bb02.product());
    console.log('Supports Ethereum functionality (Multi edition)?', bb02.ethSupported());
    const deviceInfos = await bb02.deviceInfo();
    console.log('Device infos:', deviceInfos);
  } catch (err) {
    const typedErr = bitbox.ensureError(err);
    console.log(typedErr);
  }
}

The package's bitbox_api.d.ts file contain a documentation of all types and functions.

WebPack

In WebPack projects, enable the asyncWebAssembly and topLeveLAwait features in your webpack.config.js (see https://webpack.js.org/configuration/experiments/):

module.exports = {
  //...
  experiments: {
    asyncWebAssembly: true,
    topLevelAwait: true,
  },
};

Vite:

Here is a sample vite.config.ts:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react-swc'
import wasm from "vite-plugin-wasm";
import topLevelAwait from "vite-plugin-top-level-await";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react(), wasm(), topLevelAwait()],
})

You need to install the wasm and topLevelAwait plugins to add them to the project.