@seams/wallet 0.22.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 (624) hide show
  1. package/README.md +19 -2
  2. package/THIRD_PARTY_NOTICES.md +186 -6
  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/actions.js +26 -0
  61. package/dist/esm/externalNear/boundary.js +53 -0
  62. package/dist/esm/externalNear/controller.js +223 -0
  63. package/dist/esm/externalNear/hot.js +41 -0
  64. package/dist/esm/externalNear/index.js +3 -0
  65. package/dist/esm/externalNear/intear.js +110 -0
  66. package/dist/esm/externalNear/intearPopup.js +83 -0
  67. package/dist/esm/externalNear/message.js +60 -0
  68. package/dist/esm/externalNear/meteor.js +133 -0
  69. package/dist/esm/externalNear/meteorRequest.js +117 -0
  70. package/dist/esm/externalNear/types.js +17 -0
  71. package/dist/esm/externalNear/wallets.js +33 -0
  72. package/dist/esm/node_modules/borsh/lib/esm/buffer.js +67 -0
  73. package/dist/esm/node_modules/borsh/lib/esm/deserialize.js +94 -0
  74. package/dist/esm/node_modules/borsh/lib/esm/index.js +13 -0
  75. package/dist/esm/node_modules/borsh/lib/esm/serialize.js +127 -0
  76. package/dist/esm/node_modules/borsh/lib/esm/types.js +19 -0
  77. package/dist/esm/node_modules/borsh/lib/esm/utils.js +104 -0
  78. package/dist/esm/plugins/plugin-utils.js +2 -5
  79. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +10 -22
  80. package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +2 -2
  81. package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +7 -4
  82. package/dist/esm/react/components/AccountMenuButton/AddEvmAccount.js +124 -0
  83. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +41 -23
  84. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +220 -164
  85. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +7 -5
  86. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +142 -36
  87. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +11 -2
  88. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +12 -10
  89. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +1 -1
  90. package/dist/esm/react/components/AccountMenuButton/VoiceIdAvailabilityControl.js +186 -0
  91. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +10 -8
  92. package/dist/esm/react/components/AccountMenuButton/icons/ChevronRightIcon.js +8 -0
  93. package/dist/esm/react/components/AccountMenuButton/icons/WalletIcon.js +8 -0
  94. package/dist/esm/react/components/AccountMenuButton/index.js +35 -13
  95. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +8 -4
  96. package/dist/esm/react/context/useLoginStateRefresher.js +10 -2
  97. package/dist/esm/react/externalNear.css +90 -0
  98. package/dist/esm/react/externalNear.js +104 -0
  99. package/dist/esm/react/index.js +2 -4
  100. package/dist/esm/react/styles/styles.css +22 -332
  101. package/dist/esm/react/styles.css +0 -1
  102. package/dist/esm/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
  103. package/dist/esm/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
  104. package/dist/esm/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
  105. package/dist/esm/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
  106. package/dist/esm/sdk/actions-GYsSR2Q2.js +1 -0
  107. package/dist/esm/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
  108. package/dist/esm/sdk/adapters-D5MZ5NG5.js +2 -0
  109. package/dist/esm/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
  110. package/dist/esm/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
  111. package/dist/esm/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
  112. package/dist/esm/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
  113. package/dist/esm/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
  114. package/dist/esm/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
  115. package/dist/esm/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
  116. package/dist/esm/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
  117. package/dist/esm/sdk/configBuilder-DrxXNUpV.js +1 -0
  118. package/dist/esm/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
  119. package/dist/esm/sdk/configuration-CAqANpTI.js +1 -0
  120. package/dist/esm/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
  121. package/dist/esm/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
  122. package/dist/esm/sdk/domainIds-t1lp25yU.js +1 -0
  123. package/dist/esm/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
  124. package/dist/esm/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
  125. package/dist/esm/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
  126. package/dist/esm/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
  127. package/dist/esm/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
  128. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
  129. package/dist/esm/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
  130. package/dist/esm/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
  131. package/dist/esm/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
  132. package/dist/esm/sdk/exportKeypairOperation-BazJvSov.js +1 -0
  133. package/dist/{public/sdk/helpers-BXezXx19.js → esm/sdk/helpers-CXqXyyCU.js} +1 -1
  134. package/dist/esm/sdk/host-C0Is56lU.js +1 -0
  135. package/dist/esm/sdk/icons-DyndJzSh.js +1 -0
  136. package/dist/esm/sdk/indexedDB-C1odKEC6.js +1 -0
  137. package/dist/esm/sdk/intentDigest-BMXki7yB.js +1 -0
  138. package/dist/esm/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
  139. package/dist/esm/sdk/lanes-C7OvAK_L.js +1 -0
  140. package/dist/esm/sdk/localOnly-BB3Rx3J6.js +1 -0
  141. package/dist/esm/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
  142. package/dist/{public/sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js → esm/sdk/mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
  143. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
  144. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
  145. package/dist/esm/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
  146. package/dist/esm/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
  147. package/dist/esm/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
  148. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
  149. package/dist/esm/sdk/presignaturePool-CultzkOG.js +1 -0
  150. package/dist/esm/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
  151. package/dist/esm/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
  152. package/dist/esm/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
  153. package/dist/esm/sdk/registration-CM5a7WYO.js +1 -0
  154. package/dist/esm/sdk/registration-Hv0xi7-L.js +1 -0
  155. package/dist/esm/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
  156. package/dist/esm/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
  157. package/dist/esm/sdk/registrationIntent-DTs2SR9E.js +1 -0
  158. package/dist/esm/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
  159. package/dist/{public/sdk/requireStepUpAuth-DsNLml1i.js → esm/sdk/requireStepUpAuth-B7tC4MrA.js} +1 -1
  160. package/dist/esm/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
  161. package/dist/esm/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
  162. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  163. package/dist/esm/sdk/runtime-auth-CVw1KoVD.js +1 -0
  164. package/dist/esm/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
  165. package/dist/esm/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
  166. package/dist/esm/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
  167. package/dist/esm/sdk/runtime-export-upMPrZ4V.js +1 -0
  168. package/dist/esm/sdk/runtime-near-B64Hn3nc.js +1 -0
  169. package/dist/esm/sdk/runtime-preferences-CULdHkbg.js +1 -0
  170. package/dist/esm/sdk/runtime-recovery-D2saBaJy.js +1 -0
  171. package/dist/esm/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
  172. package/dist/esm/sdk/runtimeContext-CNFJjcns.js +6 -0
  173. package/dist/{public/sdk/sdkSentEvents-BzMVO1AR.js → esm/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
  174. package/dist/esm/sdk/{secp256k1-CYu8ENjP.js → secp256k1-BGVlx50C.js} +1 -1
  175. package/dist/esm/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
  176. package/dist/esm/sdk/shared-DcHtE-D-.js +1 -0
  177. package/dist/esm/sdk/signEvmFamily-PjwUc5MT.js +1 -0
  178. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
  179. package/dist/esm/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
  180. package/dist/esm/sdk/signNear-r8VCOoTh.js +1 -0
  181. package/dist/esm/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
  182. package/dist/esm/sdk/signerDomain-D-EUTlLK.js +1 -0
  183. package/dist/esm/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
  184. package/dist/{public/sdk/signingFlow-Co_QtuHK.js → esm/sdk/signingFlow-BVvteILM.js} +1 -1
  185. package/dist/esm/sdk/{signingQueue-Cj9sCJLj.js → signingQueue-BJzOrwDq.js} +1 -1
  186. package/dist/esm/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
  187. package/dist/{public/sdk/thresholdEcdsa-LvkD6z8-.js → esm/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
  188. package/dist/esm/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
  189. package/dist/esm/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
  190. package/dist/esm/sdk/transactionReview-DSGnpreN.js +1 -0
  191. package/dist/esm/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
  192. package/dist/{public/sdk/transactionState-BaFSiA9t.js → esm/sdk/transactionState-BS1VLT7B.js} +1 -1
  193. package/dist/esm/sdk/tx-confirm-ui.js +418 -109
  194. package/dist/esm/sdk/types-DdzuHlAQ.js +1 -0
  195. package/dist/esm/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
  196. package/dist/esm/sdk/voiceid-host.js +1 -0
  197. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  198. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  199. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  200. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  201. package/dist/esm/sdk/wallet-recovery-BjIQdOha.js +1 -0
  202. package/dist/esm/sdk/wallet-ui.css +1 -1
  203. package/dist/esm/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
  204. package/dist/esm/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
  205. package/dist/esm/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
  206. package/dist/esm/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
  207. package/dist/esm/sdk/walletDbName-DDJXrgA5.js +1 -0
  208. package/dist/esm/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
  209. package/dist/esm/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
  210. package/dist/esm/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
  211. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
  212. package/dist/esm/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
  213. package/dist/{public/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → esm/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
  214. package/dist/esm/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
  215. package/dist/esm/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
  216. package/dist/esm/shared-ts/src/authorization/capabilityKinds.js +4 -1
  217. package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +11 -2
  218. package/dist/esm/shared-ts/src/authorization/voiceIdDeviceAssertion.js +110 -0
  219. package/dist/esm/shared-ts/src/device-linking/authorityActivation.js +1 -0
  220. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +1 -0
  221. package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +17 -9
  222. package/dist/esm/shared-ts/src/passkey-custody/custodyEnvelope.js +62 -3
  223. package/dist/esm/shared-ts/src/passkey-custody/custodySecretBinding.js +1 -1
  224. package/dist/esm/shared-ts/src/utils/canonicalPrimitives.js +5 -2
  225. package/dist/esm/shared-ts/src/utils/domainIds.js +14 -1
  226. package/dist/esm/shared-ts/src/utils/signerDomain.js +4 -2
  227. package/dist/esm/shared-ts/src/utils/validation.js +4 -1
  228. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +46 -2
  229. package/dist/esm/shared-ts/src/utils/walletAuthMethodRecord.js +116 -6
  230. package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +39 -1
  231. package/dist/esm/voiceid-host.js +47 -0
  232. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  233. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  234. package/dist/public/headers.manifest.json +1 -1
  235. package/dist/public/sdk/ConfirmationDrawer-CTaGM1AE.js +1 -0
  236. package/dist/public/sdk/{NonceCoordinator-Do23iTzQ.js → NonceCoordinator-Bti1HQPo.js} +1 -1
  237. package/dist/public/sdk/SeamsWordmark-CFpsGoLw.js +1 -0
  238. package/dist/public/sdk/{accountLifecycle-CXTlwnAS.js → accountLifecycle-B98g9zN9.js} +1 -1
  239. package/dist/public/sdk/actions-GYsSR2Q2.js +1 -0
  240. package/dist/public/sdk/activeWalletSession-H9JBdHyQ.js +1 -0
  241. package/dist/public/sdk/adapters-D5MZ5NG5.js +2 -0
  242. package/dist/public/sdk/appearance-token-vars-CgYTfCKg.js +1 -0
  243. package/dist/public/sdk/{canonicalPrimitives-D_1HyEuJ.js → canonicalPrimitives-B6YMrI3W.js} +1 -1
  244. package/dist/public/sdk/{capabilityKinds-CqHVzVsJ.js → capabilityKinds-BzrNeEyO.js} +1 -1
  245. package/dist/public/sdk/{chains-CPmd4s9f.js → chains-gV2K9gA4.js} +1 -1
  246. package/dist/public/sdk/{challengeDelivery-C88JNwKf.js → challengeDelivery-FW9gYyr0.js} +1 -1
  247. package/dist/public/sdk/clientSessionPersistenceState-BPYK9PYV.js +1 -0
  248. package/dist/public/sdk/{collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js → collectAuthenticationCredentialForChallengeB64u-kLIxmw3V.js} +1 -1
  249. package/dist/public/sdk/{commitQueue-BQPOhyGl.js → commitQueue-Bs23Rs57.js} +1 -1
  250. package/dist/public/sdk/configBuilder-DrxXNUpV.js +1 -0
  251. package/dist/public/sdk/{configHelpers-D50F_Txb.js → configHelpers-BNqoU2cv.js} +1 -1
  252. package/dist/public/sdk/configuration-CAqANpTI.js +1 -0
  253. package/dist/public/sdk/csp-stylesheet-DeuiM0Mo.js +2 -0
  254. package/dist/public/sdk/{display-Dtugjeya.js → display-BXjW58UF.js} +1 -1
  255. package/dist/public/sdk/domainIds-t1lp25yU.js +1 -0
  256. package/dist/public/sdk/ecdsaCapabilityManifest--FjbES8k.js +1 -0
  257. package/dist/public/sdk/{ecdsaChainTarget-svSlzhze.js → ecdsaChainTarget-DbLthshF.js} +1 -1
  258. package/dist/public/sdk/{ecdsaDerivationClientWasm-D1HzwUgV.js → ecdsaDerivationClientWasm-7Rp4TmYE.js} +1 -1
  259. package/dist/public/sdk/ecdsaDerivationExport-dInN7N6e.js +1 -0
  260. package/dist/public/sdk/{ecdsaWalletRecords-BmhuJF1y.js → ecdsaWalletRecords-BgcXXCZy.js} +1 -1
  261. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-CIh9IPai.js +1 -0
  262. package/dist/public/sdk/{enrichDisplayModelWithAbi-D0o0IL7_.js → enrichDisplayModelWithAbi-CudPUW0T.js} +1 -1
  263. package/dist/public/sdk/{evmCryptoWasm-S2gL5ht4.js → evmCryptoWasm-DacbCVNM.js} +1 -1
  264. package/dist/public/sdk/{export-viewer-host-C9n-62Pi.js → export-viewer-host-DsWOvc0t.js} +1 -1
  265. package/dist/public/sdk/exportKeypairOperation-BazJvSov.js +1 -0
  266. package/dist/{esm/sdk/helpers-BXezXx19.js → public/sdk/helpers-CXqXyyCU.js} +1 -1
  267. package/dist/public/sdk/host-C0Is56lU.js +1 -0
  268. package/dist/public/sdk/icons-DyndJzSh.js +1 -0
  269. package/dist/public/sdk/indexedDB-C1odKEC6.js +1 -0
  270. package/dist/public/sdk/intentDigest-BMXki7yB.js +1 -0
  271. package/dist/public/sdk/{keyMaterialEnvelope-B3v6HLtz.js → keyMaterialEnvelope-B-Q5KTJC.js} +1 -1
  272. package/dist/public/sdk/lanes-C7OvAK_L.js +1 -0
  273. package/dist/public/sdk/localOnly-BB3Rx3J6.js +1 -0
  274. package/dist/public/sdk/mountExportPrivateKeySurface-CV1KrFWg.js +1 -0
  275. package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js → public/sdk/mountRecoveryCodeBackupSurface-CVXU1zzl.js} +2 -2
  276. package/dist/public/sdk/nearEd25519YaoMaterialActivation-D9cdMKIZ.js +1 -0
  277. package/dist/public/sdk/nearEd25519YaoSigningPreparation-D_Jvj7ht.js +1 -0
  278. package/dist/public/sdk/{nonceLaneKeys-CR2XEvnk.js → nonceLaneKeys-BS4fek17.js} +1 -1
  279. package/dist/public/sdk/{normalization-Ctkj80dW.js → normalization-BN-2VWZf.js} +1 -1
  280. package/dist/public/sdk/{operationFingerprint-DRPONhBD.js → operationFingerprint-Bn0lUYlm.js} +1 -1
  281. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-lr1oISjL.js +1 -0
  282. package/dist/public/sdk/presignaturePool-CultzkOG.js +1 -0
  283. package/dist/public/sdk/{presignatures-DGLNs29C.js → presignatures-B9GrGx0L.js} +1 -1
  284. package/dist/public/sdk/recovery-entrypoint-QBvJBngm.js +1 -0
  285. package/dist/public/sdk/{recoveryAuthorization-BplZWc-N.js → recoveryAuthorization-DB-zxeHq.js} +1 -1
  286. package/dist/public/sdk/registration-CM5a7WYO.js +1 -0
  287. package/dist/public/sdk/registration-Hv0xi7-L.js +1 -0
  288. package/dist/public/sdk/{registrationAccounts-BfO6Ztye.js → registrationAccounts-BHikxS5q.js} +1 -1
  289. package/dist/public/sdk/{registrationAuthMethodInput-DKz6Mgg4.js → registrationAuthMethodInput-BvbWl0y_.js} +1 -1
  290. package/dist/public/sdk/registrationIntent-DTs2SR9E.js +1 -0
  291. package/dist/public/sdk/{registrationSignerPlan-B66FjqIp.js → registrationSignerPlan-CgbFVsAp.js} +1 -1
  292. package/dist/{esm/sdk/requireStepUpAuth-DsNLml1i.js → public/sdk/requireStepUpAuth-B7tC4MrA.js} +1 -1
  293. package/dist/public/sdk/resealedEnvelopeResult--iCVt_Bh.js +1 -0
  294. package/dist/public/sdk/routerAbNormalSigning-Div3lZWV.js +1 -0
  295. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  296. package/dist/public/sdk/runtime-auth-CVw1KoVD.js +1 -0
  297. package/dist/public/sdk/runtime-device-link-Dp0YMZTQ.js +1 -0
  298. package/dist/public/sdk/runtime-ecdsa-tempo-DEIjIgEO.js +1 -0
  299. package/dist/public/sdk/runtime-email-otp-gsr_FsQn.js +1 -0
  300. package/dist/public/sdk/runtime-export-upMPrZ4V.js +1 -0
  301. package/dist/public/sdk/runtime-near-B64Hn3nc.js +1 -0
  302. package/dist/public/sdk/runtime-preferences-CULdHkbg.js +1 -0
  303. package/dist/public/sdk/runtime-recovery-D2saBaJy.js +1 -0
  304. package/dist/public/sdk/runtime-recovery-codes-Bvc0IXMJ.js +1 -0
  305. package/dist/public/sdk/runtimeContext-CNFJjcns.js +6 -0
  306. package/dist/{esm/sdk/sdkSentEvents-BzMVO1AR.js → public/sdk/sdkSentEvents-DUht3AOD.js} +1 -1
  307. package/dist/public/sdk/{secp256k1-CYu8ENjP.js → secp256k1-BGVlx50C.js} +1 -1
  308. package/dist/public/sdk/sessionObservationRevision-84ZzJ-fC.js +1 -0
  309. package/dist/public/sdk/shared-DcHtE-D-.js +1 -0
  310. package/dist/public/sdk/signEvmFamily-PjwUc5MT.js +1 -0
  311. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js → signEvmFamilyWithUiConfirmForTempo-BMfC2sc2.js} +1 -1
  312. package/dist/public/sdk/{signEvmWithUiConfirm-lZyPfrGe.js → signEvmWithUiConfirm-BNkupz3z.js} +1 -1
  313. package/dist/public/sdk/signNear-r8VCOoTh.js +1 -0
  314. package/dist/public/sdk/{signatureUses-CY4U-X6V.js → signatureUses-DrqCoN12.js} +1 -1
  315. package/dist/public/sdk/signerDomain-D-EUTlLK.js +1 -0
  316. package/dist/public/sdk/{signerSlot-CpyIfl3J.js → signerSlot-D4ZOuK7e.js} +1 -1
  317. package/dist/{esm/sdk/signingFlow-Co_QtuHK.js → public/sdk/signingFlow-BVvteILM.js} +1 -1
  318. package/dist/public/sdk/{signingQueue-Cj9sCJLj.js → signingQueue-BJzOrwDq.js} +1 -1
  319. package/dist/public/sdk/surface-measurement-reporter-NUm_54LH.js +1 -0
  320. package/dist/{esm/sdk/thresholdEcdsa-LvkD6z8-.js → public/sdk/thresholdEcdsa-tnY83qyG.js} +1 -1
  321. package/dist/public/sdk/{trace-CWTzEALZ.js → trace-CGNqO1FV.js} +1 -1
  322. package/dist/public/sdk/{transaction-activity-CpDMkSPm.js → transaction-activity-DPq9RTh5.js} +1 -1
  323. package/dist/public/sdk/transactionReview-DSGnpreN.js +1 -0
  324. package/dist/public/sdk/transactionReviewAdmission--8tDis7M.js +1 -0
  325. package/dist/{esm/sdk/transactionState-BaFSiA9t.js → public/sdk/transactionState-BS1VLT7B.js} +1 -1
  326. package/dist/public/sdk/tx-confirm-ui.js +418 -109
  327. package/dist/public/sdk/types-DdzuHlAQ.js +1 -0
  328. package/dist/public/sdk/unlockedEd25519ExportRootCapability-D43rvO9a.js +1 -0
  329. package/dist/public/sdk/voiceid-host.js +1 -0
  330. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  331. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  332. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  333. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  334. package/dist/public/sdk/wallet-recovery-BjIQdOha.js +1 -0
  335. package/dist/public/sdk/wallet-ui.css +1 -1
  336. package/dist/public/sdk/walletAuthMethodRecord-yIqCeE-o.js +1 -0
  337. package/dist/public/sdk/walletCapabilityBindings-CUPk3mVH.js +1 -0
  338. package/dist/public/sdk/walletCustodyEcdsaContinuity-DlOBCmwb.js +1 -0
  339. package/dist/public/sdk/walletCustodyOperation-DzPcxEBS.js +1 -0
  340. package/dist/public/sdk/walletDbName-DDJXrgA5.js +1 -0
  341. package/dist/public/sdk/walletOwnershipGeneration-DI9ogcXF.js +1 -0
  342. package/dist/public/sdk/walletRecoveryAdminProof-BJxmg3f7.js +1 -0
  343. package/dist/public/sdk/walletRecoveryCommit-B7WsdR7y.js +1 -0
  344. package/dist/public/sdk/walletRegistrationSetupPrewarm-CEJCj78c.js +1 -0
  345. package/dist/public/sdk/walletSessionAuthorizationStatus-98G3Qji8.js +1 -0
  346. package/dist/{esm/sdk/walletSessionAuthorizationStore-DYRMCkiT.js → public/sdk/walletSessionAuthorizationStore-zkxcMdSp.js} +1 -1
  347. package/dist/public/sdk/warmSessionHydration-DqZyfi1h.js +1 -0
  348. package/dist/public/sdk/{webauthnP256-unqBoZCk.js → webauthnP256-BvTL8nq4.js} +1 -1
  349. package/dist/public/sdk/workers/device-linking-key.worker.js +93 -5
  350. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +67 -65
  351. package/dist/public/sdk/workers/email-otp.worker.js +93 -4
  352. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +21 -2
  353. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  354. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +20 -2
  355. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  356. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  357. package/dist/public/wallet-assets.manifest.json +503 -240
  358. package/dist/public/wallet-service/index.html +4 -4
  359. package/dist/types/shared-ts/src/authorization/voiceIdDeviceAssertion.d.ts +32 -0
  360. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -1
  361. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +8 -0
  362. package/dist/types/shared-ts/src/device-linking/wireFields.d.ts +4 -4
  363. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +29 -0
  364. package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -0
  365. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +2 -2
  366. package/dist/types/shared-ts/src/signing-lanes/recordParsers.d.ts +2 -1
  367. package/dist/types/shared-ts/src/signing-lanes/records.d.ts +10 -2
  368. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +2 -2
  369. package/dist/types/shared-ts/src/threshold/sessionPolicy.d.ts +9 -0
  370. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +3 -3
  371. package/dist/types/shared-ts/src/utils/domainIds.d.ts +4 -5
  372. package/dist/types/shared-ts/src/utils/registrationIntent.d.ts +0 -1
  373. package/dist/types/shared-ts/src/utils/signerDomain.d.ts +3 -0
  374. package/dist/types/shared-ts/src/utils/walletAuthAuthority.d.ts +32 -2
  375. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +15 -1
  376. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +20 -0
  377. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.d.ts +2 -2
  378. package/dist/types/wallet/src/SeamsWeb/publicApi/auth.d.ts +1 -1
  379. package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +1 -1
  380. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +22 -0
  381. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +4 -0
  382. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +2 -0
  383. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/authMenuAnchor.d.ts +17 -0
  384. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +4 -0
  385. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/geometry.d.ts +0 -1
  386. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +2 -1
  387. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
  388. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +15 -0
  389. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createRegistrationCommands.d.ts +2 -1
  390. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createSessionCommands.d.ts +7 -2
  391. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +2 -2
  392. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeContext.d.ts +3 -0
  393. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +4 -0
  394. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +0 -1
  395. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +2 -2
  396. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/walletMutationGuard.d.ts +2 -0
  397. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +15 -4
  398. package/dist/types/wallet/src/core/authMethods/availability.d.ts +13 -0
  399. package/dist/types/wallet/src/core/authMethods/availabilityTypes.d.ts +13 -0
  400. package/dist/types/wallet/src/core/authMethods/hostPlugin.d.ts +82 -0
  401. package/dist/types/wallet/src/core/authMethods/hostRegistry.d.ts +5 -0
  402. package/dist/types/wallet/src/core/authMethods/installSession.d.ts +15 -0
  403. package/dist/types/wallet/src/core/authMethods/plugins.d.ts +7 -0
  404. package/dist/types/wallet/src/core/authMethods/prepareEcdsaSession.d.ts +6 -0
  405. package/dist/types/wallet/src/core/authMethods/prepareNearSession.d.ts +18 -0
  406. package/dist/types/wallet/src/core/authMethods/sessionIdentity.d.ts +53 -0
  407. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +11 -1
  408. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/repositories.d.ts +53 -2
  409. package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
  410. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +1 -1
  411. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportMaterial.d.ts +6 -3
  412. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.d.ts +8 -2
  413. package/dist/types/wallet/src/core/signingEngine/session/availability/availableSigningLanes.d.ts +10 -10
  414. package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +1 -1
  415. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +3 -1
  416. package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +16 -4
  417. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +13 -4
  418. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +15 -6
  419. package/dist/types/wallet/src/core/signingEngine/session/operationState/lanes.d.ts +11 -4
  420. package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +3 -3
  421. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.d.ts +6 -0
  422. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodSelection.d.ts +1 -1
  423. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -1
  424. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +6 -0
  425. package/dist/types/wallet/src/core/signingEngine/uiConfirm/transactionReviewAdmission.d.ts +11 -1
  426. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirm-ui-types.d.ts +2 -0
  427. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/confirmation-model.d.ts +1 -1
  428. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +1 -0
  429. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +4 -0
  430. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +1 -1
  431. package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +2 -2
  432. package/dist/types/wallet/src/core/signingEngine/walletCustody/resealedEnvelopeResult.d.ts +10 -0
  433. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +1 -1
  434. package/dist/types/wallet/src/core/types/seams.d.ts +4 -0
  435. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  436. package/dist/types/wallet/src/externalNear/actions.d.ts +20 -0
  437. package/dist/types/wallet/src/externalNear/boundary.d.ts +7 -0
  438. package/dist/types/wallet/src/externalNear/controller.d.ts +24 -0
  439. package/dist/types/wallet/src/externalNear/hot.d.ts +14 -0
  440. package/dist/types/wallet/src/externalNear/index.d.ts +4 -0
  441. package/dist/types/wallet/src/externalNear/intear.d.ts +13 -0
  442. package/dist/types/wallet/src/externalNear/intearPopup.d.ts +25 -0
  443. package/dist/types/wallet/src/externalNear/message.d.ts +14 -0
  444. package/dist/types/wallet/src/externalNear/meteor.d.ts +19 -0
  445. package/dist/types/wallet/src/externalNear/meteorRequest.d.ts +29 -0
  446. package/dist/types/wallet/src/externalNear/types.d.ts +87 -0
  447. package/dist/types/wallet/src/externalNear/wallets.d.ts +4 -0
  448. package/dist/types/wallet/src/index.d.ts +1 -0
  449. package/dist/types/wallet/src/plugins/plugin-utils.d.ts +1 -1
  450. package/dist/types/wallet/src/react/components/AccountMenuButton/AddEvmAccount.d.ts +29 -0
  451. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodRow.d.ts +8 -3
  452. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsView.d.ts +1 -2
  453. package/dist/types/wallet/src/react/components/AccountMenuButton/VoiceIdAvailabilityControl.d.ts +19 -0
  454. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ChevronRightIcon.d.ts +2 -0
  455. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/WalletIcon.d.ts +2 -0
  456. package/dist/types/wallet/src/react/externalNear.d.ts +26 -0
  457. package/dist/types/wallet/src/react/index.d.ts +1 -4
  458. package/dist/types/wallet/src/voiceid-host.d.ts +52 -0
  459. package/dist/workers/device-linking-key.worker.js +93 -5
  460. package/dist/workers/ecdsa-derivation-client.worker.js +67 -65
  461. package/dist/workers/email-otp.worker.js +93 -4
  462. package/dist/workers/passkey-mpc-export.worker.js +21 -2
  463. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  464. package/dist/workers/wallet-custody-ceremony.worker.js +20 -2
  465. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  466. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  467. package/package.json +25 -3
  468. package/dist/esm/plugins/SeamsWeb/walletIframe/sanitization.js +0 -18
  469. package/dist/esm/react/components/AccountMenuButton/icons/PlusIcon.js +0 -8
  470. package/dist/esm/react/components/VoiceAssistantCard.css +0 -313
  471. package/dist/esm/react/components/VoiceAssistantCard.js +0 -150
  472. package/dist/esm/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
  473. package/dist/esm/sdk/activeWalletSession-BtEHhe99.js +0 -1
  474. package/dist/esm/sdk/adapters-CgJpSAxH.js +0 -2
  475. package/dist/esm/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
  476. package/dist/esm/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
  477. package/dist/esm/sdk/configBuilder-BMNShuOu.js +0 -1
  478. package/dist/esm/sdk/domainIds-C3fUa33Q.js +0 -1
  479. package/dist/esm/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
  480. package/dist/esm/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
  481. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
  482. package/dist/esm/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
  483. package/dist/esm/sdk/host-DoftJdVQ.js +0 -1
  484. package/dist/esm/sdk/intentDigest--FZ63NBy.js +0 -1
  485. package/dist/esm/sdk/lanes-l274pbT5.js +0 -1
  486. package/dist/esm/sdk/localOnly-CvFSZFUy.js +0 -1
  487. package/dist/esm/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
  488. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
  489. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
  490. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
  491. package/dist/esm/sdk/presignaturePool-DNiA3sgr.js +0 -1
  492. package/dist/esm/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
  493. package/dist/esm/sdk/registration-CIxJvbTo.js +0 -1
  494. package/dist/esm/sdk/registration-CeOmKyCG.js +0 -1
  495. package/dist/esm/sdk/registrationIntent-DW_kKWlx.js +0 -1
  496. package/dist/esm/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
  497. package/dist/esm/sdk/runtime-auth-C0V-5znH.js +0 -1
  498. package/dist/esm/sdk/runtime-device-link-B1jpHQSF.js +0 -1
  499. package/dist/esm/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
  500. package/dist/esm/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
  501. package/dist/esm/sdk/runtime-export-Ba12ChDI.js +0 -1
  502. package/dist/esm/sdk/runtime-near-DRrdWzmr.js +0 -1
  503. package/dist/esm/sdk/runtime-preferences-BWyhRaBA.js +0 -1
  504. package/dist/esm/sdk/runtime-recovery-DlJlaZlf.js +0 -1
  505. package/dist/esm/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
  506. package/dist/esm/sdk/sessionObservationRevision-abErAhd6.js +0 -1
  507. package/dist/esm/sdk/shared-B95wnpoD.js +0 -6
  508. package/dist/esm/sdk/signEvmFamily-C4XMiSue.js +0 -1
  509. package/dist/esm/sdk/signNear-B_UcqMRf.js +0 -1
  510. package/dist/esm/sdk/signerDomain-YEHkugWX.js +0 -1
  511. package/dist/esm/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
  512. package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
  513. package/dist/esm/sdk/types-BrEW276O.js +0 -1
  514. package/dist/esm/sdk/wallet-recovery-BEui57xM.js +0 -1
  515. package/dist/esm/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
  516. package/dist/esm/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
  517. package/dist/esm/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
  518. package/dist/esm/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
  519. package/dist/esm/sdk/walletDbName-BVZhb4xF.js +0 -1
  520. package/dist/esm/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
  521. package/dist/esm/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
  522. package/dist/esm/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
  523. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
  524. package/dist/esm/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
  525. package/dist/esm/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
  526. package/dist/public/sdk/ConfirmationDrawer-Ck33ZmU-.js +0 -1
  527. package/dist/public/sdk/activeWalletSession-BtEHhe99.js +0 -1
  528. package/dist/public/sdk/adapters-CgJpSAxH.js +0 -2
  529. package/dist/public/sdk/appearance-token-vars-BA3KQyEE.js +0 -2
  530. package/dist/public/sdk/clientSessionPersistenceState-DFGHXoKK.js +0 -1
  531. package/dist/public/sdk/configBuilder-BMNShuOu.js +0 -1
  532. package/dist/public/sdk/domainIds-C3fUa33Q.js +0 -1
  533. package/dist/public/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +0 -1
  534. package/dist/public/sdk/ecdsaDerivationExport-DrFESeRP.js +0 -1
  535. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +0 -1
  536. package/dist/public/sdk/exportKeypairOperation-Du9HKB8f.js +0 -1
  537. package/dist/public/sdk/host-DoftJdVQ.js +0 -1
  538. package/dist/public/sdk/intentDigest--FZ63NBy.js +0 -1
  539. package/dist/public/sdk/lanes-l274pbT5.js +0 -1
  540. package/dist/public/sdk/localOnly-CvFSZFUy.js +0 -1
  541. package/dist/public/sdk/mountExportPrivateKeySurface-DdJHWwqY.js +0 -1
  542. package/dist/public/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +0 -1
  543. package/dist/public/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +0 -1
  544. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +0 -1
  545. package/dist/public/sdk/presignaturePool-DNiA3sgr.js +0 -1
  546. package/dist/public/sdk/recovery-entrypoint-CNVjXz6A.js +0 -1
  547. package/dist/public/sdk/registration-CIxJvbTo.js +0 -1
  548. package/dist/public/sdk/registration-CeOmKyCG.js +0 -1
  549. package/dist/public/sdk/registrationIntent-DW_kKWlx.js +0 -1
  550. package/dist/public/sdk/routerAbNormalSigning-DSAfCcND.js +0 -1
  551. package/dist/public/sdk/runtime-auth-C0V-5znH.js +0 -1
  552. package/dist/public/sdk/runtime-device-link-B1jpHQSF.js +0 -1
  553. package/dist/public/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js +0 -1
  554. package/dist/public/sdk/runtime-email-otp-DXuxFOjL.js +0 -1
  555. package/dist/public/sdk/runtime-export-Ba12ChDI.js +0 -1
  556. package/dist/public/sdk/runtime-near-DRrdWzmr.js +0 -1
  557. package/dist/public/sdk/runtime-preferences-BWyhRaBA.js +0 -1
  558. package/dist/public/sdk/runtime-recovery-DlJlaZlf.js +0 -1
  559. package/dist/public/sdk/runtime-recovery-codes-CuqYWqK7.js +0 -1
  560. package/dist/public/sdk/sessionObservationRevision-abErAhd6.js +0 -1
  561. package/dist/public/sdk/shared-B95wnpoD.js +0 -6
  562. package/dist/public/sdk/signEvmFamily-C4XMiSue.js +0 -1
  563. package/dist/public/sdk/signNear-B_UcqMRf.js +0 -1
  564. package/dist/public/sdk/signerDomain-YEHkugWX.js +0 -1
  565. package/dist/public/sdk/surface-measurement-reporter-F-fVB7d3.js +0 -1
  566. package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +0 -1
  567. package/dist/public/sdk/types-BrEW276O.js +0 -1
  568. package/dist/public/sdk/wallet-recovery-BEui57xM.js +0 -1
  569. package/dist/public/sdk/walletAuthMethodRecord-Cv_MYpxt.js +0 -1
  570. package/dist/public/sdk/walletCapabilityBindings-CKOK39sP.js +0 -1
  571. package/dist/public/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +0 -1
  572. package/dist/public/sdk/walletCustodyOperation-BO_tSfGY.js +0 -1
  573. package/dist/public/sdk/walletDbName-BVZhb4xF.js +0 -1
  574. package/dist/public/sdk/walletOwnershipGeneration-CQzaodhB.js +0 -1
  575. package/dist/public/sdk/walletRecoveryAdminProof-CtH8_lph.js +0 -1
  576. package/dist/public/sdk/walletRecoveryCommit-B_e4k5Pa.js +0 -1
  577. package/dist/public/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +0 -1
  578. package/dist/public/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +0 -1
  579. package/dist/public/sdk/warmSessionHydration-CY9ofEGr.js +0 -1
  580. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +0 -2
  581. package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -37
  582. package/dist/types/wallet/src/react/components/VoiceAssistantCard.typecheck.d.ts +0 -2
  583. /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
  584. /package/dist/esm/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
  585. /package/dist/esm/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
  586. /package/dist/esm/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
  587. /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
  588. /package/dist/esm/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
  589. /package/dist/esm/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
  590. /package/dist/esm/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
  591. /package/dist/esm/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
  592. /package/dist/esm/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
  593. /package/dist/esm/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
  594. /package/dist/esm/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
  595. /package/dist/esm/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
  596. /package/dist/esm/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
  597. /package/dist/esm/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
  598. /package/dist/esm/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
  599. /package/dist/esm/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
  600. /package/dist/esm/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  601. /package/dist/esm/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
  602. /package/dist/esm/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
  603. /package/dist/esm/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
  604. /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-D5NI31F2.js} +0 -0
  605. /package/dist/public/sdk/{appearance-ZGVLwA4N.js → appearance-DVFno9Tv.js} +0 -0
  606. /package/dist/public/sdk/{authenticatorOptions-BB_sU4uA.js → authenticatorOptions-EF_Rps52.js} +0 -0
  607. /package/dist/public/sdk/{authorizationAdmission-D7nx2n4d.js → authorizationAdmission-DbhNiY3X.js} +0 -0
  608. /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-B2RI00tM.js} +0 -0
  609. /package/dist/public/sdk/{bytes-Cv07P0Pu.js → bytes-DVe42j_r.js} +0 -0
  610. /package/dist/public/sdk/{canonicalSignerErrorCode-CqHi6ji6.js → canonicalSignerErrorCode-AwNMAn8S.js} +0 -0
  611. /package/dist/public/sdk/{errors-CI1xdN0d.js → errors-ADOZT8oV.js} +0 -0
  612. /package/dist/public/sdk/{executeWorkerOperation-S6glYwAs.js → executeWorkerOperation-B-9JuL55.js} +0 -0
  613. /package/dist/public/sdk/{jsonRpc-B5zMY6lE.js → jsonRpc-CHutSlC9.js} +0 -0
  614. /package/dist/public/sdk/{keccak-CaPOCznk.js → keccak-C9kCkZem.js} +0 -0
  615. /package/dist/public/sdk/{normalization-CpLZcL2f.js → normalization-DtruiNPw.js} +0 -0
  616. /package/dist/public/sdk/{prfCache-D25ZCg5n.js → prfCache-8Wm3etlV.js} +0 -0
  617. /package/dist/public/sdk/{profileAccountProjection-C1z9sKHa.js → profileAccountProjection-D01e10UY.js} +0 -0
  618. /package/dist/public/sdk/{promptText-D2f5Rg0h.js → promptText-Bz3YRl9D.js} +0 -0
  619. /package/dist/public/sdk/{signer-worker-Bh_5foqX.js → signer-worker-DlK58rEA.js} +0 -0
  620. /package/dist/public/sdk/{types-BNUuaUtl.js → types-fJKfUgTi.js} +0 -0
  621. /package/dist/public/sdk/{walletIframeIdentity-DJ0KOBHg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  622. /package/dist/public/sdk/{walletSessionAuthorizationProjection-UdGeS6x3.js → walletSessionAuthorizationProjection-BJgnZaBc.js} +0 -0
  623. /package/dist/public/sdk/{walletSessionFailure-Ct412mDZ.js → walletSessionFailure-CLUIF3Eh.js} +0 -0
  624. /package/dist/public/sdk/{webauthnPromptCoordinator-CBkTiMP0.js → webauthnPromptCoordinator-CU9ag7vz.js} +0 -0
@@ -1,5 +1,6 @@
1
1
  import { normalizeTrimmedString } from "../../shared-ts/src/utils/normalize.js";
2
2
  import { normalizeWalletLocale } from "../ui/locale.js";
3
+ import { parseWalletAuthMethodPlugins } from "../authMethods/plugins.js";
3
4
  import { copyEcdsaSignerProvisioningDefaults, resolveAppearanceTheme, resolveBoolean, resolveChains, resolveIntegerInRange, resolveThemePalette } from "./configHelpers.js";
4
5
  import { normalizeWalletHostVariant } from "../browser/walletIframe/hostVariant.js";
5
6
  import { SIGNING_SESSION_SEAL_ALG, SIGNING_SESSION_SEAL_GROUP_ID } from "../../shared-ts/src/utils/signingSessionSeal.js";
@@ -156,6 +157,7 @@ function buildConfigsFromDefaults(args) {
156
157
  defaults
157
158
  });
