@seams/wallet 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1880) hide show
  1. package/README.md +4 -5
  2. package/THIRD_PARTY_NOTICES.md +1 -113
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/SeamsWeb.js +12 -3
  5. package/dist/esm/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +2 -2
  6. package/dist/esm/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +1 -1
  7. package/dist/esm/SeamsWeb/assembly/createBrowserSigningStores.js +1 -1
  8. package/dist/esm/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -2
  9. package/dist/esm/SeamsWeb/operations/auth/login.js +34 -49
  10. package/dist/esm/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.js +64 -0
  11. package/dist/esm/SeamsWeb/operations/auth/walletAuth.js +2 -3
  12. package/dist/esm/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +1 -4
  13. package/dist/esm/SeamsWeb/operations/auth/walletUnlockSubject.js +2 -8
  14. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +1 -1
  15. package/dist/esm/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +5 -9
  16. package/dist/esm/SeamsWeb/operations/authMethods/passkey/addPasskey.js +1 -1
  17. package/dist/esm/SeamsWeb/operations/authMethods/revokeAuthMethod.js +1 -1
  18. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +11 -12
  19. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingResume.js +2 -9
  20. package/dist/esm/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +24 -24
  21. package/dist/esm/SeamsWeb/operations/devices/linkDeviceFlow.js +38 -13
  22. package/dist/esm/SeamsWeb/operations/devices/scanDevice.js +1 -1
  23. package/dist/esm/SeamsWeb/operations/near/signNEP413.js +0 -1
  24. package/dist/esm/SeamsWeb/operations/recovery/syncAccount.js +2 -4
  25. package/dist/esm/SeamsWeb/operations/recovery/walletRecovery.js +1 -2
  26. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCommit.js +4 -5
  27. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +5 -9
  28. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryRotation.js +1 -2
  29. package/dist/esm/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +5 -20
  30. package/dist/esm/SeamsWeb/operations/registration/registration.js +5 -5
  31. package/dist/esm/SeamsWeb/operations/registration/registrationStrictEcdsa.js +1 -1
  32. package/dist/esm/SeamsWeb/operations/registration/registrationTerminalCommit.js +1 -1
  33. package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +2 -6
  34. package/dist/esm/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +4 -1
  35. package/dist/esm/SeamsWeb/publicApi/auth.js +2 -1
  36. package/dist/esm/SeamsWeb/publicApi/near.js +1 -1
  37. package/dist/esm/SeamsWeb/publicApi/tempo.js +6 -0
  38. package/dist/esm/SeamsWeb/publicApi/transactionReview.js +4 -1
  39. package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +28 -19
  40. package/dist/esm/SeamsWeb/walletIframe/client/router.js +1 -2
  41. package/dist/esm/SeamsWeb/walletIframe/client/surface/domain.js +0 -2
  42. package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -4
  43. package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +1 -1
  44. package/dist/esm/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.js +29 -0
  45. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +64 -0
  46. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +194 -385
  47. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +136 -0
  48. package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +6 -26
  49. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +6 -6
  50. package/dist/esm/SeamsWeb/walletIframe/shared/transactionReview.js +11 -1
  51. package/dist/esm/advanced.js +0 -1
  52. package/dist/esm/base-styles.js +2 -2
  53. package/dist/esm/build-paths.js +0 -2
  54. package/dist/esm/core/accountData/near/accountProjection.js +0 -1
  55. package/dist/esm/core/accountData/near/keyMaterial.js +0 -1
  56. package/dist/esm/core/browser/walletIframe/events.js +1 -5
  57. package/dist/esm/core/browser/walletIframe/host-mode.js +0 -10
  58. package/dist/esm/core/config/chains.js +1 -2
  59. package/dist/esm/core/config/configBuilder.js +0 -1
  60. package/dist/esm/core/config/configHelpers.js +0 -1
  61. package/dist/esm/core/indexedDB/accountKeyMaterial.js +0 -1
  62. package/dist/esm/core/indexedDB/index.js +3 -4
  63. package/dist/esm/core/indexedDB/pendingWalletRecoveryCommit.js +6 -14
  64. package/dist/esm/core/indexedDB/pendingWalletRegistrationCommit.js +139 -273
  65. package/dist/esm/core/indexedDB/schemaNames.js +0 -22
  66. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +3 -3
  67. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +3 -3
  68. package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +1 -1
  69. package/dist/esm/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -1
  70. package/dist/esm/core/indexedDB/seamsWalletDB/registrationSetup.js +103 -0
  71. package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -3
  72. package/dist/esm/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -35
  73. package/dist/esm/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +4 -4
  74. package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +37 -19
  75. package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +10 -3
  76. package/dist/esm/core/indexedDB/walletCustodyEd25519MaterialRecord.js +1 -1
  77. package/dist/esm/core/platform/browser/createBrowserPlatformRuntime.js +8 -25
  78. package/dist/esm/core/rpcClients/near/rpcCalls.js +39 -1
  79. package/dist/esm/core/rpcClients/relayer/passkeyCustodyEnvelope.js +3 -13
  80. package/dist/esm/core/rpcClients/relayer/thresholdEcdsa.js +0 -2
  81. package/dist/esm/core/rpcClients/relayer/walletRecoveryPrepare.js +72 -125
  82. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +21 -15
  83. package/dist/esm/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +1 -2
  84. package/dist/esm/core/signingEngine/assembly/createManagers.js +1 -1
  85. package/dist/esm/core/signingEngine/assembly/ports/recovery.js +1 -1
  86. package/dist/esm/core/signingEngine/assembly/ports/shared.js +1 -2
  87. package/dist/esm/core/signingEngine/assembly/warmup.js +1 -5
  88. package/dist/esm/core/signingEngine/chains/evm/display/functionSelectors.js +2 -5
  89. package/dist/esm/core/signingEngine/chains/near/nearSignerWasm.js +2 -33
  90. package/dist/esm/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -1
  91. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportFlow.js +2 -2
  92. package/dist/esm/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +35 -29
  93. package/dist/esm/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +3 -3
  94. package/dist/esm/core/signingEngine/flows/recovery/exportKeypairOperation.js +1 -4
  95. package/dist/esm/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +2 -5
  96. package/dist/esm/core/signingEngine/flows/recovery/stepUpAuthorization.js +1 -1
  97. package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +3 -8
  98. package/dist/esm/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +1 -2
  99. package/dist/esm/core/signingEngine/flows/shared/signingStateMachine.js +2 -5
  100. package/dist/esm/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +2 -2
  101. package/dist/esm/core/signingEngine/flows/signEvmFamily/preparedSigning.js +2 -9
  102. package/dist/esm/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -2
  103. package/dist/esm/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +6 -8
  104. package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +24 -18
  105. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +7 -5
  106. package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +10 -9
  107. package/dist/esm/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +3 -7
  108. package/dist/esm/core/signingEngine/flows/signNear/implicitAccountFunding.js +1 -1
  109. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +33 -42
  110. package/dist/esm/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -2
  111. package/dist/esm/core/signingEngine/flows/signNear/shared/signingMaterials.js +1 -7
  112. package/dist/esm/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +4 -14
  113. package/dist/esm/core/signingEngine/flows/signNear/signDelegate.js +2 -6
  114. package/dist/esm/core/signingEngine/flows/signNear/signNear.js +2 -2
  115. package/dist/esm/core/signingEngine/flows/signNear/signNep413.js +2 -6
  116. package/dist/esm/core/signingEngine/nonce/NonceCoordinator.js +1 -1
  117. package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +1 -1
  118. package/dist/esm/core/signingEngine/nonce/nonceDiagnostics.js +1 -1
  119. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -1
  120. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +2 -1
  121. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -3
  122. package/dist/esm/core/signingEngine/session/SigningSessionCoordinator.js +1 -4
  123. package/dist/esm/core/signingEngine/session/authority/authorityOperationResolver.js +17 -68
  124. package/dist/esm/core/signingEngine/session/availability/availableSigningLanes.js +1 -10
  125. package/dist/esm/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +7 -6
  126. package/dist/esm/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +107 -24
  127. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +1 -1
  128. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -3
  129. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaLogin.js +4 -15
  130. package/dist/esm/core/signingEngine/session/emailOtp/ecdsaRecovery.js +12 -16
  131. package/dist/esm/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -3
  132. package/dist/esm/core/signingEngine/session/emailOtp/exportRecovery.js +0 -2
  133. package/dist/esm/core/signingEngine/session/identity/clientSessionPersistenceState.js +5 -16
  134. package/dist/esm/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -1
  135. package/dist/esm/core/signingEngine/session/identity/exactSigningLaneIdentity.js +1 -1
  136. package/dist/esm/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -2
  137. package/dist/esm/core/signingEngine/session/identity/selectLane.js +7 -21
  138. package/dist/esm/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +3 -9
  139. package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +4 -16
  140. package/dist/esm/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +1 -14
  141. package/dist/esm/core/signingEngine/session/material/ecdsaSigningCapability.js +1 -1
  142. package/dist/esm/core/signingEngine/session/operationState/preparedOperation.js +1 -5
  143. package/dist/esm/core/signingEngine/session/passkey/ecdsaBootstrap.js +3 -6
  144. package/dist/esm/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -1
  145. package/dist/esm/core/signingEngine/session/passkey/ecdsaRecovery.js +1 -4
  146. package/dist/esm/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -1
  147. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +2 -3
  148. package/dist/esm/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +13 -49
  149. package/dist/esm/core/signingEngine/session/persistence/clientSessionPersistence.js +8 -16
  150. package/dist/esm/core/signingEngine/session/persistence/sealedSessionRecords.js +5 -10
  151. package/dist/esm/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -2
  152. package/dist/esm/core/signingEngine/session/routerAbSigningWalletSession.js +2 -8
  153. package/dist/esm/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +2 -2
  154. package/dist/esm/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +1 -1
  155. package/dist/esm/core/signingEngine/session/warmCapabilities/readModel.js +2 -8
  156. package/dist/esm/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +1 -12
  157. package/dist/esm/core/signingEngine/session/warmCapabilities/transitions.js +7 -11
  158. package/dist/esm/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -1
  159. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +6 -30
  160. package/dist/esm/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -3
  161. package/dist/esm/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +1 -5
  162. package/dist/esm/core/signingEngine/threshold/commitQueueShared.js +20 -6
  163. package/dist/esm/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +7 -4
  164. package/dist/esm/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -3
  165. package/dist/esm/core/signingEngine/threshold/ecdsa/bootstrapSession.js +1 -5
  166. package/dist/esm/core/signingEngine/threshold/ecdsa/signingQueue.js +8 -50
  167. package/dist/esm/core/signingEngine/threshold/ed25519/commitQueue.js +7 -43
  168. package/dist/esm/core/signingEngine/threshold/ed25519/walletSession.js +1 -1
  169. package/dist/esm/core/signingEngine/threshold/ed25519/yaoClient.js +1 -35
  170. package/dist/esm/core/signingEngine/threshold/sessionPolicy.js +0 -1
  171. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +1 -4
  172. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +4 -3
  173. package/dist/esm/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -1
  174. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +1 -1
  175. package/dist/esm/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -1
  176. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +25 -16
  177. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +3 -13
  178. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +1 -10
  179. package/dist/esm/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -1
  180. package/dist/esm/core/signingEngine/walletCustody/emailOtpLink.js +10 -13
  181. package/dist/esm/core/signingEngine/walletCustody/openCustodyCache.js +2 -6
  182. package/dist/esm/core/signingEngine/walletCustody/passkeyLink.js +7 -10
  183. package/dist/esm/core/signingEngine/walletCustody/registrationCeremony.js +0 -1
  184. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -1
  185. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -1
  186. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryEd25519.js +1 -1
  187. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -2
  188. package/dist/esm/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -1
  189. package/dist/esm/core/signingEngine/webauthnAuth/walletOriginWebAuthn.js +109 -0
  190. package/dist/esm/core/signingEngine/workerManager/SignerWorkerManager.js +0 -2
  191. package/dist/esm/core/signingEngine/workerManager/deviceLinkingPorts.js +67 -48
  192. package/dist/esm/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -4
  193. package/dist/esm/core/signingEngine/workerManager/validation.js +1 -1
  194. package/dist/esm/core/signingEngine/workerManager/workerTransport.js +4 -47
  195. package/dist/esm/core/signingEngine/workerManager/workerTypes.js +0 -2
  196. package/dist/esm/core/types/accountIds.js +0 -1
  197. package/dist/esm/core/types/sdkSentEvents.js +1 -2
  198. package/dist/esm/core/types/signer-worker.js +1 -36
  199. package/dist/esm/core/walletRuntimePaths/base.js +11 -1
  200. package/dist/esm/plugins/headers.js +0 -1
  201. package/dist/esm/plugins/next.js +0 -1
  202. package/dist/esm/plugins/plugin-utils.js +0 -1
  203. package/dist/esm/plugins/shared-ts/src/utils/normalize.js +1 -1
  204. package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +1 -1
  205. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +3 -3
  206. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +2 -2
  207. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +8 -8
  208. package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
  209. package/dist/esm/react/components/AccountMenuButton/MenuItem.css +17 -0
  210. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +1 -1
  211. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +0 -5
  212. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +8 -0
  213. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +21 -13
  214. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +0 -52
  215. package/dist/esm/react/components/AccountMenuButton/icons/GlobeIcon.js +12 -27
  216. package/dist/esm/react/components/AccountMenuButton/icons/KeyIcon.js +12 -27
  217. package/dist/esm/react/components/AccountMenuButton/icons/LaptopIcon.js +4 -19
  218. package/dist/esm/react/components/AccountMenuButton/icons/LinkIcon.js +4 -19
  219. package/dist/esm/react/components/AccountMenuButton/icons/LockIcon.js +11 -26
  220. package/dist/esm/react/components/AccountMenuButton/icons/MailIcon.js +10 -25
  221. package/dist/esm/react/components/AccountMenuButton/icons/RecoveryCodesIcon.js +16 -31
  222. package/dist/esm/react/components/AccountMenuButton/icons/ScanIcon.js +9 -24
  223. package/dist/esm/react/components/AccountMenuButton/icons/SlidersIcon.js +14 -29
  224. package/dist/esm/react/components/AccountMenuButton/icons/SmartphoneIcon.js +11 -26
  225. package/dist/esm/react/components/AccountMenuButton/icons/TouchIcon.js +1 -1
  226. package/dist/esm/react/components/AccountMenuButton/icons/lucideIcon.js +27 -0
  227. package/dist/esm/react/components/AccountMenuButton/icons/strokeIcon.js +7 -17
  228. package/dist/esm/react/components/AccountMenuButton/index.js +11 -11
  229. package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +1 -1
  230. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +1 -1
  231. package/dist/esm/react/components/QRCodeScanner.css +0 -15
  232. package/dist/esm/react/components/QRCodeScanner.js +2 -2
  233. package/dist/esm/react/components/ShowQRCode.css +0 -14
  234. package/dist/esm/react/components/ShowQRCode.js +4 -4
  235. package/dist/esm/react/components/theme/design-tokens.js +1 -2
  236. package/dist/esm/react/context/index.js +1 -1
  237. package/dist/esm/react/context/reactLoginStateBuilders.js +1 -1
  238. package/dist/esm/react/context/seamsManagerSingleton.js +2 -2
  239. package/dist/esm/react/context/useLoginStateRefresher.js +2 -5
  240. package/dist/esm/react/context/useSeamsContextValue.js +1 -1
  241. package/dist/esm/react/context/useSeamsWithSdkFlow.js +2 -3
  242. package/dist/esm/react/context/useWalletIframeLifecycle.js +1 -15
  243. package/dist/esm/react/hooks/useAccountInput.js +4 -4
  244. package/dist/esm/react/hooks/useNearClient.js +3 -3
  245. package/dist/esm/react/hooks/usePreconnectWalletAssets.js +1 -1
  246. package/dist/esm/react/hooks/useQRCamera.js +2 -2
  247. package/dist/esm/react/hooks/useWallet.js +1 -1
  248. package/dist/esm/react/index.js +10 -10
  249. package/dist/esm/react/styles/styles.css +25 -86
  250. package/dist/esm/react/transactionReview/TransactionReviewHost.js +1 -1
  251. package/dist/esm/react/transactionReview/boundCalls.js +2 -2
  252. package/dist/esm/react/transactionReview/contract.js +1 -1
  253. package/dist/esm/react/transactionReview/controller.js +2 -2
  254. package/dist/esm/react/transactionReview/snapshot.js +2 -2
  255. package/dist/esm/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  256. package/dist/esm/sdk/EvmClient-DoxytQaJ.js +1 -0
  257. package/dist/esm/sdk/NearClient-vJ65Wjrq.js +1 -0
  258. package/dist/esm/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  259. package/dist/esm/sdk/accountIds-C3Ihsd2c.js +1 -0
  260. package/dist/esm/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  261. package/dist/esm/sdk/actions-DZLxCcrU.js +1 -0
  262. package/dist/esm/sdk/adapters-DtAyuoiA.js +2 -0
  263. package/dist/esm/sdk/base-Xtd32asf.js +1 -0
  264. package/dist/esm/sdk/base64-ojm5DKcF.js +1 -0
  265. package/dist/esm/sdk/browser-CsOGMbMy.js +8 -0
  266. package/dist/esm/sdk/bytes-t5S5mkat.js +1 -0
  267. package/dist/esm/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  268. package/dist/esm/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  269. package/dist/esm/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  270. package/dist/esm/sdk/chains-yAls2d9X.js +1 -0
  271. package/dist/esm/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  272. package/dist/esm/sdk/chunk-dVx5-UGu.js +1 -0
  273. package/dist/esm/sdk/configHelpers-CseiVoZD.js +1 -0
  274. package/dist/esm/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  275. package/dist/esm/sdk/defaultConfigs-CWpApkMq.js +1 -0
  276. package/dist/esm/sdk/display-jK7_hYho.js +1 -0
  277. package/dist/esm/sdk/domainIds-GDzjOs6i.js +1 -0
  278. package/dist/esm/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  279. package/dist/esm/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  280. package/dist/esm/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  281. package/dist/esm/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  282. package/dist/esm/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  283. package/dist/esm/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  284. package/dist/esm/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  285. package/dist/esm/sdk/errors-DfbnsXjO.js +1 -0
  286. package/dist/esm/sdk/events-BJyVcnsn.js +1 -0
  287. package/dist/esm/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  288. package/dist/esm/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  289. package/dist/esm/sdk/exactSessionState-CjD8gekO.js +210 -0
  290. package/dist/esm/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  291. package/dist/esm/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  292. package/dist/esm/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  293. package/dist/esm/sdk/helpers-D4QckQhq.js +1 -0
  294. package/dist/esm/sdk/host-BAqOYnju.js +1 -0
  295. package/dist/esm/sdk/intentDigest-CB6zy3lN.js +1 -0
  296. package/dist/esm/sdk/jsonRpc-C85RYR0A.js +1 -0
  297. package/dist/esm/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  298. package/dist/esm/sdk/keccak-zexutGfG.js +1 -0
  299. package/dist/esm/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  300. package/dist/esm/sdk/localOnly-DBQRG6Qh.js +1 -0
  301. package/dist/esm/sdk/messages-Cv2j4SKI.js +1 -0
  302. package/dist/esm/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  303. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  304. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  305. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  306. package/dist/esm/sdk/nearRpcResults--cBcfmp4.js +1 -0
  307. package/dist/esm/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  308. package/dist/esm/sdk/normalization-BGPR6osg.js +1 -0
  309. package/dist/esm/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  310. package/dist/esm/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  311. package/dist/esm/sdk/passkey-custody-LP4UTFbn.js +1 -0
  312. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  313. package/dist/esm/sdk/prfCache-Mbo7_USg.js +1 -0
  314. package/dist/esm/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  315. package/dist/esm/sdk/promptText-s8TQ6ckX.js +1 -0
  316. package/dist/esm/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  317. package/dist/esm/sdk/registration-Btozh7uh.js +1 -0
  318. package/dist/esm/sdk/registration-CSAG_h4Y.js +1 -0
  319. package/dist/esm/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  320. package/dist/esm/sdk/registrationIds-BIel5S0i.js +1 -0
  321. package/dist/esm/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  322. package/dist/esm/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  323. package/dist/esm/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  324. package/dist/esm/sdk/relayerHttp-DaPeS929.js +1 -0
  325. package/dist/esm/sdk/routePlan-B_KJaPtm.js +1 -0
  326. package/dist/esm/sdk/router-Dd3fFHk3.js +1 -0
  327. package/dist/esm/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  328. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  329. package/dist/esm/sdk/runtime-auth-B2M91rSx.js +1 -0
  330. package/dist/esm/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  331. package/dist/esm/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  332. package/dist/esm/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  333. package/dist/esm/sdk/runtime-export-JXYk8sQ-.js +1 -0
  334. package/dist/esm/sdk/runtime-near-BB8AG6dV.js +1 -0
  335. package/dist/esm/sdk/runtime-preferences-DKFZYccW.js +1 -0
  336. package/dist/esm/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  337. package/dist/esm/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  338. package/dist/esm/sdk/runtimeContext-BpObgzbj.js +6 -0
  339. package/dist/esm/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  340. package/dist/esm/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  341. package/dist/esm/sdk/secp256k1-B_6W9QDJ.js +1 -0
  342. package/dist/esm/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  343. package/dist/esm/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  344. package/dist/esm/sdk/shared-j_KsFbCT.js +1 -0
  345. package/dist/esm/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  346. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  347. package/dist/esm/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  348. package/dist/esm/sdk/signNear-mWbTE2Dl.js +1 -0
  349. package/dist/esm/sdk/signatureUses-CQkkUcwT.js +1 -0
  350. package/dist/esm/sdk/signerDomain-BhUTzDmF.js +1 -0
  351. package/dist/esm/sdk/signerLoader-By0IY24G.js +1 -0
  352. package/dist/esm/sdk/signerSlot-BQ1g5JNV.js +1 -0
  353. package/dist/esm/sdk/signingFlow-LUWrZi2d.js +2 -0
  354. package/dist/esm/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  355. package/dist/esm/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  356. package/dist/esm/sdk/trace-M34pNGuF.js +1 -0
  357. package/dist/esm/sdk/transaction-activity-BbDod7ji.js +1 -0
  358. package/dist/esm/sdk/transactionReview-CBE5oH4c.js +1 -0
  359. package/dist/esm/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  360. package/dist/esm/sdk/transactionState-9d7f3xVj.js +1 -0
  361. package/dist/esm/sdk/tx-confirm-ui.js +23 -204
  362. package/dist/esm/sdk/types-M7vxrYtJ.js +1 -0
  363. package/dist/esm/sdk/validation-dC1-_uyG.js +1 -0
  364. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -13
  365. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -6
  366. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -13
  367. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -4
  368. package/dist/esm/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  369. package/dist/esm/sdk/wallet-ui.css +1 -6134
  370. package/dist/esm/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  371. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  372. package/dist/esm/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  373. package/dist/esm/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  374. package/dist/esm/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  375. package/dist/esm/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  376. package/dist/esm/sdk/webauthnP256-qu06GNFm.js +1 -0
  377. package/dist/esm/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  378. package/dist/esm/shared-ts/src/authorization/walletSessionIssuance.js +5 -8
  379. package/dist/esm/shared-ts/src/authorization/walletSignerActivationEquality.js +12 -0
  380. package/dist/esm/shared-ts/src/device-linking/committedSignerPackages.js +2 -5
  381. package/dist/esm/shared-ts/src/device-linking/delegatedActivationPlan.js +1 -5
  382. package/dist/esm/shared-ts/src/device-linking/ed25519ExportRoot.js +11 -15
  383. package/dist/esm/shared-ts/src/device-linking/parsers.js +41 -1
  384. package/dist/esm/shared-ts/src/device-linking/sourceContribution.js +6 -9
  385. package/dist/esm/shared-ts/src/near/actions.js +10 -1
  386. package/dist/esm/shared-ts/src/near/nearClient.js +0 -2
  387. package/dist/esm/shared-ts/src/passkey-custody/primitives.js +5 -1
  388. package/dist/esm/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +1 -1
  389. package/dist/esm/shared-ts/src/signing-lanes/index.js +1 -4
  390. package/dist/esm/shared-ts/src/signing-lanes/ownerContinuity.js +3 -8
  391. package/dist/esm/shared-ts/src/signing-lanes/participantDigest.js +0 -1
  392. package/dist/esm/shared-ts/src/signing-lanes/participants.js +1 -1
  393. package/dist/esm/shared-ts/src/signing-lanes/recordParsers.js +13 -17
  394. package/dist/esm/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -1
  395. package/dist/esm/shared-ts/src/threshold/participants.js +0 -1
  396. package/dist/esm/shared-ts/src/threshold/signingRootScope.js +4 -2
  397. package/dist/esm/shared-ts/src/utils/domainIds.js +1 -7
  398. package/dist/esm/shared-ts/src/utils/ecdsaKeyFactsInventory.js +2 -5
  399. package/dist/esm/shared-ts/src/utils/ecdsaServerTiming.js +0 -1
  400. package/dist/esm/shared-ts/src/utils/encoders.js +1 -1
  401. package/dist/esm/shared-ts/src/utils/errors.js +0 -1
  402. package/dist/esm/shared-ts/src/utils/exactKeys.js +17 -0
  403. package/dist/esm/shared-ts/src/utils/index.js +4 -5
  404. package/dist/esm/shared-ts/src/utils/registrationEstablishedSession.js +1 -1
  405. package/dist/esm/shared-ts/src/utils/registrationIds.js +1 -5
  406. package/dist/esm/shared-ts/src/utils/registrationIntent.js +2 -9
  407. package/dist/esm/shared-ts/src/utils/registrationSetupOperation.js +12 -0
  408. package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +3 -6
  409. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +2 -3
  410. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +1 -1
  411. package/dist/esm/shared-ts/src/utils/thresholdEcdsaChainTarget.js +9 -0
  412. package/dist/esm/shared-ts/src/utils/validation.js +0 -1
  413. package/dist/esm/shared-ts/src/utils/walletAuthAuthority.js +0 -1
  414. package/dist/esm/shared-ts/src/utils/walletCapabilityBindings.js +10 -1
  415. package/dist/esm/shared-ts/src/utils/walletManagementProtocol.js +6 -0
  416. package/dist/esm/shared-ts/src/wallet-recovery/index.js +1 -1
  417. package/dist/esm/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -1
  418. package/dist/esm/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -2
  419. package/dist/esm/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +1 -4
  420. package/dist/esm/theme/base-styles.js +11 -11
  421. package/dist/esm/utils/deviceDetection.js +16 -1
  422. package/dist/esm/utils/menuItemBlink.js +24 -0
  423. package/dist/esm/utils/qrScanner.js +288 -0
  424. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.d.ts +12 -753
  425. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker.js +126 -3701
  426. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  427. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.d.ts +0 -42
  428. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client.js +2 -106
  429. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
  430. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +3 -158
  431. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +2 -452
  432. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  433. package/dist/public/headers.manifest.json +1 -1
  434. package/dist/public/sdk/ConfirmationDrawer-DrsREojk.js +1 -0
  435. package/dist/public/sdk/EvmClient-DoxytQaJ.js +1 -0
  436. package/dist/public/sdk/NearClient-vJ65Wjrq.js +1 -0
  437. package/dist/public/sdk/NonceCoordinator-BBeadCSq.js +1 -0
  438. package/dist/public/sdk/accountIds-C3Ihsd2c.js +1 -0
  439. package/dist/public/sdk/accountLifecycle-EyfYPnuT.js +1 -0
  440. package/dist/public/sdk/actions-DZLxCcrU.js +1 -0
  441. package/dist/public/sdk/adapters-DtAyuoiA.js +2 -0
  442. package/dist/public/sdk/base-Xtd32asf.js +1 -0
  443. package/dist/public/sdk/base64-ojm5DKcF.js +1 -0
  444. package/dist/public/sdk/browser-CsOGMbMy.js +8 -0
  445. package/dist/public/sdk/bytes-t5S5mkat.js +1 -0
  446. package/dist/public/sdk/canonicalPrimitives-MPGET2cl.js +1 -0
  447. package/dist/public/sdk/canonicalSignerErrorCode-C0hh_SVi.js +1 -0
  448. package/dist/public/sdk/capabilityKinds-XaXXiD2B.js +1 -0
  449. package/dist/public/sdk/chains-yAls2d9X.js +1 -0
  450. package/dist/public/sdk/challengeDelivery-cAsaUC6U.js +1 -0
  451. package/dist/public/sdk/chunk-dVx5-UGu.js +1 -0
  452. package/dist/public/sdk/configHelpers-CseiVoZD.js +1 -0
  453. package/dist/public/sdk/csp-stylesheet-B1fAhrGB.js +2 -0
  454. package/dist/public/sdk/defaultConfigs-CWpApkMq.js +1 -0
  455. package/dist/public/sdk/display-jK7_hYho.js +1 -0
  456. package/dist/public/sdk/domainIds-GDzjOs6i.js +1 -0
  457. package/dist/public/sdk/ecdsaCapabilityManifest-CHFu-QrV.js +1 -0
  458. package/dist/public/sdk/ecdsaChainTarget-CRcRR78w.js +1 -0
  459. package/dist/public/sdk/ecdsaPresignLifecycle-CQnCxSlq.js +1 -0
  460. package/dist/public/sdk/ecdsaPresignPoolIdentity-Ci-ovDlv.js +1 -0
  461. package/dist/public/sdk/ecdsaWalletRecords-Cm1DdexN.js +1 -0
  462. package/dist/public/sdk/enrichDisplayModelWithAbi-CR-4ebuU.js +1 -0
  463. package/dist/public/sdk/enrichDisplayModelWithAbi-CwHKFqF4.js +569 -0
  464. package/dist/public/sdk/errors-DfbnsXjO.js +1 -0
  465. package/dist/public/sdk/events-BJyVcnsn.js +1 -0
  466. package/dist/public/sdk/evmCryptoWasm-CwEXiLrC.js +1 -0
  467. package/dist/public/sdk/evmFamilyEcdsaIdentity-Br3iFdQx.js +1 -0
  468. package/dist/public/sdk/exactSessionState-CjD8gekO.js +210 -0
  469. package/dist/public/sdk/exactSigningLaneIdentity-olheZx_n.js +1 -0
  470. package/dist/public/sdk/executeWorkerOperation-CrFf3FkL.js +1 -0
  471. package/dist/public/sdk/export-viewer-host-jo7h_0wl.js +1 -0
  472. package/dist/public/sdk/helpers-D4QckQhq.js +1 -0
  473. package/dist/public/sdk/host-BAqOYnju.js +1 -0
  474. package/dist/public/sdk/intentDigest-CB6zy3lN.js +1 -0
  475. package/dist/public/sdk/jsonRpc-C85RYR0A.js +1 -0
  476. package/dist/public/sdk/jsxRuntime.module-CoHsKD_3.js +1 -0
  477. package/dist/public/sdk/keccak-zexutGfG.js +1 -0
  478. package/dist/public/sdk/keyMaterialBrands-uVZHfAh3.js +1 -0
  479. package/dist/public/sdk/localOnly-DBQRG6Qh.js +1 -0
  480. package/dist/public/sdk/messages-Cv2j4SKI.js +1 -0
  481. package/dist/public/sdk/mountExportPrivateKeySurface-G7Z_9JMQ.js +1 -0
  482. package/dist/public/sdk/mountRecoveryCodeBackupSurface-BBCTaQsu.js +2 -0
  483. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DQIw8ho3.js +1 -0
  484. package/dist/public/sdk/nearEd25519YaoSigningPreparation-Bp_CvWRz.js +1 -0
  485. package/dist/public/sdk/nearRpcResults--cBcfmp4.js +1 -0
  486. package/dist/public/sdk/nonceLaneKeys-BBYi4g51.js +1 -0
  487. package/dist/public/sdk/normalization-BGPR6osg.js +1 -0
  488. package/dist/public/sdk/operationFingerprint-5-wH2Ht8.js +1 -0
  489. package/dist/public/sdk/operationFingerprint-DtQb0pdp.js +1 -0
  490. package/dist/public/sdk/passkey-custody-LP4UTFbn.js +1 -0
  491. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-BNk4ebsY.js +1 -0
  492. package/dist/public/sdk/prfCache-Mbo7_USg.js +1 -0
  493. package/dist/public/sdk/profileAccountProjection-DHCaMtOu.js +1 -0
  494. package/dist/public/sdk/promptText-s8TQ6ckX.js +1 -0
  495. package/dist/public/sdk/recovery-entrypoint-DkT8sFO5.js +1 -0
  496. package/dist/public/sdk/registration-Btozh7uh.js +1 -0
  497. package/dist/public/sdk/registration-CSAG_h4Y.js +1 -0
  498. package/dist/public/sdk/registrationAccounts-DIeEVy6W.js +1 -0
  499. package/dist/public/sdk/registrationIds-BIel5S0i.js +1 -0
  500. package/dist/public/sdk/registrationIntent-DV1GYZ3K.js +1 -0
  501. package/dist/public/sdk/registrationPreparationPreload-vOCqNuG4.js +1 -0
  502. package/dist/public/sdk/registrationSignerPlan-FzD3TwxB.js +1 -0
  503. package/dist/public/sdk/relayerHttp-DaPeS929.js +1 -0
  504. package/dist/public/sdk/routePlan-B_KJaPtm.js +1 -0
  505. package/dist/public/sdk/router-Dd3fFHk3.js +1 -0
  506. package/dist/public/sdk/routerAbNormalSigning-D_fHjq5l.js +1 -0
  507. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  508. package/dist/public/sdk/runtime-auth-B2M91rSx.js +1 -0
  509. package/dist/public/sdk/runtime-device-link-ojjPSRaG.js +1 -0
  510. package/dist/public/sdk/runtime-ecdsa-tempo-CE4JLgmn.js +1 -0
  511. package/dist/public/sdk/runtime-email-otp-DDwtKVAe.js +1 -0
  512. package/dist/public/sdk/runtime-export-JXYk8sQ-.js +1 -0
  513. package/dist/public/sdk/runtime-near-BB8AG6dV.js +1 -0
  514. package/dist/public/sdk/runtime-preferences-DKFZYccW.js +1 -0
  515. package/dist/public/sdk/runtime-recovery-C_XjsDBg.js +1 -0
  516. package/dist/public/sdk/runtime-recovery-codes-CWp839mH.js +1 -0
  517. package/dist/public/sdk/runtimeContext-BpObgzbj.js +6 -0
  518. package/dist/public/sdk/runtimeLoader-DjgBf_yF.js +1 -0
  519. package/dist/public/sdk/sdkSentEvents-_RGAEeld.js +1 -0
  520. package/dist/public/sdk/secp256k1-B_6W9QDJ.js +1 -0
  521. package/dist/public/sdk/secureRandomId-CTdlJ5Mx.js +1 -0
  522. package/dist/public/sdk/sessionPolicy-CNVK7nJ6.js +1 -0
  523. package/dist/public/sdk/shared-j_KsFbCT.js +1 -0
  524. package/dist/public/sdk/signEvmFamily-CcLVBm0f.js +1 -0
  525. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DgTbh6jX.js +1 -0
  526. package/dist/public/sdk/signEvmWithUiConfirm-ChreN7aZ.js +1 -0
  527. package/dist/public/sdk/signNear-mWbTE2Dl.js +1 -0
  528. package/dist/public/sdk/signatureUses-CQkkUcwT.js +1 -0
  529. package/dist/public/sdk/signerDomain-BhUTzDmF.js +1 -0
  530. package/dist/public/sdk/signerLoader-By0IY24G.js +1 -0
  531. package/dist/public/sdk/signerSlot-BQ1g5JNV.js +1 -0
  532. package/dist/public/sdk/signingFlow-LUWrZi2d.js +2 -0
  533. package/dist/public/sdk/signingSessionSeal-Mr2Xp44o.js +1 -0
  534. package/dist/public/sdk/surface-measurement-reporter-OICExWKE.js +1 -0
  535. package/dist/public/sdk/trace-M34pNGuF.js +1 -0
  536. package/dist/public/sdk/transaction-activity-BbDod7ji.js +1 -0
  537. package/dist/public/sdk/transactionReview-CBE5oH4c.js +1 -0
  538. package/dist/public/sdk/transactionReviewAdmission-0ZgWs6q3.js +1 -0
  539. package/dist/public/sdk/transactionState-9d7f3xVj.js +1 -0
  540. package/dist/public/sdk/tx-confirm-ui.js +23 -204
  541. package/dist/public/sdk/types-M7vxrYtJ.js +1 -0
  542. package/dist/public/sdk/validation-dC1-_uyG.js +1 -0
  543. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -13
  544. package/dist/public/sdk/wallet-iframe-host-full.js +1 -6
  545. package/dist/public/sdk/wallet-iframe-host-near.js +1 -13
  546. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -4
  547. package/dist/public/sdk/wallet-recovery-CcDZ1hMH.js +1 -0
  548. package/dist/public/sdk/wallet-ui.css +1 -6134
  549. package/dist/public/sdk/walletAuthority-CoWSeqvQ.js +1 -0
  550. package/dist/public/sdk/walletCustodyEcdsaContinuity-B7xi7nwh.js +1 -0
  551. package/dist/public/sdk/walletIframeIdentity-C0b0XMQF.js +1 -0
  552. package/dist/public/sdk/walletRecoveryCommit-ljxVeo-d.js +1 -0
  553. package/dist/public/sdk/walletRecoveryRotate-HztDcDaY.js +1 -0
  554. package/dist/public/sdk/warmSessionHydration-BPGM0YRU.js +1 -0
  555. package/dist/public/sdk/webauthnP256-qu06GNFm.js +1 -0
  556. package/dist/public/sdk/webauthnPromptCoordinator-DO-qfECu.js +1 -0
  557. package/dist/public/sdk/workers/device-linking-key.worker.js +567 -2131
  558. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +1529 -2683
  559. package/dist/public/sdk/workers/ecdsa-online-client.worker.js +1 -273
  560. package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +59 -346
  561. package/dist/public/sdk/workers/email-otp.worker.js +307 -2185
  562. package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
  563. package/dist/public/sdk/workers/evm-crypto.worker.js +0 -188
  564. package/dist/public/sdk/workers/evm_crypto.wasm +0 -0
  565. package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
  566. package/dist/public/sdk/workers/near-signer.worker.js +16 -718
  567. package/dist/public/sdk/workers/near_signer.wasm +0 -0
  568. package/dist/public/sdk/workers/passkey-confirm.worker.js +0 -134
  569. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +149 -506
  570. package/dist/public/sdk/workers/passkey-mpc-session.worker.js +0 -134
  571. package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  572. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  573. package/dist/public/sdk/workers/shamir3pass.worker.js +0 -134
  574. package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
  575. package/dist/public/sdk/workers/tempo-signer.worker.js +0 -134
  576. package/dist/public/sdk/workers/tempo_signer.wasm +0 -0
  577. package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
  578. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +136 -1636
  579. package/dist/public/sdk/workers/wallet_custody_ceremony.js +0 -14
  580. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  581. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  582. package/dist/public/wallet-assets.manifest.json +234 -258
  583. package/dist/public/wallet-service/index.html +4 -4
  584. package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +0 -4
  585. package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +2 -1
  586. package/dist/types/shared-ts/src/authorization/walletSessionIssuance.d.ts +9 -2
  587. package/dist/types/shared-ts/src/authorization/walletSignerActivationEquality.d.ts +4 -0
  588. package/dist/types/shared-ts/src/device-linking/committedSignerPackages.d.ts +3 -4
  589. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +6 -63
  590. package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +2 -0
  591. package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +5 -12
  592. package/dist/types/shared-ts/src/passkey-custody/primitives.d.ts +9 -0
  593. package/dist/types/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.d.ts +0 -2
  594. package/dist/types/shared-ts/src/signing-lanes/execution.d.ts +11 -12
  595. package/dist/types/shared-ts/src/signing-lanes/ids.d.ts +3 -17
  596. package/dist/types/shared-ts/src/signing-lanes/index.d.ts +0 -4
  597. package/dist/types/shared-ts/src/signing-lanes/ownerContinuity.d.ts +0 -1
  598. package/dist/types/shared-ts/src/signing-lanes/participantDigest.d.ts +0 -18
  599. package/dist/types/shared-ts/src/signing-lanes/participants.d.ts +6 -35
  600. package/dist/types/shared-ts/src/signing-lanes/rotation.d.ts +6 -845
  601. package/dist/types/shared-ts/src/tenant-root/tenantRootIdentifier.d.ts +3 -0
  602. package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -1
  603. package/dist/types/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.d.ts +6 -0
  604. package/dist/types/shared-ts/src/threshold/keyMaterialBrands.d.ts +0 -10
  605. package/dist/types/shared-ts/src/threshold/participants.d.ts +1 -1
  606. package/dist/types/shared-ts/src/threshold/signingRootScope.d.ts +1 -0
  607. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.d.ts +1 -133
  608. package/dist/types/shared-ts/src/utils/addWalletAuthMethod.typecheck.d.ts +4 -18
  609. package/dist/types/shared-ts/src/utils/domainIds.d.ts +0 -12
  610. package/dist/types/shared-ts/src/utils/ecdsaKeyFactsInventory.d.ts +2 -11
  611. package/dist/types/shared-ts/src/utils/eip1559TxWasmJson.d.ts +16 -0
  612. package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +2 -0
  613. package/dist/types/shared-ts/src/utils/errors.d.ts +0 -4
  614. package/dist/types/shared-ts/src/utils/exactKeys.d.ts +11 -0
  615. package/dist/types/shared-ts/src/utils/failure.d.ts +12 -0
  616. package/dist/types/shared-ts/src/utils/jsonRpc.d.ts +3 -4
  617. package/dist/types/shared-ts/src/utils/near.d.ts +0 -20
  618. package/dist/types/shared-ts/src/utils/nearRpcResults.d.ts +1 -0
  619. package/dist/types/shared-ts/src/utils/normalize.d.ts +0 -2
  620. package/dist/types/shared-ts/src/utils/registrationAuthMethodInput.d.ts +3 -8
  621. package/dist/types/shared-ts/src/utils/registrationSetupOperation.d.ts +3 -0
  622. package/dist/types/shared-ts/src/utils/registrationSignerPlan.d.ts +7 -19
  623. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +3 -1
  624. package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +1 -0
  625. package/dist/types/shared-ts/src/utils/routerAbEd25519YaoDigests.d.ts +3 -4
  626. package/dist/types/shared-ts/src/utils/routerAbNormalSigningIdentity.d.ts +30 -8
  627. package/dist/types/shared-ts/src/utils/routerApiKeyAuth.d.ts +2 -0
  628. package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +10 -11
  629. package/dist/types/shared-ts/src/utils/thresholdEcdsaChainTarget.d.ts +25 -0
  630. package/dist/types/shared-ts/src/utils/validation.d.ts +1 -3
  631. package/dist/types/shared-ts/src/utils/variant.d.ts +18 -0
  632. package/dist/types/shared-ts/src/utils/walletAuthMethodRecord.d.ts +3 -6
  633. package/dist/types/shared-ts/src/utils/walletCapabilityBindings.d.ts +0 -1
  634. package/dist/types/shared-ts/src/utils/walletManagementProtocol.d.ts +3 -0
  635. package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +4 -2
  636. package/dist/types/shared-ts/src/utils/wireSchema.d.ts +0 -2
  637. package/dist/types/shared-ts/src/wallet-recovery/backupAcknowledgement.d.ts +0 -1
  638. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeReservation.d.ts +1 -10
  639. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodes.d.ts +1 -3
  640. package/dist/types/shared-ts/src/wallet-recovery/recoveryEnvelopes.d.ts +3 -16
  641. package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +5 -21
  642. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryPreparation.d.ts +15 -0
  643. package/dist/types/shared-ts/src/wallet-recovery/walletRecoveryTarget.d.ts +3 -4
  644. package/dist/types/wallet/build-paths.d.ts +1 -2
  645. package/dist/types/wallet/src/SeamsWeb/SeamsWeb.d.ts +2 -0
  646. package/dist/types/wallet/src/SeamsWeb/operations/auth/scheduleLinkedDevicePresignaturePrefill.d.ts +11 -0
  647. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletAuth.d.ts +2 -1
  648. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.d.ts +1 -1
  649. package/dist/types/wallet/src/SeamsWeb/operations/auth/walletUnlockSubject.d.ts +3 -20
  650. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/challenge.d.ts +0 -4
  651. package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/walletActivation.d.ts +3 -4
  652. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.d.ts +2 -10
  653. package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +0 -1
  654. package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceFlow.d.ts +2 -0
  655. package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +0 -10
  656. package/dist/types/wallet/src/SeamsWeb/operations/session/thresholdEcdsaProvisioning.d.ts +1 -2
  657. package/dist/types/wallet/src/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.d.ts +1 -1
  658. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +7 -16
  659. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +0 -2
  660. package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +1 -1
  661. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/surface/domain.d.ts +0 -8
  662. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.d.ts +1 -2
  663. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +9 -0
  664. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/hostedWalletSeamsSession.d.ts +0 -1
  665. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/restoredSessionPresignaturePrefill.d.ts +2 -1
  666. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +17 -0
  667. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +12 -5
  668. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +15 -0
  669. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/exactSessionReconciliation.d.ts +3 -3
  670. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +5 -15
  671. package/dist/types/wallet/src/advanced.d.ts +1 -1
  672. package/dist/types/wallet/src/core/accountData/near/keyMaterial.d.ts +3 -5
  673. package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +0 -2
  674. package/dist/types/wallet/src/core/indexedDB/index.d.ts +3 -5
  675. package/dist/types/wallet/src/core/indexedDB/passkeyClientDB.types.d.ts +2 -38
  676. package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -4
  677. package/dist/types/wallet/src/core/indexedDB/pendingWalletRegistrationCommit.d.ts +3 -4
  678. package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -22
  679. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.d.ts +7 -12
  680. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +1 -1
  681. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.d.ts +1 -1
  682. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.d.ts +0 -1
  683. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/registrationSetup.d.ts +42 -0
  684. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/signingSessionSeals.d.ts +1 -5
  685. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +8 -7
  686. package/dist/types/wallet/src/core/indexedDB/unifiedIndexedDBManager.d.ts +1 -0
  687. package/dist/types/wallet/src/core/platform/browser/createBrowserPlatformRuntime.d.ts +1 -6
  688. package/dist/types/wallet/src/core/platform/ecdsaRoleLocalRecords.d.ts +7 -51
  689. package/dist/types/wallet/src/core/platform/http.d.ts +3 -5
  690. package/dist/types/wallet/src/core/platform/index.d.ts +4 -4
  691. package/dist/types/wallet/src/core/platform/ports.d.ts +4 -58
  692. package/dist/types/wallet/src/core/platform/runtime.d.ts +0 -2
  693. package/dist/types/wallet/src/core/platform/secretSources.d.ts +0 -29
  694. package/dist/types/wallet/src/core/rpcClients/near/NearClient.d.ts +1 -1
  695. package/dist/types/wallet/src/core/rpcClients/near/NearRpcError.d.ts +1 -2
  696. package/dist/types/wallet/src/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.d.ts +2 -11
  697. package/dist/types/wallet/src/core/rpcClients/relayer/passkeyCustodyEnvelope.d.ts +0 -6
  698. package/dist/types/wallet/src/core/rpcClients/relayer/thresholdEcdsa.d.ts +2 -9
  699. package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryPrepare.d.ts +2 -14
  700. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +2 -19
  701. package/dist/types/wallet/src/core/signingEngine/assembly/ports/shared.d.ts +0 -1
  702. package/dist/types/wallet/src/core/signingEngine/assembly/ports/warmSigning.d.ts +0 -2
  703. package/dist/types/wallet/src/core/signingEngine/assembly/warmup.d.ts +0 -1
  704. package/dist/types/wallet/src/core/signingEngine/chains/near/nearSignerWasm.d.ts +0 -10
  705. package/dist/types/wallet/src/core/signingEngine/chains/near/payloads.d.ts +2 -10
  706. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaDerivationExport.d.ts +3 -4
  707. package/dist/types/wallet/src/core/signingEngine/flows/recovery/ecdsaExportFlow.d.ts +4 -8
  708. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportConfirmation.d.ts +0 -15
  709. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +7 -6
  710. package/dist/types/wallet/src/core/signingEngine/flows/registration/accountLifecycle.d.ts +2 -21
  711. package/dist/types/wallet/src/core/signingEngine/flows/registration/public.d.ts +1 -9
  712. package/dist/types/wallet/src/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.d.ts +0 -2
  713. package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +0 -6
  714. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.d.ts +1 -1
  715. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.d.ts +3 -4
  716. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/nonceResolution.d.ts +3 -4
  717. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.d.ts +7 -18
  718. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.d.ts +1 -0
  719. package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +10 -5
  720. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.d.ts +4 -14
  721. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.d.ts +0 -5
  722. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.d.ts +3 -5
  723. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingMaterials.d.ts +0 -4
  724. package/dist/types/wallet/src/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.d.ts +0 -9
  725. package/dist/types/wallet/src/core/signingEngine/flows/signNear/signNep413.d.ts +3 -7
  726. package/dist/types/wallet/src/core/signingEngine/interfaces/index.d.ts +0 -1
  727. package/dist/types/wallet/src/core/signingEngine/interfaces/near.d.ts +3 -4
  728. package/dist/types/wallet/src/core/signingEngine/interfaces/operationDeps.d.ts +3 -5
  729. package/dist/types/wallet/src/core/signingEngine/interfaces/operationStepUpPreparation.d.ts +3 -5
  730. package/dist/types/wallet/src/core/signingEngine/nonce/NonceCoordinator.d.ts +1 -1
  731. package/dist/types/wallet/src/core/signingEngine/nonce/nearTransactionReadiness.d.ts +3 -5
  732. package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +2 -11
  733. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/clientCeremony.d.ts +5 -22
  734. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.d.ts +3 -14
  735. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.d.ts +0 -3
  736. package/dist/types/wallet/src/core/signingEngine/session/authority/authorityOperationResolver.d.ts +1 -24
  737. package/dist/types/wallet/src/core/signingEngine/session/availability/persistedAvailableSigningLanes.d.ts +1 -1
  738. package/dist/types/wallet/src/core/signingEngine/session/availability/readiness.d.ts +0 -2
  739. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.d.ts +37 -14
  740. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaLogin.d.ts +0 -3
  741. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaPublication.d.ts +3 -5
  742. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ecdsaRecovery.d.ts +0 -5
  743. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/ed25519ExportContext.d.ts +2 -7
  744. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/secretEscrow.d.ts +0 -1
  745. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/walletUnlock.d.ts +6 -15
  746. package/dist/types/wallet/src/core/signingEngine/session/identity/clientSessionPersistenceState.d.ts +0 -6
  747. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.d.ts +0 -3
  748. package/dist/types/wallet/src/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.d.ts +3 -8
  749. package/dist/types/wallet/src/core/signingEngine/session/identity/exactSigningLaneIdentity.d.ts +0 -3
  750. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionCredential.d.ts +3 -7
  751. package/dist/types/wallet/src/core/signingEngine/session/identity/exactWalletSessionReader.d.ts +3 -6
  752. package/dist/types/wallet/src/core/signingEngine/session/identity/laneIdentity.d.ts +5 -14
  753. package/dist/types/wallet/src/core/signingEngine/session/identity/signingLaneAuthBinding.d.ts +3 -5
  754. package/dist/types/wallet/src/core/signingEngine/session/identity/walletUnlockSubject.d.ts +0 -8
  755. package/dist/types/wallet/src/core/signingEngine/session/keyMaterialBrands.d.ts +1 -4
  756. package/dist/types/wallet/src/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.d.ts +5 -10
  757. package/dist/types/wallet/src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.d.ts +4 -7
  758. package/dist/types/wallet/src/core/signingEngine/session/material/capabilityPreparationResult.d.ts +3 -22
  759. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaCapabilityHydration.d.ts +3 -4
  760. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.d.ts +0 -3
  761. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSealedRuntime.d.ts +3 -4
  762. package/dist/types/wallet/src/core/signingEngine/session/material/ecdsaSigningCapability.d.ts +5 -0
  763. package/dist/types/wallet/src/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.d.ts +5 -10
  764. package/dist/types/wallet/src/core/signingEngine/session/operationState/authorizationAdmission.d.ts +4 -9
  765. package/dist/types/wallet/src/core/signingEngine/session/operationState/preparedOperation.d.ts +0 -2
  766. package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +3 -5
  767. package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaBootstrap.d.ts +3 -4
  768. package/dist/types/wallet/src/core/signingEngine/session/passkey/ecdsaSessionProvision.d.ts +3 -4
  769. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +0 -1
  770. package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.d.ts +0 -2
  771. package/dist/types/wallet/src/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.d.ts +7 -25
  772. package/dist/types/wallet/src/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.d.ts +1 -10
  773. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +2 -2
  774. package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionTransportAuth.d.ts +0 -5
  775. package/dist/types/wallet/src/core/signingEngine/session/postconditions/runtimePostconditions.d.ts +0 -2
  776. package/dist/types/wallet/src/core/signingEngine/session/routerAbSigningWalletSession.d.ts +1 -1
  777. package/dist/types/wallet/src/core/signingEngine/session/sealedRecovery/sealedRecovery.types.d.ts +3 -4
  778. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/capabilityReaderCore.d.ts +3 -16
  779. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.d.ts +0 -105
  780. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.d.ts +6 -26
  781. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/persistencePorts.d.ts +3 -4
  782. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +0 -1
  783. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.d.ts +0 -12
  784. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/transitions.d.ts +0 -2
  785. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/types.typecheck.d.ts +1 -10
  786. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmTypes.d.ts +11 -36
  787. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/methodRunners.d.ts +1 -5
  788. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.d.ts +5 -8
  789. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.d.ts +4 -7
  790. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.d.ts +3 -9
  791. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/requireStepUpAuth.d.ts +1 -19
  792. package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +7 -32
  793. package/dist/types/wallet/src/core/signingEngine/threshold/commitQueueShared.d.ts +10 -10
  794. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.d.ts +1 -1
  795. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.d.ts +1 -15
  796. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/activation.d.ts +0 -4
  797. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/bootstrapSession.d.ts +3 -8
  798. package/dist/types/wallet/src/core/signingEngine/threshold/ecdsa/signingQueue.d.ts +1 -7
  799. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/commitQueue.d.ts +1 -6
  800. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/connectSession.d.ts +0 -1
  801. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/walletSession.d.ts +6 -36
  802. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -8
  803. package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.d.ts +3 -4
  804. package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.d.ts +1 -4
  805. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +5 -9
  806. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.d.ts +0 -1
  807. package/dist/types/wallet/src/core/signingEngine/walletCustody/emailOtpLink.d.ts +0 -1
  808. package/dist/types/wallet/src/core/signingEngine/walletCustody/openCustodyCache.d.ts +0 -3
  809. package/dist/types/wallet/src/core/signingEngine/walletCustody/passkeyLink.d.ts +0 -3
  810. package/dist/types/wallet/src/core/signingEngine/walletCustody/registrationCeremony.d.ts +0 -1
  811. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/walletOriginWebAuthn.d.ts +8 -0
  812. package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +0 -2
  813. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +0 -8
  814. package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignLifecycle.d.ts +5 -16
  815. package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
  816. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +9 -109
  817. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/requests.d.ts +0 -5
  818. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +2 -12
  819. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/custodyRestore.d.ts +0 -10
  820. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/otpVerification.d.ts +0 -1
  821. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +0 -2
  822. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +0 -1
  823. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/near-signer.worker.d.ts +3 -31
  824. package/dist/types/wallet/src/core/types/accountIds.d.ts +1 -1
  825. package/dist/types/wallet/src/core/types/index.d.ts +0 -18
  826. package/dist/types/wallet/src/core/types/linkDevice.d.ts +3 -18
  827. package/dist/types/wallet/src/core/types/sdkPublicResults.d.ts +5 -18
  828. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -23
  829. package/dist/types/wallet/src/core/types/seams.d.ts +17 -71
  830. package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +0 -5
  831. package/dist/types/wallet/src/core/types/signer-worker.d.ts +75 -134
  832. package/dist/types/wallet/src/externalEvm/types.d.ts +5 -12
  833. package/dist/types/wallet/src/react/components/AccountMenuButton/Toggle.d.ts +0 -15
  834. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -4
  835. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -4
  836. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -4
  837. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -4
  838. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -4
  839. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -4
  840. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -4
  841. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -4
  842. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -4
  843. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -4
  844. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/lucideIcon.d.ts +5 -0
  845. package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +0 -19
  846. package/dist/types/wallet/src/react/hooks/useAccountInput.d.ts +1 -22
  847. package/dist/types/wallet/src/react/transactionReview/controller.d.ts +3 -10
  848. package/dist/types/wallet/src/utils/menuItemBlink.d.ts +9 -0
  849. package/dist/types/wallet/src/utils/qrScanner.d.ts +1 -21
  850. package/dist/workers/device-linking-key.worker.js +567 -2131
  851. package/dist/workers/ecdsa-derivation-client.worker.js +1529 -2683
  852. package/dist/workers/ecdsa-online-client.worker.js +1 -273
  853. package/dist/workers/ecdsa-presign-client.worker.js +59 -346
  854. package/dist/workers/email-otp.worker.js +307 -2185
  855. package/dist/workers/email_otp_runtime_bg.wasm +0 -0
  856. package/dist/workers/evm-crypto.worker.js +0 -188
  857. package/dist/workers/evm_crypto.wasm +0 -0
  858. package/dist/workers/evm_crypto_bg.wasm +0 -0
  859. package/dist/workers/near-signer.worker.js +16 -718
  860. package/dist/workers/near_signer.wasm +0 -0
  861. package/dist/workers/passkey-confirm.worker.js +0 -134
  862. package/dist/workers/passkey-mpc-export.worker.js +149 -506
  863. package/dist/workers/passkey-mpc-session.worker.js +0 -134
  864. package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  865. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  866. package/dist/workers/shamir3pass.worker.js +0 -134
  867. package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
  868. package/dist/workers/tempo-signer.worker.js +0 -134
  869. package/dist/workers/tempo_signer.wasm +0 -0
  870. package/dist/workers/tempo_signer_bg.wasm +0 -0
  871. package/dist/workers/wallet-custody-ceremony.worker.js +136 -1636
  872. package/dist/workers/wallet_custody_ceremony.js +0 -14
  873. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  874. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  875. package/package.json +1 -14
  876. package/dist/esm/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  877. package/dist/esm/components/AccountMenuButton/AccountsSection.css +0 -81
  878. package/dist/esm/components/AccountMenuButton/ExportKeysSection.css +0 -96
  879. package/dist/esm/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
  880. package/dist/esm/components/AccountMenuButton/LinkedDevicesModal.css +0 -612
  881. package/dist/esm/components/AccountMenuButton/MenuItem.css +0 -181
  882. package/dist/esm/components/AccountMenuButton/ProfileDropdown.css +0 -80
  883. package/dist/esm/components/AccountMenuButton/TransactionSettingsSection.css +0 -107
  884. package/dist/esm/components/AccountMenuButton/UserAccountButton.css +0 -182
  885. package/dist/esm/components/AccountMenuButton/WalletSettingsLayout.css +0 -456
  886. package/dist/esm/components/AccountMenuButton/Web3AuthProfileButton.css +0 -75
  887. package/dist/esm/components/AccountMenuButton/icons/TouchIcon.css +0 -46
  888. package/dist/esm/components/QRCodeScanner.css +0 -502
  889. package/dist/esm/components/ShowQRCode.css +0 -345
  890. package/dist/esm/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.js +0 -239
  891. package/dist/esm/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
  892. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
  893. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
  894. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
  895. package/dist/esm/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  896. package/dist/esm/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  897. package/dist/esm/plugins/shared-ts/src/utils/base58.js +0 -1
  898. package/dist/esm/plugins/shared-ts/src/utils/near.js +0 -1
  899. package/dist/esm/plugins/shared-ts/src/utils/validation.js +0 -2
  900. package/dist/esm/react/SeamsWeb/SeamsWeb.js +0 -1909
  901. package/dist/esm/react/SeamsWeb/assembly/browserSigningSurfaceAssembly.js +0 -817
  902. package/dist/esm/react/SeamsWeb/assembly/browserWorkerWarmupPolicy.js +0 -31
  903. package/dist/esm/react/SeamsWeb/assembly/configureBrowserIndexedDB.js +0 -10
  904. package/dist/esm/react/SeamsWeb/assembly/createBrowserRecoveryPublicDeps.js +0 -95
  905. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningRuntime.js +0 -34
  906. package/dist/esm/react/SeamsWeb/assembly/createBrowserSigningStores.js +0 -39
  907. package/dist/esm/react/SeamsWeb/assembly/createBrowserStepUpRuntime.js +0 -34
  908. package/dist/esm/react/SeamsWeb/assembly/createBrowserWarmSessionPublicDeps.js +0 -31
  909. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeOverlayState.js +0 -9
  910. package/dist/esm/react/SeamsWeb/assembly/createWalletIframeRouter.js +0 -44
  911. package/dist/esm/react/SeamsWeb/assembly/initializeBrowserSigningRuntime.js +0 -19
  912. package/dist/esm/react/SeamsWeb/assembly/runtimeConfig.js +0 -12
  913. package/dist/esm/react/SeamsWeb/operations/auth/login.js +0 -4398
  914. package/dist/esm/react/SeamsWeb/operations/auth/scheduleEcdsaSessionPresignaturePrefill.js +0 -41
  915. package/dist/esm/react/SeamsWeb/operations/auth/walletAuth.js +0 -143
  916. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockEcdsaSubject.js +0 -36
  917. package/dist/esm/react/SeamsWeb/operations/auth/walletUnlockSubject.js +0 -294
  918. package/dist/esm/react/SeamsWeb/operations/authMethods/addAuthMethodSourceClaim.js +0 -72
  919. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/addEmailOtp.js +0 -191
  920. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/challenge.js +0 -247
  921. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.js +0 -572
  922. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/localEmailOtpProjection.js +0 -69
  923. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationAuthority.js +0 -62
  924. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/registrationOffer.js +0 -69
  925. package/dist/esm/react/SeamsWeb/operations/authMethods/emailOtp/walletActivation.js +0 -95
  926. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/addPasskey.js +0 -260
  927. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/ecdsaBootstrap.js +0 -17
  928. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/exactPasskeyAuthority.js +0 -34
  929. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localPasskeyProjection.js +0 -117
  930. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/localUnlock.js +0 -16
  931. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/loginAssertion.js +0 -25
  932. package/dist/esm/react/SeamsWeb/operations/authMethods/passkey/registrationAuthority.js +0 -84
  933. package/dist/esm/react/SeamsWeb/operations/authMethods/revokeAuthMethod.js +0 -205
  934. package/dist/esm/react/SeamsWeb/operations/authMethods/sourcePasskeyProof.js +0 -12
  935. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingAuthorityInstallation.js +0 -444
  936. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingComposition.js +0 -106
  937. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingEd25519ExportRoot.js +0 -194
  938. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingHttpTransport.js +0 -525
  939. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingOwnerTransport.js +0 -135
  940. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingResume.js +0 -219
  941. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetCredential.js +0 -63
  942. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingTargetEd25519ExportRoot.js +0 -61
  943. package/dist/esm/react/SeamsWeb/operations/devices/deviceLinkingWorkerChannels.js +0 -337
  944. package/dist/esm/react/SeamsWeb/operations/devices/linkDevice.js +0 -75
  945. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlow.js +0 -1358
  946. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceFlowSupport.js +0 -143
  947. package/dist/esm/react/SeamsWeb/operations/devices/linkDeviceTargetActivation.js +0 -119
  948. package/dist/esm/react/SeamsWeb/operations/devices/scanDevice.js +0 -384
  949. package/dist/esm/react/SeamsWeb/operations/devices/walletHostComposition.js +0 -130
  950. package/dist/esm/react/SeamsWeb/operations/devices/walletHostOwnerAuthority.js +0 -191
  951. package/dist/esm/react/SeamsWeb/operations/evm/index.js +0 -35
  952. package/dist/esm/react/SeamsWeb/operations/near/actions.js +0 -484
  953. package/dist/esm/react/SeamsWeb/operations/near/commandSubject.js +0 -14
  954. package/dist/esm/react/SeamsWeb/operations/near/delegateAction.js +0 -247
  955. package/dist/esm/react/SeamsWeb/operations/near/index.js +0 -37
  956. package/dist/esm/react/SeamsWeb/operations/near/signNEP413.js +0 -117
  957. package/dist/esm/react/SeamsWeb/operations/near/signingEventHelpers.js +0 -15
  958. package/dist/esm/react/SeamsWeb/operations/recovery/accountSync.js +0 -21
  959. package/dist/esm/react/SeamsWeb/operations/recovery/recoveryWalletBinding.js +0 -43
  960. package/dist/esm/react/SeamsWeb/operations/recovery/syncAccount.js +0 -914
  961. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +0 -100
  962. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryCommit.js +0 -477
  963. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryDurablePayload.js +0 -386
  964. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryJournal.js +0 -118
  965. package/dist/esm/react/SeamsWeb/operations/recovery/walletRecoveryRotation.js +0 -214
  966. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecovery.js +0 -184
  967. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryUnlock.js +0 -247
  968. package/dist/esm/react/SeamsWeb/operations/registration/pendingEcdsaRegistrationRecoveryValidation.js +0 -134
  969. package/dist/esm/react/SeamsWeb/operations/registration/pendingRegistrationRecovery.js +0 -369
  970. package/dist/esm/react/SeamsWeb/operations/registration/registration.js +0 -3818
  971. package/dist/esm/react/SeamsWeb/operations/registration/registrationEd25519Yao.js +0 -166
  972. package/dist/esm/react/SeamsWeb/operations/registration/registrationSignerSet.js +0 -60
  973. package/dist/esm/react/SeamsWeb/operations/registration/registrationStrictEcdsa.js +0 -343
  974. package/dist/esm/react/SeamsWeb/operations/registration/registrationTerminalCommit.js +0 -296
  975. package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +0 -682
  976. package/dist/esm/react/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +0 -40
  977. package/dist/esm/react/SeamsWeb/operations/session/thresholdWarmSessionBootstrap.js +0 -20
  978. package/dist/esm/react/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +0 -565
  979. package/dist/esm/react/SeamsWeb/operations/tempo/feeTokenPreference.js +0 -67
  980. package/dist/esm/react/SeamsWeb/operations/tempo/index.js +0 -39
  981. package/dist/esm/react/SeamsWeb/publicApi/auth.js +0 -23
  982. package/dist/esm/react/SeamsWeb/publicApi/awaitNearReady.js +0 -72
  983. package/dist/esm/react/SeamsWeb/publicApi/capabilitySelection.js +0 -63
  984. package/dist/esm/react/SeamsWeb/publicApi/chainTargets.js +0 -48
  985. package/dist/esm/react/SeamsWeb/publicApi/createPublicApi.js +0 -133
  986. package/dist/esm/react/SeamsWeb/publicApi/currentWallet.js +0 -46
  987. package/dist/esm/react/SeamsWeb/publicApi/devices.js +0 -83
  988. package/dist/esm/react/SeamsWeb/publicApi/evm.js +0 -103
  989. package/dist/esm/react/SeamsWeb/publicApi/keyExport.js +0 -90
  990. package/dist/esm/react/SeamsWeb/publicApi/near.js +0 -449
  991. package/dist/esm/react/SeamsWeb/publicApi/preferences.js +0 -61
  992. package/dist/esm/react/SeamsWeb/publicApi/recovery.js +0 -19
  993. package/dist/esm/react/SeamsWeb/publicApi/tempo.js +0 -238
  994. package/dist/esm/react/SeamsWeb/publicApi/transactionReview.js +0 -12
  995. package/dist/esm/react/SeamsWeb/publicApi/types.js +0 -10
  996. package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +0 -3908
  997. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +0 -530
  998. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-styles.js +0 -417
  999. package/dist/esm/react/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +0 -134
  1000. package/dist/esm/react/SeamsWeb/walletIframe/client/router.js +0 -3368
  1001. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/domain.js +0 -288
  1002. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/geometry.js +0 -128
  1003. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/renderer.js +0 -119
  1004. package/dist/esm/react/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +0 -125
  1005. package/dist/esm/react/SeamsWeb/walletIframe/client/transactionReviewReservation.js +0 -96
  1006. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/IframeTransport.js +0 -252
  1007. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-dom.js +0 -71
  1008. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +0 -211
  1009. package/dist/esm/react/SeamsWeb/walletIframe/client/transport/webauthn-bridge.js +0 -99
  1010. package/dist/esm/react/SeamsWeb/walletIframe/coordinator.js +0 -235
  1011. package/dist/esm/react/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +0 -158
  1012. package/dist/esm/react/SeamsWeb/walletIframe/shared/exactSessionState.js +0 -625
  1013. package/dist/esm/react/SeamsWeb/walletIframe/shared/is-dev-host.js +0 -11
  1014. package/dist/esm/react/SeamsWeb/walletIframe/shared/messages.js +0 -588
  1015. package/dist/esm/react/SeamsWeb/walletIframe/shared/transactionReview.js +0 -83
  1016. package/dist/esm/react/SeamsWeb/walletIframe/shared/unlockOptions.js +0 -54
  1017. package/dist/esm/react/base-styles.js +0 -13
  1018. package/dist/esm/react/build-paths.js +0 -111
  1019. package/dist/esm/react/components/AccountMenuButton/HaloBorder/HaloBorder.css +0 -101
  1020. package/dist/esm/react/config.js +0 -37
  1021. package/dist/esm/react/core/accountData/near/accountProjection.js +0 -119
  1022. package/dist/esm/react/core/accountData/near/accountRefs.js +0 -21
  1023. package/dist/esm/react/core/accountData/near/keyMaterial.js +0 -171
  1024. package/dist/esm/react/core/accountData/near/profileId.js +0 -24
  1025. package/dist/esm/react/core/browser/walletIframe/csp-stylesheet.js +0 -189
  1026. package/dist/esm/react/core/browser/walletIframe/events.js +0 -10
  1027. package/dist/esm/react/core/browser/walletIframe/host-mode.js +0 -19
  1028. package/dist/esm/react/core/browser/walletIframe/hostVariant.js +0 -16
  1029. package/dist/esm/react/core/config/chains.js +0 -90
  1030. package/dist/esm/react/core/config/configBuilder.js +0 -231
  1031. package/dist/esm/react/core/config/configHelpers.js +0 -183
  1032. package/dist/esm/react/core/config/defaultConfigs.js +0 -120
  1033. package/dist/esm/react/core/config/defineConfig.js +0 -48
  1034. package/dist/esm/react/core/config/managedRuntimeScope.js +0 -16
  1035. package/dist/esm/react/core/indexedDB/accountKeyMaterial.js +0 -68
  1036. package/dist/esm/react/core/indexedDB/accountSignerLifecycle.js +0 -143
  1037. package/dist/esm/react/core/indexedDB/index.js +0 -60
  1038. package/dist/esm/react/core/indexedDB/keyMaterialEnvelope.js +0 -69
  1039. package/dist/esm/react/core/indexedDB/lastProfileState.js +0 -22
  1040. package/dist/esm/react/core/indexedDB/linkedAuthoritySignerMaterial.js +0 -291
  1041. package/dist/esm/react/core/indexedDB/nonceLaneCoordinationStore.js +0 -115
  1042. package/dist/esm/react/core/indexedDB/normalization.js +0 -24
  1043. package/dist/esm/react/core/indexedDB/pendingWalletRecoveryCommit.js +0 -482
  1044. package/dist/esm/react/core/indexedDB/pendingWalletRegistrationCommit.js +0 -879
  1045. package/dist/esm/react/core/indexedDB/profileAccountProjection.js +0 -70
  1046. package/dist/esm/react/core/indexedDB/schemaNames.js +0 -845
  1047. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestLookups.js +0 -209
  1048. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.js +0 -848
  1049. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +0 -1215
  1050. package/dist/esm/react/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.js +0 -235
  1051. package/dist/esm/react/core/indexedDB/seamsWalletDB/manager.js +0 -140
  1052. package/dist/esm/react/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.js +0 -145
  1053. package/dist/esm/react/core/indexedDB/seamsWalletDB/repositories.js +0 -4747
  1054. package/dist/esm/react/core/indexedDB/seamsWalletDB/schema.js +0 -23
  1055. package/dist/esm/react/core/indexedDB/seamsWalletDB/signingSessionSeals.js +0 -205
  1056. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletCustodyEcdsaContinuity.js +0 -198
  1057. package/dist/esm/react/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +0 -569
  1058. package/dist/esm/react/core/indexedDB/singletons.js +0 -7
  1059. package/dist/esm/react/core/indexedDB/unifiedIndexedDBManager.js +0 -578
  1060. package/dist/esm/react/core/indexedDB/walletCustodyEd25519MaterialRecord.js +0 -60
  1061. package/dist/esm/react/core/platform/browser/createBrowserPlatformRuntime.js +0 -552
  1062. package/dist/esm/react/core/platform/secretSources.js +0 -111
  1063. package/dist/esm/react/core/platform/signerCoreCommandAdapters.js +0 -122
  1064. package/dist/esm/react/core/rpcClients/evm/EvmClient.js +0 -549
  1065. package/dist/esm/react/core/rpcClients/evm/nonceBackend.js +0 -279
  1066. package/dist/esm/react/core/rpcClients/near/NearClient.js +0 -56
  1067. package/dist/esm/react/core/rpcClients/near/NearRpcError.js +0 -105
  1068. package/dist/esm/react/core/rpcClients/near/rpcCalls.js +0 -376
  1069. package/dist/esm/react/core/rpcClients/relayer/ownerWalletExecutionLanePreflight.js +0 -67
  1070. package/dist/esm/react/core/rpcClients/relayer/passkeyCustodyEnvelope.js +0 -228
  1071. package/dist/esm/react/core/rpcClients/relayer/registrationSignerSetRequest.js +0 -8
  1072. package/dist/esm/react/core/rpcClients/relayer/relayerHttp.js +0 -26
  1073. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigning.js +0 -812
  1074. package/dist/esm/react/core/rpcClients/relayer/routerAbNormalSigningValidation.js +0 -23
  1075. package/dist/esm/react/core/rpcClients/relayer/sealedRefreshCapabilities.js +0 -148
  1076. package/dist/esm/react/core/rpcClients/relayer/thresholdEcdsa.js +0 -237
  1077. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryFinalize.js +0 -174
  1078. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryGoogleEmailOtp.js +0 -161
  1079. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryPrepare.js +0 -295
  1080. package/dist/esm/react/core/rpcClients/relayer/walletRecoveryRotate.js +0 -311
  1081. package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +0 -2349
  1082. package/dist/esm/react/core/rpcClients/relayer/walletRegistrationTerminalResponse.js +0 -719
  1083. package/dist/esm/react/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +0 -214
  1084. package/dist/esm/react/core/runtime/createSigningRuntime.js +0 -100
  1085. package/dist/esm/react/core/signingEngine/assembly/createManagers.js +0 -80
  1086. package/dist/esm/react/core/signingEngine/assembly/createPorts.js +0 -54
  1087. package/dist/esm/react/core/signingEngine/assembly/ports/emailOtp.js +0 -30
  1088. package/dist/esm/react/core/signingEngine/assembly/ports/evmFamily.js +0 -73
  1089. package/dist/esm/react/core/signingEngine/assembly/ports/near.js +0 -21
  1090. package/dist/esm/react/core/signingEngine/assembly/ports/recovery.js +0 -75
  1091. package/dist/esm/react/core/signingEngine/assembly/ports/registration.js +0 -22
  1092. package/dist/esm/react/core/signingEngine/assembly/ports/session.js +0 -25
  1093. package/dist/esm/react/core/signingEngine/assembly/ports/shared.js +0 -40
  1094. package/dist/esm/react/core/signingEngine/assembly/ports/stepUpRuntime.js +0 -67
  1095. package/dist/esm/react/core/signingEngine/assembly/ports/warmSigning.js +0 -92
  1096. package/dist/esm/react/core/signingEngine/assembly/warmup.js +0 -68
  1097. package/dist/esm/react/core/signingEngine/chains/evm/bytes.js +0 -22
  1098. package/dist/esm/react/core/signingEngine/chains/evm/display/calldata.js +0 -25
  1099. package/dist/esm/react/core/signingEngine/chains/evm/display/evmTx.js +0 -119
  1100. package/dist/esm/react/core/signingEngine/chains/evm/display/functionSelectors.js +0 -75
  1101. package/dist/esm/react/core/signingEngine/chains/evm/display/gas.js +0 -19
  1102. package/dist/esm/react/core/signingEngine/chains/evm/display/normalization.js +0 -23
  1103. package/dist/esm/react/core/signingEngine/chains/evm/evmAdapter.js +0 -44
  1104. package/dist/esm/react/core/signingEngine/chains/evm/evmCryptoWasm.js +0 -198
  1105. package/dist/esm/react/core/signingEngine/chains/near/display.js +0 -248
  1106. package/dist/esm/react/core/signingEngine/chains/near/nearSignerWasm.js +0 -170
  1107. package/dist/esm/react/core/signingEngine/chains/near/payloads.js +0 -58
  1108. package/dist/esm/react/core/signingEngine/chains/tempo/display.js +0 -130
  1109. package/dist/esm/react/core/signingEngine/chains/tempo/feeToken.js +0 -187
  1110. package/dist/esm/react/core/signingEngine/chains/tempo/tempoAdapter.js +0 -49
  1111. package/dist/esm/react/core/signingEngine/chains/tempo/tempoSignerWasm.js +0 -90
  1112. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaDerivationExport.js +0 -428
  1113. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportFlow.js +0 -660
  1114. package/dist/esm/react/core/signingEngine/flows/recovery/ecdsaExportMaterial.js +0 -243
  1115. package/dist/esm/react/core/signingEngine/flows/recovery/ed25519YaoExportFlow.js +0 -353
  1116. package/dist/esm/react/core/signingEngine/flows/recovery/exportKeypairOperation.js +0 -216
  1117. package/dist/esm/react/core/signingEngine/flows/recovery/exportLaneSelection.js +0 -283
  1118. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportConfirmation.js +0 -325
  1119. package/dist/esm/react/core/signingEngine/flows/recovery/keyExportFlow.js +0 -81
  1120. package/dist/esm/react/core/signingEngine/flows/recovery/passkeyEd25519YaoRecovery.js +0 -195
  1121. package/dist/esm/react/core/signingEngine/flows/recovery/public.js +0 -26
  1122. package/dist/esm/react/core/signingEngine/flows/recovery/stepUpAuthorization.js +0 -139
  1123. package/dist/esm/react/core/signingEngine/flows/registration/accountLifecycle.js +0 -1098
  1124. package/dist/esm/react/core/signingEngine/flows/registration/nearProvisioningRegistry.js +0 -79
  1125. package/dist/esm/react/core/signingEngine/flows/registration/public.js +0 -85
  1126. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaRegistrationSessions.js +0 -77
  1127. package/dist/esm/react/core/signingEngine/flows/registration/services/ecdsaWalletRecords.js +0 -15
  1128. package/dist/esm/react/core/signingEngine/flows/registration/services/passkeyEd25519YaoAddSigner.js +0 -83
  1129. package/dist/esm/react/core/signingEngine/flows/registration/services/registrationAccounts.js +0 -30
  1130. package/dist/esm/react/core/signingEngine/flows/registration/session.js +0 -24
  1131. package/dist/esm/react/core/signingEngine/flows/shared/signingConfirmation.js +0 -194
  1132. package/dist/esm/react/core/signingEngine/flows/shared/signingStateMachine.js +0 -485
  1133. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/accountAuth.js +0 -12
  1134. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/addresses.js +0 -10
  1135. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/authPlanning.js +0 -139
  1136. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaLanes.js +0 -102
  1137. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/ecdsaSelection.js +0 -233
  1138. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpPublic.js +0 -123
  1139. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.js +0 -227
  1140. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/errors.js +0 -127
  1141. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/events.js +0 -39
  1142. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/evmNonceLifecycle.js +0 -49
  1143. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/executorThresholdState.js +0 -22
  1144. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.js +0 -98
  1145. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.js +0 -76
  1146. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceLifecycleAdapter.js +0 -245
  1147. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/nonceResolution.js +0 -91
  1148. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/operationIds.js +0 -33
  1149. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/preparedSigning.js +0 -383
  1150. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.js +0 -191
  1151. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/requireEvmFamilyStepUpAuth.js +0 -128
  1152. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamily.js +0 -512
  1153. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmFamilyWithUiConfirmForTempo.js +0 -65
  1154. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signEvmWithUiConfirm.js +0 -26
  1155. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signatureUses.js +0 -12
  1156. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signerLoader.js +0 -25
  1157. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/ecdsaDerivationClientSigningMaterialSource.js +0 -76
  1158. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +0 -182
  1159. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +0 -84
  1160. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlow.js +0 -631
  1161. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.js +0 -391
  1162. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/stepUpAuthorization.js +0 -56
  1163. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/tempoNonceLifecycle.js +0 -47
  1164. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +0 -87
  1165. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/transactionExecutor.js +0 -143
  1166. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/types.js +0 -20
  1167. package/dist/esm/react/core/signingEngine/flows/signEvmFamily/webauthnP256KeyRef.js +0 -33
  1168. package/dist/esm/react/core/signingEngine/flows/signNear/implicitAccountFunding.js +0 -202
  1169. package/dist/esm/react/core/signingEngine/flows/signNear/nearSigningFlow.js +0 -56
  1170. package/dist/esm/react/core/signingEngine/flows/signNear/requireNearStepUpAuth.js +0 -102
  1171. package/dist/esm/react/core/signingEngine/flows/signNear/shared/confirmationProgress.js +0 -28
  1172. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoCapabilityResolution.js +0 -101
  1173. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +0 -822
  1174. package/dist/esm/react/core/signingEngine/flows/signNear/shared/implicitAccountFundingPort.js +0 -24
  1175. package/dist/esm/react/core/signingEngine/flows/signNear/shared/operationStepUpPreparation.js +0 -68
  1176. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signatureOnlySigning.js +0 -343
  1177. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingMaterials.js +0 -25
  1178. package/dist/esm/react/core/signingEngine/flows/signNear/shared/signingSessionAuthMode.js +0 -138
  1179. package/dist/esm/react/core/signingEngine/flows/signNear/signDelegate.js +0 -290
  1180. package/dist/esm/react/core/signingEngine/flows/signNear/signNear.js +0 -1238
  1181. package/dist/esm/react/core/signingEngine/flows/signNear/signNep413.js +0 -144
  1182. package/dist/esm/react/core/signingEngine/flows/signNear/signTransactions.js +0 -897
  1183. package/dist/esm/react/core/signingEngine/flows/signNear/signatureUses.js +0 -12
  1184. package/dist/esm/react/core/signingEngine/flows/signNear/stepUpAuthorization.js +0 -42
  1185. package/dist/esm/react/core/signingEngine/interfaces/accountAuthMetadata.js +0 -14
  1186. package/dist/esm/react/core/signingEngine/interfaces/ecdsaChainTarget.js +0 -142
  1187. package/dist/esm/react/core/signingEngine/interfaces/operationStepUpPreparation.js +0 -18
  1188. package/dist/esm/react/core/signingEngine/nonce/NonceCoordinator.js +0 -1026
  1189. package/dist/esm/react/core/signingEngine/nonce/evmNonceLane.js +0 -182
  1190. package/dist/esm/react/core/signingEngine/nonce/nearNonceLane.js +0 -669
  1191. package/dist/esm/react/core/signingEngine/nonce/nearNonceLaneIdentity.js +0 -24
  1192. package/dist/esm/react/core/signingEngine/nonce/nonceCoordinationRecordBoundary.js +0 -216
  1193. package/dist/esm/react/core/signingEngine/nonce/nonceDiagnostics.js +0 -232
  1194. package/dist/esm/react/core/signingEngine/nonce/nonceLaneKeys.js +0 -110
  1195. package/dist/esm/react/core/signingEngine/nonce/nonceLeaseState.js +0 -128
  1196. package/dist/esm/react/core/signingEngine/nonce/nonceTypes.js +0 -59
  1197. package/dist/esm/react/core/signingEngine/nonce/nonceUtils.js +0 -33
  1198. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/httpRequest.js +0 -74
  1199. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/poolFillRoutes.js +0 -217
  1200. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +0 -1216
  1201. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +0 -53
  1202. package/dist/esm/react/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.js +0 -22
  1203. package/dist/esm/react/core/signingEngine/session/SigningSessionCoordinator.js +0 -347
  1204. package/dist/esm/react/core/signingEngine/session/authority/authorityOperationResolver.js +0 -165
  1205. package/dist/esm/react/core/signingEngine/session/availability/availableSigningLanes.js +0 -1073
  1206. package/dist/esm/react/core/signingEngine/session/availability/canonicalLaneInventory.js +0 -127
  1207. package/dist/esm/react/core/signingEngine/session/availability/clientSessionExpiryInvalidator.js +0 -72
  1208. package/dist/esm/react/core/signingEngine/session/availability/persistedAvailableSigningLanes.js +0 -213
  1209. package/dist/esm/react/core/signingEngine/session/availability/readiness.js +0 -464
  1210. package/dist/esm/react/core/signingEngine/session/emailOtp/EmailOtpWalletSessionCoordinator.js +0 -47
  1211. package/dist/esm/react/core/signingEngine/session/emailOtp/challengeDelivery.js +0 -56
  1212. package/dist/esm/react/core/signingEngine/session/emailOtp/coordinatorRuntime.js +0 -131
  1213. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaBootstrapCommit.js +0 -106
  1214. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLifecycleRuntime.js +0 -50
  1215. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaLogin.js +0 -941
  1216. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaPublication.js +0 -414
  1217. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaRecovery.js +0 -268
  1218. package/dist/esm/react/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.js +0 -95
  1219. package/dist/esm/react/core/signingEngine/session/emailOtp/ed25519ExportContext.js +0 -376
  1220. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecovery.js +0 -286
  1221. package/dist/esm/react/core/signingEngine/session/emailOtp/exportRecoveryRuntime.js +0 -50
  1222. package/dist/esm/react/core/signingEngine/session/emailOtp/persistedSnapshot.js +0 -22
  1223. package/dist/esm/react/core/signingEngine/session/emailOtp/publicTypes.js +0 -38
  1224. package/dist/esm/react/core/signingEngine/session/emailOtp/routePlan.js +0 -60
  1225. package/dist/esm/react/core/signingEngine/session/emailOtp/runtimeConfig.js +0 -24
  1226. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRefreshPolicy.js +0 -49
  1227. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRestoreOrchestrator.js +0 -234
  1228. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedRuntimePurpose.js +0 -16
  1229. package/dist/esm/react/core/signingEngine/session/emailOtp/sealedSessionRegistry.js +0 -40
  1230. package/dist/esm/react/core/signingEngine/session/emailOtp/status.js +0 -72
  1231. package/dist/esm/react/core/signingEngine/session/emailOtp/walletUnlock.js +0 -168
  1232. package/dist/esm/react/core/signingEngine/session/emailOtp/warmSessionRuntime.js +0 -70
  1233. package/dist/esm/react/core/signingEngine/session/emailOtp/workerEnrollment.js +0 -159
  1234. package/dist/esm/react/core/signingEngine/session/emailOtp/workerRequests.js +0 -84
  1235. package/dist/esm/react/core/signingEngine/session/emailOtp/zeroize.js +0 -9
  1236. package/dist/esm/react/core/signingEngine/session/identity/clientSessionPersistenceState.js +0 -95
  1237. package/dist/esm/react/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.js +0 -23
  1238. package/dist/esm/react/core/signingEngine/session/identity/evmFamilyEcdsaIdentity.js +0 -265
  1239. package/dist/esm/react/core/signingEngine/session/identity/exactSigningLaneIdentity.js +0 -338
  1240. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionCredential.js +0 -106
  1241. package/dist/esm/react/core/signingEngine/session/identity/exactWalletSessionReader.js +0 -54
  1242. package/dist/esm/react/core/signingEngine/session/identity/laneIdentity.js +0 -168
  1243. package/dist/esm/react/core/signingEngine/session/identity/ownerLaneScope.js +0 -185
  1244. package/dist/esm/react/core/signingEngine/session/identity/selectLane.js +0 -349
  1245. package/dist/esm/react/core/signingEngine/session/identity/signingLaneAuthBinding.js +0 -29
  1246. package/dist/esm/react/core/signingEngine/session/keyMaterialBrands.js +0 -75
  1247. package/dist/esm/react/core/signingEngine/session/lanes/walletExecutionLaneHydration.js +0 -194
  1248. package/dist/esm/react/core/signingEngine/session/lifecycle/canonicalWalletSessionStatus.js +0 -32
  1249. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionFailure.js +0 -69
  1250. package/dist/esm/react/core/signingEngine/session/lifecycle/walletSessionStatus.js +0 -123
  1251. package/dist/esm/react/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.js +0 -171
  1252. package/dist/esm/react/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.js +0 -323
  1253. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityHydration.js +0 -75
  1254. package/dist/esm/react/core/signingEngine/session/material/ecdsaCapabilityManifest.js +0 -510
  1255. package/dist/esm/react/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.js +0 -122
  1256. package/dist/esm/react/core/signingEngine/session/material/ecdsaSealedRuntime.js +0 -197
  1257. package/dist/esm/react/core/signingEngine/session/material/ecdsaSigningCapability.js +0 -231
  1258. package/dist/esm/react/core/signingEngine/session/material/linkedEcdsaHolderRuntime.js +0 -36
  1259. package/dist/esm/react/core/signingEngine/session/material/mpcCapabilityHydration.js +0 -79
  1260. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoMaterialActivation.js +0 -80
  1261. package/dist/esm/react/core/signingEngine/session/material/nearEd25519YaoSigningPreparation.js +0 -122
  1262. package/dist/esm/react/core/signingEngine/session/material/restorableMpcMaterialRef.internal.js +0 -21
  1263. package/dist/esm/react/core/signingEngine/session/material/walletSigningStateFailure.js +0 -84
  1264. package/dist/esm/react/core/signingEngine/session/operationState/authorizationAdmission.js +0 -98
  1265. package/dist/esm/react/core/signingEngine/session/operationState/lanes.js +0 -127
  1266. package/dist/esm/react/core/signingEngine/session/operationState/preparedOperation.js +0 -38
  1267. package/dist/esm/react/core/signingEngine/session/operationState/trace.js +0 -94
  1268. package/dist/esm/react/core/signingEngine/session/operationState/transactionState.js +0 -106
  1269. package/dist/esm/react/core/signingEngine/session/operationState/types.js +0 -88
  1270. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaBootstrap.js +0 -187
  1271. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaKeyFactsInventory.js +0 -206
  1272. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaRecovery.js +0 -87
  1273. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaSessionProvision.js +0 -224
  1274. package/dist/esm/react/core/signingEngine/session/passkey/ecdsaWarmCapabilityBootstrap.js +0 -147
  1275. package/dist/esm/react/core/signingEngine/session/passkey/ed25519Provisioner.js +0 -55
  1276. package/dist/esm/react/core/signingEngine/session/passkey/ed25519SessionProvision.js +0 -229
  1277. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.js +0 -537
  1278. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoRecoveryCapability.js +0 -94
  1279. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoSealedSession.js +0 -57
  1280. package/dist/esm/react/core/signingEngine/session/passkey/ed25519YaoWarmRecovery.js +0 -317
  1281. package/dist/esm/react/core/signingEngine/session/passkey/passkeyCustodySessionCache.js +0 -90
  1282. package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +0 -60
  1283. package/dist/esm/react/core/signingEngine/session/passkey/public.js +0 -15
  1284. package/dist/esm/react/core/signingEngine/session/passkey/unlockEcdsaWarmupPlanner.js +0 -247
  1285. package/dist/esm/react/core/signingEngine/session/passkey/warmSessionHydration.js +0 -9
  1286. package/dist/esm/react/core/signingEngine/session/persistence/clientSessionPersistence.js +0 -143
  1287. package/dist/esm/react/core/signingEngine/session/persistence/durableSealedSessionCommands.js +0 -30
  1288. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaRoleLocalRecords.js +0 -316
  1289. package/dist/esm/react/core/signingEngine/session/persistence/ecdsaSealedRecordKey.js +0 -20
  1290. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionRecords.js +0 -764
  1291. package/dist/esm/react/core/signingEngine/session/persistence/sealedSessionStore.js +0 -518
  1292. package/dist/esm/react/core/signingEngine/session/persistence/walletSessionAuthorizationProjection.js +0 -51
  1293. package/dist/esm/react/core/signingEngine/session/planning/operationFingerprint.js +0 -30
  1294. package/dist/esm/react/core/signingEngine/session/planning/operationIdBinding.js +0 -36
  1295. package/dist/esm/react/core/signingEngine/session/planning/planner.js +0 -98
  1296. package/dist/esm/react/core/signingEngine/session/postconditions/runtimePostconditions.js +0 -165
  1297. package/dist/esm/react/core/signingEngine/session/public.js +0 -44
  1298. package/dist/esm/react/core/signingEngine/session/routerAbSigningWalletSession.js +0 -125
  1299. package/dist/esm/react/core/signingEngine/session/sealedRecovery/exactRecordLookup.js +0 -148
  1300. package/dist/esm/react/core/signingEngine/session/sealedRecovery/materialActivationKey.js +0 -22
  1301. package/dist/esm/react/core/signingEngine/session/sealedRecovery/recoveryRecord.js +0 -248
  1302. package/dist/esm/react/core/signingEngine/session/sealedRecovery/restoreCoordinator.js +0 -229
  1303. package/dist/esm/react/core/signingEngine/session/userPreferences.js +0 -212
  1304. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReader.js +0 -62
  1305. package/dist/esm/react/core/signingEngine/session/warmCapabilities/capabilityReaderCore.js +0 -293
  1306. package/dist/esm/react/core/signingEngine/session/warmCapabilities/clearVolatileWarmSigningMaterial.js +0 -44
  1307. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapPersistence.js +0 -107
  1308. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaBootstrapQueue.js +0 -22
  1309. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefill.js +0 -93
  1310. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaLoginPrefillSigningMaterialSource.js +0 -50
  1311. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.js +0 -9
  1312. package/dist/esm/react/core/signingEngine/session/warmCapabilities/ed25519SealedSessionRuntime.js +0 -251
  1313. package/dist/esm/react/core/signingEngine/session/warmCapabilities/nearEd25519CapabilityRehydration.js +0 -98
  1314. package/dist/esm/react/core/signingEngine/session/warmCapabilities/public.js +0 -31
  1315. package/dist/esm/react/core/signingEngine/session/warmCapabilities/readModel.js +0 -161
  1316. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbEd25519WalletSessionState.js +0 -256
  1317. package/dist/esm/react/core/signingEngine/session/warmCapabilities/routerAbWalletSessionCredential.js +0 -73
  1318. package/dist/esm/react/core/signingEngine/session/warmCapabilities/sealedRefreshParity.js +0 -67
  1319. package/dist/esm/react/core/signingEngine/session/warmCapabilities/statusReader.js +0 -100
  1320. package/dist/esm/react/core/signingEngine/session/warmCapabilities/transitions.js +0 -51
  1321. package/dist/esm/react/core/signingEngine/session/warmCapabilities/types.js +0 -122
  1322. package/dist/esm/react/core/signingEngine/session/warmCapabilities/volatileWarmMaterialCommands.js +0 -45
  1323. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmCommon.js +0 -89
  1324. package/dist/esm/react/core/signingEngine/stepUpConfirmation/channel/confirmTypes.js +0 -12
  1325. package/dist/esm/react/core/signingEngine/stepUpConfirmation/confirmOperation.js +0 -51
  1326. package/dist/esm/react/core/signingEngine/stepUpConfirmation/intentDigestPreparation.js +0 -29
  1327. package/dist/esm/react/core/signingEngine/stepUpConfirmation/methodSelection.js +0 -41
  1328. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/authLane.js +0 -32
  1329. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/exportAuthorization.js +0 -108
  1330. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/promptText.js +0 -8
  1331. package/dist/esm/react/core/signingEngine/stepUpConfirmation/otpPrompt/signingPrompt.js +0 -15
  1332. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/touchIdPrompt.js +0 -295
  1333. package/dist/esm/react/core/signingEngine/stepUpConfirmation/passkeyPrompt/webauthnPromptCoordinator.js +0 -170
  1334. package/dist/esm/react/core/signingEngine/stepUpConfirmation/requireStepUpAuth.js +0 -63
  1335. package/dist/esm/react/core/signingEngine/stepUpConfirmation/types.js +0 -29
  1336. package/dist/esm/react/core/signingEngine/stepUpConfirmation/userConfirmationType.js +0 -15
  1337. package/dist/esm/react/core/signingEngine/threshold/commitQueueShared.js +0 -125
  1338. package/dist/esm/react/core/signingEngine/threshold/crypto/ecdsaDerivationClientWasm.js +0 -616
  1339. package/dist/esm/react/core/signingEngine/threshold/crypto/ed25519YaoLaneWasm.js +0 -70
  1340. package/dist/esm/react/core/signingEngine/threshold/ecdsa/activation.js +0 -267
  1341. package/dist/esm/react/core/signingEngine/threshold/ecdsa/bootstrapSession.js +0 -119
  1342. package/dist/esm/react/core/signingEngine/threshold/ecdsa/operationStepUp.js +0 -110
  1343. package/dist/esm/react/core/signingEngine/threshold/ecdsa/postRegistrationSessionActivation.js +0 -132
  1344. package/dist/esm/react/core/signingEngine/threshold/ecdsa/signingQueue.js +0 -58
  1345. package/dist/esm/react/core/signingEngine/threshold/ed25519/commitQueue.js +0 -52
  1346. package/dist/esm/react/core/signingEngine/threshold/ed25519/connectSession.js +0 -137
  1347. package/dist/esm/react/core/signingEngine/threshold/ed25519/walletSession.js +0 -363
  1348. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoActiveClientRegistry.js +0 -146
  1349. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoClient.js +0 -597
  1350. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPageLifecycleOwner.js +0 -23
  1351. package/dist/esm/react/core/signingEngine/threshold/ed25519/yaoPublicCapabilityReferences.js +0 -295
  1352. package/dist/esm/react/core/signingEngine/threshold/sessionPolicy.js +0 -94
  1353. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcExportManager.js +0 -233
  1354. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +0 -496
  1355. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +0 -745
  1356. package/dist/esm/react/core/signingEngine/uiConfirm/UiConfirmManager.js +0 -600
  1357. package/dist/esm/react/core/signingEngine/uiConfirm/confirmationReadinessRegistry.js +0 -41
  1358. package/dist/esm/react/core/signingEngine/uiConfirm/exportConfirmRequest.js +0 -149
  1359. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/determineConfirmationConfig.js +0 -82
  1360. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flowOrchestrator.js +0 -363
  1361. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.js +0 -337
  1362. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/adapters/request.js +0 -120
  1363. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/localOnly.js +0 -150
  1364. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/registration.js +0 -235
  1365. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/requestRegistrationCredentialConfirmation.js +0 -178
  1366. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/flows/signing.js +0 -684
  1367. package/dist/esm/react/core/signingEngine/uiConfirm/handlers/handlePromptFromWorker.js +0 -90
  1368. package/dist/esm/react/core/signingEngine/uiConfirm/nearFundingNotice.js +0 -50
  1369. package/dist/esm/react/core/signingEngine/uiConfirm/transactionReviewAdmission.js +0 -8
  1370. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance-token-vars.js +0 -31
  1371. package/dist/esm/react/core/signingEngine/uiConfirm/ui/appearance.js +0 -27
  1372. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-surface-resize.js +0 -346
  1373. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirm-ui.js +0 -516
  1374. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-body-model.js +0 -24
  1375. package/dist/esm/react/core/signingEngine/uiConfirm/ui/confirmation-model.js +0 -161
  1376. package/dist/esm/react/core/signingEngine/uiConfirm/ui/drawer-gesture.js +0 -16
  1377. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +0 -155
  1378. package/dist/esm/react/core/signingEngine/uiConfirm/ui/export-viewer-host.js +0 -207
  1379. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +0 -131
  1380. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +0 -29
  1381. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +0 -49
  1382. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +0 -137
  1383. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +0 -294
  1384. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +0 -67
  1385. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.js +0 -41
  1386. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +0 -141
  1387. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +0 -92
  1388. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +0 -318
  1389. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +0 -91
  1390. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js +0 -32
  1391. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.js +0 -63
  1392. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +0 -75
  1393. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +0 -33
  1394. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +0 -518
  1395. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +0 -128
  1396. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.js +0 -22
  1397. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +0 -158
  1398. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +0 -287
  1399. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +0 -311
  1400. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +0 -284
  1401. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/clipboard.js +0 -26
  1402. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-controller.js +0 -80
  1403. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/confirmation-styles.js +0 -20
  1404. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +0 -178
  1405. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +0 -297
  1406. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +0 -86
  1407. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +0 -82
  1408. package/dist/esm/react/core/signingEngine/uiConfirm/ui/seamsWordmarkPaths.js +0 -6
  1409. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +0 -12
  1410. package/dist/esm/react/core/signingEngine/uiConfirm/ui/surface-resize-events.js +0 -18
  1411. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-activity.js +0 -46
  1412. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/abiDecode.js +0 -325
  1413. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/abi/enrichDisplayModelWithAbi.js +0 -77
  1414. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/confirmation-tree.js +0 -27
  1415. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/formatters.js +0 -57
  1416. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.js +0 -12
  1417. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/fallback.js +0 -52
  1418. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.js +0 -12
  1419. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.js +0 -12
  1420. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/renderers/types.js +0 -62
  1421. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +0 -258
  1422. package/dist/esm/react/core/signingEngine/uiConfirm/ui/transaction-receipt.js +0 -50
  1423. package/dist/esm/react/core/signingEngine/uiConfirm/warmSessionUiConfirm.js +0 -65
  1424. package/dist/esm/react/core/signingEngine/walletCustody/activateEd25519Capability.js +0 -123
  1425. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyActiveClientMetadata.js +0 -94
  1426. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +0 -171
  1427. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyStepRunner.js +0 -20
  1428. package/dist/esm/react/core/signingEngine/walletCustody/ed25519ActiveClient.js +0 -100
  1429. package/dist/esm/react/core/signingEngine/walletCustody/ed25519Projection.js +0 -32
  1430. package/dist/esm/react/core/signingEngine/walletCustody/ed25519SeedMaterial.js +0 -92
  1431. package/dist/esm/react/core/signingEngine/walletCustody/emailOtpLink.js +0 -135
  1432. package/dist/esm/react/core/signingEngine/walletCustody/joinCustodyWire.js +0 -64
  1433. package/dist/esm/react/core/signingEngine/walletCustody/openCustodyCache.js +0 -130
  1434. package/dist/esm/react/core/signingEngine/walletCustody/passkeyLink.js +0 -183
  1435. package/dist/esm/react/core/signingEngine/walletCustody/recoveryReplacementEnvelope.js +0 -60
  1436. package/dist/esm/react/core/signingEngine/walletCustody/registrationCeremony.js +0 -461
  1437. package/dist/esm/react/core/signingEngine/walletCustody/unlockedEd25519ExportRootCapability.js +0 -258
  1438. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryCredential.js +0 -24
  1439. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEcdsa.js +0 -76
  1440. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryEd25519.js +0 -129
  1441. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryManifest.js +0 -180
  1442. package/dist/esm/react/core/signingEngine/walletCustody/walletRecoveryRotation.js +0 -103
  1443. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/collectAuthenticationCredentialForChallengeB64u.js +0 -154
  1444. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/credentialExtensions.js +0 -36
  1445. package/dist/esm/react/core/signingEngine/webauthnAuth/credentials/helpers.js +0 -273
  1446. package/dist/esm/react/core/signingEngine/webauthnAuth/device/signerSlot.js +0 -25
  1447. package/dist/esm/react/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.js +0 -171
  1448. package/dist/esm/react/core/signingEngine/workerManager/SignerWorkerManager.js +0 -70
  1449. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingPorts.js +0 -323
  1450. package/dist/esm/react/core/signingEngine/workerManager/deviceLinkingSourceContribution.js +0 -158
  1451. package/dist/esm/react/core/signingEngine/workerManager/ecdsaClientWorkerChannels.js +0 -17
  1452. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignLifecycle.js +0 -6
  1453. package/dist/esm/react/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.js +0 -49
  1454. package/dist/esm/react/core/signingEngine/workerManager/executeWorkerOperation.js +0 -12
  1455. package/dist/esm/react/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.js +0 -32
  1456. package/dist/esm/react/core/signingEngine/workerManager/validation.js +0 -114
  1457. package/dist/esm/react/core/signingEngine/workerManager/workerTransport.js +0 -777
  1458. package/dist/esm/react/core/signingEngine/workerManager/workerTypes.js +0 -109
  1459. package/dist/esm/react/core/types/accountIds.js +0 -26
  1460. package/dist/esm/react/core/types/actionBuilders.js +0 -73
  1461. package/dist/esm/react/core/types/confirmationConfig.js +0 -39
  1462. package/dist/esm/react/core/types/eventLogging.js +0 -28
  1463. package/dist/esm/react/core/types/linkDevice.js +0 -49
  1464. package/dist/esm/react/core/types/sdkSentEvents.js +0 -602
  1465. package/dist/esm/react/core/types/secure-confirm-worker.js +0 -22
  1466. package/dist/esm/react/core/types/signer-worker.js +0 -50
  1467. package/dist/esm/react/core/types/walletIframeIdentity.js +0 -15
  1468. package/dist/esm/react/core/walletRuntimePaths/base.js +0 -60
  1469. package/dist/esm/react/core/walletRuntimePaths/emailOtpWorker.js +0 -12
  1470. package/dist/esm/react/core/walletRuntimePaths/multichainWorkers.js +0 -25
  1471. package/dist/esm/react/core/walletRuntimePaths/walletCustodyCeremonyWorker.js +0 -18
  1472. package/dist/esm/react/core/walletRuntimePaths/workers.js +0 -93
  1473. package/dist/esm/react/externalEvm/boundary.js +0 -309
  1474. package/dist/esm/react/externalEvm/controller.js +0 -440
  1475. package/dist/esm/react/externalEvm/types.js +0 -31
  1476. package/dist/esm/react/node_modules/@noble/hashes/esm/_u64.js +0 -36
  1477. package/dist/esm/react/node_modules/@noble/hashes/esm/sha3.js +0 -197
  1478. package/dist/esm/react/node_modules/@noble/hashes/esm/utils.js +0 -87
  1479. package/dist/esm/react/node_modules/viem/_esm/errors/abi.js +0 -48
  1480. package/dist/esm/react/node_modules/viem/_esm/errors/address.js +0 -14
  1481. package/dist/esm/react/node_modules/viem/_esm/errors/base.js +0 -86
  1482. package/dist/esm/react/node_modules/viem/_esm/errors/data.js +0 -16
  1483. package/dist/esm/react/node_modules/viem/_esm/errors/encoding.js +0 -16
  1484. package/dist/esm/react/node_modules/viem/_esm/errors/typedData.js +0 -28
  1485. package/dist/esm/react/node_modules/viem/_esm/errors/version.js +0 -6
  1486. package/dist/esm/react/node_modules/viem/_esm/utils/abi/encodeAbiParameters.js +0 -243
  1487. package/dist/esm/react/node_modules/viem/_esm/utils/address/getAddress.js +0 -28
  1488. package/dist/esm/react/node_modules/viem/_esm/utils/address/isAddress.js +0 -23
  1489. package/dist/esm/react/node_modules/viem/_esm/utils/data/concat.js +0 -23
  1490. package/dist/esm/react/node_modules/viem/_esm/utils/data/isHex.js +0 -10
  1491. package/dist/esm/react/node_modules/viem/_esm/utils/data/pad.js +0 -40
  1492. package/dist/esm/react/node_modules/viem/_esm/utils/data/size.js +0 -16
  1493. package/dist/esm/react/node_modules/viem/_esm/utils/data/slice.js +0 -59
  1494. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/fromHex.js +0 -13
  1495. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toBytes.js +0 -175
  1496. package/dist/esm/react/node_modules/viem/_esm/utils/encoding/toHex.js +0 -168
  1497. package/dist/esm/react/node_modules/viem/_esm/utils/hash/keccak256.js +0 -15
  1498. package/dist/esm/react/node_modules/viem/_esm/utils/lru.js +0 -38
  1499. package/dist/esm/react/node_modules/viem/_esm/utils/regex.js +0 -7
  1500. package/dist/esm/react/node_modules/viem/_esm/utils/signature/hashTypedData.js +0 -113
  1501. package/dist/esm/react/node_modules/viem/_esm/utils/stringify.js +0 -9
  1502. package/dist/esm/react/node_modules/viem/_esm/utils/typedData.js +0 -80
  1503. package/dist/esm/react/shared-ts/src/authorization/capabilityKinds.js +0 -111
  1504. package/dist/esm/react/shared-ts/src/authorization/delegatedAuthority.js +0 -121
  1505. package/dist/esm/react/shared-ts/src/authorization/index.js +0 -6
  1506. package/dist/esm/react/shared-ts/src/authorization/operationFingerprint.js +0 -57
  1507. package/dist/esm/react/shared-ts/src/authorization/walletAuthority.js +0 -719
  1508. package/dist/esm/react/shared-ts/src/authorization/walletCustodyOperation.js +0 -16
  1509. package/dist/esm/react/shared-ts/src/authorization/walletSessionIssuance.js +0 -118
  1510. package/dist/esm/react/shared-ts/src/device-linking/activeWalletSession.js +0 -104
  1511. package/dist/esm/react/shared-ts/src/device-linking/authorityActivation.js +0 -142
  1512. package/dist/esm/react/shared-ts/src/device-linking/committedSignerPackages.js +0 -273
  1513. package/dist/esm/react/shared-ts/src/device-linking/contracts.js +0 -8
  1514. package/dist/esm/react/shared-ts/src/device-linking/delegatedActivationPlan.js +0 -134
  1515. package/dist/esm/react/shared-ts/src/device-linking/deviceManagement.js +0 -120
  1516. package/dist/esm/react/shared-ts/src/device-linking/digests.js +0 -115
  1517. package/dist/esm/react/shared-ts/src/device-linking/ed25519ExportRoot.js +0 -171
  1518. package/dist/esm/react/shared-ts/src/device-linking/index.js +0 -12
  1519. package/dist/esm/react/shared-ts/src/device-linking/parsers.js +0 -1029
  1520. package/dist/esm/react/shared-ts/src/device-linking/requestProof.js +0 -25
  1521. package/dist/esm/react/shared-ts/src/device-linking/sourceContribution.js +0 -545
  1522. package/dist/esm/react/shared-ts/src/device-linking/walletSessionCredentialDelivery.js +0 -173
  1523. package/dist/esm/react/shared-ts/src/device-linking/wireFields.js +0 -59
  1524. package/dist/esm/react/shared-ts/src/near/actions.js +0 -236
  1525. package/dist/esm/react/shared-ts/src/near/nearClient.js +0 -252
  1526. package/dist/esm/react/shared-ts/src/passkey-custody/ceremonyCommitPayload.js +0 -43
  1527. package/dist/esm/react/shared-ts/src/passkey-custody/custodyEnvelope.js +0 -278
  1528. package/dist/esm/react/shared-ts/src/passkey-custody/custodySecretBinding.js +0 -181
  1529. package/dist/esm/react/shared-ts/src/passkey-custody/index.js +0 -4
  1530. package/dist/esm/react/shared-ts/src/passkey-custody/primitives.js +0 -58
  1531. package/dist/esm/react/shared-ts/src/signing-lanes/evmFamilySigningKeySlotId.js +0 -49
  1532. package/dist/esm/react/shared-ts/src/signing-lanes/index.js +0 -8
  1533. package/dist/esm/react/shared-ts/src/signing-lanes/ownerContinuity.js +0 -66
  1534. package/dist/esm/react/shared-ts/src/signing-lanes/participantDigest.js +0 -2
  1535. package/dist/esm/react/shared-ts/src/signing-lanes/participants.js +0 -256
  1536. package/dist/esm/react/shared-ts/src/signing-lanes/recordParsers.js +0 -483
  1537. package/dist/esm/react/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1538. package/dist/esm/react/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1539. package/dist/esm/react/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1540. package/dist/esm/react/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1541. package/dist/esm/react/shared-ts/src/threshold/ecdsaDerivationRoleLocalBootstrap.js +0 -39
  1542. package/dist/esm/react/shared-ts/src/threshold/ed25519OperationFingerprint.js +0 -222
  1543. package/dist/esm/react/shared-ts/src/threshold/keyMaterialBrands.js +0 -25
  1544. package/dist/esm/react/shared-ts/src/threshold/participants.js +0 -67
  1545. package/dist/esm/react/shared-ts/src/threshold/secp256k1.js +0 -6
  1546. package/dist/esm/react/shared-ts/src/threshold/sessionPolicy.js +0 -8
  1547. package/dist/esm/react/shared-ts/src/threshold/signingRootScope.js +0 -40
  1548. package/dist/esm/react/shared-ts/src/utils/addAuthMethodRegistration.js +0 -103
  1549. package/dist/esm/react/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1550. package/dist/esm/react/shared-ts/src/utils/authenticatorOptions.js +0 -22
  1551. package/dist/esm/react/shared-ts/src/utils/base58.js +0 -28
  1552. package/dist/esm/react/shared-ts/src/utils/base64.js +0 -70
  1553. package/dist/esm/react/shared-ts/src/utils/canonicalPrimitives.js +0 -38
  1554. package/dist/esm/react/shared-ts/src/utils/digestEncoding.js +0 -63
  1555. package/dist/esm/react/shared-ts/src/utils/digests.js +0 -33
  1556. package/dist/esm/react/shared-ts/src/utils/domainIds.js +0 -257
  1557. package/dist/esm/react/shared-ts/src/utils/ecdsaCapabilityActivation.js +0 -67
  1558. package/dist/esm/react/shared-ts/src/utils/ecdsaKeyFactsInventory.js +0 -46
  1559. package/dist/esm/react/shared-ts/src/utils/ecdsaServerTiming.js +0 -39
  1560. package/dist/esm/react/shared-ts/src/utils/emailOtpDomain.js +0 -28
  1561. package/dist/esm/react/shared-ts/src/utils/emailOtpRecoveryKey.js +0 -65
  1562. package/dist/esm/react/shared-ts/src/utils/encoders.js +0 -2
  1563. package/dist/esm/react/shared-ts/src/utils/errors.js +0 -95
  1564. package/dist/esm/react/shared-ts/src/utils/evmRpcResults.js +0 -101
  1565. package/dist/esm/react/shared-ts/src/utils/exactRecord.js +0 -44
  1566. package/dist/esm/react/shared-ts/src/utils/index.js +0 -38
  1567. package/dist/esm/react/shared-ts/src/utils/jsonRpc.js +0 -64
  1568. package/dist/esm/react/shared-ts/src/utils/keccak.js +0 -150
  1569. package/dist/esm/react/shared-ts/src/utils/near.js +0 -205
  1570. package/dist/esm/react/shared-ts/src/utils/nearRpcResults.js +0 -205
  1571. package/dist/esm/react/shared-ts/src/utils/normalize.js +0 -86
  1572. package/dist/esm/react/shared-ts/src/utils/registrationAuthMethodInput.js +0 -84
  1573. package/dist/esm/react/shared-ts/src/utils/registrationEstablishedSession.js +0 -275
  1574. package/dist/esm/react/shared-ts/src/utils/registrationIds.js +0 -226
  1575. package/dist/esm/react/shared-ts/src/utils/registrationIntent.js +0 -396
  1576. package/dist/esm/react/shared-ts/src/utils/registrationSignerPlan.js +0 -442
  1577. package/dist/esm/react/shared-ts/src/utils/routerAbEcdsaDerivation.js +0 -1334
  1578. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +0 -747
  1579. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519YaoDigests.js +0 -76
  1580. package/dist/esm/react/shared-ts/src/utils/routerAbNormalSigningIdentity.js +0 -115
  1581. package/dist/esm/react/shared-ts/src/utils/routerAbPublicKeyset.js +0 -11
  1582. package/dist/esm/react/shared-ts/src/utils/routerAbTraceContext.js +0 -36
  1583. package/dist/esm/react/shared-ts/src/utils/secureRandomId.js +0 -35
  1584. package/dist/esm/react/shared-ts/src/utils/signerDomain.js +0 -37
  1585. package/dist/esm/react/shared-ts/src/utils/signerSlot.js +0 -12
  1586. package/dist/esm/react/shared-ts/src/utils/signingSessionSeal.js +0 -98
  1587. package/dist/esm/react/shared-ts/src/utils/theme.js +0 -8
  1588. package/dist/esm/react/shared-ts/src/utils/thresholdEcdsaKeyHandle.js +0 -28
  1589. package/dist/esm/react/shared-ts/src/utils/validation.js +0 -92
  1590. package/dist/esm/react/shared-ts/src/utils/walletAddSignerActivation.js +0 -32
  1591. package/dist/esm/react/shared-ts/src/utils/walletAuthAuthority.js +0 -224
  1592. package/dist/esm/react/shared-ts/src/utils/walletAuthMethodRecord.js +0 -357
  1593. package/dist/esm/react/shared-ts/src/utils/walletCapabilityBindings.js +0 -277
  1594. package/dist/esm/react/shared-ts/src/utils/walletSessionFailure.js +0 -28
  1595. package/dist/esm/react/shared-ts/src/utils/webauthnDeviceInfo.js +0 -50
  1596. package/dist/esm/react/shared-ts/src/utils/wireSchema.js +0 -66
  1597. package/dist/esm/react/shared-ts/src/wallet-recovery/index.js +0 -10
  1598. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeIssuance.js +0 -35
  1599. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeLocator.js +0 -34
  1600. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodeReservation.js +0 -24
  1601. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryCodes.js +0 -3
  1602. package/dist/esm/react/shared-ts/src/wallet-recovery/recoveryKeyId.js +0 -14
  1603. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryCommittedProjection.js +0 -254
  1604. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEcdsaPossession.js +0 -153
  1605. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryEnvelopeSet.js +0 -84
  1606. package/dist/esm/react/shared-ts/src/wallet-recovery/walletRecoveryRotation.js +0 -64
  1607. package/dist/esm/react/theme/base-styles.js +0 -117
  1608. package/dist/esm/react/theme/palette.js +0 -170
  1609. package/dist/esm/react/utils/deviceDetection.js +0 -95
  1610. package/dist/esm/react/utils/intentDigest.js +0 -77
  1611. package/dist/esm/react/utils/qrScanner.js +0 -297
  1612. package/dist/esm/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1613. package/dist/esm/sdk/EvmClient-f3gUhS2L.js +0 -644
  1614. package/dist/esm/sdk/NearClient-DY4NfHeD.js +0 -402
  1615. package/dist/esm/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1616. package/dist/esm/sdk/accountIds-DhIPGOSN.js +0 -23
  1617. package/dist/esm/sdk/accountLifecycle-BAGG_rbk.js +0 -1341
  1618. package/dist/esm/sdk/actions-CCvThiKe.js +0 -225
  1619. package/dist/esm/sdk/adapters-B4JeK1nJ.js +0 -4864
  1620. package/dist/esm/sdk/base-D1B5mGin.js +0 -64
  1621. package/dist/esm/sdk/base64-Clm8C-e9.js +0 -68
  1622. package/dist/esm/sdk/browser-D6eZGhzE.js +0 -2393
  1623. package/dist/esm/sdk/bytes-qKxKn4gg.js +0 -40
  1624. package/dist/esm/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1625. package/dist/esm/sdk/canonicalSignerErrorCode-CRoJMVpp.js +0 -153
  1626. package/dist/esm/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1627. package/dist/esm/sdk/chains-BMh3btVo.js +0 -124
  1628. package/dist/esm/sdk/challengeDelivery-Dd0586fo.js +0 -74
  1629. package/dist/esm/sdk/chunk-BtrIJ4_z.js +0 -33
  1630. package/dist/esm/sdk/configHelpers-vAQCzUD0.js +0 -179
  1631. package/dist/esm/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1632. package/dist/esm/sdk/defaultConfigs-B3c16M_8.js +0 -355
  1633. package/dist/esm/sdk/display-KdIL0ff7.js +0 -126
  1634. package/dist/esm/sdk/domainIds-lcrFg6Sa.js +0 -338
  1635. package/dist/esm/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
  1636. package/dist/esm/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1637. package/dist/esm/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
  1638. package/dist/esm/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1639. package/dist/esm/sdk/ecdsaWalletRecords-Cz4m6bIz.js +0 -18
  1640. package/dist/esm/sdk/encoders-D8d07vpx.js +0 -0
  1641. package/dist/esm/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1642. package/dist/esm/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1643. package/dist/esm/sdk/errors-93h9uAW9.js +0 -92
  1644. package/dist/esm/sdk/events-DYoBL2HO.js +0 -8
  1645. package/dist/esm/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1646. package/dist/esm/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js +0 -4288
  1647. package/dist/esm/sdk/exactSessionState-CiD5fBEs.js +0 -2612
  1648. package/dist/esm/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
  1649. package/dist/esm/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1650. package/dist/esm/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
  1651. package/dist/esm/sdk/helpers-ZrowMnev.js +0 -302
  1652. package/dist/esm/sdk/host-BWBbCAMu.js +0 -533
  1653. package/dist/esm/sdk/intentDigest-CvOSNlCH.js +0 -75
  1654. package/dist/esm/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1655. package/dist/esm/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1656. package/dist/esm/sdk/keccak-DUL3d8SF.js +0 -148
  1657. package/dist/esm/sdk/keyMaterialBrands-CX41hur6.js +0 -94
  1658. package/dist/esm/sdk/localOnly-Bg8UuLZ5.js +0 -146
  1659. package/dist/esm/sdk/messages-C7Dbx9iN.js +0 -594
  1660. package/dist/esm/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1661. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1662. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DPb0s3hQ.js +0 -4008
  1663. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.js +0 -405
  1664. package/dist/esm/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1665. package/dist/esm/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1666. package/dist/esm/sdk/normalization-CBt413-z.js +0 -22
  1667. package/dist/esm/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1668. package/dist/esm/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1669. package/dist/esm/sdk/passkey-custody-Bk1jAknm.js +0 -487
  1670. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.js +0 -237
  1671. package/dist/esm/sdk/prfCache-wqQSjYLn.js +0 -58
  1672. package/dist/esm/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1673. package/dist/esm/sdk/promptText-CuRa_ivd.js +0 -32
  1674. package/dist/esm/sdk/recovery-entrypoint-DW2tGyMs.js +0 -779
  1675. package/dist/esm/sdk/registration-BZDzDv91.js +0 -14414
  1676. package/dist/esm/sdk/registration-BzVHODuD.js +0 -233
  1677. package/dist/esm/sdk/registrationAccounts-CKku_Sgy.js +0 -33
  1678. package/dist/esm/sdk/registrationIds-DLSdEKSv.js +0 -310
  1679. package/dist/esm/sdk/registrationIntent-D0PxwEY4.js +0 -393
  1680. package/dist/esm/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
  1681. package/dist/esm/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
  1682. package/dist/esm/sdk/relayerHttp-VC8Holz1.js +0 -24
  1683. package/dist/esm/sdk/routePlan-D59x5xzQ.js +0 -83
  1684. package/dist/esm/sdk/router-C5lF_J_u.js +0 -4721
  1685. package/dist/esm/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
  1686. package/dist/esm/sdk/runtime-auth-DFTqwj3u.js +0 -5540
  1687. package/dist/esm/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
  1688. package/dist/esm/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
  1689. package/dist/esm/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
  1690. package/dist/esm/sdk/runtime-export-FZWj0HxJ.js +0 -112
  1691. package/dist/esm/sdk/runtime-near-B9cjurVD.js +0 -278
  1692. package/dist/esm/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
  1693. package/dist/esm/sdk/runtime-recovery-C-vfFKF3.js +0 -45
  1694. package/dist/esm/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
  1695. package/dist/esm/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
  1696. package/dist/esm/sdk/runtimeLoader-hod6T2-m.js +0 -44
  1697. package/dist/esm/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1698. package/dist/esm/sdk/secp256k1-el9aE4Sv.js +0 -2504
  1699. package/dist/esm/sdk/secureRandomId-BORsmdS4.js +0 -33
  1700. package/dist/esm/sdk/sessionPolicy-CHiilOAB.js +0 -453
  1701. package/dist/esm/sdk/shared-DkbeLCI3.js +0 -33
  1702. package/dist/esm/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
  1703. package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
  1704. package/dist/esm/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
  1705. package/dist/esm/sdk/signNear-Bblwn2kT.js +0 -5929
  1706. package/dist/esm/sdk/signatureUses-BkGyYt8F.js +0 -51
  1707. package/dist/esm/sdk/signerDomain-IEAVrOrc.js +0 -59
  1708. package/dist/esm/sdk/signerLoader-D7Aey0FD.js +0 -23
  1709. package/dist/esm/sdk/signerSlot-_ovonwVX.js +0 -10
  1710. package/dist/esm/sdk/signingFlow-rZfPegH9.js +0 -1320
  1711. package/dist/esm/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1712. package/dist/esm/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1713. package/dist/esm/sdk/trace-rHe0wz7q.js +0 -127
  1714. package/dist/esm/sdk/transaction-activity-CSMCveBn.js +0 -218
  1715. package/dist/esm/sdk/transactionReview-DpHLTznU.js +0 -100
  1716. package/dist/esm/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1717. package/dist/esm/sdk/transactionState-DP9O8F6f.js +0 -1885
  1718. package/dist/esm/sdk/types-Dx9fczU7.js +0 -111
  1719. package/dist/esm/sdk/validation-gat4LEKm.js +0 -409
  1720. package/dist/esm/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
  1721. package/dist/esm/sdk/walletAuthority-BQBxgUBn.js +0 -1251
  1722. package/dist/esm/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
  1723. package/dist/esm/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1724. package/dist/esm/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
  1725. package/dist/esm/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1726. package/dist/esm/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1727. package/dist/esm/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1728. package/dist/esm/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1729. package/dist/esm/shared-ts/src/signing-lanes/rotationDigests.js +0 -6
  1730. package/dist/esm/shared-ts/src/signing-lanes/rotationParsers.js +0 -3
  1731. package/dist/esm/shared-ts/src/signing-lanes/rotationProtocolParsers.js +0 -8
  1732. package/dist/esm/shared-ts/src/signing-lanes/rotationWireFields.js +0 -3
  1733. package/dist/esm/shared-ts/src/utils/addWalletAuthMethod.js +0 -1
  1734. package/dist/esm/styles.css +0 -43
  1735. package/dist/public/sdk/ConfirmationDrawer-MgFTBwwK.js +0 -425
  1736. package/dist/public/sdk/EvmClient-f3gUhS2L.js +0 -644
  1737. package/dist/public/sdk/NearClient-DY4NfHeD.js +0 -402
  1738. package/dist/public/sdk/NonceCoordinator-4XWPhYww.js +0 -2253
  1739. package/dist/public/sdk/accountIds-DhIPGOSN.js +0 -23
  1740. package/dist/public/sdk/accountLifecycle-BAGG_rbk.js +0 -1341
  1741. package/dist/public/sdk/actions-CCvThiKe.js +0 -225
  1742. package/dist/public/sdk/adapters-B4JeK1nJ.js +0 -4864
  1743. package/dist/public/sdk/base-D1B5mGin.js +0 -64
  1744. package/dist/public/sdk/base64-Clm8C-e9.js +0 -68
  1745. package/dist/public/sdk/browser-D6eZGhzE.js +0 -2393
  1746. package/dist/public/sdk/bytes-qKxKn4gg.js +0 -40
  1747. package/dist/public/sdk/canonicalPrimitives-BTHWz80v.js +0 -36
  1748. package/dist/public/sdk/canonicalSignerErrorCode-CRoJMVpp.js +0 -153
  1749. package/dist/public/sdk/capabilityKinds-hvYqa6S_.js +0 -109
  1750. package/dist/public/sdk/chains-BMh3btVo.js +0 -124
  1751. package/dist/public/sdk/challengeDelivery-Dd0586fo.js +0 -74
  1752. package/dist/public/sdk/chunk-BtrIJ4_z.js +0 -33
  1753. package/dist/public/sdk/configHelpers-vAQCzUD0.js +0 -179
  1754. package/dist/public/sdk/csp-stylesheet-btENhsNp.js +0 -215
  1755. package/dist/public/sdk/defaultConfigs-B3c16M_8.js +0 -355
  1756. package/dist/public/sdk/display-KdIL0ff7.js +0 -126
  1757. package/dist/public/sdk/domainIds-lcrFg6Sa.js +0 -338
  1758. package/dist/public/sdk/ecdsaCapabilityManifest-kzO_fW09.js +0 -817
  1759. package/dist/public/sdk/ecdsaChainTarget-Bl-JWyuw.js +0 -121
  1760. package/dist/public/sdk/ecdsaPresignLifecycle-BFOTNYCK.js +0 -1983
  1761. package/dist/public/sdk/ecdsaPresignPoolIdentity-BjxZVIqn.js +0 -47
  1762. package/dist/public/sdk/ecdsaWalletRecords-Cz4m6bIz.js +0 -18
  1763. package/dist/public/sdk/encoders-D8d07vpx.js +0 -0
  1764. package/dist/public/sdk/enrichDisplayModelWithAbi-CWggsykc.js +0 -395
  1765. package/dist/public/sdk/enrichDisplayModelWithAbi-SDRwTd_M.js +0 -579
  1766. package/dist/public/sdk/errors-93h9uAW9.js +0 -92
  1767. package/dist/public/sdk/events-DYoBL2HO.js +0 -8
  1768. package/dist/public/sdk/evmCryptoWasm-DWklhEEb.js +0 -196
  1769. package/dist/public/sdk/evmFamilyEcdsaIdentity-Co5XDcEA.js +0 -4288
  1770. package/dist/public/sdk/exactSessionState-CiD5fBEs.js +0 -2612
  1771. package/dist/public/sdk/exactSigningLaneIdentity-DQeqPMST.js +0 -335
  1772. package/dist/public/sdk/executeWorkerOperation-Cl9whMK7.js +0 -10
  1773. package/dist/public/sdk/export-viewer-host-ZqA2Yz3H.js +0 -204
  1774. package/dist/public/sdk/helpers-ZrowMnev.js +0 -302
  1775. package/dist/public/sdk/host-BWBbCAMu.js +0 -533
  1776. package/dist/public/sdk/intentDigest-CvOSNlCH.js +0 -75
  1777. package/dist/public/sdk/jsonRpc-VVkaQkFD.js +0 -62
  1778. package/dist/public/sdk/jsxRuntime.module-CuH5ZEIA.js +0 -298
  1779. package/dist/public/sdk/keccak-DUL3d8SF.js +0 -148
  1780. package/dist/public/sdk/keyMaterialBrands-CX41hur6.js +0 -94
  1781. package/dist/public/sdk/localOnly-Bg8UuLZ5.js +0 -146
  1782. package/dist/public/sdk/messages-C7Dbx9iN.js +0 -594
  1783. package/dist/public/sdk/mountExportPrivateKeySurface-DgX-IBG_.js +0 -542
  1784. package/dist/public/sdk/mountRecoveryCodeBackupSurface-DXrExiJ7.js +0 -590
  1785. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DPb0s3hQ.js +0 -4008
  1786. package/dist/public/sdk/nearEd25519YaoSigningPreparation-BeD-SmbK.js +0 -405
  1787. package/dist/public/sdk/nearRpcResults-DoUgDATm.js +0 -216
  1788. package/dist/public/sdk/nonceLaneKeys-C3c9lG6u.js +0 -164
  1789. package/dist/public/sdk/normalization-CBt413-z.js +0 -22
  1790. package/dist/public/sdk/operationFingerprint-C8Trar4R.js +0 -929
  1791. package/dist/public/sdk/operationFingerprint-CGZui5dR.js +0 -55
  1792. package/dist/public/sdk/passkey-custody-Bk1jAknm.js +0 -487
  1793. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-DLzBb3WQ.js +0 -237
  1794. package/dist/public/sdk/prfCache-wqQSjYLn.js +0 -58
  1795. package/dist/public/sdk/profileAccountProjection-uZVJuBvS.js +0 -86
  1796. package/dist/public/sdk/promptText-CuRa_ivd.js +0 -32
  1797. package/dist/public/sdk/recovery-entrypoint-DW2tGyMs.js +0 -779
  1798. package/dist/public/sdk/registration-BZDzDv91.js +0 -14414
  1799. package/dist/public/sdk/registration-BzVHODuD.js +0 -233
  1800. package/dist/public/sdk/registrationAccounts-CKku_Sgy.js +0 -33
  1801. package/dist/public/sdk/registrationIds-DLSdEKSv.js +0 -310
  1802. package/dist/public/sdk/registrationIntent-D0PxwEY4.js +0 -393
  1803. package/dist/public/sdk/registrationPreparationPreload-CIAuRlxI.js +0 -13
  1804. package/dist/public/sdk/registrationSignerPlan-CAikVZZQ.js +0 -440
  1805. package/dist/public/sdk/relayerHttp-VC8Holz1.js +0 -24
  1806. package/dist/public/sdk/routePlan-D59x5xzQ.js +0 -83
  1807. package/dist/public/sdk/router-C5lF_J_u.js +0 -4721
  1808. package/dist/public/sdk/routerAbNormalSigning-fhvpDtmY.js +0 -992
  1809. package/dist/public/sdk/runtime-auth-DFTqwj3u.js +0 -5540
  1810. package/dist/public/sdk/runtime-device-link-C1Oub8Lw.js +0 -259
  1811. package/dist/public/sdk/runtime-ecdsa-tempo-rkWwolw1.js +0 -177
  1812. package/dist/public/sdk/runtime-email-otp-vuUG5LYl.js +0 -320
  1813. package/dist/public/sdk/runtime-export-FZWj0HxJ.js +0 -112
  1814. package/dist/public/sdk/runtime-near-B9cjurVD.js +0 -278
  1815. package/dist/public/sdk/runtime-preferences-Dq0bfyS5.js +0 -67
  1816. package/dist/public/sdk/runtime-recovery-C-vfFKF3.js +0 -45
  1817. package/dist/public/sdk/runtime-recovery-codes-bTm3fLV4.js +0 -95
  1818. package/dist/public/sdk/runtimeContext-iLXnxVlZ.js +0 -44443
  1819. package/dist/public/sdk/runtimeLoader-hod6T2-m.js +0 -44
  1820. package/dist/public/sdk/sdkSentEvents-MqDkbQg1.js +0 -599
  1821. package/dist/public/sdk/secp256k1-el9aE4Sv.js +0 -2504
  1822. package/dist/public/sdk/secureRandomId-BORsmdS4.js +0 -33
  1823. package/dist/public/sdk/sessionPolicy-CHiilOAB.js +0 -453
  1824. package/dist/public/sdk/shared-DkbeLCI3.js +0 -33
  1825. package/dist/public/sdk/signEvmFamily-e4IWWsZs.js +0 -4666
  1826. package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-Cu9qdk8M.js +0 -226
  1827. package/dist/public/sdk/signEvmWithUiConfirm-C61TCBnh.js +0 -27
  1828. package/dist/public/sdk/signNear-Bblwn2kT.js +0 -5929
  1829. package/dist/public/sdk/signatureUses-BkGyYt8F.js +0 -51
  1830. package/dist/public/sdk/signerDomain-IEAVrOrc.js +0 -59
  1831. package/dist/public/sdk/signerLoader-D7Aey0FD.js +0 -23
  1832. package/dist/public/sdk/signerSlot-_ovonwVX.js +0 -10
  1833. package/dist/public/sdk/signingFlow-rZfPegH9.js +0 -1320
  1834. package/dist/public/sdk/signingSessionSeal-Cu-GHm6y.js +0 -96
  1835. package/dist/public/sdk/surface-measurement-reporter-CSTyRsMa.js +0 -156
  1836. package/dist/public/sdk/trace-rHe0wz7q.js +0 -127
  1837. package/dist/public/sdk/transaction-activity-CSMCveBn.js +0 -218
  1838. package/dist/public/sdk/transactionReview-DpHLTznU.js +0 -100
  1839. package/dist/public/sdk/transactionReviewAdmission-BCPvl8OZ.js +0 -172
  1840. package/dist/public/sdk/transactionState-DP9O8F6f.js +0 -1885
  1841. package/dist/public/sdk/types-Dx9fczU7.js +0 -111
  1842. package/dist/public/sdk/validation-gat4LEKm.js +0 -409
  1843. package/dist/public/sdk/wallet-recovery-Bz9qKgaL.js +0 -1905
  1844. package/dist/public/sdk/walletAuthority-BQBxgUBn.js +0 -1251
  1845. package/dist/public/sdk/walletCustodyEcdsaContinuity-Hn4ORIbf.js +0 -11130
  1846. package/dist/public/sdk/walletIframeIdentity-DB6Z2EC9.js +0 -13
  1847. package/dist/public/sdk/walletRecoveryCommit-sjGNTHUj.js +0 -2159
  1848. package/dist/public/sdk/walletRecoveryRotate-BgLlW5ih.js +0 -309
  1849. package/dist/public/sdk/warmSessionHydration-Os8niEm7.js +0 -7
  1850. package/dist/public/sdk/webauthnP256-DC5EIbKN.js +0 -82
  1851. package/dist/public/sdk/webauthnPromptCoordinator-L96oVvLz.js +0 -168
  1852. package/dist/types/shared-ts/src/signing-lanes/participantDigest.typecheck.d.ts +0 -2
  1853. package/dist/types/shared-ts/src/signing-lanes/rotation.typecheck.d.ts +0 -2
  1854. package/dist/types/shared-ts/src/signing-lanes/rotationDigests.d.ts +0 -13
  1855. package/dist/types/shared-ts/src/signing-lanes/rotationLifecycle.d.ts +0 -78
  1856. package/dist/types/shared-ts/src/signing-lanes/rotationParsers.d.ts +0 -27
  1857. package/dist/types/shared-ts/src/signing-lanes/rotationProtocolParsers.d.ts +0 -6
  1858. package/dist/types/shared-ts/src/signing-lanes/rotationWireFields.d.ts +0 -20
  1859. package/dist/types/shared-ts/src/wallet-recovery/recoveryCodeAttempt.d.ts +0 -59
  1860. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/transport/webauthn-bridge.d.ts +0 -3
  1861. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/laneHolderMaterialStore.d.ts +0 -52
  1862. package/dist/types/wallet/src/core/signingEngine/interfaces/nearKeyOps.d.ts +0 -15
  1863. package/dist/types/wallet/src/core/signingEngine/session/emailOtp/coordinatorRuntime.d.ts +0 -43
  1864. package/dist/types/wallet/src/core/signingEngine/session/holderShares/forbiddenHolderSharePayloads.typecheck.d.ts +0 -2
  1865. package/dist/types/wallet/src/core/signingEngine/session/holderShares/holderShareHandle.d.ts +0 -6
  1866. package/dist/types/wallet/src/core/signingEngine/session/identity/emailOtpEcdsaDerivationIdentity.typecheck.d.ts +0 -2
  1867. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/activationCoordinator.d.ts +0 -37
  1868. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/laneMaterialInvalidation.d.ts +0 -23
  1869. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/operations.typecheck.d.ts +0 -2
  1870. package/dist/types/wallet/src/core/signingEngine/session/lanes/operations/recipientPreparation.d.ts +0 -55
  1871. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/ecdsaProvisionPlan.typecheck.d.ts +0 -6
  1872. package/dist/types/wallet/src/core/signingEngine/threshold/crypto/ecdsaLaneWasm.d.ts +0 -4
  1873. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/evm.d.ts +0 -5
  1874. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/near.d.ts +0 -5
  1875. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-display/renderers/tempo.d.ts +0 -5
  1876. package/dist/types/wallet/src/core/signingEngine/webauthnAuth/fallbacks/safari-fallbacks.d.ts +0 -44
  1877. package/dist/types/wallet/src/core/signingEngine/workerManager/nearKeyOps/createNearKeyOps.d.ts +0 -4
  1878. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/ecdsaLaneHolderWorkerRuntime.d.ts +0 -20
  1879. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/passkeyCustodyLink.d.ts +0 -18
  1880. /package/dist/esm/{react/SeamsWeb → SeamsWeb}/assembly/preconnectWalletAssets.js +0 -0
@@ -1,4666 +0,0 @@
1
- import { n as __exportAll } from "./chunk-BtrIJ4_z.js";
2
- import { h as parseMpcMaterialActivationRef, r as mpcMaterialActivationRefsEqual } from "./domainIds-lcrFg6Sa.js";
3
- import { r as reviewAdmissionForBinding } from "./transactionReviewAdmission-BCPvl8OZ.js";
4
- import { r as base64UrlDecode } from "./base64-Clm8C-e9.js";
5
- import { n as secureRandomBase64Url } from "./secureRandomId-BORsmdS4.js";
6
- import { h as normalizeRuntimePolicyScope } from "./sessionPolicy-CHiilOAB.js";
7
- import { At as walletSessionPreservesCapabilities, Ct as routerAbMpcMaterialActivationRefFromWire, L as sameRouterAbEcdsaDerivationNormalSigningScopeV1, M as routerAbEcdsaDerivationActiveStateId, X as isPasskeyWalletAuthAuthority, Y as isEmailOtpWalletAuthAuthority, Z as parseEmailOtpWalletAuthAuthority, a as ROUTER_AB_ECDSA_DERIVATION_OPERATION_STEP_UP_PATH, b as parseRouterAbEcdsaOperationStepUpAuthorizationRequestV1, et as parseWalletAuthAuthorityRef, f as computeRouterAbEcdsaOperationStepUpChallengeB64u, g as parseRouterAbEcdsaDerivationNormalSigningScopeV1, ht as computeEcdsaDerivationRoleLocalRelayerKeyId, j as requireRouterAbEcdsaDerivationNormalSigningStateV1, nt as walletAuthAuthorityRef, tt as walletAuthAuthoritiesMatch, wt as routerAbMpcMaterialActivationRefToWire, x as parseRouterAbEcdsaOperationStepUpAuthorizationResponseV1 } from "./ecdsaPresignLifecycle-BFOTNYCK.js";
8
- import { t as chainFamilyFromNetwork } from "./chains-BMh3btVo.js";
9
- import { c as toWalletId, o as thresholdEcdsaChainTargetKey, s as thresholdEcdsaChainTargetsEqual } from "./ecdsaChainTarget-Bl-JWyuw.js";
10
- import { f as WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION, n as SIGNER_AUTH_METHODS } from "./signerDomain-IEAVrOrc.js";
11
- import { a as toIndexedDbChainTargetKey } from "./normalization-CBt413-z.js";
12
- import { C as toThresholdOwnerAddress, c as buildResolvedEvmFamilyEcdsaKey, f as deriveEvmFamilyKeyFingerprintFromPublicFacts, l as buildVerifiedEcdsaPublicFacts, n as buildBaseEvmFamilyEcdsaKeyIdentity, o as buildHydratedEcdsaSignerMaterial, s as buildPasskeyEcdsaAuthBinding, u as deriveEvmFamilyEcdsaKeyHandle, x as toRpId, y as toEvmFamilyEcdsaKeyHandle } from "./evmFamilyEcdsaIdentity-Co5XDcEA.js";
13
- import { a as isActiveEcdsaWalletAuthorityV1, l as isEd25519ExtensionOfEcdsaWalletAuthority, s as isCombinedWalletSignerActivationSetV1 } from "./walletAuthority-BQBxgUBn.js";
14
- import { a as parseEcdsaRoleLocalPersistedMaterialRef, l as parseEcdsaClientVerifyingShareB64u, s as parseEcdsaThresholdKeyId } from "./keyMaterialBrands-CX41hur6.js";
15
- import { a as SIGNING_SESSION_EXPIRY_DETECTION_SOURCES, m as createSigningFlowEvent, o as SigningEventPhase } from "./sdkSentEvents-MqDkbQg1.js";
16
- import { t as parseSignerSlot } from "./signerSlot-_ovonwVX.js";
17
- import { c as signingLaneAuthMethod, i as SigningSessionPlanKind, n as SigningOperationIntent, r as SigningSessionIds, s as signingLaneAuthBindingKey } from "./types-Dx9fczU7.js";
18
- import { t as demoEmailOtpCodeFromDelivery } from "./challengeDelivery-Dd0586fo.js";
19
- import { b as openEcdsaRoleLocalSigningMaterialWasm, t as buildReadySecp256k1SigningMaterial } from "./secp256k1-el9aE4Sv.js";
20
- import { O as projectEcdsaRoleLocalPublicFactsToChainTarget, y as routerAbEcdsaDerivationPublicCapabilitiesEqual } from "./ecdsaCapabilityManifest-kzO_fW09.js";
21
- import { c as evmNonceLeaseToManagedReservation, l as evmReserveNonceInputToLane, s as evmManagedReservationToLane } from "./nonceLaneKeys-C3c9lG6u.js";
22
- import { c as exactSigningLaneIdentityKey, g as requireEvmFamilyEcdsaSigner, n as exactEcdsaSigningLaneIdentity, r as exactEcdsaSigningLaneIdentityFromSelectedLane, s as exactSigningLaneIdentityFromSelectedLane, t as buildEvmFamilyEcdsaSignerBinding } from "./exactSigningLaneIdentity-DQeqPMST.js";
23
- import { c as buildTempoTransactionSigningLane, o as buildEvmTransactionSigningLane, x as selectedEcdsaLane, y as laneCandidateAuthMethod } from "./nearEd25519YaoSigningPreparation-BeD-SmbK.js";
24
- import { a as throwEmailOtpSigningSessionAuthStateError, o as buildEmailOtpRoutePlan } from "./routePlan-D59x5xzQ.js";
25
- import { r as parseSigningOperationFingerprintDigest } from "./operationFingerprint-CGZui5dR.js";
26
- import { c as emitSigningPlannerDecisionTrace, l as emitSigningSessionFlowFailure, o as emitSigningBoundaryTrace, s as emitSigningLaneResolutionTrace, t as createSigningBoundaryTraceEvent, u as emitSigningSessionFlowTrace } from "./trace-rHe0wz7q.js";
27
- import { i as loadWebAuthnP256EngineCtor, n as loadSignEvmFamilyWithUiConfirmForTempo, r as loadSignEvmWithUiConfirm, t as loadSecp256k1EngineCtor } from "./signerLoader-D7Aey0FD.js";
28
- import { a as isPasskeySigningAuthPlan, i as isEmailOtpSigningAuthPlan, n as SigningAuthPlanKind } from "./promptText-CuRa_ivd.js";
29
- import { t as computeSigningOperationFingerprint, u as signingAuthPlanFromSigningSessionPlan } from "./operationFingerprint-C8Trar4R.js";
30
- import { _ as WalletSessionQuotaAdmissionError, b as classifyWalletSessionQuotaAdmissionFailure, g as WALLET_SESSION_FAILURE_CODES, h as walletSessionFailureFromError, p as walletSessionFailureErrorFromPayload, v as buildOperationAuthorizationQueueKey, x as decideWalletSessionQuotaAdmissionFailure } from "./routerAbNormalSigning-fhvpDtmY.js";
31
- import { b as withThresholdCommitQueue, f as ecdsaAvailableLaneCandidatesForTarget, h as isConcreteAvailableSigningLane, o as selectEvmFamilyEcdsaMaterialCandidate, r as prepareTransactionSigningOperation, u as availableEcdsaSigningLaneAuthMethod, v as requireAuthoritativeExpiredWalletSessionAuthorizationBoundary, y as clearThresholdCommitQueue } from "./transactionState-DP9O8F6f.js";
32
- import { t as bytesToHex } from "./bytes-qKxKn4gg.js";
33
- import { d as buildEvmDisplayModel, l as fromManagedNonceReservationSnapshot, n as isEvmFamilyEcdsaMaterialSupersededError, u as reserveNonceInputFromBoundary } from "./signingFlow-rZfPegH9.js";
34
- import { t as buildTempoDisplayModel } from "./display-KdIL0ff7.js";
35
- //#region src/core/signingEngine/session/material/linkedEcdsaHolderRuntime.ts
36
- const linkedHolderRuntimes = /* @__PURE__ */ new Map();
37
- function runtimeKey(input) {
38
- return `${String(input.walletId)}\0${input.materialActivation.activationId}`;
39
- }
40
- function installLinkedEcdsaHolderRuntimeV1(runtime) {
41
- const key = runtimeKey(runtime);
42
- const existing = linkedHolderRuntimes.get(key);
43
- if (existing && (existing.authorityId !== runtime.authorityId || existing.walletAuthMethodId !== runtime.walletAuthMethodId || existing.factorAuthority.walletId !== runtime.factorAuthority.walletId || existing.factorAuthority.bindingId !== runtime.factorAuthority.bindingId || existing.holderHandleId !== runtime.holderHandleId || !mpcMaterialActivationRefsEqual(existing.materialActivation, runtime.materialActivation))) throw new Error("linked ECDSA holder runtime conflicts with the active authority");
44
- linkedHolderRuntimes.set(key, runtime);
45
- }
46
- function resolveLinkedEcdsaHolderRuntimeV1(input) {
47
- return linkedHolderRuntimes.get(runtimeKey(input)) ?? null;
48
- }
49
- function listLinkedEcdsaHolderRuntimesV1(walletId) {
50
- return [...linkedHolderRuntimes.values()].filter((runtime) => walletId === void 0 || runtime.walletId === walletId);
51
- }
52
- function removeLinkedEcdsaHolderRuntimeV1(input) {
53
- const key = runtimeKey(input);
54
- const runtime = linkedHolderRuntimes.get(key);
55
- if (!runtime) return;
56
- if (runtime.holderHandleId !== input.holderHandleId) throw new Error("linked ECDSA holder runtime changed before removal");
57
- linkedHolderRuntimes.delete(key);
58
- }
59
- function clearLinkedEcdsaHolderRuntimesV1(walletId) {
60
- if (!walletId) {
61
- linkedHolderRuntimes.clear();
62
- return;
63
- }
64
- for (const [key, runtime] of linkedHolderRuntimes) if (runtime.walletId === walletId) linkedHolderRuntimes.delete(key);
65
- }
66
- //#endregion
67
- //#region src/core/signingEngine/session/warmCapabilities/sealedRefreshParity.ts
68
- function isRetryableSealedRefreshCapabilityFetchError(error) {
69
- const code = error && typeof error === "object" && "code" in error ? String(error.code || "").trim() : "";
70
- if (code === "sealed_refresh_parity_fetch_failed" || code === "sealed_refresh_parity_http_error" || code === "sealed_refresh_parity_aborted") return true;
71
- const message = String(error instanceof Error ? error.message : error || "");
72
- return message.includes("Failed to fetch relayer well-known capabilities") || /Well-known endpoint returned HTTP 5\d\d/.test(message);
73
- }
74
- function parityErrorMessage(error) {
75
- return error instanceof Error ? error.message : String(error || "unknown error");
76
- }
77
- async function ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap(ensureParity, args) {
78
- try {
79
- await ensureParity();
80
- } catch (error) {
81
- if (args.kind === "key_enrollment_bootstrap_parity") {
82
- console.warn("[threshold-ecdsa] key enrollment bootstrap skipped sealed-refresh startup parity enforcement", {
83
- walletId: String(args.walletId || "").trim(),
84
- chainTarget: thresholdEcdsaChainTargetKey(args.chainTarget),
85
- error: parityErrorMessage(error)
86
- });
87
- return;
88
- }
89
- if (args.kind === "transaction_bootstrap_parity" && isRetryableSealedRefreshCapabilityFetchError(error)) {
90
- console.warn("[threshold-ecdsa] transaction bootstrap skipped retryable sealed-refresh capability fetch failure", {
91
- walletId: String(args.walletId || "").trim(),
92
- chainTarget: thresholdEcdsaChainTargetKey(args.chainTarget),
93
- error: parityErrorMessage(error)
94
- });
95
- return;
96
- }
97
- if (args.kind === "email_otp_bootstrap_parity" && args.authMethod === SIGNER_AUTH_METHODS.emailOtp && isRetryableSealedRefreshCapabilityFetchError(error)) {
98
- console.warn("[threshold-ecdsa] Email OTP bootstrap skipped retryable sealed-refresh capability fetch failure", {
99
- walletId: String(args.walletId || "").trim(),
100
- chainTarget: thresholdEcdsaChainTargetKey(args.chainTarget),
101
- error: parityErrorMessage(error)
102
- });
103
- return;
104
- }
105
- if (args.kind === "default_bootstrap_parity" && isRetryableSealedRefreshCapabilityFetchError(error)) {
106
- console.warn("[threshold-ecdsa] default bootstrap skipped retryable sealed-refresh capability fetch failure", {
107
- walletId: String(args.walletId || "").trim(),
108
- chainTarget: thresholdEcdsaChainTargetKey(args.chainTarget),
109
- error: parityErrorMessage(error)
110
- });
111
- return;
112
- }
113
- throw error;
114
- }
115
- }
116
- async function ensureSealedRefreshStartupParityForTransactionSigning(ensureParity, args) {
117
- try {
118
- await ensureParity();
119
- } catch (error) {
120
- if (!isRetryableSealedRefreshCapabilityFetchError(error)) throw error;
121
- console.warn("[threshold-ecdsa] transaction signing skipped retryable sealed-refresh capability fetch failure", {
122
- walletId: String(args.walletId || "").trim(),
123
- chainTarget: thresholdEcdsaChainTargetKey(args.chainTarget),
124
- error: parityErrorMessage(error)
125
- });
126
- }
127
- }
128
- //#endregion
129
- //#region src/core/signingEngine/flows/signEvmFamily/types.ts
130
- function evmFamilyRequestChainKind(request) {
131
- if (request.kind === "tempoTransaction") return "tempo";
132
- if (request.kind === "eip1559") return "evm_compatible";
133
- const requestChain = String(request.chain || "").trim();
134
- if (requestChain === "tempo" || requestChain === "evm") return requestChain;
135
- throw new Error("[SigningEngine][ecdsa] transaction request requires a concrete chain family");
136
- }
137
- function evmFamilySigningTargetFromExplicitTarget(args) {
138
- const requestChainId = Number(args.request.tx.chainId);
139
- if (!Number.isSafeInteger(requestChainId) || requestChainId <= 0) throw new Error("[SigningEngine][ecdsa] transaction request requires a concrete chainId");
140
- if (requestChainId !== args.chainTarget.chainId) throw new Error("[SigningEngine][ecdsa] transaction request chainId does not match chainTarget");
141
- const requestChainKind = evmFamilyRequestChainKind(args.request);
142
- if (requestChainKind !== "evm_compatible" && requestChainKind !== args.chainTarget.kind) throw new Error("[SigningEngine][ecdsa] transaction request chain does not match chainTarget");
143
- return args.chainTarget;
144
- }
145
- //#endregion
146
- //#region src/core/signingEngine/flows/signEvmFamily/errors.ts
147
- function createEvmFamilySigningCancelledError() {
148
- const err = /* @__PURE__ */ new Error("Request cancelled");
149
- err.code = "cancelled";
150
- return err;
151
- }
152
- function throwIfEvmFamilySigningCancelled(shouldAbort) {
153
- if (typeof shouldAbort === "function" && shouldAbort()) throw createEvmFamilySigningCancelledError();
154
- }
155
- function normalizeToken(value) {
156
- return String(value || "").trim().toLowerCase().replace(/[\s-]+/g, "_");
157
- }
158
- function extractErrorCode(error) {
159
- if (!error || typeof error !== "object" || !("code" in error)) return "";
160
- return normalizeToken(error.code);
161
- }
162
- function extractErrorMessage(error) {
163
- if (!error) return "";
164
- if (typeof error === "string") return error.trim();
165
- if (error instanceof Error) return String(error.message || "").trim();
166
- if (typeof error === "object" && "message" in error) return String(error.message || "").trim();
167
- return String(error).trim();
168
- }
169
- function inferNonceConflictReason(args) {
170
- const haystack = `${args.code} ${args.message}`.toLowerCase();
171
- if (!haystack.trim()) return null;
172
- if (haystack.includes("nonce_too_low") || haystack.includes("nonce too low")) return "nonce_too_low";
173
- if (haystack.includes("nonce_too_high") || haystack.includes("nonce too high")) return "nonce_too_high";
174
- if (haystack.includes("already_known") || haystack.includes("already known")) return "already_known";
175
- if (haystack.includes("replacement_transaction_underpriced") || haystack.includes("replacement transaction underpriced")) return "replacement_underpriced";
176
- if (haystack.includes("nonce_conflict") || haystack.includes("nonce") && haystack.includes("conflict") || haystack.includes("invalid nonce") || haystack.includes("nonce has already been used")) return "nonce_conflict";
177
- return null;
178
- }
179
- function createEvmFamilySigningNonceConflictError(args) {
180
- const chainLabel = args.chain === "tempo" ? "Tempo" : "EVM";
181
- const err = /* @__PURE__ */ new Error(`[SigningEngine] ${chainLabel} nonce conflict (${args.reason}) on ${args.networkKey}. Refresh nonce context and retry.`);
182
- err.code = "nonce_conflict_retryable";
183
- err.retryable = true;
184
- err.details = {
185
- chain: args.chain,
186
- reason: args.reason,
187
- networkKey: args.networkKey,
188
- chainId: args.chainId
189
- };
190
- if (args.cause !== void 0) try {
191
- err.cause = args.cause;
192
- } catch {}
193
- return err;
194
- }
195
- function createEvmFamilySigningNonceLaneBlockedError(args) {
196
- const chainLabel = args.chain === "tempo" ? "Tempo" : "EVM";
197
- const err = /* @__PURE__ */ new Error(`[SigningEngine] ${chainLabel} nonce lane blocked on ${args.networkKey} (nonce=${args.blockedNonce}). Reconcile lane and retry.`);
198
- err.code = "nonce_lane_blocked";
199
- err.retryable = true;
200
- err.details = {
201
- chain: args.chain,
202
- networkKey: args.networkKey,
203
- chainId: args.chainId,
204
- blockedNonce: args.blockedNonce,
205
- ...typeof args.ageMs === "number" ? { ageMs: args.ageMs } : {}
206
- };
207
- if (args.cause !== void 0) try {
208
- err.cause = args.cause;
209
- } catch {}
210
- return err;
211
- }
212
- function mapToRetryableNonceConflictError(args) {
213
- if (!args.error || typeof args.error !== "object") return args.error;
214
- const existingCode = extractErrorCode(args.error);
215
- if (existingCode === "nonce_conflict_retryable") return args.error;
216
- const reason = inferNonceConflictReason({
217
- code: existingCode,
218
- message: extractErrorMessage(args.error)
219
- });
220
- if (!reason) return args.error;
221
- return createEvmFamilySigningNonceConflictError({
222
- chain: args.chain,
223
- networkKey: args.networkKey,
224
- chainId: args.chainId,
225
- reason,
226
- cause: args.error
227
- });
228
- }
229
- function mapToRetryableNonceLaneBlockedError(args) {
230
- if (!args.error || typeof args.error !== "object") return args.error;
231
- if (extractErrorCode(args.error) === "nonce_lane_blocked") {
232
- const details = typeof args.error.details === "object" ? args.error.details || {} : {};
233
- const blockedNonceRaw = String(details?.blockedNonce || "").trim();
234
- const ageRaw = Number(details?.ageMs);
235
- return createEvmFamilySigningNonceLaneBlockedError({
236
- chain: args.chain,
237
- networkKey: args.networkKey,
238
- chainId: args.chainId,
239
- blockedNonce: blockedNonceRaw || "unknown",
240
- ...Number.isFinite(ageRaw) ? { ageMs: ageRaw } : {},
241
- cause: args.error
242
- });
243
- }
244
- const message = extractErrorMessage(args.error).toLowerCase();
245
- if (message.includes("nonce lane blocked") || message.includes("nonce") && message.includes("blocked")) return createEvmFamilySigningNonceLaneBlockedError({
246
- chain: args.chain,
247
- networkKey: args.networkKey,
248
- chainId: args.chainId,
249
- blockedNonce: "unknown",
250
- cause: args.error
251
- });
252
- return args.error;
253
- }
254
- function mapToRetryableNonceStateError(args) {
255
- const mappedConflict = mapToRetryableNonceConflictError(args);
256
- return mapToRetryableNonceLaneBlockedError({
257
- ...args,
258
- error: mappedConflict
259
- });
260
- }
261
- function isNonceConflictRetryableError(error) {
262
- if (!error || typeof error !== "object") return false;
263
- return extractErrorCode(error) === "nonce_conflict_retryable";
264
- }
265
- function isNonceLaneBlockedRetryableError(error) {
266
- if (!error || typeof error !== "object") return false;
267
- return extractErrorCode(error) === "nonce_lane_blocked";
268
- }
269
- //#endregion
270
- //#region src/core/signingEngine/flows/signEvmFamily/ecdsaLanes.ts
271
- function summarizeEvmFamilyEcdsaLane(lane) {
272
- if (!lane) return { present: false };
273
- const signer = requireEvmFamilyEcdsaSigner(lane.identity, "ECDSA lane summary");
274
- return {
275
- present: true,
276
- walletId: signer.walletId,
277
- authMethod: signingLaneAuthMethod(lane.auth),
278
- curve: lane.curve,
279
- chain: lane.chain,
280
- chainFamily: "chainFamily" in lane ? lane.chainFamily : lane.chain,
281
- keyKind: "keyKind" in lane ? lane.keyKind : "threshold_ecdsa_secp256k1",
282
- sessionOrigin: "sessionOrigin" in lane ? lane.sessionOrigin : void 0,
283
- storageSource: "storageSource" in lane ? lane.storageSource : void 0,
284
- retention: "retention" in lane ? lane.retention : void 0,
285
- walletSessionId: lane.authorization.operationCredential.walletSessionId,
286
- materialActivationId: lane.materialActivation.activationId,
287
- chainTarget: signer.chainTarget,
288
- evmFamilyKeyPresent: Boolean(signer.key)
289
- };
290
- }
291
- function logEvmFamilyEcdsaLaneDiagnostic(message, details) {
292
- try {
293
- console.warn(`[SigningEngine][ecdsa] ${message}`, JSON.stringify(details, null, 2));
294
- } catch {}
295
- }
296
- function requireResolvedEvmFamilyEcdsaSigningLane(args) {
297
- const lane = args.lane;
298
- if (!lane) {
299
- logEvmFamilyEcdsaLaneDiagnostic("missing selected signing lane", {
300
- context: args.context,
301
- chain: args.chain,
302
- ...args.diagnostics
303
- });
304
- throw new Error(`[SigningEngine][ecdsa] missing selected signing lane for ${args.context}`);
305
- }
306
- if (lane.curve !== "ecdsa" || lane.keyKind !== "threshold_ecdsa_secp256k1") {
307
- logEvmFamilyEcdsaLaneDiagnostic("selected signing lane is not ECDSA", {
308
- context: args.context,
309
- expectedChain: args.chain,
310
- lane: summarizeEvmFamilyEcdsaLane(lane),
311
- ...args.diagnostics
312
- });
313
- throw new Error(`[SigningEngine][ecdsa] ${args.context} requires an ECDSA signing lane`);
314
- }
315
- const identity = lane.identity;
316
- const signer = requireEvmFamilyEcdsaSigner(identity, `${args.context} resolved ECDSA lane`);
317
- const chainTarget = signer.chainTarget;
318
- if (chainTarget.kind !== args.chain) {
319
- logEvmFamilyEcdsaLaneDiagnostic("selected signing lane chain mismatch", {
320
- context: args.context,
321
- expectedChain: args.chain,
322
- lane: summarizeEvmFamilyEcdsaLane(lane),
323
- ...args.diagnostics
324
- });
325
- throw new Error(`[SigningEngine][ecdsa] ${args.context} chain does not match selected lane`);
326
- }
327
- const key = signer.key;
328
- if (!key?.ecdsaThresholdKeyId || !key.signingRootId || !key.signingRootVersion) {
329
- logEvmFamilyEcdsaLaneDiagnostic("selected signing lane missing full ECDSA identity", {
330
- context: args.context,
331
- expectedChain: args.chain,
332
- lane: summarizeEvmFamilyEcdsaLane(lane),
333
- ...args.diagnostics
334
- });
335
- throw new Error(`[SigningEngine][ecdsa] incomplete ECDSA lane identity for ${args.context}`);
336
- }
337
- if (!key || String(key.walletId) !== String(signer.walletId) || String(signer.keyHandle || "").trim() === "") {
338
- logEvmFamilyEcdsaLaneDiagnostic("selected signing lane missing matching shared key identity", {
339
- context: args.context,
340
- expectedChain: args.chain,
341
- lane: summarizeEvmFamilyEcdsaLane(lane),
342
- ...args.diagnostics
343
- });
344
- throw new Error(`[SigningEngine][ecdsa] missing shared key identity for ${args.context}`);
345
- }
346
- const selectedLane = selectedEcdsaLane({
347
- key,
348
- materialActivation: signer.materialActivation,
349
- keyHandle: signer.keyHandle,
350
- walletId: signer.walletId,
351
- auth: identity.auth,
352
- authorization: lane.authorization,
353
- chainTarget
354
- });
355
- return {
356
- ...lane,
357
- ...selectedLane,
358
- key,
359
- keyHandle: signer.keyHandle,
360
- chainTarget,
361
- keyKind: "threshold_ecdsa_secp256k1",
362
- chainFamily: signer.chainTarget.kind
363
- };
364
- }
365
- //#endregion
366
- //#region src/core/signingEngine/interfaces/accountAuthMetadata.ts
367
- function resolveAccountAuthMetadataForSignerAuthMethod(args) {
368
- const primaryAuthMethod = args.authMethod;
369
- return {
370
- primaryAuthMethod,
371
- linkedAuthMethods: [primaryAuthMethod],
372
- ...args.email ? { email: args.email } : {},
373
- ...args.passkeyCredentialIds?.length ? { passkeyCredentialIds: args.passkeyCredentialIds } : {}
374
- };
375
- }
376
- //#endregion
377
- //#region src/core/signingEngine/flows/signEvmFamily/accountAuth.ts
378
- async function resolveEvmFamilyTransactionWalletAuth(args) {
379
- if (args.senderSignatureAlgorithm === "webauthnP256") return resolveAccountAuthMetadataForSignerAuthMethod({ authMethod: SIGNER_AUTH_METHODS.passkey });
380
- if (args.signerAuthMethod !== void 0) return resolveAccountAuthMetadataForSignerAuthMethod({ authMethod: args.signerAuthMethod });
381
- throw new Error("[SigningEngine][ecdsa] signer auth method is unavailable");
382
- }
383
- //#endregion
384
- //#region src/core/signingEngine/session/material/ecdsaSigningCapability.ts
385
- function exactEcdsaSubjectMatches(args) {
386
- return args.session.capabilitySubjects.filter((subject) => subject.kind === "sign" && subject.keyFamily === "ecdsa_secp256k1" && mpcMaterialActivationRefsEqual(subject.materialActivation, args.materialActivation)).length === 1;
387
- }
388
- function targetMatchesCapability(args) {
389
- return args.capability.manifest.signer.scope.targetMemberships.some((target) => thresholdEcdsaChainTargetsEqual(target, args.chainTarget));
390
- }
391
- function participantIdsMatch(left, right) {
392
- return left.length === right.length && left.every((value, index) => value === right[index]);
393
- }
394
- function selectedAuthorityComponentsAreExact(args) {
395
- const { selectedAuthority, selectedAuthMethod } = args;
396
- return selectedAuthMethod.walletId === args.walletId && selectedAuthMethod.status === "active" && selectedAuthMethod.walletAuthorityId === selectedAuthority.authorityId && selectedAuthority.walletId === args.walletId && selectedAuthority.state === "active";
397
- }
398
- function capabilityAuthorityMatchesRuntime(args) {
399
- const capabilityAuthority = args.capability.authority;
400
- const runtimeBinding = args.runtime.authBinding;
401
- switch (runtimeBinding.kind) {
402
- case "email_otp": return isEmailOtpWalletAuthAuthority(capabilityAuthority) && walletAuthAuthoritiesMatch(capabilityAuthority, runtimeBinding.emailOtpAuthority);
403
- case "passkey": return isPasskeyWalletAuthAuthority(capabilityAuthority) && capabilityAuthority.verifier.rpId === runtimeBinding.rpId && capabilityAuthority.factor.credentialIdB64u === runtimeBinding.credentialIdB64u;
404
- default: return runtimeBinding;
405
- }
406
- }
407
- function selectedAuthMethodMatchesRuntime(args) {
408
- switch (args.runtime.authBinding.kind) {
409
- case "email_otp": return args.selectedAuthMethod.kind === "email_otp" && args.selectedAuthMethod.emailHashHex === args.runtime.authBinding.emailHashHex;
410
- case "passkey": return args.selectedAuthMethod.kind === "passkey" && String(args.selectedAuthMethod.rpId) === String(args.runtime.authBinding.rpId) && args.selectedAuthMethod.credentialIdB64u === args.runtime.authBinding.credentialIdB64u;
411
- default: return args.runtime.authBinding;
412
- }
413
- }
414
- function exactAuthorizationMatchesCapability(args) {
415
- if (!Number.isSafeInteger(args.nowMs) || args.nowMs < 0) return false;
416
- const { capability, authorization } = args;
417
- const session = authorization.session;
418
- const operationCredential = authorization.operationCredential;
419
- const runtime = authorization.runtime;
420
- const signer = capability.manifest.signer;
421
- const activation = authorization.selectedAuthority.signerActivations.ecdsa;
422
- if (!activation) return false;
423
- if (!selectedAuthorityComponentsAreExact({
424
- selectedAuthority: authorization.selectedAuthority,
425
- selectedAuthMethod: authorization.selectedAuthMethod,
426
- walletId: session.walletId
427
- })) return false;
428
- if (session.walletId !== signer.walletId || session.authorityId !== authorization.selectedAuthority.authorityId || session.authMethodId !== authorization.selectedAuthMethod.walletAuthMethodId || session.authorityDigestB64u !== authorization.selectedAuthority.authorityDigestB64u || session.authorityRevocationEpoch !== authorization.selectedAuthority.revocationEpoch || signer.authority.walletId !== authorization.selectedAuthority.walletId || signer.authority.walletAuthMethodId !== authorization.selectedAuthMethod.walletAuthMethodId || session.authorizationId.trim().length === 0 || session.quotaId.trim().length === 0 || operationCredential.walletSessionId.trim().length === 0 || operationCredential.token.trim().length === 0 || runtime.walletId !== session.walletId || !selectedAuthMethodMatchesRuntime({
429
- selectedAuthMethod: authorization.selectedAuthMethod,
430
- runtime
431
- }) || !mpcMaterialActivationRefsEqual(runtime.materialActivation, capability.manifest.activation.materialActivation) || !mpcMaterialActivationRefsEqual(runtime.roleLocalMaterialRef.materialActivation, runtime.materialActivation) || !targetMatchesCapability({
432
- capability,
433
- chainTarget: runtime.chainTarget
434
- }) || !capabilityAuthorityMatchesRuntime({
435
- capability,
436
- runtime
437
- }) || !exactEcdsaSubjectMatches({
438
- session,
439
- materialActivation: capability.manifest.activation.materialActivation
440
- }) || !mpcMaterialActivationRefsEqual(activation.materialActivation, capability.manifest.activation.materialActivation) || activation.signer.walletId !== session.walletId || runtime.expiresAtMs <= 0 || !Number.isSafeInteger(runtime.remainingUses) || runtime.remainingUses < 0) return false;
441
- switch (runtime.kind) {
442
- case "exact_ecdsa_direct_capability_runtime_v1": break;
443
- case "exact_ecdsa_sealed_runtime_v1":
444
- if (runtime.sealedRecord.authMethod !== authorization.selectedAuthMethod.kind || runtime.sealedRecord.storeKey.trim().length === 0 || runtime.sealedRecord.thresholdSessionId.trim().length === 0) return false;
445
- break;
446
- default: return runtime;
447
- }
448
- if (session.expiresAtMs <= args.nowMs || runtime.expiresAtMs <= args.nowMs) return false;
449
- if (runtime.keyHandle !== String(capability.material.publicFacts.keyHandle) || runtime.ecdsaThresholdKeyId !== String(capability.material.publicFacts.ecdsaThresholdKeyId) || runtime.thresholdEcdsaPublicKeyB64u !== String(capability.material.publicFacts.groupPublicKey33B64u) || !participantIdsMatch(runtime.participantIds, capability.material.publicFacts.participantIds)) return false;
450
- return true;
451
- }
452
- function isExactPasskeyWalletSessionRuntime(runtime) {
453
- return runtime.authBinding.kind === "passkey";
454
- }
455
- function isExactEmailOtpWalletSessionRuntime(runtime) {
456
- return runtime.authBinding.kind === "email_otp";
457
- }
458
- function buildPreprocessingSessionBinding(input) {
459
- if (isExactPasskeyWalletSessionRuntime(input.runtime) && input.selected.authMethod.kind === "passkey") return {
460
- kind: "ecdsa_preprocessing_session",
461
- selectedAuthority: input.selected.authority,
462
- selectedAuthMethod: input.selected.authMethod,
463
- session: input.session,
464
- operationCredential: input.operationCredential,
465
- runtime: input.runtime
466
- };
467
- if (isExactEmailOtpWalletSessionRuntime(input.runtime) && input.selected.authMethod.kind === "email_otp") return {
468
- kind: "ecdsa_preprocessing_session",
469
- selectedAuthority: input.selected.authority,
470
- selectedAuthMethod: input.selected.authMethod,
471
- session: input.session,
472
- operationCredential: input.operationCredential,
473
- runtime: input.runtime
474
- };
475
- throw new Error("ECDSA preprocessing session auth method is inconsistent");
476
- }
477
- function directRuntimeAuthBinding(authority) {
478
- if (isPasskeyWalletAuthAuthority(authority)) return {
479
- kind: "passkey",
480
- rpId: String(authority.verifier.rpId),
481
- credentialIdB64u: String(authority.factor.credentialIdB64u)
482
- };
483
- if (isEmailOtpWalletAuthAuthority(authority)) return {
484
- kind: "email_otp",
485
- providerSubjectId: String(authority.factor.providerUserId),
486
- emailHashHex: String(authority.verifier.emailHashHex),
487
- emailOtpAuthority: authority
488
- };
489
- return authority;
490
- }
491
- function buildExactEcdsaDirectCapabilityRuntime(args) {
492
- if (!Number.isSafeInteger(args.status.expiresAtMs) || args.status.expiresAtMs <= 0 || !Number.isSafeInteger(args.status.remainingUses) || args.status.remainingUses < 0) throw new Error("Exact ECDSA direct capability requires valid session facts");
493
- return {
494
- kind: "exact_ecdsa_direct_capability_runtime_v1",
495
- walletId: args.runtime.walletId,
496
- chainTarget: args.runtime.chainTarget,
497
- materialActivation: args.runtime.materialActivation,
498
- normalSigning: args.runtime.normalSigning,
499
- relayerUrl: args.runtime.relayerUrl,
500
- relayerKeyId: args.runtime.relayerKeyId,
501
- clientVerifyingPublicKey33B64u: args.runtime.clientVerifyingPublicKey33B64u,
502
- participantIds: args.runtime.participantIds,
503
- ecdsaThresholdKeyId: args.runtime.ecdsaThresholdKeyId,
504
- thresholdEcdsaPublicKeyB64u: args.runtime.thresholdEcdsaPublicKeyB64u,
505
- keyHandle: args.runtime.keyHandle,
506
- runtimePolicyScope: args.runtime.runtimePolicyScope,
507
- roleLocalMaterialRef: args.runtime.roleLocalMaterialRef,
508
- authBinding: directRuntimeAuthBinding(args.authority),
509
- expiresAtMs: args.status.expiresAtMs,
510
- remainingUses: args.status.remainingUses
511
- };
512
- }
513
- function exactEcdsaAuthBindingsMatch(left, right) {
514
- if (left.kind !== right.kind) return false;
515
- switch (left.kind) {
516
- case "email_otp": return right.kind === "email_otp" && left.providerSubjectId === right.providerSubjectId && left.emailHashHex === right.emailHashHex && walletAuthAuthoritiesMatch(left.emailOtpAuthority, right.emailOtpAuthority);
517
- case "passkey": return right.kind === "passkey" && left.rpId === right.rpId && left.credentialIdB64u === right.credentialIdB64u;
518
- default: return left;
519
- }
520
- }
521
- function exactEcdsaWalletSessionRuntimesMatch(left, right) {
522
- if (left.kind !== right.kind || left.walletId !== right.walletId || !thresholdEcdsaChainTargetsEqual(left.chainTarget, right.chainTarget) || !mpcMaterialActivationRefsEqual(left.materialActivation, right.materialActivation) || left.keyHandle !== right.keyHandle || left.ecdsaThresholdKeyId !== right.ecdsaThresholdKeyId || !exactEcdsaAuthBindingsMatch(left.authBinding, right.authBinding)) return false;
523
- switch (left.kind) {
524
- case "exact_ecdsa_direct_capability_runtime_v1": return right.kind === "exact_ecdsa_direct_capability_runtime_v1";
525
- case "exact_ecdsa_sealed_runtime_v1": return right.kind === "exact_ecdsa_sealed_runtime_v1" && left.sealedRecord.authMethod === right.sealedRecord.authMethod && left.sealedRecord.storeKey === right.sealedRecord.storeKey && left.sealedRecord.thresholdSessionId === right.sealedRecord.thresholdSessionId;
526
- default: return left;
527
- }
528
- }
529
- function validateExactSessionAuthorization(input) {
530
- const walletId = input.session.walletId;
531
- if (!Number.isSafeInteger(input.nowMs) || input.nowMs < 0) throw new Error("Exact EVM-family Wallet Session authorization requires a valid timestamp");
532
- if (!selectedAuthorityComponentsAreExact({
533
- selectedAuthority: input.selected.authority,
534
- selectedAuthMethod: input.selected.authMethod,
535
- walletId
536
- }) || input.selected.selection.walletId !== walletId || input.selected.selection.walletAuthMethodId !== input.selected.authMethod.walletAuthMethodId || input.selected.selection.lockState !== "unlocked") throw new Error("Exact EVM-family Wallet Session authorization selected authority is invalid");
537
- const authorization = buildPreprocessingSessionBinding(input);
538
- if (!exactAuthorizationMatchesCapability({
539
- capability: input.capability,
540
- authorization,
541
- nowMs: input.nowMs
542
- })) throw new Error("Exact EVM-family Wallet Session authorization identity is inconsistent");
543
- return authorization;
544
- }
545
- function buildExactEvmFamilyWalletSessionAuthorization(input) {
546
- const authorization = signingAuthorizationFromPreprocessing(buildEcdsaPreprocessingCapability(input), input.nowMs);
547
- if (!authorization) throw new Error("Exact ECDSA signing authorization requires remaining signing uses");
548
- return authorization;
549
- }
550
- function buildEcdsaPreprocessingCapability(input) {
551
- return {
552
- kind: "authorized_ecdsa_preprocessing_capability",
553
- capability: input.capability,
554
- authorization: validateExactSessionAuthorization(input)
555
- };
556
- }
557
- function signingAuthorizationFromPreprocessing(input, nowMs) {
558
- const authorization = input.authorization;
559
- const runtime = authorization.runtime;
560
- if (runtime.remainingUses <= 0 || !exactAuthorizationMatchesCapability({
561
- capability: input.capability,
562
- authorization,
563
- nowMs
564
- })) return null;
565
- if (isExactPasskeyWalletSessionRuntime(runtime) && authorization.selectedAuthMethod.kind === "passkey") return {
566
- kind: "exact_evm_family_wallet_session_authorization_v1",
567
- selectedAuthority: authorization.selectedAuthority,
568
- selectedAuthMethod: authorization.selectedAuthMethod,
569
- session: authorization.session,
570
- operationCredential: authorization.operationCredential,
571
- runtime
572
- };
573
- if (isExactEmailOtpWalletSessionRuntime(runtime) && authorization.selectedAuthMethod.kind === "email_otp") return {
574
- kind: "exact_evm_family_wallet_session_authorization_v1",
575
- selectedAuthority: authorization.selectedAuthority,
576
- selectedAuthMethod: authorization.selectedAuthMethod,
577
- session: authorization.session,
578
- operationCredential: authorization.operationCredential,
579
- runtime
580
- };
581
- return null;
582
- }
583
- function authorizeEvmFamilyEcdsaSigningCapability(input) {
584
- if (input.authorization.runtime.remainingUses <= 0 || !exactAuthorizationMatchesCapability({
585
- capability: input.capability,
586
- authorization: input.authorization,
587
- nowMs: input.nowMs
588
- })) throw new Error("Exact Wallet Session authorization does not bind the ECDSA signing capability");
589
- return {
590
- kind: "authorized_evm_family_ecdsa_signing_capability",
591
- capability: input.capability,
592
- authorization: input.authorization
593
- };
594
- }
595
- async function buildCanonicalEvmFamilyEcdsaSigningCapability(input) {
596
- const signer = input.manifest.signer;
597
- const registeredPublicFacts = signer.registeredPublicFacts;
598
- const materialPublicFacts = input.material.publicFacts;
599
- const authorityRef = await walletAuthAuthorityRef({ authority: input.authority });
600
- if (authorityRef.authorityDigest !== signer.authority.authorityDigest || authorityRef.walletId !== signer.walletId || input.material.authority.walletId !== signer.walletId || input.material.authority.authorityDigest !== signer.authority.authorityDigest || !mpcMaterialActivationRefsEqual(input.material.materialActivation, input.manifest.activation.materialActivation) || materialPublicFacts.walletId !== signer.walletId || materialPublicFacts.keyHandle !== registeredPublicFacts.keyHandle || String(materialPublicFacts.groupPublicKey33B64u) !== String(registeredPublicFacts.publicKeyB64u) || materialPublicFacts.ethereumAddress !== registeredPublicFacts.thresholdOwnerAddress || materialPublicFacts.participantIds.length !== registeredPublicFacts.participantIds.length || materialPublicFacts.participantIds.some((participantId, index) => participantId !== registeredPublicFacts.participantIds[index])) throw new Error("Canonical EVM-family ECDSA signing capability identity is inconsistent");
601
- return {
602
- kind: "canonical_evm_family_ecdsa_signing_capability",
603
- authority: input.authority,
604
- manifest: input.manifest,
605
- material: input.material
606
- };
607
- }
608
- //#endregion
609
- //#region src/core/signingEngine/session/material/ecdsaRoleLocalMaterialResolver.ts
610
- const persistedMaterialBrand = Symbol("persisted-ecdsa-role-local-material");
611
- function materialRefMatchesPublicFacts(materialRef, publicFacts) {
612
- return materialRef.bindingDigest === publicFacts.contextBinding32B64u;
613
- }
614
- function liveHandleMatchesMaterialRef(liveHandle, materialRef) {
615
- return liveHandle.durableMaterialRef === materialRef.durableMaterialRef && liveHandle.bindingDigest === materialRef.bindingDigest;
616
- }
617
- function errorMessage(error) {
618
- return error instanceof Error ? error.message : String(error);
619
- }
620
- function corruptResolution(args) {
621
- return {
622
- kind: "corrupt",
623
- purpose: args.purpose,
624
- reason: args.reason,
625
- message: args.message
626
- };
627
- }
628
- function resolutionFromRehydrationFailure(args) {
629
- switch (args.failure.reason) {
630
- case "missing": return {
631
- kind: "device_link_required",
632
- purpose: args.purpose,
633
- reason: "missing_local_material"
634
- };
635
- case "expired": return corruptResolution({
636
- purpose: args.purpose,
637
- reason: "expired",
638
- message: "ECDSA role-local persisted material has expired"
639
- });
640
- case "binding_mismatch": return corruptResolution({
641
- purpose: args.purpose,
642
- reason: "binding_mismatch",
643
- message: "ECDSA role-local persisted material binding does not match its public facts"
644
- });
645
- case "corrupt": return corruptResolution({
646
- purpose: args.purpose,
647
- reason: "corrupt_persistence",
648
- message: "ECDSA role-local persisted material is corrupt"
649
- });
650
- default: {
651
- const exhaustive = args.failure.reason;
652
- throw new Error(`Unsupported ECDSA role-local restoration failure: ${String(exhaustive)}`);
653
- }
654
- }
655
- }
656
- function buildPersistedEcdsaRoleLocalMaterial(input) {
657
- const authority = parseWalletAuthAuthorityRef(input.authority);
658
- if (!authority) throw new Error("ECDSA role-local persisted material authority is invalid");
659
- const materialActivationResult = parseMpcMaterialActivationRef(input.materialActivation);
660
- if (!materialActivationResult.ok) throw new Error(materialActivationResult.error.message);
661
- if (authority.walletId !== input.publicFacts.walletId) throw new Error("ECDSA role-local persisted material authority does not match its wallet");
662
- return {
663
- [persistedMaterialBrand]: true,
664
- kind: "persisted_ecdsa_role_local_material_v1",
665
- authority,
666
- materialActivation: materialActivationResult.value,
667
- publicFacts: input.publicFacts
668
- };
669
- }
670
- function ecdsaRoleLocalPersistedMaterialSource(persistedMaterial) {
671
- return {
672
- kind: "persisted",
673
- authority: persistedMaterial.authority,
674
- materialActivation: persistedMaterial.materialActivation,
675
- publicFacts: persistedMaterial.publicFacts
676
- };
677
- }
678
- async function resolveEcdsaRoleLocalMaterial(input) {
679
- switch (input.source.kind) {
680
- case "unavailable": return {
681
- kind: "device_link_required",
682
- purpose: input.purpose,
683
- reason: input.source.reason
684
- };
685
- case "persisted": try {
686
- const rehydrated = await openEcdsaRoleLocalSigningMaterialWasm({
687
- authority: input.source.authority,
688
- materialActivation: input.source.materialActivation,
689
- workerCtx: input.workerCtx
690
- });
691
- if (!rehydrated.ok) return resolutionFromRehydrationFailure({
692
- purpose: input.purpose,
693
- failure: rehydrated
694
- });
695
- if (!mpcMaterialActivationRefsEqual(rehydrated.materialRef.materialActivation, input.source.materialActivation) || !materialRefMatchesPublicFacts(rehydrated.materialRef, input.source.publicFacts)) return corruptResolution({
696
- purpose: input.purpose,
697
- reason: "worker_identity_mismatch",
698
- message: "ECDSA role-local worker restored a different material identity"
699
- });
700
- if (!liveHandleMatchesMaterialRef(rehydrated.liveHandle, rehydrated.materialRef)) return corruptResolution({
701
- purpose: input.purpose,
702
- reason: "worker_identity_mismatch",
703
- message: "ECDSA role-local worker restored a different durable material"
704
- });
705
- return {
706
- kind: "rehydrated",
707
- purpose: input.purpose,
708
- liveHandle: rehydrated.liveHandle,
709
- materialRef: rehydrated.materialRef
710
- };
711
- } catch (error) {
712
- return corruptResolution({
713
- purpose: input.purpose,
714
- reason: "persistence_unavailable",
715
- message: errorMessage(error)
716
- });
717
- }
718
- default: {
719
- const exhaustive = input.source;
720
- throw new Error(`Unsupported ECDSA role-local material source: ${String(exhaustive)}`);
721
- }
722
- }
723
- }
724
- //#endregion
725
- //#region src/core/signingEngine/session/identity/ownerLaneScope.ts
726
- var OwnerLaneScopeIntegrityError = class extends Error {
727
- constructor(message) {
728
- super(`[OwnerLaneScope] ${message}`);
729
- this.name = "OwnerLaneScopeIntegrityError";
730
- }
731
- };
732
- /**
733
- * The active authority names a credential this device holds no active
734
- * canonical wallet auth method for: a pre-Phase-8 enrollment (or a device
735
- * whose canonical state was removed). It cannot act as a human owner until it
736
- * links again. Distinct from OwnerLaneScopeIntegrityError so request
737
- * boundaries and the UI can surface "link this device again" instead of a
738
- * generic integrity failure.
739
- */
740
- var OwnerRelinkRequiredError = class extends Error {
741
- constructor(walletAuthMethodId) {
742
- super(`[OwnerLaneScope] relink_required: no active canonical wallet auth method (${walletAuthMethodId})`);
743
- this.code = "relink_required";
744
- this.reason = "missing_canonical_owner_binding";
745
- this.name = "OwnerRelinkRequiredError";
746
- }
747
- };
748
- function isOwnerRelinkRequiredError(error) {
749
- return error instanceof OwnerRelinkRequiredError && error.name === "OwnerRelinkRequiredError" && error.code === "relink_required";
750
- }
751
- function passkeyWalletAuthAuthorityFromV2Record(record) {
752
- return {
753
- walletId: record.walletId,
754
- factor: {
755
- kind: "passkey",
756
- credentialIdB64u: record.credentialIdB64u
757
- },
758
- verifier: {
759
- kind: "webauthn",
760
- rpId: record.rpId
761
- },
762
- bindingId: record.walletAuthMethodId
763
- };
764
- }
765
- /**
766
- * The exact Email OTP authority for an installation that holds no local factor
767
- * record — a linked device, whose factor record belongs to registration. The
768
- * V2 record carries every field but the provider identity, which the caller
769
- * supplies from this installation's verified lanes.
770
- */
771
- function emailOtpWalletAuthAuthorityFromProviderSubject(args) {
772
- const providerUserId = String(args.providerSubjectId || "").trim();
773
- if (!providerUserId) throw new OwnerLaneScopeIntegrityError("active Email OTP method has no exact local factor");
774
- const authority = parseEmailOtpWalletAuthAuthority({
775
- walletId: args.authMethod.walletId,
776
- factor: {
777
- kind: "email_otp",
778
- provider: providerUserId.startsWith("google:") ? "google" : "email",
779
- providerUserId
780
- },
781
- verifier: {
782
- kind: "email_otp_wallet_auth_method",
783
- emailHashHex: args.authMethod.emailHashHex
784
- },
785
- bindingId: args.authMethod.walletAuthMethodId
786
- });
787
- if (!authority) throw new OwnerLaneScopeIntegrityError("active Email OTP method has no exact local factor");
788
- return authority;
789
- }
790
- function emailOtpWalletAuthAuthorityFromLocalFactor(args) {
791
- const matches = args.localMethods.filter((record) => record.kind === "email_otp" && record.status === "active" && record.walletId === args.authMethod.walletId && record.emailHashHex === args.authMethod.emailHashHex);
792
- const localMethod = matches[0];
793
- const authority = localMethod ? parseEmailOtpWalletAuthAuthority(localMethod.authority) : null;
794
- if (matches.length !== 1 || !authority || authority.walletId !== args.authMethod.walletId || authority.bindingId !== args.authMethod.walletAuthMethodId || authority.verifier.emailHashHex !== args.authMethod.emailHashHex) throw new OwnerLaneScopeIntegrityError("active Email OTP method has no exact local factor");
795
- return authority;
796
- }
797
- /**
798
- * Registration's local factor record first, because it is the authoritative
799
- * one where it exists; a linked installation falls back to the provider
800
- * subject its own lanes carry.
801
- */
802
- async function resolveEmailOtpWalletAuthAuthority(args) {
803
- const walletId = String(args.authMethod.walletId);
804
- try {
805
- return emailOtpWalletAuthAuthorityFromLocalFactor({
806
- authMethod: args.authMethod,
807
- localMethods: await args.stores.listWalletAuthMethodsForWallet(walletId)
808
- });
809
- } catch (error) {
810
- if (!args.stores.readEmailOtpProviderSubjectForWallet) throw error;
811
- const providerSubjectId = await args.stores.readEmailOtpProviderSubjectForWallet(walletId);
812
- if (!providerSubjectId) throw error;
813
- return emailOtpWalletAuthAuthorityFromProviderSubject({
814
- authMethod: args.authMethod,
815
- providerSubjectId
816
- });
817
- }
818
- }
819
- function assertExactFactorAuthorityBinding(args) {
820
- if (args.authority.walletId !== args.authMethod.walletId || args.authority.bindingId !== args.authMethod.walletAuthMethodId) throw new OwnerLaneScopeIntegrityError("active wallet auth method does not have an exact factor authority binding");
821
- return args.authority;
822
- }
823
- async function resolveExactWalletAuthAuthority(args) {
824
- if (args.authMethod.kind === "passkey") return assertExactFactorAuthorityBinding({
825
- authMethod: args.authMethod,
826
- authority: passkeyWalletAuthAuthorityFromV2Record(args.authMethod)
827
- });
828
- return assertExactFactorAuthorityBinding({
829
- authMethod: args.authMethod,
830
- authority: await resolveEmailOtpWalletAuthAuthority({
831
- authMethod: args.authMethod,
832
- stores: args.stores
833
- })
834
- });
835
- }
836
- function buildExactPasskeyOwnerLaneScope(args) {
837
- return {
838
- auth: {
839
- kind: "passkey",
840
- rpId: toRpId(args.authMethod.rpId),
841
- credentialIdB64u: args.authMethod.credentialIdB64u
842
- },
843
- signerSlot: args.signerSlot
844
- };
845
- }
846
- function buildExactEcdsaPasskeyOwnerLaneScope(args) {
847
- return {
848
- auth: {
849
- kind: "passkey",
850
- rpId: toRpId(args.authMethod.rpId),
851
- credentialIdB64u: args.authMethod.credentialIdB64u
852
- },
853
- keyFamily: "ecdsa"
854
- };
855
- }
856
- function buildExactLinkedEmailOtpOwnerLaneScope(args) {
857
- if (args.factorAuthority.walletId !== args.authMethod.walletId || args.factorAuthority.bindingId !== args.authMethod.walletAuthMethodId || args.factorAuthority.verifier.emailHashHex !== args.authMethod.emailHashHex || args.authorityRef.walletId !== args.authMethod.walletId || args.authorityRef.walletAuthMethodId !== args.authMethod.walletAuthMethodId) throw new OwnerLaneScopeIntegrityError("linked Email OTP authority does not match the selected V2 method");
858
- return {
859
- auth: {
860
- kind: "email_otp",
861
- providerSubjectId: String(args.factorAuthority.factor.providerUserId)
862
- },
863
- ownerAuthority: {
864
- walletAuthMethodId: args.authorityRef.walletAuthMethodId,
865
- authorityDigest: args.authorityRef.authorityDigest
866
- }
867
- };
868
- }
869
- async function passkeyOwnerLaneScope(args) {
870
- const authenticator = await args.stores.getWalletPasskeyAuthenticator({
871
- walletId: String(args.authMethod.walletId),
872
- credentialId: args.authMethod.credentialIdB64u
873
- });
874
- if (!authenticator || authenticator.credentialId !== args.authMethod.credentialIdB64u) throw new OwnerLaneScopeIntegrityError("active Passkey auth method has no exact local authenticator");
875
- const signerSlot = parseSignerSlot(authenticator.signerSlot, { min: 1 });
876
- if (signerSlot === null) throw new OwnerLaneScopeIntegrityError("local authenticator signer slot is invalid");
877
- return buildExactPasskeyOwnerLaneScope({
878
- authMethod: args.authMethod,
879
- signerSlot
880
- });
881
- }
882
- async function resolveExactOwnerLaneScope(args) {
883
- if (args.authMethod.kind === "passkey") return await passkeyOwnerLaneScope({
884
- authMethod: args.authMethod,
885
- stores: args.stores
886
- });
887
- const authority = await resolveEmailOtpWalletAuthAuthority({
888
- authMethod: args.authMethod,
889
- stores: args.stores
890
- });
891
- const authorityRef = await walletAuthAuthorityRef({ authority });
892
- return {
893
- auth: {
894
- kind: "email_otp",
895
- providerSubjectId: String(authority.factor.providerUserId)
896
- },
897
- ownerAuthority: {
898
- walletAuthMethodId: authorityRef.walletAuthMethodId,
899
- authorityDigest: authorityRef.authorityDigest
900
- }
901
- };
902
- }
903
- //#endregion
904
- //#region src/core/signingEngine/session/emailOtp/ecdsaSigningSessionAuthority.ts
905
- function isExactSelectedWalletAuthority(selected) {
906
- return selected.kind === "resolved" && selected.authMethod.status === "active" && selected.authority.state === "active";
907
- }
908
- function emailOtpEcdsaSigningSessionAuthLane(authorization) {
909
- if (authorization.selectedAuthMethod.kind !== "email_otp" || authorization.runtime.kind !== "exact_ecdsa_sealed_runtime_v1" || authorization.runtime.authBinding.kind !== "email_otp" || authorization.operationCredential.token.trim().length === 0 || authorization.runtime.sealedRecord.thresholdSessionId.trim().length === 0) throw new Error("Exact Email OTP ECDSA signing-session authorization is incomplete");
910
- return {
911
- kind: "signing_session",
912
- operationCredential: authorization.operationCredential,
913
- thresholdSessionId: authorization.runtime.sealedRecord.thresholdSessionId,
914
- curve: "ecdsa",
915
- chainTarget: authorization.runtime.chainTarget
916
- };
917
- }
918
- /**
919
- * The sealed runtime and capability manifest identify the material and Email
920
- * OTP authority. The selected authority and exact Wallet Session record must
921
- * reproduce that tuple before the signing-session lane can be built.
922
- */
923
- async function resolveExactEmailOtpEcdsaSigningSessionAuthority(ports, args) {
924
- if (args.runtime.kind !== "exact_ecdsa_sealed_runtime_v1" || args.runtime.walletId !== args.walletId || !thresholdEcdsaChainTargetsEqual(args.runtime.chainTarget, args.chainTarget) || !mpcMaterialActivationRefsEqual(args.runtime.materialActivation, args.manifest.activation.materialActivation) || args.manifest.signer.walletId !== args.walletId) return null;
925
- if (args.runtime.authBinding.kind !== "email_otp") return null;
926
- let runtimeAuthorityRef;
927
- try {
928
- runtimeAuthorityRef = await walletAuthAuthorityRef({ authority: args.runtime.authBinding.emailOtpAuthority });
929
- } catch {
930
- return null;
931
- }
932
- const manifestAuthorityRef = args.manifest.signer.authority;
933
- if (runtimeAuthorityRef.walletId !== args.walletId || runtimeAuthorityRef.walletAuthMethodId !== manifestAuthorityRef.walletAuthMethodId || runtimeAuthorityRef.authorityDigest !== manifestAuthorityRef.authorityDigest || manifestAuthorityRef.walletId !== args.walletId) return null;
934
- let selected;
935
- try {
936
- selected = await ports.resolveSelectedWalletAuthority(String(args.walletId));
937
- } catch {
938
- return null;
939
- }
940
- if (!isExactSelectedWalletAuthority(selected)) return null;
941
- const { selection, authMethod, authority } = selected;
942
- const ecdsaActivation = authority.signerActivations.ecdsa;
943
- if (selection.lockState !== "unlocked" || selection.walletId !== args.walletId || authMethod.kind !== "email_otp" || authMethod.status !== "active" || authMethod.walletId !== args.walletId || authority.state !== "active" || authority.walletId !== args.walletId || selection.walletAuthMethodId !== authMethod.walletAuthMethodId || authMethod.walletAuthorityId !== authority.authorityId || authMethod.walletAuthMethodId !== runtimeAuthorityRef.walletAuthMethodId || !ecdsaActivation || ecdsaActivation.signer.walletId !== args.walletId || !mpcMaterialActivationRefsEqual(ecdsaActivation.materialActivation, args.runtime.materialActivation)) return null;
944
- let selectedFactorAuthority;
945
- try {
946
- selectedFactorAuthority = await resolveExactWalletAuthAuthority({
947
- authMethod,
948
- stores: ports.factorStores
949
- });
950
- } catch {
951
- return null;
952
- }
953
- if (!walletAuthAuthoritiesMatch(selectedFactorAuthority, args.runtime.authBinding.emailOtpAuthority)) return null;
954
- let authorizationRead;
955
- try {
956
- authorizationRead = await ports.readExactWalletSessionAuthorization({
957
- walletId: args.walletId,
958
- authorityId: authority.authorityId,
959
- authMethodId: authMethod.walletAuthMethodId
960
- });
961
- } catch {
962
- return null;
963
- }
964
- if (authorizationRead.kind !== "found") return null;
965
- const { record, operationCredential } = authorizationRead;
966
- if (record.walletId !== args.walletId || record.authorityId !== authority.authorityId || record.authMethodId !== authMethod.walletAuthMethodId || record.authorityDigestB64u !== authority.authorityDigestB64u || record.authorityRevocationEpoch !== authority.revocationEpoch || record.expiresAtMs <= Date.now() || operationCredential.walletSessionId.trim().length === 0 || operationCredential.token.trim().length === 0) return null;
967
- if (record.capabilitySubjects.filter((subject) => subject.kind === "sign" && subject.keyFamily === "ecdsa_secp256k1" && mpcMaterialActivationRefsEqual(subject.materialActivation, args.runtime.materialActivation)).length !== 1) return null;
968
- try {
969
- return buildExactEvmFamilyWalletSessionAuthorization({
970
- capability: await buildCanonicalEvmFamilyEcdsaSigningCapability({
971
- authority: args.runtime.authBinding.emailOtpAuthority,
972
- manifest: args.manifest,
973
- material: buildPersistedEcdsaRoleLocalMaterial({
974
- authority: args.manifest.signer.authority,
975
- materialActivation: args.manifest.activation.materialActivation,
976
- publicFacts: args.manifest.durableMaterial.roleLocalPublicFacts
977
- })
978
- }),
979
- selected,
980
- session: record,
981
- operationCredential,
982
- runtime: args.runtime,
983
- nowMs: Date.now()
984
- });
985
- } catch {
986
- return null;
987
- }
988
- }
989
- //#endregion
990
- //#region src/core/signingEngine/flows/signEvmFamily/events.ts
991
- function emitEvmFamilyBroadcastEvent(onEvent, event) {
992
- try {
993
- onEvent?.(createSigningFlowEvent({
994
- ...event,
995
- flowId: event.flowId ?? createEvmFamilySigningFlowId(event)
996
- }));
997
- } catch {}
998
- }
999
- function createEvmFamilySigningFlowId(event) {
1000
- const data = event.data || {};
1001
- return [
1002
- "signing",
1003
- String(data.chain || "evm_family"),
1004
- String(data.networkKey || "unknown_network"),
1005
- String(data.nonce || "") || String(event.phase)
1006
- ].join(":");
1007
- }
1008
- function emitEvmFamilySigningEvent(onEvent, event) {
1009
- emitEvmFamilyBroadcastEvent(onEvent, event);
1010
- }
1011
- function emitEvmFamilySigningOperationTrace(event) {
1012
- if (!isEvmFamilySigningOperationTraceEnabled()) return;
1013
- try {
1014
- console.debug("[SigningOperationMachine][evm-family]", event);
1015
- } catch {}
1016
- }
1017
- function isEvmFamilySigningOperationTraceEnabled() {
1018
- try {
1019
- return globalThis.localStorage?.getItem("seams:debug:signing-operation") === "1";
1020
- } catch {
1021
- return false;
1022
- }
1023
- }
1024
- //#endregion
1025
- //#region src/core/signingEngine/threshold/ecdsa/signingQueue.ts
1026
- function ecdsaSigningQueueWalletIdLabel(walletId) {
1027
- return String(walletId).trim();
1028
- }
1029
- function createThresholdEcdsaSigningQueueOverflowError(walletId, queueKey, maxQueueLength) {
1030
- const normalizedWalletId = ecdsaSigningQueueWalletIdLabel(walletId);
1031
- const err = /* @__PURE__ */ new Error(`[SigningEngine] threshold ECDSA signing queue overflow for ${normalizedWalletId} (queueKey=${queueKey}, max=${maxQueueLength})`);
1032
- err.code = "commit_queue_overflow";
1033
- return err;
1034
- }
1035
- function createThresholdEcdsaSigningQueueTimeoutError(walletId, queueKey, timeoutMs) {
1036
- const normalizedWalletId = ecdsaSigningQueueWalletIdLabel(walletId);
1037
- const err = /* @__PURE__ */ new Error(`[SigningEngine] threshold ECDSA signing queue timeout for ${normalizedWalletId} (queueKey=${queueKey}, waited>${timeoutMs}ms before start)`);
1038
- err.code = "commit_queue_timeout";
1039
- return err;
1040
- }
1041
- function createThresholdEcdsaSigningQueueCancelledError(walletId, queueKey, reason = "cancelled") {
1042
- const normalizedWalletId = ecdsaSigningQueueWalletIdLabel(walletId);
1043
- const message = reason === "queue_cleared" ? `[SigningEngine] threshold ECDSA queued signing operation cancelled for ${normalizedWalletId} (queueKey=${queueKey}, queue_cleared)` : `[SigningEngine] threshold ECDSA queued signing operation cancelled for ${normalizedWalletId} (queueKey=${queueKey})`;
1044
- const err = new Error(message);
1045
- err.code = "cancelled";
1046
- return err;
1047
- }
1048
- function resolveThresholdEcdsaSigningQueueKey(args) {
1049
- return [
1050
- "material",
1051
- encodeURIComponent(String(args.materialActivation.materialOwner)),
1052
- encodeURIComponent(String(args.materialActivation.capability)),
1053
- encodeURIComponent(String(args.materialActivation.activationId))
1054
- ].join(":");
1055
- }
1056
- function clearThresholdEcdsaSigningQueue(queueByKey) {
1057
- clearThresholdCommitQueue(queueByKey);
1058
- }
1059
- async function withThresholdEcdsaSigningQueue(args) {
1060
- const queueKey = String(args.queueKey || "").trim();
1061
- if (!queueKey) throw new Error("[SigningEngine] threshold ECDSA signing queue requires non-empty queueKey");
1062
- const walletKey = args.walletId;
1063
- return await withThresholdCommitQueue({
1064
- queueByKey: args.queueByKey,
1065
- queueKey,
1066
- enabled: args.enabled,
1067
- shouldAbort: args.shouldAbort,
1068
- maxQueueLength: args.maxQueueLength,
1069
- queueTimeoutMs: args.queueTimeoutMs,
1070
- task: args.task,
1071
- errors: {
1072
- makeOverflowError: (queueKey, maxQueueLength) => createThresholdEcdsaSigningQueueOverflowError(walletKey, queueKey, maxQueueLength),
1073
- makeTimeoutError: (queueKey, timeoutMs) => createThresholdEcdsaSigningQueueTimeoutError(walletKey, queueKey, timeoutMs),
1074
- makeCancelledError: (queueKey, reason) => createThresholdEcdsaSigningQueueCancelledError(walletKey, queueKey, reason)
1075
- }
1076
- });
1077
- }
1078
- //#endregion
1079
- //#region src/core/signingEngine/flows/signEvmFamily/emailOtpSigningSession.ts
1080
- /** The capability is the authority. Anything the caller or the confirmation
1081
- * plan supplies must agree with it exactly, or the OTP would be sent to a
1082
- * different mailbox than the one bound to the material being signed with. */
1083
- function emailOtpEcdsaCapabilityStepUpAuthority(args) {
1084
- const capabilityAuthority = args.capability.authority;
1085
- if (!isEmailOtpWalletAuthAuthority(capabilityAuthority)) throw new Error("[SigningEngine] Email OTP operation step-up requires an Email OTP capability authority");
1086
- if (args.claimedAuthority && !walletAuthAuthoritiesMatch(capabilityAuthority, args.claimedAuthority)) throw new Error("[SigningEngine] Email OTP step-up authority does not match the selected capability");
1087
- if (!mpcMaterialActivationRefsEqual(args.capability.manifest.activation.materialActivation, args.materialActivation)) throw new Error("[SigningEngine] Email OTP step-up material activation does not match the selected capability");
1088
- const operationFingerprint = String(args.operationFingerprint || "").trim();
1089
- if (!operationFingerprint) throw new Error("[SigningEngine] Email OTP operation step-up requires an operation fingerprint");
1090
- return {
1091
- kind: "capability_step_up",
1092
- capabilityAuthority,
1093
- materialActivation: args.materialActivation,
1094
- operationFingerprint
1095
- };
1096
- }
1097
- function emailOtpEcdsaChallengeAuthority(authority) {
1098
- switch (authority.kind) {
1099
- case "live_session":
1100
- if (authority.committedLane.authority.factor.kind !== "email_otp") throw new Error("[SigningEngine][ecdsa] Email OTP challenge requires Email OTP authority");
1101
- return {
1102
- kind: "live_session",
1103
- authLane: authority.committedLane.authLane
1104
- };
1105
- case "capability_step_up": return {
1106
- kind: "capability_step_up",
1107
- capabilityAuthority: authority.capabilityAuthority,
1108
- materialActivation: authority.materialActivation,
1109
- operationFingerprint: authority.operationFingerprint
1110
- };
1111
- }
1112
- }
1113
- function createEmailOtpEcdsaTransactionSigningBridge(args) {
1114
- let mintedForOperationFingerprint = null;
1115
- return { challenge: async () => {
1116
- if (typeof args.requestEmailOtpTransactionSigningChallenge !== "function") throw new Error("[SigningEngine] Email OTP ECDSA signing step-up is not configured");
1117
- if (args.authority.kind === "capability_step_up") {
1118
- if (mintedForOperationFingerprint !== null && mintedForOperationFingerprint !== args.authority.operationFingerprint) throw new Error("[SigningEngine] Email OTP step-up challenge is bound to a different operation");
1119
- mintedForOperationFingerprint = args.authority.operationFingerprint;
1120
- }
1121
- emitEvmFamilySigningEvent(args.onEvent, {
1122
- phase: SigningEventPhase.STEP_06_AUTH_EMAIL_OTP_CHALLENGE_STARTED,
1123
- status: "running",
1124
- walletId: args.walletId,
1125
- interaction: {
1126
- kind: "none",
1127
- overlay: "none"
1128
- }
1129
- });
1130
- emitSigningBoundaryTrace("evm-family", createSigningBoundaryTraceEvent({
1131
- event: "auth_side_effect_started",
1132
- lane: args.selectedLane,
1133
- sideEffect: "email_otp_challenge",
1134
- phase: "confirmed"
1135
- }));
1136
- const challenge = await args.requestEmailOtpTransactionSigningChallenge({
1137
- walletSession: args.walletSession,
1138
- chain: args.chain,
1139
- authority: emailOtpEcdsaChallengeAuthority(args.authority),
1140
- operationFingerprintDigest: args.operationFingerprintDigest
1141
- });
1142
- const challengeId = String(challenge.challengeId || "").trim();
1143
- if (!challengeId) throw new Error("[SigningEngine] Email OTP challenge response did not include challengeId");
1144
- emitEvmFamilySigningEvent(args.onEvent, {
1145
- phase: SigningEventPhase.STEP_06_AUTH_EMAIL_OTP_INPUT_REQUIRED,
1146
- status: "waiting_for_user",
1147
- walletId: args.walletId,
1148
- interaction: {
1149
- kind: "otp_input",
1150
- overlay: "show"
1151
- },
1152
- data: {
1153
- emailHint: challenge.emailHint,
1154
- demoOtpCode: demoEmailOtpCodeFromDelivery(challenge.delivery)
1155
- }
1156
- });
1157
- return {
1158
- challengeId,
1159
- email: String(challenge.emailHint || "").trim()
1160
- };
1161
- } };
1162
- }
1163
- /** Canonical Email OTP signing-session resolution: the manifest proves exact
1164
- * material, the sealed runtime supplies session-scoped facts and the Email OTP
1165
- * binding, and the reusable Wallet Session is resolved independently. Refresh
1166
- * must land on the same material activation it started from, so the caller
1167
- * checks that before and after; nothing here invokes Yao recovery or device
1168
- * linking. */
1169
- async function resolveEmailOtpEcdsaSigningSessionAuth(args, authorityPorts) {
1170
- const resolved = await authorityPorts.resolveActiveEcdsaCapabilityRuntime({
1171
- walletId: args.walletId,
1172
- chainTarget: args.chainTarget
1173
- });
1174
- if (resolved.kind !== "resolved") throwEmailOtpSigningSessionAuthStateError({
1175
- kind: "auth_lane_missing",
1176
- source: "evm_signing_refresh",
1177
- expectedCurve: "ecdsa"
1178
- });
1179
- const authority = await resolveExactEmailOtpEcdsaSigningSessionAuthority(authorityPorts, {
1180
- walletId: args.walletId,
1181
- chainTarget: args.chainTarget,
1182
- manifest: resolved.manifest,
1183
- runtime: resolved.runtime
1184
- });
1185
- if (!authority) throwEmailOtpSigningSessionAuthStateError({
1186
- kind: "auth_lane_missing",
1187
- source: "evm_signing_refresh",
1188
- expectedCurve: "ecdsa"
1189
- });
1190
- return {
1191
- manifest: resolved.manifest,
1192
- runtime: resolved.runtime,
1193
- authority
1194
- };
1195
- }
1196
- async function requestEmailOtpSigningSessionChallenge(deps, args) {
1197
- const { authority } = await deps.resolveSigningSessionAuth({
1198
- walletId: args.walletSession.walletId,
1199
- chainTarget: args.chainTarget
1200
- });
1201
- return await deps.emailOtpSessions.requestTransactionSigningChallenge({
1202
- kind: "wallet_session_challenge",
1203
- walletSession: args.walletSession,
1204
- chain: args.chainTarget.kind,
1205
- authLane: emailOtpEcdsaSigningSessionAuthLane(authority)
1206
- });
1207
- }
1208
- async function resolveFencedEmailOtpSigningSessionAuth(input) {
1209
- let current;
1210
- try {
1211
- current = await input.deps.resolveSigningSessionAuth({
1212
- walletId: input.args.walletSession.walletId,
1213
- chainTarget: input.args.chainTarget
1214
- });
1215
- } catch {
1216
- throw new Error(`[SigningEngine][ecdsa] Email OTP signing-session refresh material was superseded ${input.phase}`);
1217
- }
1218
- if (!mpcMaterialActivationRefsEqual(current.runtime.materialActivation, input.activationBeforeRefresh)) throw new Error(`[SigningEngine][ecdsa] Email OTP signing-session refresh material was superseded ${input.phase}`);
1219
- return current;
1220
- }
1221
- async function runFencedEmailOtpSigningSessionRefresh(input) {
1222
- const { manifest, runtime, authority } = await resolveFencedEmailOtpSigningSessionAuth({
1223
- deps: input.deps,
1224
- args: input.args,
1225
- activationBeforeRefresh: input.activationBeforeRefresh,
1226
- phase: "before use"
1227
- });
1228
- const routePlan = buildEmailOtpRoutePlan({
1229
- routeFamily: "signing_session",
1230
- authLane: emailOtpEcdsaSigningSessionAuthLane(authority),
1231
- operation: WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION
1232
- });
1233
- const publicFacts = buildVerifiedEcdsaPublicFacts({
1234
- keyHandle: toEvmFamilyEcdsaKeyHandle(String(manifest.durableMaterial.roleLocalPublicFacts.keyHandle)),
1235
- publicKeyB64u: runtime.thresholdEcdsaPublicKeyB64u,
1236
- participantIds: [...runtime.participantIds],
1237
- thresholdOwnerAddress: manifest.durableMaterial.roleLocalPublicFacts.ethereumAddress
1238
- });
1239
- const emailOtpBinding = runtime.authBinding;
1240
- if (emailOtpBinding.kind !== "email_otp") throw new Error("Email OTP signing-session refresh requires an Email OTP sealed runtime");
1241
- const refreshed = await input.deps.emailOtpSessions.loginWithEcdsaCapabilityInternal({
1242
- walletSession: input.args.walletSession,
1243
- authoritySelector: {
1244
- kind: "wallet_auth_method",
1245
- walletAuthMethodId: String((await walletAuthAuthorityRef({ authority: emailOtpBinding.emailOtpAuthority })).walletAuthMethodId)
1246
- },
1247
- chainTarget: input.args.chainTarget,
1248
- emailOtpAuthPolicy: "session",
1249
- emailOtpAuthReason: "sign",
1250
- challengeId: input.args.challengeId,
1251
- otpCode: input.args.otpCode,
1252
- operation: WALLET_EMAIL_OTP_TRANSACTION_SIGN_OPERATION,
1253
- routePlan,
1254
- publicFacts,
1255
- ecdsaBootstrapAuthorization: { kind: "route_plan_auth" },
1256
- providerIdentity: {
1257
- kind: "explicit_provider_user",
1258
- provider: emailOtpBinding.emailOtpAuthority.factor.provider,
1259
- providerUserId: emailOtpBinding.providerSubjectId
1260
- },
1261
- emailHashHex: emailOtpBinding.emailHashHex,
1262
- ...typeof input.args.ttlMs === "number" ? { ttlMs: input.args.ttlMs } : {},
1263
- ...typeof input.args.remainingUses === "number" ? { remainingUses: input.args.remainingUses } : {},
1264
- ...runtime.runtimePolicyScope ? { runtimePolicyScope: runtime.runtimePolicyScope } : {}
1265
- });
1266
- await resolveFencedEmailOtpSigningSessionAuth({
1267
- deps: input.deps,
1268
- args: input.args,
1269
- activationBeforeRefresh: input.activationBeforeRefresh,
1270
- phase: "during refresh"
1271
- });
1272
- return refreshed;
1273
- }
1274
- async function refreshEmailOtpSigningSession(deps, args) {
1275
- const activationBeforeRefresh = (await deps.resolveSigningSessionAuth({
1276
- walletId: args.walletSession.walletId,
1277
- chainTarget: args.chainTarget
1278
- })).runtime.materialActivation;
1279
- return await deps.withThresholdEcdsaSigningQueue({
1280
- queueKey: resolveThresholdEcdsaSigningQueueKey({ materialActivation: activationBeforeRefresh }),
1281
- walletId: args.walletSession.walletId,
1282
- enabled: true,
1283
- task: runFencedEmailOtpSigningSessionRefresh.bind(void 0, {
1284
- deps,
1285
- args,
1286
- activationBeforeRefresh
1287
- })
1288
- });
1289
- }
1290
- //#endregion
1291
- //#region src/core/signingEngine/flows/signEvmFamily/authPlanning.ts
1292
- function isEmailOtpEcdsaCommittedLane(committedLane) {
1293
- return isEmailOtpWalletAuthAuthority(committedLane.authority);
1294
- }
1295
- function emailOtpStepUpAuthority(args) {
1296
- const committedLane = args.selection.committedLane;
1297
- if (!isEmailOtpEcdsaCommittedLane(committedLane)) throw new Error("[SigningEngine][ecdsa] Email OTP step-up requires Email OTP authority");
1298
- if (committedLane.authLane) return {
1299
- kind: "live_session",
1300
- committedLane
1301
- };
1302
- return {
1303
- kind: "capability_step_up",
1304
- capabilityAuthority: committedLane.authority,
1305
- materialActivation: committedLane.authorization.runtime.materialActivation,
1306
- operationFingerprint: `sha256:${String(args.operationFingerprintDigest)}`
1307
- };
1308
- }
1309
- function emailOtpStepUpAuthorityForSelection(args) {
1310
- if (!args.selection) return void 0;
1311
- return isEmailOtpWalletAuthAuthority(args.selection.committedLane.authority) ? emailOtpStepUpAuthority({
1312
- selection: args.selection,
1313
- operationFingerprintDigest: args.operationFingerprintDigest
1314
- }) : void 0;
1315
- }
1316
- async function resolveEvmFamilyTransactionStepUp(args) {
1317
- const walletId = toWalletId(args.walletSession.walletId);
1318
- const reusableSessionEcdsaOperation = args.senderSignatureAlgorithm === "secp256k1" && args.ecdsaAuthorization === "reusable_wallet_session" ? args.preparedOperation : null;
1319
- const preparedEcdsaMetadata = reusableSessionEcdsaOperation ? reusableSessionEcdsaOperation.metadata : null;
1320
- const preparedEcdsaLane = reusableSessionEcdsaOperation?.lane;
1321
- const preparedSelection = preparedEcdsaMetadata?.selection;
1322
- const confirmedEmailOtpDeps = args.confirmedDeps;
1323
- const emailOtpAuthority = (args.ecdsaAuthorization === "operation_step_up" && isEmailOtpWalletAuthAuthority(args.capability.authority) ? emailOtpEcdsaCapabilityStepUpAuthority({
1324
- capability: args.capability,
1325
- materialActivation: args.materialActivation,
1326
- operationFingerprint: args.operationFingerprint
1327
- }) : void 0) ?? (preparedEcdsaLane && signingLaneAuthMethod(preparedEcdsaLane.auth) === SIGNER_AUTH_METHODS.emailOtp ? emailOtpStepUpAuthorityForSelection({
1328
- selection: preparedSelection,
1329
- operationFingerprintDigest: args.operationFingerprintDigest
1330
- }) : void 0);
1331
- const emailOtpAuthBridge = emailOtpAuthority ? createEmailOtpEcdsaTransactionSigningBridge({
1332
- walletId,
1333
- walletSession: args.walletSession,
1334
- chain: args.chain,
1335
- ...preparedEcdsaLane ? { selectedLane: preparedEcdsaLane } : {},
1336
- authority: emailOtpAuthority,
1337
- operationFingerprintDigest: args.operationFingerprintDigest,
1338
- onEvent: args.onEvent,
1339
- requestEmailOtpTransactionSigningChallenge: confirmedEmailOtpDeps.requestEmailOtpTransactionSigningChallenge
1340
- }) : null;
1341
- const signingIntent = SigningOperationIntent.TransactionSign;
1342
- let plannedEcdsaSigningAuthPlan = null;
1343
- let plannedSigningSessionPlan;
1344
- if (reusableSessionEcdsaOperation) {
1345
- const preparedOperation = reusableSessionEcdsaOperation;
1346
- const signingSessionPlan = preparedOperation.signingSessionPlan;
1347
- plannedSigningSessionPlan = signingSessionPlan;
1348
- if (signingSessionPlan.kind === SigningSessionPlanKind.NotReady) throw new Error(`[SigningEngine] ECDSA signing session is not ready: ${signingSessionPlan.reason}`);
1349
- plannedEcdsaSigningAuthPlan = signingAuthPlanFromSigningSessionPlan({
1350
- plan: signingSessionPlan,
1351
- accountId: String(walletId),
1352
- intent: signingIntent,
1353
- curve: "ecdsa",
1354
- expiresAtMs: preparedOperation.expiresAtMs,
1355
- remainingUses: preparedOperation.remainingUses
1356
- });
1357
- }
1358
- const directAuthPlan = plannedEcdsaSigningAuthPlan ? null : await resolveDirectSigningAuthPlan();
1359
- const signingAuthPlan = plannedEcdsaSigningAuthPlan || directAuthPlan.signingAuthPlan;
1360
- const activeEmailOtpAuthBridge = directAuthPlan?.emailOtpAuthBridge || emailOtpAuthBridge;
1361
- if (signingAuthPlan.kind !== SigningAuthPlanKind.EmailOtpReauth || !activeEmailOtpAuthBridge) return {
1362
- signingAuthPlan,
1363
- ...plannedSigningSessionPlan ? { signingSessionPlan: plannedSigningSessionPlan } : {}
1364
- };
1365
- const prepareChallenge = async () => {
1366
- const activeChallenge = await activeEmailOtpAuthBridge.challenge();
1367
- return {
1368
- challengeId: activeChallenge.challengeId,
1369
- ...activeChallenge.email ? { emailHint: activeChallenge.email } : {}
1370
- };
1371
- };
1372
- return {
1373
- signingAuthPlan,
1374
- ...plannedSigningSessionPlan ? { signingSessionPlan: plannedSigningSessionPlan } : {},
1375
- emailOtpSigning: {
1376
- prepare: prepareChallenge,
1377
- resend: async () => {
1378
- return await prepareChallenge();
1379
- }
1380
- }
1381
- };
1382
- async function resolveDirectSigningAuthPlan() {
1383
- if (args.ecdsaAuthorization === "operation_step_up") {
1384
- if (isPasskeyWalletAuthAuthority(args.capability.authority)) return { signingAuthPlan: {
1385
- kind: SigningAuthPlanKind.PasskeyReauth,
1386
- method: "passkey"
1387
- } };
1388
- if (isEmailOtpWalletAuthAuthority(args.capability.authority)) {
1389
- if (!emailOtpAuthBridge) throw new Error("[SigningEngine] Email OTP step-up authority is unavailable for the selected capability");
1390
- return {
1391
- signingAuthPlan: {
1392
- kind: SigningAuthPlanKind.EmailOtpReauth,
1393
- method: "email_otp"
1394
- },
1395
- emailOtpAuthBridge
1396
- };
1397
- }
1398
- args.capability.authority;
1399
- }
1400
- if (!(Array.isArray(args.accountAuth.linkedAuthMethods) ? args.accountAuth.linkedAuthMethods : []).includes(args.accountAuth.primaryAuthMethod)) throw new Error(`[SigningEngine] primary auth method is not linked: ${String(args.accountAuth.primaryAuthMethod || "")}`);
1401
- if (args.accountAuth.primaryAuthMethod === SIGNER_AUTH_METHODS.passkey) return { signingAuthPlan: {
1402
- kind: SigningAuthPlanKind.PasskeyReauth,
1403
- method: "passkey"
1404
- } };
1405
- if (args.accountAuth.primaryAuthMethod === SIGNER_AUTH_METHODS.emailOtp) {
1406
- if (!emailOtpAuthBridge) throw new Error("[SigningEngine] Email OTP transaction signing requires ECDSA lane state");
1407
- return {
1408
- signingAuthPlan: {
1409
- kind: SigningAuthPlanKind.EmailOtpReauth,
1410
- method: "email_otp"
1411
- },
1412
- emailOtpAuthBridge
1413
- };
1414
- }
1415
- throw new Error(`[SigningEngine] unsupported primary auth method: ${String(args.accountAuth.primaryAuthMethod || "")}`);
1416
- }
1417
- }
1418
- //#endregion
1419
- //#region src/core/signingEngine/flows/signEvmFamily/ecdsaSelection.ts
1420
- function ecdsaLaneCandidateAuthMethod(candidate) {
1421
- switch (laneCandidateAuthMethod(candidate)) {
1422
- case SIGNER_AUTH_METHODS.emailOtp: return SIGNER_AUTH_METHODS.emailOtp;
1423
- case SIGNER_AUTH_METHODS.passkey: return SIGNER_AUTH_METHODS.passkey;
1424
- }
1425
- throw new Error("[SigningEngine][ecdsa] unsupported ECDSA lane auth method");
1426
- }
1427
- function walletAuthWithSelectedPrimary(accountAuth, authMethod) {
1428
- return {
1429
- ...accountAuth,
1430
- primaryAuthMethod: authMethod,
1431
- linkedAuthMethods: Array.from(new Set([...accountAuth.linkedAuthMethods, authMethod]))
1432
- };
1433
- }
1434
- function resolvedEvmFamilyEcdsaSigningLaneFromCandidate(candidate) {
1435
- const buildLane = candidate.chainTarget.kind === "tempo" ? buildTempoTransactionSigningLane : buildEvmTransactionSigningLane;
1436
- const base = {
1437
- key: candidate.key,
1438
- materialActivation: candidate.materialActivation,
1439
- keyHandle: candidate.keyHandle,
1440
- walletId: candidate.walletId,
1441
- chainTarget: candidate.chainTarget,
1442
- authorization: candidate.authorization
1443
- };
1444
- return requireResolvedEvmFamilyEcdsaSigningLane({
1445
- lane: buildLane(candidate.auth.kind === "email_otp" ? {
1446
- ...base,
1447
- auth: candidate.auth,
1448
- retention: "session",
1449
- sessionOrigin: "per_operation"
1450
- } : {
1451
- ...base,
1452
- auth: candidate.auth,
1453
- storageSource: "manual-bootstrap"
1454
- }),
1455
- chain: candidate.chain,
1456
- context: "build exact ECDSA candidate signing lane"
1457
- });
1458
- }
1459
- function laneCandidateDiagnosticsBase(candidate) {
1460
- return {
1461
- authMethod: ecdsaLaneCandidateAuthMethod(candidate),
1462
- chain: candidate.chain,
1463
- chainTarget: candidate.chainTarget,
1464
- state: candidate.state,
1465
- walletSessionId: candidate.authorization.operationCredential.walletSessionId,
1466
- materialActivationId: candidate.materialActivation.activationId,
1467
- remainingUses: candidate.authorization.runtime.remainingUses,
1468
- expiresAtMs: candidate.authorization.runtime.expiresAtMs
1469
- };
1470
- }
1471
- function summarizeLaneCandidate(candidate) {
1472
- return {
1473
- ...laneCandidateDiagnosticsBase(candidate),
1474
- source: "canonical_capability"
1475
- };
1476
- }
1477
- function isExactEmailOtpAuthorization(authorization) {
1478
- return authorization.selectedAuthMethod.kind === "email_otp" && authorization.runtime.authBinding.kind === "email_otp";
1479
- }
1480
- function isExactDirectEmailOtpAuthorization(authorization) {
1481
- return authorization.runtime.kind === "exact_ecdsa_direct_capability_runtime_v1";
1482
- }
1483
- function isExactSealedEmailOtpAuthorization(authorization) {
1484
- return authorization.runtime.kind === "exact_ecdsa_sealed_runtime_v1";
1485
- }
1486
- function requirePasskeyEcdsaLaneCandidate(candidate) {
1487
- if (candidate.auth.kind !== "passkey") throw new Error("[SigningEngine][ecdsa] passkey committed lane requires passkey candidate");
1488
- return {
1489
- ...candidate,
1490
- auth: candidate.auth
1491
- };
1492
- }
1493
- function assertEcdsaCommittedLaneAuthorityMatchesWallet(args) {
1494
- const authorityWalletId = String(args.authority.walletId);
1495
- if (String(args.lane.key.walletId) === authorityWalletId && String(args.candidate.walletId) === authorityWalletId) return;
1496
- throw new Error(`[SigningEngine][ecdsa] ${args.context} committed lane authority wallet mismatch`);
1497
- }
1498
- function buildEcdsaSelectionDiagnostics(args) {
1499
- return { selectedLaneCandidate: summarizeLaneCandidate(args.candidate) };
1500
- }
1501
- async function commitPasskeyEcdsaLaneForSelection(args) {
1502
- const candidate = requirePasskeyEcdsaLaneCandidate(args.candidate);
1503
- const authority = (await args.deps.resolveCanonicalEcdsaSigningCapability({
1504
- walletId: candidate.walletId,
1505
- chainTarget: candidate.chainTarget,
1506
- materialActivation: candidate.materialActivation
1507
- })).authority;
1508
- if (!isPasskeyWalletAuthAuthority(authority) || String(authority.verifier.rpId) !== String(candidate.auth.rpId) || authority.factor.credentialIdB64u !== candidate.auth.credentialIdB64u) throw new Error("[SigningEngine][ecdsa] exact Passkey capability authority changed");
1509
- assertEcdsaCommittedLaneAuthorityMatchesWallet({
1510
- authority,
1511
- lane: args.lane,
1512
- candidate,
1513
- context: "Passkey"
1514
- });
1515
- return {
1516
- lane: args.lane,
1517
- authority,
1518
- authorization: args.lane.authorization
1519
- };
1520
- }
1521
- async function resolveEmailOtpAuthorityForSelection(args) {
1522
- const exactLane = exactEcdsaSigningLaneIdentityFromSelectedLane(args.lane);
1523
- const laneAuthority = await args.deps.resolveDurableEmailOtpEcdsaSigningSessionAuthority({
1524
- lane: exactLane,
1525
- chain: args.lane.chainTarget.kind
1526
- });
1527
- if (laneAuthority) {
1528
- if (!isExactEmailOtpAuthorization(laneAuthority)) return null;
1529
- return {
1530
- kind: "durable_authority_backed",
1531
- authorization: laneAuthority
1532
- };
1533
- }
1534
- logEvmFamilyEcdsaLaneDiagnostic("Email OTP exact ECDSA authority not found", {
1535
- lane: summarizeEvmFamilyEcdsaLane(args.lane),
1536
- candidate: summarizeLaneCandidate(args.candidate)
1537
- });
1538
- return null;
1539
- }
1540
- function requireEmailOtpSelectionAuthority(args) {
1541
- if (args.authority) return args.authority;
1542
- logEvmFamilyEcdsaLaneDiagnostic("Email OTP exact ECDSA signing-session authority missing", {
1543
- lane: summarizeEvmFamilyEcdsaLane(args.lane),
1544
- candidate: summarizeLaneCandidate(args.candidate)
1545
- });
1546
- throw new Error("Email OTP ECDSA committed lane is missing wallet-session authority; unlock wallet again");
1547
- }
1548
- function requireEmailOtpEcdsaSigningSessionAuthLane(args) {
1549
- const authLane = emailOtpEcdsaSigningSessionAuthLane(args.authority.authorization);
1550
- if (authLane.kind === "signing_session" && authLane.curve === "ecdsa" && thresholdEcdsaChainTargetsEqual(authLane.chainTarget, args.lane.chainTarget)) return authLane;
1551
- logEvmFamilyEcdsaLaneDiagnostic("Email OTP ECDSA committed lane rejected for authority shape", {
1552
- authorityKind: authLane.kind,
1553
- authorityCurve: authLane.kind === "signing_session" ? authLane.curve : null,
1554
- lane: summarizeEvmFamilyEcdsaLane(args.lane),
1555
- candidate: summarizeLaneCandidate(args.candidate)
1556
- });
1557
- throw new Error("Email OTP ECDSA committed lane authority is not an ECDSA signing session; unlock wallet again");
1558
- }
1559
- function requireCommittedLaneForReady(args) {
1560
- if (args.committedLane && args.committedLane.authority.factor.kind === args.expectedFactor) return args.committedLane;
1561
- logEvmFamilyEcdsaLaneDiagnostic("ECDSA committed lane missing for ready signing", {
1562
- expectedFactor: args.expectedFactor,
1563
- lane: summarizeEvmFamilyEcdsaLane(args.lane),
1564
- candidate: summarizeLaneCandidate(args.candidate)
1565
- });
1566
- throw new Error("[SigningEngine][ecdsa] committed lane is unavailable for ready signing");
1567
- }
1568
- function commitEmailOtpEcdsaLaneForSelection(args) {
1569
- const authorization = args.authority.authorization;
1570
- if (authorization.runtime.authBinding.kind !== "email_otp") throw new Error("[SigningEngine][ecdsa] Email OTP authority runtime binding is invalid");
1571
- const authority = authorization.runtime.authBinding.emailOtpAuthority;
1572
- assertEcdsaCommittedLaneAuthorityMatchesWallet({
1573
- authority,
1574
- lane: args.lane,
1575
- candidate: args.candidate,
1576
- context: "Email OTP"
1577
- });
1578
- if (isExactDirectEmailOtpAuthorization(authorization)) return {
1579
- lane: args.lane,
1580
- authority,
1581
- authorization
1582
- };
1583
- if (isExactSealedEmailOtpAuthorization(authorization)) return {
1584
- lane: args.lane,
1585
- authority,
1586
- authorization,
1587
- authLane: requireEmailOtpEcdsaSigningSessionAuthLane({
1588
- authority: args.authority,
1589
- lane: args.lane,
1590
- candidate: args.candidate
1591
- })
1592
- };
1593
- throw new Error("[SigningEngine][ecdsa] Email OTP authorization runtime is unsupported");
1594
- }
1595
- async function resolveEvmFamilyEcdsaSigningSelection(args) {
1596
- const lane = resolvedEvmFamilyEcdsaSigningLaneFromCandidate(args.laneCandidate);
1597
- const emailOtpAuthorityLane = lane;
1598
- const candidateAuthMethod = ecdsaLaneCandidateAuthMethod(args.laneCandidate);
1599
- const emailOtpAuthority = candidateAuthMethod === SIGNER_AUTH_METHODS.emailOtp ? await resolveEmailOtpAuthorityForSelection({
1600
- deps: args.deps,
1601
- lane: emailOtpAuthorityLane,
1602
- candidate: args.laneCandidate
1603
- }) : null;
1604
- const requiredEmailOtpAuthority = candidateAuthMethod === SIGNER_AUTH_METHODS.emailOtp ? requireEmailOtpSelectionAuthority({
1605
- authority: emailOtpAuthority,
1606
- lane: emailOtpAuthorityLane,
1607
- candidate: args.laneCandidate
1608
- }) : null;
1609
- const committedEmailOtpLane = candidateAuthMethod === SIGNER_AUTH_METHODS.emailOtp && requiredEmailOtpAuthority ? commitEmailOtpEcdsaLaneForSelection({
1610
- authority: requiredEmailOtpAuthority,
1611
- lane: emailOtpAuthorityLane,
1612
- candidate: args.laneCandidate
1613
- }) : null;
1614
- const committedPasskeyLane = candidateAuthMethod === SIGNER_AUTH_METHODS.passkey ? await commitPasskeyEcdsaLaneForSelection({
1615
- deps: args.deps,
1616
- lane,
1617
- candidate: args.laneCandidate
1618
- }) : null;
1619
- const committedLane = committedEmailOtpLane ?? committedPasskeyLane;
1620
- const committedFactor = committedLane?.authority.factor.kind;
1621
- const selectedAccountAuth = walletAuthWithSelectedPrimary(await resolveEvmFamilyTransactionWalletAuth({
1622
- senderSignatureAlgorithm: args.senderSignatureAlgorithm,
1623
- signerAuthMethod: committedFactor ?? candidateAuthMethod
1624
- }), candidateAuthMethod);
1625
- const diagnostics = buildEcdsaSelectionDiagnostics({ candidate: args.laneCandidate });
1626
- return {
1627
- kind: "ready",
1628
- accountAuth: selectedAccountAuth,
1629
- lane,
1630
- committedLane: requireCommittedLaneForReady({
1631
- committedLane,
1632
- expectedFactor: candidateAuthMethod,
1633
- lane,
1634
- candidate: args.laneCandidate
1635
- }),
1636
- diagnostics
1637
- };
1638
- }
1639
- //#endregion
1640
- //#region src/core/signingEngine/flows/signEvmFamily/preparedSigning.ts
1641
- function buildEvmFamilyTransactionSigningIntent(args) {
1642
- const base = {
1643
- walletId: args.walletId,
1644
- curve: "ecdsa",
1645
- authSelectionPolicy: args.authSelectionPolicy,
1646
- operationUsesNeeded: args.operationUsesNeeded,
1647
- ...args.operationId ? { operationId: args.operationId } : {}
1648
- };
1649
- return args.signingTarget.kind === "tempo" ? {
1650
- ...base,
1651
- chain: "tempo",
1652
- chainTarget: args.signingTarget
1653
- } : {
1654
- ...base,
1655
- chain: "evm",
1656
- chainTarget: args.signingTarget
1657
- };
1658
- }
1659
- function resolveEvmFamilyTransactionAuthSelectionPolicy(args) {
1660
- return {
1661
- kind: "account_class",
1662
- authMethod: args.candidateAuthMethod
1663
- };
1664
- }
1665
- function requireSingleConcreteAuthMethodForEcdsaTarget(args) {
1666
- const authMethods = /* @__PURE__ */ new Set();
1667
- for (const lane of ecdsaAvailableLaneCandidatesForTarget(args.availableLanes, args.signingTarget)) {
1668
- if (!isConcreteAvailableSigningLane(lane)) continue;
1669
- if (!thresholdEcdsaChainTargetsEqual(lane.chainTarget, args.signingTarget)) continue;
1670
- authMethods.add(availableEcdsaSigningLaneAuthMethod(lane));
1671
- }
1672
- if (authMethods.size !== 1) throw new Error("[SigningEngine][ecdsa] exact capability authority is unavailable or ambiguous");
1673
- return Array.from(authMethods)[0];
1674
- }
1675
- function summarizeEcdsaAvailableLane(lane) {
1676
- if (!lane) return { present: false };
1677
- if (!isConcreteAvailableSigningLane(lane)) return {
1678
- present: true,
1679
- curve: lane.curve,
1680
- chain: lane.chainTarget.kind,
1681
- chainTarget: lane.chainTarget,
1682
- state: lane.state
1683
- };
1684
- const evmFamilyKeyFingerprint = deriveEvmFamilyKeyFingerprintFromPublicFacts({
1685
- walletId: lane.key.walletId,
1686
- publicFacts: lane.publicFacts
1687
- });
1688
- return {
1689
- present: true,
1690
- authMethod: availableEcdsaSigningLaneAuthMethod(lane),
1691
- curve: lane.curve,
1692
- chain: lane.chainTarget?.kind,
1693
- chainTarget: lane.chainTarget,
1694
- ...evmFamilyKeyFingerprint ? { evmFamilyKeyFingerprint } : {},
1695
- state: lane.state,
1696
- source: lane.source,
1697
- walletSessionId: lane.authorization?.operationCredential.walletSessionId,
1698
- materialActivationId: lane.materialActivation.activationId,
1699
- remainingUses: lane.remainingUses,
1700
- expiresAtMs: lane.expiresAtMs
1701
- };
1702
- }
1703
- function summarizeEcdsaAvailableCandidatesByTarget(availableLanes) {
1704
- return Object.fromEntries(Object.entries(availableLanes.ecdsa.candidatesByTarget).map(([targetKey, candidates]) => [targetKey, candidates.map((candidate) => summarizeEcdsaAvailableLane(candidate))]));
1705
- }
1706
- function emitVisibleEcdsaLaneDiagnostic(label, payload) {
1707
- try {
1708
- console.warn(label, JSON.stringify(payload, null, 2));
1709
- } catch {
1710
- try {
1711
- console.warn(label, payload);
1712
- } catch {}
1713
- }
1714
- }
1715
- function summarizeEcdsaSelectedLanesByTarget(availableLanes) {
1716
- return Object.fromEntries(Object.entries(availableLanes.ecdsa.lanesByTarget).map(([targetKey, lane]) => [targetKey, summarizeEcdsaAvailableLane(lane)]));
1717
- }
1718
- function summarizeEcdsaLaneCandidate(candidate) {
1719
- if (!candidate) return { present: false };
1720
- return {
1721
- present: true,
1722
- authMethod: laneCandidateAuthMethod(candidate),
1723
- curve: candidate.curve,
1724
- chain: candidate.chainTarget.kind,
1725
- chainTarget: candidate.chainTarget,
1726
- state: candidate.state,
1727
- source: candidate.source,
1728
- materialActivationId: candidate.materialActivation.activationId,
1729
- authorizationState: candidate.authorizationState,
1730
- ...candidate.authorizationState === "authorized" ? {
1731
- walletSessionId: candidate.authorization.operationCredential.walletSessionId,
1732
- remainingUses: candidate.authorization.runtime.remainingUses,
1733
- expiresAtMs: candidate.authorization.runtime.expiresAtMs
1734
- } : {}
1735
- };
1736
- }
1737
- function exactEcdsaAuthorizationIdentityMatches(left, right) {
1738
- const leftSession = left.session;
1739
- const rightSession = right.session;
1740
- return left.selectedAuthority.authorityId === right.selectedAuthority.authorityId && left.selectedAuthMethod.kind === right.selectedAuthMethod.kind && left.selectedAuthMethod.walletAuthMethodId === right.selectedAuthMethod.walletAuthMethodId && leftSession.walletId === rightSession.walletId && leftSession.authorityId === rightSession.authorityId && leftSession.authMethodId === rightSession.authMethodId && leftSession.authorizationId === rightSession.authorizationId && leftSession.quotaId === rightSession.quotaId && leftSession.authorityDigestB64u === rightSession.authorityDigestB64u && leftSession.authorityRevocationEpoch === rightSession.authorityRevocationEpoch && left.operationCredential.walletSessionId === right.operationCredential.walletSessionId && left.operationCredential.token === right.operationCredential.token && exactEcdsaWalletSessionRuntimesMatch(left.runtime, right.runtime);
1741
- }
1742
- function assertSelectionMatchesLaneCandidate(args) {
1743
- const candidate = args.candidate;
1744
- const candidateAuthMethod = laneCandidateAuthMethod(candidate);
1745
- const committedAuthMethod = args.selection.committedLane.authority.factor.kind;
1746
- if (candidateAuthMethod !== committedAuthMethod) throw new Error(`[SigningEngine][ecdsa] prepared auth method ${candidateAuthMethod} did not match committed lane auth method ${committedAuthMethod}`);
1747
- const selectionLaneAuthMethod = signingLaneAuthMethod(args.selection.lane.auth);
1748
- if (selectionLaneAuthMethod !== committedAuthMethod) throw new Error(`[SigningEngine][ecdsa] selected lane auth method ${selectionLaneAuthMethod} did not match committed lane auth method ${committedAuthMethod}`);
1749
- if (!exactEcdsaAuthorizationIdentityMatches(candidate.authorization, args.selection.lane.authorization)) throw new Error("[SigningEngine][ecdsa] prepared authorization did not match lane");
1750
- if (exactSigningLaneIdentityKey(exactEcdsaSigningLaneIdentityFromSelectedLane(args.selection.committedLane.lane)) !== exactSigningLaneIdentityKey(exactEcdsaSigningLaneIdentityFromSelectedLane(args.selection.lane))) throw new Error("[SigningEngine][ecdsa] committed lane did not match selected lane");
1751
- }
1752
- function readinessFromSelection(selection) {
1753
- const candidateState = selection.diagnostics.selectedLaneCandidate.state;
1754
- const { expiresAtMs, remainingUses } = selection.lane.authorization.runtime;
1755
- if (candidateState === "expired") return {
1756
- readiness: {
1757
- status: "expired",
1758
- curve: "ecdsa",
1759
- materialActivation: selection.lane.materialActivation,
1760
- authorization: selection.lane.authorization,
1761
- expiresAtMs
1762
- },
1763
- expiresAtMs,
1764
- remainingUses
1765
- };
1766
- if (candidateState === "exhausted") return {
1767
- readiness: {
1768
- status: "exhausted",
1769
- curve: "ecdsa",
1770
- materialActivation: selection.lane.materialActivation,
1771
- authorization: selection.lane.authorization,
1772
- expiresAtMs,
1773
- remainingUses
1774
- },
1775
- expiresAtMs,
1776
- remainingUses
1777
- };
1778
- return {
1779
- readiness: {
1780
- status: "ready",
1781
- curve: "ecdsa",
1782
- materialActivation: selection.lane.materialActivation,
1783
- authorization: selection.lane.authorization,
1784
- expiresAtMs,
1785
- remainingUses
1786
- },
1787
- expiresAtMs,
1788
- remainingUses
1789
- };
1790
- }
1791
- function assertPreparedMaterialBindingMatchesOperation(args) {
1792
- const operation = args.preparedOperation.operation;
1793
- if (!operation) throw new Error("[SigningEngine][ecdsa] prepared material requires an operation identity");
1794
- if (args.metadata.materialBinding.operationId !== operation.operationId) throw new Error("[SigningEngine][ecdsa] prepared material operation identity mismatch");
1795
- if (args.metadata.materialBinding.operationFingerprint && operation.operationFingerprint && args.metadata.materialBinding.operationFingerprint !== operation.operationFingerprint) throw new Error("[SigningEngine][ecdsa] prepared material fingerprint mismatch");
1796
- const laneIdentityKey = exactSigningLaneIdentityKey(exactSigningLaneIdentityFromSelectedLane(args.preparedOperation.lane));
1797
- if (args.metadata.materialBinding.laneIdentityKey !== laneIdentityKey) throw new Error("[SigningEngine][ecdsa] prepared material lane identity mismatch");
1798
- }
1799
- async function prepareEvmFamilyEcdsaSigningSession(args) {
1800
- const chainTarget = args.signingTarget;
1801
- const chain = chainTarget.kind;
1802
- const walletId = toWalletId(args.walletSession.walletId);
1803
- const ownerScope = await args.deps.resolveOwnerLaneScope(walletId);
1804
- const candidateAvailableLanes = await args.deps.readAvailableSigningLanesForSigning({
1805
- walletId,
1806
- curve: "ecdsa",
1807
- ecdsaChainTargets: [chainTarget],
1808
- ownerScope
1809
- });
1810
- const laneReadDiagnostic = {
1811
- walletId,
1812
- chain,
1813
- chainTarget,
1814
- targetKey: thresholdEcdsaChainTargetKey(chainTarget),
1815
- candidateCount: ecdsaAvailableLaneCandidatesForTarget(candidateAvailableLanes, chainTarget).length,
1816
- selectedLanesByTarget: summarizeEcdsaSelectedLanesByTarget(candidateAvailableLanes),
1817
- candidatesByTarget: summarizeEcdsaAvailableCandidatesByTarget(candidateAvailableLanes)
1818
- };
1819
- if (laneReadDiagnostic.candidateCount === 0) emitVisibleEcdsaLaneDiagnostic("[ECDSA_LANE_READ_DIAGNOSTIC][no-candidates]", laneReadDiagnostic);
1820
- emitSigningSessionFlowTrace("evm-family", {
1821
- stage: "ecdsa_prepare.available_lanes_read",
1822
- ...laneReadDiagnostic
1823
- });
1824
- const candidateAuthMethod = requireSingleConcreteAuthMethodForEcdsaTarget({
1825
- availableLanes: candidateAvailableLanes,
1826
- signingTarget: args.signingTarget
1827
- });
1828
- const transactionIntent = buildEvmFamilyTransactionSigningIntent({
1829
- walletId,
1830
- authSelectionPolicy: resolveEvmFamilyTransactionAuthSelectionPolicy({ candidateAuthMethod }),
1831
- operationUsesNeeded: 1,
1832
- signingTarget: args.signingTarget,
1833
- ...args.signingOperation.operationId ? { operationId: args.signingOperation.operationId } : {}
1834
- });
1835
- const materialSelection = selectEvmFamilyEcdsaMaterialCandidate({
1836
- intent: transactionIntent,
1837
- availableLanes: candidateAvailableLanes
1838
- });
1839
- emitSigningSessionFlowTrace("evm-family", {
1840
- stage: "ecdsa_prepare.material_candidate_selected",
1841
- walletId,
1842
- chain,
1843
- chainTarget,
1844
- primaryAuthMethod: materialSelection.ok ? laneCandidateAuthMethod(materialSelection.candidate) : candidateAuthMethod,
1845
- selectionOk: materialSelection.ok,
1846
- ...materialSelection.ok ? {
1847
- authorizationState: materialSelection.kind,
1848
- selectedAvailableLane: summarizeEcdsaAvailableLane(materialSelection.availableLane),
1849
- selectedLaneCandidate: summarizeEcdsaLaneCandidate(materialSelection.candidate),
1850
- ...materialSelection.kind === "authorized" ? { transactionLane: materialSelection.lane } : {}
1851
- } : { failure: materialSelection.failure }
1852
- });
1853
- if (!materialSelection.ok) {
1854
- const noMaterialDiagnostic = {
1855
- stage: "ecdsa_prepare.exact_material_candidate_missing",
1856
- walletId,
1857
- chain,
1858
- chainTarget,
1859
- targetKey: thresholdEcdsaChainTargetKey(chainTarget),
1860
- primaryAuthMethod: candidateAuthMethod,
1861
- candidateCount: laneReadDiagnostic.candidateCount,
1862
- ecdsaTargets: candidateAvailableLanes.ecdsa.targets,
1863
- selectedLanesByTarget: laneReadDiagnostic.selectedLanesByTarget,
1864
- candidatesByTarget: laneReadDiagnostic.candidatesByTarget,
1865
- selectionFailure: materialSelection.failure
1866
- };
1867
- emitVisibleEcdsaLaneDiagnostic("[ECDSA_NO_LANE_DIAGNOSTIC]", noMaterialDiagnostic);
1868
- emitSigningSessionFlowFailure("evm-family", noMaterialDiagnostic);
1869
- throw new Error(`[SigningEngine][ecdsa] transaction signing requires exact ECDSA material for ${chain}`);
1870
- }
1871
- if (materialSelection.kind === "authorization_required") {
1872
- const candidate = materialSelection.candidate;
1873
- args.diagnostics.selection = {
1874
- kind: "authorization_required",
1875
- authMethod: availableEcdsaSigningLaneAuthMethod(materialSelection.availableLane),
1876
- candidate: summarizeEcdsaLaneCandidate(candidate)
1877
- };
1878
- return {
1879
- kind: "authorization_required",
1880
- authMethod: availableEcdsaSigningLaneAuthMethod(materialSelection.availableLane),
1881
- availableLanesGeneration: candidateAvailableLanes.generation,
1882
- identity: exactEcdsaSigningLaneIdentity({
1883
- signer: buildEvmFamilyEcdsaSignerBinding({
1884
- walletId: candidate.walletId,
1885
- chainTarget: candidate.chainTarget,
1886
- keyHandle: candidate.keyHandle,
1887
- key: candidate.key,
1888
- materialActivation: candidate.materialActivation
1889
- }),
1890
- auth: candidate.auth
1891
- }),
1892
- candidate,
1893
- intent: transactionIntent
1894
- };
1895
- }
1896
- const laneCandidate = materialSelection.candidate;
1897
- const transactionLane = materialSelection.lane;
1898
- const preparedTransaction = await prepareTransactionSigningOperation({
1899
- intent: transactionIntent,
1900
- coordinator: args.signingSessionCoordinator,
1901
- operation: args.signingOperation,
1902
- forceFreshAuth: args.forceFreshAuth === true,
1903
- missingWhenExpiresAtMissing: true,
1904
- onPlannerTrace: (event) => emitSigningPlannerDecisionTrace("evm-family", event),
1905
- lifecycleAdapter: { prepare: async () => {
1906
- const selection = await resolveEvmFamilyEcdsaSigningSelection({
1907
- deps: args.deps,
1908
- walletId,
1909
- chainTarget,
1910
- senderSignatureAlgorithm: "secp256k1",
1911
- laneCandidate
1912
- });
1913
- emitSigningSessionFlowTrace("evm-family", {
1914
- stage: "ecdsa_prepare.material_selected",
1915
- walletId,
1916
- chain,
1917
- chainTarget,
1918
- selectionKind: selection.kind,
1919
- authMethod: selection.committedLane.authority.factor.kind,
1920
- lane: summarizeEvmFamilyEcdsaLane(selection.lane),
1921
- diagnostics: selection.diagnostics
1922
- });
1923
- const committedSelectionAuthMethod = selection.committedLane.authority.factor.kind;
1924
- const availableLanes = await args.deps.readAvailableSigningLanesForSigning({
1925
- walletId,
1926
- curve: "ecdsa",
1927
- ecdsaChainTargets: [chainTarget],
1928
- authMethod: committedSelectionAuthMethod,
1929
- ownerScope
1930
- });
1931
- emitSigningLaneResolutionTrace("evm-family", selection.lane, { reason: "evm_family_ecdsa_selection" });
1932
- args.diagnostics.selection = {
1933
- kind: selection.kind,
1934
- authMethod: committedSelectionAuthMethod,
1935
- lane: summarizeEvmFamilyEcdsaLane(selection.lane),
1936
- diagnostics: selection.diagnostics
1937
- };
1938
- const resolvedLane = requireResolvedEvmFamilyEcdsaSigningLane({
1939
- lane: selection.lane,
1940
- chain,
1941
- context: "EVM-family signing preparation",
1942
- diagnostics: args.diagnostics
1943
- });
1944
- assertSelectionMatchesLaneCandidate({
1945
- candidate: laneCandidate,
1946
- selection
1947
- });
1948
- const readiness = readinessFromSelection(selection);
1949
- emitSigningSessionFlowTrace("evm-family", {
1950
- stage: "ecdsa_prepare.readiness",
1951
- walletId,
1952
- chain,
1953
- chainTarget,
1954
- authMethod: committedSelectionAuthMethod,
1955
- lane: summarizeEvmFamilyEcdsaLane(resolvedLane),
1956
- readinessStatus: readiness.readiness.status
1957
- });
1958
- emitSigningBoundaryTrace("evm-family", createSigningBoundaryTraceEvent({
1959
- event: "pre_confirm_readiness_checked",
1960
- lane: resolvedLane,
1961
- readinessStatus: readiness.readiness.status,
1962
- phase: "pre_confirm"
1963
- }));
1964
- return {
1965
- lane: resolvedLane,
1966
- transactionLane,
1967
- transactionIntent,
1968
- readiness: {
1969
- readiness: readiness.readiness,
1970
- expiresAtMs: readiness.expiresAtMs,
1971
- remainingUses: readiness.remainingUses
1972
- },
1973
- availableLanesGeneration: availableLanes.generation,
1974
- metadata: {
1975
- accountAuth: selection.accountAuth,
1976
- authMethod: committedSelectionAuthMethod,
1977
- source: selection.diagnostics.selectedLaneCandidate.source,
1978
- selection,
1979
- materialBinding: {
1980
- operationId: args.signingOperation.operationId,
1981
- ...args.signingOperation.operationFingerprint ? { operationFingerprint: args.signingOperation.operationFingerprint } : {},
1982
- laneIdentityKey: exactSigningLaneIdentityKey(exactSigningLaneIdentityFromSelectedLane(resolvedLane))
1983
- },
1984
- availableLanesGeneration: availableLanes.generation
1985
- }
1986
- };
1987
- } }
1988
- });
1989
- const preparedOperation = preparedTransaction.thresholdOperation;
1990
- const metadata = preparedOperation.metadata;
1991
- assertPreparedMaterialBindingMatchesOperation({
1992
- metadata,
1993
- preparedOperation
1994
- });
1995
- return {
1996
- kind: "authorized",
1997
- accountAuth: metadata.accountAuth,
1998
- authMethod: metadata.authMethod,
1999
- source: metadata.source,
2000
- selection: metadata.selection,
2001
- availableLanesGeneration: metadata.availableLanesGeneration,
2002
- signingLane: preparedOperation.lane,
2003
- preparedOperation,
2004
- transactionOperation: preparedTransaction.transactionOperation
2005
- };
2006
- }
2007
- //#endregion
2008
- //#region src/core/signingEngine/flows/signEvmFamily/nonceLifecycleAdapter.ts
2009
- function toEvmFamilyManagedNonceReservationFromSignedResult(args) {
2010
- const snapshot = args.signedResult.managedNonce;
2011
- if (!snapshot || typeof snapshot !== "object") throw new Error("[SigningEngine][evm-family] managedNonce is required for nonce lifecycle");
2012
- try {
2013
- const parsed = fromManagedNonceReservationSnapshot(snapshot);
2014
- args.walletId;
2015
- return parsed;
2016
- } catch (error) {
2017
- throw new Error(`[SigningEngine][evm-family] invalid managedNonce: ${error instanceof Error ? error.message : String(error || "unknown error")}`);
2018
- }
2019
- }
2020
- async function releaseEvmFamilyNonceReservation(deps, reservation) {
2021
- const leaseRef = requireManagedNonceLeaseRef(reservation);
2022
- await deps.nonceCoordinator.release({
2023
- ...leaseRef,
2024
- reason: "signing_failed"
2025
- });
2026
- }
2027
- function formatNonceLaneStatus(status) {
2028
- return {
2029
- chainNextNonce: status.chainNextNonce.toString(),
2030
- unresolvedInFlightNonces: status.unresolvedInFlightNonces.map((value) => value.toString()),
2031
- blocked: status.blocked,
2032
- ...status.blockedNonce != null ? { blockedNonce: status.blockedNonce.toString() } : {}
2033
- };
2034
- }
2035
- async function reportEvmFamilyBroadcastAccepted(deps, args) {
2036
- const reservation = toEvmFamilyManagedNonceReservationFromSignedResult({
2037
- signedResult: args.signedResult,
2038
- walletId: args.walletId
2039
- });
2040
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2041
- walletId: args.walletId,
2042
- phase: SigningEventPhase.STEP_12_BROADCAST_ACCEPTED,
2043
- status: "running",
2044
- message: "Marking managed nonce lane as in-flight",
2045
- data: {
2046
- chain: reservation.chainTarget.kind,
2047
- networkKey: reservation.chainTarget.networkSlug,
2048
- chainId: reservation.chainTarget.chainId.toString(),
2049
- nonce: reservation.nonce.toString()
2050
- }
2051
- });
2052
- const txHash = requireEvmFamilyBroadcastTxHash(args.txHash || (args.signedResult.chain === "evm" ? args.signedResult.txHashHex : void 0));
2053
- await deps.nonceCoordinator.markBroadcastAccepted({
2054
- ...requireManagedNonceLeaseRef(reservation),
2055
- txHash
2056
- });
2057
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2058
- walletId: args.walletId,
2059
- phase: SigningEventPhase.STEP_12_BROADCAST_ACCEPTED,
2060
- status: "succeeded",
2061
- message: "Managed nonce lane marked in-flight",
2062
- data: {
2063
- chain: reservation.chainTarget.kind,
2064
- networkKey: reservation.chainTarget.networkSlug,
2065
- chainId: reservation.chainTarget.chainId.toString(),
2066
- nonce: reservation.nonce.toString(),
2067
- txHash
2068
- }
2069
- });
2070
- }
2071
- function requireEvmFamilyBroadcastTxHash(value) {
2072
- const normalized = String(value || "").trim().toLowerCase();
2073
- if (!/^0x[0-9a-f]{64}$/.test(normalized)) throw new Error("[SigningEngine][evm-family] broadcast acceptance requires txHash");
2074
- return normalized;
2075
- }
2076
- async function reportEvmFamilyBroadcastRejected(deps, args) {
2077
- const reservation = toEvmFamilyManagedNonceReservationFromSignedResult({
2078
- signedResult: args.signedResult,
2079
- walletId: args.walletId
2080
- });
2081
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2082
- walletId: args.walletId,
2083
- phase: SigningEventPhase.STEP_12_BROADCAST_REJECTED,
2084
- status: "running",
2085
- message: "Marking managed nonce reservation rejected",
2086
- data: {
2087
- chain: reservation.chainTarget.kind,
2088
- networkKey: reservation.chainTarget.networkSlug,
2089
- chainId: reservation.chainTarget.chainId.toString(),
2090
- nonce: reservation.nonce.toString()
2091
- }
2092
- });
2093
- await deps.nonceCoordinator.markBroadcastRejected({
2094
- ...requireManagedNonceLeaseRef(reservation),
2095
- error: args.error
2096
- });
2097
- const mappedError = mapToRetryableNonceStateError({
2098
- error: args.error,
2099
- chain: reservation.chainTarget.kind,
2100
- networkKey: reservation.chainTarget.networkSlug,
2101
- chainId: reservation.chainTarget.chainId
2102
- });
2103
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2104
- walletId: args.walletId,
2105
- phase: SigningEventPhase.STEP_12_BROADCAST_REJECTED,
2106
- status: "failed",
2107
- message: "Managed nonce reservation marked rejected",
2108
- data: {
2109
- chain: reservation.chainTarget.kind,
2110
- networkKey: reservation.chainTarget.networkSlug,
2111
- chainId: reservation.chainTarget.chainId.toString(),
2112
- nonce: reservation.nonce.toString()
2113
- }
2114
- });
2115
- if (!isNonceConflictRetryableError(mappedError) && !isNonceLaneBlockedRetryableError(mappedError)) return;
2116
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2117
- walletId: args.walletId,
2118
- phase: SigningEventPhase.STEP_13_NONCE_RECONCILE_STARTED,
2119
- status: "running",
2120
- message: "Reconciling managed nonce lane after broadcast error",
2121
- data: {
2122
- chain: reservation.chainTarget.kind,
2123
- networkKey: reservation.chainTarget.networkSlug,
2124
- chainId: reservation.chainTarget.chainId.toString(),
2125
- nonce: reservation.nonce.toString(),
2126
- errorCode: extractErrorCode(mappedError)
2127
- }
2128
- });
2129
- const laneStatus = await deps.nonceCoordinator.reconcile({ lane: evmManagedReservationToLane(reservation) }).catch(() => null);
2130
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2131
- walletId: args.walletId,
2132
- phase: SigningEventPhase.STEP_13_NONCE_RECONCILE_SUCCEEDED,
2133
- status: "succeeded",
2134
- message: "Managed nonce lane reconciled",
2135
- data: {
2136
- chain: reservation.chainTarget.kind,
2137
- networkKey: reservation.chainTarget.networkSlug,
2138
- chainId: reservation.chainTarget.chainId.toString(),
2139
- ...laneStatus ? { laneStatus: formatNonceLaneStatus(laneStatus) } : {}
2140
- }
2141
- });
2142
- throw mappedError;
2143
- }
2144
- async function reportEvmFamilyFinalized(deps, args) {
2145
- args.receiptStatus;
2146
- const reservation = toEvmFamilyManagedNonceReservationFromSignedResult({
2147
- signedResult: args.signedResult,
2148
- walletId: args.walletId
2149
- });
2150
- const txHash = args.txHash || (args.signedResult.chain === "evm" ? args.signedResult.txHashHex : void 0);
2151
- await deps.nonceCoordinator.markFinalized({
2152
- ...requireManagedNonceLeaseRef(reservation),
2153
- ...txHash ? { txHash } : {}
2154
- });
2155
- }
2156
- async function reportEvmFamilyDroppedOrReplaced(deps, args) {
2157
- const reservation = toEvmFamilyManagedNonceReservationFromSignedResult({
2158
- signedResult: args.signedResult,
2159
- walletId: args.walletId
2160
- });
2161
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2162
- walletId: args.walletId,
2163
- phase: args.reason === "replaced" ? SigningEventPhase.STEP_13_TRANSACTION_REPLACED : SigningEventPhase.STEP_13_TRANSACTION_DROPPED,
2164
- status: "running",
2165
- message: args.reason === "replaced" ? "Marking managed nonce lane replaced" : "Marking managed nonce lane dropped",
2166
- data: {
2167
- chain: reservation.chainTarget.kind,
2168
- networkKey: reservation.chainTarget.networkSlug,
2169
- chainId: reservation.chainTarget.chainId.toString(),
2170
- nonce: reservation.nonce.toString(),
2171
- reason: args.reason,
2172
- ...args.txHash ? { txHash: args.txHash } : {}
2173
- }
2174
- });
2175
- await deps.nonceCoordinator.markDroppedOrReplaced({
2176
- ...requireManagedNonceLeaseRef(reservation),
2177
- reason: args.reason,
2178
- ...args.txHash ? { txHash: args.txHash } : {}
2179
- });
2180
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2181
- walletId: args.walletId,
2182
- phase: args.reason === "replaced" ? SigningEventPhase.STEP_13_TRANSACTION_REPLACED : SigningEventPhase.STEP_13_TRANSACTION_DROPPED,
2183
- status: args.reason === "replaced" ? "succeeded" : "failed",
2184
- message: args.reason === "replaced" ? "Managed nonce lane marked replaced" : "Managed nonce lane marked dropped",
2185
- data: {
2186
- chain: reservation.chainTarget.kind,
2187
- networkKey: reservation.chainTarget.networkSlug,
2188
- chainId: reservation.chainTarget.chainId.toString(),
2189
- nonce: reservation.nonce.toString(),
2190
- reason: args.reason,
2191
- ...args.txHash ? { txHash: args.txHash } : {}
2192
- }
2193
- });
2194
- }
2195
- async function reconcileEvmFamilyNonceLane(deps, args) {
2196
- const reservation = toEvmFamilyManagedNonceReservationFromSignedResult({
2197
- signedResult: args.signedResult,
2198
- walletId: args.walletId
2199
- });
2200
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2201
- walletId: args.walletId,
2202
- phase: SigningEventPhase.STEP_13_NONCE_RECONCILE_STARTED,
2203
- status: "running",
2204
- message: "Reconciling managed nonce lane",
2205
- data: {
2206
- chain: reservation.chainTarget.kind,
2207
- networkKey: reservation.chainTarget.networkSlug,
2208
- chainId: reservation.chainTarget.chainId.toString()
2209
- }
2210
- });
2211
- const laneStatus = await deps.nonceCoordinator.reconcile({ lane: evmManagedReservationToLane(reservation) });
2212
- const formatted = formatNonceLaneStatus(laneStatus);
2213
- emitEvmFamilyBroadcastEvent(args.onEvent, {
2214
- walletId: args.walletId,
2215
- phase: SigningEventPhase.STEP_13_NONCE_RECONCILE_SUCCEEDED,
2216
- status: "succeeded",
2217
- message: "Managed nonce lane reconciled",
2218
- data: {
2219
- chain: reservation.chainTarget.kind,
2220
- networkKey: reservation.chainTarget.networkSlug,
2221
- chainId: reservation.chainTarget.chainId.toString(),
2222
- laneStatus: formatted
2223
- }
2224
- });
2225
- if (laneStatus.blocked) throw createEvmFamilySigningNonceLaneBlockedError({
2226
- chain: reservation.chainTarget.kind,
2227
- networkKey: reservation.chainTarget.networkSlug,
2228
- chainId: reservation.chainTarget.chainId,
2229
- blockedNonce: String(formatted.blockedNonce || "unknown")
2230
- });
2231
- return formatted;
2232
- }
2233
- function requireManagedNonceLeaseRef(reservation) {
2234
- const leaseId = String(reservation.leaseId || "").trim();
2235
- const operationId = String(reservation.operationId || "").trim();
2236
- const operationFingerprint = String(reservation.operationFingerprint || "").trim();
2237
- if (!leaseId || !operationId || !operationFingerprint) throw new Error("[SigningEngine][evm-family] managedNonce lease metadata is required");
2238
- return {
2239
- leaseId,
2240
- operationId,
2241
- operationFingerprint
2242
- };
2243
- }
2244
- //#endregion
2245
- //#region src/core/signingEngine/flows/signEvmFamily/addresses.ts
2246
- function toOptionalEvmAddress(value) {
2247
- const normalized = String(value || "").trim().toLowerCase();
2248
- if (!/^0x[0-9a-f]{40}$/.test(normalized)) return void 0;
2249
- return normalized;
2250
- }
2251
- //#endregion
2252
- //#region src/core/signingEngine/flows/signEvmFamily/nonceResolution.ts
2253
- function readOptionalChainId(chain) {
2254
- if (!("chainId" in chain)) return void 0;
2255
- return typeof chain.chainId === "number" ? chain.chainId : void 0;
2256
- }
2257
- function isEvmFamilyNetwork(chain) {
2258
- return String(chainFamilyFromNetwork(chain.network)) === "evm";
2259
- }
2260
- function isTempoFamilyNetwork(chain) {
2261
- return String(chainFamilyFromNetwork(chain.network)) === "tempo";
2262
- }
2263
- function resolveNonceNetworkKey(args) {
2264
- const resolved = tryResolveNonceNetworkKey(args);
2265
- if (resolved) return resolved;
2266
- const chainId = args.request.tx.chainId;
2267
- throw new Error(`[SigningEngine] unable to resolve nonce network for ${args.request.chain} chainId=${String(chainId)} from configured chains`);
2268
- }
2269
- function resolveNonceNetworkKeyForError(args) {
2270
- return tryResolveNonceNetworkKey(args) || `${args.request.chain}:${String(args.request.tx.chainId)}`;
2271
- }
2272
- function tryResolveNonceNetworkKey(args) {
2273
- const chainId = args.request.tx.chainId;
2274
- const matchesByChainId = args.configs.network.chains.filter((chain) => {
2275
- const configured = readOptionalChainId(chain);
2276
- return typeof configured === "number" && configured === chainId;
2277
- });
2278
- if (!matchesByChainId.length) return null;
2279
- if (args.request.chain === "tempo") {
2280
- const tempoMatches = matchesByChainId.filter((chain) => isTempoFamilyNetwork(chain));
2281
- if (tempoMatches.length === 1) return tempoMatches[0].network;
2282
- if (tempoMatches.length > 1) {
2283
- const candidates = tempoMatches.map((chain) => chain.network).join(", ");
2284
- throw new Error(`[SigningEngine] ambiguous nonce network for tempo chainId=${String(args.request.tx.chainId)} across [${candidates}]`);
2285
- }
2286
- return null;
2287
- }
2288
- const evmMatches = matchesByChainId.filter((chain) => isEvmFamilyNetwork(chain));
2289
- if (evmMatches.length === 1) return evmMatches[0].network;
2290
- if (evmMatches.length > 1) {
2291
- const candidates = evmMatches.map((chain) => chain.network).join(", ");
2292
- throw new Error(`[SigningEngine] ambiguous nonce network for evm chainId=${String(args.request.tx.chainId)} across [${candidates}]`);
2293
- }
2294
- const tempoMatches = matchesByChainId.filter((chain) => isTempoFamilyNetwork(chain));
2295
- if (tempoMatches.length === 1) return tempoMatches[0].network;
2296
- if (tempoMatches.length > 1) {
2297
- const candidates = tempoMatches.map((chain) => chain.network).join(", ");
2298
- throw new Error(`[SigningEngine] ambiguous nonce network for evm->tempo chainId=${String(args.request.tx.chainId)} across [${candidates}]`);
2299
- }
2300
- return null;
2301
- }
2302
- function thresholdOwnerNonceSenderIdentity(thresholdOwnerAddress) {
2303
- return {
2304
- kind: "threshold_owner",
2305
- thresholdOwnerAddress
2306
- };
2307
- }
2308
- function chainAccountNonceSenderIdentity(chainAccountAddress) {
2309
- return {
2310
- kind: "chain_account",
2311
- chainAccountAddress
2312
- };
2313
- }
2314
- function senderAddressFromIdentity(senderIdentity) {
2315
- switch (senderIdentity.kind) {
2316
- case "threshold_owner": return senderIdentity.thresholdOwnerAddress;
2317
- case "chain_account": return senderIdentity.chainAccountAddress;
2318
- default: return senderIdentity;
2319
- }
2320
- }
2321
- async function resolveWalletChainNonceSenderIdentity(args) {
2322
- const metadata = (await args.deps.walletSignerStore.getActiveWalletSignerForChainTarget({
2323
- walletId: args.walletId,
2324
- chainTarget: args.chainTarget
2325
- }))?.metadata || {};
2326
- const thresholdOwnerAddress = toOptionalEvmAddress(metadata.thresholdOwnerAddress);
2327
- if (thresholdOwnerAddress) return thresholdOwnerNonceSenderIdentity(thresholdOwnerAddress);
2328
- const chainAccountAddress = toOptionalEvmAddress(metadata.accountAddress);
2329
- if (chainAccountAddress) return chainAccountNonceSenderIdentity(chainAccountAddress);
2330
- const chainIdKey = toIndexedDbChainTargetKey(args.chainTarget);
2331
- throw new Error(`[SigningEngine] unable to resolve managed nonce wallet signer for ${args.walletId} (${chainIdKey})`);
2332
- }
2333
- async function resolveManagedNonceSender(args) {
2334
- return senderAddressFromIdentity(args.senderIdentity);
2335
- }
2336
- //#endregion
2337
- //#region src/core/signingEngine/flows/signEvmFamily/evmNonceLifecycle.ts
2338
- async function resolveManagedEvmNonceReservationInput(args) {
2339
- const sender = await resolveManagedNonceSender({ senderIdentity: args.senderIdentity });
2340
- return reserveNonceInputFromBoundary({
2341
- chain: "evm",
2342
- networkKey: resolveNonceNetworkKey({
2343
- configs: args.deps.seamsWebConfigs,
2344
- request: args.request
2345
- }),
2346
- chainId: args.request.tx.chainId,
2347
- sender,
2348
- walletId: args.walletId
2349
- });
2350
- }
2351
- async function reserveManagedEvmNonceForRequest(args) {
2352
- const reservationInput = args.reservationInput;
2353
- let reservation;
2354
- try {
2355
- reservation = evmNonceLeaseToManagedReservation(await args.deps.nonceCoordinator.reserve({
2356
- lane: evmReserveNonceInputToLane(reservationInput),
2357
- operation: args.operation
2358
- }));
2359
- } catch (error) {
2360
- throw mapToRetryableNonceStateError({
2361
- error,
2362
- chain: "evm",
2363
- networkKey: reservationInput.chainTarget.networkSlug,
2364
- chainId: reservationInput.chainTarget.chainId
2365
- });
2366
- }
2367
- return {
2368
- request: {
2369
- ...args.request,
2370
- tx: {
2371
- ...args.request.tx,
2372
- nonce: reservation.nonce
2373
- }
2374
- },
2375
- reservation
2376
- };
2377
- }
2378
- //#endregion
2379
- //#region src/core/signingEngine/flows/signEvmFamily/tempoNonceLifecycle.ts
2380
- async function reserveManagedTempoNonceForRequest(args) {
2381
- const sender = await resolveManagedNonceSender({ senderIdentity: args.senderIdentity });
2382
- const reservationInput = reserveNonceInputFromBoundary({
2383
- chain: "tempo",
2384
- networkKey: resolveNonceNetworkKey({
2385
- configs: args.deps.seamsWebConfigs,
2386
- request: args.request
2387
- }),
2388
- chainId: args.request.tx.chainId,
2389
- sender,
2390
- nonceKey: args.request.tx.nonceKey,
2391
- walletId: args.walletId
2392
- });
2393
- let reservation;
2394
- try {
2395
- reservation = evmNonceLeaseToManagedReservation(await args.deps.nonceCoordinator.reserve({
2396
- lane: evmReserveNonceInputToLane(reservationInput),
2397
- operation: args.operation
2398
- }));
2399
- } catch (error) {
2400
- throw mapToRetryableNonceStateError({
2401
- error,
2402
- chain: "tempo",
2403
- networkKey: reservationInput.chainTarget.networkSlug,
2404
- chainId: reservationInput.chainTarget.chainId
2405
- });
2406
- }
2407
- return {
2408
- request: {
2409
- ...args.request,
2410
- tx: {
2411
- ...args.request.tx,
2412
- nonce: reservation.nonce
2413
- }
2414
- },
2415
- reservation
2416
- };
2417
- }
2418
- //#endregion
2419
- //#region src/core/signingEngine/flows/signEvmFamily/transactionExecutor.ts
2420
- function resolveThresholdOwnerNonceSenderIdentity(args) {
2421
- if (args.state.kind === "not_required") return void 0;
2422
- return thresholdOwnerNonceSenderIdentity(args.state.thresholdOwnerAddress);
2423
- }
2424
- function requireRawEip1559ThresholdOwnerNonceSenderIdentity(args) {
2425
- if (args.state.kind === "not_required") throw new Error(`[SigningEngine][evm-family] raw EIP-1559 signing requires prepared threshold ECDSA owner address for ${args.walletId}`);
2426
- return thresholdOwnerNonceSenderIdentity(args.state.thresholdOwnerAddress);
2427
- }
2428
- function resolvePreparedNonceSenderIdentity(args) {
2429
- return resolveThresholdOwnerNonceSenderIdentity(args);
2430
- }
2431
- function resolveFallbackChainAccountNonceSenderIdentity(args) {
2432
- return resolveWalletChainNonceSenderIdentity({
2433
- deps: args.deps,
2434
- walletId: args.walletId,
2435
- chainTarget: args.chainTarget
2436
- });
2437
- }
2438
- async function executeConfiguredEvmFamilyTransactionSigning(args, config) {
2439
- const recoverDurableLeasesTask = args.deps.nonceCoordinator.recoverDurableLeases({ walletId: args.walletId });
2440
- recoverDurableLeasesTask.catch(() => {});
2441
- const signWithUiConfirm = await config.loadSigner();
2442
- try {
2443
- return await signWithUiConfirm({
2444
- ...args.flowArgs,
2445
- authorization: args.flowArgs.authorization ?? { kind: "owner" },
2446
- request: args.request,
2447
- onConfirmationDisplayed: args.onConfirmationDisplayed,
2448
- thresholdEcdsaStepUp: args.thresholdEcdsaStepUp,
2449
- prepareRequestWithManagedNonce: async () => {
2450
- await recoverDurableLeasesTask;
2451
- return await config.prepareRequestWithManagedNonce({
2452
- deps: args.deps,
2453
- walletId: args.walletId,
2454
- request: args.request,
2455
- nonceOperation: args.nonceOperation
2456
- });
2457
- },
2458
- releaseNonceReservation: async (reservation) => {
2459
- await releaseEvmFamilyNonceReservation(args.deps, reservation);
2460
- }
2461
- });
2462
- } catch (error) {
2463
- const retried = await args.retryWithFreshEmailOtpAuth(error);
2464
- if (retried) return retried;
2465
- throw mapToRetryableNonceStateError({
2466
- error,
2467
- chain: config.targetKind,
2468
- networkKey: resolveNonceNetworkKeyForError({
2469
- configs: args.deps.seamsWebConfigs,
2470
- request: args.request
2471
- }),
2472
- chainId: args.chainTarget.chainId
2473
- });
2474
- }
2475
- }
2476
- async function executeEvmFamilyTransactionSigning(args) {
2477
- if (args.chainTarget.kind === "evm" || args.request.kind === "eip1559") {
2478
- let reservationInputPromise = null;
2479
- let fallbackSenderIdentityPromise = null;
2480
- const rawEip1559SenderIdentity = args.request.kind === "eip1559" ? requireRawEip1559ThresholdOwnerNonceSenderIdentity({
2481
- state: args.thresholdEcdsaState,
2482
- walletId: args.walletId,
2483
- chainTarget: args.chainTarget
2484
- }) : void 0;
2485
- const preparedSenderIdentity = resolvePreparedNonceSenderIdentity({ state: args.thresholdEcdsaState });
2486
- const getSenderIdentity = (nonceArgs) => {
2487
- const exactSenderIdentity = rawEip1559SenderIdentity || preparedSenderIdentity;
2488
- if (exactSenderIdentity) return Promise.resolve(exactSenderIdentity);
2489
- if (!fallbackSenderIdentityPromise) fallbackSenderIdentityPromise = resolveFallbackChainAccountNonceSenderIdentity({
2490
- deps: nonceArgs.deps,
2491
- walletId: nonceArgs.walletId,
2492
- chainTarget: args.chainTarget
2493
- });
2494
- return fallbackSenderIdentityPromise;
2495
- };
2496
- const getReservationInput = (nonceArgs) => {
2497
- if (!reservationInputPromise) reservationInputPromise = getSenderIdentity(nonceArgs).then((senderIdentity) => resolveManagedEvmNonceReservationInput({
2498
- deps: nonceArgs.deps,
2499
- walletId: nonceArgs.walletId,
2500
- request: nonceArgs.request,
2501
- senderIdentity
2502
- }));
2503
- return reservationInputPromise;
2504
- };
2505
- const targetKind = args.chainTarget.kind;
2506
- return await executeConfiguredEvmFamilyTransactionSigning({
2507
- ...args,
2508
- request: args.request
2509
- }, {
2510
- targetKind,
2511
- loadSigner: targetKind === "tempo" ? loadSignEvmFamilyWithUiConfirmForTempo : loadSignEvmWithUiConfirm,
2512
- prepareRequestWithManagedNonce: async (nonceArgs) => {
2513
- const reservationInput = await getReservationInput(nonceArgs);
2514
- return await reserveManagedEvmNonceForRequest({
2515
- deps: nonceArgs.deps,
2516
- request: nonceArgs.request,
2517
- reservationInput,
2518
- operation: nonceArgs.nonceOperation
2519
- });
2520
- }
2521
- });
2522
- }
2523
- let tempoFallbackSenderIdentityPromise = null;
2524
- const tempoPreparedSenderIdentity = resolvePreparedNonceSenderIdentity({ state: args.thresholdEcdsaState });
2525
- const getTempoSenderIdentity = (nonceArgs) => {
2526
- if (tempoPreparedSenderIdentity) return Promise.resolve(tempoPreparedSenderIdentity);
2527
- if (!tempoFallbackSenderIdentityPromise) tempoFallbackSenderIdentityPromise = resolveFallbackChainAccountNonceSenderIdentity({
2528
- deps: nonceArgs.deps,
2529
- walletId: nonceArgs.walletId,
2530
- chainTarget: args.chainTarget
2531
- });
2532
- return tempoFallbackSenderIdentityPromise;
2533
- };
2534
- return await executeConfiguredEvmFamilyTransactionSigning({
2535
- ...args,
2536
- request: args.request
2537
- }, {
2538
- targetKind: "tempo",
2539
- loadSigner: loadSignEvmFamilyWithUiConfirmForTempo,
2540
- prepareRequestWithManagedNonce: async (nonceArgs) => {
2541
- const senderIdentity = await getTempoSenderIdentity(nonceArgs);
2542
- return await reserveManagedTempoNonceForRequest({
2543
- deps: nonceArgs.deps,
2544
- walletId: nonceArgs.walletId,
2545
- request: nonceArgs.request,
2546
- operation: nonceArgs.nonceOperation,
2547
- senderIdentity
2548
- });
2549
- }
2550
- });
2551
- }
2552
- //#endregion
2553
- //#region src/core/signingEngine/routerAb/ecdsaDerivation/signingMaterialRef.ts
2554
- function buildRouterAbEcdsaDerivationSigningMaterialRef(args) {
2555
- const routerAbState = requireRouterAbEcdsaDerivationNormalSigningStateV1(args.routerAbState);
2556
- return {
2557
- kind: "router_ab_ecdsa_derivation_signing_material_ref_v1",
2558
- activeStateId: routerAbEcdsaDerivationActiveStateId(routerAbState),
2559
- ecdsaThresholdKeyId: parseEcdsaThresholdKeyId(routerAbState.scope.ecdsa_threshold_key_id),
2560
- signingRootId: routerAbState.scope.signing_root_id,
2561
- signingRootVersion: routerAbState.scope.signing_root_version,
2562
- signingWorkerId: routerAbState.scope.signing_worker.server_id,
2563
- clientVerifier33B64u: parseEcdsaClientVerifyingShareB64u(routerAbState.scope.public_identity.derivation_client_share_public_key33_b64u),
2564
- serverVerifier33B64u: routerAbState.scope.public_identity.server_public_key33_b64u,
2565
- thresholdVerifier33B64u: routerAbState.scope.public_identity.threshold_public_key33_b64u
2566
- };
2567
- }
2568
- //#endregion
2569
- //#region src/core/signingEngine/flows/signEvmFamily/readySecp256k1Material.ts
2570
- async function hydrateEcdsaRoleLocalMaterialForSigning(args) {
2571
- return resolveEcdsaRoleLocalMaterial({
2572
- purpose: "transaction_signing",
2573
- source: ecdsaRoleLocalPersistedMaterialSource(args.persistedMaterial),
2574
- workerCtx: args.workerCtx
2575
- });
2576
- }
2577
- /** Ready ECDSA signing material, assembled from each fact's canonical owner:
2578
- * the manifest names the material and its public facts, the exact durable
2579
- * runtime supplies normal-signing state, policy scope, and transport, and the
2580
- * exact Wallet Session remains a separate authorization input.
2581
- *
2582
- * Nothing is decoded out of the opaque Wallet Session token. The facts it authorizes are owned by
2583
- * the manifest and durable material record, which are correlated before this
2584
- * function receives the runtime. */
2585
- async function resolveHydratedSecp256k1SigningMaterial(args) {
2586
- const capability = args.capability;
2587
- const manifest = capability.manifest;
2588
- const persistedMaterial = capability.material;
2589
- const runtime = args.runtime;
2590
- const sourceRoleLocalFacts = persistedMaterial.publicFacts;
2591
- if (!mpcMaterialActivationRefsEqual(args.materialActivation, manifest.activation.materialActivation)) return {
2592
- kind: "unavailable",
2593
- reason: "material_activation_mismatch"
2594
- };
2595
- if (!mpcMaterialActivationRefsEqual(runtime.materialActivation, manifest.activation.materialActivation)) return {
2596
- kind: "unavailable",
2597
- reason: "runtime_correlation_mismatch"
2598
- };
2599
- const sourceTargetIsPublished = manifest.signer.scope.targetMemberships.some((target) => thresholdEcdsaChainTargetsEqual(target, sourceRoleLocalFacts.chainTarget));
2600
- const requestedTarget = manifest.signer.scope.targetMemberships.find((target) => thresholdEcdsaChainTargetsEqual(target, args.chainTarget));
2601
- if (!sourceTargetIsPublished || !requestedTarget) return {
2602
- kind: "unavailable",
2603
- reason: "chain_mismatch"
2604
- };
2605
- if (!thresholdEcdsaChainTargetsEqual(runtime.chainTarget, requestedTarget)) return {
2606
- kind: "unavailable",
2607
- reason: "chain_mismatch"
2608
- };
2609
- const roleLocalFacts = projectEcdsaRoleLocalPublicFactsToChainTarget({
2610
- publicFacts: sourceRoleLocalFacts,
2611
- chainTarget: requestedTarget
2612
- });
2613
- if (!runtime.runtimePolicyScope) return {
2614
- kind: "unavailable",
2615
- reason: "runtime_policy_scope_missing"
2616
- };
2617
- const roleLocalMaterialResolution = await hydrateEcdsaRoleLocalMaterialForSigning({
2618
- persistedMaterial,
2619
- workerCtx: args.workerCtx
2620
- });
2621
- let resolvedRoleLocalMaterial;
2622
- switch (roleLocalMaterialResolution.kind) {
2623
- case "rehydrated":
2624
- resolvedRoleLocalMaterial = roleLocalMaterialResolution;
2625
- break;
2626
- case "device_link_required": return {
2627
- kind: "unavailable",
2628
- reason: "device_link_required"
2629
- };
2630
- case "corrupt": return {
2631
- kind: "unavailable",
2632
- reason: "material_corrupt"
2633
- };
2634
- default: return roleLocalMaterialResolution;
2635
- }
2636
- const normalSigningState = runtime.normalSigning;
2637
- const signingMaterial = buildRouterAbEcdsaDerivationSigningMaterialRef({ routerAbState: normalSigningState });
2638
- return {
2639
- kind: "ready",
2640
- material: buildHydratedEcdsaSignerMaterial({
2641
- walletId: manifest.signer.walletId,
2642
- materialActivation: manifest.activation.materialActivation,
2643
- publicFacts: manifest.signer.registeredPublicFacts,
2644
- chainTarget: roleLocalFacts.chainTarget,
2645
- transport: {
2646
- kind: "threshold_ecdsa_signer_transport",
2647
- relayerUrl: runtime.relayerUrl,
2648
- relayerKeyId: manifest.durableMaterial.roleLocalBinding.relayerKeyId,
2649
- signingMaterial,
2650
- relayerVerifyingShareB64u: roleLocalFacts.relayerPublicKey33B64u
2651
- },
2652
- clientShare: {
2653
- kind: "role_local_worker_share",
2654
- handle: resolvedRoleLocalMaterial.liveHandle,
2655
- material: {
2656
- kind: "worker_loaded",
2657
- materialRef: resolvedRoleLocalMaterial.materialRef
2658
- }
2659
- },
2660
- routerAbEcdsaDerivationNormalSigning: {
2661
- kind: "router_ab_ecdsa_derivation_normal_signing_hydrated_v1",
2662
- state: normalSigningState,
2663
- activeStateId: routerAbEcdsaDerivationActiveStateId(normalSigningState)
2664
- }
2665
- })
2666
- };
2667
- }
2668
- function attachExactEcdsaWalletSessionAuthorization(args) {
2669
- const authorized = authorizeEvmFamilyEcdsaSigningCapability({
2670
- capability: args.capability,
2671
- authorization: args.authorization,
2672
- nowMs: args.nowMs
2673
- });
2674
- const session = authorized.authorization.session;
2675
- const operationCredential = authorized.authorization.operationCredential;
2676
- if (session.walletId !== args.material.walletId || !mpcMaterialActivationRefsEqual(args.material.materialActivation, args.capability.manifest.activation.materialActivation)) throw new Error("Exact Wallet Session authorization wallet does not match hydrated material");
2677
- if (operationCredential.token.trim().length === 0) throw new Error("Exact Wallet Session authorization is unavailable");
2678
- return buildReadySecp256k1SigningMaterial({
2679
- walletId: args.material.walletId,
2680
- signerSession: args.material,
2681
- authorization: {
2682
- kind: "reusable_wallet_session",
2683
- wallet_session_id: operationCredential.walletSessionId
2684
- },
2685
- credential: {
2686
- kind: "reusable_wallet_session",
2687
- walletSessionToken: operationCredential.token
2688
- },
2689
- expiresAtMs: session.expiresAtMs,
2690
- singleUseEmailOtpSession: false
2691
- });
2692
- }
2693
- function exactSessionAuthorizesEcdsaSigning(args) {
2694
- return args.session.capabilitySubjects.some((subject) => subject.kind === "sign" && subject.keyFamily === "ecdsa_secp256k1" && mpcMaterialActivationRefsEqual(subject.materialActivation, args.materialActivation));
2695
- }
2696
- function buildActiveWalletAuthorityReadySecp256k1Material(args) {
2697
- const authorityRuntime = args.authorityRuntime;
2698
- const runtime = authorityRuntime.holderRuntime;
2699
- const session = authorityRuntime.session;
2700
- const operationCredential = authorityRuntime.operationCredential;
2701
- const normalSigning = runtime.activationReceipt.normalSigning;
2702
- const normalScope = normalSigning.scope;
2703
- if (session.walletId !== runtime.walletId || session.authorityId !== runtime.authorityId || session.authMethodId !== runtime.walletAuthMethodId || operationCredential.walletSessionId !== authorityRuntime.walletSessionId || session.expiresAtMs <= Date.now() || !exactSessionAuthorizesEcdsaSigning({
2704
- session,
2705
- materialActivation: runtime.materialActivation
2706
- }) || normalScope.wallet_id !== runtime.walletId || normalScope.ecdsa_threshold_key_id !== runtime.ecdsaThresholdKeyId || !mpcMaterialActivationRefsEqual(routerAbMpcMaterialActivationRefFromWire(normalScope.material_activation), runtime.materialActivation)) throw new Error("[SigningEngine] active Wallet Authority session does not bind the ECDSA holder runtime");
2707
- const relayerUrl = String(args.relayerUrl || "").trim();
2708
- if (!relayerUrl) throw new Error("[SigningEngine] active Wallet Authority ECDSA signing requires relayerUrl");
2709
- const signerSession = buildHydratedEcdsaSignerMaterial({
2710
- walletId: toWalletId(runtime.walletId),
2711
- materialActivation: runtime.materialActivation,
2712
- publicFacts: authorityRuntime.publicFacts,
2713
- chainTarget: args.chainTarget,
2714
- transport: {
2715
- kind: "threshold_ecdsa_signer_transport",
2716
- relayerUrl,
2717
- relayerKeyId: authorityRuntime.relayerKeyId,
2718
- signingMaterial: buildRouterAbEcdsaDerivationSigningMaterialRef({ routerAbState: normalSigning }),
2719
- relayerVerifyingShareB64u: normalScope.public_identity.server_public_key33_b64u
2720
- },
2721
- clientShare: {
2722
- kind: "linked_holder_worker_share",
2723
- holderHandleId: runtime.holderHandleId
2724
- },
2725
- routerAbEcdsaDerivationNormalSigning: {
2726
- kind: "router_ab_ecdsa_derivation_normal_signing_hydrated_v1",
2727
- state: normalSigning,
2728
- activeStateId: routerAbEcdsaDerivationActiveStateId(normalSigning)
2729
- }
2730
- });
2731
- return buildReadySecp256k1SigningMaterial({
2732
- walletId: runtime.walletId,
2733
- signerSession,
2734
- authorization: {
2735
- kind: "reusable_wallet_session",
2736
- wallet_session_id: operationCredential.walletSessionId
2737
- },
2738
- credential: {
2739
- kind: "reusable_wallet_session",
2740
- walletSessionToken: operationCredential.token
2741
- },
2742
- expiresAtMs: session.expiresAtMs,
2743
- singleUseEmailOtpSession: false
2744
- });
2745
- }
2746
- //#endregion
2747
- //#region src/core/signingEngine/session/material/ecdsaSealedRuntime.ts
2748
- function blocked$1(reason) {
2749
- return {
2750
- kind: "blocked",
2751
- reason
2752
- };
2753
- }
2754
- function authMethodForEcdsaSealedSource(source) {
2755
- switch (source) {
2756
- case "email_otp": return "email_otp";
2757
- case "login":
2758
- case "registration":
2759
- case "manual-bootstrap": return "passkey";
2760
- default: throw new Error("[SigningEngine] unsupported sealed ECDSA source");
2761
- }
2762
- }
2763
- function normalizedNonEmpty(value) {
2764
- return String(value ?? "").trim();
2765
- }
2766
- /** Exact match on stable material identity. Rotating session and grant
2767
- * identifiers deliberately take no part: they change under a reusable Wallet
2768
- * Session without changing which material this record describes. */
2769
- function sealedRecordNamesManifestMaterial(args) {
2770
- const restore = args.record.ecdsaRestore;
2771
- const durable = args.manifest.durableMaterial;
2772
- if (normalizedNonEmpty(args.record.walletId) !== String(args.walletId)) return false;
2773
- if (!thresholdEcdsaChainTargetsEqual(restore.chainTarget, args.chainTarget)) return false;
2774
- if (!mpcMaterialActivationRefsEqual(restore.roleLocalMaterialRef.materialActivation, durable.materialActivation)) return false;
2775
- if (!mpcMaterialActivationRefsEqual(durable.materialActivation, args.manifest.activation.materialActivation)) return false;
2776
- return normalizedNonEmpty(restore.roleLocalMaterialRef.durableMaterialRef) === normalizedNonEmpty(durable.durableMaterialRef);
2777
- }
2778
- function participantIdsEqual(left, right) {
2779
- return left.length === right.length && left.every((value, index) => value === right[index]);
2780
- }
2781
- function authorityRefsEqual(left, right) {
2782
- return left.kind === right.kind && String(left.walletId) === String(right.walletId) && String(left.authorityDigest) === String(right.authorityDigest);
2783
- }
2784
- function manifestIncludesTarget(args) {
2785
- return args.manifest.signer.scope.targetMemberships.some((target) => thresholdEcdsaChainTargetsEqual(target, args.chainTarget));
2786
- }
2787
- function sealedRecordBindsManifestFacts(args) {
2788
- const restore = args.record.ecdsaRestore;
2789
- const durable = args.manifest.durableMaterial;
2790
- const binding = durable.roleLocalBinding;
2791
- const publicFacts = durable.roleLocalPublicFacts;
2792
- const normalScope = restore.routerAbEcdsaDerivationNormalSigning.scope;
2793
- const expectedAuthMethod = authMethodForEcdsaSealedSource(restore.source);
2794
- const resolvedThresholdKeyId = normalizedNonEmpty(restore.ecdsaThresholdKeyId) || normalizedNonEmpty(normalScope.ecdsa_threshold_key_id);
2795
- const resolvedClientVerifyingShare = "recordKind" in args.record ? normalizedNonEmpty(binding.clientVerifyingPublicKey33B64u) : normalizedNonEmpty(restore.clientVerifyingShareB64u) || normalizedNonEmpty(normalScope.public_identity.derivation_client_share_public_key33_b64u);
2796
- const resolvedThresholdPublicKey = normalizedNonEmpty(restore.thresholdEcdsaPublicKeyB64u) || normalizedNonEmpty(normalScope.public_identity.threshold_public_key33_b64u);
2797
- return String(args.manifest.signer.walletId) === String(args.walletId) && String(publicFacts.walletId) === String(args.walletId) && manifestIncludesTarget(args) && args.record.authMethod === expectedAuthMethod && authorityRefsEqual(restore.authority, args.manifest.signer.authority) && normalizedNonEmpty(restore.roleLocalMaterialRef.bindingDigest) === normalizedNonEmpty(durable.bindingDigest) && normalizedNonEmpty(restore.keyHandle) === normalizedNonEmpty(binding.keyHandle) && normalizedNonEmpty(restore.keyHandle) === normalizedNonEmpty(publicFacts.keyHandle) && resolvedThresholdKeyId === normalizedNonEmpty(binding.ecdsaThresholdKeyId) && resolvedThresholdKeyId === normalizedNonEmpty(publicFacts.ecdsaThresholdKeyId) && resolvedClientVerifyingShare === normalizedNonEmpty(binding.clientVerifyingPublicKey33B64u) && resolvedClientVerifyingShare === normalizedNonEmpty(publicFacts.derivationClientSharePublicKey33B64u) && resolvedThresholdPublicKey === normalizedNonEmpty(publicFacts.groupPublicKey33B64u) && normalizedNonEmpty(restore.relayerKeyId) === normalizedNonEmpty(binding.relayerKeyId) && participantIdsEqual(restore.participantIds, binding.participantIds) && participantIdsEqual(restore.participantIds, publicFacts.participantIds) && normalizedNonEmpty(restore.signingRootId) === normalizedNonEmpty(args.manifest.signer.signingRootId) && normalizedNonEmpty(restore.signingRootId) === normalizedNonEmpty(publicFacts.signingRootId) && normalizedNonEmpty(restore.signingRootVersion) === normalizedNonEmpty(args.manifest.signer.signingRootVersion) && normalizedNonEmpty(restore.signingRootVersion) === normalizedNonEmpty(publicFacts.signingRootVersion) && normalizedNonEmpty(restore.ethereumAddress).toLowerCase() === normalizedNonEmpty(publicFacts.ethereumAddress).toLowerCase() && routerAbEcdsaDerivationPublicCapabilitiesEqual(restore.publicCapability, publicFacts.publicCapability) && sameRouterAbEcdsaDerivationNormalSigningScopeV1(normalScope, {
2798
- wallet_id: String(args.walletId),
2799
- ecdsa_threshold_key_id: String(publicFacts.ecdsaThresholdKeyId),
2800
- signing_root_id: String(publicFacts.signingRootId),
2801
- signing_root_version: String(publicFacts.signingRootVersion),
2802
- context: publicFacts.publicCapability.context,
2803
- public_identity: publicFacts.publicCapability.public_identity,
2804
- signing_worker: publicFacts.publicCapability.signer_set.selected_server,
2805
- activation_epoch: publicFacts.publicCapability.activation_epoch,
2806
- material_activation: routerAbMpcMaterialActivationRefToWire(durable.materialActivation)
2807
- });
2808
- }
2809
- function authBindingFromRestore(args) {
2810
- const restore = args.restore;
2811
- if (restore.source === "email_otp") {
2812
- const providerSubjectId = normalizedNonEmpty(restore.providerSubjectId);
2813
- const emailHashHex = normalizedNonEmpty(restore.emailHashHex);
2814
- const sealedAuthority = restore.emailOtpAuthority;
2815
- const manifestAuthority = args.manifest.signer.authority;
2816
- if (!providerSubjectId || !emailHashHex || !sealedAuthority || String(sealedAuthority.walletId) !== String(manifestAuthority.walletId) || String(sealedAuthority.factor.providerUserId) !== providerSubjectId || String(sealedAuthority.verifier.emailHashHex) !== emailHashHex) return null;
2817
- return {
2818
- kind: "email_otp",
2819
- providerSubjectId,
2820
- emailHashHex,
2821
- emailOtpAuthority: {
2822
- walletId: sealedAuthority.walletId,
2823
- factor: sealedAuthority.factor,
2824
- verifier: sealedAuthority.verifier,
2825
- bindingId: manifestAuthority.walletAuthMethodId
2826
- }
2827
- };
2828
- }
2829
- const rpId = normalizedNonEmpty(restore.rpId);
2830
- const credentialIdB64u = normalizedNonEmpty(restore.credentialIdB64u);
2831
- return rpId && credentialIdB64u ? {
2832
- kind: "passkey",
2833
- rpId,
2834
- credentialIdB64u
2835
- } : null;
2836
- }
2837
- function exactTwoPartyParticipantIds$1(value) {
2838
- if (value.length !== 2) return null;
2839
- const first = value[0];
2840
- const second = value[1];
2841
- if (!Number.isSafeInteger(first) || !Number.isSafeInteger(second) || first <= 0 || second <= 0 || first === second) return null;
2842
- return [first, second];
2843
- }
2844
- function materialRuntimeFromRecord(args) {
2845
- const restore = args.record.ecdsaRestore;
2846
- const authBinding = authBindingFromRestore({
2847
- manifest: args.manifest,
2848
- restore
2849
- });
2850
- const relayerUrl = normalizedNonEmpty(args.record.relayerUrl).replace(/\/+$/g, "");
2851
- const relayerKeyId = normalizedNonEmpty(restore.relayerKeyId);
2852
- const clientVerifyingPublicKey33B64u = args.manifest.durableMaterial.roleLocalBinding.clientVerifyingPublicKey33B64u;
2853
- const ecdsaThresholdKeyId = normalizedNonEmpty(restore.ecdsaThresholdKeyId) || normalizedNonEmpty(restore.routerAbEcdsaDerivationNormalSigning.scope.ecdsa_threshold_key_id);
2854
- const thresholdEcdsaPublicKeyB64u = normalizedNonEmpty(restore.thresholdEcdsaPublicKeyB64u) || normalizedNonEmpty(restore.routerAbEcdsaDerivationNormalSigning.scope.public_identity.threshold_public_key33_b64u);
2855
- const keyHandle = normalizedNonEmpty(restore.keyHandle);
2856
- const participantIds = Array.isArray(restore.participantIds) ? exactTwoPartyParticipantIds$1(restore.participantIds) : null;
2857
- let roleLocalMaterialRef;
2858
- try {
2859
- roleLocalMaterialRef = parseEcdsaRoleLocalPersistedMaterialRef(restore.roleLocalMaterialRef);
2860
- } catch {
2861
- return null;
2862
- }
2863
- let runtimePolicyScope = null;
2864
- try {
2865
- runtimePolicyScope = normalizeRuntimePolicyScope(restore.runtimePolicyScope);
2866
- } catch {
2867
- runtimePolicyScope = null;
2868
- }
2869
- if (!authBinding || !relayerUrl || !relayerKeyId || !clientVerifyingPublicKey33B64u || !ecdsaThresholdKeyId || !thresholdEcdsaPublicKeyB64u || !keyHandle || !participantIds) return null;
2870
- return {
2871
- walletId: args.walletId,
2872
- chainTarget: args.chainTarget,
2873
- materialActivation: restore.roleLocalMaterialRef.materialActivation,
2874
- normalSigning: restore.routerAbEcdsaDerivationNormalSigning,
2875
- relayerUrl,
2876
- relayerKeyId,
2877
- clientVerifyingPublicKey33B64u,
2878
- participantIds,
2879
- ecdsaThresholdKeyId,
2880
- thresholdEcdsaPublicKeyB64u,
2881
- keyHandle,
2882
- runtimePolicyScope,
2883
- roleLocalMaterialRef,
2884
- authBinding
2885
- };
2886
- }
2887
- function runtimeFromSealedRecord(args) {
2888
- const materialRuntime = materialRuntimeFromRecord(args);
2889
- const expiresAtMs = Number(args.record.expiresAtMs);
2890
- const remainingUses = Number(args.record.remainingUses);
2891
- const thresholdSessionId = normalizedNonEmpty(args.record.thresholdSessionIds.ecdsa);
2892
- const storeKey = normalizedNonEmpty(args.record.storeKey);
2893
- if (!materialRuntime || !storeKey || !thresholdSessionId || !Number.isSafeInteger(expiresAtMs) || expiresAtMs <= 0 || !Number.isSafeInteger(remainingUses) || remainingUses < 0) return null;
2894
- return {
2895
- ...materialRuntime,
2896
- kind: "exact_ecdsa_sealed_runtime_v1",
2897
- expiresAtMs,
2898
- remainingUses,
2899
- sealedRecord: {
2900
- storeKey,
2901
- thresholdSessionId,
2902
- authMethod: args.record.authMethod
2903
- }
2904
- };
2905
- }
2906
- function resolveExactEcdsaSealedRuntime(input) {
2907
- const matches = input.sealedRecords.filter((record) => sealedRecordNamesManifestMaterial({
2908
- manifest: input.manifest,
2909
- walletId: input.walletId,
2910
- chainTarget: input.chainTarget,
2911
- record
2912
- }));
2913
- if (matches.length === 0) return blocked$1("missing_material");
2914
- if (matches.length > 1) return blocked$1("exact_record_conflict");
2915
- const runtime = runtimeFromSealedRecord({
2916
- manifest: input.manifest,
2917
- walletId: input.walletId,
2918
- chainTarget: input.chainTarget,
2919
- record: matches[0]
2920
- });
2921
- if (!runtime) return blocked$1("corrupt");
2922
- if (!sealedRecordBindsManifestFacts({
2923
- manifest: input.manifest,
2924
- walletId: input.walletId,
2925
- chainTarget: input.chainTarget,
2926
- record: matches[0]
2927
- })) return blocked$1("binding_mismatch");
2928
- return {
2929
- kind: "resolved",
2930
- runtime
2931
- };
2932
- }
2933
- //#endregion
2934
- //#region src/core/signingEngine/session/material/activeEcdsaCapabilityRuntime.ts
2935
- function manifestCoversTarget(args) {
2936
- return args.manifest.signer.scope.targetMemberships.some((membership) => thresholdEcdsaChainTargetsEqual(membership, args.chainTarget));
2937
- }
2938
- async function listActiveManifestsForTarget(args) {
2939
- return (await args.ports.listActiveEcdsaCapabilityManifestsForWallet(args.walletId)).filter((manifest) => manifestCoversTarget({
2940
- manifest,
2941
- chainTarget: args.chainTarget
2942
- }));
2943
- }
2944
- async function listSealedEcdsaRecordsForWallet(args) {
2945
- const records = [];
2946
- const authMethods = args.authMethod ? [args.authMethod] : ["passkey", "email_otp"];
2947
- for (const authMethod of authMethods) {
2948
- const found = await args.ports.listExactSealedSessionsForWallet({
2949
- walletId: String(args.walletId),
2950
- filter: {
2951
- authMethod,
2952
- curve: "ecdsa",
2953
- chainTarget: args.chainTarget
2954
- }
2955
- }).catch(() => []);
2956
- for (const record of found) if (record.curve === "ecdsa") records.push(record);
2957
- }
2958
- return records;
2959
- }
2960
- async function resolveExactEcdsaCapabilityRuntime(args) {
2961
- if (!manifestCoversTarget({
2962
- manifest: args.manifest,
2963
- chainTarget: args.chainTarget
2964
- })) return {
2965
- kind: "blocked",
2966
- reason: "chain_mismatch"
2967
- };
2968
- const durable = args.manifest.durableMaterial;
2969
- const facts = durable.roleLocalPublicFacts;
2970
- const participantIds = exactTwoPartyParticipantIds(facts.participantIds);
2971
- const relayerUrl = String(args.relayerUrl).trim().replace(/\/+$/g, "");
2972
- if (!participantIds || !relayerUrl) return {
2973
- kind: "blocked",
2974
- reason: "corrupt"
2975
- };
2976
- return {
2977
- kind: "resolved",
2978
- manifest: args.manifest,
2979
- runtime: {
2980
- kind: "exact_ecdsa_capability_runtime_v1",
2981
- walletId: args.manifest.signer.walletId,
2982
- chainTarget: args.chainTarget,
2983
- materialActivation: durable.materialActivation,
2984
- normalSigning: durable.routerAbEcdsaDerivationNormalSigning,
2985
- relayerUrl,
2986
- relayerKeyId: String(durable.roleLocalBinding.relayerKeyId),
2987
- clientVerifyingPublicKey33B64u: durable.roleLocalBinding.clientVerifyingPublicKey33B64u,
2988
- participantIds,
2989
- ecdsaThresholdKeyId: String(facts.ecdsaThresholdKeyId),
2990
- thresholdEcdsaPublicKeyB64u: facts.groupPublicKey33B64u,
2991
- keyHandle: String(facts.keyHandle),
2992
- runtimePolicyScope: durable.runtimePolicyScope,
2993
- roleLocalMaterialRef: {
2994
- kind: "ecdsa_role_local_persisted_material_ref_v1",
2995
- durableMaterialRef: durable.durableMaterialRef,
2996
- bindingDigest: durable.bindingDigest,
2997
- materialActivation: durable.materialActivation
2998
- }
2999
- }
3000
- };
3001
- }
3002
- function exactTwoPartyParticipantIds(value) {
3003
- if (value.length !== 2) return null;
3004
- const first = value[0];
3005
- const second = value[1];
3006
- if (!Number.isSafeInteger(first) || !Number.isSafeInteger(second) || first <= 0 || second <= 0 || first === second) return null;
3007
- return [first, second];
3008
- }
3009
- async function narrowToSelectedMethod(ports, walletId, manifests) {
3010
- const selected = await ports.resolveSelectedWalletAuthority(String(walletId));
3011
- if (selected.kind !== "resolved") return manifests;
3012
- const selectedMethodId = String(selected.authMethod.walletAuthMethodId);
3013
- const matching = manifests.filter((manifest) => String(manifest.signer.authority.walletAuthMethodId) === selectedMethodId);
3014
- return matching.length > 0 ? matching : manifests;
3015
- }
3016
- async function resolveActiveEcdsaCapabilityRuntime(ports, args) {
3017
- const all = await listActiveManifestsForTarget({
3018
- ports,
3019
- ...args
3020
- });
3021
- if (all.length === 0) return {
3022
- kind: "blocked",
3023
- reason: "missing_capability"
3024
- };
3025
- const manifests = all.length > 1 ? await narrowToSelectedMethod(ports, args.walletId, all) : all;
3026
- if (manifests.length !== 1) return {
3027
- kind: "blocked",
3028
- reason: "exact_record_conflict"
3029
- };
3030
- const manifest = manifests[0];
3031
- const sealedRecords = await listSealedEcdsaRecordsForWallet({
3032
- ports,
3033
- ...args
3034
- });
3035
- const resolution = resolveExactEcdsaSealedRuntime({
3036
- manifest,
3037
- walletId: args.walletId,
3038
- chainTarget: args.chainTarget,
3039
- sealedRecords
3040
- });
3041
- return resolution.kind === "resolved" ? {
3042
- kind: "resolved",
3043
- manifest,
3044
- runtime: resolution.runtime
3045
- } : {
3046
- kind: "blocked",
3047
- reason: resolution.reason
3048
- };
3049
- }
3050
- function createActiveEcdsaCapabilityRuntimeResolver(ports) {
3051
- return resolveActiveEcdsaCapabilityRuntime.bind(null, ports);
3052
- }
3053
- /** Resolve by chain kind, taking the exact chain target from the manifest's own
3054
- * target memberships. The warm-session envelope is keyed by kind (evm/tempo)
3055
- * while correlation needs a full target, and the manifest is the authority on
3056
- * which targets its capability covers. */
3057
- async function resolveActiveEcdsaCapabilityRuntimeForChain(ports, args) {
3058
- const manifests = await ports.listActiveEcdsaCapabilityManifestsForWallet(args.walletId);
3059
- const matches = [];
3060
- for (const manifest of manifests) for (const membership of manifest.signer.scope.targetMemberships) {
3061
- if (membership.kind !== args.chain) continue;
3062
- matches.push({
3063
- manifest,
3064
- chainTarget: membership
3065
- });
3066
- }
3067
- if (matches.length === 0) return {
3068
- kind: "blocked",
3069
- reason: "missing_capability"
3070
- };
3071
- if (matches.length > 1) return {
3072
- kind: "blocked",
3073
- reason: "exact_record_conflict"
3074
- };
3075
- const match = matches[0];
3076
- const sealedRecords = await listSealedEcdsaRecordsForWallet({
3077
- ports,
3078
- walletId: args.walletId,
3079
- chainTarget: match.chainTarget
3080
- });
3081
- const resolution = resolveExactEcdsaSealedRuntime({
3082
- manifest: match.manifest,
3083
- walletId: args.walletId,
3084
- chainTarget: match.chainTarget,
3085
- sealedRecords
3086
- });
3087
- return resolution.kind === "resolved" ? {
3088
- kind: "resolved",
3089
- manifest: match.manifest,
3090
- runtime: resolution.runtime
3091
- } : {
3092
- kind: "blocked",
3093
- reason: resolution.reason
3094
- };
3095
- }
3096
- function createActiveEcdsaCapabilityRuntimeForChainResolver(ports) {
3097
- return resolveActiveEcdsaCapabilityRuntimeForChain.bind(null, ports);
3098
- }
3099
- //#endregion
3100
- //#region src/core/signingEngine/threshold/ecdsa/operationStepUp.ts
3101
- function requireResponseRecord(value) {
3102
- if (!value || typeof value !== "object" || Array.isArray(value)) throw new Error("ECDSA operation step-up response must be an object");
3103
- return value;
3104
- }
3105
- function parseEcdsaOperationStepUpAuthorizationResponse(value) {
3106
- try {
3107
- return parseRouterAbEcdsaOperationStepUpAuthorizationResponseV1(value);
3108
- } catch (error) {
3109
- throw new Error(error instanceof Error ? error.message : "ECDSA operation step-up response is invalid");
3110
- }
3111
- }
3112
- function operationStepUpEndpoint(relayerUrl) {
3113
- const baseUrl = String(relayerUrl || "").trim().replace(/\/+$/g, "");
3114
- if (!baseUrl) throw new Error("ECDSA operation step-up relayerUrl is required");
3115
- return `${baseUrl}${ROUTER_AB_ECDSA_DERIVATION_OPERATION_STEP_UP_PATH}`;
3116
- }
3117
- function buildEcdsaOperationStepUpPreparation(args) {
3118
- const walletId = String(args.walletId || "").trim();
3119
- const operationId = String(args.operationId || "").trim();
3120
- const expiresAtMs = Math.floor(Number(args.expiresAtMs));
3121
- if (!walletId || !operationId) throw new Error("ECDSA operation step-up identity is required");
3122
- if (!Number.isSafeInteger(expiresAtMs) || expiresAtMs <= Date.now()) throw new Error("ECDSA operation step-up expiry is invalid");
3123
- const materialActivation = routerAbMpcMaterialActivationRefToWire(args.materialActivation);
3124
- const normalSigningScope = parseRouterAbEcdsaDerivationNormalSigningScopeV1(args.normalSigningScope);
3125
- const keyHandle = String(args.keyHandle || "").trim();
3126
- const relayerKeyId = String(args.relayerKeyId || "").trim();
3127
- const participantIds = args.participantIds;
3128
- if (normalSigningScope.wallet_id !== walletId || normalSigningScope.signing_worker.server_id !== materialActivation.signing_worker || !keyHandle || !relayerKeyId || participantIds.length !== 2 || participantIds.some((participantId) => !Number.isSafeInteger(participantId) || participantId <= 0)) throw new Error("ECDSA operation step-up signing identity is inconsistent");
3129
- return {
3130
- wallet_id: walletId,
3131
- operation_kind: args.operationKind,
3132
- operation_id: operationId,
3133
- operation_digests: {
3134
- lane_digest_b64u: args.operationDigests.laneDigest,
3135
- intent_digest_b64u: args.operationDigests.intentDigest,
3136
- display_digest_b64u: args.operationDigests.displayDigest
3137
- },
3138
- material_activation: materialActivation,
3139
- normal_signing_scope: normalSigningScope,
3140
- signing_worker_id: materialActivation.signing_worker,
3141
- key_handle: keyHandle,
3142
- relayer_key_id: relayerKeyId,
3143
- participant_ids: [participantIds[0], participantIds[1]],
3144
- expires_at_ms: expiresAtMs
3145
- };
3146
- }
3147
- async function prepareEcdsaOperationStepUp(args) {
3148
- const operation = buildEcdsaOperationStepUpPreparation(args);
3149
- return {
3150
- operation,
3151
- challengeB64u: await computeRouterAbEcdsaOperationStepUpChallengeB64u(operation)
3152
- };
3153
- }
3154
- /**
3155
- * User-facing copy for a step-up that failed because the wallet session is no
3156
- * longer usable. These are the states signing in again resolves, so the message
3157
- * says that rather than restating the transport failure. Anything else keeps the
3158
- * server's own wording, which is aimed at the developer.
3159
- */
3160
- function ecdsaOperationStepUpSessionMessage(code, serverMessage) {
3161
- switch (code) {
3162
- case WALLET_SESSION_FAILURE_CODES.expired:
3163
- case WALLET_SESSION_FAILURE_CODES.missing: return "Signing session expired. Sign in again to continue.";
3164
- case WALLET_SESSION_FAILURE_CODES.budgetExhausted: return "Signing session budget is used up. Sign in again to continue.";
3165
- default: return `ECDSA operation step-up failed: ${serverMessage}`;
3166
- }
3167
- }
3168
- async function issueEcdsaOperationStepUpAuthorization(args) {
3169
- const request = parseRouterAbEcdsaOperationStepUpAuthorizationRequestV1(args.request);
3170
- const fetchImpl = args.fetchImpl ?? globalThis.fetch;
3171
- if (typeof fetchImpl !== "function") throw new Error("fetch is unavailable for ECDSA operation step-up");
3172
- if (args.transport?.kind === "wallet_session_bearer" && args.transport.token.trim().length === 0) throw new Error("Wallet Session operation credential is required for ECDSA operation step-up");
3173
- const response = await (args.transport?.kind === "wallet_session_bearer" ? fetchWithWalletSessionBearer(fetchImpl, args.transport.token) : fetchImpl)(operationStepUpEndpoint(args.relayerUrl), {
3174
- method: "POST",
3175
- headers: { "Content-Type": "application/json" },
3176
- credentials: "omit",
3177
- body: JSON.stringify(request)
3178
- });
3179
- const body = await response.json().catch(() => null);
3180
- if (!response.ok) {
3181
- const error = requireResponseRecord(body);
3182
- const message = String(error.message || `HTTP ${response.status}`);
3183
- const walletSessionError = walletSessionFailureErrorFromPayload({
3184
- code: error.code,
3185
- message: ecdsaOperationStepUpSessionMessage(error.code, message)
3186
- });
3187
- if (walletSessionError) throw walletSessionError;
3188
- throw new Error(`ECDSA operation step-up failed: ${message}`);
3189
- }
3190
- return parseEcdsaOperationStepUpAuthorizationResponse(body);
3191
- }
3192
- function fetchWithWalletSessionBearer(fetchImpl, token) {
3193
- return async (input, init) => {
3194
- const headers = new Headers(init?.headers);
3195
- headers.set("Authorization", `Bearer ${token}`);
3196
- return await fetchImpl(input, {
3197
- ...init,
3198
- headers
3199
- });
3200
- };
3201
- }
3202
- //#endregion
3203
- //#region src/core/signingEngine/flows/signEvmFamily/thresholdAdmission.ts
3204
- async function prepareEvmFamilyEcdsaOperationStepUp(args) {
3205
- const signerSession = args.material;
3206
- const participantIds = signerSession.publicFacts.participantIds;
3207
- if (participantIds.length !== 2) throw new Error("[chains] ECDSA operation step-up requires exactly two participants");
3208
- const operationId = String(args.operation.intent.operationId || "").trim();
3209
- const expiresAtMs = Math.min(Date.now() + 5 * 6e4, args.sessionExpiresAtMs);
3210
- return await prepareEcdsaOperationStepUp({
3211
- walletId: signerSession.walletId,
3212
- operationKind: "evm.sign_transaction",
3213
- operationId,
3214
- operationDigests: args.operationDigests,
3215
- materialActivation: signerSession.materialActivation,
3216
- normalSigningScope: signerSession.routerAbEcdsaDerivationNormalSigning.state.scope,
3217
- keyHandle: signerSession.publicFacts.keyHandle,
3218
- relayerKeyId: signerSession.transport.relayerKeyId,
3219
- participantIds: [Number(participantIds[0]), Number(participantIds[1])],
3220
- expiresAtMs
3221
- });
3222
- }
3223
- async function authorizeEvmFamilyEcdsaOperationStepUp(args) {
3224
- const proof = operationStepUpProof({
3225
- authority: args.authority,
3226
- authorization: args.authorization
3227
- });
3228
- const authorization = await issueEcdsaOperationStepUpAuthorization({
3229
- relayerUrl: args.relayerUrl,
3230
- request: {
3231
- kind: "router_ab_ecdsa_operation_step_up_v1",
3232
- operation: args.prepared.operation,
3233
- proof
3234
- }
3235
- });
3236
- const credential = {
3237
- kind: "operation_step_up",
3238
- walletSessionToken: args.walletSessionToken
3239
- };
3240
- return buildReadySecp256k1SigningMaterial({
3241
- walletId: args.material.walletId,
3242
- signerSession: args.material,
3243
- authorization: { kind: "operation_step_up" },
3244
- credential,
3245
- expiresAtMs: authorization.expires_at_ms,
3246
- singleUseEmailOtpSession: false,
3247
- operationStepUpPreparation: args.prepared.operation
3248
- });
3249
- }
3250
- function operationStepUpProof(args) {
3251
- switch (args.authorization.kind) {
3252
- case "passkey": {
3253
- if (!isPasskeyWalletAuthAuthority(args.authority)) throw new Error("[chains] passkey step-up requires the exact passkey authority");
3254
- const credential = args.authorization.credential;
3255
- return {
3256
- kind: "passkey",
3257
- authority: args.authority,
3258
- webauthn_authentication: {
3259
- id: credential.id,
3260
- rawId: credential.rawId,
3261
- type: credential.type,
3262
- authenticatorAttachment: credential.authenticatorAttachment ?? null,
3263
- response: {
3264
- clientDataJSON: credential.response.clientDataJSON,
3265
- authenticatorData: credential.response.authenticatorData,
3266
- signature: credential.response.signature,
3267
- userHandle: credential.response.userHandle ?? null
3268
- },
3269
- clientExtensionResults: credential.clientExtensionResults ?? null
3270
- }
3271
- };
3272
- }
3273
- case "email_otp":
3274
- if (!isEmailOtpWalletAuthAuthority(args.authority)) throw new Error("[chains] Email OTP step-up requires the exact Email OTP authority");
3275
- return {
3276
- kind: "email_otp",
3277
- authority: args.authority,
3278
- challenge_id: args.authorization.challengeId,
3279
- otp_code: args.authorization.otpCode
3280
- };
3281
- }
3282
- }
3283
- //#endregion
3284
- //#region src/core/signingEngine/session/material/activeWalletAuthorityEcdsaRuntime.ts
3285
- function blocked(reason, message) {
3286
- return message ? {
3287
- kind: "blocked",
3288
- reason,
3289
- message
3290
- } : {
3291
- kind: "blocked",
3292
- reason
3293
- };
3294
- }
3295
- function activeAuthorityEcdsaActivation(authority) {
3296
- if (isActiveEcdsaWalletAuthorityV1(authority)) return authority.signerActivations;
3297
- if (isCombinedWalletSignerActivationSetV1(authority.signerActivations)) return authority.signerActivations;
3298
- return null;
3299
- }
3300
- function exactAuthorityResolution(value) {
3301
- if (value.kind !== "resolved") switch (value.kind) {
3302
- case "missing_selection": return blocked("missing_selected_authority");
3303
- case "missing_auth_method":
3304
- case "missing_authority":
3305
- case "integrity_error": return blocked("invalid_selected_authority");
3306
- default: return value;
3307
- }
3308
- if (value.selection.walletId !== value.authMethod.walletId || value.selection.walletAuthMethodId !== value.authMethod.walletAuthMethodId || value.authMethod.walletAuthorityId !== value.authority.authorityId || value.authority.walletId !== value.selection.walletId) return blocked("authority_identity_mismatch");
3309
- if (value.selection.lockState !== "unlocked") return blocked("wallet_locked");
3310
- if (value.authMethod.status !== "active") return blocked("auth_method_inactive");
3311
- if (value.authority.state !== "active") return blocked("authority_inactive");
3312
- return {
3313
- selection: value.selection,
3314
- authMethod: value.authMethod,
3315
- authority: value.authority,
3316
- signerMaterials: value.signerMaterials
3317
- };
3318
- }
3319
- function exactEcdsaSignerMaterial(args) {
3320
- const matches = args.materials.filter((material) => material.kind === "wallet_authority_linked_signer_material_v1" && material.keyFamily === "ecdsa_secp256k1" && material.authorityId === args.authority.authorityId && material.walletAuthMethodId === args.authMethod.walletAuthMethodId && material.activationId === args.materialActivation.activationId && mpcMaterialActivationRefsEqual(material.materialActivation, args.materialActivation));
3321
- const [match] = matches;
3322
- return matches.length === 1 && match ? match : null;
3323
- }
3324
- function linkedMaterialTargetFactorMatches(args) {
3325
- const target = args.material.targetFactor;
3326
- if (target.walletAuthMethodId !== args.authMethod.walletAuthMethodId) return false;
3327
- if (args.authMethod.kind === "passkey") return target.kind === "passkey" && target.rpId === args.authMethod.rpId && target.credentialIdB64u === args.authMethod.credentialIdB64u;
3328
- return target.kind === "email_otp" && target.emailHashHex === args.authMethod.emailHashHex && target.registrationAuthorityId === args.authMethod.registrationAuthorityId;
3329
- }
3330
- function exactSessionCapability(args) {
3331
- return args.session.capabilitySubjects.filter((subject) => subject.kind === args.capability && subject.keyFamily === "ecdsa_secp256k1" && mpcMaterialActivationRefsEqual(subject.materialActivation, args.materialActivation)).length === 1;
3332
- }
3333
- function exactNormalSigningMaterialActivation(normalSigning) {
3334
- try {
3335
- return routerAbMpcMaterialActivationRefFromWire(normalSigning.scope.material_activation);
3336
- } catch {
3337
- return null;
3338
- }
3339
- }
3340
- function normalSigningAddress(normalSigning) {
3341
- try {
3342
- return bytesToHex(base64UrlDecode(normalSigning.scope.public_identity.ethereum_address20_b64u));
3343
- } catch {
3344
- return null;
3345
- }
3346
- }
3347
- function linkedEcdsaSourceSignerIdentitiesEqual(left, right) {
3348
- return mpcMaterialActivationRefsEqual(left.activation, right.activation) && left.clientPublicKey33B64u === right.clientPublicKey33B64u && left.relayerPublicKey33B64u === right.relayerPublicKey33B64u && left.thresholdPublicKey33B64u === right.thresholdPublicKey33B64u && left.thresholdEthereumAddress20B64u === right.thresholdEthereumAddress20B64u;
3349
- }
3350
- function linkedEcdsaTargetRecipientPreparationsEqual(left, right) {
3351
- return mpcMaterialActivationRefsEqual(left.activation, right.activation) && left.targetDeviceId === right.targetDeviceId && left.targetFactorVerificationDigestB64u === right.targetFactorVerificationDigestB64u && left.clientRecipientPublicKeyB64u === right.clientRecipientPublicKeyB64u && left.signingWorkerRecipientPublicKeyB64u === right.signingWorkerRecipientPublicKeyB64u;
3352
- }
3353
- function linkedEcdsaSourceContributionBindingsEqual(left, right) {
3354
- return left.linkSessionId === right.linkSessionId && left.enrollmentId === right.enrollmentId && left.sourceAuthorityId === right.sourceAuthorityId && linkedEcdsaSourceSignerIdentitiesEqual(left.source, right.source) && linkedEcdsaTargetRecipientPreparationsEqual(left.target, right.target) && left.targetClientPublicKey33B64u === right.targetClientPublicKey33B64u;
3355
- }
3356
- function linkedEcdsaNormalSigningStatesEqual(left, right) {
3357
- return left.kind === right.kind && sameRouterAbEcdsaDerivationNormalSigningScopeV1(left.scope, right.scope);
3358
- }
3359
- function linkedEcdsaSourceDerivationsEqual(left, right) {
3360
- return left.applicationBindingDigestB64u === right.applicationBindingDigestB64u && left.clientShareRetryCounter === right.clientShareRetryCounter && left.ecdsaThresholdKeyId === right.ecdsaThresholdKeyId && linkedEcdsaNormalSigningStatesEqual(left.sourceNormalSigning, right.sourceNormalSigning);
3361
- }
3362
- function linkedEcdsaActivationReceiptsEqual(left, right) {
3363
- return left.state === right.state && linkedEcdsaSourceContributionBindingsEqual(left.binding, right.binding) && linkedEcdsaSourceDerivationsEqual(left.sourceDerivation, right.sourceDerivation) && left.targetRelayerPublicKey33B64u === right.targetRelayerPublicKey33B64u && left.thresholdPublicKey33B64u === right.thresholdPublicKey33B64u && left.thresholdEthereumAddress20B64u === right.thresholdEthereumAddress20B64u && linkedEcdsaNormalSigningStatesEqual(left.normalSigning, right.normalSigning);
3364
- }
3365
- function exactHolderRuntime(args) {
3366
- const runtime = resolveLinkedEcdsaHolderRuntimeV1({
3367
- walletId: args.walletId,
3368
- materialActivation: args.materialActivation
3369
- });
3370
- if (!runtime) return null;
3371
- if (runtime.walletId !== args.walletId || runtime.authorityId !== args.authority.authorityId || runtime.walletAuthMethodId !== args.authMethod.walletAuthMethodId || runtime.factorAuthority.walletId !== args.walletId || runtime.factorAuthority.bindingId !== args.authMethod.walletAuthMethodId || runtime.ecdsaThresholdKeyId !== args.ecdsaThresholdKeyId || !mpcMaterialActivationRefsEqual(runtime.materialActivation, args.materialActivation) || !linkedMaterialTargetFactorMatches({
3372
- material: args.material,
3373
- authMethod: args.authMethod
3374
- }) || !linkedEcdsaActivationReceiptsEqual(runtime.activationReceipt, args.material.publicFacts.activationReceipt)) return null;
3375
- return runtime;
3376
- }
3377
- async function buildActiveRuntime(args) {
3378
- const normalSigning = args.holderRuntime.activationReceipt.normalSigning;
3379
- const normalScope = normalSigning.scope;
3380
- const normalActivation = exactNormalSigningMaterialActivation(normalSigning);
3381
- const normalAddress = normalSigningAddress(normalSigning);
3382
- if (!normalActivation || !normalAddress || !mpcMaterialActivationRefsEqual(normalActivation, args.materialActivation) || args.signer.walletId !== args.selected.authority.walletId || normalScope.wallet_id !== String(args.selected.authority.walletId) || normalScope.ecdsa_threshold_key_id !== String(args.holderRuntime.ecdsaThresholdKeyId) || normalScope.public_identity.threshold_public_key33_b64u !== String(args.signer.thresholdPublicKey33B64u) || normalAddress.toLowerCase() !== String(args.signer.evmAddress).trim().toLowerCase() || String(args.holderRuntime.activationReceipt.thresholdPublicKey33B64u) !== String(normalScope.public_identity.threshold_public_key33_b64u) || String(args.holderRuntime.activationReceipt.thresholdEthereumAddress20B64u) !== String(normalScope.public_identity.ethereum_address20_b64u)) return blocked("normal_signing_identity_mismatch");
3383
- let key;
3384
- let publicFacts;
3385
- let relayerKeyId;
3386
- let keyHandle;
3387
- try {
3388
- keyHandle = await deriveEvmFamilyEcdsaKeyHandle({
3389
- ecdsaThresholdKeyId: normalScope.ecdsa_threshold_key_id,
3390
- signingRootId: normalScope.signing_root_id,
3391
- signingRootVersion: normalScope.signing_root_version
3392
- });
3393
- const thresholdOwnerAddress = toThresholdOwnerAddress(args.signer.evmAddress);
3394
- key = buildBaseEvmFamilyEcdsaKeyIdentity({
3395
- walletId: args.selected.authority.walletId,
3396
- ecdsaThresholdKeyId: normalScope.ecdsa_threshold_key_id,
3397
- signingRootId: normalScope.signing_root_id,
3398
- signingRootVersion: normalScope.signing_root_version,
3399
- participantIds: [1, 2],
3400
- thresholdOwnerAddress
3401
- });
3402
- publicFacts = buildVerifiedEcdsaPublicFacts({
3403
- keyHandle,
3404
- publicKeyB64u: normalScope.public_identity.threshold_public_key33_b64u,
3405
- participantIds: [1, 2],
3406
- thresholdOwnerAddress
3407
- });
3408
- relayerKeyId = await computeEcdsaDerivationRoleLocalRelayerKeyId({
3409
- walletId: String(key.walletId),
3410
- signingRootId: String(key.signingRootId),
3411
- signingRootVersion: String(key.signingRootVersion)
3412
- });
3413
- } catch (error) {
3414
- return blocked("invalid_public_facts", error instanceof Error ? error.message : String(error));
3415
- }
3416
- if (key.ecdsaThresholdKeyId !== args.holderRuntime.ecdsaThresholdKeyId) return blocked("normal_signing_identity_mismatch");
3417
- let factorAuthorityRef;
3418
- try {
3419
- factorAuthorityRef = await walletAuthAuthorityRef({ authority: args.factorAuthority });
3420
- } catch (error) {
3421
- return blocked("authority_identity_mismatch", error instanceof Error ? error.message : String(error));
3422
- }
3423
- const runtime = {
3424
- kind: "active_wallet_authority_ecdsa_runtime_v1",
3425
- walletId: args.selected.authority.walletId,
3426
- authorityId: args.selected.authority.authorityId,
3427
- walletAuthMethodId: args.selected.authMethod.walletAuthMethodId,
3428
- authorityDigestB64u: args.selected.authority.authorityDigestB64u,
3429
- factorAuthorityRef,
3430
- authorityRevocationEpoch: args.selected.authority.revocationEpoch,
3431
- walletSessionId: args.operationCredential.walletSessionId,
3432
- operationCredential: args.operationCredential,
3433
- session: args.session,
3434
- requiredCapability: args.requiredCapability,
3435
- materialActivation: args.materialActivation,
3436
- ecdsaThresholdKeyId: key.ecdsaThresholdKeyId,
3437
- relayerKeyId,
3438
- authority: args.selected.authority,
3439
- authMethod: args.selected.authMethod,
3440
- holderRuntime: args.holderRuntime,
3441
- normalSigning,
3442
- key,
3443
- publicFacts
3444
- };
3445
- if (args.selected.authMethod.kind === "passkey") {
3446
- const auth = {
3447
- kind: "passkey",
3448
- rpId: toRpId(args.selected.authMethod.rpId),
3449
- credentialIdB64u: args.selected.authMethod.credentialIdB64u
3450
- };
3451
- if (!isPasskeyWalletAuthAuthority(args.factorAuthority) || args.factorAuthority.walletId !== key.walletId || args.factorAuthority.bindingId !== args.selected.authMethod.walletAuthMethodId || args.factorAuthority.factor.credentialIdB64u !== auth.credentialIdB64u || String(args.factorAuthority.verifier.rpId) !== String(auth.rpId)) return blocked("authority_identity_mismatch");
3452
- const resolvedKey = buildResolvedEvmFamilyEcdsaKey({
3453
- walletId: key.walletId,
3454
- publicFacts,
3455
- authBinding: buildPasskeyEcdsaAuthBinding({
3456
- rpId: auth.rpId,
3457
- credentialIdB64u: auth.credentialIdB64u
3458
- })
3459
- });
3460
- return {
3461
- ...runtime,
3462
- auth,
3463
- factorAuthority: args.factorAuthority,
3464
- resolvedKey
3465
- };
3466
- }
3467
- if (!isEmailOtpWalletAuthAuthority(args.factorAuthority) || args.factorAuthority.walletId !== key.walletId || args.factorAuthority.bindingId !== args.selected.authMethod.walletAuthMethodId || args.factorAuthority.verifier.emailHashHex !== args.selected.authMethod.emailHashHex) return blocked("authority_identity_mismatch");
3468
- const auth = {
3469
- kind: "email_otp",
3470
- providerSubjectId: String(args.factorAuthority.factor.providerUserId)
3471
- };
3472
- return {
3473
- ...runtime,
3474
- auth,
3475
- factorAuthority: args.factorAuthority
3476
- };
3477
- }
3478
- function projectActiveRuntime(args) {
3479
- if (!args.chainTarget) return null;
3480
- const lane = {
3481
- kind: "active_wallet_authority_ecdsa_lane_projection_v1",
3482
- source: "active_wallet_authority",
3483
- chainTarget: args.chainTarget,
3484
- runtime: args.runtime,
3485
- key: args.runtime.key,
3486
- materialActivation: args.runtime.materialActivation,
3487
- publicFacts: args.runtime.publicFacts,
3488
- state: "deferred",
3489
- authorizationState: "authorization_required"
3490
- };
3491
- if (args.runtime.auth.kind === "passkey") {
3492
- if (!args.runtime.resolvedKey) return null;
3493
- return {
3494
- ...lane,
3495
- auth: args.runtime.auth,
3496
- resolvedKey: args.runtime.resolvedKey
3497
- };
3498
- }
3499
- return {
3500
- ...lane,
3501
- auth: args.runtime.auth
3502
- };
3503
- }
3504
- async function resolveActiveWalletAuthorityEcdsaRuntimeV1(args) {
3505
- const { input, ports } = args;
3506
- const requiredCapability = input.requiredCapability || "sign";
3507
- const nowMs = Math.floor(Number(input.nowMs) || Date.now());
3508
- let walletId;
3509
- try {
3510
- walletId = toWalletId(input.walletId);
3511
- } catch (error) {
3512
- return blocked("invalid_selected_authority", error instanceof Error ? error.message : String(error));
3513
- }
3514
- let selectedResult;
3515
- try {
3516
- selectedResult = await ports.resolveSelectedWalletAuthority(String(walletId));
3517
- } catch (error) {
3518
- return blocked("persistence_unavailable", error instanceof Error ? error.message : String(error));
3519
- }
3520
- const selected = exactAuthorityResolution(selectedResult);
3521
- if ("kind" in selected) return selected;
3522
- const ecdsaActivation = activeAuthorityEcdsaActivation(selected.authority);
3523
- if (!ecdsaActivation) return blocked("missing_ecdsa_signer");
3524
- const signer = ecdsaActivation.ecdsa.signer;
3525
- const materialActivation = ecdsaActivation.ecdsa.materialActivation;
3526
- if (input.materialActivation && !mpcMaterialActivationRefsEqual(input.materialActivation, materialActivation)) return blocked("authority_identity_mismatch");
3527
- const linkedMaterial = exactEcdsaSignerMaterial({
3528
- materials: selected.signerMaterials,
3529
- authority: selected.authority,
3530
- authMethod: selected.authMethod,
3531
- materialActivation
3532
- });
3533
- if (!linkedMaterial || !linkedMaterialTargetFactorMatches({
3534
- material: linkedMaterial,
3535
- authMethod: selected.authMethod
3536
- })) return blocked("missing_holder_runtime");
3537
- if (String(linkedMaterial.publicFacts.ecdsaThresholdKeyId) !== String(linkedMaterial.ecdsaThresholdKeyId)) return blocked("holder_runtime_identity_mismatch");
3538
- const holderRuntime = exactHolderRuntime({
3539
- walletId,
3540
- authority: selected.authority,
3541
- authMethod: selected.authMethod,
3542
- materialActivation,
3543
- ecdsaThresholdKeyId: String(linkedMaterial.ecdsaThresholdKeyId),
3544
- material: linkedMaterial
3545
- });
3546
- if (!holderRuntime) return blocked("holder_runtime_identity_mismatch");
3547
- let sessionWithCredential;
3548
- try {
3549
- sessionWithCredential = await ports.readExactWithOperationCredential({
3550
- walletId,
3551
- authorityId: selected.authority.authorityId,
3552
- authMethodId: selected.authMethod.walletAuthMethodId
3553
- });
3554
- } catch (error) {
3555
- return blocked("persistence_unavailable", error instanceof Error ? error.message : String(error));
3556
- }
3557
- switch (sessionWithCredential.kind) {
3558
- case "found": break;
3559
- case "missing": return blocked("missing_wallet_session");
3560
- case "upgrade_required": return blocked("upgrade_required", "Wallet Session authorization requires a newer client");
3561
- }
3562
- const session = sessionWithCredential.record;
3563
- const operationCredential = sessionWithCredential.operationCredential;
3564
- if (session.expiresAtMs <= nowMs) return blocked("wallet_session_expired");
3565
- if (session.walletId !== walletId || session.authorityId !== selected.authority.authorityId || session.authMethodId !== selected.authMethod.walletAuthMethodId || session.authorityDigestB64u !== selected.authority.authorityDigestB64u || session.authorityRevocationEpoch !== selected.authority.revocationEpoch || operationCredential.walletSessionId.length === 0 || operationCredential.token.trim().length === 0) return blocked("wallet_session_identity_mismatch");
3566
- if (!exactSessionCapability({
3567
- session,
3568
- capability: requiredCapability,
3569
- materialActivation
3570
- })) return blocked("wallet_session_capability_mismatch");
3571
- const factorAuthority = holderRuntime.factorAuthority;
3572
- const runtime = await buildActiveRuntime({
3573
- selected,
3574
- session,
3575
- operationCredential,
3576
- requiredCapability,
3577
- signer,
3578
- materialActivation,
3579
- holderRuntime,
3580
- factorAuthority
3581
- });
3582
- if (runtime.kind !== "active_wallet_authority_ecdsa_runtime_v1") return runtime;
3583
- return {
3584
- kind: "resolved",
3585
- runtime,
3586
- lane: projectActiveRuntime({
3587
- runtime,
3588
- chainTarget: input.chainTarget
3589
- })
3590
- };
3591
- }
3592
- //#endregion
3593
- //#region src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.ts
3594
- function buildActiveWalletAuthorityConfirmationAuthPlan(runtime) {
3595
- return {
3596
- kind: "active_wallet_authority",
3597
- method: runtime.auth.kind,
3598
- accountId: String(runtime.walletId),
3599
- intent: "transaction_sign",
3600
- curve: "ecdsa",
3601
- walletSessionId: runtime.operationCredential.walletSessionId,
3602
- authorityId: runtime.authorityId,
3603
- authMethodId: runtime.walletAuthMethodId,
3604
- expiresAtMs: runtime.session.expiresAtMs
3605
- };
3606
- }
3607
- function signerAuthMethodForWalletAuthority(authority) {
3608
- switch (authority.factor.kind) {
3609
- case "passkey": return "passkey";
3610
- case "email_otp": return "email_otp";
3611
- default:
3612
- authority.factor;
3613
- throw new Error("[SigningEngine] unsupported wallet authorization factor");
3614
- }
3615
- }
3616
- function capabilityMatchesOperationScope(args) {
3617
- const manifest = args.capability.manifest;
3618
- return manifest.signer.walletId === args.scope.walletId && mpcMaterialActivationRefsEqual(manifest.activation.materialActivation, args.scope.materialActivation) && manifest.signer.scope.targetMemberships.some((target) => thresholdEcdsaChainTargetsEqual(target, args.scope.chainTarget));
3619
- }
3620
- function sessionAuthorizesCanonicalEcdsaCapability(args) {
3621
- const materialActivation = args.capability.manifest.activation.materialActivation;
3622
- return args.session.capabilitySubjects.filter((subject) => subject.kind === "sign" && subject.keyFamily === "ecdsa_secp256k1" && mpcMaterialActivationRefsEqual(subject.materialActivation, materialActivation)).length === 1;
3623
- }
3624
- async function resolveExactEcdsaOperationStepUpSession(args) {
3625
- if (!capabilityMatchesOperationScope(args)) throw new Error("[SigningEngine] exact ECDSA Wallet Session material changed");
3626
- const ports = args.ports;
3627
- const selected = await ports.resolveSelectedWalletAuthority(String(args.scope.walletId));
3628
- const selectedReason = selectedStepUpAuthorityUnavailableReason(selected, args.scope.walletId);
3629
- if (selectedReason || selected.kind !== "resolved") throw exactEcdsaWalletSessionUnavailable(selectedReason ?? "selected_authority_invalid");
3630
- const capabilityAuthority = await walletAuthAuthorityRef({ authority: args.capability.authority });
3631
- const manifestAuthority = args.capability.manifest.signer.authority;
3632
- const selectedActivation = selected.authority.signerActivations.ecdsa;
3633
- if (capabilityAuthority.walletId !== manifestAuthority.walletId || capabilityAuthority.walletAuthMethodId !== manifestAuthority.walletAuthMethodId || capabilityAuthority.authorityDigest !== manifestAuthority.authorityDigest || manifestAuthority.walletId !== selected.authority.walletId || manifestAuthority.walletAuthMethodId !== selected.authMethod.walletAuthMethodId || !selectedActivation || !mpcMaterialActivationRefsEqual(selectedActivation.materialActivation, args.scope.materialActivation)) throw new Error("[SigningEngine] exact ECDSA Wallet Session material changed");
3634
- const read = await ports.readExactWithOperationCredential({
3635
- walletId: args.scope.walletId,
3636
- authorityId: selected.authority.authorityId,
3637
- authMethodId: selected.authMethod.walletAuthMethodId
3638
- });
3639
- if (read.kind !== "found") throw exactEcdsaWalletSessionUnavailable(read.kind === "missing" ? "wallet_session_missing" : "wallet_session_upgrade_required");
3640
- const session = read.record;
3641
- const sessionReason = stepUpSessionRecordUnavailableReason({
3642
- session,
3643
- operationCredential: read.operationCredential,
3644
- walletId: args.scope.walletId,
3645
- authority: selected.authority,
3646
- authMethod: selected.authMethod,
3647
- capability: args.capability
3648
- });
3649
- if (sessionReason) throw exactEcdsaWalletSessionUnavailable(sessionReason);
3650
- return {
3651
- credential: read.operationCredential,
3652
- expiresAtMs: session.expiresAtMs
3653
- };
3654
- }
3655
- function exactEcdsaWalletSessionUnavailable(reason) {
3656
- return /* @__PURE__ */ new Error(`[SigningEngine] exact ECDSA Wallet Session is unavailable: ${reason}`);
3657
- }
3658
- function selectedStepUpAuthorityUnavailableReason(selected, walletId) {
3659
- if (selected.kind !== "resolved") return selected.kind === "missing_selection" ? "selected_authority_missing" : "selected_authority_invalid";
3660
- if (selected.selection.walletId !== walletId || selected.authMethod.walletId !== walletId || selected.authority.walletId !== walletId || selected.selection.walletAuthMethodId !== selected.authMethod.walletAuthMethodId || selected.authMethod.walletAuthorityId !== selected.authority.authorityId) return "authority_identity_mismatch";
3661
- if (selected.selection.lockState !== "unlocked") return "wallet_locked";
3662
- if (selected.authMethod.status !== "active") return "auth_method_inactive";
3663
- if (selected.authority.state !== "active") return "authority_inactive";
3664
- return null;
3665
- }
3666
- function stepUpSessionRecordUnavailableReason(args) {
3667
- const { session } = args;
3668
- if (session.walletId !== args.walletId || session.authorityId !== args.authority.authorityId || session.authMethodId !== args.authMethod.walletAuthMethodId) return "wallet_session_identity_mismatch (authority or method)";
3669
- if (session.authorityDigestB64u !== args.authority.authorityDigestB64u) return "wallet_session_identity_mismatch (authority digest)";
3670
- if (session.authorityRevocationEpoch !== args.authority.revocationEpoch) return "wallet_session_identity_mismatch (authority revocation epoch)";
3671
- if (!args.operationCredential.token.trim()) return "wallet_session_identity_mismatch (operation credential)";
3672
- if (session.expiresAtMs <= Date.now()) return "wallet_session_expired";
3673
- if (!sessionAuthorizesCanonicalEcdsaCapability({
3674
- session,
3675
- capability: args.capability
3676
- })) return "wallet_session_capability_mismatch";
3677
- return null;
3678
- }
3679
- async function prepareSessionBoundEcdsaOperationStepUp(sessionScope, input) {
3680
- const session = await resolveExactEcdsaOperationStepUpSession(sessionScope);
3681
- return await prepareEvmFamilyEcdsaOperationStepUp({
3682
- operation: input.operation,
3683
- operationDigests: input.operationDigests,
3684
- material: input.material,
3685
- sessionExpiresAtMs: session.expiresAtMs
3686
- });
3687
- }
3688
- async function runSerializedEcdsaMaterialUse(args, task) {
3689
- return await args.deps.withThresholdEcdsaSigningQueue({
3690
- queueKey: resolveThresholdEcdsaSigningQueueKey({ materialActivation: args.materialActivation }),
3691
- walletId: args.walletId,
3692
- enabled: true,
3693
- ...args.shouldAbort ? { shouldAbort: args.shouldAbort } : {},
3694
- task
3695
- });
3696
- }
3697
- function requireEvmFamilyRelayerUrl(deps) {
3698
- const relayerUrl = String(deps.seamsWebConfigs.network.relayer?.url || "").trim();
3699
- if (!relayerUrl) throw new Error("[SigningEngine] EVM-family signing requires relayerUrl");
3700
- return relayerUrl;
3701
- }
3702
- async function resolveCurrentActiveWalletAuthorityRuntime(args) {
3703
- const current = await resolveActiveWalletAuthorityEcdsaRuntimeV1({
3704
- ports: args.deps.activeWalletAuthorityEcdsaRuntimeReadPorts,
3705
- input: {
3706
- walletId: args.signer.walletId,
3707
- chainTarget: args.signer.chainTarget,
3708
- requiredCapability: "sign",
3709
- materialActivation: args.signer.materialActivation,
3710
- nowMs: Date.now()
3711
- }
3712
- });
3713
- if (current.kind !== "resolved") throw new Error(`[SigningEngine] active Wallet Authority ECDSA runtime is ${current.reason}`);
3714
- const runtime = current.runtime;
3715
- if (runtime.authorityId !== args.prepared.authorityId || runtime.walletAuthMethodId !== args.prepared.walletAuthMethodId || runtime.authorityDigestB64u !== args.prepared.authorityDigestB64u || runtime.authorityRevocationEpoch !== args.prepared.authorityRevocationEpoch || runtime.walletSessionId !== args.prepared.walletSessionId || runtime.publicFacts.keyHandle !== args.signer.keyHandle) throw new Error("[SigningEngine] active Wallet Authority ECDSA runtime was replaced");
3716
- return runtime;
3717
- }
3718
- /** The wallet's active manifest names the material that may be used right now.
3719
- * When it has moved on from the one this operation was prepared against, the
3720
- * preparation is superseded -- material activation is advance-only, so the
3721
- * prepared side is always the stale one. That is a re-resolution, not a failure
3722
- * and not a request for the wrong material. */
3723
- function ecdsaSigningMaterialSupersession(args) {
3724
- if (mpcMaterialActivationRefsEqual(args.currentMaterialActivation, args.preparedMaterialActivation)) return null;
3725
- return {
3726
- kind: "superseded",
3727
- supersessionKind: "material_activation_replaced",
3728
- preparedMaterialActivation: args.preparedMaterialActivation,
3729
- currentMaterialActivation: args.currentMaterialActivation
3730
- };
3731
- }
3732
- function ecdsaSigningCapabilitySupersession(args) {
3733
- const preparedManifest = args.preparedCapability.manifest;
3734
- const preparedActivation = preparedManifest.activation.materialActivation;
3735
- const currentActivation = args.currentManifest.activation.materialActivation;
3736
- const activationSupersession = ecdsaSigningMaterialSupersession({
3737
- preparedMaterialActivation: preparedActivation,
3738
- currentMaterialActivation: currentActivation
3739
- });
3740
- if (activationSupersession) return activationSupersession;
3741
- const preparedSigner = preparedManifest.signer;
3742
- const currentSigner = args.currentManifest.signer;
3743
- if (String(preparedManifest.identity.manifestId) === String(args.currentManifest.identity.manifestId) && Number(preparedManifest.identity.manifestRevision) === Number(args.currentManifest.identity.manifestRevision) && String(preparedSigner.capability) === String(currentSigner.capability) && String(preparedSigner.authority.walletId) === String(currentSigner.authority.walletId) && String(preparedSigner.authority.authorityDigest) === String(currentSigner.authority.authorityDigest)) return null;
3744
- return {
3745
- kind: "superseded",
3746
- supersessionKind: "capability_authority_replaced",
3747
- preparedMaterialActivation: preparedActivation,
3748
- currentMaterialActivation: currentActivation
3749
- };
3750
- }
3751
- function ecdsaSigningAuthorizationSupersession(args) {
3752
- const prepared = args.preparedAuthorization;
3753
- const current = args.currentAuthorization;
3754
- if (current && prepared.selectedAuthority.authorityId === current.selectedAuthority.authorityId && prepared.selectedAuthMethod.kind === current.selectedAuthMethod.kind && prepared.selectedAuthMethod.walletAuthMethodId === current.selectedAuthMethod.walletAuthMethodId && prepared.session.walletId === current.session.walletId && prepared.session.authorityId === current.session.authorityId && prepared.session.authMethodId === current.session.authMethodId && prepared.session.authorizationId === current.session.authorizationId && prepared.session.quotaId === current.session.quotaId && (prepared.session.authorityDigestB64u === current.session.authorityDigestB64u || isEd25519ExtensionOfEcdsaWalletAuthority(prepared.selectedAuthority, current.selectedAuthority) && walletSessionPreservesCapabilities(prepared.session, current.session)) && prepared.session.issuedAtMs === current.session.issuedAtMs && prepared.session.expiresAtMs === current.session.expiresAtMs && prepared.session.authorityRevocationEpoch === current.session.authorityRevocationEpoch && prepared.operationCredential.walletSessionId === current.operationCredential.walletSessionId && prepared.operationCredential.token === current.operationCredential.token && exactEcdsaWalletSessionRuntimesMatch(prepared.runtime, current.runtime) && mpcMaterialActivationRefsEqual(current.runtime.materialActivation, args.materialActivation)) return null;
3755
- return {
3756
- kind: "superseded",
3757
- supersessionKind: "reusable_authorization_replaced",
3758
- preparedMaterialActivation: args.materialActivation,
3759
- currentMaterialActivation: args.materialActivation
3760
- };
3761
- }
3762
- async function resolveEcdsaSigningMaterialHydrationPlan(args) {
3763
- const activeRuntimeResolution = await resolveExactEcdsaCapabilityRuntime({
3764
- manifest: args.capability.manifest,
3765
- chainTarget: args.chainTarget,
3766
- relayerUrl: args.relayerUrl
3767
- });
3768
- if (activeRuntimeResolution.kind !== "resolved") return {
3769
- kind: "failed",
3770
- failure: {
3771
- kind: "unavailable",
3772
- reason: "runtime_correlation_mismatch"
3773
- }
3774
- };
3775
- const superseded = ecdsaSigningCapabilitySupersession({
3776
- preparedCapability: args.capability,
3777
- currentManifest: activeRuntimeResolution.manifest
3778
- });
3779
- if (superseded) return {
3780
- kind: "superseded",
3781
- replacement: superseded
3782
- };
3783
- if (args.preparedAuthorization) {
3784
- const authorizationSupersession = ecdsaSigningAuthorizationSupersession({
3785
- preparedAuthorization: args.preparedAuthorization,
3786
- currentAuthorization: args.currentAuthorization,
3787
- materialActivation: args.materialActivation
3788
- });
3789
- if (authorizationSupersession) return {
3790
- kind: "superseded",
3791
- replacement: authorizationSupersession
3792
- };
3793
- }
3794
- const resolution = await resolveHydratedSecp256k1SigningMaterial({
3795
- capability: args.capability,
3796
- runtime: activeRuntimeResolution.runtime,
3797
- chainTarget: args.chainTarget,
3798
- materialActivation: args.materialActivation,
3799
- workerCtx: args.workerCtx
3800
- });
3801
- if (resolution.kind === "unavailable") return {
3802
- kind: "failed",
3803
- failure: resolution
3804
- };
3805
- if (!args.preparedAuthorization) return {
3806
- kind: "authorization_required",
3807
- requirement: {
3808
- kind: "material_for_step_up",
3809
- material: resolution.material
3810
- }
3811
- };
3812
- if (!args.currentAuthorization) return {
3813
- kind: "superseded",
3814
- replacement: {
3815
- kind: "superseded",
3816
- supersessionKind: "reusable_authorization_replaced",
3817
- preparedMaterialActivation: args.materialActivation,
3818
- currentMaterialActivation: args.materialActivation
3819
- }
3820
- };
3821
- return {
3822
- kind: "ready",
3823
- value: {
3824
- kind: "material_from_canonical_capability",
3825
- material: attachExactEcdsaWalletSessionAuthorization({
3826
- material: resolution.material,
3827
- capability: args.capability,
3828
- authorization: args.currentAuthorization,
3829
- nowMs: Date.now()
3830
- })
3831
- }
3832
- };
3833
- }
3834
- async function createEvmFamilySigningFlowRuntime(args) {
3835
- const [Secp256k1Engine, WebAuthnP256Engine] = await Promise.all([loadSecp256k1EngineCtor(), loadWebAuthnP256EngineCtor()]);
3836
- const workerCtx = args.deps.getSignerWorkerContext();
3837
- const ctx = args.deps.touchConfirm.getContext();
3838
- const walletId = toWalletId(args.walletSession.walletId);
3839
- const relayerUrl = requireEvmFamilyRelayerUrl(args.deps);
3840
- const resolvedSigner = args.senderSignatureAlgorithm === "secp256k1" ? requireEvmFamilyEcdsaSigner(args.getEcdsaSigningLaneIdentity(), "ECDSA signing material hydration") : void 0;
3841
- if (args.activeWalletAuthority && !resolvedSigner) throw new Error("[SigningEngine] active Wallet Authority runtime requires a threshold ECDSA signer");
3842
- const capability = resolvedSigner && !args.activeWalletAuthority ? await args.deps.resolveCanonicalEcdsaSigningCapability({
3843
- walletId: resolvedSigner.walletId,
3844
- chainTarget: resolvedSigner.chainTarget,
3845
- materialActivation: resolvedSigner.materialActivation
3846
- }) : void 0;
3847
- const activeAuthorization = resolvedSigner && !args.activeWalletAuthority ? await args.deps.resolveActiveEcdsaWalletSessionAuthorization({
3848
- walletId: resolvedSigner.walletId,
3849
- chainTarget: resolvedSigner.chainTarget,
3850
- materialActivation: resolvedSigner.materialActivation
3851
- }) : null;
3852
- const exactOperationCredentialScope = resolvedSigner && capability && !args.activeWalletAuthority ? {
3853
- walletId: resolvedSigner.walletId,
3854
- chainTarget: resolvedSigner.chainTarget,
3855
- materialActivation: resolvedSigner.materialActivation
3856
- } : void 0;
3857
- const thresholdEcdsaStepUpRuntime = !args.activeWalletAuthority && capability && exactOperationCredentialScope ? {
3858
- ...args.emailOtpSigningForFlow ? { emailOtpSigning: args.emailOtpSigningForFlow } : {},
3859
- reusableAuthorization: activeAuthorization ? { kind: "active" } : {
3860
- kind: "absent",
3861
- requiredFactor: signerAuthMethodForWalletAuthority(capability.authority)
3862
- },
3863
- operationStepUp: {
3864
- prepare: prepareSessionBoundEcdsaOperationStepUp.bind(void 0, {
3865
- ports: args.deps.activeWalletAuthorityEcdsaRuntimeReadPorts,
3866
- scope: exactOperationCredentialScope,
3867
- capability
3868
- }),
3869
- authorize: async ({ authorization, prepared, material }) => {
3870
- args.onAuthSideEffectStarted?.(authorization.kind === "passkey" ? "passkey_reauth" : "email_otp_challenge");
3871
- const session = await resolveExactEcdsaOperationStepUpSession({
3872
- ports: args.deps.activeWalletAuthorityEcdsaRuntimeReadPorts,
3873
- scope: exactOperationCredentialScope,
3874
- capability
3875
- });
3876
- return await authorizeEvmFamilyEcdsaOperationStepUp({
3877
- relayerUrl,
3878
- authority: capability.authority,
3879
- authorization,
3880
- prepared,
3881
- material,
3882
- walletSessionToken: session.credential.token
3883
- });
3884
- }
3885
- },
3886
- ...args.onAuthSideEffectStarted ? { onAuthSideEffectStarted: args.onAuthSideEffectStarted } : {}
3887
- } : void 0;
3888
- const secp256k1Engine = new Secp256k1Engine({
3889
- beforeSigning: args.deps.beforeSigning,
3890
- getRpId: () => ctx.touchIdPrompt.getRpId(),
3891
- workerCtx,
3892
- shouldAbort: args.shouldAbort
3893
- });
3894
- const activeWalletAuthority = args.activeWalletAuthority;
3895
- const activeWalletAuthorityAuthorization = activeWalletAuthority && resolvedSigner ? {
3896
- kind: "active_wallet_authority",
3897
- confirmationAuthPlan: activeWalletAuthority.confirmationAuthPlan,
3898
- sign: async (input) => {
3899
- if (String(activeWalletAuthority.intent.operationId) !== input.operationId) throw new Error("[SigningEngine] active Wallet Authority signing operation identity changed");
3900
- return await runSerializedEcdsaMaterialUse({
3901
- deps: args.deps,
3902
- walletId: resolvedSigner.walletId,
3903
- materialActivation: resolvedSigner.materialActivation,
3904
- ...args.shouldAbort ? { shouldAbort: args.shouldAbort } : {}
3905
- }, async () => {
3906
- const readyMaterial = buildActiveWalletAuthorityReadySecp256k1Material({
3907
- authorityRuntime: await resolveCurrentActiveWalletAuthorityRuntime({
3908
- deps: args.deps,
3909
- prepared: activeWalletAuthority.runtime,
3910
- signer: resolvedSigner
3911
- }),
3912
- chainTarget: resolvedSigner.chainTarget,
3913
- relayerUrl
3914
- });
3915
- return await secp256k1Engine.signReady({
3916
- kind: "digest",
3917
- algorithm: "secp256k1",
3918
- digest32: input.signingDigest32
3919
- }, readyMaterial, {
3920
- intent: activeWalletAuthority.intent,
3921
- authPlan: activeWalletAuthority.confirmationAuthPlan
3922
- }, input.operationDigests);
3923
- });
3924
- }
3925
- } : void 0;
3926
- return { flowArgs: {
3927
- ctx,
3928
- touchConfirm: args.deps.touchConfirm,
3929
- workerCtx,
3930
- walletId,
3931
- onEvent: args.onEvent,
3932
- engines: {
3933
- secp256k1: secp256k1Engine,
3934
- webauthnP256: new WebAuthnP256Engine(workerCtx, args.deps.beforeSigning)
3935
- },
3936
- ...resolvedSigner && capability ? {
3937
- runEcdsaMaterialUse: runSerializedEcdsaMaterialUse.bind(null, {
3938
- deps: args.deps,
3939
- walletId: resolvedSigner.walletId,
3940
- materialActivation: resolvedSigner.materialActivation,
3941
- ...args.shouldAbort ? { shouldAbort: args.shouldAbort } : {}
3942
- }),
3943
- resolveEcdsaSigningMaterialPlan: async () => await resolveEcdsaSigningMaterialHydrationPlan({
3944
- capability,
3945
- preparedAuthorization: activeAuthorization,
3946
- currentAuthorization: activeAuthorization ? await args.deps.resolveActiveEcdsaWalletSessionAuthorization({
3947
- walletId: resolvedSigner.walletId,
3948
- chainTarget: resolvedSigner.chainTarget,
3949
- materialActivation: resolvedSigner.materialActivation
3950
- }) : null,
3951
- walletId: resolvedSigner.walletId,
3952
- chainTarget: resolvedSigner.chainTarget,
3953
- materialActivation: resolvedSigner.materialActivation,
3954
- relayerUrl,
3955
- workerCtx
3956
- })
3957
- } : {},
3958
- ...activeWalletAuthorityAuthorization ? { authorization: activeWalletAuthorityAuthorization } : {},
3959
- ...args.signingSessionPlan ? { signingSessionPlan: args.signingSessionPlan } : {},
3960
- ...args.signingOperation ? { signingOperation: args.signingOperation } : {},
3961
- onSigningOperationTransition: args.onSigningOperationTransition || emitEvmFamilySigningOperationTrace,
3962
- ...thresholdEcdsaStepUpRuntime ? { thresholdEcdsaStepUpRuntime } : {},
3963
- confirmationConfigOverride: args.confirmationConfigOverride
3964
- } };
3965
- }
3966
- //#endregion
3967
- //#region src/core/signingEngine/flows/signEvmFamily/freshAuthRetryPolicy.ts
3968
- function ownerOperationAuthorizationDecisionFromError(error) {
3969
- return error instanceof WalletSessionQuotaAdmissionError ? error.authorizationDecision : void 0;
3970
- }
3971
- async function runEvmFamilyFreshAuthRetry(args) {
3972
- switch (args.decision.retryMode) {
3973
- case "await_admission_owner_completion": return await args.signingSessionCoordinator.runWalletSessionQuotaAdmissionRetry({
3974
- queueKey: args.queueKey,
3975
- refresh: args.rereadAuthoritativeReadiness,
3976
- retryAfterRefresh: args.rereadAuthoritativeReadiness
3977
- });
3978
- case "email_otp_single_operation_step_up":
3979
- case "fresh_auth": return await args.signingSessionCoordinator.runWalletSessionQuotaAdmissionRetry({
3980
- queueKey: args.queueKey,
3981
- refresh: args.performFreshAuth,
3982
- retryAfterRefresh: args.rereadAuthoritativeReadiness
3983
- });
3984
- default: return assertNeverEvmFamilyFreshAuthRetryMode(args.decision);
3985
- }
3986
- }
3987
- function assertNeverEvmFamilyFreshAuthRetryMode(value) {
3988
- throw new Error(`[SigningEngine][ecdsa] unsupported fresh-auth retry mode: ${String(value)}`);
3989
- }
3990
- function buildBlockedEvmFamilyFreshAuthRetryDecision(args) {
3991
- return {
3992
- kind: "do_not_retry",
3993
- trigger: args.trigger,
3994
- sideEffectState: args.sideEffectState,
3995
- blockedReason: args.blockedReason
3996
- };
3997
- }
3998
- function blockEvmFamilyFreshAuthRetry(args, blockedReason) {
3999
- return buildBlockedEvmFamilyFreshAuthRetryDecision({
4000
- trigger: args.trigger,
4001
- sideEffectState: args.sideEffectState,
4002
- blockedReason
4003
- });
4004
- }
4005
- function nextEvmFamilyFreshAuthRetrySideEffectState(args) {
4006
- if (args.current === "threshold_reconnect_started") return args.current;
4007
- switch (args.sideEffect) {
4008
- case "auth_prompt_shown":
4009
- case "email_otp_challenge":
4010
- case "passkey_reauth": return args.current === "no_auth_side_effect_started" ? "auth_prompt_shown" : args.current;
4011
- case "auth_confirmed": return "auth_confirmed";
4012
- case "threshold_reconnect": return "threshold_reconnect_started";
4013
- }
4014
- }
4015
- function classifyEvmFamilyFreshAuthRetry(args) {
4016
- if (args.alreadyRetryingFreshAuth) return blockEvmFamilyFreshAuthRetry(args, "already_retrying");
4017
- if (args.senderSignatureAlgorithm !== "secp256k1") return blockEvmFamilyFreshAuthRetry(args, "non_secp256k1_sender");
4018
- const ownerDecision = ownerOperationAuthorizationDecisionFromError(args.error);
4019
- const admissionFailure = classifyWalletSessionQuotaAdmissionFailure(args.error);
4020
- const admissionDecision = args.trigger === "wallet_signing_budget_exhausted" ? ownerDecision?.kind === "step_up_required" ? decideWalletSessionQuotaAdmissionFailure(admissionFailure ?? {
4021
- kind: "exhausted",
4022
- source: "server_prepare",
4023
- detail: "Server requires owner operation step-up"
4024
- }) : admissionFailure?.kind === "in_flight" ? decideWalletSessionQuotaAdmissionFailure(admissionFailure) : null : null;
4025
- const admissionCanRetryAfterSideEffect = admissionDecision?.kind === "request_fresh_step_up" || admissionDecision?.kind === "wait_and_retry_admission";
4026
- if (args.sideEffectState !== "no_auth_side_effect_started" && !admissionCanRetryAfterSideEffect) return blockEvmFamilyFreshAuthRetry(args, "auth_side_effect_started");
4027
- if (args.trigger === "wallet_session_reauthorization_required") {
4028
- if (args.hasEmailOtpSigningPlan || args.hasStepUpAuthPlan) return blockEvmFamilyFreshAuthRetry(args, "signing_auth_plan_already_selected");
4029
- if (ownerDecision?.kind !== "step_up_required") return blockEvmFamilyFreshAuthRetry(args, "error_not_retryable");
4030
- if (args.accountAuth.primaryAuthMethod !== SIGNER_AUTH_METHODS.emailOtp && args.accountAuth.primaryAuthMethod !== SIGNER_AUTH_METHODS.passkey) return blockEvmFamilyFreshAuthRetry(args, "unsupported_primary_auth");
4031
- } else {
4032
- if (!admissionDecision) return blockEvmFamilyFreshAuthRetry(args, "error_not_retryable");
4033
- if (args.hasStepUpAuthPlan && admissionDecision.kind !== "request_fresh_step_up" && admissionDecision.kind !== "wait_and_retry_admission") return blockEvmFamilyFreshAuthRetry(args, "step_up_auth_plan_already_selected");
4034
- if (admissionDecision.kind === "wait_and_retry_admission") {
4035
- if (args.admissionRetryState.kind === "authoritative_readiness_reread") return blockEvmFamilyFreshAuthRetry(args, "authoritative_readiness_still_in_flight");
4036
- return {
4037
- kind: "retry",
4038
- trigger: args.trigger,
4039
- sideEffectState: args.sideEffectState,
4040
- retryMode: "await_admission_owner_completion",
4041
- admissionDecision
4042
- };
4043
- }
4044
- if (args.activeSigningAuthMethod === SIGNER_AUTH_METHODS.emailOtp) return {
4045
- kind: "retry",
4046
- trigger: args.trigger,
4047
- sideEffectState: args.sideEffectState,
4048
- retryMode: "email_otp_single_operation_step_up",
4049
- admissionDecision
4050
- };
4051
- }
4052
- return {
4053
- kind: "retry",
4054
- trigger: args.trigger,
4055
- sideEffectState: args.sideEffectState,
4056
- retryMode: "fresh_auth"
4057
- };
4058
- }
4059
- //#endregion
4060
- //#region src/core/signingEngine/flows/signEvmFamily/freshWalletSessionRetry.ts
4061
- function resolveEvmFamilyWalletSessionExpiryContext(args) {
4062
- if (walletSessionFailureFromError(args.error)?.kind !== "expired") return { kind: "not_expired" };
4063
- if (args.candidate.kind === "unavailable") return { kind: "expired_without_exact_lane" };
4064
- return {
4065
- kind: "authoritative_expiry",
4066
- state: requireAuthoritativeExpiredWalletSessionAuthorizationBoundary({
4067
- source: {
4068
- kind: "ecdsa",
4069
- laneIdentity: args.candidate.identity,
4070
- authorization: args.candidate.authorization
4071
- },
4072
- expiresAtMs: args.candidate.expiresAtMs,
4073
- detectedAtMs: args.detectedAtMs
4074
- })
4075
- };
4076
- }
4077
- async function invalidateAuthoritativeEvmFamilyWalletSessionExpiry(args) {
4078
- switch (args.context.kind) {
4079
- case "not_expired":
4080
- case "expired_without_exact_lane": return;
4081
- case "authoritative_expiry":
4082
- if ((await args.coordinator.invalidateExpiredWalletSession({
4083
- state: args.context.state,
4084
- source: SIGNING_SESSION_EXPIRY_DETECTION_SOURCES.serverRejection
4085
- })).kind === "unavailable") throw new Error("[SigningEngine][ecdsa] expired Wallet Session cleanup failed");
4086
- return;
4087
- default: return assertNeverEvmFamilyWalletSessionExpiryContext(args.context);
4088
- }
4089
- }
4090
- function assertNeverEvmFamilyWalletSessionExpiryContext(value) {
4091
- throw new Error(`[SigningEngine][ecdsa] unsupported Wallet Session expiry context: ${String(value)}`);
4092
- }
4093
- async function retryEvmFamilyWithFreshWalletSessionAuthWhenRequired(args) {
4094
- const decision = classifyEvmFamilyFreshAuthRetry({
4095
- trigger: "wallet_session_reauthorization_required",
4096
- error: args.error,
4097
- senderSignatureAlgorithm: args.senderSignatureAlgorithm,
4098
- accountAuth: args.accountAuth,
4099
- alreadyRetryingFreshAuth: args.alreadyRetryingFreshEmailOtpAuth,
4100
- hasEmailOtpSigningPlan: args.hasEmailOtpSigningPlan,
4101
- sideEffectState: args.sideEffectState
4102
- });
4103
- args.onDecision?.(decision);
4104
- if (decision.kind !== "retry") return null;
4105
- await invalidateAuthoritativeEvmFamilyWalletSessionExpiry({
4106
- context: args.expiryContext,
4107
- coordinator: args.signingSessionCoordinator
4108
- });
4109
- const emailOtp = args.accountAuth.primaryAuthMethod === SIGNER_AUTH_METHODS.emailOtp;
4110
- emitEvmFamilySigningEvent(args.onEvent, {
4111
- phase: emailOtp ? SigningEventPhase.STEP_06_AUTH_EMAIL_OTP_CHALLENGE_STARTED : SigningEventPhase.STEP_09_THRESHOLD_SESSION_RECONNECT_STARTED,
4112
- status: "running",
4113
- walletId: args.walletId,
4114
- message: emailOtp ? "Signing session expired; requesting Email OTP reauthorization" : "Signing session expired; requesting passkey reauthorization",
4115
- interaction: {
4116
- kind: "none",
4117
- overlay: "none"
4118
- },
4119
- data: {
4120
- chain: args.chain,
4121
- reason: "threshold_session_expired"
4122
- }
4123
- });
4124
- return await args.retry();
4125
- }
4126
- //#endregion
4127
- //#region src/core/signingEngine/flows/signEvmFamily/operationIds.ts
4128
- function createEvmFamilySigningOperationId() {
4129
- const randomId = secureRandomBase64Url(32, "EVM family signing operation IDs");
4130
- return SigningSessionIds.signingOperation(`evm-family-sign:${randomId}`);
4131
- }
4132
- function createEvmFamilySigningOperationIds(providedOperationId) {
4133
- if (providedOperationId) return {
4134
- planningOperationId: providedOperationId,
4135
- confirmationOperationId: providedOperationId,
4136
- callerProvided: true
4137
- };
4138
- return {
4139
- planningOperationId: createEvmFamilySigningOperationId(),
4140
- callerProvided: false
4141
- };
4142
- }
4143
- function ensureEvmFamilyConfirmationOperationId(operationIds) {
4144
- operationIds.confirmationOperationId = operationIds.confirmationOperationId || createEvmFamilySigningOperationId();
4145
- return operationIds.confirmationOperationId;
4146
- }
4147
- function bindEvmFamilyCallerProvidedOperationIdToFingerprint(operationIds, operationFingerprint, binder) {
4148
- if (!operationIds.callerProvided) return;
4149
- binder.bindCallerProvidedOperationIdToFingerprint({
4150
- operationId: operationIds.planningOperationId,
4151
- operationFingerprint
4152
- });
4153
- }
4154
- //#endregion
4155
- //#region src/core/signingEngine/flows/signEvmFamily/executorThresholdState.ts
4156
- function resolvePreparedEvmFamilyThresholdOwnerAddress(args) {
4157
- switch (args.publicIdentityContinuity.kind) {
4158
- case "lane_identity_only": return args.laneThresholdOwnerAddress;
4159
- case "verified_material_identity":
4160
- if (args.publicIdentityContinuity.verifiedMaterialThresholdOwnerAddress !== args.laneThresholdOwnerAddress) throw new Error("[SigningEngine][ecdsa] prepared material owner address does not match the exact signing lane");
4161
- return args.laneThresholdOwnerAddress;
4162
- default:
4163
- args.publicIdentityContinuity;
4164
- throw new Error("[SigningEngine][ecdsa] unsupported prepared public identity state");
4165
- }
4166
- }
4167
- function buildPreparedEvmFamilyExecutorThresholdEcdsaState(args) {
4168
- return {
4169
- kind: "prepared",
4170
- thresholdOwnerAddress: resolvePreparedEvmFamilyThresholdOwnerAddress(args)
4171
- };
4172
- }
4173
- //#endregion
4174
- //#region src/core/signingEngine/flows/signEvmFamily/signEvmFamily.ts
4175
- var signEvmFamily_exports = /* @__PURE__ */ __exportAll({
4176
- reconcileEvmFamilyNonceLane: () => reconcileEvmFamilyNonceLane,
4177
- reconcileTempoNonceLane: () => reconcileTempoNonceLane,
4178
- reportEvmFamilyBroadcastAccepted: () => reportEvmFamilyBroadcastAccepted,
4179
- reportEvmFamilyBroadcastRejected: () => reportEvmFamilyBroadcastRejected,
4180
- reportEvmFamilyDroppedOrReplaced: () => reportEvmFamilyDroppedOrReplaced,
4181
- reportEvmFamilyFinalized: () => reportEvmFamilyFinalized,
4182
- reportTempoBroadcastAccepted: () => reportTempoBroadcastAccepted,
4183
- reportTempoBroadcastRejected: () => reportTempoBroadcastRejected,
4184
- reportTempoDroppedOrReplaced: () => reportTempoDroppedOrReplaced,
4185
- reportTempoFinalized: () => reportTempoFinalized,
4186
- signEvmFamily: () => signEvmFamily
4187
- });
4188
- function evmFamilyWalletSessionExpiryCandidate(args) {
4189
- if (!args.prepared || args.prepared.kind !== "authorized") return { kind: "unavailable" };
4190
- return {
4191
- kind: "exact_ecdsa_lane",
4192
- identity: exactEcdsaSigningLaneIdentityFromSelectedLane(args.prepared.signingLane),
4193
- authorization: args.prepared.signingLane.authorization,
4194
- expiresAtMs: args.prepared.signingLane.authorization.session.expiresAtMs
4195
- };
4196
- }
4197
- function ecdsaOperationAuthorizationQueueKey(args) {
4198
- const authorizationId = args.prepared.signingLane.authorization.session.authorizationId;
4199
- return buildOperationAuthorizationQueueKey({
4200
- walletId: args.walletId,
4201
- materialActivationId: args.prepared.signingLane.materialActivation.activationId,
4202
- authorizationId,
4203
- authorityKey: signingLaneAuthBindingKey(args.prepared.signingLane.auth),
4204
- targetKey: thresholdEcdsaChainTargetKey(args.prepared.signingLane.chainTarget)
4205
- });
4206
- }
4207
- function activeWalletAuthorityFlowRuntimeFromPrepared(prepared) {
4208
- if (prepared.kind !== "authorization_required" || prepared.candidate.source !== "active_wallet_authority") return null;
4209
- const confirmationAuthPlan = buildActiveWalletAuthorityConfirmationAuthPlan(prepared.candidate.runtime);
4210
- return {
4211
- runtime: prepared.candidate.runtime,
4212
- intent: prepared.intent,
4213
- confirmationAuthPlan
4214
- };
4215
- }
4216
- function buildEvmFamilyPreparationDisplayModel(args) {
4217
- const title = args.chainTarget.kind === "tempo" ? "Sign Tempo Transaction" : "Sign EVM Transaction";
4218
- const displayArgs = {
4219
- request: args.request,
4220
- signerAccount: String(args.walletSession.walletId),
4221
- title,
4222
- subtitle: ""
4223
- };
4224
- if (args.request.kind === "eip1559") return buildEvmDisplayModel({
4225
- ...displayArgs,
4226
- request: args.request
4227
- });
4228
- return buildTempoDisplayModel({
4229
- ...displayArgs,
4230
- request: args.request
4231
- });
4232
- }
4233
- async function executeEvmFamilyFreshAuthRetry(args) {
4234
- const rereadAuthoritativeReadiness = signEvmFamilyAttempt.bind(null, args.deps, args.signingArgs, {
4235
- admissionRetryState: { kind: "authoritative_readiness_reread" },
4236
- forceFreshAuth: false,
4237
- operationIds: args.operationIds,
4238
- retryingFreshAuth: args.retryingFreshAuth,
4239
- signingSessionCoordinator: args.signingSessionCoordinator
4240
- });
4241
- const performFreshAuth = signEvmFamilyAttempt.bind(null, args.deps, args.signingArgs, {
4242
- admissionRetryState: { kind: "initial_admission" },
4243
- forceFreshAuth: true,
4244
- operationIds: args.operationIds,
4245
- retryingFreshAuth: true,
4246
- signingSessionCoordinator: args.signingSessionCoordinator
4247
- });
4248
- return await runEvmFamilyFreshAuthRetry({
4249
- decision: args.decision,
4250
- queueKey: args.queueKey,
4251
- signingSessionCoordinator: args.signingSessionCoordinator,
4252
- rereadAuthoritativeReadiness,
4253
- performFreshAuth
4254
- });
4255
- }
4256
- function emitEvmFamilyFreshAuthRetryEvent(args) {
4257
- const isEmailOtp = args.accountAuth.primaryAuthMethod === SIGNER_AUTH_METHODS.emailOtp;
4258
- emitEvmFamilySigningEvent(args.onEvent, {
4259
- phase: isEmailOtp ? SigningEventPhase.STEP_06_AUTH_EMAIL_OTP_CHALLENGE_STARTED : SigningEventPhase.STEP_09_THRESHOLD_SESSION_RECONNECT_STARTED,
4260
- status: "running",
4261
- walletId: args.walletId,
4262
- message: isEmailOtp ? "Signing session needs reauthorization; requesting Email OTP" : "Signing session needs reauthorization; requesting passkey",
4263
- interaction: {
4264
- kind: "none",
4265
- overlay: "none"
4266
- },
4267
- data: {
4268
- chain: args.chain,
4269
- reason: "wallet_signing_budget_reserved"
4270
- }
4271
- });
4272
- }
4273
- async function signEvmFamily(deps, args) {
4274
- const admission = reviewAdmissionForBinding(deps.touchConfirm.getContext().surfaceMeasurementBinding);
4275
- if (admission) {
4276
- admission.assertPending();
4277
- deps = {
4278
- ...deps,
4279
- beforeSigning: admission.beforeSigning
4280
- };
4281
- }
4282
- const attempt = {
4283
- admissionRetryState: { kind: "initial_admission" },
4284
- operationIds: createEvmFamilySigningOperationIds(args.signingOperationId)
4285
- };
4286
- await deps.touchConfirm.openTransactionPreparationModal({
4287
- chain: "evm_family",
4288
- walletLabel: String(args.walletSession.walletId),
4289
- model: buildEvmFamilyPreparationDisplayModel(args),
4290
- confirmationConfigOverride: args.confirmationConfigOverride
4291
- });
4292
- try {
4293
- return await signEvmFamilyAttempt(deps, args, attempt);
4294
- } finally {
4295
- deps.touchConfirm.closeTransactionPreparationModal();
4296
- }
4297
- }
4298
- async function signEvmFamilyAttempt(deps, args, attempt) {
4299
- throwIfEvmFamilySigningCancelled(args.shouldAbort);
4300
- const walletId = toWalletId(args.walletSession.walletId);
4301
- const signingTarget = evmFamilySigningTargetFromExplicitTarget({
4302
- request: args.request,
4303
- chainTarget: args.chainTarget
4304
- });
4305
- await ensureSealedRefreshStartupParityForTransactionSigning(deps.ensureSealedRefreshStartupParity, {
4306
- walletId,
4307
- chainTarget: signingTarget
4308
- });
4309
- const requestChain = signingTarget.kind;
4310
- const requestChainTarget = signingTarget;
4311
- let accountAuth;
4312
- let ecdsaSigningLane;
4313
- let selectedEcdsaAuthMethod;
4314
- let preparedEcdsaSigningSession;
4315
- let activeWalletAuthorityFlowRuntime;
4316
- const ecdsaAttemptDiagnostics = {
4317
- walletId,
4318
- chain: requestChain,
4319
- chainTarget: requestChainTarget,
4320
- senderSignatureAlgorithm: args.request.senderSignatureAlgorithm
4321
- };
4322
- const signingSessionCoordinator = attempt.signingSessionCoordinator || deps.signingSessionCoordinator;
4323
- if (!signingSessionCoordinator) throw new Error("[SigningEngine][ecdsa] production signing session coordinator is required");
4324
- const operationIds = attempt.operationIds || createEvmFamilySigningOperationIds(args.signingOperationId);
4325
- const operationFingerprint = await computeSigningOperationFingerprint({
4326
- kind: `evm-family:${requestChain}`,
4327
- payload: {
4328
- walletId,
4329
- chainTarget: requestChainTarget,
4330
- request: args.request
4331
- }
4332
- });
4333
- const operationFingerprintDigest = parseSigningOperationFingerprintDigest(operationFingerprint);
4334
- bindEvmFamilyCallerProvidedOperationIdToFingerprint(operationIds, operationFingerprint, signingSessionCoordinator);
4335
- const ensureConfirmationOperationId = () => ensureEvmFamilyConfirmationOperationId(operationIds);
4336
- const createTransactionSigningOperation = () => ({
4337
- operationId: ensureConfirmationOperationId(),
4338
- operationFingerprint,
4339
- intent: SigningOperationIntent.TransactionSign
4340
- });
4341
- const derivePreparedEvmFamilyKeyFingerprint = (_prepared) => void 0;
4342
- let freshAuthRetrySideEffectState = "no_auth_side_effect_started";
4343
- const markFreshAuthRetrySideEffect = (sideEffect) => {
4344
- freshAuthRetrySideEffectState = nextEvmFamilyFreshAuthRetrySideEffectState({
4345
- current: freshAuthRetrySideEffectState,
4346
- sideEffect
4347
- });
4348
- };
4349
- const recordFreshAuthRetryDecision = (decision, error) => {
4350
- const errorMessage = error instanceof Error ? error.message : String(error || "unknown error");
4351
- ecdsaAttemptDiagnostics.freshAuthRetry = {
4352
- decision,
4353
- sideEffectState: freshAuthRetrySideEffectState,
4354
- errorMessage
4355
- };
4356
- emitSigningSessionFlowTrace("evm-family", {
4357
- stage: "fresh_auth_retry.decision",
4358
- walletId,
4359
- chain: requestChain,
4360
- chainTarget: requestChainTarget,
4361
- decision,
4362
- sideEffectState: freshAuthRetrySideEffectState,
4363
- errorMessage
4364
- });
4365
- };
4366
- const markConfirmationDisplayed = () => {
4367
- markFreshAuthRetrySideEffect("auth_prompt_shown");
4368
- return ensureConfirmationOperationId();
4369
- };
4370
- if (args.request.senderSignatureAlgorithm === "secp256k1") {
4371
- preparedEcdsaSigningSession = await prepareEvmFamilyEcdsaSigningSession({
4372
- deps,
4373
- walletSession: args.walletSession,
4374
- signingTarget,
4375
- signingOperation: createTransactionSigningOperation(),
4376
- diagnostics: ecdsaAttemptDiagnostics,
4377
- signingSessionCoordinator,
4378
- forceFreshAuth: attempt.forceFreshAuth === true
4379
- });
4380
- activeWalletAuthorityFlowRuntime = activeWalletAuthorityFlowRuntimeFromPrepared(preparedEcdsaSigningSession) ?? void 0;
4381
- ecdsaSigningLane = preparedEcdsaSigningSession.kind === "authorized" ? preparedEcdsaSigningSession.signingLane : void 0;
4382
- selectedEcdsaAuthMethod = preparedEcdsaSigningSession.authMethod;
4383
- accountAuth = preparedEcdsaSigningSession.kind === "authorized" ? preparedEcdsaSigningSession.accountAuth : await resolveEvmFamilyTransactionWalletAuth({
4384
- senderSignatureAlgorithm: "secp256k1",
4385
- signerAuthMethod: preparedEcdsaSigningSession.authMethod
4386
- });
4387
- emitSigningSessionFlowTrace("evm-family", {
4388
- stage: "ecdsa_attempt.prepared",
4389
- walletId,
4390
- chain: requestChain,
4391
- chainTarget: requestChainTarget,
4392
- ...derivePreparedEvmFamilyKeyFingerprint(preparedEcdsaSigningSession) ? { evmFamilyKeyFingerprint: derivePreparedEvmFamilyKeyFingerprint(preparedEcdsaSigningSession) } : {},
4393
- authorizationState: preparedEcdsaSigningSession.kind,
4394
- authMethod: selectedEcdsaAuthMethod,
4395
- lane: summarizeEvmFamilyEcdsaLane(ecdsaSigningLane)
4396
- });
4397
- } else accountAuth = await resolveEvmFamilyTransactionWalletAuth({ senderSignatureAlgorithm: args.request.senderSignatureAlgorithm });
4398
- const resolvedAccountAuth = accountAuth;
4399
- throwIfEvmFamilySigningCancelled(args.shouldAbort);
4400
- const requestEmailOtpTransactionSigningChallenge = deps.requestEmailOtpTransactionSigningChallenge;
4401
- const authPlanningArgsBase = {
4402
- confirmedDeps: {
4403
- ...deps,
4404
- requestEmailOtpTransactionSigningChallenge
4405
- },
4406
- walletSession: args.walletSession,
4407
- chain: requestChain,
4408
- accountAuth: resolvedAccountAuth,
4409
- operationFingerprintDigest,
4410
- onEvent: args.onEvent
4411
- };
4412
- const getPreparedEcdsaSigningSession = () => {
4413
- if (preparedEcdsaSigningSession) return preparedEcdsaSigningSession;
4414
- throw new Error("[SigningEngine][ecdsa] prepared signing session is required");
4415
- };
4416
- const getEcdsaSigningLaneIdentity = () => {
4417
- const prepared = getPreparedEcdsaSigningSession();
4418
- return prepared.kind === "authorized" ? prepared.signingLane.identity : prepared.identity;
4419
- };
4420
- const getPreparedEcdsaSigningSessionIfEcdsa = () => args.request.senderSignatureAlgorithm === "secp256k1" ? getPreparedEcdsaSigningSession() : void 0;
4421
- const reResolveSupersededPreparation = async (error) => {
4422
- if (!isEvmFamilyEcdsaMaterialSupersededError(error)) return null;
4423
- if (attempt.reResolvedAfterSupersession) return null;
4424
- emitSigningSessionFlowTrace("evm-family", {
4425
- stage: "ecdsa_attempt.material_superseded",
4426
- walletId,
4427
- chain: requestChain,
4428
- chainTarget: requestChainTarget,
4429
- supersessionKind: error.superseded.supersessionKind,
4430
- preparedMaterialActivationId: String(error.superseded.preparedMaterialActivation.activationId),
4431
- currentMaterialActivationId: String(error.superseded.currentMaterialActivation.activationId)
4432
- });
4433
- return await signEvmFamilyAttempt(deps, args, {
4434
- admissionRetryState: { kind: "initial_admission" },
4435
- operationIds,
4436
- signingSessionCoordinator,
4437
- reResolvedAfterSupersession: true,
4438
- ...attempt.retryingFreshAuth ? { retryingFreshAuth: true } : {}
4439
- });
4440
- };
4441
- const resolveAuthPlanningResult = async () => args.request.senderSignatureAlgorithm === "secp256k1" ? await (async () => {
4442
- const prepared = getPreparedEcdsaSigningSession();
4443
- if (activeWalletAuthorityFlowRuntime) return { signingAuthPlan: activeWalletAuthorityFlowRuntime.confirmationAuthPlan };
4444
- return prepared.kind === "authorized" ? await resolveEvmFamilyTransactionStepUp({
4445
- ...authPlanningArgsBase,
4446
- chainTarget: signingTarget,
4447
- senderSignatureAlgorithm: "secp256k1",
4448
- ecdsaAuthorization: "reusable_wallet_session",
4449
- preparedOperation: prepared.preparedOperation
4450
- }) : await (async () => {
4451
- const signer = requireEvmFamilyEcdsaSigner(prepared.identity, "auth-neutral ECDSA step-up planning");
4452
- const capability = await deps.resolveCanonicalEcdsaSigningCapability({
4453
- walletId: signer.walletId,
4454
- chainTarget: signer.chainTarget,
4455
- materialActivation: signer.materialActivation
4456
- });
4457
- return await resolveEvmFamilyTransactionStepUp({
4458
- ...authPlanningArgsBase,
4459
- chainTarget: signingTarget,
4460
- senderSignatureAlgorithm: "secp256k1",
4461
- ecdsaAuthorization: "operation_step_up",
4462
- capability,
4463
- materialActivation: signer.materialActivation,
4464
- operationFingerprint
4465
- });
4466
- })();
4467
- })() : await resolveEvmFamilyTransactionStepUp({
4468
- ...authPlanningArgsBase,
4469
- chainTarget: signingTarget,
4470
- senderSignatureAlgorithm: args.request.senderSignatureAlgorithm
4471
- });
4472
- const prepareFlowForExecution = async () => {
4473
- const { signingAuthPlan, signingSessionPlan, emailOtpSigning } = await resolveAuthPlanningResult();
4474
- const emailOtpSigningForFlow = emailOtpSigning ? {
4475
- prepare: emailOtpSigning.prepare,
4476
- ...emailOtpSigning.resend ? { resend: emailOtpSigning.resend } : {}
4477
- } : void 0;
4478
- const { flowArgs } = await createEvmFamilySigningFlowRuntime({
4479
- deps,
4480
- walletSession: args.walletSession,
4481
- request: args.request,
4482
- chainTarget: requestChainTarget,
4483
- senderSignatureAlgorithm: args.request.senderSignatureAlgorithm,
4484
- ...signingSessionPlan ? { signingSessionPlan } : {},
4485
- signingOperation: createTransactionSigningOperation(),
4486
- onSigningOperationTransition: emitEvmFamilySigningOperationTrace,
4487
- ...emailOtpSigningForFlow ? { emailOtpSigningForFlow } : {},
4488
- confirmationConfigOverride: args.confirmationConfigOverride,
4489
- shouldAbort: args.shouldAbort,
4490
- onEvent: args.onEvent,
4491
- onAuthSideEffectStarted: markFreshAuthRetrySideEffect,
4492
- getEcdsaSigningLaneIdentity,
4493
- ...activeWalletAuthorityFlowRuntime ? { activeWalletAuthority: activeWalletAuthorityFlowRuntime } : {}
4494
- });
4495
- return {
4496
- signingAuthPlan,
4497
- signingSessionPlan,
4498
- emailOtpSigning,
4499
- flowArgs
4500
- };
4501
- };
4502
- let preparedFlow;
4503
- try {
4504
- preparedFlow = await prepareFlowForExecution();
4505
- } catch (error) {
4506
- const reResolved = await reResolveSupersededPreparation(error);
4507
- if (reResolved) return reResolved;
4508
- throw error;
4509
- }
4510
- const { signingAuthPlan, emailOtpSigning, flowArgs } = preparedFlow;
4511
- let freshAuthRetryHandledFinalization = false;
4512
- const retryWithFreshWalletSessionAuth = async (error) => {
4513
- return await retryEvmFamilyWithFreshWalletSessionAuthWhenRequired({
4514
- error,
4515
- walletId,
4516
- chain: args.request.chain,
4517
- senderSignatureAlgorithm: args.request.senderSignatureAlgorithm,
4518
- accountAuth: resolvedAccountAuth,
4519
- alreadyRetryingFreshEmailOtpAuth: attempt.retryingFreshAuth,
4520
- hasEmailOtpSigningPlan: !!emailOtpSigning,
4521
- sideEffectState: freshAuthRetrySideEffectState,
4522
- signingSessionCoordinator,
4523
- expiryContext: resolveEvmFamilyWalletSessionExpiryContext({
4524
- error,
4525
- candidate: evmFamilyWalletSessionExpiryCandidate({ prepared: preparedEcdsaSigningSession }),
4526
- detectedAtMs: Date.now()
4527
- }),
4528
- onDecision: (decision) => recordFreshAuthRetryDecision(decision, error),
4529
- onEvent: args.onEvent,
4530
- retry: async () => {
4531
- const result = await signEvmFamilyAttempt(deps, args, {
4532
- admissionRetryState: { kind: "initial_admission" },
4533
- forceFreshAuth: true,
4534
- operationIds,
4535
- retryingFreshAuth: true,
4536
- signingSessionCoordinator
4537
- });
4538
- freshAuthRetryHandledFinalization = true;
4539
- return result;
4540
- }
4541
- });
4542
- };
4543
- const retryWithFreshAuth = async (error) => {
4544
- if (isEvmFamilyEcdsaMaterialSupersededError(error)) {
4545
- const reResolved = await reResolveSupersededPreparation(error);
4546
- if (reResolved) {
4547
- freshAuthRetryHandledFinalization = true;
4548
- return reResolved;
4549
- }
4550
- return null;
4551
- }
4552
- const walletSessionRetry = await retryWithFreshWalletSessionAuth(error);
4553
- if (walletSessionRetry) return walletSessionRetry;
4554
- const decision = classifyEvmFamilyFreshAuthRetry({
4555
- trigger: "wallet_signing_budget_exhausted",
4556
- error,
4557
- senderSignatureAlgorithm: args.request.senderSignatureAlgorithm,
4558
- accountAuth: resolvedAccountAuth,
4559
- activeSigningAuthMethod: getPreparedEcdsaSigningSession().authMethod,
4560
- admissionRetryState: attempt.admissionRetryState,
4561
- alreadyRetryingFreshAuth: attempt.retryingFreshAuth,
4562
- hasStepUpAuthPlan: isEmailOtpSigningAuthPlan(signingAuthPlan) || isPasskeySigningAuthPlan(signingAuthPlan),
4563
- sideEffectState: freshAuthRetrySideEffectState
4564
- });
4565
- recordFreshAuthRetryDecision(decision, error);
4566
- if (decision.kind !== "retry") return null;
4567
- const preparedForRetry = getPreparedEcdsaSigningSession();
4568
- if (preparedForRetry.kind !== "authorized") return null;
4569
- if (decision.retryMode !== "await_admission_owner_completion") emitEvmFamilyFreshAuthRetryEvent({
4570
- walletId,
4571
- chain: args.request.chain,
4572
- accountAuth: resolvedAccountAuth,
4573
- onEvent: args.onEvent
4574
- });
4575
- const result = await executeEvmFamilyFreshAuthRetry({
4576
- deps,
4577
- signingArgs: args,
4578
- decision,
4579
- queueKey: ecdsaOperationAuthorizationQueueKey({
4580
- walletId,
4581
- prepared: preparedForRetry
4582
- }),
4583
- operationIds,
4584
- retryingFreshAuth: attempt.retryingFreshAuth === true,
4585
- signingSessionCoordinator
4586
- });
4587
- freshAuthRetryHandledFinalization = true;
4588
- return result;
4589
- };
4590
- const preparedNonceSession = getPreparedEcdsaSigningSessionIfEcdsa();
4591
- const nonceOperation = {
4592
- ...createTransactionSigningOperation(),
4593
- accountId: String(walletId)
4594
- };
4595
- if (preparedNonceSession) {
4596
- const nonceFingerprint = derivePreparedEvmFamilyKeyFingerprint(preparedNonceSession);
4597
- emitSigningSessionFlowTrace("evm-family", {
4598
- stage: "ecdsa_attempt.nonce_operation_prepared",
4599
- walletId,
4600
- chain: requestChain,
4601
- chainTarget: requestChainTarget,
4602
- ...nonceFingerprint ? { evmFamilyKeyFingerprint: nonceFingerprint } : {},
4603
- ...preparedNonceSession.kind === "authorized" ? { walletSessionId: preparedNonceSession.signingLane.authorization.operationCredential.walletSessionId } : {},
4604
- materialActivationId: preparedNonceSession.kind === "authorized" ? preparedNonceSession.signingLane.materialActivation.activationId : preparedNonceSession.candidate.materialActivation.activationId
4605
- });
4606
- }
4607
- const preparedExecutorSession = getPreparedEcdsaSigningSessionIfEcdsa();
4608
- const requireThresholdEcdsaStepUpRuntime = () => {
4609
- const runtime = flowArgs.thresholdEcdsaStepUpRuntime;
4610
- if (!runtime) throw new Error("[SigningEngine][ecdsa] prepared executor requires threshold step-up runtime");
4611
- return runtime;
4612
- };
4613
- const thresholdEcdsaStepUp = preparedExecutorSession && !activeWalletAuthorityFlowRuntime ? {
4614
- kind: "required",
4615
- authPlan: {
4616
- kind: "planned",
4617
- signingAuthPlan
4618
- },
4619
- operation: {
4620
- intent: preparedExecutorSession.kind === "authorized" ? preparedExecutorSession.transactionOperation.intent : preparedExecutorSession.intent,
4621
- authPlan: signingAuthPlan
4622
- },
4623
- runtime: requireThresholdEcdsaStepUpRuntime()
4624
- } : { kind: "not_required" };
4625
- let thresholdEcdsaState;
4626
- if (!preparedExecutorSession) thresholdEcdsaState = { kind: "not_required" };
4627
- else thresholdEcdsaState = buildPreparedEvmFamilyExecutorThresholdEcdsaState({
4628
- laneThresholdOwnerAddress: preparedExecutorSession.kind === "authorized" ? preparedExecutorSession.signingLane.key.thresholdOwnerAddress : preparedExecutorSession.candidate.key.thresholdOwnerAddress,
4629
- publicIdentityContinuity: { kind: "lane_identity_only" }
4630
- });
4631
- const executePayload = {
4632
- deps,
4633
- walletId,
4634
- request: args.request,
4635
- chainTarget: requestChainTarget,
4636
- flowArgs,
4637
- nonceOperation,
4638
- thresholdEcdsaState,
4639
- onConfirmationDisplayed: markConfirmationDisplayed,
4640
- thresholdEcdsaStepUp,
4641
- retryWithFreshEmailOtpAuth: retryWithFreshAuth
4642
- };
4643
- if (preparedExecutorSession) {
4644
- const result = await executeEvmFamilyTransactionSigning(executePayload);
4645
- if (freshAuthRetryHandledFinalization) return result;
4646
- return result;
4647
- }
4648
- return await executeEvmFamilyTransactionSigning(executePayload);
4649
- }
4650
- async function reportTempoBroadcastAccepted(deps, args) {
4651
- await reportEvmFamilyBroadcastAccepted(deps, args);
4652
- }
4653
- async function reportTempoBroadcastRejected(deps, args) {
4654
- await reportEvmFamilyBroadcastRejected(deps, args);
4655
- }
4656
- async function reportTempoFinalized(deps, args) {
4657
- await reportEvmFamilyFinalized(deps, args);
4658
- }
4659
- async function reportTempoDroppedOrReplaced(deps, args) {
4660
- await reportEvmFamilyDroppedOrReplaced(deps, args);
4661
- }
4662
- async function reconcileTempoNonceLane(deps, args) {
4663
- return await reconcileEvmFamilyNonceLane(deps, args);
4664
- }
4665
- //#endregion
4666
- export { authorizeEvmFamilyEcdsaSigningCapability as A, listLinkedEcdsaHolderRuntimesV1 as B, buildExactPasskeyOwnerLaneScope as C, buildPersistedEcdsaRoleLocalMaterial as D, resolveExactWalletAuthAuthority as E, signingAuthorizationFromPreprocessing as F, resolveLinkedEcdsaHolderRuntimeV1 as H, ensureSealedRefreshStartupParityForThresholdEcdsaBootstrap as I, isRetryableSealedRefreshCapabilityFetchError as L, buildEcdsaPreprocessingCapability as M, buildExactEcdsaDirectCapabilityRuntime as N, ecdsaRoleLocalPersistedMaterialSource as O, buildExactEvmFamilyWalletSessionAuthorization as P, clearLinkedEcdsaHolderRuntimesV1 as R, buildExactLinkedEmailOtpOwnerLaneScope as S, resolveExactOwnerLaneScope as T, removeLinkedEcdsaHolderRuntimeV1 as V, resolveEmailOtpEcdsaSigningSessionAuth as _, reportTempoFinalized as a, withThresholdEcdsaSigningQueue as b, resolveActiveWalletAuthorityEcdsaRuntimeV1 as c, createActiveEcdsaCapabilityRuntimeForChainResolver as d, createActiveEcdsaCapabilityRuntimeResolver as f, requestEmailOtpSigningSessionChallenge as g, refreshEmailOtpSigningSession as h, reportTempoDroppedOrReplaced as i, buildCanonicalEvmFamilyEcdsaSigningCapability as j, resolveEcdsaRoleLocalMaterial as k, issueEcdsaOperationStepUpAuthorization as l, resolveExactEcdsaSealedRuntime as m, reportTempoBroadcastAccepted as n, signEvmFamily as o, resolveExactEcdsaCapabilityRuntime as p, reportTempoBroadcastRejected as r, signEvmFamily_exports as s, reconcileTempoNonceLane as t, prepareEcdsaOperationStepUp as u, clearThresholdEcdsaSigningQueue as v, isOwnerRelinkRequiredError as w, buildExactEcdsaPasskeyOwnerLaneScope as x, resolveThresholdEcdsaSigningQueueKey as y, installLinkedEcdsaHolderRuntimeV1 as z };