@seams/wallet 0.7.1 → 0.7.3

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 (509) hide show
  1. package/THIRD_PARTY_NOTICES.md +1 -105
  2. package/dist/.build-inputs.sha256 +1 -1
  3. package/dist/esm/SeamsWeb/SeamsWeb.js +10 -1
  4. package/dist/esm/SeamsWeb/operations/auth/login.js +16 -6
  5. package/dist/esm/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +64 -0
  6. package/dist/esm/SeamsWeb/operations/auth/walletAuth.js +2 -3
  7. package/dist/esm/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +1 -4
  8. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +11 -12
  9. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +1 -5
  10. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +24 -24
  11. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +4 -7
  12. package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +2 -8
  13. package/dist/esm/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +4 -1
  14. package/dist/esm/SeamsWeb/publicApi/auth.js +2 -1
  15. package/dist/esm/SeamsWeb/publicApi/tempo.js +6 -0
  16. package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +24 -15
  17. package/dist/esm/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +29 -0
  18. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +88 -222
  19. package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +6 -26
  20. package/dist/esm/build-paths.js +0 -2
  21. package/dist/esm/components/AccountMenuButton/MenuItem.css +17 -0
  22. package/dist/esm/components/AccountMenuButton/UserAccountButton.css +0 -5
  23. package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -52
  24. package/dist/esm/components/QRCodeScanner.css +0 -15
  25. package/dist/esm/components/ShowQRCode.css +0 -14
  26. package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +5 -10
  27. package/dist/esm/core/indexedDB/pendingWalletRegistrationCommit.js +139 -273
  28. package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +10 -13
  29. package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +69 -121
  30. package/dist/esm/core/signingEngine/assembly/ports/recovery.js +1 -1
  31. package/dist/esm/core/signingEngine/chains/evm/display/functionSelectors.js +2 -5
  32. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportFlow.js +2 -2
  33. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +35 -28
  34. package/dist/esm/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +3 -3
  35. package/dist/esm/core/signingEngine/flows/recovery/exportKeypairOperation.js +1 -4
  36. package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +1 -4
  37. package/dist/esm/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +2 -2
  38. package/dist/esm/core/signingEngine/flows/signEvmFamily/preparedSigning.js +2 -9
  39. package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +6 -8
  40. package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +24 -18
  41. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +6 -4
  42. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +10 -9
  43. package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +2 -5
  44. package/dist/esm/core/signingEngine/flows/signNear/signNear.js +2 -2
  45. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +2 -0
  46. package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +1 -10
  47. package/dist/esm/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +7 -6
  48. package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +108 -24
  49. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +3 -8
  50. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +2 -2
  51. package/dist/esm/core/signingEngine/session/identity/selectLane.js +7 -21
  52. package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +2 -7
  53. package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +3 -15
  54. package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +1 -1
  55. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +1 -4
  56. package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +5 -8
  57. package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +2 -2
  58. package/dist/esm/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +1 -1
  59. package/dist/esm/core/signingEngine/threshold/commitQueueShared.js +20 -6
  60. package/dist/esm/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +7 -4
  61. package/dist/esm/core/signingEngine/threshold/ecdsa/signingQueue.js +8 -50
  62. package/dist/esm/core/signingEngine/threshold/ed25519/commitQueue.js +7 -43
  63. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +3 -2
  64. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +18 -16
  65. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +1 -10
  66. package/dist/esm/core/signingEngine/workerManager/deviceLinkingPorts.js +67 -48
  67. package/dist/esm/core/signingEngine/workerManager/workerTransport.js +1 -5
  68. package/dist/esm/react/SeamsWeb/SeamsWeb.js +10 -1
  69. package/dist/esm/react/SeamsWeb/operations/auth/login.js +16 -6
  70. package/dist/esm/react/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +64 -0
  71. package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +2 -3
  72. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +1 -4
  73. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +11 -12
  74. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +1 -5
  75. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +24 -24
  76. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +4 -7
  77. package/dist/esm/react/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +2 -8
  78. package/dist/esm/react/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +4 -1
  79. package/dist/esm/react/SeamsWeb/publicApi/auth.js +2 -1
  80. package/dist/esm/react/SeamsWeb/publicApi/tempo.js +6 -0
  81. package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +24 -15
  82. package/dist/esm/react/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +29 -0
  83. package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +6 -26
  84. package/dist/esm/react/build-paths.js +0 -2
  85. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +2 -2
  86. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +1 -1
  87. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +4 -4
  88. package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
  89. package/dist/esm/react/components/AccountMenuButton/MenuItem.css +17 -0
  90. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +0 -5
  91. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +7 -7
  92. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +0 -52
  93. package/dist/esm/react/components/AccountMenuButton/icons/GlobeIcon.js +12 -27
  94. package/dist/esm/react/components/AccountMenuButton/icons/KeyIcon.js +12 -27
  95. package/dist/esm/react/components/AccountMenuButton/icons/LaptopIcon.js +4 -19
  96. package/dist/esm/react/components/AccountMenuButton/icons/LinkIcon.js +4 -19
  97. package/dist/esm/react/components/AccountMenuButton/icons/LockIcon.js +11 -26
  98. package/dist/esm/react/components/AccountMenuButton/icons/MailIcon.js +10 -25
  99. package/dist/esm/react/components/AccountMenuButton/icons/RecoveryCodesIcon.js +16 -31
  100. package/dist/esm/react/components/AccountMenuButton/icons/ScanIcon.js +9 -24
  101. package/dist/esm/react/components/AccountMenuButton/icons/SlidersIcon.js +14 -29
  102. package/dist/esm/react/components/AccountMenuButton/icons/SmartphoneIcon.js +11 -26
  103. package/dist/esm/react/components/AccountMenuButton/icons/lucideIcon.js +27 -0
  104. package/dist/esm/react/components/AccountMenuButton/icons/strokeIcon.js +7 -17
  105. package/dist/esm/react/components/AccountMenuButton/index.js +6 -6
  106. package/dist/esm/react/components/QRCodeScanner.css +0 -15
  107. package/dist/esm/react/components/ShowQRCode.css +0 -14
  108. package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -2
  109. package/dist/esm/react/context/useWalletIframeLifecycle.js +0 -14
  110. package/dist/esm/react/core/indexedDB/pendingWalletRecoveryCommit.js +5 -10
  111. package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +139 -273
  112. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryPrepare.js +4 -4
  113. package/dist/esm/react/core/signingEngine/assembly/ports/recovery.js +1 -1
  114. package/dist/esm/react/core/signingEngine/chains/evm/display/functionSelectors.js +2 -5
  115. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportFlow.js +2 -2
  116. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +35 -28
  117. package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +3 -3
  118. package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +1 -4
  119. package/dist/esm/react/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +1 -4
  120. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +2 -2
  121. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/preparedSigning.js +2 -9
  122. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +6 -8
  123. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +24 -18
  124. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlow.js +6 -4
  125. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +10 -9
  126. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +2 -5
  127. package/dist/esm/react/core/signingEngine/flows/signNear/signNear.js +2 -2
  128. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +2 -0
  129. package/dist/esm/react/core/signingEngine/session/availability/availableSigningLanes.js +1 -10
  130. package/dist/esm/react/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +7 -6
  131. package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +108 -24
  132. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLogin.js +3 -8
  133. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaRecovery.js +2 -2
  134. package/dist/esm/react/core/signingEngine/session/identity/selectLane.js +7 -21
  135. package/dist/esm/react/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +2 -7
  136. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +3 -15
  137. package/dist/esm/react/core/signingEngine/session/material/ecdsaSigningCapability.js +1 -1
  138. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +1 -4
  139. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionRecords.js +5 -8
  140. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +2 -2
  141. package/dist/esm/react/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +1 -1
  142. package/dist/esm/react/core/signingEngine/threshold/commitQueueShared.js +20 -6
  143. package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +7 -4
  144. package/dist/esm/react/core/signingEngine/threshold/ecdsa/signingQueue.js +8 -50
  145. package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +7 -43
  146. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +3 -2
  147. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +18 -16
  148. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +1 -10
  149. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingPorts.js +67 -48
  150. package/dist/esm/react/core/signingEngine/workerManager/workerTransport.js +1 -5
  151. package/dist/esm/react/shared-ts/src/authorization/walletSessionIssuance.js +5 -8
  152. package/dist/esm/react/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
  153. package/dist/esm/react/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
  154. package/dist/esm/react/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
  155. package/dist/esm/react/shared-ts/src/device-linking/ed25519ExportRoot.js +11 -15
  156. package/dist/esm/react/shared-ts/src/device-linking/sourceContribution.js +5 -8
  157. package/dist/esm/react/shared-ts/src/passkey-custody/primitives.js +5 -1
  158. package/dist/esm/react/shared-ts/src/signing-lanes/ownerContinuity.js +3 -7
  159. package/dist/esm/react/shared-ts/src/signing-lanes/recordParsers.js +12 -16
  160. package/dist/esm/react/shared-ts/src/threshold/signingRootScope.js +4 -1
  161. package/dist/esm/react/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -4
  162. package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
  163. package/dist/esm/react/shared-ts/src/utils/exactKeys.js +17 -0
  164. package/dist/esm/react/shared-ts/src/utils/registrationIntent.js +2 -8
  165. package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +2 -5
  166. package/dist/esm/react/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -1
  167. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
  168. package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
  169. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
  170. package/dist/esm/react/styles/styles.css +17 -86
  171. package/dist/esm/react/utils/menuItemBlink.js +24 -0
  172. package/dist/esm/sdk/{accountLifecycle-BAGG_rbk.js → accountLifecycle-zthG08aC.js} +1 -1
  173. package/dist/esm/sdk/{adapters-B4JeK1nJ.js → adapters-Dli9XAZp.js} +20 -48
  174. package/dist/{public/sdk/canonicalSignerErrorCode-CRoJMVpp.js → esm/sdk/canonicalSignerErrorCode-BBIk365e.js} +1 -15
  175. package/dist/esm/sdk/{challengeDelivery-Dd0586fo.js → challengeDelivery-DZtopOAG.js} +1 -1
  176. package/dist/{public/sdk/configHelpers-vAQCzUD0.js → esm/sdk/configHelpers-D1EqxVxg.js} +1 -1
  177. package/dist/{public/sdk/defaultConfigs-B3c16M_8.js → esm/sdk/defaultConfigs-D_33pPT9.js} +3 -3
  178. package/dist/esm/sdk/{display-KdIL0ff7.js → display-P4nQF-yc.js} +1 -1
  179. package/dist/esm/sdk/{ecdsaCapabilityManifest-kzO_fW09.js → ecdsaCapabilityManifest-DuMs0VtU.js} +6 -18
  180. package/dist/{public/sdk/ecdsaPresignLifecycle-BFOTNYCK.js → esm/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js} +2 -2
  181. package/dist/esm/sdk/{ecdsaWalletRecords-Cz4m6bIz.js → ecdsaWalletRecords-D42rtA9z.js} +2 -2
  182. package/dist/{public/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js → esm/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js} +20 -34
  183. package/dist/esm/sdk/{exactSessionState-CiD5fBEs.js → exactSessionState-LWDUXydN.js} +10 -30
  184. package/dist/esm/sdk/{exactSigningLaneIdentity-DQeqPMST.js → exactSigningLaneIdentity-m6uTXV_A.js} +1 -1
  185. package/dist/esm/sdk/{export-viewer-host-ZqA2Yz3H.js → export-viewer-host-rWMSQQMP.js} +1 -1
  186. package/dist/{public/sdk/host-BWBbCAMu.js → esm/sdk/host-CnV8nAUe.js} +3 -3
  187. package/dist/{public/sdk/keyMaterialBrands-CX41hur6.js → esm/sdk/keyMaterialBrands-CogGAAZn.js} +1 -1
  188. package/dist/{public/sdk/localOnly-Bg8UuLZ5.js → esm/sdk/localOnly-DTpa2jD5.js} +2 -2
  189. package/dist/esm/sdk/{nearEd25519YaoMaterialActivation-DPb0s3hQ.js → nearEd25519YaoMaterialActivation-B5GecIvq.js} +38 -28
  190. package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-BeD-SmbK.js → nearEd25519YaoSigningPreparation-CdOT5RuC.js} +3 -3
  191. package/dist/esm/sdk/{passkey-custody-Bk1jAknm.js → passkey-custody-UUHbC0pk.js} +1 -1
  192. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-DLzBb3WQ.js → pendingWalletRecoveryCodeBackup-BWluQMbt.js} +1 -1
  193. package/dist/esm/sdk/{recovery-entrypoint-DW2tGyMs.js → recovery-entrypoint-C3fydnRC.js} +10 -10
  194. package/dist/esm/sdk/{registration-BZDzDv91.js → registration-Ct_7LdGf.js} +30 -42
  195. package/dist/esm/sdk/{registration-BzVHODuD.js → registration-DHERU8R_.js} +1 -1
  196. package/dist/esm/sdk/{registrationAccounts-CKku_Sgy.js → registrationAccounts-DmWPzf3T.js} +2 -2
  197. package/dist/esm/sdk/{registrationIntent-D0PxwEY4.js → registrationIntent-4zwk16zQ.js} +3 -9
  198. package/dist/esm/sdk/{registrationPreparationPreload-CIAuRlxI.js → registrationPreparationPreload-D6zpWp4O.js} +2 -2
  199. package/dist/esm/sdk/{registrationSignerPlan-CAikVZZQ.js → registrationSignerPlan-DhV8VAob.js} +2 -5
  200. package/dist/{public/sdk/router-C5lF_J_u.js → esm/sdk/router-B4ZWFy9E.js} +7 -7
  201. package/dist/{public/sdk/routerAbNormalSigning-fhvpDtmY.js → esm/sdk/routerAbNormalSigning-CVFEOZ2m.js} +1 -1
  202. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  203. package/dist/esm/sdk/{runtime-auth-DFTqwj3u.js → runtime-auth-DdfynDKt.js} +126 -273
  204. package/dist/esm/sdk/{runtime-device-link-C1Oub8Lw.js → runtime-device-link-HJ2ptFux.js} +12 -12
  205. package/dist/esm/sdk/{runtime-ecdsa-tempo-rkWwolw1.js → runtime-ecdsa-tempo-BGLsTAWR.js} +13 -13
  206. package/dist/{public/sdk/runtime-email-otp-vuUG5LYl.js → esm/sdk/runtime-email-otp-CpX88VZJ.js} +12 -12
  207. package/dist/{public/sdk/runtime-export-FZWj0HxJ.js → esm/sdk/runtime-export-DIVY473L.js} +13 -13
  208. package/dist/esm/sdk/{runtime-near-B9cjurVD.js → runtime-near-CxtQi4b2.js} +12 -12
  209. package/dist/esm/sdk/{runtime-preferences-Dq0bfyS5.js → runtime-preferences-vnJc5Svg.js} +12 -12
  210. package/dist/esm/sdk/{runtime-recovery-codes-bTm3fLV4.js → runtime-recovery-codes-BSCLVHQj.js} +6 -6
  211. package/dist/{public/sdk/runtime-recovery-C-vfFKF3.js → esm/sdk/runtime-recovery-i08vCJST.js} +12 -12
  212. package/dist/esm/sdk/{runtimeContext-iLXnxVlZ.js → runtimeContext-D3TBExQ6.js} +346 -305
  213. package/dist/esm/sdk/{runtimeLoader-hod6T2-m.js → runtimeLoader-DQVEFVaW.js} +11 -11
  214. package/dist/{public/sdk/secp256k1-el9aE4Sv.js → esm/sdk/secp256k1-D-I6Gh4D.js} +36 -25
  215. package/dist/esm/sdk/{sessionPolicy-CHiilOAB.js → sessionPolicy-DO-MkL65.js} +8 -1
  216. package/dist/{public/sdk/signEvmFamily-e4IWWsZs.js → esm/sdk/signEvmFamily-C3C97Th-.js} +43 -102
  217. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js → signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js} +2 -2
  218. package/dist/{public/sdk/signEvmWithUiConfirm-C61TCBnh.js → esm/sdk/signEvmWithUiConfirm-Bmcim5-g.js} +1 -1
  219. package/dist/esm/sdk/{signNear-Bblwn2kT.js → signNear-Bmb2fj_a.js} +19 -55
  220. package/dist/{public/sdk/signerLoader-D7Aey0FD.js → esm/sdk/signerLoader-B7orgq5Z.js} +3 -3
  221. package/dist/{public/sdk/signingFlow-rZfPegH9.js → esm/sdk/signingFlow-SZ8t_lxv.js} +9 -10
  222. package/dist/esm/sdk/{trace-rHe0wz7q.js → trace-DKLQZvec.js} +0 -1
  223. package/dist/esm/sdk/{transactionState-DP9O8F6f.js → transactionState-CJ4U8pcl.js} +50 -41
  224. package/dist/esm/sdk/tx-confirm-ui.js +11 -46
  225. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  226. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  227. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  228. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  229. package/dist/{public/sdk/wallet-recovery-Bz9qKgaL.js → esm/sdk/wallet-recovery-BX61-79p.js} +3 -6
  230. package/dist/esm/sdk/wallet-ui.css +41 -301
  231. package/dist/{public/sdk/walletAuthority-BQBxgUBn.js → esm/sdk/walletAuthority-DD9T25F6.js} +1 -5
  232. package/dist/esm/sdk/{walletCustodyEcdsaContinuity-Hn4ORIbf.js → walletCustodyEcdsaContinuity-CF4bv9OI.js} +166 -296
  233. package/dist/esm/sdk/{walletRecoveryCommit-sjGNTHUj.js → walletRecoveryCommit-AI1AtIRP.js} +81 -139
  234. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +5 -8
  235. package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
  236. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
  237. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
  238. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +11 -15
  239. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +5 -8
  240. package/dist/esm/shared-ts/src/passkey-custody/primitives.js +5 -1
  241. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +3 -7
  242. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +12 -16
  243. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +4 -1
  244. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -4
  245. package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
  246. package/dist/esm/shared-ts/src/utils/exactKeys.js +17 -0
  247. package/dist/esm/shared-ts/src/utils/registrationIntent.js +2 -8
  248. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +2 -5
  249. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +1 -1
  250. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
  251. package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
  252. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
  253. package/dist/esm/utils/menuItemBlink.js +24 -0
  254. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.d.ts +1 -1
  255. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  256. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
  257. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  258. package/dist/public/headers.manifest.json +1 -1
  259. package/dist/public/sdk/{accountLifecycle-BAGG_rbk.js → accountLifecycle-zthG08aC.js} +1 -1
  260. package/dist/public/sdk/{adapters-B4JeK1nJ.js → adapters-Dli9XAZp.js} +20 -48
  261. package/dist/{esm/sdk/canonicalSignerErrorCode-CRoJMVpp.js → public/sdk/canonicalSignerErrorCode-BBIk365e.js} +1 -15
  262. package/dist/public/sdk/{challengeDelivery-Dd0586fo.js → challengeDelivery-DZtopOAG.js} +1 -1
  263. package/dist/{esm/sdk/configHelpers-vAQCzUD0.js → public/sdk/configHelpers-D1EqxVxg.js} +1 -1
  264. package/dist/{esm/sdk/defaultConfigs-B3c16M_8.js → public/sdk/defaultConfigs-D_33pPT9.js} +3 -3
  265. package/dist/public/sdk/{display-KdIL0ff7.js → display-P4nQF-yc.js} +1 -1
  266. package/dist/public/sdk/{ecdsaCapabilityManifest-kzO_fW09.js → ecdsaCapabilityManifest-DuMs0VtU.js} +6 -18
  267. package/dist/{esm/sdk/ecdsaPresignLifecycle-BFOTNYCK.js → public/sdk/ecdsaPresignLifecycle-Bfx2AQKb.js} +2 -2
  268. package/dist/public/sdk/{ecdsaWalletRecords-Cz4m6bIz.js → ecdsaWalletRecords-D42rtA9z.js} +2 -2
  269. package/dist/{esm/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js → public/sdk/evmFamilyEcdsaIdentity-CqGafQsI.js} +20 -34
  270. package/dist/public/sdk/{exactSessionState-CiD5fBEs.js → exactSessionState-LWDUXydN.js} +10 -30
  271. package/dist/public/sdk/{exactSigningLaneIdentity-DQeqPMST.js → exactSigningLaneIdentity-m6uTXV_A.js} +1 -1
  272. package/dist/public/sdk/{export-viewer-host-ZqA2Yz3H.js → export-viewer-host-rWMSQQMP.js} +1 -1
  273. package/dist/{esm/sdk/host-BWBbCAMu.js → public/sdk/host-CnV8nAUe.js} +3 -3
  274. package/dist/{esm/sdk/keyMaterialBrands-CX41hur6.js → public/sdk/keyMaterialBrands-CogGAAZn.js} +1 -1
  275. package/dist/{esm/sdk/localOnly-Bg8UuLZ5.js → public/sdk/localOnly-DTpa2jD5.js} +2 -2
  276. package/dist/public/sdk/{nearEd25519YaoMaterialActivation-DPb0s3hQ.js → nearEd25519YaoMaterialActivation-B5GecIvq.js} +38 -28
  277. package/dist/public/sdk/{nearEd25519YaoSigningPreparation-BeD-SmbK.js → nearEd25519YaoSigningPreparation-CdOT5RuC.js} +3 -3
  278. package/dist/public/sdk/{passkey-custody-Bk1jAknm.js → passkey-custody-UUHbC0pk.js} +1 -1
  279. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-DLzBb3WQ.js → pendingWalletRecoveryCodeBackup-BWluQMbt.js} +1 -1
  280. package/dist/public/sdk/{recovery-entrypoint-DW2tGyMs.js → recovery-entrypoint-C3fydnRC.js} +10 -10
  281. package/dist/public/sdk/{registration-BZDzDv91.js → registration-Ct_7LdGf.js} +30 -42
  282. package/dist/public/sdk/{registration-BzVHODuD.js → registration-DHERU8R_.js} +1 -1
  283. package/dist/public/sdk/{registrationAccounts-CKku_Sgy.js → registrationAccounts-DmWPzf3T.js} +2 -2
  284. package/dist/public/sdk/{registrationIntent-D0PxwEY4.js → registrationIntent-4zwk16zQ.js} +3 -9
  285. package/dist/public/sdk/{registrationPreparationPreload-CIAuRlxI.js → registrationPreparationPreload-D6zpWp4O.js} +2 -2
  286. package/dist/public/sdk/{registrationSignerPlan-CAikVZZQ.js → registrationSignerPlan-DhV8VAob.js} +2 -5
  287. package/dist/{esm/sdk/router-C5lF_J_u.js → public/sdk/router-B4ZWFy9E.js} +7 -7
  288. package/dist/{esm/sdk/routerAbNormalSigning-fhvpDtmY.js → public/sdk/routerAbNormalSigning-CVFEOZ2m.js} +1 -1
  289. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  290. package/dist/public/sdk/{runtime-auth-DFTqwj3u.js → runtime-auth-DdfynDKt.js} +126 -273
  291. package/dist/public/sdk/{runtime-device-link-C1Oub8Lw.js → runtime-device-link-HJ2ptFux.js} +12 -12
  292. package/dist/public/sdk/{runtime-ecdsa-tempo-rkWwolw1.js → runtime-ecdsa-tempo-BGLsTAWR.js} +13 -13
  293. package/dist/{esm/sdk/runtime-email-otp-vuUG5LYl.js → public/sdk/runtime-email-otp-CpX88VZJ.js} +12 -12
  294. package/dist/{esm/sdk/runtime-export-FZWj0HxJ.js → public/sdk/runtime-export-DIVY473L.js} +13 -13
  295. package/dist/public/sdk/{runtime-near-B9cjurVD.js → runtime-near-CxtQi4b2.js} +12 -12
  296. package/dist/public/sdk/{runtime-preferences-Dq0bfyS5.js → runtime-preferences-vnJc5Svg.js} +12 -12
  297. package/dist/public/sdk/{runtime-recovery-codes-bTm3fLV4.js → runtime-recovery-codes-BSCLVHQj.js} +6 -6
  298. package/dist/{esm/sdk/runtime-recovery-C-vfFKF3.js → public/sdk/runtime-recovery-i08vCJST.js} +12 -12
  299. package/dist/public/sdk/{runtimeContext-iLXnxVlZ.js → runtimeContext-D3TBExQ6.js} +346 -305
  300. package/dist/public/sdk/{runtimeLoader-hod6T2-m.js → runtimeLoader-DQVEFVaW.js} +11 -11
  301. package/dist/{esm/sdk/secp256k1-el9aE4Sv.js → public/sdk/secp256k1-D-I6Gh4D.js} +36 -25
  302. package/dist/public/sdk/{sessionPolicy-CHiilOAB.js → sessionPolicy-DO-MkL65.js} +8 -1
  303. package/dist/{esm/sdk/signEvmFamily-e4IWWsZs.js → public/sdk/signEvmFamily-C3C97Th-.js} +43 -102
  304. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js → signEvmFamilyWithUiConfirmForTempo-BI9DSTIS.js} +2 -2
  305. package/dist/{esm/sdk/signEvmWithUiConfirm-C61TCBnh.js → public/sdk/signEvmWithUiConfirm-Bmcim5-g.js} +1 -1
  306. package/dist/public/sdk/{signNear-Bblwn2kT.js → signNear-Bmb2fj_a.js} +19 -55
  307. package/dist/{esm/sdk/signerLoader-D7Aey0FD.js → public/sdk/signerLoader-B7orgq5Z.js} +3 -3
  308. package/dist/{esm/sdk/signingFlow-rZfPegH9.js → public/sdk/signingFlow-SZ8t_lxv.js} +9 -10
  309. package/dist/public/sdk/{trace-rHe0wz7q.js → trace-DKLQZvec.js} +0 -1
  310. package/dist/public/sdk/{transactionState-DP9O8F6f.js → transactionState-CJ4U8pcl.js} +50 -41
  311. package/dist/public/sdk/tx-confirm-ui.js +11 -46
  312. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  313. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  314. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  315. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  316. package/dist/{esm/sdk/wallet-recovery-Bz9qKgaL.js → public/sdk/wallet-recovery-BX61-79p.js} +3 -6
  317. package/dist/public/sdk/wallet-ui.css +41 -301
  318. package/dist/{esm/sdk/walletAuthority-BQBxgUBn.js → public/sdk/walletAuthority-DD9T25F6.js} +1 -5
  319. package/dist/public/sdk/{walletCustodyEcdsaContinuity-Hn4ORIbf.js → walletCustodyEcdsaContinuity-CF4bv9OI.js} +166 -296
  320. package/dist/public/sdk/{walletRecoveryCommit-sjGNTHUj.js → walletRecoveryCommit-AI1AtIRP.js} +81 -139
  321. package/dist/public/sdk/workers/device-linking-key.worker.js +106 -105
  322. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +15 -24
  323. package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +58 -73
  324. package/dist/public/sdk/workers/email-otp.worker.js +13 -16
  325. package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
  326. package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
  327. package/dist/public/sdk/workers/near_signer.wasm +0 -0
  328. package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  329. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  330. package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
  331. package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
  332. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +7 -7
  333. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  334. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  335. package/dist/public/wallet-assets.manifest.json +112 -112
  336. package/dist/public/wallet-service/index.html +4 -4
  337. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +2 -1
  338. package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +9 -2
  339. package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
  340. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -4
  341. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +5 -63
  342. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +2 -0
  343. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +5 -12
  344. package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -0
  345. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +11 -1
  346. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +1 -10
  347. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +3 -5
  348. package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
  349. package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
  350. package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +6 -0
  351. package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +1 -0
  352. package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +2 -11
  353. package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
  354. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +2 -0
  355. package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
  356. package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
  357. package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -4
  358. package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +1 -0
  359. package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +3 -8
  360. package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +7 -19
  361. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +3 -1
  362. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +1 -0
  363. package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +3 -4
  364. package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
  365. package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
  366. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -11
  367. package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
  368. package/dist/types/shared-ts/src/utils/variant.d.ts +18 -0
  369. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +3 -6
  370. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +4 -2
  371. package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +3 -16
  372. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
  373. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
  374. package/dist/types/wallet/build-paths.d.ts +1 -2
  375. package/dist/types/wallet/src/SeamsWeb/SeamsWeb.d.ts +2 -0
  376. package/dist/types/wallet/src/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.d.ts +11 -0
  377. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletAuth.d.ts +2 -1
  378. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +3 -17
  379. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/walletActivation.d.ts +3 -4
  380. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.d.ts +2 -10
  381. package/dist/types/wallet/src/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.d.ts +1 -1
  382. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +7 -16
  383. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.d.ts +2 -1
  384. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +1 -2
  385. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +5 -15
  386. package/dist/types/wallet/src/core/accountData/near/keyMaterial.d.ts +3 -5
  387. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +2 -8
  388. package/dist/types/wallet/src/core/indexedDB/pendingWalletRegistrationCommit.d.ts +3 -4
  389. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.d.ts +7 -12
  390. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +3 -6
  391. package/dist/types/wallet/src/core/platform/ecdsaRoleLocalRecords.d.ts +9 -38
  392. package/dist/types/wallet/src/core/platform/http.d.ts +3 -5
  393. package/dist/types/wallet/src/core/platform/ports.d.ts +3 -7
  394. package/dist/types/wallet/src/core/rpcClients/near/NearRpcError.d.ts +1 -2
  395. package/dist/types/wallet/src/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.d.ts +2 -11
  396. package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +2 -8
  397. package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryPrepare.d.ts +2 -14
  398. package/dist/types/wallet/src/core/signingEngine/chains/near/payloads.d.ts +2 -10
  399. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaDerivationExport.d.ts +3 -4
  400. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportFlow.d.ts +4 -8
  401. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +7 -6
  402. package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +1 -10
  403. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.d.ts +1 -1
  404. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.d.ts +3 -4
  405. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/nonceResolution.d.ts +3 -4
  406. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +5 -8
  407. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.d.ts +1 -0
  408. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +10 -5
  409. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +3 -10
  410. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.d.ts +3 -5
  411. package/dist/types/wallet/src/core/signingEngine/flows/signNear/signNep413.d.ts +3 -7
  412. package/dist/types/wallet/src/core/signingEngine/interfaces/near.d.ts +3 -4
  413. package/dist/types/wallet/src/core/signingEngine/interfaces/operationDeps.d.ts +3 -5
  414. package/dist/types/wallet/src/core/signingEngine/interfaces/operationStepUpPreparation.d.ts +3 -5
  415. package/dist/types/wallet/src/core/signingEngine/nonce/nearTransactionReadiness.d.ts +3 -5
  416. package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +2 -2
  417. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/clientCeremony.d.ts +5 -22
  418. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.d.ts +3 -14
  419. package/dist/types/wallet/src/core/signingEngine/session/availability/persistedAvailableSigningLanes.d.ts +1 -1
  420. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.d.ts +37 -14
  421. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaPublication.d.ts +3 -5
  422. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ed25519ExportContext.d.ts +2 -6
  423. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/walletUnlock.d.ts +6 -15
  424. package/dist/types/wallet/src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.d.ts +3 -5
  425. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionCredential.d.ts +3 -4
  426. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionReader.d.ts +3 -6
  427. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +5 -8
  428. package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +3 -5
  429. package/dist/types/wallet/src/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.d.ts +5 -10
  430. package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +3 -6
  431. package/dist/types/wallet/src/core/signingEngine/session/material/capabilityPreparationResult.d.ts +3 -22
  432. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaCapabilityHydration.d.ts +3 -4
  433. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +3 -4
  434. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +5 -0
  435. package/dist/types/wallet/src/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.d.ts +5 -10
  436. package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +3 -8
  437. package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +3 -5
  438. package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaBootstrap.d.ts +3 -4
  439. package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaSessionProvision.d.ts +3 -4
  440. package/dist/types/wallet/src/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.d.ts +7 -25
  441. package/dist/types/wallet/src/core/signingEngine/session/sealedRecovery/sealedRecovery.types.d.ts +3 -4
  442. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/capabilityReaderCore.d.ts +3 -16
  443. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.d.ts +6 -26
  444. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/persistencePorts.d.ts +3 -4
  445. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmTypes.d.ts +11 -36
  446. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.d.ts +5 -8
  447. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +3 -5
  448. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +3 -8
  449. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +7 -22
  450. package/dist/types/wallet/src/core/signingEngine/threshold/commitQueueShared.d.ts +10 -10
  451. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.d.ts +1 -1
  452. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/bootstrapSession.d.ts +3 -4
  453. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/signingQueue.d.ts +1 -7
  454. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/commitQueue.d.ts +1 -6
  455. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/walletSession.d.ts +6 -36
  456. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +3 -4
  457. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +5 -9
  458. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignLifecycle.d.ts +5 -16
  459. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +3 -0
  460. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +2 -11
  461. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -2
  462. package/dist/types/wallet/src/core/types/linkDevice.d.ts +3 -18
  463. package/dist/types/wallet/src/core/types/sdkPublicResults.d.ts +5 -18
  464. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +4 -21
  465. package/dist/types/wallet/src/core/types/seams.d.ts +17 -71
  466. package/dist/types/wallet/src/externalEvm/types.d.ts +5 -12
  467. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -4
  468. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -4
  469. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -4
  470. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -4
  471. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -4
  472. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -4
  473. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -4
  474. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -4
  475. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -4
  476. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -4
  477. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/lucideIcon.d.ts +5 -0
  478. package/dist/types/wallet/src/react/hooks/useAccountInput.d.ts +1 -22
  479. package/dist/types/wallet/src/react/transactionReview/controller.d.ts +3 -10
  480. package/dist/types/wallet/src/utils/menuItemBlink.d.ts +9 -0
  481. package/dist/workers/device-linking-key.worker.js +106 -105
  482. package/dist/workers/ecdsa-derivation-client.worker.js +15 -24
  483. package/dist/workers/ecdsa-presign-client.worker.js +58 -73
  484. package/dist/workers/email-otp.worker.js +13 -16
  485. package/dist/workers/evm_crypto.wasm +0 -0
  486. package/dist/workers/evm_crypto_bg.wasm +0 -0
  487. package/dist/workers/near_signer.wasm +0 -0
  488. package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  489. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  490. package/dist/workers/tempo_signer.wasm +0 -0
  491. package/dist/workers/tempo_signer_bg.wasm +0 -0
  492. package/dist/workers/wallet-custody-ceremony.worker.js +7 -7
  493. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  494. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  495. package/package.json +1 -1
  496. package/dist/esm/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
  497. package/dist/esm/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
  498. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
  499. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
  500. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
  501. package/dist/esm/react/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
  502. package/dist/esm/react/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
  503. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
  504. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
  505. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
  506. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/coordinatorRuntime.d.ts +0 -43
  507. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.d.ts +0 -5
  508. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.d.ts +0 -5
  509. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.d.ts +0 -5