158
159
  return {
160
+ authMethods: parseWalletAuthMethodPlugins(overrides.authMethods ?? defaults.authMethods),
159
161
  network: {
160
162
  chains,
161
163
  relayer: {
@@ -11,6 +11,7 @@ const DEFAULT_ROUTER_AB_ECDSA_DERIVATION_PRESIGNATURE_POOL_POLICY = {
11
11
  refillAttemptTimeoutMs: 3e4
12
12
  };
13
13
  const PASSKEY_MANAGER_DEFAULT_CONFIGS = {
14
+ authMethods: [],
14
15
  network: {
15
16
  chains: [
16
17
  {
@@ -42,6 +42,7 @@ function exportRootEnvelopeMatchesAuthMethod(authMethod, envelope) {
42
42
  switch (authMethod.kind) {
43
43
  case "passkey": return envelope.factor.kind === "passkey" && envelope.factor.rpId === authMethod.rpId && envelope.factor.credentialIdB64u === authMethod.credentialIdB64u && envelope.binding.targetFactor.kind === "passkey_prf";
44
44
  case "email_otp": return envelope.factor.kind === "email_otp" && envelope.binding.targetFactor.kind === "email_otp";
45
+ case "voiceid": return false;
45
46
  default: return assertNever(authMethod);
46
47
  }
47
48
  }
@@ -819,6 +820,10 @@ function unavailableWalletAuthMethodPresentation(record) {
819
820
  kind: "email_otp",
820
821
  email: { kind: "unavailable" }
821
822
  };
823
+ case "voiceid": return {
824
+ version: "wallet_auth_method_local_presentation_v1",
825
+ kind: "voiceid"
826
+ };
822
827
  default: throw new Error("Wallet auth-method presentation kind is invalid");
823
828
  }
824
829
  }
@@ -865,6 +870,12 @@ function parseWalletAuthMethodLocalPresentationV1(value, record) {
865
870
  default: return null;
866
871
  }
867
872
  }
873
+ case "voiceid":
874
+ if (!hasExactKeys(value, ["version", "kind"])) return null;
875
+ return {
876
+ version: "wallet_auth_method_local_presentation_v1",
877
+ kind: "voiceid"
878
+ };
868
879
  default: return null;
869
880
  }
870
881
  }
@@ -899,6 +910,16 @@ function walletAuthMethodV2StorageRow(projection) {
899
910
  presentation: projection.presentation,
900
911
  record: projection.record
901
912
  };
913
+ case "voiceid": return {
914
+ wallet_auth_method_id: projection.record.walletAuthMethodId,
915
+ wallet_id: projection.record.walletId,
916
+ wallet_authority_id: projection.record.walletAuthorityId,
917
+ kind: "voiceid",
918
+ status: projection.record.status,
919
+ updated_at: projection.record.updatedAtMs,
920
+ presentation: projection.presentation,
921
+ record: projection.record
922
+ };
902
923
  default: throw new Error("Wallet auth-method projection kind is invalid");
903
924
  }
904
925
  }
