@seams/wallet 0.23.0 → 0.24.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 (601) hide show
  1. package/README.md +19 -2
  2. package/THIRD_PARTY_NOTICES.md +182 -5
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +1 -0
  5. package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +3 -0
  6. package/dist/esm/SeamsWeb/walletIframe/client/authMenuAnchor.js +44 -0
  7. package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +4 -6
  8. package/dist/esm/SeamsWeb/walletIframe/client/registrationCommands.js +12 -0
  9. package/dist/esm/SeamsWeb/walletIframe/client/router.js +67 -31
  10. package/dist/esm/SeamsWeb/walletIframe/client/sessionCommands.js +4 -0
  11. package/dist/esm/SeamsWeb/walletIframe/client/surface/geometry.js +2 -2
  12. package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +2 -2
  13. package/dist/esm/SeamsWeb/walletIframe/host/auth-menu/domain.js +22 -3
  14. package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +6 -2
  15. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +1 -3
  16. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +81 -19
  17. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +1 -4
  18. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +7 -11
  19. package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +86 -0
  20. package/dist/esm/SeamsWeb/walletIframe/shared/configuration.js +23 -1
  21. package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
  22. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +7 -1
  23. package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +20 -1
  24. package/dist/esm/core/authMethods/availability.js +28 -0
  25. package/dist/esm/core/authMethods/availabilityTypes.js +29 -0
  26. package/dist/esm/core/authMethods/plugins.js +17 -0
  27. package/dist/esm/core/config/configBuilder.js +2 -0
  28. package/dist/esm/core/config/defaultConfigs.js +1 -0
  29. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +41 -2
  30. package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +3 -0
  31. package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +1 -1
  32. package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +1 -1
  33. package/dist/esm/core/signingEngine/flows/signEvmFamily/authPlanning.js +2 -1
  34. package/dist/esm/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +29 -12
  35. package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +1 -0
  36. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +2 -1
  37. package/dist/esm/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +1 -0
  38. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +1 -1
  39. package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +5 -0
  40. package/dist/esm/core/signingEngine/flows/signNear/signNear.js +16 -12
  41. package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +2 -3
  42. package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +16 -1
  43. package/dist/esm/core/signingEngine/session/identity/signingLaneAuthBinding.js +6 -0
  44. package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +3 -0
  45. package/dist/esm/core/signingEngine/session/operationState/lanes.js +21 -4
  46. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +94 -0
  47. package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +1 -0
  48. package/dist/esm/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +19 -2
  49. package/dist/esm/core/signingEngine/uiConfirm/ui/confirmation-model.js +3 -1
  50. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +6 -0
  51. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +59 -23
  52. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +13 -0
  53. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +48 -16
  54. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +146 -9
  55. package/dist/esm/core/signingEngine/walletCustody/ceremonyStepRunner.js +8 -0
  56. package/dist/esm/core/signingEngine/walletCustody/resealedEnvelopeResult.js +24 -0
  57. package/dist/esm/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +74 -0
  58. package/dist/esm/core/signingEngine/workerManager/workerDeferred.js +25 -0
  59. package/dist/esm/core/ui/messages.js +15 -4
  60. package/dist/esm/externalNear/controller.js +36 -0
  61. package/dist/esm/externalNear/hot.js +1 -0
  62. package/dist/esm/externalNear/intear.js +1 -0
  63. package/dist/esm/externalNear/message.js +60 -0
  64. package/dist/esm/externalNear/meteor.js +12 -0
  65. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +10 -22
  66. package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +2 -2
  67. package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +7 -4
  68. package/dist/esm/react/components/AccountMenuButton/AddEvmAccount.js +124 -0
  69. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +41 -23
  70. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +220 -164
  71. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +7 -5
  72. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +142 -36
  73. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +11 -2
  74. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +12 -10
  75. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +1 -1
  76. package/dist/esm/react/components/AccountMenuButton/VoiceIdAvailabilityControl.js +186 -0
  77. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +10 -8
  78. package/dist/esm/react/components/AccountMenuButton/icons/ChevronRightIcon.js +8 -0
  79. package/dist/esm/react/components/AccountMenuButton/icons/WalletIcon.js +8 -0
  80. package/dist/esm/react/components/AccountMenuButton/index.js +35 -13
  81. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +8 -4
  82. package/dist/esm/react/context/useLoginStateRefresher.js +10 -2
  83. package/dist/esm/react/index.js +2 -4
  84. package/dist/esm/react/styles/styles.css +22 -332
  85. package/dist/esm/react/styles.css +0 -1
  86. package/dist/esm/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
  87. package/dist/esm/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
  88. package/dist/esm/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
  89. package/dist/esm/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
  90. package/dist/esm/sdk/actions-GYsSR2Q2.js +1 -0
  91. package/dist/esm/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
  92. package/dist/esm/sdk/adapters-D5MZ5NG5.js +2 -0
  93. package/dist/esm/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
  94. package/dist/esm/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
  95. package/dist/esm/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
  96. package/dist/esm/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
  97. package/dist/esm/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
  98. package/dist/esm/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
  99. package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
  100. package/dist/esm/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
  101. package/dist/esm/sdk/configBuilder-DrxXNUpV.js +1 -0
  102. package/dist/esm/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
  103. package/dist/esm/sdk/configuration-CAqANpTI.js +1 -0
  104. package/dist/esm/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
  105. package/dist/esm/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
  106. package/dist/esm/sdk/domainIds-t1lp25yU.js +1 -0
  107. package/dist/esm/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
  108. package/dist/esm/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
  109. package/dist/esm/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
  110. package/dist/esm/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
  111. package/dist/esm/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
  112. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
  113. package/dist/esm/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
  114. package/dist/esm/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
  115. package/dist/esm/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
  116. package/dist/esm/sdk/exportKeypairOperation-BazJvSov.js +1 -0
  117. package/dist/esm/sdk/{helpers-BXezXx19.js → helpers-CXqXyyCU.js} +1 -1
  118. package/dist/esm/sdk/host-C0Is56lU.js +1 -0
  119. package/dist/esm/sdk/icons-DyndJzSh.js +1 -0
  120. package/dist/esm/sdk/indexedDB-C1odKEC6.js +1 -0
  121. package/dist/esm/sdk/intentDigest-BMXki7yB.js +1 -0
  122. package/dist/esm/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
  123. package/dist/esm/sdk/lanes-C7OvAK_L.js +1 -0
  124. package/dist/esm/sdk/localOnly-BB3Rx3J6.js +1 -0
  125. package/dist/esm/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
  126. package/dist/esm/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
  127. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
  128. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
  129. package/dist/esm/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
  130. package/dist/esm/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
  131. package/dist/esm/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
  132. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
  133. package/dist/esm/sdk/presignaturePool-CultzkOG.js +1 -0
  134. package/dist/esm/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
  135. package/dist/esm/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
  136. package/dist/esm/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
  137. package/dist/esm/sdk/registration-CM5a7WYO.js +1 -0
  138. package/dist/esm/sdk/registration-Hv0xi7-L.js +1 -0
  139. package/dist/esm/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
  140. package/dist/esm/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
  141. package/dist/esm/sdk/registrationIntent-DTs2SR9E.js +1 -0
  142. package/dist/esm/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
  143. package/dist/esm/sdk/{requireStepUpAuth-DsNLml1i.js → requireStepUpAuth-B7tC4MrA.js} +1 -1
  144. package/dist/esm/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
  145. package/dist/esm/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
  146. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  147. package/dist/esm/sdk/runtime-auth-CVw1KoVD.js +1 -0
  148. package/dist/esm/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
  149. package/dist/esm/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
  150. package/dist/esm/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
  151. package/dist/esm/sdk/runtime-export-upMPrZ4V.js +1 -0
  152. package/dist/esm/sdk/runtime-near-B64Hn3nc.js +1 -0
  153. package/dist/esm/sdk/runtime-preferences-CULdHkbg.js +1 -0
  154. package/dist/esm/sdk/runtime-recovery-D2saBaJy.js +1 -0
  155. package/dist/esm/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
  156. package/dist/esm/sdk/runtimeContext-CNFJjcns.js +6 -0
  157. package/dist/{public/sdk/sdkSentEvents-BzMVO1AR.js → esm/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
  158. package/dist/{public/sdk/secp256k1-CYu8ENjP.js → esm/sdk/secp256k1-BGVlx50C.js} +1 -1
  159. package/dist/esm/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
  160. package/dist/esm/sdk/shared-DcHtE-D-.js +1 -0
  161. package/dist/esm/sdk/signEvmFamily-PjwUc5MT.js +1 -0
  162. package/dist/{public/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → esm/sdk/signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
  163. package/dist/esm/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
  164. package/dist/esm/sdk/signNear-r8VCOoTh.js +1 -0
  165. package/dist/esm/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
  166. package/dist/esm/sdk/signerDomain-D-EUTlLK.js +1 -0
  167. package/dist/esm/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
  168. package/dist/{public/sdk/signingFlow-Co_QtuHK.js → esm/sdk/signingFlow-BVvteILM.js} +1 -1
  169. package/dist/{public/sdk/signingQueue-Cj9sCJLj.js → esm/sdk/signingQueue-BJzOrwDq.js} +1 -1
  170. package/dist/esm/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
  171. package/dist/{public/sdk/thresholdEcdsa-LvkD6z8-.js → esm/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
  172. package/dist/esm/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
  173. package/dist/esm/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
  174. package/dist/esm/sdk/transactionReview-DSGnpreN.js +1 -0
  175. package/dist/esm/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
  176. package/dist/{public/sdk/transactionState-BaFSiA9t.js → esm/sdk/transactionState-BS1VLT7B.js} +1 -1
  177. package/dist/esm/sdk/tx-confirm-ui.js +418 -109
  178. package/dist/esm/sdk/types-DdzuHlAQ.js +1 -0
  179. package/dist/esm/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
  180. package/dist/esm/sdk/voiceid-host.js +1 -0
  181. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  182. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  183. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  184. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  185. package/dist/esm/sdk/wallet-recovery-BjIQdOha.js +1 -0
  186. package/dist/esm/sdk/wallet-ui.css +1 -1
  187. package/dist/esm/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
  188. package/dist/esm/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
  189. package/dist/esm/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
  190. package/dist/esm/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
  191. package/dist/esm/sdk/walletDbName-DDJXrgA5.js +1 -0
  192. package/dist/esm/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
  193. package/dist/esm/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
  194. package/dist/esm/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
  195. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
  196. package/dist/esm/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
  197. package/dist/{public/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → esm/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
  198. package/dist/esm/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
  199. package/dist/esm/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
  200. package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +4 -1
  201. package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +11 -2
  202. package/dist/esm/shared-ts/src/authorization/voiceIdDeviceAssertion.js +110 -0
  203. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +1 -0
  204. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +1 -0
  205. package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +17 -9
  206. package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +62 -3
  207. package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +1 -1
  208. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +5 -2
  209. package/dist/esm/shared-ts/src/utils/domainIds.js +14 -1
  210. package/dist/esm/shared-ts/src/utils/signerDomain.js +4 -2
  211. package/dist/esm/shared-ts/src/utils/validation.js +4 -1
  212. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +46 -2
  213. package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +116 -6
  214. package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +39 -1
  215. package/dist/esm/voiceid-host.js +47 -0
  216. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  217. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  218. package/dist/public/headers.manifest.json +1 -1
  219. package/dist/public/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
  220. package/dist/public/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
  221. package/dist/public/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
  222. package/dist/public/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
  223. package/dist/public/sdk/actions-GYsSR2Q2.js +1 -0
  224. package/dist/public/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
  225. package/dist/public/sdk/adapters-D5MZ5NG5.js +2 -0
  226. package/dist/public/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
  227. package/dist/public/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
  228. package/dist/public/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
  229. package/dist/public/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
  230. package/dist/public/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
  231. package/dist/public/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
  232. package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
  233. package/dist/public/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
  234. package/dist/public/sdk/configBuilder-DrxXNUpV.js +1 -0
  235. package/dist/public/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
  236. package/dist/public/sdk/configuration-CAqANpTI.js +1 -0
  237. package/dist/public/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
  238. package/dist/public/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
  239. package/dist/public/sdk/domainIds-t1lp25yU.js +1 -0
  240. package/dist/public/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
  241. package/dist/public/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
  242. package/dist/public/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
  243. package/dist/public/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
  244. package/dist/public/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
  245. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
  246. package/dist/public/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
  247. package/dist/public/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
  248. package/dist/public/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
  249. package/dist/public/sdk/exportKeypairOperation-BazJvSov.js +1 -0
  250. package/dist/public/sdk/{helpers-BXezXx19.js → helpers-CXqXyyCU.js} +1 -1
  251. package/dist/public/sdk/host-C0Is56lU.js +1 -0
  252. package/dist/public/sdk/icons-DyndJzSh.js +1 -0
  253. package/dist/public/sdk/indexedDB-C1odKEC6.js +1 -0
  254. package/dist/public/sdk/intentDigest-BMXki7yB.js +1 -0
  255. package/dist/public/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
  256. package/dist/public/sdk/lanes-C7OvAK_L.js +1 -0
  257. package/dist/public/sdk/localOnly-BB3Rx3J6.js +1 -0
  258. package/dist/public/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
  259. package/dist/public/sdk/{mountRecoveryCodeBackupSurface-D3QFgMGE.js → mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
  260. package/dist/public/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
  261. package/dist/public/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
  262. package/dist/public/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
  263. package/dist/public/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
  264. package/dist/public/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
  265. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
  266. package/dist/public/sdk/presignaturePool-CultzkOG.js +1 -0
  267. package/dist/public/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
  268. package/dist/public/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
  269. package/dist/public/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
  270. package/dist/public/sdk/registration-CM5a7WYO.js +1 -0
  271. package/dist/public/sdk/registration-Hv0xi7-L.js +1 -0
  272. package/dist/public/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
  273. package/dist/public/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
  274. package/dist/public/sdk/registrationIntent-DTs2SR9E.js +1 -0
  275. package/dist/public/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
  276. package/dist/public/sdk/{requireStepUpAuth-DsNLml1i.js → requireStepUpAuth-B7tC4MrA.js} +1 -1
  277. package/dist/public/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
  278. package/dist/public/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
  279. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  280. package/dist/public/sdk/runtime-auth-CVw1KoVD.js +1 -0
  281. package/dist/public/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
  282. package/dist/public/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
  283. package/dist/public/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
  284. package/dist/public/sdk/runtime-export-upMPrZ4V.js +1 -0
  285. package/dist/public/sdk/runtime-near-B64Hn3nc.js +1 -0
  286. package/dist/public/sdk/runtime-preferences-CULdHkbg.js +1 -0
  287. package/dist/public/sdk/runtime-recovery-D2saBaJy.js +1 -0
  288. package/dist/public/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
  289. package/dist/public/sdk/runtimeContext-CNFJjcns.js +6 -0
  290. package/dist/{esm/sdk/sdkSentEvents-BzMVO1AR.js → public/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
  291. package/dist/{esm/sdk/secp256k1-CYu8ENjP.js → public/sdk/secp256k1-BGVlx50C.js} +1 -1
  292. package/dist/public/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
  293. package/dist/public/sdk/shared-DcHtE-D-.js +1 -0
  294. package/dist/public/sdk/signEvmFamily-PjwUc5MT.js +1 -0
  295. package/dist/{esm/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → public/sdk/signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
  296. package/dist/public/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
  297. package/dist/public/sdk/signNear-r8VCOoTh.js +1 -0
  298. package/dist/public/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
  299. package/dist/public/sdk/signerDomain-D-EUTlLK.js +1 -0
  300. package/dist/public/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
  301. package/dist/{esm/sdk/signingFlow-Co_QtuHK.js → public/sdk/signingFlow-BVvteILM.js} +1 -1
  302. package/dist/{esm/sdk/signingQueue-Cj9sCJLj.js → public/sdk/signingQueue-BJzOrwDq.js} +1 -1
  303. package/dist/public/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
  304. package/dist/{esm/sdk/thresholdEcdsa-LvkD6z8-.js → public/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
  305. package/dist/public/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
  306. package/dist/public/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
  307. package/dist/public/sdk/transactionReview-DSGnpreN.js +1 -0
  308. package/dist/public/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
  309. package/dist/{esm/sdk/transactionState-BaFSiA9t.js → public/sdk/transactionState-BS1VLT7B.js} +1 -1
  310. package/dist/public/sdk/tx-confirm-ui.js +418 -109
  311. package/dist/public/sdk/types-DdzuHlAQ.js +1 -0
  312. package/dist/public/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
  313. package/dist/public/sdk/voiceid-host.js +1 -0
  314. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  315. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  316. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  317. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  318. package/dist/public/sdk/wallet-recovery-BjIQdOha.js +1 -0
  319. package/dist/public/sdk/wallet-ui.css +1 -1
  320. package/dist/public/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
  321. package/dist/public/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
  322. package/dist/public/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
  323. package/dist/public/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
  324. package/dist/public/sdk/walletDbName-DDJXrgA5.js +1 -0
  325. package/dist/public/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
  326. package/dist/public/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
  327. package/dist/public/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
  328. package/dist/public/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
  329. package/dist/public/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
  330. package/dist/{esm/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → public/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
  331. package/dist/public/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
  332. package/dist/public/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
  333. package/dist/public/sdk/workers/device-linking-key.worker.js +93 -5
  334. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +67 -65
  335. package/dist/public/sdk/workers/email-otp.worker.js +93 -4
  336. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +21 -2
  337. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  338. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +20 -2
  339. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  340. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  341. package/dist/public/wallet-assets.manifest.json +503 -239
  342. package/dist/public/wallet-service/index.html +4 -4
  343. package/dist/types/shared-ts/src/authorization/voiceIdDeviceAssertion.d.ts +32 -0
  344. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -1
  345. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +8 -0
  346. package/dist/types/shared-ts/src/device-linking/wireFields.d.ts +4 -4
  347. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +29 -0
  348. package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -0
  349. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +2 -2
  350. package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +2 -1
  351. package/dist/types/shared-ts/src/signing-lanes/records.d.ts +10 -2
  352. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +2 -2
  353. package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +9 -0
  354. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +3 -3
  355. package/dist/types/shared-ts/src/utils/domainIds.d.ts +4 -5
  356. package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +0 -1
  357. package/dist/types/shared-ts/src/utils/signerDomain.d.ts +3 -0
  358. package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +32 -2
  359. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +15 -1
  360. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +20 -0
  361. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.d.ts +2 -2
  362. package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +1 -1
  363. package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +1 -1
  364. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +22 -0
  365. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +4 -0
  366. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +2 -0
  367. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/authMenuAnchor.d.ts +17 -0
  368. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +4 -0
  369. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/geometry.d.ts +0 -1
  370. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +2 -1
  371. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
  372. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +15 -0
  373. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createRegistrationCommands.d.ts +2 -1
  374. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +7 -2
  375. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +2 -2
  376. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeContext.d.ts +3 -0
  377. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +4 -0
  378. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +0 -1
  379. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +2 -2
  380. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/walletMutationGuard.d.ts +2 -0
  381. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +15 -4
  382. package/dist/types/wallet/src/core/authMethods/availability.d.ts +13 -0
  383. package/dist/types/wallet/src/core/authMethods/availabilityTypes.d.ts +13 -0
  384. package/dist/types/wallet/src/core/authMethods/hostPlugin.d.ts +82 -0
  385. package/dist/types/wallet/src/core/authMethods/hostRegistry.d.ts +5 -0
  386. package/dist/types/wallet/src/core/authMethods/installSession.d.ts +15 -0
  387. package/dist/types/wallet/src/core/authMethods/plugins.d.ts +7 -0
  388. package/dist/types/wallet/src/core/authMethods/prepareEcdsaSession.d.ts +6 -0
  389. package/dist/types/wallet/src/core/authMethods/prepareNearSession.d.ts +18 -0
  390. package/dist/types/wallet/src/core/authMethods/sessionIdentity.d.ts +53 -0
  391. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +11 -1
  392. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +53 -2
  393. package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
  394. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +1 -1
  395. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportMaterial.d.ts +6 -3
  396. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.d.ts +8 -2
  397. package/dist/types/wallet/src/core/signingEngine/session/availability/availableSigningLanes.d.ts +10 -10
  398. package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +1 -1
  399. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +3 -1
  400. package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +16 -4
  401. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +13 -4
  402. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +15 -6
  403. package/dist/types/wallet/src/core/signingEngine/session/operationState/lanes.d.ts +11 -4
  404. package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +3 -3
  405. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.d.ts +6 -0
  406. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodSelection.d.ts +1 -1
  407. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -1
  408. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +6 -0
  409. package/dist/types/wallet/src/core/signingEngine/uiConfirm/transactionReviewAdmission.d.ts +11 -1
  410. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirm-ui-types.d.ts +2 -0
  411. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirmation-model.d.ts +1 -1
  412. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +1 -0
  413. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +4 -0
  414. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +1 -1
  415. package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +2 -2
  416. package/dist/types/wallet/src/core/signingEngine/walletCustody/resealedEnvelopeResult.d.ts +10 -0
  417. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -1
  418. package/dist/types/wallet/src/core/types/seams.d.ts +4 -0
  419. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  420. package/dist/types/wallet/src/externalNear/controller.d.ts +2 -1
  421. package/dist/types/wallet/src/externalNear/hot.d.ts +3 -2
  422. package/dist/types/wallet/src/externalNear/index.d.ts +1 -1
  423. package/dist/types/wallet/src/externalNear/intear.d.ts +3 -2
  424. package/dist/types/wallet/src/externalNear/message.d.ts +14 -0
  425. package/dist/types/wallet/src/externalNear/meteor.d.ts +5 -2
  426. package/dist/types/wallet/src/externalNear/meteorRequest.d.ts +1 -1
  427. package/dist/types/wallet/src/externalNear/types.d.ts +22 -2
  428. package/dist/types/wallet/src/index.d.ts +1 -0
  429. package/dist/types/wallet/src/react/components/AccountMenuButton/AddEvmAccount.d.ts +29 -0
  430. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodRow.d.ts +8 -3
  431. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsView.d.ts +1 -2
  432. package/dist/types/wallet/src/react/components/AccountMenuButton/VoiceIdAvailabilityControl.d.ts +19 -0
  433. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ChevronRightIcon.d.ts +2 -0
  434. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/WalletIcon.d.ts +2 -0
  435. package/dist/types/wallet/src/react/index.d.ts +1 -4
  436. package/dist/types/wallet/src/voiceid-host.d.ts +52 -0
  437. package/dist/workers/device-linking-key.worker.js +93 -5
  438. package/dist/workers/ecdsa-derivation-client.worker.js +67 -65
  439. package/dist/workers/email-otp.worker.js +93 -4
  440. package/dist/workers/passkey-mpc-export.worker.js +21 -2
  441. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  442. package/dist/workers/wallet-custody-ceremony.worker.js +20 -2
  443. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  444. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  445. package/package.json +8 -3
  446. package/dist/esm/react/components/AccountMenuButton/icons/PlusIcon.js +0 -8
  447. package/dist/esm/react/components/VoiceAssistantCard.css +0 -313
  448. package/dist/esm/react/components/VoiceAssistantCard.js +0 -150
  449. package/dist/esm/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
  450. package/dist/esm/sdk/activeWalletSession-BtEHhe99.js +0 -1
  451. package/dist/esm/sdk/adapters-CgJpSAxH.js +0 -2
  452. package/dist/esm/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
  453. package/dist/esm/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
  454. package/dist/esm/sdk/configBuilder-BMNShuOu.js +0 -1
  455. package/dist/esm/sdk/domainIds-C3fUa33Q.js +0 -1
  456. package/dist/esm/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
  457. package/dist/esm/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
  458. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
  459. package/dist/esm/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
  460. package/dist/esm/sdk/host-C5KYWEcs.js +0 -1
  461. package/dist/esm/sdk/intentDigest--FZ63NBy.js +0 -1
  462. package/dist/esm/sdk/lanes-l274pbT5.js +0 -1
  463. package/dist/esm/sdk/localOnly-CvFSZFUy.js +0 -1
  464. package/dist/esm/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
  465. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
  466. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
  467. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
  468. package/dist/esm/sdk/presignaturePool-DNiA3sgr.js +0 -1
  469. package/dist/esm/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
  470. package/dist/esm/sdk/registration-CIxJvbTo.js +0 -1
  471. package/dist/esm/sdk/registration-CeOmKyCG.js +0 -1
  472. package/dist/esm/sdk/registrationIntent-DW_kKWlx.js +0 -1
  473. package/dist/esm/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
  474. package/dist/esm/sdk/runtime-auth-C0V-5znH.js +0 -1
  475. package/dist/esm/sdk/runtime-device-link-B1jpHQSF.js +0 -1
  476. package/dist/esm/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
  477. package/dist/esm/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
  478. package/dist/esm/sdk/runtime-export-Ba12ChDI.js +0 -1
  479. package/dist/esm/sdk/runtime-near-DRrdWzmr.js +0 -1
  480. package/dist/esm/sdk/runtime-preferences-BWyhRaBA.js +0 -1
  481. package/dist/esm/sdk/runtime-recovery-DlJlaZlf.js +0 -1
  482. package/dist/esm/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
  483. package/dist/esm/sdk/sessionObservationRevision-abErAhd6.js +0 -1
  484. package/dist/esm/sdk/shared-B95wnpoD.js +0 -6
  485. package/dist/esm/sdk/signEvmFamily-C4XMiSue.js +0 -1
  486. package/dist/esm/sdk/signNear-B_UcqMRf.js +0 -1
  487. package/dist/esm/sdk/signerDomain-YEHkugWX.js +0 -1
  488. package/dist/esm/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
  489. package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
  490. package/dist/esm/sdk/types-BrEW276O.js +0 -1
  491. package/dist/esm/sdk/wallet-recovery-BEui57xM.js +0 -1
  492. package/dist/esm/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
  493. package/dist/esm/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
  494. package/dist/esm/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
  495. package/dist/esm/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
  496. package/dist/esm/sdk/walletDbName-BVZhb4xF.js +0 -1
  497. package/dist/esm/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
  498. package/dist/esm/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
  499. package/dist/esm/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
  500. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
  501. package/dist/esm/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
  502. package/dist/esm/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
  503. package/dist/public/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
  504. package/dist/public/sdk/activeWalletSession-BtEHhe99.js +0 -1
  505. package/dist/public/sdk/adapters-CgJpSAxH.js +0 -2
  506. package/dist/public/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
  507. package/dist/public/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
  508. package/dist/public/sdk/configBuilder-BMNShuOu.js +0 -1
  509. package/dist/public/sdk/domainIds-C3fUa33Q.js +0 -1
  510. package/dist/public/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
  511. package/dist/public/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
  512. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
  513. package/dist/public/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
  514. package/dist/public/sdk/host-C5KYWEcs.js +0 -1
  515. package/dist/public/sdk/intentDigest--FZ63NBy.js +0 -1
  516. package/dist/public/sdk/lanes-l274pbT5.js +0 -1
  517. package/dist/public/sdk/localOnly-CvFSZFUy.js +0 -1
  518. package/dist/public/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
  519. package/dist/public/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
  520. package/dist/public/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
  521. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
  522. package/dist/public/sdk/presignaturePool-DNiA3sgr.js +0 -1
  523. package/dist/public/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
  524. package/dist/public/sdk/registration-CIxJvbTo.js +0 -1
  525. package/dist/public/sdk/registration-CeOmKyCG.js +0 -1
  526. package/dist/public/sdk/registrationIntent-DW_kKWlx.js +0 -1
  527. package/dist/public/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
  528. package/dist/public/sdk/runtime-auth-C0V-5znH.js +0 -1
  529. package/dist/public/sdk/runtime-device-link-B1jpHQSF.js +0 -1
  530. package/dist/public/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
  531. package/dist/public/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
  532. package/dist/public/sdk/runtime-export-Ba12ChDI.js +0 -1
  533. package/dist/public/sdk/runtime-near-DRrdWzmr.js +0 -1
  534. package/dist/public/sdk/runtime-preferences-BWyhRaBA.js +0 -1
  535. package/dist/public/sdk/runtime-recovery-DlJlaZlf.js +0 -1
  536. package/dist/public/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
  537. package/dist/public/sdk/sessionObservationRevision-abErAhd6.js +0 -1
  538. package/dist/public/sdk/shared-B95wnpoD.js +0 -6
  539. package/dist/public/sdk/signEvmFamily-C4XMiSue.js +0 -1
  540. package/dist/public/sdk/signNear-B_UcqMRf.js +0 -1
  541. package/dist/public/sdk/signerDomain-YEHkugWX.js +0 -1
  542. package/dist/public/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
  543. package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
  544. package/dist/public/sdk/types-BrEW276O.js +0 -1
  545. package/dist/public/sdk/wallet-recovery-BEui57xM.js +0 -1
  546. package/dist/public/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
  547. package/dist/public/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
  548. package/dist/public/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
  549. package/dist/public/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
  550. package/dist/public/sdk/walletDbName-BVZhb4xF.js +0 -1
  551. package/dist/public/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
  552. package/dist/public/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
  553. package/dist/public/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
  554. package/dist/public/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
  555. package/dist/public/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
  556. package/dist/public/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
  557. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +0 -2
  558. package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -37
  559. package/dist/types/wallet/src/react/components/VoiceAssistantCard.typecheck.d.ts +0 -2
  560. /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
  561. /package/dist/esm/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
  562. /package/dist/esm/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
  563. /package/dist/esm/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
  564. /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
  565. /package/dist/esm/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
  566. /package/dist/esm/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
  567. /package/dist/esm/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
  568. /package/dist/esm/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
  569. /package/dist/esm/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
  570. /package/dist/esm/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
  571. /package/dist/esm/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
  572. /package/dist/esm/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
  573. /package/dist/esm/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
  574. /package/dist/esm/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
  575. /package/dist/esm/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
  576. /package/dist/esm/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
  577. /package/dist/esm/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  578. /package/dist/esm/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
  579. /package/dist/esm/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
  580. /package/dist/esm/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
  581. /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
  582. /package/dist/public/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
  583. /package/dist/public/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
  584. /package/dist/public/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
  585. /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
  586. /package/dist/public/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
  587. /package/dist/public/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
  588. /package/dist/public/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
  589. /package/dist/public/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
  590. /package/dist/public/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
  591. /package/dist/public/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
  592. /package/dist/public/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
  593. /package/dist/public/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
  594. /package/dist/public/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
  595. /package/dist/public/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
  596. /package/dist/public/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
  597. /package/dist/public/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
  598. /package/dist/public/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  599. /package/dist/public/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
  600. /package/dist/public/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
  601. /package/dist/public/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
@@ -353,14 +353,6 @@
353
353
  line-height: 1.45;
354
354
  }
355
355
 
356
- .seams-linked-devices-modal-otp-form {
357
- display: grid;
358
- gap: 0.5rem;
359
- color: var(--seams-colors-textPrimary);
360
- font-size: 0.82rem;
361
- font-weight: 600;
362
- }
363
-
364
356
  .seams-linked-devices-modal-otp-input {
365
357
  width: 100%;
366
358
  min-height: 44px;
@@ -574,38 +566,10 @@
574
566
  border: 0;
575
567
  gap: 0.5rem;
576
568
  }
577
- .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form {
578
- grid-template-columns: minmax(0, 1fr) auto;
579
- gap: 0.5rem 0.75rem;
580
- font-weight: 400;
581
- }
582
- .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form label {
583
- grid-column: 1 / -1;
584
- }
585
569
  .seams-auth-methods-modal-content .seams-linked-devices-modal-secondary {
586
570
  min-height: 44px;
587
571
  font-size: 0.8125rem;
588
572
  }
589
- .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form button {
590
- background: var(--seams-colors-textPrimary);
591
- border-color: transparent;
592
- color: var(--seams-colors-colorBackground);
593
- }
594
- .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form button:hover:not(:disabled) {
595
- background: color-mix(
596
- in srgb,
597
- var(--seams-colors-textPrimary) 84%,
598
- var(--seams-colors-colorBackground)
599
- );
600
- }
601
- @media (max-width: 480px) {
602
- .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form {
603
- grid-template-columns: minmax(0, 1fr);
604
- }
605
- .seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form button {
606
- justify-self: stretch;
607
- }
608
- }
609
573
  .seams-linked-devices-modal-backdrop[data-presentation='page'] .seams-auth-methods-modal-content {
610
574
  max-width: 40rem;
611
575
  }
@@ -619,3 +583,145 @@
619
583
  .seams-linked-devices-modal-body::-webkit-scrollbar {
620
584
  display: none;
621
585
  }
586
+
587
+ /* Each method is a card: icon, name and state, one trailing control, then an
588
+ optional footer for further actions or a removal confirmation. */
589
+ .seams-auth-methods-modal-content .seams-account-menu-section > .seams-account-method-tiles {
590
+ margin-top: 0;
591
+ }
592
+ .seams-auth-methods-modal-content
593
+ .seams-account-method-tiles
594
+ .seams-linked-devices-modal-item--row {
595
+ padding: 0.75rem 0.875rem;
596
+ border-radius: 0.875rem;
597
+ }
598
+ .seams-auth-methods-modal-content
599
+ .seams-linked-devices-modal-item--row
600
+ .seams-linked-devices-modal-item-icon {
601
+ align-self: center;
602
+ }
603
+ .seams-auth-methods-modal-content
604
+ .seams-linked-devices-modal-item--row
605
+ .seams-linked-devices-modal-item-main {
606
+ justify-content: flex-start;
607
+ }
608
+ .seams-auth-method-footer {
609
+ grid-column: 1 / -1;
610
+ display: flex;
611
+ align-items: center;
612
+ justify-content: space-between;
613
+ gap: 0.75rem;
614
+ min-height: 2.75rem;
615
+ margin: 0.75rem -0.875rem -0.75rem;
616
+ padding: 0.25rem 0.875rem;
617
+ border-top: 1px solid var(--seams-colors-borderPrimary);
618
+ }
619
+ .seams-auth-method-footer > .seams-linked-devices-modal-confirm {
620
+ flex: 1;
621
+ margin: 0;
622
+ padding-block: 0.5rem;
623
+ }
624
+
625
+ /* Quiet text actions; Remove carries the error tone, mixed toward the text
626
+ colour so it keeps its contrast on both themes. */
627
+ .seams-auth-method-text-action {
628
+ display: inline-flex;
629
+ align-items: center;
630
+ gap: 0.125rem;
631
+ min-height: 2.25rem;
632
+ margin-inline: -0.5rem;
633
+ padding: 0.375rem 0.5rem;
634
+ border: 0;
635
+ border-radius: var(--seams-shape-control, 10px);
636
+ background: transparent;
637
+ color: var(--seams-colors-textPrimary);
638
+ font: inherit;
639
+ font-size: 0.8125rem;
640
+ font-weight: 600;
641
+ white-space: nowrap;
642
+ cursor: pointer;
643
+ transition: background-color 140ms ease;
644
+ }
645
+ .seams-auth-method-text-action > svg {
646
+ color: var(--seams-colors-textSecondary);
647
+ }
648
+ [dir='rtl'] .seams-auth-method-text-action > svg {
649
+ transform: scaleX(-1);
650
+ }
651
+ .seams-auth-method-text-action[data-tone='danger'],
652
+ .seams-linked-devices-modal-item-detail [data-tone='error'],
653
+ .seams-auth-method-field-error {
654
+ color: color-mix(in oklab, var(--seams-colors-error) 65%, var(--seams-colors-textPrimary));
655
+ }
656
+ .seams-auth-method-text-action:hover:not(:disabled) {
657
+ background: var(--seams-colors-surface2, var(--seams-colors-surface));
658
+ }
659
+ .seams-auth-method-text-action:disabled {
660
+ opacity: 0.45;
661
+ cursor: default;
662
+ }
663
+ .seams-auth-method-text-action:focus-visible {
664
+ outline: 2px solid var(--seams-colors-textPrimary);
665
+ outline-offset: 2px;
666
+ }
667
+ @media (pointer: coarse) {
668
+ .seams-auth-method-text-action {
669
+ min-height: 2.75rem;
670
+ }
671
+ }
672
+
673
+ /* Email OTP's address form opens in its card footer, below a divider. */
674
+ .seams-auth-method-form {
675
+ display: grid;
676
+ flex: 1;
677
+ gap: 0.5rem;
678
+ padding-block: 0.625rem 0.5rem;
679
+ color: var(--seams-colors-textPrimary);
680
+ font-size: 0.8125rem;
681
+ }
682
+ .seams-auth-method-form label {
683
+ font-weight: 600;
684
+ }
685
+ .seams-auth-method-note,
686
+ .seams-auth-method-field-error {
687
+ margin: 0;
688
+ font-size: 0.8125rem;
689
+ line-height: 1.45;
690
+ }
691
+ .seams-auth-method-note {
692
+ color: var(--seams-colors-textSecondary);
693
+ }
694
+ .seams-auth-method-field-error {
695
+ font-weight: 500;
696
+ }
697
+ .seams-auth-method-form .seams-linked-devices-modal-confirm-actions {
698
+ margin-top: 0.25rem;
699
+ }
700
+ .seams-auth-method-primary {
701
+ min-height: 2.5rem;
702
+ padding: 0.4rem 0.75rem;
703
+ border: 1px solid transparent;
704
+ border-radius: 0.6rem;
705
+ background: var(--seams-colors-textPrimary);
706
+ color: var(--seams-colors-colorBackground);
707
+ font: inherit;
708
+ font-size: 0.86rem;
709
+ font-weight: 600;
710
+ cursor: pointer;
711
+ transition: background-color 140ms ease;
712
+ }
713
+ .seams-auth-method-primary:hover:not(:disabled) {
714
+ background: color-mix(
715
+ in srgb,
716
+ var(--seams-colors-textPrimary) 84%,
717
+ var(--seams-colors-colorBackground)
718
+ );
719
+ }
720
+ .seams-auth-method-primary:disabled {
721
+ opacity: 0.5;
722
+ cursor: default;
723
+ }
724
+ .seams-auth-method-primary:focus-visible {
725
+ outline: 2px solid var(--seams-colors-textPrimary);
726
+ outline-offset: 2px;
727
+ }
@@ -21,6 +21,7 @@ function assertRevokeSourceMethod(binding, walletId, targetWalletAuthMethodId) {
21
21
  if (String(binding.scope.wallet.walletId) !== walletId) throw new Error("Unlock this wallet with a sibling authentication method first.");
22
22
  if (String(binding.walletAuthMethodId) === targetWalletAuthMethodId) throw new Error("Unlock with the sibling authentication method before removing this one.");
23
23
  return;
24
+ case "voiceid":
24
25
  case "email_otp":
25
26
  if (String(binding.wallet.walletId) !== walletId) throw new Error("Unlock this wallet with a sibling authentication method first.");
26
27
  if (String(binding.walletAuthMethodId) === targetWalletAuthMethodId) throw new Error("Unlock with the sibling authentication method before removing this one.");
@@ -131,6 +132,7 @@ function credentialDescription(credential) {
131
132
  switch (credential.kind) {
132
133
  case "passkey": return credential.device.label;
133
134
  case "email_otp": return "Email OTP";
135
+ case "voiceid": return "VoiceID";
134
136
  }
135
137
  }
136
138
  /**
@@ -147,7 +149,8 @@ function deviceMetaLine(view, deviceNumber, titleCollides, now, locale) {
147
149
  parts.push(walletText(locale, credential.device.synced ? "Synced passkey" : "Passkey"));
148
150
  const provider = credential.device.providerLabel ?? credential.device.provider;
149
151
  if (provider) parts.push(provider);
150
- } else parts.push(walletText(locale, "Email OTP"));
152
+ } else if (credential.kind === "email_otp") parts.push(walletText(locale, "Email OTP"));
153
+ else parts.push(walletDisplayText(locale, "VoiceID"));
151
154
  if (titleCollides) parts.push(walletText(locale, "Added {value0}", { value0: friendlyDay(viewCreatedAtMs(view), now, locale) }));
152
155
  parts.push(walletText(locale, "Last used {value0}", { value0: friendlyDay(viewLastActivityAtMs(view), now, locale) }));
153
156
  return parts.join(" · ");
@@ -158,6 +161,10 @@ function credentialIcon(credential) {
158
161
  size: 20,
159
162
  strokeWidth: 1.75
160
163
  });
164
+ if (credential.kind === "voiceid") return /* @__PURE__ */ jsx(LaptopIcon, {
165
+ size: 20,
166
+ strokeWidth: 1.75
167
+ });
161
168
  return credential.device.os === "ios" || credential.device.os === "android" ? /* @__PURE__ */ jsx(SmartphoneIcon, {
162
169
  size: 20,
163
170
  strokeWidth: 1.75
@@ -170,7 +177,9 @@ function credentialIcon(credential) {
170
177
  function siblingMethodName(siblings, locale) {
171
178
  if (siblings.length === 1) {
172
179
  const credential = viewCredential(siblings[0]);
173
- return credential.kind === "email_otp" ? walletText(locale, "your email code") : walletText(locale, "your \"{value0}\" passkey", { value0: credential.device.label });
180
+ if (credential.kind === "email_otp") return walletText(locale, "your email code");
181
+ if (credential.kind === "voiceid") return walletDisplayText(locale, "your VoiceID method");
182
+ return walletText(locale, "your \"{value0}\" passkey", { value0: credential.device.label });
174
183
  }
175
184
  if (siblings.every((view) => viewCredential(view).kind === "email_otp")) return walletText(locale, "your email code");
176
185
  return walletText(locale, "another sign-in method");
@@ -11,7 +11,7 @@
11
11
  padding: 0;
12
12
  border: 0;
13
13
  }
14
- .seams-transaction-review + .seams-transaction-group {
14
+ .seams-transaction-review-setting + .seams-transaction-group {
15
15
  padding-top: 40px;
16
16
  border-top: 1px solid var(--seams-colors-borderPrimary);
17
17
  }
@@ -101,16 +101,18 @@
101
101
  cursor: not-allowed;
102
102
  }
103
103
 
104
- /* The switch row uses the card grid, so its edge lines up with the cards. */
105
- .seams-transaction-review {
104
+ /* The switch row uses the card grid, so its edge lines up with the cards. It has its
105
+ own class: the transaction confirmer's review is .seams-transaction-review, and a
106
+ page that loads both must not lay that review out on this grid. */
107
+ .seams-transaction-review-setting {
106
108
  display: grid;
107
109
  grid-template-columns: repeat(3, minmax(0, 1fr));
108
110
  gap: 10px 16px;
109
111
  }
110
- .seams-transaction-review > * {
112
+ .seams-transaction-review-setting > * {
111
113
  grid-column: span 2;
112
114
  }
113
- .seams-transaction-review > p {
115
+ .seams-transaction-review-setting > p {
114
116
  margin: 0;
115
117
  padding-inline: 4px;
116
118
  color: var(--seams-colors-textSecondary);
@@ -266,7 +268,7 @@
266
268
  }
267
269
 
268
270
  @media (max-width: 600px) {
269
- [data-presentation='page'] .seams-transaction-review > * {
271
+ [data-presentation='page'] .seams-transaction-review-setting > * {
270
272
  grid-column: 1 / -1;
271
273
  }
272
274
  [data-presentation='page'] .seams-transaction-review-row {
@@ -315,7 +317,7 @@
315
317
  gap: 16px;
316
318
  padding-bottom: 4px;
317
319
  }
318
- [data-presentation='menu'] .seams-transaction-review + .seams-transaction-group {
320
+ [data-presentation='menu'] .seams-transaction-review-setting + .seams-transaction-group {
319
321
  padding-top: 16px;
320
322
  }
321
323
  [data-presentation='menu'] .seams-transaction-group legend {
@@ -380,10 +382,10 @@
380
382
  [data-presentation='menu'] [data-preview='drawer'] .seams-tp-panel {
381
383
  padding-top: 7px;
382
384
  }
383
- [data-presentation='menu'] .seams-transaction-review > * {
385
+ [data-presentation='menu'] .seams-transaction-review-setting > * {
384
386
  grid-column: 1 / -1;
385
387
  }
386
- [data-presentation='menu'] .seams-transaction-review {
388
+ [data-presentation='menu'] .seams-transaction-review-setting {
387
389
  gap: 8px;
388
390
  }
389
391
  [data-presentation='menu'] .seams-transaction-review-row {
@@ -395,7 +397,7 @@
395
397
  font-size: 14px;
396
398
  }
397
399
  [data-presentation='menu'] .seams-transaction-review-text > span,
398
- [data-presentation='menu'] .seams-transaction-review > p {
400
+ [data-presentation='menu'] .seams-transaction-review-setting > p {
399
401
  font-size: 12px;
400
402
  line-height: 1.4;
401
403
  }
@@ -36,7 +36,7 @@ const TransactionSettingsSection = ({ currentConfirmConfig, onSetUiMode, onToggl
36
36
  style,
37
37
  onClick: compact ? handleClick : void 0,
38
38
  children: [/* @__PURE__ */ jsxs("div", {
39
- className: "seams-transaction-review",
39
+ className: "seams-transaction-review-setting",
40
40
  children: [/* @__PURE__ */ jsxs("div", {
41
41
  className: "seams-transaction-review-row",
42
42
  children: [/* @__PURE__ */ jsxs("span", {
@@ -0,0 +1,186 @@
1
+ import { useSeams } from "../../context/index.js";
2
+ import { AuthenticationMethodRow } from "./AuthenticationMethodRow.js";
3
+ import { ChevronRightIcon } from "./icons/ChevronRightIcon.js";
4
+ import React from "react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import "./TransactionSettingsSection.css";
7
+ //#region src/react/components/AccountMenuButton/VoiceIdAvailabilityControl.tsx
8
+ /** The VoiceID row in Authentication methods: the switch, its state, and the voice actions. */
9
+ function VoiceIdMethodRow({ walletId, disabled, onChanged, title, chip, remove, confirmation, children }) {
10
+ const voice = useVoiceIdAvailability(walletId, onChanged);
11
+ const status = voiceIdStatus(voice);
12
+ const enrolled = (voice.state.kind === "ready" || voice.state.kind === "updating") && voice.state.availability.kind !== "not_enrolled";
13
+ const actions = enrolled || remove ? /* @__PURE__ */ jsxs(Fragment, { children: [enrolled ? /* @__PURE__ */ jsxs("button", {
14
+ type: "button",
15
+ className: "seams-auth-method-text-action",
16
+ disabled: disabled || !voice.ready || !voice.enabled,
17
+ onClick: voice.manage,
18
+ children: ["Manage voice", /* @__PURE__ */ jsx(ChevronRightIcon, {
19
+ size: 16,
20
+ strokeWidth: 1.75
21
+ })]
22
+ }) : /* @__PURE__ */ jsx("span", {}), remove] }) : null;
23
+ return /* @__PURE__ */ jsx(AuthenticationMethodRow, {
24
+ kind: "voiceid",
25
+ title,
26
+ chip,
27
+ description: /* @__PURE__ */ jsx("span", {
28
+ role: "status",
29
+ "data-tone": status.tone,
30
+ children: status.text
31
+ }),
32
+ action: /* @__PURE__ */ jsx(VoiceIdSwitch, {
33
+ voice,
34
+ disabled
35
+ }),
36
+ footer: confirmation ?? actions,
37
+ children
38
+ });
39
+ }
40
+ /** The VoiceID card under "Add a method", before this wallet has a VoiceID method. */
41
+ function VoiceIdSetupRow({ walletId, disabled, onChanged }) {
42
+ const voice = useVoiceIdAvailability(walletId, onChanged);
43
+ const status = voiceIdStatus(voice);
44
+ return /* @__PURE__ */ jsx(AuthenticationMethodRow, {
45
+ kind: "voiceid",
46
+ title: "VoiceID",
47
+ chip: "Experimental",
48
+ description: /* @__PURE__ */ jsx("span", {
49
+ role: "status",
50
+ "data-tone": status.tone,
51
+ children: status.text
52
+ }),
53
+ action: /* @__PURE__ */ jsx(VoiceIdSwitch, {
54
+ voice,
55
+ disabled
56
+ }),
57
+ children: /* @__PURE__ */ jsx("span", {
58
+ className: "seams-linked-devices-modal-item-detail",
59
+ children: "First-time setup downloads voice tools and records three samples. Your current login method stays selected."
60
+ })
61
+ });
62
+ }
63
+ function VoiceIdSwitch({ voice, disabled }) {
64
+ return /* @__PURE__ */ jsx("button", {
65
+ type: "button",
66
+ role: "switch",
67
+ className: "seams-transaction-switch",
68
+ "aria-label": "Enable VoiceID in this browser",
69
+ "aria-checked": voice.enabled,
70
+ disabled: disabled || !voice.ready,
71
+ onClick: voice.toggle,
72
+ children: /* @__PURE__ */ jsx("span", { "aria-hidden": "true" })
73
+ });
74
+ }
75
+ function useVoiceIdAvailability(walletId, onChanged) {
76
+ const { seams, refreshSession } = useSeams();
77
+ const [state, setState] = React.useState({ kind: "loading" });
78
+ React.useEffect(loadAvailability.bind(null, seams, walletId, setState), [seams, walletId]);
79
+ const ready = state.kind === "ready";
80
+ const change = ready ? changeAvailability.bind(null, seams, walletId, state.availability, setState, refreshSession, onChanged) : void 0;
81
+ return {
82
+ state,
83
+ ready,
84
+ enabled: (ready || state.kind === "updating") && state.availability.kind === "enabled",
85
+ toggle: change?.bind(null, "toggle"),
86
+ manage: change?.bind(null, "manage")
87
+ };
88
+ }
89
+ function voiceIdStatus(voice) {
90
+ switch (voice.state.kind) {
91
+ case "loading": return { text: "Checking VoiceID…" };
92
+ case "updating": return { text: "Updating VoiceID…" };
93
+ case "error": return {
94
+ text: voice.state.message,
95
+ tone: "error"
96
+ };
97
+ case "ready":
98
+ if (voice.state.message) return {
99
+ text: voice.state.message,
100
+ tone: "error"
101
+ };
102
+ switch (voice.state.availability.kind) {
103
+ case "enabled": return { text: "On in this browser" };
104
+ case "disabled": return { text: "Off in this browser. Turn it on to manage your voice." };
105
+ case "not_enrolled": return { text: "Not set up in this browser. Turn it on to record your voice." };
106
+ }
107
+ }
108
+ }
109
+ function loadAvailability(seams, walletId, setState) {
110
+ const controller = new AbortController();
111
+ setState({ kind: "loading" });
112
+ readAvailability(seams, walletId, setState, controller.signal);
113
+ return controller.abort.bind(controller);
114
+ }
115
+ async function readAvailability(seams, walletId, setState, signal) {
116
+ try {
117
+ const availability = await seams.registration.getAuthMethodAvailability({
118
+ walletId,
119
+ method: "voiceid"
120
+ });
121
+ if (!signal.aborted) setState({
122
+ kind: "ready",
123
+ availability
124
+ });
125
+ } catch (error) {
126
+ if (!signal.aborted) setState({
127
+ kind: "error",
128
+ message: error instanceof Error ? error.message : "Could not read VoiceID availability."
129
+ });
130
+ }
131
+ }
132
+ async function changeAvailability(seams, walletId, previous, setState, refreshSession, onChanged, action) {
133
+ setState({
134
+ kind: "updating",
135
+ availability: previous
136
+ });
137
+ try {
138
+ if (previous.kind === "not_enrolled" || action === "manage") {
139
+ if ((await seams.registration.activateAuthMethod({
140
+ walletId,
141
+ method: "voiceid"
142
+ })).kind === "cancelled") {
143
+ setState({
144
+ kind: "ready",
145
+ availability: previous
146
+ });
147
+ return;
148
+ }
149
+ }
150
+ const availability = action === "manage" ? await seams.registration.getAuthMethodAvailability({
151
+ walletId,
152
+ method: "voiceid"
153
+ }) : await seams.registration.setAuthMethodEnabled({
154
+ walletId,
155
+ method: "voiceid",
156
+ enabled: previous.kind !== "enabled"
157
+ });
158
+ await refreshSession(walletId);
159
+ setState({
160
+ kind: "ready",
161
+ availability
162
+ });
163
+ await onChanged();
164
+ } catch (error) {
165
+ const message = error instanceof Error ? error.message : "VoiceID could not be updated. Try again.";
166
+ try {
167
+ setState({
168
+ kind: "ready",
169
+ availability: await seams.registration.getAuthMethodAvailability({
170
+ walletId,
171
+ method: "voiceid"
172
+ }),
173
+ message
174
+ });
175
+ } catch {
176
+ setState({
177
+ kind: "error",
178
+ message: "Could not confirm VoiceID availability. Close and reopen settings."
179
+ });
180
+ }
181
+ }
182
+ }
183
+ //#endregion
184
+ export { VoiceIdMethodRow, VoiceIdSetupRow };
185
+
186
+ //# sourceMappingURL=VoiceIdAvailabilityControl.js.map
@@ -128,19 +128,21 @@
128
128
  margin-top: 4px;
129
129
  }
130
130
  .seams-account-footer {
131
- border-top: 1px solid var(--seams-colors-borderPrimary);
131
+ border-top: 1px solid color-mix(in srgb, var(--seams-colors-borderPrimary) 60%, transparent);
132
132
  display: flex;
133
133
  justify-content: center;
134
- align-items: center;
135
- gap: 8px;
136
- height: 44px;
134
+ align-items: baseline;
135
+ gap: 6px;
136
+ padding: 10px 16px;
137
137
  color: var(--seams-colors-textSecondary);
138
- font-size: 12px;
138
+ font-size: 11px;
139
+ line-height: 16px;
140
+ letter-spacing: 0.01em;
139
141
  }
140
142
  .seams-account-wordmark {
141
- width: 70px;
142
- height: 18px;
143
- color: var(--seams-colors-textPrimary);
143
+ flex: none;
144
+ width: 50px;
145
+ height: 10px;
144
146
  }
145
147
  .seams-account-description {
146
148
  font-size: 14px;
@@ -0,0 +1,8 @@
1
+ import { lucideIcon } from "./lucideIcon.js";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/react/components/AccountMenuButton/icons/ChevronRightIcon.tsx
4
+ const ChevronRightIcon = lucideIcon("chevron-right", /* @__PURE__ */ jsx("path", { d: "m9 18 6-6-6-6" }));
5
+ //#endregion
6
+ export { ChevronRightIcon };
7
+
8
+ //# sourceMappingURL=ChevronRightIcon.js.map
@@ -0,0 +1,8 @@
1
+ import { lucideIcon } from "./lucideIcon.js";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/react/components/AccountMenuButton/icons/WalletIcon.tsx
4
+ const WalletIcon = lucideIcon("wallet", /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("path", { d: "M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1" }), /* @__PURE__ */ jsx("path", { d: "M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4" })] }));
5
+ //#endregion
6
+ export { WalletIcon };
7
+
8
+ //# sourceMappingURL=WalletIcon.js.map
@@ -25,6 +25,7 @@ import LinkedDevicesModal from "./LinkedDevicesModal.js";
25
25
  import AuthenticationMethodsModal from "./AuthenticationMethodsModal.js";
26
26
  import { WalletSettingsHeader, WalletSettingsLayout } from "./WalletSettingsLayout.js";
27
27
  import { AccountsSection } from "./AccountsSection.js";
28
+ import { AddEvmAccount, useEvmAccountSetup } from "./AddEvmAccount.js";
28
29
  import { ExportKeysSection } from "./ExportKeysSection.js";
29
30
  import { ExportKeysScreen } from "./ExportKeysScreen.js";
30
31
  import { TransactionSettingsSection } from "./TransactionSettingsSection.js";
@@ -130,6 +131,10 @@ const AccountMenuButtonInner = ({ presentation, nearAccountId: nearAccountIdProp
130
131
  const canExportEvmKeys = Boolean(loginState.thresholdEcdsaEthereumAddress);
131
132
  const [showQRScanner, setShowQRScanner] = useState(false);
132
133
  const [screen, setScreen] = useState("overview");
134
+ const accountSetup = useEvmAccountSetup();
135
+ const accountSetupState = accountSetup.state;
136
+ const accountSetupRunning = accountSetupState.kind === "adding";
137
+ const accountsWalletId = (accountSetupRunning || accountSetupState.kind === "added") && walletId === null ? accountSetupState.walletId : walletId;
133
138
  const [recoveryCodesOpen, setRecoveryCodesOpen] = useState(false);
134
139
  const [exportLoadingChain, setExportLoadingChain] = useState(null);
135
140
  const [currentConfirmConfig, setCurrentConfirmConfig] = useState(null);
@@ -148,8 +153,14 @@ const AccountMenuButtonInner = ({ presentation, nearAccountId: nearAccountIdProp
148
153
  handleClose();
149
154
  }, [handleClose]);
150
155
  useEffect(() => {
151
- if (!canManageLinkedDevices) setScreen("overview");
152
- }, [canManageLinkedDevices]);
156
+ const switchedWallet = accountSetupState.kind !== "idle" && walletId !== null && walletId !== accountSetupState.walletId;
157
+ if (!canManageLinkedDevices && !accountSetupRunning && accountSetupState.kind !== "added" || switchedWallet) setScreen("overview");
158
+ }, [
159
+ canManageLinkedDevices,
160
+ accountSetupRunning,
161
+ accountSetupState,
162
+ walletId
163
+ ]);
153
164
  useEffect(() => {
154
165
  if (!seams) return;
155
166
  if (!loginState.isLoggedIn || !walletId) {
@@ -286,12 +297,14 @@ const AccountMenuButtonInner = ({ presentation, nearAccountId: nearAccountIdProp
286
297
  const nearExplorer = resolvePrimaryExplorerUrl(chains, "near") || nearExplorerBaseUrl;
287
298
  const tempoExplorer = resolvePrimaryExplorerUrl(chains, "tempo");
288
299
  const evmExplorer = resolvePrimaryExplorerUrl(chains, "evm");
289
- const evmAddress = loginState.thresholdEcdsaEthereumAddress;
290
- if (nearAccountId && nearExplorer) rows.push({
300
+ const completedSetup = accountSetupState.kind === "added" && accountsWalletId === accountSetupState.walletId ? accountSetupState : null;
301
+ const evmAddress = completedSetup?.evmAddress ?? loginState.thresholdEcdsaEthereumAddress;
302
+ const accountNearId = nearAccountId ?? completedSetup?.nearAccountId;
303
+ if (accountNearId && nearExplorer) rows.push({
291
304
  id: "near",
292
305
  label: "NEAR",
293
- address: nearAccountId,
294
- href: `${nearExplorer}/address/${nearAccountId}`
306
+ address: accountNearId,
307
+ href: `${nearExplorer}/address/${accountNearId}`
295
308
  });
296
309
  if (evmAddress && tempoExplorer) rows.push({
297
310
  id: "tempo",
@@ -310,15 +323,17 @@ const AccountMenuButtonInner = ({ presentation, nearAccountId: nearAccountIdProp
310
323
  seams,
311
324
  nearAccountId,
312
325
  nearExplorerBaseUrl,
313
- loginState.thresholdEcdsaEthereumAddress
326
+ loginState.thresholdEcdsaEthereumAddress,
327
+ accountSetupState,
328
+ accountsWalletId
314
329
  ]);
315
330
  const MENU_ITEMS = useMemo(() => {
316
331
  const items = [];
317
- if (accountsRows.length > 0) items.push({
332
+ if (accountsRows.length > 0 || loginState.isLoggedIn) items.push({
318
333
  id: PROFILE_MENU_ITEM_IDS.ACCOUNTS,
319
334
  icon: /* @__PURE__ */ jsx(GlobeIcon, {}),
320
335
  label: "Accounts",
321
- description: "View accounts on block explorers",
336
+ description: "View or add accounts",
322
337
  disabled: !loginState.isLoggedIn,
323
338
  onClick: setScreen.bind(null, "accounts"),
324
339
  keepOpenOnClick: true
@@ -447,10 +462,17 @@ const AccountMenuButtonInner = ({ presentation, nearAccountId: nearAccountIdProp
447
462
  accounts: /* @__PURE__ */ jsxs(AccountMenuScreen, {
448
463
  title: walletText(locale, "Accounts"),
449
464
  onBack: backToMenu,
450
- children: [/* @__PURE__ */ jsx("p", {
451
- className: "seams-account-description",
452
- children: /* @__PURE__ */ jsx(WalletText, { message: "Your addresses across networks." })
453
- }), /* @__PURE__ */ jsx(AccountsSection, { rows: accountsRows })]
465
+ children: [
466
+ /* @__PURE__ */ jsx("p", {
467
+ className: "seams-account-description",
468
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Your addresses across networks." })
469
+ }),
470
+ /* @__PURE__ */ jsx(AccountsSection, { rows: accountsRows }),
471
+ accountsWalletId ? /* @__PURE__ */ jsx(AddEvmAccount, {
472
+ walletId: accountsWalletId,
473
+ setup: accountSetup
474
+ }, accountsWalletId) : null
475
+ ]
454
476
  }),
455
477
  "export-keys": /* @__PURE__ */ jsx(ExportKeysScreen, {
456
478
  onBack: backToMenu,