@upbond/sdk
    Preparing search index...

    Type Alias UpbondErrorCode

    UpbondErrorCode:
        | "authorization_error"
        | "invalid_callback"
        | "state_mismatch"
        | "token_request_failed"
        | "invalid_id_token"
        | "config_invalid"
        | "not_signed_in"
        | "session_expired"
        | "wallet_not_configured"
        | "popup_blocked"
        | "popup_closed"
        | "unsupported_browser"
        | "wallet_not_set_up"
        | "recovery_required"
        | "recovery_unavailable"
        | "recovery_incomplete"
        | "passkey_unsupported"
        | "wallet_locked"
        | "invalid_otp"
        | "resend_too_soon"
        | "factor_limit_reached"
        | "factor_not_deletable"
        | "passcode_not_allowed"
        | "invalid_passcode"
        | "wallet_error"
        | "external_wallet_unavailable"

    The frozen set of error codes carried by every UpbondError. Narrow on error.code rather than parsing messages — the code union is the customer contract; messages are advisory and may change.

    Auth leg (raised by the OIDC client in core/auth.ts):

    • authorization_error — the issuer returned an error parameter in the authorization callback (e.g. the user denied consent).
    • invalid_callback — the callback was malformed or arrived without a matching pending login attempt (missing code, or no persisted PKCE state).
    • state_mismatch — the callback state did not match the value stored for this login attempt (CSRF / stale-tab defense).
    • token_request_failed — the token endpoint rejected the exchange or the response was missing id_token/access_token.
    • invalid_id_token — the returned id_token failed binding-claim validation (issuer, audience, expiry, nonce, or subject).

    Client / session lifecycle:

    • config_invalidUpbondConfig failed boundary validation in validateConfig (missing/relative URL, unknown environment, ...).
    • not_signed_in — an operation needing a session was called before sign-in (embedded connect() included: the RP must login() first — D20 A-3), or the session was ended while a refresh was in flight.
    • session_expired — the id_token has expired and no refresh token was available, or the refresh grant was definitively rejected — sign in again.
    • wallet_not_configured — a wallet method was called without a matching wallet config, or a redirect-mode method was called in embedded mode (or vice versa).

    Wallet leg (translated from wallet-core implementation errors at the adapter boundary, original error preserved on cause):

    • popup_blocked — the browser blocked the popup (connect() / loginAndConnect() must be called synchronously from a user gesture). Recoverable: fall back to the redirect login().
    • popup_closed — the user closed the popup before the flow completed (login leg or wallet leg). Treat as cancellation, not failure.
    • unsupported_browser — an in-app browser (LINE, Instagram, Facebook, ...) where popup windows and usually WebAuthn are unavailable, so neither the popup login nor the wallet ceremony can run. Terminal in this browser: guide the user to open the page in an external browser.
    • wallet_not_set_up — a signature was requested before the wallet was onboarded (run setupWallet() or recoverWallet() first).
    • recovery_required — this device holds no usable factor; new-device recovery (recoverWallet()) is needed.
    • recovery_unavailable — recovery cannot proceed: no stored binding, or the recoverian/OTP prompt is not configured.
    • passkey_unsupported — the platform authenticator lacks the required WebAuthn PRF capability (or WebAuthn is absent). Terminal for wallet creation — there is no passcode fallback; guide the user to an external browser. Unlock can still succeed via a previously added passcode sealer.
    • wallet_locked — a Layer-2 operation was attempted on a locked wallet (call unlockWallet() first).
    • invalid_otp — the recoverian rejected the presented one-time code.
    • resend_too_soon — an OTP was requested again before the resend cooldown elapsed (recoverian rate limit).
    • factor_limit_reached — the MPC network refused to register another key factor (per-account cap); no new device can be enrolled and the recovery factor cannot be rotated until unused factors are removed.
    • factor_not_deletableremoveFactor refused the requested factor: it is not a stale device factor (recovery factors and unclassified factors are never deletable), it is this device's own factor, or the MPC engine refused (last remaining factor / the ceremony's active factor).
    • passcode_not_allowed — the client's sealer policy is 'passkey-strict': passcode sealers are disabled, so addPasscodeSealer is refused.
    • invalid_passcode — the entered passcode failed to unseal the device factor vault (authenticated decryption failed). The vault stays locked.
    • wallet_error — catch-all for any other wallet-layer failure (handshake timeout, unexpected internal error).

    External wallets (connectExternal, issue #302):

    • external_wallet_unavailable — no EIP-6963 provider announced for the requested rdns: the wallet extension is not installed (or not responding). Provider-level rejections (e.g. the user declining the connect prompt) surface as Eip1193Error with the standard numeric code instead.