DustBackupStateStore
SINGLE owner of the durable dust-backup choice — the tri-state {never-chosen / enabled / opted-out} that was previously two independent pref keys + two StateFlows hand-synced at five call sites inside WalletPanelViewModel. A singleton so the restore gate (a com.midnight.kuira.sdk.walletruntime.DustRestoreGate impl, which outlives any ViewModel) and the panel VM read/write the SAME live state: a gate-committed toggle is instantly visible to the UI, and the wallet's upload-time prefs supplier (com.midnight.kuira.sdk.MidnightWallet.walletBackupPrefsProvider) always reads current truth — no pushed snapshot to go stale.
Invariant (enforced here, not by caller discipline): enabled and optedOut are never both true.
Properties
Functions
The enable flow is starting: clear the opt-out now; commitEnabled lands on success.
Durable toggle ON (enable+sync succeeded, or the restore gate recovered the truth).
Durable opt-out (user disabled, or the restore gate mirrored a restored opt-out).
The blob-borne prefs snapshot the wallet's upload-time supplier reads.