@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,6 +1,7 @@
1
1
  import { parseLaneEnrollmentId, parseLaneOperationId, parseLaneShareEpoch, parseMpcMaterialActivationId, parseSigningLaneId, parseWalletId, parseWalletKeyId } from "../../../shared-ts/src/utils/domainIds.js";
2
2
  import { base64UrlDecode, base64UrlEncode } from "../../../shared-ts/src/utils/base64.js";
3
3
  import { parseDigestB64u } from "../../../shared-ts/src/utils/canonicalPrimitives.js";
4
+ import { requireParsed } from "../../../shared-ts/src/passkey-custody/primitives.js";
4
5
  import { parseLaneHolderCustodyBindingId } from "../../../shared-ts/src/signing-lanes/participants.js";
5
6
  import { signingSessionSealsRepository } from "./signingSessionSeals.js";
6
7
  //#region src/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.ts
@@ -74,10 +75,6 @@ function laneSealedHolderKind(value) {
74
75
  if (value === null || typeof value !== "object" || Array.isArray(value)) return void 0;
75
76
  return Reflect.get(value, "kind");
76
77
  }
77
- function parsed(result, label) {
78
- if (result.ok) return result.value;
79
- throw new Error(`${label} ${result.error.message}`);
80
- }
81
78
  function parsedDigest(value, label) {
82
79
  try {
83
80
  return parseDigestB64u(value);
@@ -103,15 +100,15 @@ function parseDecodedLaneSealedHolderRecord(record) {
103
100
  if (record.kind !== "lane_sealed_holder_record_v1") throw new Error("lane sealed holder record kind is invalid");
104
101
  return {
105
102
  kind: "lane_sealed_holder_record_v1",
106
- operationId: parsed(parseLaneOperationId(record.operationId), "operationId"),
107
- enrollmentId: parsed(parseLaneEnrollmentId(record.enrollmentId), "enrollmentId"),
108
- walletId: parsed(parseWalletId(record.walletId), "walletId"),
109
- walletKeyId: parsed(parseWalletKeyId(record.walletKeyId), "walletKeyId"),
110
- laneId: parsed(parseSigningLaneId(record.laneId), "laneId"),
111
- laneShareEpoch: parsed(parseLaneShareEpoch(record.laneShareEpoch), "laneShareEpoch"),
112
- targetMaterialActivationId: parsed(parseMpcMaterialActivationId(record.targetMaterialActivationId), "targetMaterialActivationId"),
103
+ operationId: requireParsed(parseLaneOperationId(record.operationId), "operationId"),
104
+ enrollmentId: requireParsed(parseLaneEnrollmentId(record.enrollmentId), "enrollmentId"),
105
+ walletId: requireParsed(parseWalletId(record.walletId), "walletId"),
106
+ walletKeyId: requireParsed(parseWalletKeyId(record.walletKeyId), "walletKeyId"),
107
+ laneId: requireParsed(parseSigningLaneId(record.laneId), "laneId"),
108
+ laneShareEpoch: requireParsed(parseLaneShareEpoch(record.laneShareEpoch), "laneShareEpoch"),
109
+ targetMaterialActivationId: requireParsed(parseMpcMaterialActivationId(record.targetMaterialActivationId), "targetMaterialActivationId"),
113
110
  holderParticipantBindingDigestB64u: parsedDigest(record.holderParticipantBindingDigestB64u, "holderParticipantBindingDigestB64u"),
114
- custodyBindingId: parsed(parseLaneHolderCustodyBindingId(record.custodyBindingId), "custodyBindingId"),
111
+ custodyBindingId: requireParsed(parseLaneHolderCustodyBindingId(record.custodyBindingId), "custodyBindingId"),
115
112
  holderRecipientKeyDigestB64u: parsedDigest(record.holderRecipientKeyDigestB64u, "holderRecipientKeyDigestB64u"),
116
113
  holderCiphertextDigestSetB64u: parsedDigest(record.holderCiphertextDigestSetB64u, "holderCiphertextDigestSetB64u"),
117
114
  sealedHolderRecordDigestB64u: parsedDigest(record.sealedHolderRecordDigestB64u, "sealedHolderRecordDigestB64u"),
@@ -186,7 +183,7 @@ var LaneSealedHolderMaterialRepository = class {
186
183
  return parsed;
187
184
  }
188
185
  async listForEnrollmentV1(input) {
189
- const enrollmentId = parsed(parseLaneEnrollmentId(input.enrollmentId), "enrollmentId");
186
+ const enrollmentId = requireParsed(parseLaneEnrollmentId(input.enrollmentId), "enrollmentId");
190
187
  const records = /* @__PURE__ */ new Map();
191
188
  for (const [key, record] of this.volatileRecords) if (record.enrollmentId === enrollmentId) records.set(key, record);
192
189
  const entries = await this.seals.collectRawSealedRecordEntriesByEnrollmentId(enrollmentId);
@@ -1,5 +1,7 @@
1
1
  import { parseWalletAuthMethodId, parseWalletAuthorityId, parseWalletId, parseWalletRecoveryOperationId, parseWebAuthnCredentialIdB64u, parseWebAuthnRpId } from "../../../shared-ts/src/utils/domainIds.js";
2
2
  import { parseDeviceId } from "../../../shared-ts/src/authorization/capabilityKinds.js";
3
+ import { requireArray } from "../../../shared-ts/src/utils/validation.js";
4
+ import { wireLiteral, wireObject, wireResult } from "../../../shared-ts/src/utils/wireSchema.js";
3
5
  import { base64UrlDecode, base64UrlEncode } from "../../../shared-ts/src/utils/base64.js";
4
6
  import { parseDigestField, parseEnvelopeCiphertextB64u, parseEnvelopeNonceB64u, parseUnixMs } from "../../../shared-ts/src/passkey-custody/primitives.js";
5
7
  import { buildRelayerJsonPostRequestInit, normalizeRelayerBaseUrl } from "./relayerHttp.js";
@@ -15,6 +17,7 @@ import "../../../shared-ts/src/passkey-custody/index.js";
15
17
  import { parseRouterAbMpcMaterialActivationRef } from "../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
16
18
  import { parseRouterAbEcdsaDerivationPublicCapabilityV1, parseRouterAbEcdsaRegistrationActivationReceiptV1 } from "../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
17
19
  import { parseWalletRecoveryEcdsaPossessionChallengeV1 } from "../../../shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js";
20
+ import { thresholdEcdsaChainTargetKey } from "../../../shared-ts/src/utils/thresholdEcdsaChainTarget.js";
18
21
  import { parseWalletRecoveryEnvelopeEntry } from "../../../shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js";
19
22
  import "../../../shared-ts/src/wallet-recovery/index.js";
20
23
  import { parseWalletRecoveryTargetV1 } from "../../../shared-ts/src/wallet-recovery/walletRecoveryTarget.js";
@@ -124,7 +127,7 @@ async function parseWalletRecoveryPrepareResponse(args) {
124
127
  const body = decodeJsonObjectOrNull(await response.json().catch(() => ({})));
125
128
  if (response.status === 200 && body && readJsonField(body, "ok") === true) try {
126
129
  const preparedResponse = decodeExactJsonObject(body, args.target.kind === "passkey" ? WALLET_RECOVERY_PREPARE_PASSKEY_RESPONSE_FIELDS : WALLET_RECOVERY_PREPARE_COMMON_RESPONSE_FIELDS, "walletRecoveryPrepare");
127
- const wrap = parsePreparedRecoveryWrap(readJsonField(preparedResponse, "wrap"));
130
+ const wrap = preparedRecoveryWrap()(readJsonField(preparedResponse, "wrap"), "walletRecoveryPrepare.wrap");
128
131
  const entries = parsePreparedRecoveryEntries(readJsonField(preparedResponse, "entries"));
129
132
  const walletIdResult = parseWalletId(readJsonField(preparedResponse, "walletId"));
130
133
  if (!walletIdResult.ok) throw new Error("walletRecoveryPrepare.walletId is invalid");
@@ -157,7 +160,7 @@ async function parseWalletRecoveryPrepareResponse(args) {
157
160
  };
158
161
  switch (target.kind) {
159
162
  case "passkey": {
160
- const registration = parseWalletRecoveryRegistrationOptions(readJsonField(preparedResponse, "registration"), String(walletId), target.rpId);
163
+ const registration = walletRecoveryRegistrationOptions(String(walletId), target.rpId)(readJsonField(preparedResponse, "registration"), "registration");
161
164
  if (registration.walletAuthMethodId !== targetWalletAuthMethodId.value) throw new Error("wallet recovery registration changed the target auth method");
162
165
  return {
163
166
  ...common,
@@ -181,115 +184,69 @@ async function parseWalletRecoveryPrepareResponse(args) {
181
184
  if (response.status === 401 || response.status === 400) return { kind: "refused" };
182
185
  return { kind: "transport_uncertain" };
183
186
  }
184
- function parseWalletRecoveryRegistrationOptions(raw, expectedWalletId, expectedRpId) {
185
- const registration = decodeExactJsonObject(raw, [
186
- "kind",
187
- "challengeId",
188
- "challengeB64u",
189
- "replacementId",
190
- "walletAuthMethodId",
191
- "rpId",
192
- "user",
193
- "pubKeyCredParams",
194
- "authenticatorSelection",
195
- "timeoutMs",
196
- "attestation",
197
- "extensions",
198
- "excludeCredentials"
199
- ], "walletRecoveryPrepare.registration");
200
- if (readJsonField(registration, "kind") !== "webauthn_recovery_registration_v1") throw new Error("walletRecoveryPrepare.registration kind is invalid");
201
- const challengeId = requireResponseString(readJsonField(registration, "challengeId"), "registration.challengeId");
202
- const challengeB64u = requireCanonicalBytesB64u(readJsonField(registration, "challengeB64u"), 32, "registration.challengeB64u");
203
- const replacementId = requireResponseString(readJsonField(registration, "replacementId"), "registration.replacementId");
204
- const walletAuthMethodId = parseWalletAuthMethodId(readJsonField(registration, "walletAuthMethodId"));
205
- if (!walletAuthMethodId.ok) throw new Error("walletRecoveryPrepare.registration.walletAuthMethodId is invalid");
206
- const rpIdResult = parseWebAuthnRpId(readJsonField(registration, "rpId"));
207
- if (!rpIdResult.ok) throw new Error("walletRecoveryPrepare.registration.rpId is invalid");
208
- if (rpIdResult.value !== expectedRpId) throw new Error("walletRecoveryPrepare.registration changed the relying party");
209
- const user = decodeExactJsonObject(readJsonField(registration, "user"), [
210
- "idB64u",
211
- "name",
212
- "displayName"
213
- ], "walletRecoveryPrepare.registration.user");
187
+ function walletRecoveryRegistrationOptions(expectedWalletId, expectedRpId) {
214
188
  const expectedUserIdB64u = base64UrlEncode(new TextEncoder().encode(expectedWalletId));
215
- const idB64u = requireCanonicalNonEmptyB64u(readJsonField(user, "idB64u"), "registration.user.idB64u");
216
- if (idB64u !== expectedUserIdB64u) throw new Error("walletRecoveryPrepare.registration user is bound to another wallet");
217
- const name = requireResponseString(readJsonField(user, "name"), "registration.user.name");
218
- const displayName = requireResponseString(readJsonField(user, "displayName"), "registration.user.displayName");
219
- if (name !== expectedWalletId || displayName !== expectedWalletId) throw new Error("walletRecoveryPrepare.registration user labels changed the wallet identity");
220
- const pubKeyCredParams = parseRecoveryPublicKeyParameters(readJsonField(registration, "pubKeyCredParams"));
221
- const authenticatorSelection = parseRecoveryAuthenticatorSelection(readJsonField(registration, "authenticatorSelection"));
222
- const timeoutMs = Number(readJsonField(registration, "timeoutMs"));
223
- if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) throw new Error("walletRecoveryPrepare.registration.timeoutMs is invalid");
224
- if (readJsonField(registration, "attestation") !== "none") throw new Error("walletRecoveryPrepare.registration.attestation is invalid");
225
- const extensions = parseRecoveryPrfExtensions(readJsonField(registration, "extensions"));
226
- const excludeCredentials = parseRecoveryExcludeCredentials(readJsonField(registration, "excludeCredentials"));
227
- return {
228
- kind: "webauthn_recovery_registration_v1",
229
- challengeId,
230
- challengeB64u,
231
- replacementId,
232
- walletAuthMethodId: walletAuthMethodId.value,
233
- rpId: rpIdResult.value,
234
- user: {
235
- idB64u,
236
- name,
237
- displayName
189
+ const credentialDescriptor = wireObject({
190
+ type: wireLiteral("public-key"),
191
+ id: (raw, label) => {
192
+ const id = wireResult(parseWebAuthnCredentialIdB64u)(raw, label);
193
+ requireCanonicalNonEmptyB64u(id, label);
194
+ return id;
195
+ }
196
+ });
197
+ return wireObject({
198
+ kind: wireLiteral("webauthn_recovery_registration_v1"),
199
+ challengeId: requireResponseString,
200
+ challengeB64u: (raw, label) => requireCanonicalBytesB64u(raw, 32, label),
201
+ replacementId: requireResponseString,
202
+ walletAuthMethodId: wireResult(parseWalletAuthMethodId),
203
+ rpId: wireResult(parseWebAuthnRpId),
204
+ user: wireObject({
205
+ idB64u: requireCanonicalNonEmptyB64u,
206
+ name: requireResponseString,
207
+ displayName: requireResponseString
208
+ }, (user, label) => {
209
+ if (user.idB64u !== expectedUserIdB64u || user.name !== expectedWalletId || user.displayName !== expectedWalletId) throw new Error(`${label} is bound to another wallet`);
210
+ }),
211
+ pubKeyCredParams: (raw, label) => {
212
+ if (!Array.isArray(raw) || raw.length !== 2) throw new Error(`${label} is invalid`);
213
+ return [publicKeyCredentialParameter(-7)(raw[0], `${label}[0]`), publicKeyCredentialParameter(-257)(raw[1], `${label}[1]`)];
238
214
  },
239
- pubKeyCredParams,
240
- authenticatorSelection,
241
- timeoutMs,
242
- attestation: "none",
243
- extensions,
244
- excludeCredentials
245
- };
246
- }
247
- function parseRecoveryPrfExtensions(raw) {
248
- 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");
249
- const firstB64u = requireCanonicalBytesB64u(readJsonField(evaluation, "firstB64u"), PASSKEY_PRF_FIRST_SALT_V1.length, "registration.extensions.prf.eval.firstB64u");
250
- const secondB64u = requireCanonicalBytesB64u(readJsonField(evaluation, "secondB64u"), PASSKEY_PRF_SECOND_SALT_V1.length, "registration.extensions.prf.eval.secondB64u");
251
- if (firstB64u !== base64UrlEncode(PASSKEY_PRF_FIRST_SALT_V1) || secondB64u !== base64UrlEncode(PASSKEY_PRF_SECOND_SALT_V1)) throw new Error("walletRecoveryPrepare.registration PRF salts are unsupported");
252
- return { prf: { eval: {
253
- firstB64u,
254
- secondB64u
255
- } } };
215
+ authenticatorSelection: wireObject({
216
+ residentKey: wireLiteral("required"),
217
+ userVerification: wireLiteral("preferred")
218
+ }),
219
+ timeoutMs: (raw, label) => {
220
+ const timeoutMs = Number(raw);
221
+ if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) throw new Error(`${label} is invalid`);
222
+ return timeoutMs;
223
+ },
224
+ attestation: wireLiteral("none"),
225
+ extensions: wireObject({ prf: wireObject({ eval: wireObject({
226
+ firstB64u: prfSalt(PASSKEY_PRF_FIRST_SALT_V1),
227
+ secondB64u: prfSalt(PASSKEY_PRF_SECOND_SALT_V1)
228
+ }) }) }),
229
+ excludeCredentials: (raw, label) => requireArray(raw, label).map((entry, index) => credentialDescriptor(entry, `${label}[${index}]`))
230
+ }, (registration, label) => {
231
+ if (registration.rpId !== expectedRpId) throw new Error(`${label} changed the relying party`);
232
+ });
256
233
  }
257
- function parseRecoveryPublicKeyParameters(raw) {
258
- if (!Array.isArray(raw) || raw.length !== 2) throw new Error("walletRecoveryPrepare.registration.pubKeyCredParams is invalid");
259
- const first = decodeExactJsonObject(raw[0], ["type", "alg"], "walletRecoveryPrepare.registration.pubKeyCredParams[0]");
260
- const second = decodeExactJsonObject(raw[1], ["type", "alg"], "walletRecoveryPrepare.registration.pubKeyCredParams[1]");
261
- if (readJsonField(first, "type") !== "public-key" || readJsonField(first, "alg") !== -7) throw new Error("walletRecoveryPrepare.registration.pubKeyCredParams[0] is invalid");
262
- if (readJsonField(second, "type") !== "public-key" || readJsonField(second, "alg") !== -257) throw new Error("walletRecoveryPrepare.registration.pubKeyCredParams[1] is invalid");
263
- return [{
264
- type: "public-key",
265
- alg: -7
266
- }, {
267
- type: "public-key",
268
- alg: -257
269
- }];
234
+ function publicKeyCredentialParameter(alg) {
235
+ return wireObject({
236
+ type: wireLiteral("public-key"),
237
+ alg: (raw, label) => {
238
+ if (raw !== alg) throw new Error(`${label} is invalid`);
239
+ return alg;
240
+ }
241
+ });
270
242
  }
271
- function parseRecoveryAuthenticatorSelection(raw) {
272
- const selection = decodeExactJsonObject(raw, ["residentKey", "userVerification"], "walletRecoveryPrepare.registration.authenticatorSelection");
273
- if (readJsonField(selection, "residentKey") !== "required" || readJsonField(selection, "userVerification") !== "preferred") throw new Error("walletRecoveryPrepare.registration.authenticatorSelection is invalid");
274
- return {
275
- residentKey: "required",
276
- userVerification: "preferred"
243
+ function prfSalt(salt) {
244
+ return (raw, label) => {
245
+ const value = requireCanonicalBytesB64u(raw, salt.length, label);
246
+ if (value !== base64UrlEncode(salt)) throw new Error(`${label} is unsupported`);
247
+ return value;
277
248
  };
278
249
  }
279
- function parseRecoveryExcludeCredentials(raw) {
280
- if (!Array.isArray(raw)) throw new Error("walletRecoveryPrepare.registration.excludeCredentials is invalid");
281
- return raw.map((entry, index) => {
282
- const descriptor = decodeExactJsonObject(entry, ["type", "id"], `walletRecoveryPrepare.registration.excludeCredentials[${index}]`);
283
- if (readJsonField(descriptor, "type") !== "public-key") throw new Error("walletRecoveryPrepare.registration.excludeCredentials type is invalid");
284
- const parsedId = parseWebAuthnCredentialIdB64u(readJsonField(descriptor, "id"));
285
- if (!parsedId.ok) throw new Error("walletRecoveryPrepare.registration.excludeCredentials id is invalid");
286
- requireCanonicalNonEmptyB64u(parsedId.value, "registration.excludeCredentials.id");
287
- return {
288
- type: "public-key",
289
- id: parsedId.value
290
- };
291
- });
292
- }
293
250
  function recoveryTargetsMatch(left, right) {
294
251
  if (left.kind !== right.kind) return false;
295
252
  switch (left.kind) {
@@ -301,18 +258,12 @@ function recoveryTargetsMatch(left, right) {
301
258
  function assertNeverRecoveryTarget(value) {
302
259
  throw new Error(`unsupported wallet recovery target: ${String(value)}`);
303
260
  }
304
- const PREPARED_WRAP_FIELDS = [
305
- "nonceB64u",
306
- "wrappedManifestKekB64u",
307
- "aadHashB64u"
308
- ];
309
- function parsePreparedRecoveryWrap(raw) {
310
- const wrap = decodeExactJsonObject(raw, PREPARED_WRAP_FIELDS, "walletRecoveryPrepare.wrap");
311
- return {
312
- nonceB64u: parseEnvelopeNonceB64u(readJsonField(wrap, "nonceB64u"), "walletRecoveryPrepare.wrap.nonceB64u"),
313
- wrappedManifestKekB64u: parseEnvelopeCiphertextB64u(readJsonField(wrap, "wrappedManifestKekB64u"), "walletRecoveryPrepare.wrap.wrappedManifestKekB64u"),
314
- aadHashB64u: parseDigestField(readJsonField(wrap, "aadHashB64u"), "walletRecoveryPrepare.wrap.aadHashB64u")
315
- };
261
+ function preparedRecoveryWrap() {
262
+ return wireObject({
263
+ nonceB64u: parseEnvelopeNonceB64u,
264
+ wrappedManifestKekB64u: parseEnvelopeCiphertextB64u,
265
+ aadHashB64u: parseDigestField
266
+ });
316
267
  }
317
268
  function parsePreparedRecoveryEntries(raw) {
318
269
  if (!Array.isArray(raw) || raw.length !== 1) throw new Error("walletRecoveryPrepare.entries must contain exactly one custody seed");
@@ -474,7 +425,7 @@ function parseWalletRecoveryPreparationEcdsaRecoveryBasis(raw, expectedWalletId)
474
425
  function parseWalletRecoveryEcdsaChainTargets(raw) {
475
426
  if (!Array.isArray(raw) || raw.length === 0) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are invalid");
476
427
  const targets = raw.map((value, index) => parseWalletRecoveryEcdsaChainTarget(value, index));
477
- if (new Set(targets.map(walletRecoveryEcdsaChainTargetKey)).size !== targets.length) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are duplicated");
428
+ if (new Set(targets.map(thresholdEcdsaChainTargetKey)).size !== targets.length) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are duplicated");
478
429
  const first = targets[0];
479
430
  if (!first) throw new Error("walletRecoveryPrepare ECDSA recovery chain targets are invalid");
480
431
  return [first, ...targets.slice(1)];
@@ -514,9 +465,6 @@ function parseWalletRecoveryEcdsaChainTarget(raw, index) {
514
465
  };
515
466
  throw new Error("walletRecoveryPrepare ECDSA recovery chain family is invalid");
516
467
  }
517
- function walletRecoveryEcdsaChainTargetKey(target) {
518
- return target.kind === "evm" ? `evm:eip155:${target.chainId}` : `tempo:${target.chainId}`;
519
- }
520
468
  function parseWalletRecoveryEcdsaParticipantIds(raw) {
521
469
  if (!Array.isArray(raw) || raw.length !== 2 || raw[0] !== 1 || raw[1] !== 2) throw new Error("walletRecoveryPrepare ECDSA recovery participant IDs are invalid");
522
470
  return [1, 2];
@@ -26,7 +26,7 @@ function createRecoveryPublicDeps(args) {
26
26
  }, {
27
27
  ...completeConfiguredEcdsaTargets(availableLanesArgs),
28
28
  requiredEcdsaCapability: "export_keys"
29
- }, new WalletSessionStatusReadScope()),
29
+ }, new WalletSessionStatusReadScope(), "all"),
30
30
  readOwnerScopedAvailableSigningLanesForTargets: async (availableLanesArgs) => await readOwnerScopedAvailableSigningLanes({
31
31
  activeWalletAuthorityEcdsaRuntimeReadPorts: browserExactWalletSessionReadPorts,
32
32
  ed25519YaoPublicCapabilityLanes: args.ed25519YaoPublicCapabilityLanes,
@@ -38,9 +38,6 @@ const KNOWN_CONTRACT_FUNCTION_SIGNATURES = Object.freeze({
38
38
  "0xcfae3217": "greet()"
39
39
  })
40
40
  });
41
- function normalizeSelector(selector) {
42
- return normalizeHexSelector(selector);
43
- }
44
41
  function normalizeContractAddress(contractAddress) {
45
42
  const normalized = String(contractAddress || "").trim().toLowerCase();
46
43
  if (!EVM_ADDRESS_RE.test(normalized)) return void 0;
@@ -50,7 +47,7 @@ function selectorFromHexData(data) {
50
47
  return deriveSelectorFromHexData(data);
51
48
  }
52
49
  function resolveFunctionSignature(selector, contractAddress) {
53
- const normalized = normalizeSelector(selector);
50
+ const normalized = normalizeHexSelector(selector);
54
51
  if (!normalized) return void 0;
55
52
  const normalizedContractAddress = normalizeContractAddress(contractAddress);
56
53
  if (normalizedContractAddress) {
@@ -66,7 +63,7 @@ function resolveFunctionDisplayName(selector, contractAddress) {
66
63
  const normalizedName = (idx > 0 ? signature.slice(0, idx) : signature).trim();
67
64
  if (normalizedName) return `${normalizedName}()`;
68
65
  }
69
- const normalizedSelector = normalizeSelector(selector);
66
+ const normalizedSelector = normalizeHexSelector(selector);
70
67
  if (normalizedSelector) return `function ${normalizedSelector}`;
71
68
  }
72
69
  //#endregion
@@ -7,7 +7,7 @@ import { thresholdEcdsaChainTargetKey, walletSessionRefFromSession } from "../..
7
7
  import { isEmailOtpWalletAuthAuthority, isPasskeyWalletAuthAuthority, walletAuthAuthoritiesMatch } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
8
8
  import { sameRouterAbEcdsaDerivationNormalSigningStateV1 } from "../../../../shared-ts/src/utils/routerAbEcdsaDerivation.js";
9
9
  import { sameWalletAuthMethodRecordV2 } from "../../../../shared-ts/src/utils/walletAuthMethodRecord.js";
10
- import { resolveThresholdEcdsaSigningQueueKey } from "../../threshold/ecdsa/signingQueue.js";
10
+ import { resolveThresholdCommitQueueKey } from "../../threshold/commitQueueShared.js";
11
11
  import { issueEcdsaOperationStepUpAuthorization, prepareEcdsaOperationStepUp } from "../../threshold/ecdsa/operationStepUp.js";
12
12
  import { resolveActiveWalletAuthorityEcdsaRuntimeV1 } from "../../session/material/activeWalletAuthorityEcdsaRuntime.js";
13
13
  import { ecdsaExportBoundaryChain, resolveEcdsaExportMaterialForLane, resolveFreshEmailOtpEcdsaExportMaterialForLane } from "./ecdsaExportMaterial.js";
@@ -107,7 +107,7 @@ async function prepareAndShowEcdsaExportArtifact(deps, args) {
107
107
  });
108
108
  const materialActivation = args.exportLane.laneIdentity.signer.materialActivation;
109
109
  const artifact = await deps.withThresholdEcdsaSigningQueue({
110
- queueKey: resolveThresholdEcdsaSigningQueueKey({ materialActivation }),
110
+ queueKey: resolveThresholdCommitQueueKey({ materialActivation }),
111
111
  walletId: args.exportLane.key.walletId,
112
112
  enabled: true,
113
113
  task: async () => {
@@ -25,26 +25,42 @@ function exactEcdsaParticipantIds(value) {
25
25
  if (!Number.isSafeInteger(first) || !Number.isSafeInteger(second) || first <= 0 || second <= 0 || first === second) throw new Error("[SigningEngine][ecdsa-export] ECDSA participant set is invalid");
26
26
  return [first, second];
27
27
  }
28
- function resolveCanonicalEmailOtpEcdsaExportMaterialForLane(args) {
29
- const { exportLane } = args;
28
+ function requireCanonicalEcdsaExportLane(args) {
29
+ const { exportLane, label } = args;
30
30
  const capability = exportLane.capability;
31
- if (!isEmailOtpWalletAuthAuthority(capability.authority)) throw new Error("[SigningEngine][ecdsa-export] Email OTP capability authority mismatch");
32
31
  const signer = capability.manifest.signer;
33
- if (signer.walletId !== exportLane.key.walletId || !signer.scope.targetMemberships.some((target) => thresholdEcdsaChainTargetsEqual(target, exportLane.chainTarget))) throw new Error("[SigningEngine][ecdsa-export] Email OTP capability target mismatch");
34
- if (exportLane.laneIdentity.auth.kind !== "email_otp" || exportLane.laneIdentity.auth.providerSubjectId !== capability.authority.factor.providerUserId) throw new Error("[SigningEngine][ecdsa-export] Email OTP capability auth mismatch");
35
- if (!mpcMaterialActivationRefsEqual(capability.manifest.activation.materialActivation, exportLane.laneIdentity.signer.materialActivation)) throw new Error("[SigningEngine][ecdsa-export] Email OTP material activation mismatch");
32
+ if (signer.walletId !== exportLane.key.walletId || !signer.scope.targetMemberships.some((target) => thresholdEcdsaChainTargetsEqual(target, exportLane.chainTarget))) throw new Error(`[SigningEngine][ecdsa-export] ${label} capability target mismatch`);
33
+ if (!args.authMatches()) throw new Error(`[SigningEngine][ecdsa-export] ${label} capability auth mismatch`);
34
+ if (!mpcMaterialActivationRefsEqual(capability.manifest.activation.materialActivation, exportLane.laneIdentity.signer.materialActivation)) throw new Error(`[SigningEngine][ecdsa-export] ${label} material activation mismatch`);
36
35
  assertMatchingVerifiedEcdsaPublicFacts({
37
36
  expected: exportLane.publicFacts,
38
- actual: capability.manifest.signer.registeredPublicFacts,
39
- context: "canonical Email OTP export lane"
37
+ actual: signer.registeredPublicFacts,
38
+ context: `canonical ${label} export lane`
40
39
  });
41
40
  const materialFacts = capability.material.publicFacts;
42
- if (materialFacts.walletId !== signer.walletId || String(materialFacts.keyHandle) !== String(exportLane.publicFacts.keyHandle) || String(materialFacts.groupPublicKey33B64u) !== String(exportLane.publicFacts.publicKeyB64u) || String(materialFacts.ethereumAddress) !== String(exportLane.publicFacts.thresholdOwnerAddress) || materialFacts.participantIds.length !== exportLane.publicFacts.participantIds.length || materialFacts.participantIds.some((participantId, index) => participantId !== exportLane.publicFacts.participantIds[index])) throw new Error("[SigningEngine][ecdsa-export] canonical Email OTP export material mismatch");
41
+ if (materialFacts.walletId !== signer.walletId || String(materialFacts.keyHandle) !== String(exportLane.publicFacts.keyHandle) || String(materialFacts.groupPublicKey33B64u) !== String(exportLane.publicFacts.publicKeyB64u) || String(materialFacts.ethereumAddress) !== String(exportLane.publicFacts.thresholdOwnerAddress) || materialFacts.participantIds.length !== exportLane.publicFacts.participantIds.length || materialFacts.participantIds.some((participantId, index) => participantId !== exportLane.publicFacts.participantIds[index])) throw new Error(`[SigningEngine][ecdsa-export] canonical ${label} export material mismatch`);
43
42
  const durable = capability.manifest.durableMaterial;
44
43
  const runtimePolicyScope = durable.runtimePolicyScope;
45
44
  const relayerUrl = String(args.deps.relayerUrl).trim().replace(/\/+$/g, "");
46
- if (!runtimePolicyScope) throw new Error("[SigningEngine][ecdsa-export] Email OTP runtime policy scope is missing");
47
- if (!relayerUrl) throw new Error("[SigningEngine][ecdsa-export] Email OTP export relayer URL is missing");
45
+ if (!runtimePolicyScope) throw new Error(`[SigningEngine][ecdsa-export] ${label} runtime policy scope is missing`);
46
+ if (!relayerUrl) throw new Error(`[SigningEngine][ecdsa-export] ${label} export relayer URL is missing`);
47
+ return {
48
+ durable,
49
+ runtimePolicyScope,
50
+ relayerUrl
51
+ };
52
+ }
53
+ function resolveCanonicalEmailOtpEcdsaExportMaterialForLane(args) {
54
+ const { exportLane } = args;
55
+ const capability = exportLane.capability;
56
+ const authority = capability.authority;
57
+ if (!isEmailOtpWalletAuthAuthority(authority)) throw new Error("[SigningEngine][ecdsa-export] Email OTP capability authority mismatch");
58
+ const { durable, runtimePolicyScope, relayerUrl } = requireCanonicalEcdsaExportLane({
59
+ deps: args.deps,
60
+ exportLane,
61
+ label: "Email OTP",
62
+ authMatches: () => exportLane.laneIdentity.auth.kind === "email_otp" && exportLane.laneIdentity.auth.providerSubjectId === authority.factor.providerUserId
63
+ });
48
64
  return {
49
65
  source: "canonical_capability",
50
66
  kind: "fresh_email_otp_route_auth_ready",
@@ -58,30 +74,21 @@ function resolveCanonicalEmailOtpEcdsaExportMaterialForLane(args) {
58
74
  relayerUrl,
59
75
  authorization: {
60
76
  kind: "fresh_operation_authorization_required",
61
- authority: capability.authority
77
+ authority
62
78
  }
63
79
  };
64
80
  }
65
81
  function resolveCanonicalPasskeyEcdsaExportMaterialForLane(args) {
66
82
  const { exportLane } = args;
67
83
  const capability = exportLane.capability;
68
- if (!isPasskeyWalletAuthAuthority(capability.authority)) throw new Error("[SigningEngine][ecdsa-export] passkey capability authority mismatch");
69
- const signer = capability.manifest.signer;
70
- if (signer.walletId !== exportLane.key.walletId || !signer.scope.targetMemberships.some((target) => thresholdEcdsaChainTargetsEqual(target, exportLane.chainTarget))) throw new Error("[SigningEngine][ecdsa-export] passkey capability target mismatch");
71
- if (exportLane.laneIdentity.auth.kind !== "passkey" || exportLane.laneIdentity.auth.credentialIdB64u !== capability.authority.factor.credentialIdB64u) throw new Error("[SigningEngine][ecdsa-export] passkey capability auth mismatch");
72
- if (!mpcMaterialActivationRefsEqual(capability.manifest.activation.materialActivation, exportLane.laneIdentity.signer.materialActivation)) throw new Error("[SigningEngine][ecdsa-export] passkey material activation mismatch");
73
- assertMatchingVerifiedEcdsaPublicFacts({
74
- expected: exportLane.publicFacts,
75
- actual: signer.registeredPublicFacts,
76
- context: "canonical passkey export lane"
84
+ const authority = capability.authority;
85
+ if (!isPasskeyWalletAuthAuthority(authority)) throw new Error("[SigningEngine][ecdsa-export] passkey capability authority mismatch");
86
+ const { durable, runtimePolicyScope, relayerUrl } = requireCanonicalEcdsaExportLane({
87
+ deps: args.deps,
88
+ exportLane,
89
+ label: "passkey",
90
+ authMatches: () => exportLane.laneIdentity.auth.kind === "passkey" && exportLane.laneIdentity.auth.credentialIdB64u === authority.factor.credentialIdB64u
77
91
  });
78
- const materialFacts = capability.material.publicFacts;
79
- if (materialFacts.walletId !== signer.walletId || String(materialFacts.keyHandle) !== String(exportLane.publicFacts.keyHandle) || String(materialFacts.groupPublicKey33B64u) !== String(exportLane.publicFacts.publicKeyB64u) || String(materialFacts.ethereumAddress) !== String(exportLane.publicFacts.thresholdOwnerAddress) || materialFacts.participantIds.length !== exportLane.publicFacts.participantIds.length || materialFacts.participantIds.some((participantId, index) => participantId !== exportLane.publicFacts.participantIds[index])) throw new Error("[SigningEngine][ecdsa-export] canonical passkey export material mismatch");
80
- const durable = capability.manifest.durableMaterial;
81
- const runtimePolicyScope = durable.runtimePolicyScope;
82
- const relayerUrl = String(args.deps.relayerUrl).trim().replace(/\/+$/g, "");
83
- if (!runtimePolicyScope) throw new Error("[SigningEngine][ecdsa-export] passkey runtime policy scope is missing");
84
- if (!relayerUrl) throw new Error("[SigningEngine][ecdsa-export] passkey export relayer URL is missing");
85
92
  return {
86
93
  source: "canonical_capability",
87
94
  kind: "fresh_passkey_needs_authorization",
@@ -2,7 +2,7 @@ import { mpcMaterialActivationRefsEqual } from "../../../../shared-ts/src/utils/
2
2
  import { base58Encode } from "../../../../shared-ts/src/utils/base58.js";
3
3
  import { KeyExportEventPhase } from "../../../types/sdkSentEvents.js";
4
4
  import { routerAbMpcMaterialActivationRefToWire } from "../../../../shared-ts/src/utils/routerAbNormalSigningIdentity.js";
5
- import { resolveThresholdEd25519CommitQueueKey } from "../../threshold/ed25519/commitQueue.js";
5
+ import { resolveThresholdCommitQueueKey } from "../../threshold/commitQueueShared.js";
6
6
  import { isExportViewerSessionOpen, removeExportViewerHostIfPresent } from "../../uiConfirm/ui/export-viewer-host.js";
7
7
  import { createExportUiRequestId, emitKeyExportEvent } from "./keyExportFlow.js";
8
8
  import { requestEmailOtpEd25519KeyExportAuthorization, showEd25519ExportViewer } from "./keyExportConfirmation.js";
@@ -204,7 +204,7 @@ async function exportEd25519YaoKeyWithFreshAuthorization(deps, args) {
204
204
  }
205
205
  });
206
206
  const result = await deps.withThresholdEd25519CommitQueue({
207
- queueKey: resolveThresholdEd25519CommitQueueKey({ materialActivation: passkeyEd25519ExportMaterialActivation(resolved) }),
207
+ queueKey: resolveThresholdCommitQueueKey({ materialActivation: passkeyEd25519ExportMaterialActivation(resolved) }),
208
208
  nearAccountId: args.nearAccountId,
209
209
  enabled: true,
210
210
  task: () => deps.passkeyMpcExport.exportPrivateKeysWithUi(buildWorkerPayload({
@@ -300,7 +300,7 @@ async function exportEd25519YaoKeyWithFreshEmailOtp(deps, args) {
300
300
  onEvent: args.onEvent
301
301
  });
302
302
  const artifact = await deps.withThresholdEd25519CommitQueue({
303
- queueKey: resolveThresholdEd25519CommitQueueKey({ materialActivation: emailOtpEd25519ExportMaterialActivation(resolved.context) }),
303
+ queueKey: resolveThresholdCommitQueueKey({ materialActivation: emailOtpEd25519ExportMaterialActivation(resolved.context) }),
304
304
  nearAccountId: args.nearAccountId,
305
305
  enabled: resolved.context.material.kind === "active_capability",
306
306
  task: () => deps.emailOtp.exportSeedWithFreshAuthorization({
@@ -196,14 +196,11 @@ async function exportEd25519KeypairWithFlowId(deps, args) {
196
196
  onEvent: args.options.onEvent
197
197
  });
198
198
  }
199
- async function exportEd25519KeypairWithSessionLifecycle(deps, args) {
200
- return await exportEd25519KeypairWithFlowId(deps, args);
201
- }
202
199
  async function exportKeypairWithUI(deps, input) {
203
200
  return await runKeyExportWithFlowEvents(input, async (args) => {
204
201
  switch (args.kind) {
205
202
  case "ecdsa": return await exportEcdsaKeypairWithSessionLifecycle(deps, args, { kind: "initial" });
206
- case "ed25519": return await exportEd25519KeypairWithSessionLifecycle(deps, args);
203
+ case "ed25519": return await exportEd25519KeypairWithFlowId(deps, args);
207
204
  }
208
205
  });
209
206
  }
@@ -7,7 +7,7 @@ import { parseRouterAbEd25519NormalSigningState } from "../../../../shared-ts/sr
7
7
  import { toAccountId } from "../../../types/accountIds.js";
8
8
  import { nearEd25519SigningKeyIdFromString, walletIdFromString } from "../../../../shared-ts/src/utils/registrationIds.js";
9
9
  import { toWalletId } from "../../interfaces/ecdsaChainTarget.js";
10
- import { normalizeRuntimePolicyScope, signingRootScopeFromRuntimePolicyScope } from "../../../../shared-ts/src/threshold/signingRootScope.js";
10
+ import { normalizeRuntimePolicyScope, sameRuntimePolicyScope, signingRootScopeFromRuntimePolicyScope } from "../../../../shared-ts/src/threshold/signingRootScope.js";
11
11
  import { toRpId } from "../../session/identity/evmFamilyEcdsaIdentity.js";
12
12
  import { parsePasskeyCustodyEnvelopeRecord } from "../../../../shared-ts/src/passkey-custody/custodyEnvelope.js";
13
13
  import "../../../../shared-ts/src/passkey-custody/index.js";
@@ -76,9 +76,6 @@ function parseExactRecoverySession(raw, participantIds, identity, walletSession,
76
76
  operationCredential
77
77
  };
78
78
  }
79
- function sameRuntimePolicyScope(left, right) {
80
- return left.orgId === right.orgId && left.projectId === right.projectId && left.envId === right.envId && left.signingRootVersion === right.signingRootVersion;
81
- }
82
79
  function assertEd25519YaoRecoveryDescriptorStableIdentity(parsed) {
83
80
  const capability = parsed.capability;
84
81
  const session = parsed.session;
@@ -4,12 +4,12 @@ import { SigningEventPhase } from "../../../types/sdkSentEvents.js";
4
4
  import { buildVerifiedEcdsaPublicFacts, toEvmFamilyEcdsaKeyHandle } from "../../session/identity/evmFamilyEcdsaIdentity.js";
5
5
  import { isEmailOtpWalletAuthAuthority, walletAuthAuthoritiesMatch, walletAuthAuthorityRef } from "../../../../shared-ts/src/utils/walletAuthAuthority.js";
6
6
  import { createSigningBoundaryTraceEvent, emitSigningBoundaryTrace } from "../../session/operationState/trace.js";
7
+ import { resolveThresholdCommitQueueKey } from "../../threshold/commitQueueShared.js";
7
8
  import { demoEmailOtpCodeFromDelivery } from "../../session/emailOtp/challengeDelivery.js";
8
9
  import { buildEmailOtpRoutePlan } from "../../stepUpConfirmation/otpPrompt/authLane.js";
9
10
  import { emailOtpEcdsaSigningSessionAuthLane, resolveExactEmailOtpEcdsaSigningSessionAuthority } from "../../session/emailOtp/ecdsaSigningSessionAuthority.js";
10
11
  import { emitEvmFamilySigningEvent } from "./events.js";
11
12
  import { throwEmailOtpSigningSessionAuthStateError } from "../../session/emailOtp/routePlan.js";
12
- import { resolveThresholdEcdsaSigningQueueKey } from "../../threshold/ecdsa/signingQueue.js";
13
13
  //#region src/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.ts
14
14
  /** The capability is the authority. Anything the caller or the confirmation
15
15
  * plan supplies must agree with it exactly, or the OTP would be sent to a
@@ -211,7 +211,7 @@ async function refreshEmailOtpSigningSession(deps, args) {
211
211
  chainTarget: args.chainTarget
212
212
  })).runtime.materialActivation;
213
213
  return await deps.withThresholdEcdsaSigningQueue({
214
- queueKey: resolveThresholdEcdsaSigningQueueKey({ materialActivation: activationBeforeRefresh }),
214
+ queueKey: resolveThresholdCommitQueueKey({ materialActivation: activationBeforeRefresh }),
215
215
  walletId: args.walletSession.walletId,
216
216
  enabled: true,
217
217
  task: runFencedEmailOtpSigningSessionRefresh.bind(void 0, {
@@ -294,13 +294,6 @@ async function prepareEvmFamilyEcdsaSigningSession(args) {
294
294
  diagnostics: selection.diagnostics
295
295
  });
296
296
  const committedSelectionAuthMethod = selection.committedLane.authority.factor.kind;
297
- const availableLanes = await args.deps.readAvailableSigningLanesForSigning({
298
- walletId,
299
- curve: "ecdsa",
300
- ecdsaChainTargets: [chainTarget],
301
- authMethod: committedSelectionAuthMethod,
302
- ownerScope
303
- });
304
297
  emitSigningLaneResolutionTrace("evm-family", selection.lane, { reason: "evm_family_ecdsa_selection" });
305
298
  args.diagnostics.selection = {
306
299
  kind: selection.kind,
@@ -343,7 +336,7 @@ async function prepareEvmFamilyEcdsaSigningSession(args) {
343
336
  expiresAtMs: readiness.expiresAtMs,
344
337
  remainingUses: readiness.remainingUses
345
338
  },
346
- availableLanesGeneration: availableLanes.generation,
339
+ availableLanesGeneration: candidateAvailableLanes.generation,
347
340
  metadata: {
348
341
  accountAuth: selection.accountAuth,
349
342
  authMethod: committedSelectionAuthMethod,
@@ -354,7 +347,7 @@ async function prepareEvmFamilyEcdsaSigningSession(args) {
354
347
  ...args.signingOperation.operationFingerprint ? { operationFingerprint: args.signingOperation.operationFingerprint } : {},
355
348
  laneIdentityKey: exactSigningLaneIdentityKey(exactSigningLaneIdentityFromSelectedLane(resolvedLane))
356
349
  },
357
- availableLanesGeneration: availableLanes.generation
350
+ availableLanesGeneration: candidateAvailableLanes.generation
358
351
  }
359
352
  };
360
353
  } }
@@ -257,10 +257,6 @@ async function signEvmFamilyAttempt(deps, args, attempt) {
257
257
  if (preparedEcdsaSigningSession) return preparedEcdsaSigningSession;
258
258
  throw new Error("[SigningEngine][ecdsa] prepared signing session is required");
259
259
  };
260
- const getEcdsaSigningLaneIdentity = () => {
261
- const prepared = getPreparedEcdsaSigningSession();
262
- return prepared.kind === "authorized" ? prepared.signingLane.identity : prepared.identity;
263
- };
264
260
  const getPreparedEcdsaSigningSessionIfEcdsa = () => args.request.senderSignatureAlgorithm === "secp256k1" ? getPreparedEcdsaSigningSession() : void 0;
265
261
  const reResolveSupersededPreparation = async (error) => {
266
262
  if (!isEvmFamilyEcdsaMaterialSupersededError(error)) return null;
@@ -324,7 +320,11 @@ async function signEvmFamilyAttempt(deps, args, attempt) {
324
320
  walletSession: args.walletSession,
325
321
  request: args.request,
326
322
  chainTarget: requestChainTarget,
327
- senderSignatureAlgorithm: args.request.senderSignatureAlgorithm,
323
+ ...args.request.senderSignatureAlgorithm === "secp256k1" ? {
324
+ senderSignatureAlgorithm: args.request.senderSignatureAlgorithm,
325
+ preparedSession: getPreparedEcdsaSigningSession(),
326
+ ...activeWalletAuthorityFlowRuntime ? { activeWalletAuthority: activeWalletAuthorityFlowRuntime } : {}
327
+ } : { senderSignatureAlgorithm: args.request.senderSignatureAlgorithm },
328
328
  ...signingSessionPlan ? { signingSessionPlan } : {},
329
329
  signingOperation: createTransactionSigningOperation(),
330
330
  onSigningOperationTransition: emitEvmFamilySigningOperationTrace,
@@ -332,9 +332,7 @@ async function signEvmFamilyAttempt(deps, args, attempt) {
332
332
  confirmationConfigOverride: args.confirmationConfigOverride,
333
333
  shouldAbort: args.shouldAbort,
334
334
  onEvent: args.onEvent,
335
- onAuthSideEffectStarted: markFreshAuthRetrySideEffect,
336
- getEcdsaSigningLaneIdentity,
337
- ...activeWalletAuthorityFlowRuntime ? { activeWalletAuthority: activeWalletAuthorityFlowRuntime } : {}
335
+ onAuthSideEffectStarted: markFreshAuthRetrySideEffect
338
336
  });
339
337
  return {
340
338
  signingAuthPlan,