@@ -1,20 +1,20 @@
1
1
  import { A as parseWalletRecoveryOperationId, D as parseWalletAuthorityId, M as parseWebAuthnRpId, O as parseWalletId, S as parseThresholdEd25519SessionId, T as parseWalletAuthMethodId, j as parseWebAuthnCredentialIdB64u, o as parseEmailOtpChallengeId, s as parseEmailOtpProviderUserId } from "./domainIds-lcrFg6Sa.js";
2
- import { M as base58Encode, _ as requireRecord } from "./validation-gat4LEKm.js";
2
+ import { M as base58Encode, _ as requireRecord, m as requireArray } from "./validation-gat4LEKm.js";
3
3
  import { i as base64UrlEncode, r as base64UrlDecode } from "./base64-Clm8C-e9.js";
4
- import { E as parseUnixMs, P as rejectUnknownFields, S as parseEnvelopeNonceB64u, T as parseSecp256k1CompressedPublicKeyB64u, b as parseEd25519PublicKeyB64u, h as normalizeRuntimePolicyScope, o as normalizeThresholdRuntimePolicyScope, v as requireEvmFamilySigningKeySlotId, w as parseKeyCreationSignerSlot, x as parseEnvelopeCiphertextB64u, y as parseDigestField } from "./sessionPolicy-CHiilOAB.js";
5
- import { Ct as routerAbMpcMaterialActivationRefFromWire, E as parseRouterAbEcdsaRegistrationActivationReceiptV1, W as buildEmailOtpWalletAuthAuthority, _t as parseSdkEcdsaDerivationSigningRootId, gt as ecdsaClientRootPublicKey33B64uFromString, ht as computeEcdsaDerivationRoleLocalRelayerKeyId, nt as walletAuthAuthorityRef, pt as parseEcdsaServerGeneration, v as parseRouterAbEcdsaDerivationPublicCapabilityV1, vt as parseSdkEcdsaDerivationSigningRootVersion, wt as routerAbMpcMaterialActivationRefToWire, xt as parseRouterAbMpcMaterialActivationRef, yt as parseSdkEcdsaDerivationThresholdKeyId } from "./ecdsaPresignLifecycle-BFOTNYCK.js";
4
+ import { C as parseEnvelopeNonceB64u, D as parseUnixMs, E as parseSecp256k1CompressedPublicKeyB64u, I as rejectUnknownFields, S as parseEnvelopeCiphertextB64u, T as parseKeyCreationSignerSlot, b as parseDigestField, h as normalizeRuntimePolicyScope, o as normalizeThresholdRuntimePolicyScope, x as parseEd25519PublicKeyB64u, y as requireEvmFamilySigningKeySlotId } from "./sessionPolicy-DO-MkL65.js";
5
+ import { $t as wireLiteral, Ct as parseRouterAbMpcMaterialActivationRef, E as parseRouterAbEcdsaRegistrationActivationReceiptV1, Et as routerAbMpcMaterialActivationRefToWire, K as buildEmailOtpWalletAuthAuthority, Tt as routerAbMpcMaterialActivationRefFromWire, _t as computeEcdsaDerivationRoleLocalRelayerKeyId, bt as parseSdkEcdsaDerivationSigningRootVersion, ht as parseEcdsaServerGeneration, it as walletAuthAuthorityRef, nn as wireResult, tn as wireObject, v as parseRouterAbEcdsaDerivationPublicCapabilityV1, vt as ecdsaClientRootPublicKey33B64uFromString, xt as parseSdkEcdsaDerivationThresholdKeyId, yt as parseSdkEcdsaDerivationSigningRootId } from "./ecdsaPresignLifecycle-Bfx2AQKb.js";
6
6
  import { l as parseDeviceId } from "./capabilityKinds-hvYqa6S_.js";
