@seams/wallet 0.15.4 → 0.17.0

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.
Files changed (510) hide show
  1. package/README.md +47 -19
  2. package/THIRD_PARTY_NOTICES.md +102 -1
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/SeamsWeb.js +20 -1
  5. package/dist/esm/SeamsWeb/operations/registration/registrationSignerSet.js +73 -0
  6. package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +22 -0
  7. package/dist/esm/SeamsWeb/publicApi/capabilitySelection.js +2 -1
  8. package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +26 -1
  9. package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +71 -69
  10. package/dist/esm/SeamsWeb/walletIframe/client/preferenceState.js +6 -8
  11. package/dist/esm/SeamsWeb/walletIframe/client/preferences.js +7 -5
  12. package/dist/esm/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +2 -1
  13. package/dist/esm/SeamsWeb/walletIframe/client/router.js +116 -108
  14. package/dist/esm/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +11 -7
  15. package/dist/esm/SeamsWeb/walletIframe/client/transactionReviewReservation.js +3 -2
  16. package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +53 -49
  17. package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +6 -2
  18. package/dist/esm/SeamsWeb/walletIframe/coordinator.js +18 -13
  19. package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +13 -1
  20. package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +14 -13
  21. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +1 -4
  22. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +306 -301
  23. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +9 -6
  24. package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
  25. package/dist/esm/core/config/configBuilder.js +1 -1
  26. package/dist/esm/core/config/defaultConfigs.js +1 -0
  27. package/dist/esm/core/indexedDB/accountSignerLifecycle.js +2 -0
  28. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +1 -0
  29. package/dist/esm/core/indexedDB/seamsWalletDB/manager.js +6 -5
  30. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -0
  31. package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +2 -2
  32. package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +6 -3
  33. package/dist/esm/core/rpcClients/near/NearRpcError.js +7 -0
  34. package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +3 -0
  35. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +6 -2
  36. package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +5 -4
  37. package/dist/esm/core/signingEngine/chains/evm/evmAdapter.js +2 -1
  38. package/dist/esm/core/signingEngine/chains/tempo/tempoAdapter.js +2 -1
  39. package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +1 -1
  40. package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +5 -1
  41. package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +1 -1
  42. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +3 -2
  43. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +5 -7
  44. package/dist/esm/core/signingEngine/session/lifecycle/walletSessionFailure.js +2 -0
  45. package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +68 -10
  46. package/dist/esm/core/signingEngine/session/material/walletSigningStateFailure.js +2 -2
  47. package/dist/esm/core/signingEngine/session/operationState/authorizationAdmission.js +2 -0
  48. package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +2 -0
  49. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +29 -28
  50. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +3 -6
  51. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +20 -23
  52. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +134 -137
  53. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +17 -20
  54. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +41 -39
  55. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +14 -17
  56. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +21 -24
  57. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +6 -9
  58. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +100 -103
  59. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +70 -73
  60. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +23 -26
  61. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +19 -22
  62. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +114 -117
  63. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +81 -80
  64. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +41 -37
  65. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +13 -9
  66. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +4 -21
  67. package/dist/esm/core/types/actionBuilders.js +16 -2
  68. package/dist/esm/core/types/amounts.js +83 -0
  69. package/dist/esm/core/types/linkDevice.js +1 -1
  70. package/dist/esm/externalEvm/controller.js +49 -48
  71. package/dist/esm/index.js +2 -1
  72. package/dist/esm/react/boundWallet.js +56 -0
  73. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +13 -2
  74. package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +90 -93
  75. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +55 -58
  76. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +17 -6
  77. package/dist/esm/react/components/ShowQRCode.css +13 -2
  78. package/dist/esm/react/context/index.js +30 -3
  79. package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -1
  80. package/dist/esm/react/externalEvm.js +22 -25
  81. package/dist/esm/react/index.js +4 -4
  82. package/dist/esm/react/styles/styles.css +13 -2
  83. package/dist/esm/react/transactionReview/TransactionReviewHost.js +3 -6
  84. package/dist/esm/react/transactionReview/boundCalls.js +1 -1
  85. package/dist/esm/react/transactionReview/controller.js +121 -119
  86. package/dist/esm/sdk/ConfirmationDrawer-CXVNmfTy.js +1 -0
  87. package/dist/esm/sdk/NonceCoordinator-DuDKN-B8.js +1 -0
  88. package/dist/{public/sdk/accountLifecycle-CBOkr0vU.js → esm/sdk/accountLifecycle-D61FIpFS.js} +1 -1
  89. package/dist/esm/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-Ba6X4CUN.js} +1 -1
  90. package/dist/esm/sdk/adapters-CTlDBRJy.js +2 -0
  91. package/dist/esm/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
  92. package/dist/esm/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BOzRXzfv.js} +1 -1
  93. package/dist/esm/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
  94. package/dist/esm/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
  95. package/dist/esm/sdk/challengeDelivery-FD9GHK1T.js +1 -0
  96. package/dist/esm/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BHRUSWMt.js} +1 -1
  97. package/dist/esm/sdk/{commitQueue-DYEgzoLA.js → commitQueue-DOIaR0Hr.js} +1 -1
  98. package/dist/esm/sdk/{configHelpers-B-hs0mTO.js → configHelpers-BXdl5Mxs.js} +1 -1
  99. package/dist/esm/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-CbEFYvlJ.js} +1 -1
  100. package/dist/esm/sdk/{display-DsfJkAra.js → display-CY_aJEn6.js} +1 -1
  101. package/dist/esm/sdk/domainIds-C3fUa33Q.js +1 -0
  102. package/dist/esm/sdk/ecdsaCapabilityManifest-DzA996y9.js +1 -0
  103. package/dist/esm/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
  104. package/dist/esm/sdk/ecdsaDerivationClientWasm-DQlajPpE.js +1 -0
  105. package/dist/{public/sdk/ecdsaDerivationExport-DOGzq0qC.js → esm/sdk/ecdsaDerivationExport-DyugdheE.js} +1 -1
  106. package/dist/esm/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-C_v74n5X.js} +1 -1
  107. package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → esm/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js} +1 -1
  108. package/dist/esm/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
  109. package/dist/esm/sdk/export-viewer-host-DsRaS0UH.js +1 -0
  110. package/dist/{public/sdk/exportKeypairOperation-DzbjKbnk.js → esm/sdk/exportKeypairOperation-SJPysnE1.js} +1 -1
  111. package/dist/esm/sdk/{helpers-B9fpZNAP.js → helpers-D3CUEdHI.js} +1 -1
  112. package/dist/esm/sdk/{host-z-JJRWQe.js → host-GPb_mSAQ.js} +1 -1
  113. package/dist/esm/sdk/{intentDigest-P_-CM7lS.js → intentDigest-CGLrsMgj.js} +1 -1
  114. package/dist/esm/sdk/{lanes-5kcTFbPx.js → lanes-DJKIHJBm.js} +1 -1
  115. package/dist/esm/sdk/{localOnly-C5mSXb_D.js → localOnly-CPmpw381.js} +1 -1
  116. package/dist/esm/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +1 -0
  117. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +2 -0
  118. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js +1 -0
  119. package/dist/{public/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → esm/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js} +1 -1
  120. package/dist/esm/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-D18nlLjh.js} +1 -1
  121. package/dist/esm/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
  122. package/dist/esm/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-Boa9DQ51.js} +1 -1
  123. package/dist/esm/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-CBSal3E9.js} +1 -1
  124. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-CvsrXbzn.js} +1 -1
  125. package/dist/esm/sdk/presignaturePool-CQNt13kE.js +1 -0
  126. package/dist/esm/sdk/{primitives-CqrjmIAH.js → primitives-cC0a9GRC.js} +1 -1
  127. package/dist/{public/sdk/recovery-entrypoint-BULjaFBM.js → esm/sdk/recovery-entrypoint-nj7Zo3CR.js} +1 -1
  128. package/dist/esm/sdk/{registration-CyF7nOXs.js → registration-49OGU_GZ.js} +1 -1
  129. package/dist/esm/sdk/registration-C7tywPXF.js +1 -0
  130. package/dist/esm/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-9GFI0Ger.js} +1 -1
  131. package/dist/esm/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
  132. package/dist/esm/sdk/{registrationIds-BaK3jUS6.js → registrationIds-Br-zI4_5.js} +1 -1
  133. package/dist/esm/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-PqmcTEE3.js} +1 -1
  134. package/dist/esm/sdk/{registrationSignerPlan-CPzHavPM.js → registrationSignerPlan-BHkqlian.js} +1 -1
  135. package/dist/{public/sdk/requireStepUpAuth-BCY5ZStI.js → esm/sdk/requireStepUpAuth-C4PGTly-.js} +1 -1
  136. package/dist/esm/sdk/routerAbNormalSigning-xxATTIh5.js +1 -0
  137. package/dist/esm/sdk/runtime-auth-CpjGW90U.js +1 -0
  138. package/dist/esm/sdk/{runtime-device-link-Dq8g_UNb.js → runtime-device-link-CKgfGi7D.js} +1 -1
  139. package/dist/esm/sdk/{runtime-ecdsa-tempo-AGjT7Xpa.js → runtime-ecdsa-tempo-5VV9xSEh.js} +1 -1
  140. package/dist/esm/sdk/{runtime-email-otp-BpBOuSsT.js → runtime-email-otp-D1hYZNn6.js} +1 -1
  141. package/dist/esm/sdk/{runtime-export-CBsacCPY.js → runtime-export-B92wQD25.js} +1 -1
  142. package/dist/esm/sdk/{runtime-near-J3hKjC7G.js → runtime-near-CUuKg38M.js} +1 -1
  143. package/dist/esm/sdk/runtime-preferences-EdL3G_MO.js +1 -0
  144. package/dist/esm/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-LR4mg7-k.js} +1 -1
  145. package/dist/esm/sdk/runtime-recovery-uyw8sywI.js +1 -0
  146. package/dist/esm/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
  147. package/dist/esm/sdk/secp256k1-BldUPNQI.js +1 -0
  148. package/dist/{public/sdk/sessionObservationRevision-CnEOLDbl.js → esm/sdk/sessionObservationRevision-DmmNV25w.js} +1 -1
  149. package/dist/esm/sdk/shared-ha31XIdc.js +6 -0
  150. package/dist/{public/sdk/signEvmFamily-Cpm3e6Zs.js → esm/sdk/signEvmFamily-C_RvEnDB.js} +1 -1
  151. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js +1 -0
  152. package/dist/esm/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-CxXzcvj2.js} +1 -1
  153. package/dist/esm/sdk/signNear-Dno7NsP_.js +1 -0
  154. package/dist/esm/sdk/signatureUses-B_nN17i7.js +1 -0
  155. package/dist/esm/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
  156. package/dist/{public/sdk/signingFlow-VAnM8L5C.js → esm/sdk/signingFlow-DtugI_2z.js} +2 -2
  157. package/dist/esm/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-C1Pb07gm.js} +1 -1
  158. package/dist/{public/sdk/singletons-BXhnsqeY.js → esm/sdk/singletons-DxIyVhNb.js} +1 -1
  159. package/dist/esm/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
  160. package/dist/{public/sdk/thresholdEcdsa-CneSKcRt.js → esm/sdk/thresholdEcdsa-murTq-xz.js} +1 -1
  161. package/dist/esm/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
  162. package/dist/{public/sdk/transaction-activity-Cccvec2J.js → esm/sdk/transaction-activity-C0nCSW6c.js} +1 -1
  163. package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
  164. package/dist/{public/sdk/transactionState-Day-1x7Y.js → esm/sdk/transactionState-XbZm9Zon.js} +1 -1
  165. package/dist/esm/sdk/tx-confirm-ui.js +709 -744
  166. package/dist/esm/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
  167. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  168. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  169. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  170. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  171. package/dist/{public/sdk/wallet-recovery-Bfhfk52N.js → esm/sdk/wallet-recovery-CVUalZ3p.js} +1 -1
  172. package/dist/esm/sdk/wallet-ui.css +1 -1
  173. package/dist/{public/sdk/walletAuthMethodRecord-LniOQQmj.js → esm/sdk/walletAuthMethodRecord-Bv68Vq-g.js} +1 -1
  174. package/dist/esm/sdk/{walletAuthority-CAiGuWW2.js → walletAuthority-v5wvv3IB.js} +1 -1
  175. package/dist/esm/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js +1 -0
  176. package/dist/esm/sdk/{walletDbName-DtRewci9.js → walletDbName-DRzPv5Ir.js} +1 -1
  177. package/dist/esm/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-pMmmJ6XA.js} +1 -1
  178. package/dist/esm/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DvC6WlGz.js} +1 -1
  179. package/dist/esm/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-Dd3prJpr.js} +1 -1
  180. package/dist/esm/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +1 -0
  181. package/dist/esm/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js +1 -0
  182. package/dist/esm/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js +1 -0
  183. package/dist/esm/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
  184. package/dist/esm/sdk/webauthnP256-XgYu-Y6E.js +1 -0
  185. package/dist/esm/sdk/webauthnPromptCoordinator-D5sP8Q7e.js +1 -0
  186. package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +1 -1
  187. package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +6 -0
  188. package/dist/esm/shared-ts/src/near/nearClient.js +6 -0
  189. package/dist/esm/shared-ts/src/threshold/participants.js +2 -1
  190. package/dist/esm/shared-ts/src/threshold/secp256k1.js +6 -0
  191. package/dist/esm/shared-ts/src/utils/domainIds.js +7 -0
  192. package/dist/esm/shared-ts/src/utils/index.js +1 -1
  193. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +14 -1
  194. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +5 -4
  195. package/dist/esm/utils/qrScanner.js +10 -8
  196. package/dist/public/headers.manifest.json +1 -1
  197. package/dist/public/sdk/ConfirmationDrawer-CXVNmfTy.js +1 -0
  198. package/dist/public/sdk/NonceCoordinator-DuDKN-B8.js +1 -0
  199. package/dist/{esm/sdk/accountLifecycle-CBOkr0vU.js → public/sdk/accountLifecycle-D61FIpFS.js} +1 -1
  200. package/dist/public/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-Ba6X4CUN.js} +1 -1
  201. package/dist/public/sdk/adapters-CTlDBRJy.js +2 -0
  202. package/dist/public/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
  203. package/dist/public/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BOzRXzfv.js} +1 -1
  204. package/dist/public/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
  205. package/dist/public/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
  206. package/dist/public/sdk/challengeDelivery-FD9GHK1T.js +1 -0
  207. package/dist/public/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BHRUSWMt.js} +1 -1
  208. package/dist/public/sdk/{commitQueue-DYEgzoLA.js → commitQueue-DOIaR0Hr.js} +1 -1
  209. package/dist/public/sdk/{configHelpers-B-hs0mTO.js → configHelpers-BXdl5Mxs.js} +1 -1
  210. package/dist/public/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-CbEFYvlJ.js} +1 -1
  211. package/dist/public/sdk/{display-DsfJkAra.js → display-CY_aJEn6.js} +1 -1
  212. package/dist/public/sdk/domainIds-C3fUa33Q.js +1 -0
  213. package/dist/public/sdk/ecdsaCapabilityManifest-DzA996y9.js +1 -0
  214. package/dist/public/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
  215. package/dist/public/sdk/ecdsaDerivationClientWasm-DQlajPpE.js +1 -0
  216. package/dist/{esm/sdk/ecdsaDerivationExport-DOGzq0qC.js → public/sdk/ecdsaDerivationExport-DyugdheE.js} +1 -1
  217. package/dist/public/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-C_v74n5X.js} +1 -1
  218. package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → public/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js} +1 -1
  219. package/dist/public/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
  220. package/dist/public/sdk/export-viewer-host-DsRaS0UH.js +1 -0
  221. package/dist/{esm/sdk/exportKeypairOperation-DzbjKbnk.js → public/sdk/exportKeypairOperation-SJPysnE1.js} +1 -1
  222. package/dist/public/sdk/{helpers-B9fpZNAP.js → helpers-D3CUEdHI.js} +1 -1
  223. package/dist/public/sdk/{host-z-JJRWQe.js → host-GPb_mSAQ.js} +1 -1
  224. package/dist/public/sdk/{intentDigest-P_-CM7lS.js → intentDigest-CGLrsMgj.js} +1 -1
  225. package/dist/public/sdk/{lanes-5kcTFbPx.js → lanes-DJKIHJBm.js} +1 -1
  226. package/dist/public/sdk/{localOnly-C5mSXb_D.js → localOnly-CPmpw381.js} +1 -1
  227. package/dist/public/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +1 -0
  228. package/dist/public/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +2 -0
  229. package/dist/public/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js +1 -0
  230. package/dist/{esm/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → public/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js} +1 -1
  231. package/dist/public/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-D18nlLjh.js} +1 -1
  232. package/dist/public/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
  233. package/dist/public/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-Boa9DQ51.js} +1 -1
  234. package/dist/public/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-CBSal3E9.js} +1 -1
  235. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-CvsrXbzn.js} +1 -1
  236. package/dist/public/sdk/presignaturePool-CQNt13kE.js +1 -0
  237. package/dist/public/sdk/{primitives-CqrjmIAH.js → primitives-cC0a9GRC.js} +1 -1
  238. package/dist/{esm/sdk/recovery-entrypoint-BULjaFBM.js → public/sdk/recovery-entrypoint-nj7Zo3CR.js} +1 -1
  239. package/dist/public/sdk/{registration-CyF7nOXs.js → registration-49OGU_GZ.js} +1 -1
  240. package/dist/public/sdk/registration-C7tywPXF.js +1 -0
  241. package/dist/public/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-9GFI0Ger.js} +1 -1
  242. package/dist/public/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
  243. package/dist/public/sdk/{registrationIds-BaK3jUS6.js → registrationIds-Br-zI4_5.js} +1 -1
  244. package/dist/public/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-PqmcTEE3.js} +1 -1
  245. package/dist/public/sdk/{registrationSignerPlan-CPzHavPM.js → registrationSignerPlan-BHkqlian.js} +1 -1
  246. package/dist/{esm/sdk/requireStepUpAuth-BCY5ZStI.js → public/sdk/requireStepUpAuth-C4PGTly-.js} +1 -1
  247. package/dist/public/sdk/routerAbNormalSigning-xxATTIh5.js +1 -0
  248. package/dist/public/sdk/runtime-auth-CpjGW90U.js +1 -0
  249. package/dist/public/sdk/{runtime-device-link-Dq8g_UNb.js → runtime-device-link-CKgfGi7D.js} +1 -1
  250. package/dist/public/sdk/{runtime-ecdsa-tempo-AGjT7Xpa.js → runtime-ecdsa-tempo-5VV9xSEh.js} +1 -1
  251. package/dist/public/sdk/{runtime-email-otp-BpBOuSsT.js → runtime-email-otp-D1hYZNn6.js} +1 -1
  252. package/dist/public/sdk/{runtime-export-CBsacCPY.js → runtime-export-B92wQD25.js} +1 -1
  253. package/dist/public/sdk/{runtime-near-J3hKjC7G.js → runtime-near-CUuKg38M.js} +1 -1
  254. package/dist/public/sdk/runtime-preferences-EdL3G_MO.js +1 -0
  255. package/dist/public/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-LR4mg7-k.js} +1 -1
  256. package/dist/public/sdk/runtime-recovery-uyw8sywI.js +1 -0
  257. package/dist/public/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
  258. package/dist/public/sdk/secp256k1-BldUPNQI.js +1 -0
  259. package/dist/{esm/sdk/sessionObservationRevision-CnEOLDbl.js → public/sdk/sessionObservationRevision-DmmNV25w.js} +1 -1
  260. package/dist/public/sdk/shared-ha31XIdc.js +6 -0
  261. package/dist/{esm/sdk/signEvmFamily-Cpm3e6Zs.js → public/sdk/signEvmFamily-C_RvEnDB.js} +1 -1
  262. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js +1 -0
  263. package/dist/public/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-CxXzcvj2.js} +1 -1
  264. package/dist/public/sdk/signNear-Dno7NsP_.js +1 -0
  265. package/dist/public/sdk/signatureUses-B_nN17i7.js +1 -0
  266. package/dist/public/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
  267. package/dist/{esm/sdk/signingFlow-VAnM8L5C.js → public/sdk/signingFlow-DtugI_2z.js} +2 -2
  268. package/dist/public/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-C1Pb07gm.js} +1 -1
  269. package/dist/{esm/sdk/singletons-BXhnsqeY.js → public/sdk/singletons-DxIyVhNb.js} +1 -1
  270. package/dist/public/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
  271. package/dist/{esm/sdk/thresholdEcdsa-CneSKcRt.js → public/sdk/thresholdEcdsa-murTq-xz.js} +1 -1
  272. package/dist/public/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
  273. package/dist/{esm/sdk/transaction-activity-Cccvec2J.js → public/sdk/transaction-activity-C0nCSW6c.js} +1 -1
  274. package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
  275. package/dist/{esm/sdk/transactionState-Day-1x7Y.js → public/sdk/transactionState-XbZm9Zon.js} +1 -1
  276. package/dist/public/sdk/tx-confirm-ui.js +709 -744
  277. package/dist/public/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
  278. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  279. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  280. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  281. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  282. package/dist/{esm/sdk/wallet-recovery-Bfhfk52N.js → public/sdk/wallet-recovery-CVUalZ3p.js} +1 -1
  283. package/dist/public/sdk/wallet-ui.css +1 -1
  284. package/dist/{esm/sdk/walletAuthMethodRecord-LniOQQmj.js → public/sdk/walletAuthMethodRecord-Bv68Vq-g.js} +1 -1
  285. package/dist/public/sdk/{walletAuthority-CAiGuWW2.js → walletAuthority-v5wvv3IB.js} +1 -1
  286. package/dist/public/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js +1 -0
  287. package/dist/public/sdk/{walletDbName-DtRewci9.js → walletDbName-DRzPv5Ir.js} +1 -1
  288. package/dist/public/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-pMmmJ6XA.js} +1 -1
  289. package/dist/public/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DvC6WlGz.js} +1 -1
  290. package/dist/public/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-Dd3prJpr.js} +1 -1
  291. package/dist/public/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +1 -0
  292. package/dist/public/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js +1 -0
  293. package/dist/public/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js +1 -0
  294. package/dist/public/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
  295. package/dist/public/sdk/webauthnP256-XgYu-Y6E.js +1 -0
  296. package/dist/public/sdk/webauthnPromptCoordinator-D5sP8Q7e.js +1 -0
  297. package/dist/public/sdk/workers/device-linking-key.worker.js +12 -11
  298. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +146 -48
  299. package/dist/public/sdk/workers/ecdsa-online-client.worker.js +7 -6
  300. package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +7 -6
  301. package/dist/public/sdk/workers/email-otp.worker.js +24 -4
  302. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +17 -1
  303. package/dist/public/sdk/workers/passkey-mpc-session.worker.js +2 -1
  304. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +2 -0
  305. package/dist/public/wallet-assets.manifest.json +190 -190
  306. package/dist/public/wallet-service/index.html +4 -4
  307. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +14 -14
  308. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +1 -1
  309. package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +1 -1
  310. package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +1 -1
  311. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +5 -5
  312. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +3 -3
  313. package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -1
  314. package/dist/types/shared-ts/src/tenant-root/tenantRootIdentity.d.ts +1 -1
  315. package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -2
  316. package/dist/types/shared-ts/src/utils/base64.d.ts +2 -2
  317. package/dist/types/shared-ts/src/utils/digestEncoding.d.ts +1 -1
  318. package/dist/types/shared-ts/src/utils/digests.d.ts +2 -2
  319. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +16 -16
  320. package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +1 -1
  321. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +10 -10
  322. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +12 -11
  323. package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +3 -3
  324. package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +1 -1
  325. package/dist/types/shared-ts/src/utils/signerDomain.d.ts +15 -15
  326. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +11 -11
  327. package/dist/types/shared-ts/src/utils/walletSessionFailure.d.ts +8 -8
  328. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +2 -2
  329. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +1 -1
  330. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +1 -1
  331. package/dist/types/wallet/build-paths.d.ts +73 -73
  332. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.d.ts +3 -2
  333. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +2 -2
  334. package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceTargetActivation.d.ts +1 -1
  335. package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +3 -3
  336. package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationEd25519Yao.d.ts +4 -3
  337. package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationSignerSet.d.ts +5 -0
  338. package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTiming.d.ts +2 -2
  339. package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +10 -1
  340. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +4 -2
  341. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +1 -0
  342. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +1 -0
  343. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +2 -1
  344. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +15 -2
  345. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createEmailOtpCommands.d.ts +3 -2
  346. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
  347. package/dist/types/wallet/src/config.d.ts +8 -8
  348. package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +1 -1
  349. package/dist/types/wallet/src/core/indexedDB/linkedAuthoritySignerMaterial.d.ts +3 -3
  350. package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -1
  351. package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +181 -181
  352. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +8 -8
  353. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.d.ts +4 -4
  354. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +1 -1
  355. package/dist/types/wallet/src/core/indexedDB/walletCustodyEd25519MaterialRecord.d.ts +2 -2
  356. package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +1 -1
  357. package/dist/types/wallet/src/core/signingEngine/chains/evm/evmAdapter.d.ts +1 -1
  358. package/dist/types/wallet/src/core/signingEngine/chains/evm/evmSigning.types.d.ts +1 -0
  359. package/dist/types/wallet/src/core/signingEngine/chains/tempo/tempoAdapter.d.ts +1 -1
  360. package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +27 -27
  361. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/secp256k1.d.ts +1 -1
  362. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.d.ts +1 -1
  363. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +17 -17
  364. package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +40 -40
  365. package/dist/types/wallet/src/core/signingEngine/session/material/walletSigningStateFailure.d.ts +4 -4
  366. package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +8 -8
  367. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +1 -1
  368. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +1 -1
  369. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmCommon.d.ts +3 -3
  370. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +4 -4
  371. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -1
  372. package/dist/types/wallet/src/core/signingEngine/threshold/sessionPolicy.d.ts +1 -1
  373. package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.d.ts +1 -1
  374. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.d.ts +2 -2
  375. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.d.ts +1 -1
  376. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.d.ts +1 -1
  377. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.d.ts +1 -1
  378. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.d.ts +1 -1
  379. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.d.ts +1 -1
  380. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/credentials/helpers.d.ts +2 -2
  381. package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +1 -0
  382. package/dist/types/wallet/src/core/signingEngine/workerManager/deviceLinkingPorts.d.ts +1 -1
  383. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +3 -3
  384. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.d.ts +1 -1
  385. package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
  386. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTransport.d.ts +1 -0
  387. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +1 -1
  388. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ecdsaTargetShareHpke.d.ts +3 -3
  389. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ordinaryMaterialState.d.ts +1 -1
  390. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +3 -3
  391. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/materialParsing.d.ts +1 -1
  392. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +2 -2
  393. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +1 -1
  394. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/workerErrorPayload.d.ts +2 -2
  395. package/dist/types/wallet/src/core/types/actionBuilders.d.ts +16 -2
  396. package/dist/types/wallet/src/core/types/amounts.d.ts +75 -0
  397. package/dist/types/wallet/src/core/types/amounts.typecheck.d.ts +2 -0
  398. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -5
  399. package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +1 -1
  400. package/dist/types/wallet/src/core/types/signer-worker.d.ts +7 -7
  401. package/dist/types/wallet/src/externalEvm/types.d.ts +1 -0
  402. package/dist/types/wallet/src/index.d.ts +2 -0
  403. package/dist/types/wallet/src/react/{hooks/useWallet.d.ts → boundWallet.d.ts} +8 -48
  404. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonView.d.ts +0 -1
  405. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountsSection.d.ts +0 -1
  406. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +0 -1
  407. package/dist/types/wallet/src/react/components/AccountMenuButton/ExportKeysSection.d.ts +0 -1
  408. package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +0 -1
  409. package/dist/types/wallet/src/react/components/AccountMenuButton/ProfileDropdown.d.ts +0 -1
  410. package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +0 -1
  411. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -1
  412. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/HoverArrowIcon.d.ts +0 -1
  413. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -1
  414. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -1
  415. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -1
  416. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -1
  417. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockKeyholeIcon.d.ts +1 -1
  418. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -1
  419. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +1 -1
  420. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -1
  421. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -1
  422. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -1
  423. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -1
  424. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/TouchIcon.d.ts +0 -1
  425. package/dist/types/wallet/src/react/components/AccountMenuButton/index.d.ts +0 -1
  426. package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +8 -8
  427. package/dist/types/wallet/src/react/components/ShowQRCode.d.ts +0 -1
  428. package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -1
  429. package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +1 -0
  430. package/dist/types/wallet/src/react/context/index.d.ts +2 -1
  431. package/dist/types/wallet/src/react/context/useSeamsContextValue.d.ts +2 -2
  432. package/dist/types/wallet/src/react/index.d.ts +3 -2
  433. package/dist/types/wallet/src/react/styles.d.ts +2 -0
  434. package/dist/types/wallet/src/react/transactionReview/boundCalls.d.ts +57 -57
  435. package/dist/types/wallet/src/react/types.d.ts +14 -1
  436. package/dist/types/wallet/src/theme/base-styles.d.ts +4 -4
  437. package/dist/workers/device-linking-key.worker.js +12 -11
  438. package/dist/workers/ecdsa-derivation-client.worker.js +146 -48
  439. package/dist/workers/ecdsa-online-client.worker.js +7 -6
  440. package/dist/workers/ecdsa-presign-client.worker.js +7 -6
  441. package/dist/workers/email-otp.worker.js +24 -4
  442. package/dist/workers/passkey-mpc-export.worker.js +17 -1
  443. package/dist/workers/passkey-mpc-session.worker.js +2 -1
  444. package/dist/workers/wallet-custody-ceremony.worker.js +2 -0
  445. package/package.json +8 -6
  446. package/dist/esm/react/hooks/useWallet.js +0 -108
  447. package/dist/esm/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
  448. package/dist/esm/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
  449. package/dist/esm/sdk/adapters-DsAaBNNY.js +0 -2
  450. package/dist/esm/sdk/authorizationAdmission-CGinGhXH.js +0 -1
  451. package/dist/esm/sdk/challengeDelivery-CATQ4u6P.js +0 -1
  452. package/dist/esm/sdk/domainIds-BzkGsRqO.js +0 -1
  453. package/dist/esm/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
  454. package/dist/esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
  455. package/dist/esm/sdk/export-viewer-host-CV-lSsQF.js +0 -1
  456. package/dist/esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
  457. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
  458. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
  459. package/dist/esm/sdk/presignaturePool-V10fZpG3.js +0 -1
  460. package/dist/esm/sdk/registration-DEGZR8kA.js +0 -1
  461. package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
  462. package/dist/esm/sdk/runtime-auth-ZcxkQ-XF.js +0 -1
  463. package/dist/esm/sdk/runtime-preferences-CVt5sLvm.js +0 -1
  464. package/dist/esm/sdk/runtime-recovery-BzewdcoT.js +0 -1
  465. package/dist/esm/sdk/secp256k1-CKq7_HD-.js +0 -1
  466. package/dist/esm/sdk/shared-BywEqTsd.js +0 -6
  467. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
  468. package/dist/esm/sdk/signNear-XGZBxc_g.js +0 -1
  469. package/dist/esm/sdk/signatureUses-BKAoDbQd.js +0 -1
  470. package/dist/esm/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
  471. package/dist/esm/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
  472. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
  473. package/dist/esm/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
  474. package/dist/esm/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
  475. package/dist/esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
  476. package/dist/esm/sdk/walletSessionFailure-YuhraC3P.js +0 -1
  477. package/dist/esm/sdk/webauthnP256-BwgxtG5N.js +0 -1
  478. package/dist/esm/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
  479. package/dist/public/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
  480. package/dist/public/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
  481. package/dist/public/sdk/adapters-DsAaBNNY.js +0 -2
  482. package/dist/public/sdk/authorizationAdmission-CGinGhXH.js +0 -1
  483. package/dist/public/sdk/challengeDelivery-CATQ4u6P.js +0 -1
  484. package/dist/public/sdk/domainIds-BzkGsRqO.js +0 -1
  485. package/dist/public/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
  486. package/dist/public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
  487. package/dist/public/sdk/export-viewer-host-CV-lSsQF.js +0 -1
  488. package/dist/public/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
  489. package/dist/public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
  490. package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
  491. package/dist/public/sdk/presignaturePool-V10fZpG3.js +0 -1
  492. package/dist/public/sdk/registration-DEGZR8kA.js +0 -1
  493. package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
  494. package/dist/public/sdk/runtime-auth-ZcxkQ-XF.js +0 -1
  495. package/dist/public/sdk/runtime-preferences-CVt5sLvm.js +0 -1
  496. package/dist/public/sdk/runtime-recovery-BzewdcoT.js +0 -1
  497. package/dist/public/sdk/secp256k1-CKq7_HD-.js +0 -1
  498. package/dist/public/sdk/shared-BywEqTsd.js +0 -6
  499. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
  500. package/dist/public/sdk/signNear-XGZBxc_g.js +0 -1
  501. package/dist/public/sdk/signatureUses-BKAoDbQd.js +0 -1
  502. package/dist/public/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
  503. package/dist/public/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
  504. package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
  505. package/dist/public/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
  506. package/dist/public/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
  507. package/dist/public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
  508. package/dist/public/sdk/walletSessionFailure-YuhraC3P.js +0 -1
  509. package/dist/public/sdk/webauthnP256-BwgxtG5N.js +0 -1
  510. package/dist/public/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
