# BitBox02 TypeScript/WASM library A library to interact with the BitBox02 hardware wallet. Check out the [sandbox project](./sandbox) that shows how to use this library. Example: ```typescript 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.