@@ -926,12 +947,14 @@ function walletAuthMethodLocalPresentation(record, rows, current) {
926
947
  switch (record.kind) {
927
948
  case "passkey": return unavailableWalletAuthMethodPresentation(record);
928
949
  case "email_otp": return verifiedEmailPresentationFromLocalRecords(record, rows) ?? (current?.kind === "email_otp" && current.email.kind === "verified" ? current : unavailableWalletAuthMethodPresentation(record));
950
+ case "voiceid": return unavailableWalletAuthMethodPresentation(record);
929
951
  default: throw new Error("Wallet auth-method presentation kind is invalid");
930
952
  }
931
953
  }
932
954
  function walletAuthMethodLocalPresentationsMatch(left, right) {
933
955
  if (left.kind !== right.kind) return false;
934
956
  if (left.kind === "passkey" && right.kind === "passkey") return true;
957
+ if (left.kind === "voiceid" && right.kind === "voiceid") return true;
935
958
  if (left.kind !== "email_otp" || right.kind !== "email_otp") return false;
936
959
  if (left.email.kind !== right.email.kind) return false;
937
960
  if (left.email.kind === "unavailable" && right.email.kind === "unavailable") return true;
@@ -956,6 +979,13 @@ function localWalletAuthMethodProjectionV2(record, presentation) {
956
979
  record,
957
980
  presentation
958
981
  };
982
+ case "voiceid":
983
+ if (presentation.kind !== "voiceid") throw new Error("VoiceID auth method has non-VoiceID local presentation");
984
+ return {
985
+ kind: "voiceid",
986
+ record,
987
+ presentation
988
+ };
959
989
  default: throw new Error("Wallet auth-method projection kind is invalid");
960
990
  }