7
7
  import { f as alphabetizeStringify, h as sha256HexUtf8 } from "./chains-BMh3btVo.js";
8
- import { a as parseWalletRecoveryEnvelopeEntry, f as parseRecoveryCodeReservationId, l as buildWalletRecoveryCommittedProjectionV1, n as parseWalletRecoveryEcdsaPossessionProofV1, t as parseWalletRecoveryEcdsaPossessionChallengeV1, u as parseWalletRecoveryCommittedProjectionV1 } from "./wallet-recovery-Bz9qKgaL.js";
9
- import { M as WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND, h as prepareWalletRecoveryPasskeyPublication, m as prepareWalletRecoveryEmailOtpPublication } from "./accountLifecycle-BAGG_rbk.js";
8
+ import { a as parseWalletRecoveryEnvelopeEntry, f as parseRecoveryCodeReservationId, l as buildWalletRecoveryCommittedProjectionV1, n as parseWalletRecoveryEcdsaPossessionProofV1, t as parseWalletRecoveryEcdsaPossessionChallengeV1, u as parseWalletRecoveryCommittedProjectionV1 } from "./wallet-recovery-BX61-79p.js";
9
+ import { M as WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND, h as prepareWalletRecoveryPasskeyPublication, m as prepareWalletRecoveryEmailOtpPublication } from "./accountLifecycle-zthG08aC.js";
10
10
  import { t as toAccountId } from "./accountIds-DhIPGOSN.js";
