// Nostr backup: the wallet's bearer store, trusted-mint registry and // settings mirrored onto public relays as addressable events (kind 30078, // the NIP-78 app-data range), every payload NIP-44 v2 encrypted to the // backup key's own pubkey - only the seed holder can read them, and the // seed phrase alone (via keys.ts's linking key) re-derives everything. // // Framework-free, and no WebSocket is touched at import time: the default // transport (nostr-tools' SimplePool) is imported lazily on first use, and // tests inject a fake transport instead. // // Split by concern; this façade re-exports everything: // nostr/events.ts - backup-key derivation + the event codec // (build/sign, verify/decrypt), no I/O // nostr/transport.ts - the injectable relay transport (SimplePool by // default, lazily imported) // nostr/sync.ts - publishBackup / fetchBackup / restoreFromNostr // nostr/publisher.ts - the debounced publisher for store change events export { BACKUP_EVENT_KIND, BACKUP_PARTS, BACKUP_D_TAGS, deriveBackupKey, backupPubkey, buildBackupEvent, buildBackupEvents, parseBackupEvent, } from './nostr/events'; export type { NostrEvent, BackupPart, BackupPartPayload, ParsedBackupEvent } from './nostr/events'; export type { BackupTransport, NostrFilter } from './nostr/transport'; export { publishBackup, fetchBackup, restoreFromNostr } from './nostr/sync'; export type { PublishBackupOptions, PublishBackupResult, FetchBackupOptions, NostrRestoreResult, } from './nostr/sync'; export { createBackupPublisher } from './nostr/publisher'; export type { BackupPublisher, BackupPublisherOptions } from './nostr/publisher';