961
991
  }
@@ -1234,6 +1264,7 @@ function walletCustodyEnvelopeFactorsMatch(left, right) {
1234
1264
  switch (left.kind) {
1235
1265
  case "passkey": return right.kind === "passkey" && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u && left.kekVersion === right.kekVersion;
1236
1266
  case "email_otp": return right.kind === "email_otp" && left.enrollmentId === right.enrollmentId && left.enrollmentSealKeyVersion === right.enrollmentSealKeyVersion && left.kekVersion === right.kekVersion;
1267
+ case "voiceid": return right.kind === "voiceid" && left.deviceKeyId === right.deviceKeyId && left.kekVersion === right.kekVersion;
1237
1268
  default: return assertNever(left);
1238
1269
  }
1239
1270
  }
@@ -1282,6 +1313,7 @@ function walletAuthMethodRecordsMatch(left, right) {
1282
1313
  switch (left.kind) {
1283
1314
  case "passkey": return right.kind === "passkey" && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u && left.credentialPublicKeyB64u === right.credentialPublicKeyB64u && left.counter === right.counter && (left.status === "pending_local_install" || left.activatedAtMs === right.activatedAtMs) && (left.status !== "revoked" || left.revokedAtMs === right.revokedAtMs);
1284
1315
  case "email_otp": return right.kind === "email_otp" && left.emailHashHex === right.emailHashHex && left.registrationAuthorityId === right.registrationAuthorityId && (left.status === "pending_local_install" || left.activatedAtMs === right.activatedAtMs) && (left.status !== "revoked" || left.revokedAtMs === right.revokedAtMs);
1316
+ case "voiceid": return right.kind === "voiceid" && left.deviceKeyId === right.deviceKeyId && left.devicePublicKeyB64u === right.devicePublicKeyB64u && (left.status === "pending_local_install" || left.activatedAtMs === right.activatedAtMs) && (left.status !== "revoked" || left.revokedAtMs === right.revokedAtMs);
1285
1317
  }
1286
1318
  return assertNever(left);
1287
1319
  }