11
- import { T as sameWalletAuthMethodRecordV2, p as sameVerifiedActiveWalletAuthorityV1 } from "./walletAuthority-BQBxgUBn.js";
12
- import { d as parsePasskeyCustodyEnvelopeRecord } from "./passkey-custody-Bk1jAknm.js";
13
- import { r as prepareWalletCustodyEcdsaContinuity, u as IndexedDBManager, x as pendingWalletRecoveryCommitIdentityMatches } from "./walletCustodyEcdsaContinuity-Hn4ORIbf.js";
11
+ import { T as sameWalletAuthMethodRecordV2, p as sameVerifiedActiveWalletAuthorityV1 } from "./walletAuthority-DD9T25F6.js";
12
+ import { d as parsePasskeyCustodyEnvelopeRecord } from "./passkey-custody-UUHbC0pk.js";
13
+ import { A as thresholdEcdsaChainTargetKey, r as prepareWalletCustodyEcdsaContinuity, u as IndexedDBManager, x as pendingWalletRecoveryCommitIdentityMatches } from "./walletCustodyEcdsaContinuity-CF4bv9OI.js";
14
14
  import { n as PASSKEY_PRF_SECOND_SALT_V1, t as PASSKEY_PRF_FIRST_SALT_V1 } from "./signingSessionSeal-Cu-GHm6y.js";
15
- import { n as parseEmailOtpChallengeDelivery } from "./challengeDelivery-Dd0586fo.js";
15
+ import { n as parseEmailOtpChallengeDelivery } from "./challengeDelivery-DZtopOAG.js";
16
16
  import { o as redactedPasskeyRegistrationCredential } from "./helpers-ZrowMnev.js";
17
- import { C as buildEcdsaRoleLocalPublicFacts } from "./ecdsaCapabilityManifest-kzO_fW09.js";
17
+ import { C as buildEcdsaRoleLocalPublicFacts } from "./ecdsaCapabilityManifest-DuMs0VtU.js";
18
18
  import { n as buildRelayerJsonPostRequestInit, r as normalizeRelayerBaseUrl } from "./relayerHttp-VC8Holz1.js";
19
19
  //#region ../shared-ts/src/wallet-recovery/walletRecoveryTarget.ts