@@ -2,7 +2,7 @@ import { isLinkedDeviceTargetEmailAddressV1 } from "../../../../../core/types/li
2
2
  import { EMAIL_OTP_RECOVERY_KEY_ALPHABET } from "../../../../../shared-ts/src/utils/emailOtpRecoveryKey.js";
3
3
  import "../../../../../shared-ts/src/wallet-recovery/recoveryCodes.js";
4
4
  import { demoEmailOtpCodeFromDelivery } from "../../../../../core/signingEngine/session/emailOtp/challengeDelivery.js";
5
- import { isAuthMenuActionReady, isAuthMenuGoogleActionReady, isAuthMenuLoadingStatus, isAuthMenuReady, resolveAuthMenuLoginAccount } from "../../auth-menu/domain.js";
5
+ import { AUTH_MENU_WAITING_PROMPTS, isAuthMenuActionReady, isAuthMenuGoogleActionReady, isAuthMenuLoadingStatus, isAuthMenuReady, resolveAuthMenuLoginAccount } from "../../auth-menu/domain.js";
6
6
  import { PadlockIcon } from "../../../../../core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js";
7
7
  import { blinkMenuItem } from "../../../../../utils/menuItemBlink.js";
8
8
  import { accountDropdownIcon, backIcon, chevronIcon, fingerprintIcon, googleIcon, linkDeviceIcon, linkFailedIcon, mailIcon, passkeyRingIcon, recoveryIcon, rerollIcon } from "./icons.js";