@@ -1290,6 +1322,7 @@ function walletAuthMethodPendingMatchesActive(pending, active) {
1290
1322
  switch (pending.kind) {
1291
1323
  case "passkey": return active.kind === "passkey" && pending.rpId === active.rpId && pending.credentialIdB64u === active.credentialIdB64u && pending.credentialPublicKeyB64u === active.credentialPublicKeyB64u && pending.counter === active.counter;
1292
1324
  case "email_otp": return active.kind === "email_otp" && pending.emailHashHex === active.emailHashHex && pending.registrationAuthorityId === active.registrationAuthorityId;
1325
+ case "voiceid": return active.kind === "voiceid" && pending.deviceKeyId === active.deviceKeyId && pending.devicePublicKeyB64u === active.devicePublicKeyB64u;
1293
1326
  }
1294
1327
  return assertNever(pending);
1295
1328
  }
@@ -1355,6 +1388,7 @@ function parseLocalAuthorityInstallationInput(input) {
1355
1388
  };
1356
1389
  const authenticator = input.authenticator === null ? null : normalizeAuthenticatorRecord(input.authenticator);
1357
1390
  let localAuthMethod = null;
1391
+ if (authMethod.kind === "voiceid") throw new Error("Linked-device VoiceID installation requires its own custody flow");
1358
1392
  if (authMethod.kind === "passkey") {
1359
1393
  if (input.localAuthMethod !== null) throw new Error("Passkey installation cannot include a local Email OTP auth method");
1360
1394
  const passkeyCredential = profile.passkeyCredential;
@@ -1840,9 +1874,13 @@ var SeamsWalletRepositories = class {
1840
1874
  await this.manager.runTransaction([SEAMS_WALLET_STORES.walletSelections, SEAMS_WALLET_STORES.walletAuthMethods], "readwrite", this.markWalletSelectionUnlockedInTransaction.bind(this, {
1841
1875
  walletId,
1842
1876
  walletAuthMethodId,
1843
- unlockedAtMs
1877
+ unlockedAtMs,
1878
+ expectedLockGeneration: null
1844
1879
  }));
1845
1880
  }
1881
+ async markWalletSelectionUnlockedAtGeneration(input) {
1882
+ await this.manager.runTransaction([SEAMS_WALLET_STORES.walletSelections, SEAMS_WALLET_STORES.walletAuthMethods], "readwrite", this.markWalletSelectionUnlockedInTransaction.bind(this, input));
1883
+ }
1846
1884
  async persistRecoveredWalletAuthority(input) {
1847
1885
  const authority = requireBoundaryParsed(parseWalletAuthorityV1(input.authority), "authority");
1848
1886
  const authMethod = parseWalletAuthMethodRecordV2(input.authMethod);
@@ -2038,6 +2076,7 @@ var SeamsWalletRepositories = class {
2038
2076
  const selectionRaw = await selectionStore.get(input.walletId);
2039
2077
  const selection = selectionRaw === void 0 ? null : parseWalletSelectionStorageRow(selectionRaw);
2040
2078
  if (!selection || selection.wallet_id !== input.walletId) throw new Error("wallet selection is missing or corrupt");
2079
+ if (input.expectedLockGeneration !== null && selection.record.lockGeneration !== input.expectedLockGeneration) throw new Error("Wallet lock state changed during unlock.");
2041
2080
  if (selection.record.walletAuthMethodId !== input.walletAuthMethodId) await this.assertSelectionMoveBetweenAuthorityMembers({
2042
2081
  walletId: input.walletId,
2043
2082
  fromWalletAuthMethodId: selection.record.walletAuthMethodId,
@@ -4287,6 +4326,6 @@ var SeamsWalletRepositories = class {
4287
4326
  }
4288
4327
  };
4289
4328
  //#endregion
4290
- export { SeamsWalletRepositories };
4329
+ export { SeamsWalletRepositories, parseWalletAuthMethodV2StorageRow, parseWalletAuthorityStorageRow, parseWalletSelectionStorageRow };
4291
4330
 
4292
4331
  //# sourceMappingURL=repositories.js.map
@@ -265,6 +265,9 @@ var UnifiedIndexedDBManager = class {
265
265
  async markWalletSelectionUnlocked(input) {
266
266
  await this.seamsWalletRepositories.markWalletSelectionUnlocked(input);
267
267
  }
268
+ async markWalletSelectionUnlockedAtGeneration(input) {
269
+ await this.seamsWalletRepositories.markWalletSelectionUnlockedAtGeneration(input);
270
+ }
268
271
  async persistRecoveredWalletAuthority(input) {
269
272
  await this.seamsWalletRepositories.persistRecoveredWalletAuthority(input);
270
273
  }
@@ -5,8 +5,8 @@ import { alphabetizeStringify } from "../../../shared-ts/src/utils/digests.js";
5
5
  import { buildRelayerJsonPostRequestInit, buildWalletSessionAuthorizationHeaders, fetchWithWalletHomeDiscovery, normalizeRelayerBaseUrl } from "./relayerHttp.js";
6
6
  import { parseRouterAbMpcMaterialActivationRef, parseRouterAbNormalSigningAuthorization } from "../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
7
7
  import { parseRouterAbEcdsaDerivationEvmDigestSigningResponseForCoreRequestV1, parseRouterAbEcdsaOperationStepUpPreparationV1, routerAbEcdsaDerivationEvmDigestSigningFinalizeCoreRequestDigestV1, routerAbEcdsaDerivationEvmDigestSigningRequestDigestV1 } from "../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
8
- import { WalletSessionQuotaAdmissionError } from "../../signingEngine/session/operationState/authorizationAdmission.js";
9
8
  import { WalletSessionStatusReadScope, parseExactWalletSessionStatusResponse } from "./walletSessionAuthorizationStatus.js";
9
+ import { WalletSessionQuotaAdmissionError } from "../../signingEngine/session/operationState/authorizationAdmission.js";
10
10
  import { walletSessionFailureErrorFromPayload } from "../../signingEngine/session/lifecycle/walletSessionFailure.js";
11
11
  import { parseEcdsaPrepareSessionResponse } from "./ecdsaPrepareSession.js";
12
12
  //#region src/core/rpcClients/relayer/routerAbNormalSigning.ts
@@ -341,6 +341,6 @@ function createRelayerExactWalletSessionStatusPort(options) {
341
341
  return new RelayerExactWalletSessionStatusPort(options);
342
342
  }
343
343
  //#endregion
344
- export { WalletSessionStatusReadScope, parseExactWalletSessionStatusResponse };
344
+ export { WalletSessionStatusReadScope, createRelayerExactWalletSessionStatusPort, parseExactWalletSessionStatusResponse };
345
345
 
346
346
  //# sourceMappingURL=walletSessionAuthorizationStatus.js.map
@@ -99,6 +99,7 @@ async function resolveEvmFamilyTransactionStepUp(args) {
99
99
  };
100
100
  async function resolveDirectSigningAuthPlan() {
101
101
  if (args.ecdsaAuthorization === "operation_step_up") {
102
+ if (args.capability.authority.factor.kind === "voiceid") throw new Error("Unlock this wallet with VoiceID again before signing.");
102
103
  if (isPasskeyWalletAuthAuthority(args.capability.authority)) return { signingAuthPlan: {
103
104
  kind: SigningAuthPlanKind.PasskeyReauth,
104
105
  method: "passkey"
@@ -113,7 +114,7 @@ async function resolveEvmFamilyTransactionStepUp(args) {
113
114
  emailOtpAuthBridge
114
115
  };
115
116
  }
116
- args.capability.authority;
117
+ throw new Error("The EVM authentication method cannot authorize this step-up.");
117
118
  }
118
119
  if (!(Array.isArray(args.accountAuth.linkedAuthMethods) ? args.accountAuth.linkedAuthMethods : []).includes(args.accountAuth.primaryAuthMethod)) throw new Error(`[SigningEngine] primary auth method is not linked: ${String(args.accountAuth.primaryAuthMethod || "")}`);
119
120
  if (args.accountAuth.primaryAuthMethod === SIGNER_AUTH_METHODS.passkey) return { signingAuthPlan: {
@@ -1,20 +1,12 @@
1
1
  import { thresholdEcdsaChainTargetsEqual } from "../../interfaces/ecdsaChainTarget.js";
2
- import { isPasskeyWalletAuthAuthority } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
2
+ import { isPasskeyWalletAuthAuthority, isVoiceIdWalletAuthAuthority } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
3
3
  import { SIGNER_AUTH_METHODS } from "../../../../shared-ts/src/utils/signerDomain.js";
4
4
  import { exactEcdsaSigningLaneIdentityFromSelectedLane } from "../../session/identity/exactSigningLaneIdentity.js";
5
- import { laneCandidateAuthMethod } from "../../session/identity/laneIdentity.js";
6
5
  import { logEvmFamilyEcdsaLaneDiagnostic, requireResolvedEvmFamilyEcdsaSigningLane, summarizeEvmFamilyEcdsaLane } from "./ecdsaLanes.js";
7
6
  import { resolveEvmFamilyTransactionWalletAuth } from "./accountAuth.js";
8
7
  import { buildEvmTransactionSigningLane, buildTempoTransactionSigningLane } from "../../session/operationState/lanes.js";
9
8
  import { emailOtpEcdsaSigningSessionAuthLane } from "../../session/emailOtp/ecdsaSigningSessionAuthority.js";
10
9
  //#region src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.ts
11
- function ecdsaLaneCandidateAuthMethod(candidate) {
12
- switch (laneCandidateAuthMethod(candidate)) {
13
- case SIGNER_AUTH_METHODS.emailOtp: return SIGNER_AUTH_METHODS.emailOtp;
14
- case SIGNER_AUTH_METHODS.passkey: return SIGNER_AUTH_METHODS.passkey;
15
- }
16
- throw new Error("[SigningEngine][ecdsa] unsupported ECDSA lane auth method");
17
- }
18
10
  function walletAuthWithSelectedPrimary(accountAuth, authMethod) {
19
11
  return {
20
12
  ...accountAuth,
@@ -49,7 +41,7 @@ function resolvedEvmFamilyEcdsaSigningLaneFromCandidate(candidate) {
49
41
  }
50
42
  function laneCandidateDiagnosticsBase(candidate) {
51
43
  return {
52
- authMethod: ecdsaLaneCandidateAuthMethod(candidate),
44
+ authMethod: candidate.auth.kind,
53
45
  chain: candidate.chain,
54
46
  chainTarget: candidate.chainTarget,
55
47
  state: candidate.state,
@@ -109,6 +101,26 @@ async function commitPasskeyEcdsaLaneForSelection(args) {
109
101
  authorization: args.lane.authorization
110
102
  };
111
103
  }
104
+ async function commitVoiceIdEcdsaLaneForSelection(args) {
105
+ const candidate = args.candidate;
106
+ const authority = (await args.deps.resolveCanonicalEcdsaSigningCapability({
107
+ walletId: candidate.walletId,
108
+ chainTarget: candidate.chainTarget,
109
+ materialActivation: candidate.materialActivation
110
+ })).authority;
111
+ if (candidate.auth.kind !== "voiceid" || !isVoiceIdWalletAuthAuthority(authority) || authority.bindingId !== candidate.auth.walletAuthMethodId || authority.factor.deviceKeyId !== candidate.auth.deviceKeyId) throw new Error("VoiceID ECDSA capability authority changed.");
112
+ assertEcdsaCommittedLaneAuthorityMatchesWallet({
113
+ authority,
114
+ lane: args.lane,
115
+ candidate,
116
+ context: "VoiceID"
117
+ });
118
+ return {
119
+ lane: args.lane,
120
+ authority,
121
+ authorization: args.lane.authorization
122
+ };
123
+ }
112
124
  async function resolveEmailOtpAuthorityForSelection(args) {
113
125
  const exactLane = exactEcdsaSigningLaneIdentityFromSelectedLane(args.lane);
114
126
  const laneAuthority = await args.deps.resolveDurableEmailOtpEcdsaSigningSessionAuthority({
@@ -186,7 +198,7 @@ function commitEmailOtpEcdsaLaneForSelection(args) {
186
198
  async function resolveEvmFamilyEcdsaSigningSelection(args) {
187
199
  const lane = resolvedEvmFamilyEcdsaSigningLaneFromCandidate(args.laneCandidate);
188
200
  const emailOtpAuthorityLane = lane;
189
- const candidateAuthMethod = ecdsaLaneCandidateAuthMethod(args.laneCandidate);
201
+ const candidateAuthMethod = args.laneCandidate.auth.kind;
190
202
  const emailOtpAuthority = candidateAuthMethod === SIGNER_AUTH_METHODS.emailOtp ? await resolveEmailOtpAuthorityForSelection({
191
203
  deps: args.deps,
192
204
  lane: emailOtpAuthorityLane,
@@ -207,7 +219,12 @@ async function resolveEvmFamilyEcdsaSigningSelection(args) {
207
219
  lane,
208
220
  candidate: args.laneCandidate
209
221
  }) : null;
210
- const committedLane = committedEmailOtpLane ?? committedPasskeyLane;
222
+ const committedVoiceIdLane = candidateAuthMethod === "voiceid" ? await commitVoiceIdEcdsaLaneForSelection({
223
+ deps: args.deps,
224
+ lane,
225
+ candidate: args.laneCandidate
226
+ }) : null;
227
+ const committedLane = committedEmailOtpLane ?? committedPasskeyLane ?? committedVoiceIdLane;
211
228
  const committedFactor = committedLane?.authority.factor.kind;
212
229
  const selectedAccountAuth = walletAuthWithSelectedPrimary(await resolveEvmFamilyTransactionWalletAuth({
213
230
  senderSignatureAlgorithm: args.senderSignatureAlgorithm,
@@ -350,6 +350,7 @@ async function signEvmFamilyAttempt(deps, args, attempt) {
350
350
  throw error;
351
351
  }
352
352
  const { signingAuthPlan, emailOtpSigning, flowArgs } = preparedFlow;
353
+ reviewAdmissionForBinding(deps.touchConfirm.getContext().surfaceMeasurementBinding)?.assertAuthMethodPolicy(signingAuthPlan.method);
353
354
  let freshAuthRetryHandledFinalization = false;
354
355
  const retryWithFreshWalletSessionAuth = async (error) => {
355
356
  return await retryEvmFamilyWithFreshWalletSessionAuthWhenRequired({
@@ -4,10 +4,10 @@ import { activeWalletSessionV1RecordsEqual, walletSessionPreservesCapabilities }
4
4
  import { walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
5
5
  import { isEd25519ExtensionOfEcdsaWalletAuthority } from "../../../../shared-ts/src/authorization/walletAuthority.js";
6
6
  import { requireEvmFamilyEcdsaSigner } from "../../session/identity/exactSigningLaneIdentity.js";
7
+ import { WalletSessionStatusReadScope } from "../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
7
8
  import { emitEvmFamilySigningOperationTrace } from "./events.js";
8
9
  import { exactAuthorizationMatchesCapability, exactEcdsaWalletSessionRuntimesMatch } from "../../session/material/ecdsaSigningCapability.js";
9
10
  import { loadSecp256k1EngineCtor, loadWebAuthnP256EngineCtor } from "./signerLoader.js";
10
- import { WalletSessionStatusReadScope } from "../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
11
11
  import { attachExactEcdsaWalletSessionAuthorization, buildActiveWalletAuthorityReadySecp256k1Material, resolveHydratedSecp256k1SigningMaterial } from "./readySecp256k1Material.js";
12
12
  import { resolveExactEcdsaCapabilityRuntime } from "../../session/material/activeEcdsaCapabilityRuntime.js";
13
13
  import { authorizeEvmFamilyEcdsaOperationStepUp, prepareEvmFamilyEcdsaOperationStepUp } from "./thresholdAdmission.js";
@@ -29,6 +29,7 @@ function buildActiveWalletAuthorityConfirmationAuthPlan(runtime) {
29
29
  }
30
30
  function signerAuthMethodForWalletAuthority(authority) {
31
31
  switch (authority.factor.kind) {
32
+ case "voiceid": return "voiceid";
32
33
  case "passkey": return "passkey";
33
34
  case "email_otp": return "email_otp";
34
35
  default:
@@ -60,6 +60,7 @@ async function requireNearStepUpAuth(args) {
60
60
  }
61
61
  function signingAuthPlanForNearMaterialRequirement(auth) {
62
62
  switch (auth.kind) {
63
+ case "voiceid": throw new Error("Unlock with VoiceID again before signing.");
63
64
  case "passkey": return {
64
65
  kind: "passkeyReauth",
65
66
  method: "passkey"
@@ -9,9 +9,9 @@ import { base58Decode } from "../../../../../shared-ts/src/utils/base58.js";
9
9
  import { ensureEd25519Prefix } from "../../../../../shared-ts/src/utils/near.js";
10
10
  import { SigningSessionIds } from "../../../session/operationState/types.js";
11
11
  import { ActionType, fromActionArgsWasm } from "../../../../../shared-ts/src/near/actions.js";
12
+ import { WalletSessionStatusReadScope } from "../../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
12
13
  import { emitEd25519SigningTiming } from "../../../session/operationState/trace.js";
13
14
  import { buildCapabilityOperationEnvelope, parseSigningOperationFingerprintDigest } from "../../../../../shared-ts/src/authorization/operationFingerprint.js";
14
- import { WalletSessionStatusReadScope } from "../../../../rpcClients/relayer/walletSessionAuthorizationStatus.js";
15
15
  import { buildRouterAbEd25519DelegateActionPrepareRequestV2, buildRouterAbEd25519NearTransactionPrepareRequestV2, buildRouterAbEd25519Nep413PrepareRequestV2, buildRouterAbEd25519NormalSigningFinalizeRequestV2, finalizeRouterAbNormalSigningV2, prepareRouterAbNormalSigningV2, routerAbCanonicalWireBytesToB64u, routerAbNormalSigningActionFingerprint } from "../../../../rpcClients/relayer/routerAbNormalSigning.js";
16
16
  import { parseThresholdEd25519NearTransaction, thresholdEd25519NearTransactionOperationFingerprint } from "../../../../../shared-ts/src/threshold/ed25519OperationFingerprint.js";
17
17
  import { buildThresholdEd25519DelegateSigningPayloadWasm, buildThresholdEd25519NearTxUnsignedBorshWasm, decodeThresholdEd25519SignedNearTxBorshWasm, finalizeThresholdEd25519DelegateFromSignatureWasm, finalizeThresholdEd25519NearTxFromSignatureWasm } from "../../../chains/near/nearSignerWasm.js";
@@ -26,6 +26,11 @@ function buildPlanningLane(args) {
26
26
  thresholdSessionId: args.selectedLane.thresholdSessionId
27
27
  };
28
28
  switch (args.selectedLane.auth.kind) {
29
+ case "voiceid": return buildNearTransactionSigningLane({
30
+ ...common,
31
+ auth: args.selectedLane.auth,
32
+ storageSource: "login"
33
+ });
29
34
  case "passkey": return buildNearTransactionSigningLane({
30
35
  ...common,
31
36
  auth: args.selectedLane.auth,
@@ -61,22 +61,25 @@ async function invalidateAuthoritativeNearWalletSessionExpiry(args) {
61
61
  })).kind === "unavailable") throw new Error("[SigningEngine][near] expired Wallet Session cleanup failed");
62
62
  }
63
63
  async function signNear(deps, request) {
64
- if (request.kind === "transactionWithActions") {
65
- const context = deps.getSignerWorkerContext();
66
- const admission = reviewAdmissionForBinding(context.touchConfirm?.getContext().surfaceMeasurementBinding);
67
- if (admission) {
68
- admission.assertPending();
69
- deps = {
70
- ...deps,
71
- getSignerWorkerContext: reviewedNearContext.bind(null, context, admission.beforeSigning)
72
- };
73
- }
74
- return await signTransaction(deps, request.args);
75
- }
64
+ const context = deps.getSignerWorkerContext();
65
+ const admission = request.kind === "transactionWithActions" ? reviewAdmissionForBinding(context.touchConfirm?.getContext().surfaceMeasurementBinding) ?? null : null;
66
+ if (admission) admission.assertPending();
67
+ deps = {
68
+ ...deps,
69
+ prepareNearEd25519YaoMaterialBoundary: prepareReviewBoundNearMaterial.bind(null, deps.prepareNearEd25519YaoMaterialBoundary.bind(deps), admission),
70
+ getSignerWorkerContext: admission ? reviewedNearContext.bind(null, context, admission.beforeSigning) : deps.getSignerWorkerContext
71
+ };
72
+ if (request.kind === "transactionWithActions") return await signTransaction(deps, request.args);
76
73
  if (request.kind === "delegateAction") return await signDelegateAction(deps, request.args);
77
74
  if (request.kind === "nep413") return await signMessage(deps, request.args);
78
75
  throw new Error(`[SigningEngine] unsupported near signing intent: ${String(request.kind || "")}`);
79
76
  }
77
+ function prepareReviewBoundNearMaterial(prepare, admission, input) {
78
+ const method = signingLaneAuthMethod(input.materialIdentity ? input.materialIdentity.auth : input.auth);
79
+ if (method === "voiceid" && !admission) throw new Error("VoiceID requires a reviewed NEAR transfer.");
80
+ admission?.assertAuthMethodPolicy(method);
81
+ return prepare(input);
82
+ }
80
83
  function createNearTransactionSigningOperationId() {
81
84
  const randomId = secureRandomBase64Url(32, "NEAR transaction signing operation IDs");
82
85
  return SigningSessionIds.signingOperation(`near-transaction-sign:${randomId}`);
@@ -934,6 +937,7 @@ async function signTransactionWithActionsAttempt(deps, args, attempt) {
934
937
  lane: preparedSigningSession.transactionLane,
935
938
  expiresAtMs: preparationAuthorization.authorization.status.expiresAtMs
936
939
  });
940
+ if (transactionLane.auth.kind === "voiceid") throw new Error("Unlock with VoiceID again to renew the NEAR Wallet Session.");
937
941
  const isEmailOtpSession = transactionLane.auth.kind === "email_otp";
938
942
  const ownerStepUpReason = ownerDecision?.kind === "step_up_required" ? ownerDecision.reason : void 0;
939
943
  const reason = admissionDecision ? admissionDecision.reason === "stale_projection" ? "wallet_signing_budget_stale_projection" : "wallet_signing_budget_exhausted" : ownerStepUpReason === "wallet_session_missing" ? "threshold_session_missing" : "threshold_session_expired";
@@ -10,7 +10,7 @@ function ecdsaAuthorizationPolicyMatchesLane(lane) {
10
10
  return lane.remainingUses === authorization.runtime.remainingUses && lane.expiresAtMs === authorization.runtime.expiresAtMs;
11
11
  }
12
12
  function availableEcdsaSigningLaneAuthMethod(lane) {
13
- return signingLaneAuthMethod(lane.auth);
13
+ return lane.auth.kind;
14
14
  }
15
15
  function isConcreteAvailableSigningLane(lane) {
16
16
  if (lane.state === "missing") return false;
@@ -20,9 +20,8 @@ function isConcreteAvailableSigningLane(lane) {
20
20
  if (!thresholdSessionId) return false;
21
21
  if (lane.authorizationState === "authorization_required") return lane.state === "deferred";
22
22
  if (!lane.authorization.operationCredential.walletSessionId || !lane.authorization.session.quotaId || lane.authorization.status.remainingUses <= 0 || lane.authorization.status.expiresAtMs <= Date.now()) return false;
23
- return lane.auth.kind === "email_otp" || lane.auth.kind === "passkey";
23
+ return true;
24
24
  }
25
- if (lane.auth.kind !== "email_otp" && lane.auth.kind !== "passkey") return false;
26
25
  if (lane.source === "active_wallet_authority") {
27
26
  if (lane.state !== "deferred" || lane.authorizationState !== "authorization_required" || lane.runtime.kind !== "active_wallet_authority_ecdsa_runtime_v1" || String(lane.runtime.walletId) !== String(lane.key.walletId) || !mpcMaterialActivationRefsEqual(lane.runtime.materialActivation, lane.materialActivation) || lane.runtime.publicFacts !== lane.publicFacts) return false;
28
27
  }
@@ -1,5 +1,6 @@
1
- import { parseMpcMaterialActivationRef } from "../../../../shared-ts/src/utils/domainIds.js";
1
+ import { parseMpcMaterialActivationRef, parseWalletAuthMethodId } from "../../../../shared-ts/src/utils/domainIds.js";
2
2
  import { alphabetizeStringify } from "../../../../shared-ts/src/utils/digests.js";
3
+ import { parseDigestB64u } from "../../../../shared-ts/src/utils/canonicalPrimitives.js";
3
4
  import { thresholdEcdsaChainTargetFromRequest, thresholdEcdsaChainTargetKey, toWalletId } from "../../interfaces/ecdsaChainTarget.js";
4
5
  import { isImplicitNearAccountId, parseNearAccountId } from "../../../../shared-ts/src/utils/near.js";
5
6
  import { SigningSessionIds } from "../operationState/types.js";
@@ -24,6 +25,15 @@ function rejectPresent(record, fields, branch) {
24
25
  function parseSigningLaneAuthBinding(value) {
25
26
  const auth = requireRecord(value, "exact lane auth");
26
27
  switch (auth.kind) {
28
+ case "voiceid": {
29
+ const method = parseWalletAuthMethodId(auth.walletAuthMethodId);
30
+ if (!method.ok) throw new Error("VoiceID lane method ID is invalid");
31
+ return {
32
+ kind: "voiceid",
33
+ walletAuthMethodId: method.value,
34
+ deviceKeyId: parseDigestB64u(auth.deviceKeyId)
35
+ };
36
+ }
27
37
  case "passkey": return {
28
38
  kind: "passkey",
29
39
  rpId: toRpId(auth.rpId),
@@ -141,6 +151,11 @@ function canonicalKeyIdentity(key) {
141
151
  }
142
152
  function canonicalAuthBinding(auth) {
143
153
  switch (auth.kind) {
154
+ case "voiceid": return {
155
+ kind: "voiceid",
156
+ walletAuthMethodId: auth.walletAuthMethodId,
157
+ deviceKeyId: auth.deviceKeyId
158
+ };
144
159
  case "passkey": return {
145
160
  kind: "passkey",
146
161
  rpId: String(auth.rpId),
@@ -4,6 +4,7 @@ function signingLaneAuthMethod(auth) {
4
4
  switch (auth.kind) {
5
5
  case SIGNER_AUTH_METHODS.passkey: return SIGNER_AUTH_METHODS.passkey;
6
6
  case SIGNER_AUTH_METHODS.emailOtp: return SIGNER_AUTH_METHODS.emailOtp;
7
+ case "voiceid": return "voiceid";
7
8
  }
8
9
  throw new Error("[SigningSession] unsupported signing lane auth binding");
9
10
  }
@@ -14,6 +15,11 @@ function requireSigningLaneAuthKeyPart(value, label) {
14
15
  }
15
16
  function signingLaneAuthBindingKey(auth) {
16
17
  switch (auth.kind) {
18
+ case "voiceid": return [
19
+ "voiceid",
20
+ auth.walletAuthMethodId,
21
+ auth.deviceKeyId
22
+ ].join(":");
17
23
  case SIGNER_AUTH_METHODS.passkey: return [
18
24
  SIGNER_AUTH_METHODS.passkey,
19
25
  requireSigningLaneAuthKeyPart(String(auth.rpId), "passkey rpId"),
@@ -19,6 +19,7 @@ function capabilityAuthorityMatchesRuntime(args) {
19
19
  const capabilityAuthority = args.capability.authority;
20
20
  const runtimeBinding = args.runtime.authBinding;
21
21
  switch (runtimeBinding.kind) {
22
+ case "voiceid": return walletAuthAuthoritiesMatch(capabilityAuthority, runtimeBinding.voiceIdAuthority);
22
23
  case "email_otp": return isEmailOtpWalletAuthAuthority(capabilityAuthority) && walletAuthAuthoritiesMatch(capabilityAuthority, runtimeBinding.emailOtpAuthority);
23
24
  case "passkey": return isPasskeyWalletAuthAuthority(capabilityAuthority) && capabilityAuthority.verifier.rpId === runtimeBinding.rpId && capabilityAuthority.factor.credentialIdB64u === runtimeBinding.credentialIdB64u;
24
25
  default: return runtimeBinding;
@@ -26,6 +27,7 @@ function capabilityAuthorityMatchesRuntime(args) {
26
27
  }
27
28
  function selectedAuthMethodMatchesRuntime(args) {
28
29
  switch (args.runtime.authBinding.kind) {
30
+ case "voiceid": return args.selectedAuthMethod.kind === "voiceid" && args.selectedAuthMethod.walletAuthMethodId === args.runtime.authBinding.voiceIdAuthority.bindingId && args.selectedAuthMethod.deviceKeyId === args.runtime.authBinding.voiceIdAuthority.factor.deviceKeyId;
29
31
  case "email_otp": return args.selectedAuthMethod.kind === "email_otp" && args.selectedAuthMethod.emailHashHex === args.runtime.authBinding.emailHashHex;
30
32
  case "passkey": return args.selectedAuthMethod.kind === "passkey" && String(args.selectedAuthMethod.rpId) === String(args.runtime.authBinding.rpId) && args.selectedAuthMethod.credentialIdB64u === args.runtime.authBinding.credentialIdB64u;
31
33
  default: return args.runtime.authBinding;
@@ -72,6 +74,7 @@ function exactAuthorizationMatchesCapability(args) {
72
74
  function exactEcdsaAuthBindingsMatch(left, right) {
73
75
  if (left.kind !== right.kind) return false;
74
76
  switch (left.kind) {
77
+ case "voiceid": return right.kind === "voiceid" && walletAuthAuthoritiesMatch(left.voiceIdAuthority, right.voiceIdAuthority);
75
78
  case "email_otp": return right.kind === "email_otp" && left.providerSubjectId === right.providerSubjectId && left.emailHashHex === right.emailHashHex && walletAuthAuthoritiesMatch(left.emailOtpAuthority, right.emailOtpAuthority);
76
79
  case "passkey": return right.kind === "passkey" && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u;
77
80
  default: return left;
@@ -38,7 +38,7 @@ function buildEd25519EmailOtpSigningLane(input) {
38
38
  ...input.retention ? { retention: input.retention } : {}
39
39
  });
40
40
  }
41
- function buildEcdsaPasskeySigningLane(input) {
41
+ function buildEcdsaStoredSigningLane(input) {
42
42
  return buildSigningLane({
43
43
  ...selectedEcdsaLane({
44
44
  key: input.key,
@@ -75,6 +75,23 @@ function buildEcdsaEmailOtpSigningLane(input) {
75
75
  });
76
76
  }
77
77
  function buildNearTransactionSigningLane(input) {
78
+ if (input.auth.kind === "voiceid") return buildSigningLane({
79
+ ...selectedEd25519Lane({
80
+ walletId: input.walletId,
81
+ nearAccountId: input.nearAccountId,
82
+ nearEd25519SigningKeyId: input.nearEd25519SigningKeyId,
83
+ signerSlot: input.signerSlot,
84
+ auth: input.auth,
85
+ walletSessionId: input.walletSessionId,
86
+ quotaId: input.quotaId,
87
+ thresholdSessionId: input.thresholdSessionId
88
+ }),
89
+ keyKind: "threshold_ed25519",
90
+ chainFamily: "near",
91
+ storageSource: "login",
92
+ sessionOrigin: "login",
93
+ retention: "session"
94
+ });
78
95
  if (isEd25519EmailOtpTransactionSigningLaneInput(input)) return buildEd25519EmailOtpSigningLane(input);
79
96
  if (isEd25519PasskeyTransactionSigningLaneInput(input)) return buildEd25519PasskeySigningLane(input);
80
97
  throw new Error("[SigningSession] unsupported NEAR lane auth");
@@ -89,7 +106,7 @@ function buildEvmTransactionSigningLane(input) {
89
106
  }
90
107
  function buildEcdsaTransactionSigningLane(input) {
91
108
  if (isEcdsaEmailOtpTransactionSigningLaneInput(input)) return buildEcdsaEmailOtpSigningLane(input);
92
- if (isEcdsaPasskeyTransactionSigningLaneInput(input)) return buildEcdsaPasskeySigningLane(input);
109
+ if (isEcdsaStoredTransactionSigningLaneInput(input)) return buildEcdsaStoredSigningLane(input);
93
110
  throw new Error("[SigningSession] unsupported ECDSA lane auth");
94
111
  }
95
112
  function isEd25519PasskeyTransactionSigningLaneInput(input) {
@@ -98,8 +115,8 @@ function isEd25519PasskeyTransactionSigningLaneInput(input) {
98
115
  function isEd25519EmailOtpTransactionSigningLaneInput(input) {
99
116
  return input.auth.kind === "email_otp";
100
117
  }
101
- function isEcdsaPasskeyTransactionSigningLaneInput(input) {
102
- return input.auth.kind === "passkey";
118
+ function isEcdsaStoredTransactionSigningLaneInput(input) {
119
+ return input.auth.kind === "passkey" || input.auth.kind === "voiceid";
103
120
  }
104
121
  function isEcdsaEmailOtpTransactionSigningLaneInput(input) {
105
122
  return input.auth.kind === "email_otp";