@upbond/sdk
    Preparing search index...

    Interface RecoveryStatus

    Read-only view of the account's recovery setup (WO 2026/003995). enrollment is decided ONLY by querying the recovery-service blob store and the recoverian binding — never by local/optimistic client state (issue #165). contact is the recoverian's OTP delivery binding. The contact is pre-masked by the recoverian — this surface never carries the plain address, so Layer 1 may read it.

    interface RecoveryStatus {
        contact:
            | { channel: "email"
            | "sms"; current: boolean; masked: string }
            | null;
        enrolled: boolean;
        enrollment: RecoveryEnrollment;
    }
    Index
    contact: { channel: "email" | "sms"; current: boolean; masked: string } | null

    Where the recoverian sends its OTP, masked server-side; null when no contact is bound (or recovery is not configured at all). current is true when the bound contact matches the current token's claims; false means a stale binding the user should update while they still control the old contact (rebinding requires an OTP sent there).

    enrolled: boolean

    enrollment === 'enrolled' — kept for consumers of the boolean shape. False for 'partial'/'unknown' (fail-closed: never claim a recovery path that is unverified or incomplete).

    enrollment: RecoveryEnrollment

    Server-verified enrollment state.