import { defineBoot } from '#q-app';
import { useWalletStore } from '@/stores/wallet';
import { useNostrBackupStore } from '@/stores/nostrBackup';
import { useNwcStore } from '@/stores/nwc';

// Wallet lifecycle bootstrap: reflects whatever is on this device into the
// wallet store at app start - a plaintext-stored key unlocks straight away,
// a password-encrypted one lands on 'locked' for the unlock screen, and no
// key at all lands on 'none' for onboarding.
export default defineBoot(async () => {
  const wallet = useWalletStore();
  await wallet.init();
  // instantiating the store arms its watchers: while the wallet is unlocked
  // and nostr backup is enabled, store changes schedule debounced publishes
  useNostrBackupStore();
  // same arming for NWC: while enabled and unlocked, the service answers
  // client requests; on lock it stops and drops the key-material closure
  useNwcStore();
});
