SigilStatus

sealed class SigilStatus

UI state for SigilStatusPanel / SigilPanelViewModel.

Mirrors the wallet panel's com.midnight.kuira.dapp.wallet.WalletStatus shape. A pure identity state — no SDK / network / address coupling. Hosts that want to bridge sigil identity with their wallet SDK (e.g. signing an access-key authorization) wire that themselves; this state machine only covers what the panel can fully own (passkey creation + DID derivation + cloud backup / restore).

Variants:

  • None: no passkey + DID yet. Pill renders a "create identity" cue.

  • Creating: passkey ceremony or DID derivation in flight. Spinner.

  • Forged: passkey exists; DID + root key derived. Pill shows the truncated DID (or, when wired up, a .night Midnames domain).

  • Error: a flow failed. Pill renders the error glyph.

Inheritors

Types

Link copied to clipboard

No local sigil yet, but a Block Store cloud backup was found.

Link copied to clipboard
data class Creating(val stage: String) : SigilStatus

Async flow in progress (passkey create, DID derive, backup, restore).

Link copied to clipboard
data class Error(val message: String) : SigilStatus

Flow failed (passkey rejected, RP id mismatch, network error, etc.).

Link copied to clipboard
data class Forged(val did: String, val credentialId: String, val publicKeyHex: String) : SigilStatus

Identity exists.

Link copied to clipboard

Brief window between activity launch and the first stable status — loadPersistedSigil() is sync but Block Store probe is async. UI renders a spinner; sibling wallet panel waits before auto-bootstrapping so a probe-detected backup doesn't get blown over by a fresh wallet creation.

Link copied to clipboard
data object None : SigilStatus

No passkey + DID yet, and no cloud backup detected.