npm.io
2.3.2 • Published 4d ago

@bsv/wallet-toolbox-client

Licence
SEE LICENSE IN license.md
Version
2.3.2
Deps
2
Size
3.3 MB
Vulns
0
Weekly
3.1K

@bsv/wallet-toolbox-client

npm version npm downloads

Browser build of @bsv/wallet-toolbox — the reference BRC-100 wallet implementation. Same wallet, signer, services, and monitor APIs as the full package, with Node-only storage backends (Knex / SQLite / MySQL) excluded so the bundle is small and safe to ship to browsers.

Use this package in:

  • Web apps that talk to a remote StorageServer
  • Browser extensions
  • Electron renderers

For Node servers, use @bsv/wallet-toolbox. For React Native / mobile, use @bsv/wallet-toolbox-mobile.

Install

npm install @bsv/wallet-toolbox-client

Peer dependency: @bsv/sdk.

Quick start

import {
  Wallet,
  WalletSigner,
  WalletStorageManager,
  StorageClient,
  Services,
} from '@bsv/wallet-toolbox-client'
import { KeyDeriver, PrivateKey } from '@bsv/sdk'

const chain = 'main'
const keyDeriver = new KeyDeriver(new PrivateKey(privateKeyHex, 'hex'))

// Remote storage over HTTP — no SQLite/MySQL in the browser bundle.
const storageManager = new WalletStorageManager(keyDeriver.identityKey)
await storageManager.addWalletStorageProvider(
  new StorageClient(keyDeriver, 'https://storage.example.com')
)
await storageManager.makeAvailable()

const services = new Services(chain)
const signer = new WalletSigner(chain, keyDeriver, storageManager)
const wallet = new Wallet(signer, services)

// Use the BRC-100 interface as usual.
const { tx } = await wallet.createAction({
  description: 'pay alice',
  outputs: [{ satoshis: 1000, lockingScript: aliceP2PKH }],
})

Use cases

BRC-100 wallet inside a browser extension

Talk to a remote StorageServer over HTTP, sign locally with a key the user controls.

Authenticated app with WalletClient
import { WalletClient } from '@bsv/sdk'

const wallet = new WalletClient() // delegates to the user's installed wallet
// ...or build your own with the toolbox classes above
Run an in-app embedded wallet against IndexedDB
import { StorageIdb } from '@bsv/wallet-toolbox-client'
await storageManager.addWalletStorageProvider(new StorageIdb(...))

What's excluded vs @bsv/wallet-toolbox

Excluded Why
StorageKnex (SQLite, MySQL) Pulls native bindings; not browser-safe
Node-only filesystem helpers Not available in browsers

Everything else — Wallet, WalletSigner, WalletStorageManager, StorageClient, StorageIdb, Services, Monitor, WalletPermissionsManager, WalletSettingsManager, key management, MockChain — is identical to the full package.

See the @bsv/wallet-toolbox README for full documentation.

License

Open BSV License — see LICENSE.txt.

Keywords