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