Skip to content

Wallet API overview ​

WalletDirector is the public entry point for configuring the platform transport and creating wallets. A FedimintWallet is the wallet operations facade returned by WalletDirector.createWallet(); application code should not construct it directly.

INFO

See Getting Started for the complete browser setup.

Creating a wallet ​

ts
import { 
WalletDirector
} from '@fedimint/core'
import {
WasmWorkerTransport
} from '@fedimint/transport-web'
const
director
= new
WalletDirector
(new
WasmWorkerTransport
())
const
wallet
= await
director
.
createWallet
()

The returned wallet is not open yet. Use one of the following lifecycle paths:

ts
import { 
WalletDirector
} from '@fedimint/core'
import {
WasmWorkerTransport
} from '@fedimint/transport-web'
const
director
= new
WalletDirector
(new
WasmWorkerTransport
())
const
wallet
= await
director
.
createWallet
()
// Open client state that already exists. await
wallet
.
open
()
// Or, on an unopened wallet, join a federation. // await wallet.joinFederation('fed11...')

See Creating a FedimintWallet for the creation and initialization contract.

Responsibilities ​

WalletDirector ​

The director owns the TransportClient and its initialization. It is also the home for operations that do not require an open wallet, including:

  • configuring logging;
  • previewing a federation;
  • parsing invite codes, Lightning invoices, and OOB notes;
  • generating, reading, and setting the mnemonic;
  • creating FedimintWallet instances.

FedimintWallet ​

The wallet represents an individual client lifecycle. It provides open(), joinFederation(), isOpen(), and access to these services:

  • balance: balance queries and subscriptions;
  • mint: ecash redemption and spending;
  • lightning: Lightning invoice creation and payment;
  • federation: federation configuration and operation history;
  • recovery: recovery status and progress;
  • wallet: on-chain wallet operations.

When cleanup() is called, discard that wallet instance. Do not construct a replacement with new FedimintWallet(); obtain one through a WalletDirector.

WalletDirector owns the TransportClient and creates FedimintWallet instances, which expose wallet services