@kingdomchain/wallet-client 0.2.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -240,12 +240,35 @@ declare function restoreWalletConnectSession(client: SignClient, chainId: string
240
240
  declare const EMBEDDED_WALLET_VAULT_VERSION = 1;
241
241
  declare const EMBEDDED_WALLET_KDF_PRF: "webauthn-prf";
242
242
  declare const EMBEDDED_WALLET_KDF_PBKDF2: "pbkdf2-passkey";
243
- type EmbeddedWalletKdf = typeof EMBEDDED_WALLET_KDF_PRF | typeof EMBEDDED_WALLET_KDF_PBKDF2;
243
+ declare const EMBEDDED_WALLET_KDF_PIN: "pbkdf2-pin";
244
+ type EmbeddedWalletKdf = typeof EMBEDDED_WALLET_KDF_PRF | typeof EMBEDDED_WALLET_KDF_PBKDF2 | typeof EMBEDDED_WALLET_KDF_PIN;
245
+ /** How the wallet key relates to its recovery phrase. */
246
+ declare const EMBEDDED_WALLET_KEY_HD_DERIVED: "hd-derived";
247
+ declare const EMBEDDED_WALLET_KEY_DIRECT_ENTROPY: "direct-entropy";
248
+ type EmbeddedWalletKeyType = typeof EMBEDDED_WALLET_KEY_HD_DERIVED | typeof EMBEDDED_WALLET_KEY_DIRECT_ENTROPY;
244
249
  /** Plaintext wallet payload — never persisted unencrypted. */
245
250
  interface EmbeddedWalletPlaintext {
246
251
  privateKey: Uint8Array;
247
252
  hdPath: string;
248
253
  createdAt: string;
254
+ /** Omitted in pre-phase-3 vaults; treated as direct-entropy when absent. */
255
+ keyType?: EmbeddedWalletKeyType;
256
+ /** Stored for hd-derived wallets so the phrase can be revealed later. */
257
+ mnemonic?: string;
258
+ }
259
+ /** Warnings shown before revealing a recovery phrase. */
260
+ interface EmbeddedWalletRecoveryPhraseWarning {
261
+ id: "general" | "direct-entropy-portability";
262
+ title: string;
263
+ body: string;
264
+ }
265
+ declare const EMBEDDED_WALLET_RECOVERY_PHRASE_GENERAL_WARNING: EmbeddedWalletRecoveryPhraseWarning;
266
+ declare const EMBEDDED_WALLET_RECOVERY_PHRASE_DIRECT_ENTROPY_WARNING: EmbeddedWalletRecoveryPhraseWarning;
267
+ interface EmbeddedWalletRecoveryPhraseReveal {
268
+ mnemonic: string;
269
+ keyType: EmbeddedWalletKeyType;
270
+ address: string;
271
+ warnings: EmbeddedWalletRecoveryPhraseWarning[];
249
272
  }
250
273
  /** Encrypted vault stored in IndexedDB and exported backup files. */
251
274
  interface EmbeddedWalletVaultV1 {
@@ -278,16 +301,30 @@ declare class EmbeddedWalletBackupRequiredError extends Error {
278
301
  declare class EmbeddedWalletVaultError extends Error {
279
302
  constructor(message: string, cause?: unknown);
280
303
  }
304
+ type PasscodeStrengthLabel = "weak" | "fair" | "good" | "strong";
305
+ type PasscodeBlockReason = "denylist" | "too_weak" | "numeric_short";
306
+ /** Thrown when too many failed passcode unlock attempts trigger a timed lockout. */
307
+ declare class EmbeddedWalletLockoutError extends Error {
308
+ readonly retryAfterMs: number;
309
+ constructor(retryAfterMs: number);
310
+ }
311
+ /** Thrown when a passcode is too weak or on the common-password denylist. */
312
+ declare class EmbeddedWalletWeakPasscodeError extends Error {
313
+ readonly reason: PasscodeBlockReason;
314
+ constructor(reason: PasscodeBlockReason);
315
+ }
281
316
 
282
317
  interface EncryptWalletOptions {
283
318
  kdf: EmbeddedWalletKdf;
284
319
  credentialId: Uint8Array;
285
320
  publicAddress: string;
286
321
  kek: Uint8Array;
287
- /** Required when kdf=pbkdf2-passkey */
322
+ /** Required when kdf=pbkdf2-passkey or kdf=pbkdf2-pin */
288
323
  kdfSalt?: Uint8Array;
289
324
  /** Required when kdf=webauthn-prf */
290
325
  prfSalt?: Uint8Array;
326
+ /** Override PBKDF2 iterations (defaults vary by kdf type). */
327
+ kdfIterations?: number;
291
328
  backupAcknowledged?: boolean;
292
329
  }
293
330
  declare function deriveKekFromPrf(prfOutput: Uint8Array): Promise<Uint8Array>;
@@ -365,11 +402,105 @@ declare function decodeCredentialId(encoded: string): Uint8Array;
365
402
  declare function embeddedPlaintextToSigner(plaintext: EmbeddedWalletPlaintext, prefix?: string): Promise<DirectSecp256k1Wallet>;
366
403
  declare function defaultEmbeddedHdPath(): string;
367
404
 
405
+ interface PasscodeLockoutRecord {
406
+ failedAttempts: number;
407
+ lockoutTier: number;
408
+ lockedUntil: string | null;
409
+ }
368
410
  declare function saveVaultToIndexedDb(vault: EmbeddedWalletVaultV1): Promise<void>;
369
411
  declare function loadVaultFromIndexedDb(): Promise<EmbeddedWalletVaultV1 | null>;
370
412
  declare function clearVaultFromIndexedDb(): Promise<void>;
413
+ declare function loadPasscodeLockoutRecord(publicAddress: string): Promise<PasscodeLockoutRecord | null>;
414
+ declare function savePasscodeLockoutRecord(publicAddress: string, record: PasscodeLockoutRecord): Promise<void>;
415
+ declare function clearPasscodeLockoutRecord(publicAddress: string): Promise<void>;
416
+
417
+ /** Consecutive wrong passcodes before lockout triggers. */
418
+ declare const PASSCODE_LOCKOUT_FAILURE_THRESHOLD = 5;
419
+ /** First lockout duration (milliseconds). */
420
+ declare const PASSCODE_LOCKOUT_INITIAL_MS = 30000;
421
+ /** Maximum lockout duration (15 minutes). */
422
+ declare const PASSCODE_LOCKOUT_MAX_MS = 900000;
423
+ /** Throws when the vault is temporarily locked after too many failed unlock attempts. */
424
+ declare function assertPasscodeUnlockAllowed(publicAddress: string): Promise<void>;
425
+ /** Record a failed passcode unlock attempt; triggers lockout at threshold. */
426
+ declare function recordPasscodeUnlockFailure(publicAddress: string): Promise<void>;
427
+ /** Clear lockout state after a successful passcode unlock. */
428
+ declare function recordPasscodeUnlockSuccess(publicAddress: string): Promise<void>;
429
+ declare function getPasscodeLockoutState(publicAddress: string): Promise<PasscodeLockoutRecord & {
430
+ retryAfterMs: number;
431
+ }>;
432
+ /** @internal Test helper — reset lockout without clearing vault. */
433
+ declare function clearPasscodeLockoutForTests(publicAddress: string): Promise<void>;
434
+
435
+ interface PasscodeStrengthResult {
436
+ score: 0 | 1 | 2 | 3 | 4;
437
+ label: PasscodeStrengthLabel;
438
+ blocked: boolean;
439
+ blockReason?: "denylist" | "too_weak" | "numeric_short";
440
+ }
441
+ declare function hasMixedCharacterClasses(passcode: string): boolean;
442
+ /** Score passcode strength for creation UI (denylist + zxcvbn). */
443
+ declare function evaluatePasscodeStrength(passcode: string): PasscodeStrengthResult;
444
+ /** Hard reject weak or common passcodes at wallet creation / recovery. */
445
+ declare function assertPasscodeAllowedForCreation(passcode: string): void;
446
+
447
+ /** Minimum passcode length — alphanumeric passcode, not a 4–6 digit PIN. */
448
+ declare const EMBEDDED_WALLET_PASSCODE_MIN_LENGTH = 8;
449
+ /** Maximum passcode length (DoS guard for PBKDF2 input). */
450
+ declare const EMBEDDED_WALLET_PASSCODE_MAX_LENGTH = 128;
451
+ /**
452
+ * OWASP-recommended PBKDF2-SHA256 iteration count (2023 guidance).
453
+ * Uses native Web Crypto — no WASM bundle required.
454
+ */
455
+ declare const EMBEDDED_WALLET_PIN_PBKDF2_ITERATIONS = 600000;
456
+ /** Legacy passkey PBKDF2 fallback iteration count (pre-PIN vaults). */
457
+ declare const EMBEDDED_WALLET_PASSKEY_PBKDF2_ITERATIONS = 310000;
458
+ declare function normalizePasscode(passcode: string): string;
459
+ /** Validate citizen-chosen passcode before KDF. */
460
+ declare function assertValidPasscode(passcode: string): void;
461
+ declare function deriveKekFromPasscode(passcode: string, salt: Uint8Array, iterations?: number): Promise<Uint8Array>;
462
+
463
+ /** Normalize user input: trim, lowercase, collapse whitespace. */
464
+ declare function normalizeRecoveryMnemonic(mnemonic: string): string;
465
+ declare function assertValidRecoveryMnemonic(mnemonic: string): void;
466
+ declare function resolvePlaintextKeyType(plaintext: EmbeddedWalletPlaintext): EmbeddedWalletKeyType;
467
+ /** Encode a legacy raw 32-byte key as a 24-word BIP-39 mnemonic (entropy encoding, no HD). */
468
+ declare function encodeDirectEntropyMnemonic(privateKey: Uint8Array): string;
469
+ /** Decode a direct-entropy mnemonic back to the original 32-byte key. */
470
+ declare function decodeDirectEntropyMnemonic(mnemonic: string): Uint8Array;
471
+ declare function derivePrivateKeyFromHdMnemonic(mnemonic: string, hdPath?: string): Promise<Uint8Array>;
472
+ declare function addressFromPrivateKey(privateKey: Uint8Array, prefix?: string): Promise<string>;
473
+ declare function addressFromHdMnemonic(mnemonic: string, hdPath?: string, prefix?: string): Promise<string>;
474
+ declare function createHdDerivedPlaintext(createdAt: string, hdPath?: string): Promise<EmbeddedWalletPlaintext>;
475
+ declare function plaintextFromRecoveryMnemonic(mnemonic: string, keyType: EmbeddedWalletKeyType, createdAt: string, hdPath?: string): Promise<EmbeddedWalletPlaintext>;
476
+ /** Infer key type by matching an expected on-chain address, or default to hd-derived. */
477
+ declare function detectRecoveryMnemonicKeyType(mnemonic: string, expectedAddress: string, hdPath?: string, prefix?: string): Promise<EmbeddedWalletKeyType>;
478
+ declare function recoveryMnemonicAddress(mnemonic: string, keyType: EmbeddedWalletKeyType, hdPath?: string, prefix?: string): Promise<string>;
479
+ /** Build the recovery phrase for an unlocked plaintext payload. */
480
+ declare function recoveryMnemonicFromPlaintext(plaintext: EmbeddedWalletPlaintext): string;
371
481
 
372
482
  interface CreateEmbeddedWalletOptions {
483
+ passcode: string;
484
+ }
485
+ interface UnlockEmbeddedWalletOptions {
486
+ passcode?: string;
487
+ }
488
+ interface RevealEmbeddedRecoveryPhraseOptions {
489
+ passcode?: string;
490
+ }
491
+ interface RecoverEmbeddedWalletOptions {
492
+ passcode: string;
493
+ mnemonic: string;
494
+ /** When omitted, inferred from expectedAddress or defaults to hd-derived. */
495
+ keyType?: EmbeddedWalletKeyType;
496
+ /** Used to auto-detect legacy direct-entropy vs standard HD phrases. */
497
+ expectedAddress?: string;
498
+ hdPath?: string;
499
+ /** When true, replaces an existing vault on this device (e.g. after device loss). */
500
+ replaceExisting?: boolean;
501
+ }
502
+ interface EnableEmbeddedPasskeyUnlockOptions {
503
+ passcode: string;
373
504
  userId: Uint8Array;
374
505
  userName: string;
375
506
  displayName: string;
@@ -380,15 +511,40 @@ interface EmbeddedWalletSession {
380
511
  vault: EmbeddedWalletVaultV1;
381
512
  signer: OfflineDirectSigner;
382
513
  }
514
+ declare function vaultUsesPasskeyUnlock(vault: EmbeddedWalletVaultV1): boolean;
515
+ declare function vaultUsesPasscodeUnlock(vault: EmbeddedWalletVaultV1): boolean;
383
516
  /** Returns true if an encrypted vault exists in IndexedDB. */
384
517
  declare function hasEmbeddedWallet(): Promise<boolean>;
385
- /** Create passkey + encrypted vault; does not unlock signer until backup is acknowledged. */
518
+ /** Create passcode-protected encrypted vault; does not unlock signer until backup is acknowledged. */
386
519
  declare function createEmbeddedWallet(options: CreateEmbeddedWalletOptions): Promise<{
387
520
  address: string;
388
521
  vault: EmbeddedWalletVaultV1;
389
522
  }>;
390
- /** Unlock existing vault with passkey; requires backup acknowledged for signing. */
391
- declare function unlockEmbeddedWallet(): Promise<EmbeddedWalletSession>;
523
+ /**
524
+ * Re-authenticate and return the recovery phrase plus UI warnings.
525
+ * Call only after showing {@link EMBEDDED_WALLET_RECOVERY_PHRASE_GENERAL_WARNING} (and the
526
+ * direct-entropy portability warning when applicable).
527
+ */
528
+ declare function revealEmbeddedRecoveryPhrase(options?: RevealEmbeddedRecoveryPhraseOptions): Promise<EmbeddedWalletRecoveryPhraseReveal>;
529
+ /**
530
+ * Restore an embedded wallet on a new device from a recovery phrase.
531
+ * Sets a new passcode and stores an encrypted vault in IndexedDB.
532
+ */
533
+ declare function recoverEmbeddedWalletFromMnemonic(options: RecoverEmbeddedWalletOptions): Promise<{
534
+ address: string;
535
+ vault: EmbeddedWalletVaultV1;
536
+ keyType: EmbeddedWalletKeyType;
537
+ }>;
538
+ /**
539
+ * Opt-in upgrade: re-wrap an existing passcode vault with passkey unlock.
540
+ * Does not change the underlying private key or address.
541
+ */
542
+ declare function enableEmbeddedPasskeyUnlock(options: EnableEmbeddedPasskeyUnlockOptions): Promise<{
543
+ address: string;
544
+ vault: EmbeddedWalletVaultV1;
545
+ }>;
546
+ /** Unlock existing vault with passcode (default) or passkey (opt-in upgrade path). */
547
+ declare function unlockEmbeddedWallet(options?: UnlockEmbeddedWalletOptions): Promise<EmbeddedWalletSession>;
392
548
  /** Clear in-memory signer. */
393
549
  declare function lockEmbeddedWallet(): void;
394
550
  declare function getEmbeddedWalletSession(): EmbeddedWalletSession | null;
@@ -397,7 +553,7 @@ declare function getEmbeddedOfflineSigner(): OfflineDirectSigner;
397
553
  /** Mark backup downloaded/acknowledged and persist. Returns backup file payload. */
398
554
  declare function acknowledgeEmbeddedBackup(): Promise<EmbeddedWalletBackupFileV1>;
399
555
  declare function downloadEmbeddedBackupFile(backup: EmbeddedWalletBackupFileV1, filename?: string): void;
400
- /** Restore vault from user-held backup file (still requires passkey to decrypt). */
556
+ /** Restore vault from user-held backup file (requires passcode or passkey to decrypt). */
401
557
  declare function importEmbeddedBackup(json: string): Promise<EmbeddedWalletVaultV1>;
402
558
  declare function clearEmbeddedWallet(): Promise<void>;
403
559
 
@@ -443,4 +599,4 @@ declare function signCitizenshipAttestation(params: SubmitApplicationParams): Pr
443
599
  input: AttestationPayloadInput;
444
600
  }>;
445
601
 
446
- export { ATTESTATION_TYPE_CITIZENSHIP_APPLICATION, ATTESTATION_TYPE_RECOVERY, ApplicationStatus, type AttestationPayloadInput, BECH32_PREFIX, type BrowserWalletApi, CHAIN_COIN_TYPE, type ChainCurrency, type ChainInfo, type CosmostationWindowApi, type CreateEmbeddedWalletOptions, DEFAULT_CHAIN_ID, DEFAULT_REST_URL, DEFAULT_RPC_URL, EMBEDDED_WALLET_KDF_PBKDF2, EMBEDDED_WALLET_KDF_PRF, EMBEDDED_WALLET_VAULT_VERSION, type EmbeddedWalletBackupFileV1, EmbeddedWalletBackupRequiredError, type EmbeddedWalletKdf, type EmbeddedWalletPlaintext, type EmbeddedWalletSession, EmbeddedWalletVaultError, type EmbeddedWalletVaultV1, type EncryptWalletOptions, InvalidChainConfigError, MsgSubmitApplication, MsgSubmitRecoveryAttestation, type PasskeyAssertionResult, type PasskeyRegistrationResult, RecoveryAttestationStatus, RpcConnectionError, type SubmitApplicationParams, UKDR_DECIMALS, UKDR_DISPLAY_DENOM, UKDR_MINIMAL_DENOM, WALLETCONNECT_COSMOS_METHODS, WALLETCONNECT_COSMOS_NAMESPACE, WEBAUTHN_RP_NAME, WalletAccountError, type WalletConnectChainConfig, type WalletConnectConnectResult, type WalletConnectMetadata, WalletConnectNotInitializedError, WalletConnectSessionError, WalletConnectSigningError, WalletConnectionError, WalletConnectionRejectedError, WalletNotInstalledError, type WebAuthnPrfCapabilities, WebAuthnUnavailableError, WebAuthnUserCancelledError, acknowledgeEmbeddedBackup, assertPasskey, assertVaultPermitsTransaction, attestationSignPayload, buildKingdomChainInfo, buildRequiredCosmosNamespaces, buildSubmitApplicationMsg, clearEmbeddedWallet, clearVaultFromIndexedDb, connectCosmostation, connectKeplr, connectLeap, connectWalletConnect, createBrowserSigningClient, createEmbeddedWallet, createKingdomChainRegistry, createPasskeyMaterialFromAssertion, createPbkdf2Salt, createWalletConnectOfflineSigner, decodeCredentialId, decryptWalletPayload, defaultEmbeddedHdPath, deriveKekFromPbkdf2, deriveKekFromPrf, detectWebAuthnPrfCapabilities, disconnectWalletConnect, downloadEmbeddedBackupFile, embeddedPlaintextToSigner, encodeCredentialId, encryptWalletPayload, exportEncryptedBackup, getCosmostationKeplrApi, getEmbeddedOfflineSigner, getEmbeddedWalletSession, hasEmbeddedWallet, importEmbeddedBackup, initWalletConnectClient, isCosmostationAvailable, isKeplrAvailable, isLeapAvailable, loadVaultFromIndexedDb, lockEmbeddedWallet, markVaultBackupAcknowledged, parseEncryptedBackup, parseWalletConnectAccount, providerSeedFromHex, publicKeyFromPrivateSeed, readPrfOutput, registerPasskey, restoreWalletConnectSession, saveVaultToIndexedDb, selectEmbeddedWalletKdf, serializeBackupFile, signAttestationPayload, signCitizenshipAttestation, suggestAndConnect, toWalletConnectCosmosChainId, unlockEmbeddedWallet, validateChainConfig };
602
+ export { ATTESTATION_TYPE_CITIZENSHIP_APPLICATION, ATTESTATION_TYPE_RECOVERY, ApplicationStatus, type AttestationPayloadInput, BECH32_PREFIX, type BrowserWalletApi, CHAIN_COIN_TYPE, type ChainCurrency, type ChainInfo, type CosmostationWindowApi, type CreateEmbeddedWalletOptions, DEFAULT_CHAIN_ID, DEFAULT_REST_URL, DEFAULT_RPC_URL, EMBEDDED_WALLET_KDF_PBKDF2, EMBEDDED_WALLET_KDF_PIN, EMBEDDED_WALLET_KDF_PRF, EMBEDDED_WALLET_KEY_DIRECT_ENTROPY, EMBEDDED_WALLET_KEY_HD_DERIVED, EMBEDDED_WALLET_PASSCODE_MAX_LENGTH, EMBEDDED_WALLET_PASSCODE_MIN_LENGTH, EMBEDDED_WALLET_PASSKEY_PBKDF2_ITERATIONS, EMBEDDED_WALLET_PIN_PBKDF2_ITERATIONS, EMBEDDED_WALLET_RECOVERY_PHRASE_DIRECT_ENTROPY_WARNING, EMBEDDED_WALLET_RECOVERY_PHRASE_GENERAL_WARNING, EMBEDDED_WALLET_VAULT_VERSION, type EmbeddedWalletBackupFileV1, EmbeddedWalletBackupRequiredError, type EmbeddedWalletKdf, type EmbeddedWalletKeyType, EmbeddedWalletLockoutError, type EmbeddedWalletPlaintext, type EmbeddedWalletRecoveryPhraseReveal, type EmbeddedWalletRecoveryPhraseWarning, type EmbeddedWalletSession, EmbeddedWalletVaultError, type EmbeddedWalletVaultV1, EmbeddedWalletWeakPasscodeError, type EnableEmbeddedPasskeyUnlockOptions, type EncryptWalletOptions, InvalidChainConfigError, MsgSubmitApplication, MsgSubmitRecoveryAttestation, PASSCODE_LOCKOUT_FAILURE_THRESHOLD, PASSCODE_LOCKOUT_INITIAL_MS, PASSCODE_LOCKOUT_MAX_MS, type PasscodeBlockReason, type PasscodeLockoutRecord, type PasscodeStrengthLabel, type PasscodeStrengthResult, type PasskeyAssertionResult, type PasskeyRegistrationResult, type RecoverEmbeddedWalletOptions, RecoveryAttestationStatus, type RevealEmbeddedRecoveryPhraseOptions, RpcConnectionError, type SubmitApplicationParams, UKDR_DECIMALS, UKDR_DISPLAY_DENOM, UKDR_MINIMAL_DENOM, type UnlockEmbeddedWalletOptions, WALLETCONNECT_COSMOS_METHODS, WALLETCONNECT_COSMOS_NAMESPACE, WEBAUTHN_RP_NAME, WalletAccountError, type WalletConnectChainConfig, type WalletConnectConnectResult, type WalletConnectMetadata, WalletConnectNotInitializedError, WalletConnectSessionError, WalletConnectSigningError, WalletConnectionError, WalletConnectionRejectedError, WalletNotInstalledError, type WebAuthnPrfCapabilities, WebAuthnUnavailableError, WebAuthnUserCancelledError, acknowledgeEmbeddedBackup, addressFromHdMnemonic, addressFromPrivateKey, assertPasscodeAllowedForCreation, assertPasscodeUnlockAllowed, assertPasskey, assertValidPasscode, assertValidRecoveryMnemonic, assertVaultPermitsTransaction, attestationSignPayload, buildKingdomChainInfo, buildRequiredCosmosNamespaces, buildSubmitApplicationMsg, clearEmbeddedWallet, clearPasscodeLockoutForTests, clearPasscodeLockoutRecord, clearVaultFromIndexedDb, connectCosmostation, connectKeplr, connectLeap, connectWalletConnect, createBrowserSigningClient, createEmbeddedWallet, createHdDerivedPlaintext, createKingdomChainRegistry, createPasskeyMaterialFromAssertion, createPbkdf2Salt, createWalletConnectOfflineSigner, decodeCredentialId, decodeDirectEntropyMnemonic, decryptWalletPayload, defaultEmbeddedHdPath, deriveKekFromPasscode, deriveKekFromPbkdf2, deriveKekFromPrf, derivePrivateKeyFromHdMnemonic, detectRecoveryMnemonicKeyType, detectWebAuthnPrfCapabilities, disconnectWalletConnect, downloadEmbeddedBackupFile, embeddedPlaintextToSigner, enableEmbeddedPasskeyUnlock, encodeCredentialId, encodeDirectEntropyMnemonic, encryptWalletPayload, evaluatePasscodeStrength, exportEncryptedBackup, getCosmostationKeplrApi, getEmbeddedOfflineSigner, getEmbeddedWalletSession, getPasscodeLockoutState, hasEmbeddedWallet, hasMixedCharacterClasses, importEmbeddedBackup, initWalletConnectClient, isCosmostationAvailable, isKeplrAvailable, isLeapAvailable, loadPasscodeLockoutRecord, loadVaultFromIndexedDb, lockEmbeddedWallet, markVaultBackupAcknowledged, normalizePasscode, normalizeRecoveryMnemonic, parseEncryptedBackup, parseWalletConnectAccount, plaintextFromRecoveryMnemonic, providerSeedFromHex, publicKeyFromPrivateSeed, readPrfOutput, recordPasscodeUnlockFailure, recordPasscodeUnlockSuccess, recoverEmbeddedWalletFromMnemonic, recoveryMnemonicAddress, recoveryMnemonicFromPlaintext, registerPasskey, resolvePlaintextKeyType, restoreWalletConnectSession, revealEmbeddedRecoveryPhrase, savePasscodeLockoutRecord, saveVaultToIndexedDb, selectEmbeddedWalletKdf, serializeBackupFile, signAttestationPayload, signCitizenshipAttestation, suggestAndConnect, toWalletConnectCosmosChainId, unlockEmbeddedWallet, validateChainConfig, vaultUsesPasscodeUnlock, vaultUsesPasskeyUnlock };