20
20
  function parseWalletRecoveryTargetV1(raw) {
@@ -147,7 +147,7 @@ async function parseWalletRecoveryPrepareResponse(args) {
147
147
  const body = decodeJsonObjectOrNull(await response.json().catch(() => ({})));
148
148
  if (response.status === 200 && body && readJsonField(body, "ok") === true) try {
149
149
  const preparedResponse = decodeExactJsonObject(body, args.target.kind === "passkey" ? WALLET_RECOVERY_PREPARE_PASSKEY_RESPONSE_FIELDS : WALLET_RECOVERY_PREPARE_COMMON_RESPONSE_FIELDS, "walletRecoveryPrepare");
150
- const wrap = parsePreparedRecoveryWrap(readJsonField(preparedResponse, "wrap"));
150
+ const wrap = preparedRecoveryWrap()(readJsonField(preparedResponse, "wrap"), "walletRecoveryPrepare.wrap");
151
151
  const entries = parsePreparedRecoveryEntries(readJsonField(preparedResponse, "entries"));
152
152
  const walletIdResult = parseWalletId(readJsonField(preparedResponse, "walletId"));
153
153
  if (!walletIdResult.ok) throw new Error("walletRecoveryPrepare.walletId is invalid");
@@ -180,7 +180,7 @@ async function parseWalletRecoveryPrepareResponse(args) {
180
180
  };
181
181
  switch (target.kind) {
182
182
  case "passkey": {
183
- const registration = parseWalletRecoveryRegistrationOptions(readJsonField(preparedResponse, "registration"), String(walletId), target.rpId);
183
+ const registration = walletRecoveryRegistrationOptions(String(walletId), target.rpId)(readJsonField(preparedResponse, "registration"), "registration");
184
184
  if (registration.walletAuthMethodId !== targetWalletAuthMethodId.value) throw new Error("wallet recovery registration changed the target auth method");
185
185
  return {
186
186
  ...common,
@@ -204,115 +204,69 @@ async function parseWalletRecoveryPrepareResponse(args) {
204
204
  if (response.status === 401 || response.status === 400) return { kind: "refused" };
205
205
  return { kind: "transport_uncertain" };
206
206
  }
207
- function parseWalletRecoveryRegistrationOptions(raw, expectedWalletId, expectedRpId) {
208
- const registration = decodeExactJsonObject(raw, [
209
- "kind",
210
- "challengeId",
211
- "challengeB64u",
212
- "replacementId",
213
- "walletAuthMethodId",
214
- "rpId",
215
- "user",
216
- "pubKeyCredParams",
217
- "authenticatorSelection",
218
- "timeoutMs",
219
- "attestation",
220
- "extensions",
221
- "excludeCredentials"
222
- ], "walletRecoveryPrepare.registration");
223
- if (readJsonField(registration, "kind") !== "webauthn_recovery_registration_v1") throw new Error("walletRecoveryPrepare.registration kind is invalid");
224
- const challengeId = requireResponseString(readJsonField(registration, "challengeId"), "registration.challengeId");
225
- const challengeB64u = requireCanonicalBytesB64u(readJsonField(registration, "challengeB64u"), 32, "registration.challengeB64u");
226
- const replacementId = requireResponseString(readJsonField(registration, "replacementId"), "registration.replacementId");
227
- const walletAuthMethodId = parseWalletAuthMethodId(readJsonField(registration, "walletAuthMethodId"));
228
- if (!walletAuthMethodId.ok) throw new Error("walletRecoveryPrepare.registration.walletAuthMethodId is invalid");
229
- const rpIdResult = parseWebAuthnRpId(readJsonField(registration, "rpId"));
230
- if (!rpIdResult.ok) throw new Error("walletRecoveryPrepare.registration.rpId is invalid");
231
- if (rpIdResult.value !== expectedRpId) throw new Error("walletRecoveryPrepare.registration changed the relying party");
232
- const user = decodeExactJsonObject(readJsonField(registration, "user"), [
233
- "idB64u",
234
- "name",
235
- "displayName"
236
- ], "walletRecoveryPrepare.registration.user");
207
+ function walletRecoveryRegistrationOptions(expectedWalletId, expectedRpId) {
237
208
  const expectedUserIdB64u = base64UrlEncode(new TextEncoder().encode(expectedWalletId));
238
- const idB64u = requireCanonicalNonEmptyB64u(readJsonField(user, "idB64u"), "registration.user.idB64u");
239
- if (idB64u !== expectedUserIdB64u) throw new Error("walletRecoveryPrepare.registration user is bound to another wallet");
240
- const name = requireResponseString(readJsonField(user, "name"), "registration.user.name");
241
- const displayName = requireResponseString(readJsonField(user, "displayName"), "registration.user.displayName");
242
- if (name !== expectedWalletId || displayName !== expectedWalletId) throw new Error("walletRecoveryPrepare.registration user labels changed the wallet identity");
243
- const pubKeyCredParams = parseRecoveryPublicKeyParameters(readJsonField(registration, "pubKeyCredParams"));
244
- const authenticatorSelection = parseRecoveryAuthenticatorSelection(readJsonField(registration, "authenticatorSelection"));
245
- const timeoutMs = Number(readJsonField(registration, "timeoutMs"));
246
- if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) throw new Error("walletRecoveryPrepare.registration.timeoutMs is invalid");
247
- if (readJsonField(registration, "attestation") !== "none") throw new Error("walletRecoveryPrepare.registration.attestation is invalid");
248
- const extensions = parseRecoveryPrfExtensions(readJsonField(registration, "extensions"));
249
- const excludeCredentials = parseRecoveryExcludeCredentials(readJsonField(registration, "excludeCredentials"));
250
- return {
251
- kind: "webauthn_recovery_registration_v1",
252
- challengeId,
253
- challengeB64u,
254
- replacementId,
255
- walletAuthMethodId: walletAuthMethodId.value,
256
- rpId: rpIdResult.value,
257
- user: {
258
- idB64u,
259
- name,
260
- displayName
209
+ const credentialDescriptor = wireObject({
210
+ type: wireLiteral("public-key"),
211
+ id: (raw, label) => {
212
+ const id = wireResult(parseWebAuthnCredentialIdB64u)(raw, label);
213
+ requireCanonicalNonEmptyB64u(id, label);
214
+ return id;
215
+ }
216
+ });
217
+ return wireObject({
218
+ kind: wireLiteral("webauthn_recovery_registration_v1"),
219
+ challengeId: requireResponseString,
220
+ challengeB64u: (raw, label) => requireCanonicalBytesB64u(raw, 32, label),
221
+ replacementId: requireResponseString,
222
+ walletAuthMethodId: wireResult(parseWalletAuthMethodId),
223
+ rpId: wireResult(parseWebAuthnRpId),
224
+ user: wireObject({
225
+ idB64u: requireCanonicalNonEmptyB64u,
226
+ name: requireResponseString,
227
+ displayName: requireResponseString
228
+ }, (user, label) => {
229
+ if (user.idB64u !== expectedUserIdB64u || user.name !== expectedWalletId || user.displayName !== expectedWalletId) throw new Error(`${label} is bound to another wallet`);
230
+ }),
231
+ pubKeyCredParams: (raw, label) => {
232
+ if (!Array.isArray(raw) || raw.length !== 2) throw new Error(`${label} is invalid`);
233
+ return [publicKeyCredentialParameter(-7)(raw[0], `${label}[0]`), publicKeyCredentialParameter(-257)(raw[1], `${label}[1]`)];
261
234
  },
262
- pubKeyCredParams,
263
- authenticatorSelection,
264
- timeoutMs,
265
- attestation: "none",
266
- extensions,
267
- excludeCredentials
268
- };
269
- }
270
- function parseRecoveryPrfExtensions(raw) {
271
- const evaluation = decodeExactJsonObject(readJsonField(decodeExactJsonObject(readJsonField(decodeExactJsonObject(raw, ["prf"], "walletRecoveryPrepare.registration.extensions"), "prf"), ["eval"], "walletRecoveryPrepare.registration.extensions.prf"), "eval"), ["firstB64u", "secondB64u"], "walletRecoveryPrepare.registration.extensions.prf.eval");
272
- const firstB64u = requireCanonicalBytesB64u(readJsonField(evaluation, "firstB64u"), PASSKEY_PRF_FIRST_SALT_V1.length, "registration.extensions.prf.eval.firstB64u");
273
- const secondB64u = requireCanonicalBytesB64u(readJsonField(evaluation, "secondB64u"), PASSKEY_PRF_SECOND_SALT_V1.length, "registration.extensions.prf.eval.secondB64u");
274
- if (firstB64u !== base64UrlEncode(PASSKEY_PRF_FIRST_SALT_V1) || secondB64u !== base64UrlEncode(PASSKEY_PRF_SECOND_SALT_V1)) throw new Error("walletRecoveryPrepare.registration PRF salts are unsupported");
275
- return { prf: { eval: {
276
- firstB64u,
277
- secondB64u
278
- } } };
279
- }
280
- function parseRecoveryPublicKeyParameters(raw) {
281
- if (!Array.isArray(raw) || raw.length !== 2) throw new Error("walletRecoveryPrepare.registration.pubKeyCredParams is invalid");
282
- const first = decodeExactJsonObject(raw[0], ["type", "alg"], "walletRecoveryPrepare.registration.pubKeyCredParams[0]");
283
- const second = decodeExactJsonObject(raw[1], ["type", "alg"], "walletRecoveryPrepare.registration.pubKeyCredParams[1]");
284
- if (readJsonField(first, "type") !== "public-key" || readJsonField(first, "alg") !== -7) throw new Error("walletRecoveryPrepare.registration.pubKeyCredParams[0] is invalid");
285
- if (readJsonField(second, "type") !== "public-key" || readJsonField(second, "alg") !== -257) throw new Error("walletRecoveryPrepare.registration.pubKeyCredParams[1] is invalid");
286
- return [{
287
- type: "public-key",
288
- alg: -7
289
- }, {
290
- type: "public-key",
291
- alg: -257
292
- }];
293
- }
294
- function parseRecoveryAuthenticatorSelection(raw) {
295
- const selection = decodeExactJsonObject(raw, ["residentKey", "userVerification"], "walletRecoveryPrepare.registration.authenticatorSelection");
296
- if (readJsonField(selection, "residentKey") !== "required" || readJsonField(selection, "userVerification") !== "preferred") throw new Error("walletRecoveryPrepare.registration.authenticatorSelection is invalid");
297
- return {
298
- residentKey: "required",
299
- userVerification: "preferred"
300
- };
235
+ authenticatorSelection: wireObject({
236
+ residentKey: wireLiteral("required"),
237
+ userVerification: wireLiteral("preferred")
238
+ }),
239
+ timeoutMs: (raw, label) => {
240
+ const timeoutMs = Number(raw);
241
+ if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) throw new Error(`${label} is invalid`);
242
+ return timeoutMs;
243
+ },
244
+ attestation: wireLiteral("none"),
245
+ extensions: wireObject({ prf: wireObject({ eval: wireObject({
246
+ firstB64u: prfSalt(PASSKEY_PRF_FIRST_SALT_V1),
247
+ secondB64u: prfSalt(PASSKEY_PRF_SECOND_SALT_V1)
248
+ }) }) }),
249
+ excludeCredentials: (raw, label) => requireArray(raw, label).map((entry, index) => credentialDescriptor(entry, `${label}[${index}]`))
250
+ }, (registration, label) => {
251
+ if (registration.rpId !== expectedRpId) throw new Error(`${label} changed the relying party`);
252
+ });
301
253
  }
302
- function parseRecoveryExcludeCredentials(raw) {
303
- if (!Array.isArray(raw)) throw new Error("walletRecoveryPrepare.registration.excludeCredentials is invalid");
304
- return raw.map((entry, index) => {
305
- const descriptor = decodeExactJsonObject(entry, ["type", "id"], `walletRecoveryPrepare.registration.excludeCredentials[${index}]`);
306
- if (readJsonField(descriptor, "type") !== "public-key") throw new Error("walletRecoveryPrepare.registration.excludeCredentials type is invalid");
307
- const parsedId = parseWebAuthnCredentialIdB64u(readJsonField(descriptor, "id"));
308
- if (!parsedId.ok) throw new Error("walletRecoveryPrepare.registration.excludeCredentials id is invalid");
309
- requireCanonicalNonEmptyB64u(parsedId.value, "registration.excludeCredentials.id");
310
- return {
311
- type: "public-key",
312
- id: parsedId.value
313
- };
254
+ function publicKeyCredentialParameter(alg) {
255
+ return wireObject({
256
+ type: wireLiteral("public-key"),
257
+ alg: (raw, label) => {
258
+ if (raw !== alg) throw new Error(`${label} is invalid`);
259
+ return alg;
260
+ }
314
261
  });
315
262
  }
263
+ function prfSalt(salt) {
264
+ return (raw, label) => {
265
+ const value = requireCanonicalBytesB64u(raw, salt.length, label);
266
+ if (value !== base64UrlEncode(salt)) throw new Error(`${label} is unsupported`);
267
+ return value;
268
+ };
269
+ }
316
270
  function recoveryTargetsMatch(left, right) {
317
271
  if (left.kind !== right.kind) return false;
318
272
  switch (left.kind) {
@@ -324,18 +278,12 @@ function recoveryTargetsMatch(left, right) {
324
278
  function assertNeverRecoveryTarget(value) {
325
279
  throw new Error(`unsupported wallet recovery target: ${String(value)}`);
326
280
  }
327
- const PREPARED_WRAP_FIELDS = [
328
- "nonceB64u",
329
- "wrappedManifestKekB64u",
330
- "aadHashB64u"
331
- ];
332
- function parsePreparedRecoveryWrap(raw) {
333
- const wrap = decodeExactJsonObject(raw, PREPARED_WRAP_FIELDS, "walletRecoveryPrepare.wrap");
334
- return {
335
- nonceB64u: parseEnvelopeNonceB64u(readJsonField(wrap, "nonceB64u"), "walletRecoveryPrepare.wrap.nonceB64u"),
336
- wrappedManifestKekB64u: parseEnvelopeCiphertextB64u(readJsonField(wrap, "wrappedManifestKekB64u"), "walletRecoveryPrepare.wrap.wrappedManifestKekB64u"),
337
- aadHashB64u: parseDigestField(readJsonField(wrap, "aadHashB64u"), "walletRecoveryPrepare.wrap.aadHashB64u")
338
- };
281
+ function preparedRecoveryWrap() {
282
+ return wireObject({
283
+ nonceB64u: parseEnvelopeNonceB64u,
284
+ wrappedManifestKekB64u: parseEnvelopeCiphertextB64u,
285
+ aadHashB64u: parseDigestField
286
+ });
339
287
  }
340
288
  function parsePreparedRecoveryEntries(raw) {
341
289
  if (!Array.isArray(raw) || raw.length !== 1) throw new Error("walletRecoveryPrepare.entries must contain exactly one custody seed");
@@ -497,7 +445,7 @@ function parseWalletRecoveryPreparationEcdsaRecoveryBasis(raw, expectedWalletId)
497
445
  function parseWalletRecoveryEcdsaChainTargets(raw) {
498
446
  if (!Array.isArray(raw) || raw.length === 0) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are invalid");
499
447
  const targets = raw.map((value, index) => parseWalletRecoveryEcdsaChainTarget(value, index));
500
- if (new Set(targets.map(walletRecoveryEcdsaChainTargetKey)).size !== targets.length) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are duplicated");
448
+ if (new Set(targets.map(thresholdEcdsaChainTargetKey)).size !== targets.length) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are duplicated");
501
449
  const first = targets[0];
502
450
  if (!first) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are invalid");
503
451
  return [first, ...targets.slice(1)];
@@ -537,9 +485,6 @@ function parseWalletRecoveryEcdsaChainTarget(raw, index) {
537
485
  };
538
486
  throw new Error("walletRecoveryPrepare ECDSA recovery chain family is invalid");
539
487
  }
540
- function walletRecoveryEcdsaChainTargetKey(target) {
541
- return target.kind === "evm" ? `evm:eip155:${target.chainId}` : `tempo:${target.chainId}`;
542
- }
543
488
  function parseWalletRecoveryEcdsaParticipantIds(raw) {
544
489
  if (!Array.isArray(raw) || raw.length !== 2 || raw[0] !== 1 || raw[1] !== 2) throw new Error("walletRecoveryPrepare ECDSA recovery participant IDs are invalid");
545
490
  return [1, 2];
@@ -843,9 +788,6 @@ function durableBase64Url(value, label, byteLength) {
843
788
  if (byteLength !== void 0 && bytes.byteLength !== byteLength) throw new Error(label + " must decode to " + byteLength + " bytes");
844
789
  return normalized;
845
790
  }
846
- function durableCompressedPublicKey(value, label) {
847
- return parseSecp256k1CompressedPublicKeyB64u(value, label);
848
- }
849
791
  function durableSafeInteger(value, label) {
850
792
  if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0) throw new Error(label + " must be a non-negative safe integer");
851
793
  return value;
@@ -916,10 +858,10 @@ function parseWalletRecoveryDurableEcdsaPublicFacts(raw) {
916
858
  if (!/^0x[0-9a-f]{40}$/.test(ethereumAddress)) throw new Error("recovery durable ECDSA ethereumAddress is invalid");
917
859
  return {
918
860
  contextBinding32B64u: parseDigestField(record.contextBinding32B64u, "recovery durable ECDSA context binding"),
919
- derivationClientSharePublicKey33B64u: durableCompressedPublicKey(record.derivationClientSharePublicKey33B64u, "recovery durable ECDSA client share"),
920
- clientVerifyingShare33B64u: durableCompressedPublicKey(record.clientVerifyingShare33B64u, "recovery durable ECDSA client verifying share"),
921
- relayerPublicKey33B64u: durableCompressedPublicKey(record.relayerPublicKey33B64u, "recovery durable ECDSA relayer public key"),
922
- groupPublicKey33B64u: durableCompressedPublicKey(record.groupPublicKey33B64u, "recovery durable ECDSA group public key"),
861
+ derivationClientSharePublicKey33B64u: parseSecp256k1CompressedPublicKeyB64u(record.derivationClientSharePublicKey33B64u, "recovery durable ECDSA client share"),
862
+ clientVerifyingShare33B64u: parseSecp256k1CompressedPublicKeyB64u(record.clientVerifyingShare33B64u, "recovery durable ECDSA client verifying share"),
863
+ relayerPublicKey33B64u: parseSecp256k1CompressedPublicKeyB64u(record.relayerPublicKey33B64u, "recovery durable ECDSA relayer public key"),
864
+ groupPublicKey33B64u: parseSecp256k1CompressedPublicKeyB64u(record.groupPublicKey33B64u, "recovery durable ECDSA group public key"),
923
865
  ethereumAddress,
924
866
  clientShareRetryCounter: durableSafeInteger(record.clientShareRetryCounter, "recovery durable ECDSA client-share retry counter"),
925
867
  relayerShareRetryCounter: durableSafeInteger(record.relayerShareRetryCounter, "recovery durable ECDSA relayer-share retry counter")
@@ -1,6 +1,7 @@
1
1
  import { parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId } from "../utils/domainIds.js";
2
2
  import { parseMpcWalletSigningQuotaId, parseWalletSessionAuthorizationId, parseWalletSessionId, parseWalletSessionMintId } from "./capabilityKinds.js";
3
3
  import { isPlainObject } from "../utils/validation.js";
4
+ import { hasExactKeys } from "../utils/exactKeys.js";
4
5
  //#region ../shared-ts/src/authorization/walletSessionIssuance.ts
5
6
  const COMMITTED_IDENTITY_FIELDS = [
6
7
  "kind",
@@ -38,12 +39,8 @@ const UNLOCK_FLAT_RESPONSE_FIELDS = [
38
39
  "unlocked",
39
40
  "unlockBackend"
40
41
  ];
41
- function hasOnlyFields(record, fields) {
42
- const actual = Object.keys(record);
43
- return actual.length === new Set(fields).size && actual.every((field) => fields.includes(field));
44
- }
45
42
  function parseCommittedIdentity(value) {
46
- if (!isPlainObject(value) || !hasOnlyFields(value, COMMITTED_IDENTITY_FIELDS)) return null;
43
+ if (!isPlainObject(value) || !hasExactKeys(value, COMMITTED_IDENTITY_FIELDS)) return null;
47
44
  if (value.kind !== "already_committed_wallet_session_v1") return null;
48
45
  const walletId = parseWalletId(value.walletId);
49
46
  const authorityId = parseWalletAuthorityId(value.authorityId);
@@ -74,8 +71,8 @@ function parseResponseEnvelope(value) {
74
71
  };
75
72
  }
76
73
  function parseFlatCommittedIdentity(value) {
77
- if (!hasOnlyFields(value, FLAT_RESPONSE_FIELDS) && !hasOnlyFields(value, UNLOCK_FLAT_RESPONSE_FIELDS)) return null;
78
- if (hasOnlyFields(value, UNLOCK_FLAT_RESPONSE_FIELDS) && (value.unlocked !== false || value.unlockBackend !== "passkey" && value.unlockBackend !== "email_otp")) return null;
74
+ if (!hasExactKeys(value, FLAT_RESPONSE_FIELDS) && !hasExactKeys(value, UNLOCK_FLAT_RESPONSE_FIELDS)) return null;
75
+ if (hasExactKeys(value, UNLOCK_FLAT_RESPONSE_FIELDS) && (value.unlocked !== false || value.unlockBackend !== "passkey" && value.unlockBackend !== "email_otp")) return null;
79
76
  if (value.kind !== "already_committed") return null;
80
77
  return parseCommittedIdentity({
81
78
  kind: "already_committed_wallet_session_v1",
@@ -101,7 +98,7 @@ function parseWalletSessionAlreadyCommittedResponseV1(value) {
101
98
  if (!isPlainObject(value)) return null;
102
99
  const envelope = parseResponseEnvelope(value);
103
100
  if (!envelope) return null;
104
- if (!hasOnlyFields(value, NESTED_RESPONSE_FIELDS)) return null;
101
+ if (!hasExactKeys(value, NESTED_RESPONSE_FIELDS)) return null;
105
102
  const committed = parseCommittedIdentity(value.committed);
106
103
  return committed ? buildAlreadyCommittedResponse(envelope, committed) : null;
107
104
  }
@@ -0,0 +1,12 @@
1
+ import { mpcMaterialActivationRefsEqual } from "../utils/domainIds.js";
2
+ //#region ../shared-ts/src/authorization/walletSignerActivationEquality.ts
3
+ function sameWalletEd25519SignerActivationV1(left, right) {
4
+ return left.kind === right.kind && left.signer.kind === right.signer.kind && left.signer.keyFamily === right.signer.keyFamily && left.signer.walletId === right.signer.walletId && left.signer.walletKeyId === right.signer.walletKeyId && left.signer.registeredPublicKeyB64u === right.signer.registeredPublicKeyB64u && mpcMaterialActivationRefsEqual(left.materialActivation, right.materialActivation);
5
+ }
6
+ function sameWalletEcdsaSignerActivationV1(left, right) {
7
+ return left.kind === right.kind && left.signer.kind === right.signer.kind && left.signer.keyFamily === right.signer.keyFamily && left.signer.walletId === right.signer.walletId && left.signer.walletKeyId === right.signer.walletKeyId && left.signer.thresholdPublicKey33B64u === right.signer.thresholdPublicKey33B64u && left.signer.evmAddress === right.signer.evmAddress && mpcMaterialActivationRefsEqual(left.materialActivation, right.materialActivation);
8
+ }
9
+ //#endregion
10
+ export { sameWalletEcdsaSignerActivationV1, sameWalletEd25519SignerActivationV1 };
11
+
12
+ //# sourceMappingURL=walletSignerActivationEquality.js.map
@@ -1,7 +1,7 @@
1
1
  import { mpcMaterialActivationRefsEqual, parseMpcMaterialActivationRef } from "../utils/domainIds.js";
2
2
  import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
3
3
  import { routerAbMpcMaterialActivationRefFromWire } from "../utils/routerAbNormalSigningIdentity.js";
4
- import { parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoCeremonyBindingV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoParticipantIdsV1 } from "../utils/routerAbEd25519Yao.js";
4
+ import { parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoCeremonyBindingV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoParticipantIdsV1, sameRouterAbEd25519YaoByteSequence } from "../utils/routerAbEd25519Yao.js";
5
5
  import { parseLinkedDeviceEd25519ExportRootPackageV1 } from "./ed25519ExportRoot.js";
6
6
  import { parseLinkedDeviceEcdsaEncryptedSourceContributionV1, parseLinkedDeviceEcdsaSourcePreservingActivationReceiptV1 } from "./sourceContribution.js";
7
7
  import { parseWalletAuthMethodRecordV2 } from "../utils/walletAuthMethodRecord.js";
@@ -91,7 +91,7 @@ function parseEd25519Package(raw) {
91
91
  if (!mpcMaterialActivationRefsEqual(materialActivation, routerAbMpcMaterialActivationRefFromWire(targetBinding.material_activation))) throw new Error("CommittedEd25519SignerPackageV1 target binding does not match material");
92
92
  const deriverA = parseEd25519ClientPackage(record.deriver_a_client_package, "deriver_a_client_package", "deriver_a");
93
93
  const deriverB = parseEd25519ClientPackage(record.deriver_b_client_package, "deriver_b_client_package", "deriver_b");
94
- if (!sameBytes(activationReceipt.transcript, deriverA.transcript) || !sameBytes(activationReceipt.transcript, deriverB.transcript)) throw new Error("CommittedEd25519SignerPackageV1 receipt transcript does not match packages");
94
+ if (!sameRouterAbEd25519YaoByteSequence(activationReceipt.transcript, deriverA.transcript) || !sameRouterAbEd25519YaoByteSequence(activationReceipt.transcript, deriverB.transcript)) throw new Error("CommittedEd25519SignerPackageV1 receipt transcript does not match packages");
95
95
  return {
96
96
  kind: "committed_ed25519_signer_package_v1",
97
97
  materialActivation,
@@ -257,9 +257,6 @@ function parseCommittedEcdsaSignerPackageWireV1(raw) {
257
257
  function inspectRawObject(raw) {
258
258
  return raw !== null && typeof raw === "object" && !Array.isArray(raw) ? raw : null;
259
259
  }
260
- function sameBytes(left, right) {
261
- return left.length === right.length && left.every((value, index) => value === right[index]);
262
- }
263
260
  function requireExactWireFields(record, keys, label) {
264
261
  const expected = new Set(keys);
265
262
  const actual = Object.keys(record);
@@ -1,7 +1,7 @@
1
1
  import { parseWalletId, parseWalletKeyId } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
3
  import { rejectUnknownFields } from "../utils/exactRecord.js";
4
- import { parseEd25519PublicKeyB64u, parseSecp256k1CompressedPublicKeyB64u } from "../passkey-custody/primitives.js";
4
+ import { parseEd25519PublicKeyB64u, parseSecp256k1CompressedPublicKeyB64u, requireParsed } from "../passkey-custody/primitives.js";
5
5
  //#region ../shared-ts/src/device-linking/delegatedActivationPlan.ts
6
6
  const MANIFEST_FIELDS = [
7
7
  "kind",
@@ -124,10 +124,6 @@ function exactRecord(raw, fields, label) {
124
124
  for (const field of fields) if (!(field in record)) throw new Error(`${label}.${field} is required`);
125
125
  return record;
126
126
  }
127
- function requireParsed(parsed, label) {
128
- if (!parsed.ok) throw new Error(`${label} ${parsed.error.message}`);
129
- return parsed.value;
130
- }
131
127
  //#endregion
132
128
  export { buildExactAdministeredSignerManifestV1, parseExactAdministeredSignerManifestV1 };
133
129
 
@@ -2,7 +2,7 @@ import { parseLinkDeviceSessionId, parseLinkedDeviceEnrollmentId, parseLinkedDev
2
2
  import { requireRecord } from "../utils/validation.js";
3
3
  import { rejectUnknownFields } from "../utils/exactRecord.js";
4
4
  import { base64UrlDecode, base64UrlEncode } from "../utils/base64.js";
5
- import { parseDigestField, parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u } from "../passkey-custody/primitives.js";
5
+ import { parseDigestField, parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, requireParsed } from "../passkey-custody/primitives.js";
6
6
  //#region ../shared-ts/src/device-linking/ed25519ExportRoot.ts
7
7
  /**
8
8
  * Authenticated relay records for the cross-device Ed25519 Yao Client export
@@ -95,11 +95,11 @@ function parseLinkedDeviceEd25519ExportRootRecipientV1(raw) {
95
95
  requireTransferAlg(record.transferAlg, "LinkedDeviceEd25519ExportRootRecipientV1.transferAlg");
96
96
  return {
97
97
  kind: "linked_device_ed25519_export_root_recipient_v1",
98
- linkSessionId: parseRequired(parseLinkDeviceSessionId(record.linkSessionId), "LinkedDeviceEd25519ExportRootRecipientV1.linkSessionId"),
99
- walletId: parseRequired(parseWalletId(record.walletId), "walletId"),
100
- walletKeyId: parseRequired(parseWalletKeyId(record.walletKeyId), "walletKeyId"),
101
- enrollmentId: parseRequired(parseLinkedDeviceEnrollmentId(record.enrollmentId), "enrollmentId"),
102
- deviceId: parseRequired(parseLinkedDeviceId(record.deviceId), "deviceId"),
98
+ linkSessionId: requireParsed(parseLinkDeviceSessionId(record.linkSessionId), "LinkedDeviceEd25519ExportRootRecipientV1.linkSessionId"),
99
+ walletId: requireParsed(parseWalletId(record.walletId), "walletId"),
100
+ walletKeyId: requireParsed(parseWalletKeyId(record.walletKeyId), "walletKeyId"),
101
+ enrollmentId: requireParsed(parseLinkedDeviceEnrollmentId(record.enrollmentId), "enrollmentId"),
102
+ deviceId: requireParsed(parseLinkedDeviceId(record.deviceId), "deviceId"),
103
103
  transferAlg: LINKED_DEVICE_ED25519_EXPORT_ROOT_TRANSFER_ALG_V1,
104
104
  applicationBindingDigestB64u: parseDigestField(record.applicationBindingDigestB64u, "applicationBindingDigestB64u"),
105
105
  registeredPublicKeyB64u: parseEd25519PublicKeyB64u(record.registeredPublicKeyB64u, "registeredPublicKeyB64u"),
@@ -118,11 +118,11 @@ function parseLinkedDeviceEd25519ExportRootPackageV1(raw) {
118
118
  if (recipientPublicKeyB64u === ephemeralPublicKeyB64u) throw new Error("ephemeralPublicKeyB64u repeats the recipient key");
119
119
  return {
120
120
  kind: "linked_device_ed25519_export_root_package_v1",
121
- linkSessionId: parseRequired(parseLinkDeviceSessionId(record.linkSessionId), "linkSessionId"),
122
- walletId: parseRequired(parseWalletId(record.walletId), "walletId"),
123
- walletKeyId: parseRequired(parseWalletKeyId(record.walletKeyId), "walletKeyId"),
124
- enrollmentId: parseRequired(parseLinkedDeviceEnrollmentId(record.enrollmentId), "enrollmentId"),
125
- deviceId: parseRequired(parseLinkedDeviceId(record.deviceId), "deviceId"),
121
+ linkSessionId: requireParsed(parseLinkDeviceSessionId(record.linkSessionId), "linkSessionId"),
122
+ walletId: requireParsed(parseWalletId(record.walletId), "walletId"),
123
+ walletKeyId: requireParsed(parseWalletKeyId(record.walletKeyId), "walletKeyId"),
124
+ enrollmentId: requireParsed(parseLinkedDeviceEnrollmentId(record.enrollmentId), "enrollmentId"),
125
+ deviceId: requireParsed(parseLinkedDeviceId(record.deviceId), "deviceId"),
126
126
  transferAlg: LINKED_DEVICE_ED25519_EXPORT_ROOT_TRANSFER_ALG_V1,
127
127
  applicationBindingDigestB64u: parseDigestField(record.applicationBindingDigestB64u, "applicationBindingDigestB64u"),
128
128
  registeredPublicKeyB64u: parseEd25519PublicKeyB64u(record.registeredPublicKeyB64u, "registeredPublicKeyB64u"),
@@ -161,10 +161,6 @@ function parseUnixMs(value, label) {
161
161
  if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0) throw new Error(`${label} must be a positive unix-millisecond timestamp`);
162
162
  return value;
163
163
  }
164
- function parseRequired(parsed, label) {
165
- if (!parsed.ok) throw new Error(`${label} ${parsed.error.message}`);
166
- return parsed.value;
167
- }
168
164
  //#endregion
169
165
  export { LINKED_DEVICE_ED25519_EXPORT_ROOT_TRANSFER_ALG_V1, buildLinkedDeviceEd25519ExportRootTransferBindingV1, parseLinkedDeviceEd25519ExportRootPackageV1, parseLinkedDeviceEd25519ExportRootRecipientPublicKeyB64u, parseLinkedDeviceEd25519ExportRootRecipientV1, serializeLinkedDeviceEd25519ExportRootTransferBindingV1 };
170
166
 
@@ -6,7 +6,7 @@ import { parseDigestB64u } from "../utils/canonicalPrimitives.js";
6
6
  import { parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseSecp256k1CompressedPublicKeyB64u } from "../passkey-custody/primitives.js";
7
7
  import { parseSdkEcdsaDerivationThresholdKeyId } from "../threshold/ecdsaDerivationRoleLocalBootstrap.js";
8
8
  import { routerAbMpcMaterialActivationRefFromWire } from "../utils/routerAbNormalSigningIdentity.js";
9
- import { parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoCeremonyBindingV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoParticipantIdsV1, parseRouterAbEd25519YaoRegistrationActivationAdmissionReceiptV1 } from "../utils/routerAbEd25519Yao.js";
9
+ import { parseRouterAbEd25519YaoActivationPublicReceiptV1, parseRouterAbEd25519YaoApplicationBindingFactsV1, parseRouterAbEd25519YaoCeremonyBindingV1, parseRouterAbEd25519YaoEncryptedPackageV1, parseRouterAbEd25519YaoParticipantIdsV1, parseRouterAbEd25519YaoRegistrationActivationAdmissionReceiptV1, sameRouterAbEd25519YaoByteSequence } from "../utils/routerAbEd25519Yao.js";
10
10
  import { requireRouterAbEcdsaDerivationNormalSigningStateV1 } from "../utils/routerAbEcdsaDerivation.js";
11
11
  //#region ../shared-ts/src/device-linking/sourceContribution.ts
12
12
  /** Exact discriminator accepted by the ECDSA source-contribution core. */
@@ -33,7 +33,7 @@ function parseLinkedDeviceEd25519SourcePreservingReservationV1(raw) {
33
33
  const participantIds = parseRouterAbEd25519YaoParticipantIdsV1(record.participant_ids);
34
34
  const deriverA = parseEd25519ClientPackage(record.deriver_a_client_package, "deriver_a");
35
35
  const deriverB = parseEd25519ClientPackage(record.deriver_b_client_package, "deriver_b");
36
- if (!sameBytes(activationReceipt.transcript, deriverA.transcript) || !sameBytes(activationReceipt.transcript, deriverB.transcript)) throw new Error("linked-device Ed25519 reservation packages have mismatched transcripts");
36
+ if (!sameRouterAbEd25519YaoByteSequence(activationReceipt.transcript, deriverA.transcript) || !sameRouterAbEd25519YaoByteSequence(activationReceipt.transcript, deriverB.transcript)) throw new Error("linked-device Ed25519 reservation packages have mismatched transcripts");
37
37
  return {
38
38
  state: "inactive",
39
39
  reservationId: requireText(record.reservation_id, "reservation_id"),
@@ -192,10 +192,10 @@ function parseEd25519Contribution(record) {
192
192
  if (!sameEdStableIdentity(sourceBinding, targetBinding)) throw new Error("linked-device Ed25519 source contribution stable identity differs");
193
193
  if (!mpcMaterialActivationRefsEqual(routerAbMpcMaterialActivationRefFromWire(activationReceipt.material_activation), targetMaterialActivation)) throw new Error("linked-device Ed25519 source contribution receipt activation differs");
194
194
  const sourceRegisteredPublicKeyB64u = parseEd25519PublicKeyB64u(record.sourceRegisteredPublicKeyB64u, "sourceRegisteredPublicKeyB64u");
195
- if (!sameBytes(activationReceipt.registered_public_key, Array.from(base64UrlDecode(sourceRegisteredPublicKeyB64u)))) throw new Error("linked-device Ed25519 source contribution receipt public key differs");
195
+ if (!sameRouterAbEd25519YaoByteSequence(activationReceipt.registered_public_key, Array.from(base64UrlDecode(sourceRegisteredPublicKeyB64u)))) throw new Error("linked-device Ed25519 source contribution receipt public key differs");
196
196
  const deriverA = parseEd25519ClientPackage(record.deriver_a_client_package, "deriver_a");
197
197
  const deriverB = parseEd25519ClientPackage(record.deriver_b_client_package, "deriver_b");
198
- if (!sameBytes(activationReceipt.transcript, deriverA.transcript) || !sameBytes(activationReceipt.transcript, deriverB.transcript)) throw new Error("linked-device Ed25519 source contribution package transcript differs");
198
+ if (!sameRouterAbEd25519YaoByteSequence(activationReceipt.transcript, deriverA.transcript) || !sameRouterAbEd25519YaoByteSequence(activationReceipt.transcript, deriverB.transcript)) throw new Error("linked-device Ed25519 source contribution package transcript differs");
199
199
  if (sourceBinding.material_activation.activation_id === targetMaterialActivation.activationId) throw new Error("linked-device Ed25519 source contribution reuses the source activation");
200
200
  return {
201
201
  kind: "linked_device_ed25519_source_contribution_v1",
@@ -522,9 +522,6 @@ function parseFixedBase64(raw, byteLength, label) {
522
522
  if (decoded.length !== byteLength || base64UrlEncode(decoded) !== raw) throw new Error(`${label} must decode to ${byteLength} bytes`);
523
523
  return raw;
524
524
  }
525
- function sameBytes(left, right) {
526
- return left.length === right.length && left.every((value, index) => value === right[index]);
527
- }
528
525
  function requireText(raw, label) {
529
526
  if (typeof raw !== "string" || raw.length === 0 || raw.trim() !== raw || [...raw].some((character) => {
530
527
  const code = character.charCodeAt(0);
@@ -540,6 +537,6 @@ function exactRecord(raw, keys, label) {
540
537
  return record;
541
538
  }
542
539
  //#endregion
543
- export { parseLinkedDeviceEcdsaEncryptedSourceContributionV1, parseLinkedDeviceEcdsaSourceContributionBindingV1, parseLinkedDeviceEcdsaSourceContributionPackageV1, parseLinkedDeviceEcdsaSourceContributionPreparationV1, parseLinkedDeviceEcdsaSourceDerivationV1, parseLinkedDeviceEcdsaSourcePreservingActivationReceiptV1, parseLinkedDeviceEd25519SourcePreservingReservationV1, parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationTupleV1, parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationV1, parseLinkedDeviceOrdinaryMaterialSourceContributionTupleV1, parseLinkedDeviceOrdinaryMaterialSourceContributionV1 };
540
+ export { parseLinkedDeviceEcdsaEncryptedSourceContributionV1, parseLinkedDeviceEcdsaSourceContributionBindingV1, parseLinkedDeviceEcdsaSourceContributionPackageV1, parseLinkedDeviceEcdsaSourceContributionPreparationV1, parseLinkedDeviceEcdsaSourceDerivationV1, parseLinkedDeviceEcdsaSourcePreservingActivationReceiptV1, parseLinkedDeviceEd25519SourcePreservingReservationV1, parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationTupleV1, parseLinkedDeviceOrdinaryMaterialSourceContributionPreparationV1, parseLinkedDeviceOrdinaryMaterialSourceContributionTupleV1, parseLinkedDeviceOrdinaryMaterialSourceContributionV1, sameEcdsaSourceSigner, sameEcdsaTarget };
544
541
 
545
542
  //# sourceMappingURL=sourceContribution.js.map
@@ -13,6 +13,10 @@ function requireCanonicalBase64Url(value, label) {
13
13
  if (base64UrlEncode(decoded) !== value) throw new Error(`${label} must be canonical base64url`);
14
14
  return decoded;
15
15
  }
16
+ function requireParsed(result, label) {
17
+ if (result.ok) return result.value;
18
+ throw new Error(`${label} ${result.error.message}`);
19
+ }
16
20
  function parseDigestField(value, label) {
17
21
  try {
18
22
  return parseDigestB64u(value);
@@ -53,6 +57,6 @@ function parseUnixMs(value, label) {
53
57
  return value;
54
58
  }
55
59
  //#endregion
56
- export { parseDigestField, parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, parseEnvelopeRevision, parseKeyCreationSignerSlot, parseSecp256k1CompressedPublicKeyB64u, parseUnixMs };
60
+ export { parseDigestField, parseEd25519PublicKeyB64u, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, parseEnvelopeRevision, parseKeyCreationSignerSlot, parseSecp256k1CompressedPublicKeyB64u, parseUnixMs, requireParsed };
57
61
 
58
62
  //# sourceMappingURL=primitives.js.map
@@ -1,7 +1,7 @@
1
1
  import { hasWhitespaceOrControlCharacters, parseMpcSigningWorkerRef } from "../utils/domainIds.js";
2
2
  import { requireRecord } from "../utils/validation.js";
3
3
  import { rejectUnknownFields } from "../utils/exactRecord.js";
4
- import { parseDigestField } from "../passkey-custody/primitives.js";
4
+ import { parseDigestField, requireParsed } from "../passkey-custody/primitives.js";
5
5
  import "./participants.js";
6
6
  import "../utils/digestEncoding.js";
7
7
  import "./participantDigest.js";
@@ -14,10 +14,6 @@ const OWNER_LANE_PARTICIPANT_CONTINUITY_FIELDS = [
14
14
  "custodyKeyManifestDigestB64u",
15
15
  "sourceIdentityDigestB64u"
16
16
  ];
17
- function requireResult(result, label) {
18
- if (result.ok) return result.value;
19
- throw new Error(`${label} ${result.error.message}`);
20
- }
21
17
  /** Parse the owner signer identity without widening it into a generic string. */
22
18
  function parseWalletSignerId(raw, label = "walletSignerId") {
23
19
  if (typeof raw !== "string") throw new Error(`${label} must be a string`);
@@ -43,7 +39,7 @@ function buildOwnerLaneParticipantContinuityV1(args) {
43
39
  kind: "owner_lane_participant_continuity_v1",
44
40
  signerId: parseWalletSignerId(args.signerId),
45
41
  participantIds,
46
- signingWorkerId: requireResult(parseMpcSigningWorkerRef(args.signingWorkerId), "signingWorkerId"),
42
+ signingWorkerId: requireParsed(parseMpcSigningWorkerRef(args.signingWorkerId), "signingWorkerId"),
47
43
  custodyKeyManifestDigestB64u: parseDigestField(args.custodyKeyManifestDigestB64u, "custodyKeyManifestDigestB64u"),
48
44
  sourceIdentityDigestB64u: parseDigestField(args.sourceIdentityDigestB64u, "sourceIdentityDigestB64u")
49
45
  };
@@ -55,7 +51,7 @@ function parseOwnerLaneParticipantContinuityV1(raw, label = "ownerParticipantCon
55
51
  return buildOwnerLaneParticipantContinuityV1({
56
52
  signerId: parseWalletSignerId(record.signerId, `${label}.signerId`),
57
53
  participantIds: parseParticipantIds(record.participantIds, `${label}.participantIds`),
58
- signingWorkerId: requireResult(parseMpcSigningWorkerRef(record.signingWorkerId), `${label}.signingWorkerId`),
54
+ signingWorkerId: requireParsed(parseMpcSigningWorkerRef(record.signingWorkerId), `${label}.signingWorkerId`),
59
55
  custodyKeyManifestDigestB64u: parseDigestField(record.custodyKeyManifestDigestB64u, `${label}.custodyKeyManifestDigestB64u`),
60
56
  sourceIdentityDigestB64u: parseDigestField(record.sourceIdentityDigestB64u, `${label}.sourceIdentityDigestB64u`)
61
57
  });