@@ -169,300 +169,24 @@ function accountGroups(options) {
169
169
  }
170
170
  const ACCOUNT_MENU_EXIT_MS = 160;
171
171
  var AuthMenuSurface = class extends Component {
172
- constructor(..._args) {
173
- super(..._args);
174
- this.state = {
175
- accountMenu: "closed",
176
- recoverySelection: null,
177
- recoveryRejection: null
178
- };
179
- this.recoveryDrawnCode = "";
180
- this.recoveryArrival = null;
181
- this.recoveryArrivalTimer = null;
182
- this.recoveryRejectionTimer = null;
183
- this.accountMenuExitTimer = null;
184
- this.accountMenuChoice = null;
185
- this.previouslyFocusedElement = null;
186
- this.shouldFocusInitialControl = true;
187
- this.contentResizeObserver = null;
188
- this.contentHeightFrame = null;
189
- this.previousLinkDeviceStateKind = null;
190
- this.previousRecoveryStage = null;
191
- this.lastMethod = "passkey";
192
- this.queueContentHeightSync = () => {
193
- if (this.contentHeightFrame !== null) cancelAnimationFrame(this.contentHeightFrame);
194
- this.contentHeightFrame = requestAnimationFrame(this.syncContentHeight);
195
- };
196
- this.syncContentHeight = () => {
197
- this.contentHeightFrame = null;
198
- const switcher = this.props.element.querySelector(".seams-content-switcher");
199
- const sizer = this.props.element.querySelector(".seams-content-sizer");
200
- if (!switcher || !sizer) return;
201
- this.props.styles.setDynamicDeclarations(this.props.element.id + "-height", "#" + this.props.element.id + " .seams-content-switcher", { height: sizer.scrollHeight + "px" });
202
- };
203
- this.onKeydown = (event) => {
204
- if (event.key === "Escape") {
205
- event.preventDefault();
206
- if (this.viewModel && recoveryNavigationLocked(this.viewModel)) return;
207
- if (this.accountMenuOpen) {
208
- this.closeAccountMenu();
209
- return;
210
- }
211
- this.emitIntent({
212
- kind: "close",
213
- reason: "escape"
214
- });
215
- return;
216
- }
217
- if (event.key !== "Tab") return;
218
- const focusable = this.focusableElements();
219
- if (focusable.length === 0) return;
220
- const active = document.activeElement;
221
- const activeIndex = focusable.indexOf(active instanceof HTMLElement ? active : focusable[0]);
222
- if (event.shiftKey && activeIndex <= 0) {
223
- event.preventDefault();
224
- focusable[focusable.length - 1]?.focus();
225
- } else if (!event.shiftKey && activeIndex === focusable.length - 1) {
226
- event.preventDefault();
227
- focusable[0]?.focus();
228
- }
229
- };
230
- this.onBackClick = () => {
231
- this.emitIntent({ kind: "back" });
232
- };
233
- this.onKeyDown = (event) => {
234
- if (event.key !== "Escape" || event.defaultPrevented) return;
235
- const viewModel = this.viewModel;
236
- if (!viewModel || viewModel.kind !== "recovery" && !isAuthMenuLoadingStatus(viewModel.status)) return;
237
- event.preventDefault();
238
- event.stopPropagation();
239
- if (recoveryNavigationLocked(viewModel)) return;
240
- this.emitIntent({ kind: "back" });
241
- };
242
- this.onIntentSwitchClick = () => {
243
- const viewModel = this.viewModel;
244
- if (!viewModel) return;
245
- this.emitIntent({
246
- kind: "mode_selected",
247
- mode: modeSwitchCopy(viewModel.mode).nextMode
248
- });
249
- };
250
- this.onRegistrationReroll = () => {
251
- this.emitIntent({ kind: "registration_reroll" });
252
- };
253
- this.onPasskeyNameInput = (event) => {
254
- if (!(event.currentTarget instanceof HTMLInputElement)) return;
255
- this.emitIntent({
256
- kind: "passkey_name_changed",
257
- passkeyName: event.currentTarget.value
258
- });
259
- };
260
- this.onLoginAccountSelect = (event) => {
261
- const option = event.currentTarget;
262
- if (!(option instanceof HTMLButtonElement)) return;
263
- const walletId = option.dataset.walletId;
264
- const authMethod = option.dataset.authMethod;
265
- const viewModel = this.viewModel;
266
- if (!walletId || viewModel.kind !== "passkey" || viewModel.mode !== "login") return;
267
- const selected = viewModel.accountOptions.find((account) => account.walletId === walletId && account.authMethod === authMethod);
268
- const previous = selectedLoginAccount(viewModel);
269
- if (!selected || !previous || this.accountMenuChoice) return;
270
- const blink = blinkMenuItem(option);
271
- if (!blink) return;
272
- const choice = {
273
- chosen: selected,
274
- previous
275
- };
276
- this.accountMenuChoice = choice;
277
- this.emitIntent({
278
- kind: "login_account_selected",
279
- walletId: selected.walletId,
280
- authMethod: selected.authMethod
281
- });
282
- blink.then(() => {
283
- if (this.accountMenuChoice === choice) this.closeAccountMenu();
284
- });
285
- };
286
- this.onAccountMenuToggle = () => {
287
- if (this.accountMenuOpen) this.closeAccountMenu();
288
- else this.openAccountMenu();
289
- };
290
- this.onDocumentPointerDown = (event) => {
291
- if (!this.accountMenuOpen || !(event.target instanceof Node)) return;
292
- if (this.props.element.querySelector(".seams-account-menu")?.contains(event.target)) return;
293
- this.closeAccountMenu();
294
- };
295
- this.onPrimaryClick = () => {
296
- const viewModel = this.viewModel;
297
- if (!viewModel || !isAuthMenuActionReady(viewModel)) return;
298
- if (viewModel.kind === "link_device") return;
299
- if (viewModel.kind === "google_otp_login") {
300
- this.emitIntent({ kind: "google_otp_submit" });
301
- return;
302
- }
303
- if (viewModel.kind === "google_registration") {
304
- this.emitIntent({ kind: "google_registration_complete" });
305
- return;
306
- }
307
- const intent = viewModel.mode === "register" ? {
308
- kind: "submit",
309
- mode: "register",
310
- passkeyName: viewModel.passkeyName
311
- } : {
312
- kind: "submit",
313
- mode: "login"
314
- };
315
- this.lastMethod = "passkey";
316
- this.emitIntent(intent);
317
- };
318
- this.onGoogleOtpCodeInput = (event) => {
319
- if (!(event.currentTarget instanceof HTMLInputElement)) return;
320
- this.emitIntent({
321
- kind: "google_otp_code_changed",
322
- code: event.currentTarget.value
323
- });
324
- };
325
- this.onGoogleOtpKeydown = (event) => {
326
- if (event.key !== "Enter") return;
327
- event.preventDefault();
328
- this.emitIntent({ kind: "google_otp_submit" });
329
- };
330
- this.onGoogleOtpResend = () => {
331
- this.emitIntent({ kind: "google_otp_resend" });
332
- };
333
- this.onGoogleRegistrationReroll = () => {
334
- this.emitIntent({ kind: "google_registration_reroll" });
335
- };
336
- this.onGoogleClick = () => {
337
- this.lastMethod = "google";
338
- this.emitIntent({
339
- kind: "external_auth",
340
- provider: "google"
341
- });
342
- };
343
- this.onNoticeRetry = () => {
344
- if (this.lastMethod === "google" && isAuthMenuGoogleActionReady(this.viewModel)) this.onGoogleClick();
345
- else this.onPrimaryClick();
346
- };
347
- this.onLinkDeviceOpen = () => {
348
- this.emitIntent({ kind: "link_device_open" });
349
- };
350
- this.onRecoveryOpen = () => {
351
- this.emitIntent({ kind: "recovery_open" });
352
- };
353
- this.onRecoveryCodeInput = (event) => {
354
- if (!(event.currentTarget instanceof HTMLInputElement)) return;
355
- if (this.viewModel.kind !== "recovery") return;
356
- const input = event.currentTarget;
357
- const raw = input.value;
358
- const rejected = rejectedRecoveryCharacters(raw);
359
- if (rejected.length > 0) this.showRecoveryRejection(rejected);
360
- const caret = recoveryInputCharacters(raw.slice(0, input.selectionStart ?? raw.length)).length;
361
- const code = recoveryInputCharacters(raw).slice(0, 32);
362
- if (input.value !== code) {
363
- input.value = code;
364
- input.setSelectionRange(Math.min(caret, code.length), Math.min(caret, code.length));
365
- }
366
- this.syncRecoverySelection(input);
367
- this.emitIntent({
368
- kind: "recovery_code_changed",
369
- recoveryCode: code
370
- });
371
- };
372
- this.onRecoverySelectionMove = (event) => {
373
- if (event.currentTarget instanceof HTMLInputElement) this.syncRecoverySelection(event.currentTarget);
374
- };
375
- this.onRecoveryCodeClick = (event) => {
376
- const input = event.currentTarget;
377
- if (!(input instanceof HTMLInputElement)) return;
378
- if (input.selectionStart === input.selectionEnd) {
379
- const caret = recoveryCaretAtPoint(this.props.element, event.clientX, event.clientY, input.value.length);
380
- if (caret !== null) input.setSelectionRange(caret, caret);
381
- }
382
- this.syncRecoverySelection(input);
383
- };
384
- this.clearRecoveryRejection = () => {
385
- this.recoveryRejectionTimer = null;
386
- this.setState({ recoveryRejection: null });
387
- };
388
- this.endRecoveryArrival = () => {
389
- this.recoveryArrivalTimer = null;
390
- this.recoveryArrival = null;
391
- };
392
- this.onRecoveryCodeBlur = () => {
393
- this.setState({ recoverySelection: null });
394
- };
395
- this.onRecoverySubmit = (event) => {
396
- event.preventDefault();
397
- this.emitIntent({ kind: "recovery_code_submit" });
398
- };
399
- this.onRecoveryPasskeySelected = () => {
400
- this.emitIntent({ kind: "recovery_passkey_selected" });
401
- };
402
- this.onRecoveryGoogleSelected = () => {
403
- this.emitIntent({ kind: "recovery_google_selected" });
404
- };
405
- this.onRecoveryGoogleOtpCodeInput = (event) => {
406
- if (!(event.currentTarget instanceof HTMLInputElement)) return;
407
- this.emitIntent({
408
- kind: "recovery_google_otp_code_changed",
409
- code: event.currentTarget.value
410
- });
411
- };
412
- this.onRecoveryGoogleOtpKeydown = (event) => {
413
- if (event.key !== "Enter") return;
414
- event.preventDefault();
415
- this.emitIntent({ kind: "recovery_google_otp_submit" });
416
- };
417
- this.onRecoveryGoogleOtpSubmit = () => {
418
- this.emitIntent({ kind: "recovery_google_otp_submit" });
419
- };
420
- this.onRecoveryCreatePasskey = () => {
421
- this.emitIntent({ kind: "recovery_create_passkey" });
422
- };
423
- this.onRecoverySignIn = () => {
424
- this.emitIntent({ kind: "recovery_sign_in" });
425
- };
426
- this.onLinkDeviceCreatePasskey = () => {
427
- this.emitIntent({ kind: "link_device_create_passkey" });
428
- };
429
- this.onLinkDeviceFactorChange = (event) => {
430
- if (!(event.currentTarget instanceof HTMLInputElement)) return;
431
- const targetFactor = event.currentTarget.value === "email_otp" ? { kind: "email_otp" } : { kind: "passkey_prf" };
432
- this.emitIntent({
433
- kind: "link_device_factor_selected",
434
- targetFactor
435
- });
436
- };
437
- this.onLinkDeviceTargetEmailInput = (event) => {
438
- if (!(event.currentTarget instanceof HTMLInputElement)) return;
439
- this.emitIntent({
440
- kind: "link_device_target_email_changed",
441
- emailAddress: event.currentTarget.value
442
- });
443
- };
444
- this.onLinkDeviceStart = () => {
445
- this.emitIntent({ kind: "link_device_start" });
446
- };
447
- this.onLinkDeviceEmailOtpCodeInput = (event) => {
448
- if (!(event.currentTarget instanceof HTMLInputElement)) return;
449
- this.emitIntent({
450
- kind: "link_device_email_otp_code_changed",
451
- code: event.currentTarget.value
452
- });
453
- };
454
- this.onLinkDeviceEmailOtpKeydown = (event) => {
455
- if (event.key !== "Enter") return;
456
- event.preventDefault();
457
- this.emitIntent({ kind: "link_device_email_otp_submit" });
458
- };
459
- this.onLinkDeviceEmailOtpResend = () => {
460
- this.emitIntent({ kind: "link_device_email_otp_resend" });
461
- };
462
- this.onLinkDeviceEmailOtpSubmit = () => {
463
- this.emitIntent({ kind: "link_device_email_otp_submit" });
464
- };
465
- }
172
+ state = {
173
+ accountMenu: "closed",
174
+ recoverySelection: null,
175
+ recoveryRejection: null
176
+ };
177
+ recoveryDrawnCode = "";
178
+ recoveryArrival = null;
179
+ recoveryArrivalTimer = null;
180
+ recoveryRejectionTimer = null;
181
+ accountMenuExitTimer = null;
182
+ accountMenuChoice = null;
183
+ previouslyFocusedElement = null;
184
+ shouldFocusInitialControl = true;
185
+ contentResizeObserver = null;
186
+ contentHeightFrame = null;
187
+ previousLinkDeviceStateKind = null;
188
+ previousRecoveryStage = null;
189
+ lastMethod = "passkey";
466
190
  get viewModel() {
467
191
  return this.props.viewModel;
468
192
  }
@@ -557,6 +281,17 @@ var AuthMenuSurface = class extends Component {
557
281
  this.contentResizeObserver.observe(sizer);
558
282
  window.addEventListener("resize", this.queueContentHeightSync);
559
283
  }
284
+ queueContentHeightSync = () => {
285
+ if (this.contentHeightFrame !== null) cancelAnimationFrame(this.contentHeightFrame);
286
+ this.contentHeightFrame = requestAnimationFrame(this.syncContentHeight);
287
+ };
288
+ syncContentHeight = () => {
289
+ this.contentHeightFrame = null;
290
+ const switcher = this.props.element.querySelector(".seams-content-switcher");
291
+ const sizer = this.props.element.querySelector(".seams-content-sizer");
292
+ if (!switcher || !sizer) return;
293
+ this.props.styles.setDynamicDeclarations(this.props.element.id + "-height", "#" + this.props.element.id + " .seams-content-switcher", { height: sizer.scrollHeight + "px" });
294
+ };
560
295
  focusInitialControl() {
561
296
  if (!this.props.element.isConnected || !this.shouldFocusInitialControl) return;
562
297
  this.shouldFocusInitialControl = false;
@@ -570,9 +305,197 @@ var AuthMenuSurface = class extends Component {
570
305
  if (!target?.isConnected) return;
571
306
  target.focus();
572
307
  }
308
+ onKeydown = (event) => {
309
+ if (event.key === "Escape") {
310
+ event.preventDefault();
311
+ if (this.viewModel && recoveryNavigationLocked(this.viewModel)) return;
312
+ if (this.accountMenuOpen) {
313
+ this.closeAccountMenu();
314
+ return;
315
+ }
316
+ this.emitIntent({
317
+ kind: "close",
318
+ reason: "escape"
319
+ });
320
+ return;
321
+ }
322
+ if (event.key !== "Tab") return;
323
+ const focusable = this.focusableElements();
324
+ if (focusable.length === 0) return;
325
+ const active = document.activeElement;
326
+ const activeIndex = focusable.indexOf(active instanceof HTMLElement ? active : focusable[0]);
327
+ if (event.shiftKey && activeIndex <= 0) {
328
+ event.preventDefault();
329
+ focusable[focusable.length - 1]?.focus();
330
+ } else if (!event.shiftKey && activeIndex === focusable.length - 1) {
331
+ event.preventDefault();
332
+ focusable[0]?.focus();
333
+ }
334
+ };
573
335
  focusableElements() {
574
336
  return Array.from(this.props.element.querySelectorAll("button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex=\"-1\"])"));
575
337
  }
338
+ onBackClick = () => {
339
+ this.emitIntent({ kind: "back" });
340
+ };
341
+ /**
342
+ * Escape backs out of the in-progress views the back arrow already serves.
343
+ * The host dialog is opened non-modally, so it never receives the UA's
344
+ * `cancel` event — without this the key does nothing while a ceremony is
345
+ * pending. Deliberately scoped to those views: from the menu itself Escape
346
+ * belongs to the embedding page, not to us.
347
+ */
348
+ onKeyDown = (event) => {
349
+ if (event.key !== "Escape" || event.defaultPrevented) return;
350
+ const viewModel = this.viewModel;
351
+ if (!viewModel || viewModel.kind !== "recovery" && !isAuthMenuLoadingStatus(viewModel.status)) return;
352
+ event.preventDefault();
353
+ event.stopPropagation();
354
+ if (recoveryNavigationLocked(viewModel)) return;
355
+ this.emitIntent({ kind: "back" });
356
+ };
357
+ onIntentSwitchClick = () => {
358
+ const viewModel = this.viewModel;
359
+ if (!viewModel) return;
360
+ this.emitIntent({
361
+ kind: "mode_selected",
362
+ mode: modeSwitchCopy(viewModel.mode).nextMode
363
+ });
364
+ };
365
+ onRegistrationReroll = () => {
366
+ this.emitIntent({ kind: "registration_reroll" });
367
+ };
368
+ onPasskeyNameInput = (event) => {
369
+ if (!(event.currentTarget instanceof HTMLInputElement)) return;
370
+ this.emitIntent({
371
+ kind: "passkey_name_changed",
372
+ passkeyName: event.currentTarget.value
373
+ });
374
+ };
375
+ onLoginAccountSelect = (event) => {
376
+ const option = event.currentTarget;
377
+ if (!(option instanceof HTMLButtonElement)) return;
378
+ const walletId = option.dataset.walletId;
379
+ const authMethod = option.dataset.authMethod;
380
+ const viewModel = this.viewModel;
381
+ if (!walletId || viewModel.kind !== "passkey" || viewModel.mode !== "login") return;
382
+ const selected = viewModel.accountOptions.find((account) => account.walletId === walletId && account.authMethod === authMethod);
383
+ const previous = selectedLoginAccount(viewModel);
384
+ if (!selected || !previous || this.accountMenuChoice) return;
385
+ const blink = blinkMenuItem(option);
386
+ if (!blink) return;
387
+ const choice = {
388
+ chosen: selected,
389
+ previous
390
+ };
391
+ this.accountMenuChoice = choice;
392
+ this.emitIntent({
393
+ kind: "login_account_selected",
394
+ walletId: selected.walletId,
395
+ authMethod: selected.authMethod
396
+ });
397
+ blink.then(() => {
398
+ if (this.accountMenuChoice === choice) this.closeAccountMenu();
399
+ });
400
+ };
401
+ onAccountMenuToggle = () => {
402
+ if (this.accountMenuOpen) this.closeAccountMenu();
403
+ else this.openAccountMenu();
404
+ };
405
+ onDocumentPointerDown = (event) => {
406
+ if (!this.accountMenuOpen || !(event.target instanceof Node)) return;
407
+ if (this.props.element.querySelector(".seams-account-menu")?.contains(event.target)) return;
408
+ this.closeAccountMenu();
409
+ };
410
+ onPrimaryClick = () => {
411
+ const viewModel = this.viewModel;
412
+ if (!viewModel || !isAuthMenuActionReady(viewModel)) return;
413
+ if (viewModel.kind === "link_device") return;
414
+ if (viewModel.kind === "google_otp_login") {
415
+ this.emitIntent({ kind: "google_otp_submit" });
416
+ return;
417
+ }
418
+ if (viewModel.kind === "google_registration") {
419
+ this.emitIntent({ kind: "google_registration_complete" });
420
+ return;
421
+ }
422
+ const intent = viewModel.mode === "register" ? {
423
+ kind: "submit",
424
+ mode: "register",
425
+ passkeyName: viewModel.passkeyName
426
+ } : {
427
+ kind: "submit",
428
+ mode: "login"
429
+ };
430
+ this.lastMethod = "passkey";
431
+ this.emitIntent(intent);
432
+ };
433
+ onGoogleOtpCodeInput = (event) => {
434
+ if (!(event.currentTarget instanceof HTMLInputElement)) return;
435
+ this.emitIntent({
436
+ kind: "google_otp_code_changed",
437
+ code: event.currentTarget.value
438
+ });
439
+ };
440
+ onGoogleOtpKeydown = (event) => {
441
+ if (event.key !== "Enter") return;
442
+ event.preventDefault();
443
+ this.emitIntent({ kind: "google_otp_submit" });
444
+ };
445
+ onGoogleOtpResend = () => {
446
+ this.emitIntent({ kind: "google_otp_resend" });
447
+ };
448
+ onGoogleRegistrationReroll = () => {
449
+ this.emitIntent({ kind: "google_registration_reroll" });
450
+ };
451
+ onGoogleClick = () => {
452
+ this.lastMethod = "google";
453
+ this.emitIntent({
454
+ kind: "external_auth",
455
+ provider: "google"
456
+ });
457
+ };
458
+ onNoticeRetry = () => {
459
+ if (this.lastMethod === "google" && isAuthMenuGoogleActionReady(this.viewModel)) this.onGoogleClick();
460
+ else this.onPrimaryClick();
461
+ };
462
+ onLinkDeviceOpen = () => {
463
+ this.emitIntent({ kind: "link_device_open" });
464
+ };
465
+ onRecoveryOpen = () => {
466
+ this.emitIntent({ kind: "recovery_open" });
467
+ };
468
+ onRecoveryCodeInput = (event) => {
469
+ if (!(event.currentTarget instanceof HTMLInputElement)) return;
470
+ if (this.viewModel.kind !== "recovery") return;
471
+ const input = event.currentTarget;
472
+ const raw = input.value;
473
+ const rejected = rejectedRecoveryCharacters(raw);
474
+ if (rejected.length > 0) this.showRecoveryRejection(rejected);
475
+ const caret = recoveryInputCharacters(raw.slice(0, input.selectionStart ?? raw.length)).length;
476
+ const code = recoveryInputCharacters(raw).slice(0, 32);
477
+ if (input.value !== code) {
478
+ input.value = code;
479
+ input.setSelectionRange(Math.min(caret, code.length), Math.min(caret, code.length));
480
+ }
481
+ this.syncRecoverySelection(input);
482
+ this.emitIntent({
483
+ kind: "recovery_code_changed",
484
+ recoveryCode: code
485
+ });
486
+ };
487
+ onRecoverySelectionMove = (event) => {
488
+ if (event.currentTarget instanceof HTMLInputElement) this.syncRecoverySelection(event.currentTarget);
489
+ };
490
+ onRecoveryCodeClick = (event) => {
491
+ const input = event.currentTarget;
492
+ if (!(input instanceof HTMLInputElement)) return;
493
+ if (input.selectionStart === input.selectionEnd) {
494
+ const caret = recoveryCaretAtPoint(this.props.element, event.clientX, event.clientY, input.value.length);
495
+ if (caret !== null) input.setSelectionRange(caret, caret);
496
+ }
497
+ this.syncRecoverySelection(input);
498
+ };
576
499
  showRecoveryRejection(characters) {
577
500
  const parity = this.state.recoveryRejection?.parity === 0 ? 1 : 0;
578
501
  this.setState({ recoveryRejection: {
@@ -582,6 +505,10 @@ var AuthMenuSurface = class extends Component {
582
505
  if (this.recoveryRejectionTimer !== null) clearTimeout(this.recoveryRejectionTimer);
583
506
  this.recoveryRejectionTimer = setTimeout(this.clearRecoveryRejection, 2e3);
584
507
  }
508
+ clearRecoveryRejection = () => {
509
+ this.recoveryRejectionTimer = null;
510
+ this.setState({ recoveryRejection: null });
511
+ };
585
512
  recoveryCodeArrival(code) {
586
513
  const drawn = this.recoveryDrawnCode;
587
514
  if (code === drawn) return this.recoveryArrival;
@@ -597,6 +524,13 @@ var AuthMenuSurface = class extends Component {
597
524
  this.recoveryArrivalTimer = setTimeout(this.endRecoveryArrival, 600);
598
525
  return this.recoveryArrival;
599
526
  }
527
+ endRecoveryArrival = () => {
528
+ this.recoveryArrivalTimer = null;
529
+ this.recoveryArrival = null;
530
+ };
531
+ onRecoveryCodeBlur = () => {
532
+ this.setState({ recoverySelection: null });
533
+ };
600
534
  syncRecoverySelection(input) {
601
535
  const length = input.value.length;
602
536
  const start = Math.min(input.selectionStart ?? length, length);
@@ -608,6 +542,76 @@ var AuthMenuSurface = class extends Component {
608
542
  end
609
543
  } });
610
544
  }
545
+ onRecoverySubmit = (event) => {
546
+ event.preventDefault();
547
+ this.emitIntent({ kind: "recovery_code_submit" });
548
+ };
549
+ onRecoveryPasskeySelected = () => {
550
+ this.emitIntent({ kind: "recovery_passkey_selected" });
551
+ };
552
+ onRecoveryGoogleSelected = () => {
553
+ this.emitIntent({ kind: "recovery_google_selected" });
554
+ };
555
+ onRecoveryGoogleOtpCodeInput = (event) => {
556
+ if (!(event.currentTarget instanceof HTMLInputElement)) return;
557
+ this.emitIntent({
558
+ kind: "recovery_google_otp_code_changed",
559
+ code: event.currentTarget.value
560
+ });
561
+ };
562
+ onRecoveryGoogleOtpKeydown = (event) => {
563
+ if (event.key !== "Enter") return;
564
+ event.preventDefault();
565
+ this.emitIntent({ kind: "recovery_google_otp_submit" });
566
+ };
567
+ onRecoveryGoogleOtpSubmit = () => {
568
+ this.emitIntent({ kind: "recovery_google_otp_submit" });
569
+ };
570
+ onRecoveryCreatePasskey = () => {
571
+ this.emitIntent({ kind: "recovery_create_passkey" });
572
+ };
573
+ onRecoverySignIn = () => {
574
+ this.emitIntent({ kind: "recovery_sign_in" });
575
+ };
576
+ onLinkDeviceCreatePasskey = () => {
577
+ this.emitIntent({ kind: "link_device_create_passkey" });
578
+ };
579
+ onLinkDeviceFactorChange = (event) => {
580
+ if (!(event.currentTarget instanceof HTMLInputElement)) return;
581
+ const targetFactor = event.currentTarget.value === "email_otp" ? { kind: "email_otp" } : { kind: "passkey_prf" };
582
+ this.emitIntent({
583
+ kind: "link_device_factor_selected",
584
+ targetFactor
585
+ });
586
+ };
587
+ onLinkDeviceTargetEmailInput = (event) => {
588
+ if (!(event.currentTarget instanceof HTMLInputElement)) return;
589
+ this.emitIntent({
590
+ kind: "link_device_target_email_changed",
591
+ emailAddress: event.currentTarget.value
592
+ });
593
+ };
594
+ onLinkDeviceStart = () => {
595
+ this.emitIntent({ kind: "link_device_start" });
596
+ };
597
+ onLinkDeviceEmailOtpCodeInput = (event) => {
598
+ if (!(event.currentTarget instanceof HTMLInputElement)) return;
599
+ this.emitIntent({
600
+ kind: "link_device_email_otp_code_changed",
601
+ code: event.currentTarget.value
602
+ });
603
+ };
604
+ onLinkDeviceEmailOtpKeydown = (event) => {
605
+ if (event.key !== "Enter") return;
606
+ event.preventDefault();
607
+ this.emitIntent({ kind: "link_device_email_otp_submit" });
608
+ };
609
+ onLinkDeviceEmailOtpResend = () => {
610
+ this.emitIntent({ kind: "link_device_email_otp_resend" });
611
+ };
612
+ onLinkDeviceEmailOtpSubmit = () => {
613
+ this.emitIntent({ kind: "link_device_email_otp_submit" });
614
+ };
611
615
  emitIntent(intent) {
612
616
  this.props.onIntent(intent);
613
617
  }
@@ -1130,15 +1134,16 @@ var AuthMenuSurface = class extends Component {
1130
1134
  const status = viewModel.status;
1131
1135
  if (status.kind !== "busy") return /* @__PURE__ */ jsx(Fragment$1, {});
1132
1136
  const waitingText = status.headline;
1137
+ const prompt = status.illustration ? AUTH_MENU_WAITING_PROMPTS[status.illustration] : null;
1133
1138
  return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs("div", {
1134
1139
  class: "seams-waiting",
1135
1140
  role: "status",
1136
1141
  "aria-live": "polite",
1137
1142
  children: [
1138
- status.illustration === "passkey" ? /* @__PURE__ */ jsx("span", {
1143
+ prompt ? /* @__PURE__ */ jsx("span", {
1139
1144
  class: "seams-passkey-prompt",
1140
1145
  role: "img",
1141
- "aria-label": "Passkey authentication",
1146
+ "aria-label": prompt.label,
1142
1147
  children: passkeyRingIcon()
1143
1148
  }) : null,
1144
1149
  /* @__PURE__ */ jsxs("div", {
@@ -1148,9 +1153,9 @@ var AuthMenuSurface = class extends Component {
1148
1153
  class: "seams-waiting-text",
1149
1154
  children: waitingText
1150
1155
  }),
1151
- status.illustration === "passkey" ? /* @__PURE__ */ jsx("span", {
1156
+ prompt ? /* @__PURE__ */ jsx("span", {
1152
1157
  class: "seams-passkey-instruction",
1153
- children: "Complete the prompt on your device."
1158
+ children: prompt.instruction
1154
1159
  }) : null,
1155
1160
  viewModel.showProgress && status.detail && status.detail !== waitingText ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
1156
1161
  class: "seams-waiting-sdk-events",
@@ -1158,10 +1163,10 @@ var AuthMenuSurface = class extends Component {
1158
1163
  }) }) : null
1159
1164
  ]
1160
1165
  }),
1161
- status.illustration !== "passkey" ? /* @__PURE__ */ jsx("div", {
1166
+ prompt ? null : /* @__PURE__ */ jsx("div", {
1162
1167
  "aria-label": "Loading",
1163
1168
  class: "seams-spinner"
1164
- }) : null
1169
+ })
1165
1170
  ]
1166
1171
  }) });
1167
1172
  }