@seams/wallet 0.13.1 → 0.15.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 (309) hide show
  1. package/README.md +3 -3
  2. package/dist/.build-inputs.sha256 +1 -1
  3. package/dist/esm/SeamsWeb/SeamsWeb.js +1 -0
  4. package/dist/esm/SeamsWeb/publicApi/keyExport.js +0 -2
  5. package/dist/esm/SeamsWeb/walletIframe/client/router.js +9 -4
  6. package/dist/esm/SeamsWeb/walletIframe/coordinator.js +8 -0
  7. package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +0 -4
  8. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +1 -1
  9. package/dist/esm/core/indexedDB/index.js +2 -1
  10. package/dist/esm/core/indexedDB/schemaNames.js +1 -2
  11. package/dist/esm/core/indexedDB/seamsWalletDB/schema.js +2 -1
  12. package/dist/esm/core/indexedDB/walletDbName.js +6 -0
  13. package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.js +24 -27
  14. package/dist/esm/plugins/plugin-utils.js +2 -142
  15. package/dist/esm/react/components/AccountMenuButton/AccountMenuDialog.js +13 -89
  16. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +4 -17
  17. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +0 -68
  18. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +2 -11
  19. package/dist/esm/react/components/AccountMenuButton/index.js +4 -4
  20. package/dist/esm/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
  21. package/dist/esm/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
  22. package/dist/{public/sdk/accountLifecycle-HEUmDLus.js → esm/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
  23. package/dist/esm/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
  24. package/dist/esm/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
  25. package/dist/{public/sdk/clientSessionPersistenceState-DRdve9rC.js → esm/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
  26. package/dist/esm/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
  27. package/dist/esm/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
  28. package/dist/{public/sdk/ecdsaCapabilityManifest-ChszYCC0.js → esm/sdk/ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
  29. package/dist/{public/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
  30. package/dist/esm/sdk/ecdsaDerivationExport-DOGzq0qC.js +1 -0
  31. package/dist/esm/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
  32. package/dist/esm/sdk/{emailOtpEcdsaDerivationIdentity-p0C1CQva.js → emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
  33. package/dist/esm/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
  34. package/dist/esm/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
  35. package/dist/esm/sdk/exportKeypairOperation-DzbjKbnk.js +1 -0
  36. package/dist/esm/sdk/host-DYuu07E5.js +1 -0
  37. package/dist/esm/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
  38. package/dist/esm/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
  39. package/dist/{public/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
  40. package/dist/{public/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
  41. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
  42. package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
  43. package/dist/esm/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
  44. package/dist/esm/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
  45. package/dist/{public/sdk/passkey-custody-Cd_yyoRa.js → esm/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
  46. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
  47. package/dist/{public/sdk/presignaturePool-Bkk6bLFB.js → esm/sdk/presignaturePool-V10fZpG3.js} +1 -1
  48. package/dist/esm/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
  49. package/dist/esm/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
  50. package/dist/esm/sdk/registration-DEGZR8kA.js +1 -0
  51. package/dist/esm/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
  52. package/dist/{public/sdk/registrationIntent-BHU5k2Q-.js → esm/sdk/registrationIntent-090Zj7Iu.js} +1 -1
  53. package/dist/esm/sdk/{registrationSignerPlan-dY9Rp0m_.js → registrationSignerPlan-CPzHavPM.js} +1 -1
  54. package/dist/esm/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
  55. package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
  56. package/dist/esm/sdk/runtime-auth-BNR1wI8E.js +1 -0
  57. package/dist/esm/sdk/runtime-device-link-Dq8g_UNb.js +1 -0
  58. package/dist/esm/sdk/runtime-ecdsa-tempo-AGjT7Xpa.js +1 -0
  59. package/dist/esm/sdk/runtime-email-otp-BpBOuSsT.js +1 -0
  60. package/dist/esm/sdk/runtime-export-CBsacCPY.js +1 -0
  61. package/dist/esm/sdk/runtime-near-J3hKjC7G.js +1 -0
  62. package/dist/esm/sdk/runtime-preferences-CVt5sLvm.js +1 -0
  63. package/dist/esm/sdk/runtime-recovery-BzewdcoT.js +1 -0
  64. package/dist/esm/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
  65. package/dist/esm/sdk/secp256k1-CKq7_HD-.js +1 -0
  66. package/dist/esm/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
  67. package/dist/esm/sdk/shared-BywEqTsd.js +6 -0
  68. package/dist/{public/sdk/signEvmFamily-ttVfV0qm.js → esm/sdk/signEvmFamily-Cpm3e6Zs.js} +1 -1
  69. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
  70. package/dist/esm/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
  71. package/dist/esm/sdk/signNear-XGZBxc_g.js +1 -0
  72. package/dist/esm/sdk/signer-worker-DlK58rEA.js +1 -0
  73. package/dist/esm/sdk/{signingFlow-DZvV4AgG.js → signingFlow-VAnM8L5C.js} +1 -1
  74. package/dist/{public/sdk/signingQueue-2pr7lAUS.js → esm/sdk/signingQueue-D_Ebmzcn.js} +1 -1
  75. package/dist/esm/sdk/singletons-BXhnsqeY.js +1 -0
  76. package/dist/esm/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
  77. package/dist/esm/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
  78. package/dist/{public/sdk/transaction-activity-xfeHKJoq.js → esm/sdk/transaction-activity-Cccvec2J.js} +1 -1
  79. package/dist/esm/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
  80. package/dist/esm/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.js} +1 -1
  81. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  82. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  83. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  84. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  85. package/dist/esm/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
  86. package/dist/esm/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
  87. package/dist/esm/sdk/{walletAuthority-BWvfaKIX.js → walletAuthority-CAiGuWW2.js} +1 -1
  88. package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
  89. package/dist/esm/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
  90. package/dist/{public/sdk/walletOwnershipGeneration-CAycHv-H.js → esm/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
  91. package/dist/esm/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
  92. package/dist/{public/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
  93. package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
  94. package/dist/public/headers.manifest.json +1 -1
  95. package/dist/public/sdk/{ConfirmationDrawer-Frj3uEee.js → ConfirmationDrawer-BFzQjd1P.js} +1 -1
  96. package/dist/public/sdk/{NonceCoordinator-S5ZbrkDp.js → NonceCoordinator-CDGnEgfI.js} +1 -1
  97. package/dist/{esm/sdk/accountLifecycle-HEUmDLus.js → public/sdk/accountLifecycle-CBOkr0vU.js} +1 -1
  98. package/dist/public/sdk/{adapters-CGvNLOfZ.js → adapters-DsAaBNNY.js} +2 -2
  99. package/dist/public/sdk/{challengeDelivery-5lIu9spR.js → challengeDelivery-CATQ4u6P.js} +1 -1
  100. package/dist/{esm/sdk/clientSessionPersistenceState-DRdve9rC.js → public/sdk/clientSessionPersistenceState-CBylL1Ul.js} +1 -1
  101. package/dist/public/sdk/{commitQueue-qjvY_zWn.js → commitQueue-DYEgzoLA.js} +1 -1
  102. package/dist/public/sdk/{display-DTbGoX4e.js → display-DsfJkAra.js} +1 -1
  103. package/dist/{esm/sdk/ecdsaCapabilityManifest-ChszYCC0.js → public/sdk/ecdsaCapabilityManifest-DX6TflEz.js} +1 -1
  104. package/dist/{esm/sdk/ecdsaDerivationClientWasm-CpH-b3jx.js → public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js} +1 -1
  105. package/dist/public/sdk/ecdsaDerivationExport-DOGzq0qC.js +1 -0
  106. package/dist/public/sdk/{ecdsaWalletRecords-Di_NUxD_.js → ecdsaWalletRecords-CHfrYvKr.js} +1 -1
  107. package/dist/public/sdk/{emailOtpEcdsaDerivationIdentity-p0C1CQva.js → emailOtpEcdsaDerivationIdentity-Bik0N8v9.js} +1 -1
  108. package/dist/public/sdk/{enrichDisplayModelWithAbi-DZIhvE-x.js → enrichDisplayModelWithAbi-DSj4NAlY.js} +1 -1
  109. package/dist/public/sdk/{export-viewer-host-DUMwD6zP.js → export-viewer-host-CV-lSsQF.js} +1 -1
  110. package/dist/public/sdk/exportKeypairOperation-DzbjKbnk.js +1 -0
  111. package/dist/public/sdk/host-DYuu07E5.js +1 -0
  112. package/dist/public/sdk/{lanes-Ck81oEGv.js → lanes-5kcTFbPx.js} +1 -1
  113. package/dist/public/sdk/{localOnly-CUVRoMy2.js → localOnly-C5mSXb_D.js} +1 -1
  114. package/dist/{esm/sdk/mountExportPrivateKeySurface-B4gH1Sel.js → public/sdk/mountExportPrivateKeySurface-CatAhYoG.js} +1 -1
  115. package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-D1G-iCPI.js → public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js} +1 -1
  116. package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +1 -0
  117. package/dist/public/sdk/{nearEd25519YaoSigningPreparation-Eiq_ikXk.js → nearEd25519YaoSigningPreparation-RIfkYN0d.js} +1 -1
  118. package/dist/public/sdk/{nonceLaneKeys-Do5Vs-De.js → nonceLaneKeys-BCYfl1wv.js} +1 -1
  119. package/dist/public/sdk/{normalization-DJPmcXTg.js → normalization-n503J-BI.js} +1 -1
  120. package/dist/{esm/sdk/passkey-custody-Cd_yyoRa.js → public/sdk/passkey-custody-DpTM-eNJ.js} +1 -1
  121. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-DMg5U0Fk.js → pendingWalletRecoveryCodeBackup-C60sZMj5.js} +1 -1
  122. package/dist/{esm/sdk/presignaturePool-Bkk6bLFB.js → public/sdk/presignaturePool-V10fZpG3.js} +1 -1
  123. package/dist/public/sdk/recovery-entrypoint-BULjaFBM.js +1 -0
  124. package/dist/public/sdk/{registration-Drtkzrlc.js → registration-CyF7nOXs.js} +1 -1
  125. package/dist/public/sdk/registration-DEGZR8kA.js +1 -0
  126. package/dist/public/sdk/{registrationAccounts-DP-32yCK.js → registrationAccounts-BQMUusdD.js} +1 -1
  127. package/dist/{esm/sdk/registrationIntent-BHU5k2Q-.js → public/sdk/registrationIntent-090Zj7Iu.js} +1 -1
  128. package/dist/public/sdk/{registrationSignerPlan-dY9Rp0m_.js → registrationSignerPlan-CPzHavPM.js} +1 -1
  129. package/dist/public/sdk/{requireStepUpAuth-FqZSU021.js → requireStepUpAuth-BCY5ZStI.js} +1 -1
  130. package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +1 -0
  131. package/dist/public/sdk/runtime-auth-BNR1wI8E.js +1 -0
  132. package/dist/public/sdk/runtime-device-link-Dq8g_UNb.js +1 -0
  133. package/dist/public/sdk/runtime-ecdsa-tempo-AGjT7Xpa.js +1 -0
  134. package/dist/public/sdk/runtime-email-otp-BpBOuSsT.js +1 -0
  135. package/dist/public/sdk/runtime-export-CBsacCPY.js +1 -0
  136. package/dist/public/sdk/runtime-near-J3hKjC7G.js +1 -0
  137. package/dist/public/sdk/runtime-preferences-CVt5sLvm.js +1 -0
  138. package/dist/public/sdk/runtime-recovery-BzewdcoT.js +1 -0
  139. package/dist/public/sdk/runtime-recovery-codes-GOytzExh.js +1 -0
  140. package/dist/public/sdk/secp256k1-CKq7_HD-.js +1 -0
  141. package/dist/public/sdk/sessionObservationRevision-CnEOLDbl.js +1 -0
  142. package/dist/public/sdk/shared-BywEqTsd.js +6 -0
  143. package/dist/{esm/sdk/signEvmFamily-ttVfV0qm.js → public/sdk/signEvmFamily-Cpm3e6Zs.js} +1 -1
  144. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-Bo25SwuV.js → signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js} +1 -1
  145. package/dist/public/sdk/{signEvmWithUiConfirm-CFcqJRj3.js → signEvmWithUiConfirm-BRmdLgmm.js} +1 -1
  146. package/dist/public/sdk/signNear-XGZBxc_g.js +1 -0
  147. package/dist/public/sdk/signer-worker-DlK58rEA.js +1 -0
  148. package/dist/public/sdk/{signingFlow-DZvV4AgG.js → signingFlow-VAnM8L5C.js} +1 -1
  149. package/dist/{esm/sdk/signingQueue-2pr7lAUS.js → public/sdk/signingQueue-D_Ebmzcn.js} +1 -1
  150. package/dist/public/sdk/singletons-BXhnsqeY.js +1 -0
  151. package/dist/public/sdk/{thresholdEcdsa-D-QMyevW.js → thresholdEcdsa-CneSKcRt.js} +1 -1
  152. package/dist/public/sdk/{trace-QLsbYdld.js → trace-BBux0jtr.js} +1 -1
  153. package/dist/{esm/sdk/transaction-activity-xfeHKJoq.js → public/sdk/transaction-activity-Cccvec2J.js} +1 -1
  154. package/dist/public/sdk/{transactionState-CGULLokO.js → transactionState-Day-1x7Y.js} +1 -1
  155. package/dist/public/sdk/{types-WGrFMQSw.js → types-hKLqDUhR.js} +1 -1
  156. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  157. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  158. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  159. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  160. package/dist/public/sdk/{wallet-recovery-LMtGiEL3.js → wallet-recovery-Bfhfk52N.js} +1 -1
  161. package/dist/public/sdk/{walletAuthMethodRecord-CnBw27ED.js → walletAuthMethodRecord-LniOQQmj.js} +1 -1
  162. package/dist/public/sdk/{walletAuthority-BWvfaKIX.js → walletAuthority-CAiGuWW2.js} +1 -1
  163. package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +1 -0
  164. package/dist/public/sdk/{sessionPolicy-CBTZQe1n.js → walletDbName-DtRewci9.js} +1 -1
  165. package/dist/{esm/sdk/walletOwnershipGeneration-CAycHv-H.js → public/sdk/walletOwnershipGeneration-B6HyR2rE.js} +1 -1
  166. package/dist/public/sdk/walletRecoveryCommit-C6HF84_U.js +1 -0
  167. package/dist/{esm/sdk/walletSessionAuthorizationStore-BiKGIBWQ.js → public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js} +1 -1
  168. package/dist/public/sdk/warmSessionHydration-CsQpQVuy.js +1 -0
  169. package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +3 -1
  170. package/dist/public/wallet-assets.manifest.json +233 -209
  171. package/dist/public/wallet-service/index.html +4 -4
  172. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +0 -9
  173. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +0 -1
  174. package/dist/types/wallet/src/SeamsWeb/operations/auth/login.d.ts +1 -2
  175. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +9 -11
  176. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +3 -0
  177. package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +1 -0
  178. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/emptyWalletStoreReads.d.ts +19 -0
  179. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +1 -1
  180. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/runtimeLoader.d.ts +5 -0
  181. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/sessionObservationRevision.d.ts +7 -0
  182. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
  183. package/dist/types/wallet/src/core/indexedDB/index.d.ts +2 -1
  184. package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +0 -1
  185. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/manager.d.ts +2 -1
  186. package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +2 -0
  187. package/dist/types/wallet/src/core/signingEngine/flows/recovery/keyExportFlow.d.ts +0 -3
  188. package/dist/types/wallet/src/core/signingEngine/routerAb/ecdsaDerivation/presignaturePool.d.ts +0 -19
  189. package/dist/types/wallet/src/core/signingEngine/session/identity/ownerLaneScope.d.ts +0 -27
  190. package/dist/types/wallet/src/plugins/plugin-utils.d.ts +0 -30
  191. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuDialog.d.ts +1 -9
  192. package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +1 -1
  193. package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +1 -1
  194. package/dist/workers/ecdsa-derivation-client.worker.js +3 -1
  195. package/package.json +1 -1
  196. package/dist/esm/plugins/headers.js +0 -55
  197. package/dist/esm/plugins/next.js +0 -196
  198. package/dist/esm/plugins/shared-ts/src/utils/normalize.js +0 -31
  199. package/dist/esm/plugins/vite.js +0 -293
  200. package/dist/esm/react/components/AccountMenuButton/icons/LayersIcon.js +0 -8
  201. package/dist/esm/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
  202. package/dist/esm/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
  203. package/dist/esm/sdk/host-BAeJh9rB.js +0 -1
  204. package/dist/esm/sdk/messages-DgJlG9NU.js +0 -1
  205. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
  206. package/dist/esm/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
  207. package/dist/esm/sdk/registration-CQxxUt5s.js +0 -1
  208. package/dist/esm/sdk/routerAbNormalSigning-B35zb-P-.js +0 -1
  209. package/dist/esm/sdk/runtime-auth-D7VqiZeg.js +0 -1
  210. package/dist/esm/sdk/runtime-device-link-BKc_MD5V.js +0 -1
  211. package/dist/esm/sdk/runtime-ecdsa-tempo-DC51NDrh.js +0 -1
  212. package/dist/esm/sdk/runtime-email-otp-C-wopKFf.js +0 -1
  213. package/dist/esm/sdk/runtime-export-BtGy8BKi.js +0 -1
  214. package/dist/esm/sdk/runtime-near-nq8pgRAl.js +0 -1
  215. package/dist/esm/sdk/runtime-preferences-778ZfMmT.js +0 -1
  216. package/dist/esm/sdk/runtime-recovery-B-JsRiN0.js +0 -1
  217. package/dist/esm/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
  218. package/dist/esm/sdk/secp256k1-CYQS0rj-.js +0 -1
  219. package/dist/esm/sdk/shared-B6BCLs8L.js +0 -6
  220. package/dist/esm/sdk/signNear-bcWIHxEY.js +0 -1
  221. package/dist/esm/sdk/singletons-8UH3gOnZ.js +0 -1
  222. package/dist/esm/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
  223. package/dist/esm/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
  224. package/dist/esm/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
  225. package/dist/public/sdk/ecdsaDerivationExport-C1cE5m0t.js +0 -1
  226. package/dist/public/sdk/exportKeypairOperation-BHXMSA3v.js +0 -1
  227. package/dist/public/sdk/host-BAeJh9rB.js +0 -1
  228. package/dist/public/sdk/messages-DgJlG9NU.js +0 -1
  229. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DMGPKrn8.js +0 -1
  230. package/dist/public/sdk/recovery-entrypoint-EHY_b7Z-.js +0 -1
  231. package/dist/public/sdk/registration-CQxxUt5s.js +0 -1
  232. package/dist/public/sdk/routerAbNormalSigning-B35zb-P-.js +0 -1
  233. package/dist/public/sdk/runtime-auth-D7VqiZeg.js +0 -1
  234. package/dist/public/sdk/runtime-device-link-BKc_MD5V.js +0 -1
  235. package/dist/public/sdk/runtime-ecdsa-tempo-DC51NDrh.js +0 -1
  236. package/dist/public/sdk/runtime-email-otp-C-wopKFf.js +0 -1
  237. package/dist/public/sdk/runtime-export-BtGy8BKi.js +0 -1
  238. package/dist/public/sdk/runtime-near-nq8pgRAl.js +0 -1
  239. package/dist/public/sdk/runtime-preferences-778ZfMmT.js +0 -1
  240. package/dist/public/sdk/runtime-recovery-B-JsRiN0.js +0 -1
  241. package/dist/public/sdk/runtime-recovery-codes-rLR4Guy4.js +0 -1
  242. package/dist/public/sdk/secp256k1-CYQS0rj-.js +0 -1
  243. package/dist/public/sdk/shared-B6BCLs8L.js +0 -6
  244. package/dist/public/sdk/signNear-bcWIHxEY.js +0 -1
  245. package/dist/public/sdk/singletons-8UH3gOnZ.js +0 -1
  246. package/dist/public/sdk/walletCustodyEcdsaContinuity-D-gYxv6e.js +0 -1
  247. package/dist/public/sdk/walletRecoveryCommit-BYRC_2li.js +0 -1
  248. package/dist/public/sdk/warmSessionHydration-B7-kCnJh.js +0 -1
  249. package/dist/types/wallet/src/plugins/headers.d.ts +0 -25
  250. package/dist/types/wallet/src/plugins/next.d.ts +0 -66
  251. package/dist/types/wallet/src/plugins/vite.d.ts +0 -74
  252. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LayersIcon.d.ts +0 -2
  253. /package/dist/esm/plugins/{wallet/src/core → core}/browser/walletIframe/hostVariant.js +0 -0
  254. /package/dist/esm/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
  255. /package/dist/esm/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
  256. /package/dist/esm/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
  257. /package/dist/esm/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
  258. /package/dist/esm/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
  259. /package/dist/esm/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
  260. /package/dist/esm/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
  261. /package/dist/esm/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
  262. /package/dist/esm/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
  263. /package/dist/esm/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
  264. /package/dist/esm/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
  265. /package/dist/esm/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
  266. /package/dist/esm/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
  267. /package/dist/esm/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
  268. /package/dist/esm/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
  269. /package/dist/esm/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
  270. /package/dist/esm/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
  271. /package/dist/esm/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
  272. /package/dist/esm/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
  273. /package/dist/esm/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
  274. /package/dist/esm/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
  275. /package/dist/esm/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
  276. /package/dist/esm/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
  277. /package/dist/esm/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
  278. /package/dist/esm/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
  279. /package/dist/esm/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
  280. /package/dist/esm/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
  281. /package/dist/esm/sdk/{webauthnPromptCoordinator-CS4Xc_jZ.js → webauthnPromptCoordinator-CwJeKiYq.js} +0 -0
  282. /package/dist/public/sdk/{accountIds-BzZs7YoX.js → accountIds-Cpvlkvbe.js} +0 -0
  283. /package/dist/public/sdk/{appearance-DITtYj-z.js → appearance-4DmzKUWf.js} +0 -0
  284. /package/dist/public/sdk/{authenticatorOptions-C9aCKgeF.js → authenticatorOptions-2_XK8aXv.js} +0 -0
  285. /package/dist/public/sdk/{browser-DkCRXFkk.js → browser-n3IVr7qu.js} +0 -0
  286. /package/dist/public/sdk/{digestEncoding-CkUc5vtR.js → digestEncoding-BX3VW9eF.js} +0 -0
  287. /package/dist/public/sdk/{ecdsaChainTarget-DJBXHzbH.js → ecdsaChainTarget-Bfatk3oP.js} +0 -0
  288. /package/dist/public/sdk/{helpers-BnkILY2_.js → helpers-B9fpZNAP.js} +0 -0
  289. /package/dist/public/sdk/{intentDigest-DJBrMyLJ.js → intentDigest-P_-CM7lS.js} +0 -0
  290. /package/dist/public/sdk/{jsonRpc-YKL5n8VL.js → jsonRpc-BVDv1wfm.js} +0 -0
  291. /package/dist/public/sdk/{jsxRuntime.module-C8JOKu_4.js → jsxRuntime.module-DKsgiFjd.js} +0 -0
  292. /package/dist/public/sdk/{keccak-BArcwgbj.js → keccak-mS0Mejjx.js} +0 -0
  293. /package/dist/public/sdk/{normalization-CeZT7ob0.js → normalization-C6fQN6mW.js} +0 -0
  294. /package/dist/public/sdk/{operationFingerprint-CUrnoh-M.js → operationFingerprint-BHNYryLY.js} +0 -0
  295. /package/dist/public/sdk/{presignatures-DZm0d6Wy.js → presignatures-K-yuzOE0.js} +0 -0
  296. /package/dist/public/sdk/{prfCache-DCkuB8Lu.js → prfCache-DJ93rtDv.js} +0 -0
  297. /package/dist/public/sdk/{profileAccountProjection-B3LXAUmo.js → profileAccountProjection-BNVJLOt2.js} +0 -0
  298. /package/dist/public/sdk/{promptText-B8RprJhO.js → promptText-CnyrLxgj.js} +0 -0
  299. /package/dist/public/sdk/{registrationAuthMethodInput-BBCeWDmw.js → registrationAuthMethodInput-RbSR7R1G.js} +0 -0
  300. /package/dist/public/sdk/{registrationIds-ByuReLUc.js → registrationIds-BaK3jUS6.js} +0 -0
  301. /package/dist/public/sdk/{sdkSentEvents-Dl8fOL50.js → sdkSentEvents-D4KtK7_I.js} +0 -0
  302. /package/dist/public/sdk/{signatureUses-8c8Ku_Fw.js → signatureUses-BKAoDbQd.js} +0 -0
  303. /package/dist/public/sdk/{signerDomain-DqLCvI-D.js → signerDomain-Dp7BhfmZ.js} +0 -0
  304. /package/dist/public/sdk/{signerSlot-B4Eq8Oe2.js → signerSlot-FJAGOhmg.js} +0 -0
  305. /package/dist/public/sdk/{types-DhtByIcQ.js → types-Buoe6179.js} +0 -0
  306. /package/dist/public/sdk/{walletRecoveryRotate-D_1a8Agl.js → walletRecoveryRotate-BN3H8byw.js} +0 -0
  307. /package/dist/public/sdk/{walletSessionAuthorizationStatus-BLyzJbU8.js → walletSessionAuthorizationStatus-BL7j2TeM.js} +0 -0
  308. /package/dist/public/sdk/{webauthnP256-DZCusNY9.js → webauthnP256-BwgxtG5N.js} +0 -0
  309. /package/dist/public/sdk/{webauthnPromptCoordinator-CS4Xc_jZ.js → webauthnPromptCoordinator-CwJeKiYq.js} +0 -0
@@ -1,196 +0,0 @@
1
- import "node:path";
2
- import "node:fs";
3
- import { createRequire } from "node:module";
4
- //#region ../shared-ts/src/utils/normalize.ts
5
- /** String coercion + trimming (useful at IO boundaries). */
6
- function normalizeTrimmedString(value) {
7
- return String(value ?? "").trim();
8
- }
9
- /** Best-effort origin normalization (used by CSP/Permissions-Policy helpers). */
10
- function toOriginOrUndefined(input) {
11
- try {
12
- const v = normalizeTrimmedString(input);
13
- if (!v) return void 0;
14
- return new URL(v, "http://dummy").origin === "http://dummy" ? new URL(v).origin : v;
15
- } catch {
16
- return normalizeTrimmedString(input) || void 0;
17
- }
18
- }
19
- //#endregion
20
- //#region src/plugins/headers.ts
21
- function buildPermissionsPolicy(walletOrigin) {
22
- const o = toOriginOrUndefined(walletOrigin);
23
- const part = (name) => `${name}=(self${o ? ` "${o}"` : ""})`;
24
- return [
25
- part("publickey-credentials-get"),
26
- part("publickey-credentials-create"),
27
- part("clipboard-read"),
28
- part("clipboard-write")
29
- ].join(", ");
30
- }
31
- /**
32
- * Build a wallet-friendly Content Security Policy string.
33
- *
34
- * mode:
35
- * - 'strict' (default): no inline styles, injects "style-src-attr 'none'", and forbids JS 'unsafe-eval'.
36
- * - 'compatible': allows inline styles/scripts via 'unsafe-inline' for friendlier dev/local setups.
37
- *
38
- * allowUnsafeEval:
39
- * - false by default. Set to true only for development servers that require eval (e.g., Next.js Fast Refresh).
40
- * - Wallet pages always include 'wasm-unsafe-eval' because browser-side signer initialization uses
41
- * WebAssembly compilation.
42
- * - Seams SDK does not require JS 'unsafe-eval' in production.
43
- *
44
- * Typical usage: apply strict CSP only to the wallet HTML route
45
- * (/wallet-service); do not attach CSP to host app routes.
46
- */
47
- function buildWalletCsp(opts = {}) {
48
- const mode = opts.mode || "strict";
49
- const frame = (opts.frameSrc || []).filter(Boolean);
50
- const scriptAllow = (opts.scriptSrcAllowlist || []).map((s) => toOriginOrUndefined(s) || s).filter(Boolean);
51
- const scriptWasmUnsafeEval = " 'wasm-unsafe-eval'";
52
- const scriptUnsafeInline = mode === "compatible" ? " 'unsafe-inline'" : "";
53
- const styleUnsafeInline = mode === "compatible" ? " 'unsafe-inline'" : "";
54
- const base = [
55
- "default-src 'self'",
56
- `script-src 'self'${scriptWasmUnsafeEval}${scriptUnsafeInline}${opts.allowUnsafeEval ? " 'unsafe-eval'" : ""}${scriptAllow.length ? " " + scriptAllow.join(" ") : ""}`,
57
- `style-src 'self'${styleUnsafeInline}`,
58
- "img-src 'self' data:",
59
- "font-src 'self'",
60
- "connect-src 'self' https:",
61
- "worker-src 'self' blob:",
62
- `frame-src 'self'${frame.length ? " " + frame.join(" ") : ""}`,
63
- "object-src 'none'",
64
- "base-uri 'none'",
65
- "form-action 'none'"
66
- ];
67
- if (mode === "strict") base.splice(2, 0, "style-src-attr 'none'");
68
- return base.join("; ");
69
- }
70
- //#endregion
71
- //#region src/plugins/plugin-utils.ts
72
- function sanitizeOrigins(values) {
73
- const out = /* @__PURE__ */ new Set();
74
- if (Array.isArray(values)) for (const v of values) {
75
- if (typeof v !== "string") continue;
76
- try {
77
- const u = new URL(v.trim());
78
- const scheme = u.protocol;
79
- const host = u.hostname.toLowerCase();
80
- const port = u.port ? `:${u.port}` : "";
81
- if (!(scheme === "https:") && !(scheme === "http:" && host === "localhost")) continue;
82
- if (u.pathname && u.pathname !== "/" || u.search || u.hash) continue;
83
- out.add(`${scheme}//${host}${port}`);
84
- } catch {}
85
- }
86
- return Array.from(out);
87
- }
88
- function parseConfiguredRorOrigins(value) {
89
- return value.split(",").map((s) => s.trim()).filter(Boolean);
90
- }
91
- function resolveRorOrigins(input) {
92
- return sanitizeOrigins([
93
- ...input.configuredOrigins,
94
- input.docsOrigin.trim(),
95
- input.walletOrigin.trim()
96
- ]);
97
- }
98
- createRequire(import.meta.url);
99
- //#endregion
100
- //#region src/plugins/next.ts
101
- function seamsNextHeaders(opts) {
102
- const wallet = opts.walletOrigin;
103
- const permissions = buildPermissionsPolicy(wallet);
104
- const isDev = false;
105
- const mode = opts.cspMode ?? "strict";
106
- const allowUnsafeEval = isDev;
107
- const csp = buildWalletCsp({
108
- frameSrc: [wallet, ...opts.extraFrameSrc || []],
109
- scriptSrcAllowlist: [...opts.extraScriptSrc || []],
110
- mode,
111
- allowUnsafeEval
112
- });
113
- return [{
114
- source: "/:path*",
115
- headers: [{
116
- key: "Permissions-Policy",
117
- value: permissions
118
- }, {
119
- key: "Content-Security-Policy",
120
- value: csp
121
- }]
122
- }];
123
- }
124
- /**
125
- * Convenience wrapper for Next.js app origin.
126
- * Adds Permissions-Policy and a wallet-friendly CSP via Next's headers() API.
127
- * emitHeaders has no effect for Next.js; kept for parity with Vite wrappers.
128
- */
129
- function seamsNextApp(opts) {
130
- if (opts.emitHeaders) console.warn("[seams] seamsNextApp: emitHeaders has no effect in Next.js; headers are applied via next.config.js headers().");
131
- return (config) => {
132
- const existing = config?.headers;
133
- return {
134
- ...config,
135
- async headers() {
136
- return [...(typeof existing === "function" ? await existing() : []) || [], ...seamsNextHeaders(opts)];
137
- }
138
- };
139
- };
140
- }
141
- /**
142
- * Convenience wrapper for Next.js wallet origin.
143
- * Same behavior as seamsNextApp — Next.js does not serve the SDK/wallet HTML; this
144
- * helper only sets headers via headers() so the wallet host can be prepped if you
145
- * proxy wallet routes through Next in dev.
146
- */
147
- function seamsNextWallet(opts) {
148
- if (opts.emitHeaders) console.warn("[seams] seamsNextWallet: emitHeaders has no effect in Next.js; headers are applied via next.config.js headers().");
149
- return (config) => {
150
- const existing = config?.headers;
151
- return {
152
- ...config,
153
- async headers() {
154
- return [...(typeof existing === "function" ? await existing() : []) || [], ...seamsNextHeaders(opts)];
155
- }
156
- };
157
- };
158
- }
159
- function resolveRorParams(opts) {
160
- return resolveRorOrigins({
161
- configuredOrigins: [...opts.origins || [], ...parseConfiguredRorOrigins(String(process.env.VITE_ROR_ALLOWED_ORIGINS || ""))],
162
- docsOrigin: opts.docsOrigin ?? String(process.env.VITE_DOCS_ORIGIN || ""),
163
- walletOrigin: opts.walletOrigin ?? String(process.env.VITE_WALLET_ORIGIN || "")
164
- });
165
- }
166
- /**
167
- * Pages Router compatible handler (Node runtime).
168
- * Usage (pages/api/.well-known/webauthn.ts):
169
- * export default (req, res) => handleWellKnownRorNode(req, res)
170
- */
171
- async function handleWellKnownRorNode(_req, res, opts = {}) {
172
- const origins = resolveRorParams(opts);
173
- res.statusCode = 200;
174
- res.setHeader?.("Content-Type", "application/json; charset=utf-8");
175
- res.setHeader?.("Cache-Control", "max-age=60, stale-while-revalidate=600");
176
- res.end?.(JSON.stringify({ origins }));
177
- }
178
- /**
179
- * App Router compatible handler (Edge/Route Handler style).
180
- * Usage (app/.well-known/webauthn/route.ts):
181
- * export async function GET(req: Request) { return handleWellKnownRorEdge(req) }
182
- */
183
- async function handleWellKnownRorEdge(_request, opts = {}) {
184
- const origins = resolveRorParams(opts);
185
- return new Response(JSON.stringify({ origins }), {
186
- status: 200,
187
- headers: {
188
- "Content-Type": "application/json; charset=utf-8",
189
- "Cache-Control": "max-age=60, stale-while-revalidate=600"
190
- }
191
- });
192
- }
193
- //#endregion
194
- export { handleWellKnownRorEdge, handleWellKnownRorNode, seamsNextApp, seamsNextHeaders, seamsNextWallet };
195
-
196
- //# sourceMappingURL=next.js.map
@@ -1,31 +0,0 @@
1
- //#region ../shared-ts/src/utils/normalize.ts
2
- /** String coercion + trimming (useful at IO boundaries). */
3
- function normalizeTrimmedString(value) {
4
- return String(value ?? "").trim();
5
- }
6
- /** Ensure a non-empty string starts with `/` (path normalization). */
7
- function ensureLeadingSlash(value) {
8
- const trimmed = normalizeTrimmedString(value);
9
- if (!trimmed) return "";
10
- return trimmed.startsWith("/") ? trimmed : `/${trimmed}`;
11
- }
12
- /** Normalize an app base path like `/sdk` (leading slash, no trailing slashes except `/`). */
13
- function toBasePath(value, fallback = "/sdk") {
14
- const base = ensureLeadingSlash(typeof value === "string" ? value : fallback) || ensureLeadingSlash(fallback) || "/";
15
- if (base === "/") return "/";
16
- return base.replace(/\/+$/, "");
17
- }
18
- /** Best-effort origin normalization (used by CSP/Permissions-Policy helpers). */
19
- function toOriginOrUndefined(input) {
20
- try {
21
- const v = normalizeTrimmedString(input);
22
- if (!v) return void 0;
23
- return new URL(v, "http://dummy").origin === "http://dummy" ? new URL(v).origin : v;
24
- } catch {
25
- return normalizeTrimmedString(input) || void 0;
26
- }
27
- }
28
- //#endregion
29
- export { toBasePath, toOriginOrUndefined };
30
-
31
- //# sourceMappingURL=normalize.js.map
@@ -1,293 +0,0 @@
1
- import { toBasePath } from "./shared-ts/src/utils/normalize.js";
2
- import { buildPermissionsPolicy, buildWalletCsp } from "./headers.js";
3
- import { normalizeWalletHostVariant } from "./wallet/src/core/browser/walletIframe/hostVariant.js";
4
- import { addPreconnectLink, applyCoepCorpIfNeeded, buildWalletServiceHtml, echoCorsFromRequest, logRorConfig, parseConfiguredRorOrigins, resolveCoepMode, resolveRorOrigins, resolveSdkDistRoot, setContentType } from "./plugin-utils.js";
5
- import * as fs from "node:fs";
6
- import * as path from "node:path";
7
- import { fileURLToPath } from "node:url";
8
- //#region src/plugins/vite.ts
9
- const MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
10
- function tryFile(...candidates) {
11
- for (const file of candidates) try {
12
- if (fs.statSync(file).isFile()) return file;
13
- } catch {}
14
- }
15
- function walletStaticAssetCandidates(fileName) {
16
- return [
17
- path.resolve(MODULE_DIR, "../static/wallet-assets", fileName),
18
- path.resolve(MODULE_DIR, "../sdk", fileName),
19
- path.resolve(MODULE_DIR, "../../dist/esm/sdk", fileName),
20
- path.resolve(MODULE_DIR, "../../public/sdk", fileName),
21
- path.resolve(process.cwd(), "src/static/wallet-assets", fileName),
22
- path.resolve(process.cwd(), "packages/wallet/src/static/wallet-assets", fileName)
23
- ];
24
- }
25
- function resolveWalletStaticAsset(fileName) {
26
- const assetPath = tryFile(...walletStaticAssetCandidates(fileName));
27
- if (assetPath) return assetPath;
28
- throw new Error(`Missing wallet static asset source: ${fileName}`);
29
- }
30
- function copyWalletStaticAssetIfMissing(fileName, destination) {
31
- if (fs.existsSync(destination)) return;
32
- fs.copyFileSync(resolveWalletStaticAsset(fileName), destination);
33
- }
34
- /**
35
- * Seams SDK plugin: serve SDK assets under a stable base (default: /sdk) with optional COEP/CORP (strict mode) and permissive CORS.
36
- * Where it runs: both the app server and the wallet-iframe server.
37
- * - App server: lets host pages and wallet UI surfaces load SDK CSS/JS locally.
38
- * - Wallet server: used by /wallet-service to load the selected wallet host script and related CSS/JS.
39
- */
40
- function seamsServeSdk(opts = {}) {
41
- const configuredBase = toBasePath(opts.sdkBasePath, "/sdk");
42
- const sdkDistRoot = resolveSdkDistRoot(opts.sdkDistRoot);
43
- const enableDebugRoutes = opts.enableDebugRoutes === true;
44
- const coepMode = resolveCoepMode(opts.coepMode);
45
- const bases = Array.from(new Set([configuredBase, toBasePath("/sdk")])).sort((a, b) => b.length - a.length);
46
- return {
47
- name: "seams:serve-sdk",
48
- apply: "serve",
49
- enforce: "pre",
50
- configureServer(server) {
51
- if (enableDebugRoutes) server.middlewares.use("/__sdk-root", (_req, res) => {
52
- res.setHeader("Content-Type", "text/plain; charset=utf-8");
53
- res.setHeader("Cache-Control", "no-store, max-age=0");
54
- res.end(sdkDistRoot);
55
- });
56
- server.middlewares.use((req, res, next) => {
57
- if (!req.url) return next();
58
- const url = req.url.split("?")[0];
59
- const matchBase = bases.find((b) => url.startsWith(b + "/"));
60
- if (!matchBase) return next();
61
- const rel = url.slice((matchBase + "/").length);
62
- const candidate = tryFile(path.join(sdkDistRoot, "esm", "sdk", rel), path.join(sdkDistRoot, rel), path.join(sdkDistRoot, "esm", rel));
63
- if (!candidate) {
64
- res.statusCode = 404;
65
- res.setHeader("Content-Type", "application/json; charset=utf-8");
66
- res.setHeader("Cache-Control", "no-store, max-age=0");
67
- res.end(JSON.stringify({
68
- error: "SDK asset not found",
69
- path: rel
70
- }));
71
- return;
72
- }
73
- setContentType(res, candidate);
74
- res.setHeader("Cache-Control", "no-store, max-age=0");
75
- applyCoepCorpIfNeeded(res, coepMode);
76
- echoCorsFromRequest(res, req, { handlePreflight: false });
77
- const stream = fs.createReadStream(candidate);
78
- stream.on("error", () => next());
79
- stream.pipe(res);
80
- });
81
- }
82
- };
83
- }
84
- /**
85
- * Dev plugin: expose the wallet service HTML route (default: /wallet-service) that links only external CSS/JS.
86
- * Where it runs: wallet-iframe dev server (wallet origin). Used by seamsWalletServer.
87
- */
88
- function seamsWalletService(opts = {}) {
89
- const walletServicePath = toBasePath(opts.walletServicePath, "/wallet-service");
90
- const sdkBasePath = toBasePath(opts.sdkBasePath, "/sdk");
91
- const walletHostVariant = normalizeWalletHostVariant(opts.walletHostVariant || process.env.VITE_WALLET_HOST_VARIANT);
92
- const coepMode = resolveCoepMode(opts.coepMode);
93
- return {
94
- name: "seams:wallet-service",
95
- apply: "serve",
96
- enforce: "pre",
97
- configureServer(server) {
98
- server.middlewares.use((req, res, next) => {
99
- if (!req.url) return next();
100
- const url = req.url.split("?")[0];
101
- if (url === walletServicePath || url === `${walletServicePath}/` || url === `${walletServicePath}//`) {
102
- const html = buildWalletServiceHtml(sdkBasePath, String(Date.now()), walletHostVariant);
103
- res.statusCode = 200;
104
- res.setHeader("Content-Type", "text/html; charset=utf-8");
105
- res.setHeader("Cache-Control", "no-store, max-age=0");
106
- res.setHeader("Pragma", "no-cache");
107
- applyCoepCorpIfNeeded(res, coepMode);
108
- res.end(html);
109
- return;
110
- }
111
- next();
112
- });
113
- }
114
- };
115
- }
116
- /**
117
- * Dev plugin: serve the RP ID related-origin helper and optional strict-isolation headers.
118
- * Where it runs: Seams-owned local development only.
119
- */
120
- function seamsHeaders(opts = {}) {
121
- const walletOrigin = (opts.walletOrigin ?? process.env.VITE_WALLET_ORIGIN)?.trim();
122
- const walletServicePath = toBasePath(opts.walletServicePath || process.env.VITE_WALLET_SERVICE_PATH, "/wallet-service");
123
- const sdkBasePath = toBasePath(opts.sdkBasePath || process.env.VITE_SDK_BASE_PATH, "/sdk");
124
- const coepMode = resolveCoepMode(opts.coepMode);
125
- const rorOrigins = resolveRorOrigins({
126
- configuredOrigins: parseConfiguredRorOrigins(String(process.env.VITE_ROR_ALLOWED_ORIGINS || "")),
127
- docsOrigin: String(process.env.VITE_DOCS_ORIGIN || ""),
128
- walletOrigin: walletOrigin || ""
129
- });
130
- logRorConfig(rorOrigins);
131
- return {
132
- name: "seams:dev-headers",
133
- apply: "serve",
134
- enforce: "pre",
135
- configureServer(server) {
136
- console.log("[seams] headers enabled", {
137
- walletServicePath,
138
- sdkBasePath,
139
- coepMode,
140
- rorOriginsCount: rorOrigins.length
141
- });
142
- server.middlewares.use((req, res, next) => {
143
- const url = (req.url || "").split("?")[0] || "";
144
- if (coepMode !== "off") {
145
- res.setHeader("Cross-Origin-Embedder-Policy", "require-corp");
146
- res.setHeader("Cross-Origin-Resource-Policy", "cross-origin");
147
- }
148
- addPreconnectLink(res, walletOrigin);
149
- if (url === "/.well-known/webauthn" || url === "/.well-known/webauthn/") {
150
- res.statusCode = 200;
151
- res.setHeader("Content-Type", "application/json; charset=utf-8");
152
- res.setHeader("Cache-Control", "max-age=60, stale-while-revalidate=600");
153
- res.end(JSON.stringify({ origins: rorOrigins }));
154
- return;
155
- }
156
- if (url.startsWith(`${sdkBasePath}/`)) {
157
- applyCoepCorpIfNeeded(res, coepMode);
158
- if (echoCorsFromRequest(res, req, {
159
- honorExistingAcaOrigin: true,
160
- handlePreflight: true
161
- })) return;
162
- }
163
- next();
164
- });
165
- }
166
- };
167
- }
168
- function createDevServerPlugin(options, includeWalletService) {
169
- const sdkBasePath = toBasePath(options.sdkBasePath || process.env.VITE_SDK_BASE_PATH, "/sdk");
170
- const walletServicePath = toBasePath(options.walletServicePath || process.env.VITE_WALLET_SERVICE_PATH, "/wallet-service");
171
- const walletOrigin = (options.walletOrigin ?? process.env.VITE_WALLET_ORIGIN)?.trim();
172
- const walletHostVariant = normalizeWalletHostVariant(options.walletHostVariant || process.env.VITE_WALLET_HOST_VARIANT);
173
- const setDevHeaders = options.setDevHeaders === true;
174
- const enableDebugRoutes = options.enableDebugRoutes === true;
175
- const sdkDistRoot = resolveSdkDistRoot(options.sdkDistRoot);
176
- const coepMode = resolveCoepMode(options.coepMode);
177
- const sdkPlugin = seamsServeSdk({
178
- sdkBasePath,
179
- sdkDistRoot,
180
- enableDebugRoutes,
181
- coepMode
182
- });
183
- const walletPlugin = seamsWalletService({
184
- walletServicePath,
185
- sdkBasePath,
186
- walletHostVariant,
187
- coepMode
188
- });
189
- const headersPlugin = setDevHeaders ? seamsHeaders({
190
- walletOrigin,
191
- walletServicePath,
192
- sdkBasePath,
193
- coepMode
194
- }) : void 0;
195
- return {
196
- name: "seams:dev",
197
- apply: "serve",
198
- enforce: "pre",
199
- configureServer(server) {
200
- sdkPlugin.configureServer?.(server);
201
- if (headersPlugin) headersPlugin.configureServer?.(server);
202
- if (includeWalletService) walletPlugin.configureServer?.(server);
203
- }
204
- };
205
- }
206
- /**
207
- * Build-time plugin: writes optional static-host `_headers` only for explicitly requested CORS or strict isolation.
208
- * Where it runs: Seams-owned static wallet host development.
209
- */
210
- function seamsBuildHeaders(opts = {}) {
211
- const walletServicePath = toBasePath(process.env.VITE_WALLET_SERVICE_PATH, "/wallet-service");
212
- const sdkBasePath = toBasePath(process.env.VITE_SDK_BASE_PATH, "/sdk");
213
- const walletHostVariant = normalizeWalletHostVariant(opts.walletHostVariant || process.env.VITE_WALLET_HOST_VARIANT);
214
- const coepMode = resolveCoepMode(opts.coepMode);
215
- let outDir = "dist";
216
- return {
217
- name: "seams:build-headers",
218
- apply: "build",
219
- enforce: "post",
220
- configResolved(config) {
221
- outDir = config?.build?.outDir || outDir;
222
- },
223
- generateBundle() {
224
- try {
225
- const hdrPath = path.join(outDir, "_headers");
226
- if (fs.existsSync(hdrPath)) console.warn("[seams] _headers already exists in outDir; skipping auto-emission");
227
- else {
228
- const contentLines = [...coepMode === "off" ? [] : [
229
- "/*",
230
- " Cross-Origin-Embedder-Policy: require-corp",
231
- " Cross-Origin-Resource-Policy: cross-origin",
232
- ""
233
- ]];
234
- const configuredAcaOrigin = opts.cors && typeof opts.cors.accessControlAllowOrigin === "string" ? opts.cors.accessControlAllowOrigin.trim() : void 0;
235
- if (configuredAcaOrigin) contentLines.push(`${sdkBasePath}/*`, ` Access-Control-Allow-Origin: ${configuredAcaOrigin}`);
236
- if (contentLines.length > 0) {
237
- const content = contentLines.join("\n") + "\n";
238
- fs.mkdirSync(outDir, { recursive: true });
239
- fs.writeFileSync(hdrPath, content, "utf-8");
240
- console.log("[seams] emitted _headers" + (coepMode === "off" ? "" : " with strict isolation") + (configuredAcaOrigin ? " + CORS" : ""));
241
- }
242
- }
243
- const sdkDir = path.join(outDir, sdkBasePath.replace(/^\//, ""));
244
- try {
245
- fs.mkdirSync(sdkDir, { recursive: true });
246
- } catch {}
247
- copyWalletStaticAssetIfMissing("wallet-shims.js", path.join(sdkDir, "wallet-shims.js"));
248
- copyWalletStaticAssetIfMissing("wallet-service.css", path.join(sdkDir, "wallet-service.css"));
249
- copyWalletStaticAssetIfMissing("wallet-ui.css", path.join(sdkDir, "wallet-ui.css"));
250
- const walletRel = walletServicePath.replace(/^\//, "");
251
- const wsDir = path.join(outDir, walletRel);
252
- const wsHtml = path.join(wsDir, "index.html");
253
- if (!fs.existsSync(wsHtml)) {
254
- fs.mkdirSync(wsDir, { recursive: true });
255
- fs.writeFileSync(wsHtml, buildWalletServiceHtml(sdkBasePath, void 0, walletHostVariant), "utf-8");
256
- console.log(`[seams] emitted ${path.posix.join("/", walletRel, "index.html")} (minimal wallet service)`);
257
- }
258
- } catch (e) {
259
- console.warn("[seams] failed to emit _headers:", e);
260
- }
261
- }
262
- };
263
- }
264
- function computeDevPermissionsPolicy(walletOrigin) {
265
- return buildPermissionsPolicy(walletOrigin);
266
- }
267
- function computeDevWalletCsp(mode = "strict") {
268
- return buildWalletCsp({ mode });
269
- }
270
- function seamsWalletServer(options = {}) {
271
- return createDevServerPlugin(options, true);
272
- }
273
- function seamsAppServer(options = {}) {
274
- return createDevServerPlugin(options, false);
275
- }
276
- function seamsApp(options = {}) {
277
- const { emitHeaders, ...devOpts } = options;
278
- return [seamsAppServer(devOpts), emitHeaders ? seamsBuildHeaders({
279
- coepMode: devOpts.coepMode,
280
- walletHostVariant: devOpts.walletHostVariant
281
- }) : void 0].filter(Boolean);
282
- }
283
- function seamsWallet(options = {}) {
284
- const { emitHeaders, ...devOpts } = options;
285
- return [seamsWalletServer(devOpts), emitHeaders ? seamsBuildHeaders({
286
- coepMode: devOpts.coepMode,
287
- walletHostVariant: devOpts.walletHostVariant
288
- }) : void 0].filter(Boolean);
289
- }
290
- //#endregion
291
- export { computeDevPermissionsPolicy, computeDevWalletCsp, seamsApp, seamsAppServer, seamsBuildHeaders, seamsHeaders, seamsServeSdk, seamsWallet, seamsWalletServer, seamsWalletService };
292
-
293
- //# sourceMappingURL=vite.js.map
@@ -1,8 +0,0 @@
1
- import { lucideIcon } from "./lucideIcon.js";
2
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- //#region src/react/components/AccountMenuButton/icons/LayersIcon.tsx
4
- const LayersIcon = lucideIcon("layers-2", /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("path", { d: "M13 13.74a2 2 0 0 1-2 0L2.5 8.87a1 1 0 0 1 0-1.74L11 2.26a2 2 0 0 1 2 0l8.5 4.87a1 1 0 0 1 0 1.74z" }), /* @__PURE__ */ jsx("path", { d: "m20 14.285 1.5.845a1 1 0 0 1 0 1.74L13 21.74a2 2 0 0 1-2 0l-8.5-4.87a1 1 0 0 1 0-1.74l1.5-.845" })] }));
5
- //#endregion
6
- export { LayersIcon };
7
-
8
- //# sourceMappingURL=LayersIcon.js.map
@@ -1 +0,0 @@
1
- import{r as e}from"./domainIds-BzkGsRqO.js";import{c as t,u as n}from"./chains-C_X_fNuS.js";import{i as r,r as i}from"./base64-DW79QA0h.js";import{r as a}from"./secureRandomId-LwBFx84B.js";import{o}from"./sessionPolicy-CBTZQe1n.js";import{g as s}from"./capabilityKinds-N8xo_IEh.js";import{r as c}from"./canonicalPrimitives-Dsbsxgxc.js";import{c as l,o as u}from"./ecdsaChainTarget-DJBXHzbH.js";import{i as d,n as f}from"./signerDomain-DqLCvI-D.js";import{$ as p,C as m,J as h,Kt as g,N as _,Nt as v,Ot as y,T as b,Z as ee,en as x,h as te,tn as S,v as C}from"./emailOtpEcdsaDerivationIdentity-p0C1CQva.js";import{B as ne,C as re,E as w,I as ie,R as ae,S as oe,x as se,y as ce,z as le}from"./ecdsaCapabilityManifest-ChszYCC0.js";import{t as ue}from"./signerSlot-B4Eq8Oe2.js";import{r as T}from"./types-WGrFMQSw.js";import{o as de}from"./walletSessionAuthorizationStore-BiKGIBWQ.js";import{t as fe}from"./thresholdEcdsa-D-QMyevW.js";import{p as pe}from"./nearEd25519YaoSigningPreparation-Eiq_ikXk.js";import{a as me,i as he,r as ge}from"./walletSessionAuthorizationProjection-DuU6w0FP.js";import{a as _e,d as ve,i as ye,n as be,u as xe}from"./ecdsaDerivationClientWasm-CpH-b3jx.js";import{a as Se,r as Ce,t as we}from"./walletSessionFailure-YuhraC3P.js";import{a as E,o as D}from"./signingQueue-2pr7lAUS.js";import{t as O}from"./bytes-DZRW2UDg.js";const Te=`router-ab-ed25519-yao-seed-export-v1`;function Ee(e){if(typeof e!=`object`||!e||Array.isArray(e))return null;let t=e,n=typeof t.id==`string`&&t.id.trim()?t.id.trim():void 0;return t.success===!0&&`data`in t&&t.error===void 0?{id:n,success:!0,data:t.data}:t.success===!1&&typeof t.error==`string`&&t.data===void 0?{id:n,success:!1,error:t.error}:null}var k=class extends Error{constructor(e){super(`[OwnerLaneScope] ${e}`),this.name=`OwnerLaneScopeIntegrityError`}},De=class extends Error{constructor(e){super(`[OwnerLaneScope] relink_required: no active canonical wallet auth method (${e})`),this.code=`relink_required`,this.reason=`missing_canonical_owner_binding`,this.name=`OwnerRelinkRequiredError`}};function Oe(e){return e instanceof De&&e.name===`OwnerRelinkRequiredError`&&e.code===`relink_required`}function ke(e){return{walletId:e.walletId,factor:{kind:`passkey`,credentialIdB64u:e.credentialIdB64u},verifier:{kind:`webauthn`,rpId:e.rpId},bindingId:e.walletAuthMethodId}}function Ae(e){let t=String(e.providerSubjectId||``).trim();if(!t)throw new k(`active Email OTP method has no exact local factor`);let n=y({walletId:e.authMethod.walletId,factor:{kind:`email_otp`,provider:t.startsWith(`google:`)?`google`:`email`,providerUserId:t},verifier:{kind:`email_otp_wallet_auth_method`,emailHashHex:e.authMethod.emailHashHex},bindingId:e.authMethod.walletAuthMethodId});if(!n)throw new k(`active Email OTP method has no exact local factor`);return n}function je(e){let t=e.localMethods.filter(t=>t.kind===`email_otp`&&t.status===`active`&&t.walletId===e.authMethod.walletId&&t.emailHashHex===e.authMethod.emailHashHex),n=t[0],r=n?y(n.authority):null;if(t.length!==1||!r||r.walletId!==e.authMethod.walletId||r.bindingId!==e.authMethod.walletAuthMethodId||r.verifier.emailHashHex!==e.authMethod.emailHashHex)throw new k(`active Email OTP method has no exact local factor`);return r}async function A(e){let t=String(e.authMethod.walletId);try{return je({authMethod:e.authMethod,localMethods:await e.stores.listWalletAuthMethodsForWallet(t)})}catch(n){if(!e.stores.readEmailOtpProviderSubjectForWallet)throw n;let r=await e.stores.readEmailOtpProviderSubjectForWallet(t);if(!r)throw n;return Ae({authMethod:e.authMethod,providerSubjectId:r})}}function Me(e){if(e.authority.walletId!==e.authMethod.walletId||e.authority.bindingId!==e.authMethod.walletAuthMethodId)throw new k(`active wallet auth method does not have an exact factor authority binding`);return e.authority}async function Ne(e){return e.authMethod.kind===`passkey`?Me({authMethod:e.authMethod,authority:ke(e.authMethod)}):Me({authMethod:e.authMethod,authority:await A({authMethod:e.authMethod,stores:e.stores})})}function Pe(e){return{auth:{kind:`passkey`,rpId:b(e.authMethod.rpId),credentialIdB64u:e.authMethod.credentialIdB64u},signerSlot:e.signerSlot}}function Fe(e){return{auth:{kind:`passkey`,rpId:b(e.authMethod.rpId),credentialIdB64u:e.authMethod.credentialIdB64u},keyFamily:`ecdsa`}}function Ie(e){if(e.factorAuthority.walletId!==e.authMethod.walletId||e.factorAuthority.bindingId!==e.authMethod.walletAuthMethodId||e.factorAuthority.verifier.emailHashHex!==e.authMethod.emailHashHex||e.authorityRef.walletId!==e.authMethod.walletId||e.authorityRef.walletAuthMethodId!==e.authMethod.walletAuthMethodId)throw new k(`linked Email OTP authority does not match the selected V2 method`);return{auth:{kind:`email_otp`,providerSubjectId:String(e.factorAuthority.factor.providerUserId)},ownerAuthority:{walletAuthMethodId:e.authorityRef.walletAuthMethodId,authorityDigest:e.authorityRef.authorityDigest}}}async function Le(e){let t=await e.stores.getWalletPasskeyAuthenticator({walletId:String(e.authMethod.walletId),credentialId:e.authMethod.credentialIdB64u});if(!t||t.credentialId!==e.authMethod.credentialIdB64u)throw new k(`active Passkey auth method has no exact local authenticator`);let n=ue(t.signerSlot,{min:1});if(n===null)throw new k(`local authenticator signer slot is invalid`);return Pe({authMethod:e.authMethod,signerSlot:n})}async function Re(e){if(e.authMethod.kind===`passkey`)return await Le({authMethod:e.authMethod,stores:e.stores});let t=await A({authMethod:e.authMethod,stores:e.stores}),n=await v({authority:t});return{auth:{kind:`email_otp`,providerSubjectId:String(t.factor.providerUserId)},ownerAuthority:{walletAuthMethodId:n.walletAuthMethodId,authorityDigest:n.authorityDigest}}}function j(e){return e.kind===`credential_free_ecdsa_session_activation_authorization_v1`}function ze(e,t){return e.error||e.message||e.code||t}function M(e){return p({kind:`router_ab_ecdsa_post_registration_session_activation_v1`,public_capability:e.publicCapability,session_policy:{threshold_session_id:e.thresholdSessionId,wallet_session_mint_id:e.walletSessionMintId,ttl_ms:e.ttlMs,remaining_uses:e.remainingUses,runtime_policy_scope:e.runtimePolicyScope}})}function Be(e,t){let n=t.public_identity;return e.applicationBindingDigestB64u===t.context.application_binding_digest_b64u&&e.contextBinding32B64u===n.context_binding_b64u&&e.derivationClientSharePublicKey33B64u===n.derivation_client_share_public_key33_b64u&&e.relayerPublicKey33B64u===n.server_public_key33_b64u&&e.groupPublicKey33B64u===n.threshold_public_key33_b64u&&e.ethereumAddress.toLowerCase()===O(i(n.ethereum_address20_b64u))&&ce(e.publicCapability,t)}function Ve(e,t){let n=e.normal_signing.scope;return n.wallet_id===String(t.walletId)&&n.ecdsa_threshold_key_id===String(t.ecdsaThresholdKeyId)&&n.signing_root_id===String(t.signingRootId)&&n.signing_root_version===String(t.signingRootVersion)}function N(e){let t=e.persistedRoleLocalMaterial.publicFacts;if(!ce(e.sessionActivation.public_capability,e.publicCapability)||e.sessionActivation.session.threshold_session_id!==e.thresholdSessionId||!Ve(e.sessionActivation,t))throw Error(`Strict ECDSA session activation returned a different registered key identity`)}function He(t){let n=t.sessionActivation.activation,r=t.sessionActivation.authorization,i=r.record,a=x(n.public_capability.material_activation),o=0;for(let t of i.capabilitySubjects)t.kind===`sign`&&t.keyFamily===`ecdsa_secp256k1`&&e(t.materialActivation,a)&&(o+=1);if(N({publicCapability:t.publicCapability,persistedRoleLocalMaterial:t.persistedRoleLocalMaterial,thresholdSessionId:t.thresholdSessionId,sessionActivation:n}),String(i.walletId)!==t.walletId||String(i.walletId)!==String(n.public_capability.client_id)||i.authMethodId!==t.persistedRoleLocalMaterial.authority.walletAuthMethodId||i.authorizationId!==n.session.authorization_id||i.quotaId!==n.session.quota_id||i.expiresAtMs!==n.session.expires_at_ms||n.session.remaining_uses!==t.remainingUses||r.operationCredential.walletSessionId!==n.session.wallet_session_id||!e(a,t.persistedRoleLocalMaterial.materialActivation)||o!==1)throw Error(`Strict ECDSA credential-free activation authority does not match its session`)}function P(e){let t=e.persistedRoleLocalMaterial.publicFacts;if(!e.walletId||!e.thresholdSessionId)throw Error(`Strict ECDSA session activation requires exact wallet and session identity`);if(!Number.isSafeInteger(e.ttlMs)||e.ttlMs<1)throw Error(`Strict ECDSA session activation requires a positive ttlMs`);if(!Number.isSafeInteger(e.remainingUses)||e.remainingUses<1)throw Error(`Strict ECDSA session activation requires positive remainingUses`);if(String(t.walletId)!==e.walletId||!Be(t,e.publicCapability))throw Error(`Strict ECDSA session activation requires exact registered role-local material`)}function Ue(e){switch(e.kind){case`rehydrated`:return e;case`device_link_required`:throw Error(`device_link_required: registered ECDSA role-local material is unavailable on this device`);case`corrupt`:throw Error(`Registered ECDSA role-local material is corrupt (${e.reason}): ${e.message}`);default:{let t=e;throw Error(`Unsupported ECDSA role-local material resolution: ${String(t)}`)}}}async function F(e){let t=Ue(await D({purpose:`registration_activation`,source:E(e.persistedRoleLocalMaterial),workerCtx:e.workerCtx}));return{kind:`existing_ecdsa_role_local_material_activated_v1`,roleLocalMaterial:t.liveHandle,roleLocalMaterialRef:t.materialRef,publicFacts:e.persistedRoleLocalMaterial.publicFacts,publicCapability:e.publicCapability}}async function We(e){P(e);let t=await fe(e.relayerUrl,{auth:e.routeAuth,request:M(e)});if(!t.ok)throw Error(ze(t,`Strict ECDSA session activation failed`));return await I({workerCtx:e.workerCtx,publicCapability:e.publicCapability,persistedRoleLocalMaterial:e.persistedRoleLocalMaterial,walletId:e.walletId,thresholdSessionId:e.thresholdSessionId,ttlMs:e.ttlMs,remainingUses:e.remainingUses,runtimePolicyScope:e.runtimePolicyScope,sessionActivation:t.value})}async function I(e){return P(e),N({publicCapability:e.publicCapability,persistedRoleLocalMaterial:e.persistedRoleLocalMaterial,thresholdSessionId:e.thresholdSessionId,sessionActivation:e.sessionActivation}),{sessionActivation:e.sessionActivation,roleLocalActivation:await F(e)}}async function Ge(e){return P(e),He(e),{sessionActivation:e.sessionActivation.activation,authorization:e.sessionActivation.authorization,roleLocalActivation:await F(e)}}async function Ke(e,t){let n=o(e.lanePolicy.runtimePolicyScope);if(!n)throw Error(`Strict ECDSA session activation requires runtimePolicyScope`);let r={workerCtx:e.workerCtx,publicCapability:e.publicCapability,persistedRoleLocalMaterial:e.existingRoleLocalMaterial,walletId:String(e.key.walletId),thresholdSessionId:e.lanePolicy.thresholdSessionId,ttlMs:e.lanePolicy.ttlMs,remainingUses:e.lanePolicy.remainingUses,runtimePolicyScope:n},s=e.sessionActivation?j(e.sessionActivation)?await Ge({...r,sessionActivation:e.sessionActivation}):await I({...r,sessionActivation:e.sessionActivation}):await We({...r,walletSessionMintId:qe(),relayerUrl:e.relayerUrl,routeAuth:e.bootstrapAuth}),c=s.sessionActivation.public_capability.public_identity,l=`authorization`in s?{thresholdSessionId:s.sessionActivation.session.threshold_session_id,authorizationSessionId:s.sessionActivation.session.authorization_session_id,authorizationId:s.sessionActivation.session.authorization_id,walletSessionId:s.sessionActivation.session.wallet_session_id,quotaId:s.sessionActivation.session.quota_id,expiresAtMs:s.sessionActivation.session.expires_at_ms,remainingUses:s.sessionActivation.session.remaining_uses,walletSession:s.authorization.record,operationCredential:s.authorization.operationCredential}:{thresholdSessionId:s.sessionActivation.session.threshold_session_id,authorizationSessionId:s.sessionActivation.session.authorization_session_id,authorizationId:s.sessionActivation.session.authorization_id,walletSessionId:s.sessionActivation.session.wallet_session_id,quotaId:s.sessionActivation.session.quota_id,expiresAtMs:s.sessionActivation.session.expires_at_ms,remainingUses:s.sessionActivation.session.remaining_uses,walletSession:s.sessionActivation.session.wallet_session,operationCredential:s.sessionActivation.session.operation_credential},u=await g({walletId:String(e.key.walletId),signingRootId:e.key.signingRootId,signingRootVersion:e.key.signingRootVersion});return{ok:!0,bootstrapKind:`strict_post_registration`,keygenSessionId:String(e.requestId||``).trim()||a(`tecdsa-keygen`,32,`threshold ECDSA session IDs`),rpId:t,keyHandle:String(e.keyHandle),clientVerifyingShareB64u:c.derivation_client_share_public_key33_b64u,thresholdEcdsaPublicKeyB64u:c.threshold_public_key33_b64u,ethereumAddress:O(i(c.ethereum_address20_b64u)),relayerKeyId:u,relayerVerifyingShareB64u:c.server_public_key33_b64u,participantIds:e.key.participantIds.map(Number),thresholdSessionId:l.thresholdSessionId,authorizationSessionId:l.authorizationSessionId,authorizationId:l.authorizationId,walletSessionId:l.walletSessionId,quotaId:l.quotaId,expiresAtMs:l.expiresAtMs,remainingUses:l.remainingUses,runtimePolicyScope:n,signingRootId:String(e.key.signingRootId),signingRootVersion:String(e.key.signingRootVersion),walletSession:l.walletSession,operationCredential:l.operationCredential,roleLocalActivation:s.roleLocalActivation,routerAbEcdsaDerivationNormalSigning:s.sessionActivation.normal_signing,secretSourceKind:`persisted_role_local`}}function qe(){let e=s(a(`wallet-session-mint`,32,`Wallet Session mint IDs`));if(!e.ok)throw Error(`Failed to create Wallet Session mint identity`);return e.value}async function Je(e){let t=e.touchIdPrompt.getRpId();if(!t)return{ok:!1,code:`invalid_args`,message:`Missing rpId for WebAuthn`};try{return await Ke(e,t)}catch(e){return{ok:!1,code:`strict_post_registration_failed`,message:e instanceof Error?e.message:String(e)}}}const L=`stale_ecdsa_key_identity`;function Ye(e){if(!e)throw Error(`Strict ECDSA session bootstrap requires Wallet Session authority`);switch(e.kind){case`opaque_wallet_session_operation_credential_v1`:return e;case`publishable_key`:throw Error(`Strict ECDSA session bootstrap requires Wallet Session authority`)}throw Error(`Strict ECDSA session bootstrap authority is invalid`)}function Xe(e){let t=String(e.code||``).trim(),n=String(e.message||``).trim().toLowerCase();return t===`stale_session_state`&&n.includes(`threshold-ecdsa bootstrap`)&&n.includes(`client verifying share`)&&n.includes(`integrated key record`)}function Ze(e){let t=String(e.message||e.code||`threshold-ecdsa bootstrap failed`).trim(),n=Xe(e)?L:String(e.code||`threshold_ecdsa_bootstrap_failed`).trim()||`threshold_ecdsa_bootstrap_failed`,r=Error(t||`threshold-ecdsa bootstrap failed`);return r.code=n,r}function Qe(e){let t=Error(e);return t.code=L,t}function $e(e){switch(e.authKind){case`email_otp`:return`email_otp`;case`passkey`:return`passkey`}return`unknown`}function et(e){switch(e.bootstrap.secretSourceKind){case`persisted_role_local`:return e.request.authKind===`email_otp`?se({authSubjectId:e.request.emailOtpWorkerSessionHandle.authSubjectId}):oe({credentialIdB64u:e.request.passkeyCredentialIdB64u,rpId:e.bootstrap.rpId})}}function R(e,t){let n=String(e||``).trim().toLowerCase();if(!/^0x[0-9a-f]{40}$/.test(n))throw Error(`threshold-ecdsa exact activation returned invalid ${t}`);return n}function tt(e){let t=R(e.bootstrapOwnerAddress,`server owner address`);if(t!==R(e.key.thresholdOwnerAddress,`key owner address`))throw Qe(`threshold-ecdsa exact activation owner address mismatches server bootstrap result`);return t}async function nt(e,t){let n=l(String(t.key.walletId)),r=t.lanePolicy.chainTarget,i=String(t.lanePolicy.thresholdSessionId).trim();if(e.routerAbNormalSigning.mode!==`enabled`)throw Error(`Router A/B ECDSA derivation normal signing must be enabled for activation`);let a={walletId:n,chainTarget:r,targetKey:u(r),operationId:i||null,authMethod:$e(t),evmFamilyKeyFingerprint:te(t.key),keyHandle:t.keyHandle,chainTargetKey:u(r),ecdsaThresholdKeyId:String(t.key.ecdsaThresholdKeyId),thresholdSessionId:i||null,freshAuthRetrySideEffectState:`not_applicable`,hasRequestedEcdsaThresholdKeyId:!0,requestedSessionId:i||null,authKind:t.walletSessionRouteAuth?.kind||`none`,passkeyCredentialBound:t.authKind===`passkey`},o;try{o=await Je({touchIdPrompt:e.touchIdPrompt,relayerUrl:t.relayerUrl,requestId:t.requestId,workerCtx:e.workerCtx,...`preauthorizedSessionActivation`in t&&t.preauthorizedSessionActivation?{sessionActivation:t.preauthorizedSessionActivation}:{bootstrapAuth:Ye(t.walletSessionRouteAuth)},keyHandle:t.keyHandle,key:t.key,lanePolicy:t.lanePolicy,publicCapability:t.publicCapability,existingRoleLocalMaterial:t.existingRoleLocalMaterial})}catch(e){try{console.warn(`[threshold-ecdsa][bootstrap][exception]`,{...a,message:e instanceof Error?e.message:String(e)})}catch{}throw e}if(!o.ok){try{console.warn(`[threshold-ecdsa][bootstrap][failure]`,{...a,code:o.code||``,message:o.message||``})}catch{}throw Ze({code:o.code,message:o.message})}let s=String(t.key.ecdsaThresholdKeyId).trim();if(!s)throw Error(`threshold-ecdsa bootstrap returned empty ecdsaThresholdKeyId`);let c=ie(s),d=le(String(o.keyHandle||``).trim()),f=String(o.relayerKeyId||``).trim();if(!f)throw Error(`threshold-ecdsa bootstrap returned empty relayerKeyId`);let p=ne(f),m=String(o.clientVerifyingShareB64u||``).trim();if(!m)throw Error(`threshold-ecdsa bootstrap returned empty clientVerifyingShareB64u`);let h=ae(m),g=String(o.thresholdSessionId||``).trim();if(!g)throw Error(`threshold-ecdsa bootstrap returned empty thresholdSessionId`);let _=Number(o.expiresAtMs);if(!Number.isFinite(_))throw Error(`threshold-ecdsa bootstrap returned invalid expiresAtMs`);let v=Number(o.remainingUses);if(!Number.isFinite(v))throw Error(`threshold-ecdsa bootstrap returned invalid remainingUses`);let y=t.key.participantIds.map(e=>Number(e));if(!y)throw Error(`threshold-ecdsa bootstrap returned empty participantIds`);let b=tt({key:t.key,bootstrapOwnerAddress:o.ethereumAddress}),ee=re({walletId:n,chainTarget:r,keyHandle:d,ecdsaThresholdKeyId:c,signingRootId:o.signingRootId,signingRootVersion:o.signingRootVersion,applicationBindingDigestB64u:o.roleLocalActivation.publicCapability.context.application_binding_digest_b64u,clientParticipantId:1,relayerParticipantId:2,participantIds:y,contextBinding32B64u:o.roleLocalActivation.publicFacts.contextBinding32B64u,derivationClientSharePublicKey33B64u:o.roleLocalActivation.publicFacts.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:o.roleLocalActivation.publicFacts.relayerPublicKey33B64u,groupPublicKey33B64u:o.roleLocalActivation.publicFacts.groupPublicKey33B64u,ethereumAddress:o.roleLocalActivation.publicFacts.ethereumAddress,publicCapability:o.roleLocalActivation.publicCapability}),x=o.routerAbEcdsaDerivationNormalSigning,S=o.roleLocalActivation.roleLocalMaterial,C=et({request:t,bootstrap:o}),w={ok:!0,thresholdSessionId:g,authorizationSessionId:o.authorizationSessionId,authorizationId:o.authorizationId,walletSessionId:o.walletSessionId,quotaId:o.quotaId,expiresAtMs:_,remainingUses:v,runtimePolicyScope:o.runtimePolicyScope,walletSession:o.walletSession,operationCredential:o.operationCredential,clientVerifyingShareB64u:h};return{thresholdEcdsaKeyRef:{type:`threshold-ecdsa-secp256k1`,userId:n,chainTarget:r,relayerUrl:t.relayerUrl,keyHandle:d,ecdsaThresholdKeyId:c,backendBinding:{materialKind:`role_local_worker_handle`,relayerKeyId:p,clientVerifyingShareB64u:h,roleLocalMaterialHandle:S,roleLocalMaterialRef:o.roleLocalActivation.roleLocalMaterialRef,publicFacts:ee,authMethod:C},participantIds:y,thresholdEcdsaPublicKeyB64u:o.thresholdEcdsaPublicKeyB64u,ethereumAddress:b,relayerVerifyingShareB64u:o.relayerVerifyingShareB64u,routerAbEcdsaDerivationNormalSigning:x},session:w}}async function rt(e,t){return await nt(e,t)}function it(e){let t;try{t=c(e.evidenceSetDigest)}catch(e){throw Error(e instanceof Error?e.message:`ECDSA explicit export evidence digest is invalid`)}let n=Math.floor(Number(e.expiresAtMs)),r=ee(e.operation);if(r.operation_kind!==`evm.export_key`)throw Error(`ECDSA explicit export operation kind is invalid`);if(!Number.isSafeInteger(n)||n<=Date.now())throw Error(`ECDSA explicit export operation authorization expiry is invalid`);let i=at(e.unseal);return{kind:`verified_step_up`,evidenceSetDigest:t,operation:r,expiresAtMs:n,quotaUse:`none`,unseal:i}}function at(e){switch(e.kind){case`not_requested`:return{kind:`not_requested`};case`email_otp_grant`:{let t=String(e.grant||``).trim(),n=String(e.challenge_id||``).trim();if(!t||!n)throw Error(`ECDSA explicit export Email OTP unseal grant is invalid`);return{kind:`email_otp_grant`,grant:t,challenge_id:n}}default:{let t=e;throw Error(`Unsupported ECDSA explicit export unseal state: ${String(t)}`)}}}async function z(e){let t=String(e.relayerUrl||``).trim();if(!t)throw Error(`ECDSA explicit export relayer URL is required`);return{kind:`explicit_key_export_ecdsa_activation_result`,purpose:`explicit_key_export`,material:{kind:`auth_neutral_ecdsa_export_material_v1`,relayerUrl:t,persistedMaterial:e.existingRoleLocalMaterial},authorization:it(e.authorization)}}function B(e,t){let n=String(e||t||``).trim();if(!n)throw Error(`Missing relayer url (configs.network.relayer.url)`);return n}function V(e){return`key`in e&&!!e.key&&`keyHandle`in e&&!!String(e.keyHandle||``).trim()}function H(e){return V(e)?e.key.walletId:e.walletId}function U(e){return V(e)?e.lanePolicy.chainTarget:e.chainTarget}function ot(e){return e.kind===`email_otp_ecdsa_bootstrap`?{authMethod:f.emailOtp,signerSource:d.emailOtpRegistration}:{authMethod:f.passkey,signerSource:d.passkeyRegistration}}function st(e){switch(e.kind){case`passkey_preauthorized_ecdsa_bootstrap`:case`wallet_session_reconnect_ecdsa_bootstrap`:return e.authorizationAuthority;case`passkey_fresh_ecdsa_bootstrap`:case`email_otp_ecdsa_bootstrap`:return e.existingRoleLocalMaterial.authority}}function ct(e){if(!(`sessionActivation`in e.request)||!e.request.sessionActivation)return;let t=e.request.sessionActivation,n=j(t)?t.activation:t,r=j(t)?t.authorization:{record:t.session.wallet_session,operationCredential:t.session.operation_credential};me({walletId:e.walletId,authority:e.authority,walletSession:r.record,operationCredential:r.operationCredential,expectedAuthorizationId:n.session.authorization_id,expectedWalletSessionId:n.session.wallet_session_id,expectedQuotaId:n.session.quota_id,expectedExpiresAtMs:n.session.expires_at_ms}),e.request.kind===`passkey_preauthorized_ecdsa_bootstrap`&&he({expected:e.request.authorizationIdentity,walletSession:r.record})}function lt(e,t){let n=(e,n,r)=>({kind:`session_bootstrap`,purpose:`transaction_signing`,relayerUrl:t,keyHandle:m(e.keyHandle),key:e.key,lanePolicy:e.lanePolicy,publicCapability:e.publicCapability,existingRoleLocalMaterial:e.existingRoleLocalMaterial,...e.requestId?{requestId:e.requestId}:{},...r,...n?{walletSessionRouteAuth:n}:{}}),r=e=>({kind:`session_bootstrap`,purpose:`transaction_signing`,relayerUrl:t,keyHandle:m(e.keyHandle),key:e.key,lanePolicy:e.lanePolicy,publicCapability:e.publicCapability,existingRoleLocalMaterial:e.existingRoleLocalMaterial,...e.requestId?{requestId:e.requestId}:{},authKind:`passkey`,passkeyCredentialIdB64u:e.passkeyCredentialIdB64u,preauthorizedSessionActivation:e.sessionActivation});switch(e.kind){case`passkey_fresh_ecdsa_bootstrap`:return n(e,e.routeAuth,{authKind:`passkey`,passkeyCredentialIdB64u:e.passkeyCredentialIdB64u});case`passkey_preauthorized_ecdsa_bootstrap`:return r(e);case`wallet_session_reconnect_ecdsa_bootstrap`:return n(e,e.routeAuth,{authKind:`passkey`,passkeyCredentialIdB64u:e.passkeyCredentialIdB64u});case`email_otp_ecdsa_bootstrap`:{let r={authKind:`email_otp`,emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle};return e.sessionActivation?{kind:`session_bootstrap`,purpose:`transaction_signing`,relayerUrl:t,keyHandle:m(e.keyHandle),key:e.key,lanePolicy:e.lanePolicy,publicCapability:e.publicCapability,existingRoleLocalMaterial:e.existingRoleLocalMaterial,...e.requestId?{requestId:e.requestId}:{},...r,preauthorizedSessionActivation:e.sessionActivation}:n(e,e.routeAuth,r)}}throw Error(`[SigningEngine][ecdsa] unsupported ECDSA bootstrap request`)}function ut(e,t){return{purpose:`explicit_key_export`,relayerUrl:t,existingRoleLocalMaterial:e.existingRoleLocalMaterial,authorization:e.authorization}}function dt(e,t){return{purpose:`explicit_key_export`,relayerUrl:t,existingRoleLocalMaterial:e.existingRoleLocalMaterial,authorization:e.authorization}}async function ft(e,t){if(t.kind===`reuse_warm_ecdsa_bootstrap`)throw Error(`[SigningEngine][ecdsa] reuse_warm bootstrap must resolve an existing exact material request before activation`);let n=st(t),r=l(H(t)),i=U(t),a=B(t.relayerUrl,e.defaultRelayerUrl),o=e.getSignerWorkerContext(),s={touchIdPrompt:e.touchIdPrompt,workerCtx:o,routerAbNormalSigning:e.routerAbNormalSigning};ct({request:t,walletId:r,authority:n});let c=await rt(s,lt(t,a)),u=ot(t);return await e.persistThresholdEcdsaBootstrapForWalletTarget({walletId:r,chainTarget:i,bootstrap:c,signerAuth:u}),await t.beforeAuthorizationPersistence?.(),await ge(de,{walletId:r,authority:n,bootstrap:c}),c}async function pt(e,t){return await z(ut(t,B(t.relayerUrl,e.defaultRelayerUrl)))}async function mt(e,t){return await z(dt(t,B(t.relayerUrl,e.defaultRelayerUrl)))}async function W(e,t,n){let r=String(t),i=(e.get(r)||Promise.resolve()).catch(()=>void 0),a,o=new Promise(e=>{a=e}),s=i.then(()=>o);e.set(r,s),await i;try{return await n()}finally{a(),e.get(r)===s&&e.delete(r)}}function ht(e,t){return t.runtimeScopeBootstrap&&(e.runtimeScopeBootstrap=t.runtimeScopeBootstrap),t.operationIntent&&(e.operationIntent=t.operationIntent),typeof t.ttlMs==`number`&&(e.ttlMs=t.ttlMs),e}function G(e){return ht({kind:`email_otp_ecdsa_activation`,purpose:`transaction_signing`,walletKey:e.walletKey,lanePolicy:e.lanePolicy,publicCapability:e.publicCapability,existingRoleLocalMaterial:e.existingRoleLocalMaterial,source:e.source,relayerUrl:e.relayerUrl,sessionIdentity:e.sessionIdentity,sessionKind:e.sessionKind,sessionBudgetUses:e.sessionBudgetUses,runtimePolicy:e.runtimePolicy,emailOtpWorkerSessionHandle:e.emailOtpWorkerSessionHandle,emailOtpAuthContext:e.emailOtpAuthContext,...`preauthorizedSessionActivation`in e?{preauthorizedSessionActivation:e.preauthorizedSessionActivation}:{walletSessionRouteAuth:e.walletSessionRouteAuth}},e)}function K(e){if(pe(e.context)!==e.expected)throw Error(`Email OTP ${e.label} activation requires ${e.expected} retention`)}function gt(e){return K({context:e.emailOtpAuthContext,expected:`session`,label:`session bootstrap`}),G(e)}function _t(e){return K({context:e.emailOtpAuthContext,expected:`session`,label:`recovered session`}),G(e)}function vt(e){return K({context:e.emailOtpAuthContext,expected:`session`,label:`preauthorized session bootstrap`}),G(e)}function yt(e){return K({context:e.emailOtpAuthContext,expected:`single_use`,label:`per-operation reauth`}),G(e)}function bt(e){return{kind:`email_otp_ecdsa_export_activation`,purpose:`explicit_key_export`,existingRoleLocalMaterial:e.existingRoleLocalMaterial,relayerUrl:e.relayerUrl,authorization:e.authorization}}function xt(e){return{kind:`passkey_ecdsa_export_activation`,purpose:`explicit_key_export`,existingRoleLocalMaterial:e.existingRoleLocalMaterial,relayerUrl:e.relayerUrl,authorization:e.authorization}}function St(e){switch(e.kind){case`default_policy`:return;case`scoped_policy`:return e.scope}throw Error(`[SigningEngine][ecdsa] unsupported ECDSA activation policy`)}function q(e,t){t.runtimeScopeBootstrap&&(e.runtimeScopeBootstrap=t.runtimeScopeBootstrap),t.operationIntent&&(e.operationIntent=t.operationIntent);let n=St(t.runtimePolicy);return`walletId`in e&&(typeof t.ttlMs==`number`&&(e.ttlMs=t.ttlMs),n&&(e.runtimePolicyScope=n)),e}function Ct(e){switch(e.kind){case`passkey_ecdsa_activation`:return{kind:`passkey_existing_session_activation`,request:e};case`email_otp_ecdsa_activation`:return{kind:`email_otp_existing_session_activation`,request:e}}throw Error(`[SigningEngine][ecdsa] unsupported activation request`)}function wt(e){let t=String(e.webauthnAuthentication.rawId||e.webauthnAuthentication.id||``).trim();if(!t)throw Error(`[SigningEngine][ecdsa] passkey activation requires credential identity`);return t}function Tt(e){let t=Ct(e);switch(t.kind){case`passkey_existing_session_activation`:return q({kind:`passkey_fresh_ecdsa_bootstrap`,keyHandle:t.request.walletKey.keyHandle,key:C(t.request.walletKey),lanePolicy:t.request.lanePolicy,publicCapability:t.request.publicCapability,existingRoleLocalMaterial:t.request.existingRoleLocalMaterial,source:t.request.source,relayerUrl:t.request.relayerUrl,requestId:t.request.requestId,passkeyCredentialIdB64u:wt(t.request),routeAuth:t.request.walletSessionRouteAuth},t.request);case`email_otp_existing_session_activation`:{let e={kind:`email_otp_ecdsa_bootstrap`,keyHandle:t.request.walletKey.keyHandle,key:C(t.request.walletKey),lanePolicy:t.request.lanePolicy,publicCapability:t.request.publicCapability,existingRoleLocalMaterial:t.request.existingRoleLocalMaterial,source:`email_otp`,relayerUrl:t.request.relayerUrl,emailOtpWorkerSessionHandle:t.request.emailOtpWorkerSessionHandle,emailOtpAuthContext:t.request.emailOtpAuthContext};return t.request.preauthorizedSessionActivation?q({...e,sessionActivation:t.request.preauthorizedSessionActivation},t.request):q({...e,routeAuth:t.request.walletSessionRouteAuth},t.request)}}throw Error(`[SigningEngine][ecdsa] unsupported activation request`)}function Et(e){return{kind:`passkey_ecdsa_export_bootstrap`,purpose:`explicit_key_export`,existingRoleLocalMaterial:e.existingRoleLocalMaterial,relayerUrl:e.relayerUrl,authorization:e.authorization}}async function Dt(e){let t=e.bootstrap.thresholdEcdsaKeyRef.backendBinding;if(!t)throw Error(`[WarmSessionStore] threshold ECDSA bootstrap is missing its backend binding`);let n=Ot(t);if(!n)return;let r=await e.deps.persistEcdsaRoleLocalReadyRecord({record:n,storageKeyFacts:w(n)});if(!r.ok)throw Error(`[WarmSessionStore] threshold ECDSA role-local ready record persistence failed (${r.code}): ${r.message}`)}function Ot(e){switch(e.materialKind){case`role_local_ready_state_blob`:return e.ecdsaRoleLocalReadyRecord;case`role_local_worker_handle`:case`role_local_durable_public_anchor`:case`role_local_durable_sealed_ref`:case`metadata_only`:return null;default:{let t=e;throw Error(`[WarmSessionStore] unsupported threshold ECDSA backend binding: ${JSON.stringify(t)}`)}}}async function J(e,t){let n=l(H(t));return await W(e.queueByWallet,n,async()=>{let n=await ft(e.activationDeps,t);return await Dt({deps:e,bootstrap:n}),n})}async function kt(e,t){return await J(e,Tt(t))}async function At(e,t){return await pt(e.activationDeps,Et(t))}async function jt(e,t){let n={kind:`email_otp_ecdsa_export_bootstrap`,purpose:`explicit_key_export`,existingRoleLocalMaterial:t.existingRoleLocalMaterial,relayerUrl:t.relayerUrl,authorization:t.authorization};return await mt(e.activationDeps,n)}const Y=`ecdsa-derivation:role-local:product-export-confirmation:v5`,X=`ecdsa-derivation:role-local:product-export-authorization:v5`;function Mt(e){return{kind:`operation_step_up`}}function Z(e){return{authorizationKind:e.kind,authorizationId:e.evidenceSetDigest}}function Q(){let e=globalThis.crypto;if(!e||typeof e.getRandomValues!=`function`)throw Error(`crypto.getRandomValues is required for threshold ECDSA export`);return r(e.getRandomValues(new Uint8Array(32)))}async function Nt(e){let t=String(e.relayerUrl||``).trim().replace(/\/+$/g,``);if(!t)throw Error(`[SigningEngine][ecdsa-export] relayer URL is required`);if(e.authorization.kind===`wallet_session_bearer`&&!e.authorization.token.trim())throw Error(`[SigningEngine][ecdsa-export] Wallet Session operation credential is required`);let n={"Content-Type":`application/json`};e.authorization.kind===`wallet_session_bearer`&&(n.Authorization=`Bearer ${e.authorization.token}`);try{let r=await fetch(`${t}${_}`,{method:`POST`,credentials:e.authorization.kind===`legacy_cookie`?`include`:`omit`,headers:n,body:JSON.stringify({request:e.request,requestDigestB64u:e.requestDigestB64u})}),i=await r.json().catch(()=>null);if(!r.ok){let e=i&&typeof i==`object`&&!Array.isArray(i)?i:null;return{ok:!1,code:String(e?.code||`http_error`),message:String(e?.message||`HTTP ${r.status}`)}}return{ok:!0,value:h(i)}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}async function Pt(e){return await Nt({...e,authorization:{kind:`legacy_cookie`}})}async function Ft(e){return await Nt({relayerUrl:e.relayerUrl,request:e.request,requestDigestB64u:e.requestDigestB64u,authorization:{kind:`wallet_session_bearer`,token:e.operationCredential.token}})}function It(e){let t=Math.min(e.issuedAtUnixMs+6e4,e.authorizationExpiresAtMsCeiling??1/0);if(Number.isFinite(t)&&t>e.issuedAtUnixMs)return t;throw new we({failure:Ce(Se.expired),message:`Wallet Session expired before ECDSA export authorization`})}function Lt(e){if(String(e.material.persistedMaterial.publicFacts.walletId)!==String(e.walletSessionUserId))throw Error(`[SigningEngine][ecdsa-export] explicit export wallet mismatch`)}async function $(e){return r(await n(t(e)))}function Rt(e){switch(e.kind){case`rehydrated`:return e;case`device_link_required`:throw Error(`[SigningEngine][ecdsa-export] device_link_required: local threshold ECDSA material is unavailable`);case`corrupt`:throw Error(`[SigningEngine][ecdsa-export] local threshold ECDSA material is corrupt (${e.reason}): ${e.message}`);default:{let t=e;throw Error(`Unsupported ECDSA export material resolution: ${String(t)}`)}}}async function zt(e){return Rt(await D({purpose:`explicit_key_export`,source:E(e.persistedMaterial),workerCtx:e.workerCtx}))}function Bt(e){let t=Z(e.material.operationAuthorization),n=e.material.persistedMaterial.publicFacts;return{version:X,operation:`explicit_key_export`,keyHandle:n.keyHandle,walletId:String(n.walletId),ecdsaThresholdKeyId:e.ecdsaThresholdKeyId,relayerKeyId:n.publicCapability.signer_set.selected_server.server_id,signingRootId:e.signingRootId,signingRootVersion:e.signingRootVersion,contextBinding32B64u:e.contextBinding32B64u,publicIdentity:e.publicIdentity,exportRequestNonce32B64u:e.exportRequestNonce32B64u,confirmationDigest32B64u:e.confirmationDigest32B64u,issuedAtUnixMs:e.issuedAtUnixMs,expiresAtUnixMs:e.expiresAtUnixMs,authorizationKind:t.authorizationKind,authorizationId:t.authorizationId,materialActivation:S(e.material.persistedMaterial.materialActivation),participantIds:n.participantIds}}async function Vt(e,t){let n=t.persistedMaterial.publicFacts,r=S(t.persistedMaterial.materialActivation);switch(t.factorAuthorization.kind){case`passkey`:{let e=String(t.factorAuthorization.credential.rawId||t.factorAuthorization.credential.id||``).trim();if(!e)throw Error(`[SigningEngine][ecdsa-export] passkey authorization credential is missing`);if(e!==t.factorAuthorization.passkeyCredentialIdB64u)throw Error(`[SigningEngine][ecdsa-export] passkey export authorization credential mismatch`);break}case`email_otp_verified`:break;default:{let e=t.factorAuthorization;throw Error(`Unsupported ECDSA export authorization: ${String(e)}`)}}let i=Date.now(),a=It({issuedAtUnixMs:i,authorizationExpiresAtMsCeiling:t.operationAuthorization.expiresAtMs}),o={derivationClientSharePublicKey33B64u:n.derivationClientSharePublicKey33B64u,relayerPublicKey33B64u:n.relayerPublicKey33B64u,groupPublicKey33B64u:n.groupPublicKey33B64u,ethereumAddress:n.ethereumAddress},s=Q(),c=Z(t.operationAuthorization),l=await $({version:Y,walletId:String(n.walletId),ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,relayerKeyId:n.publicCapability.signer_set.selected_server.server_id,contextBinding32B64u:n.contextBinding32B64u,publicIdentity:o,authorizationKind:c.authorizationKind,authorizationId:c.authorizationId,materialActivation:r,exportRequestNonce32B64u:s,issuedAtUnixMs:i,expiresAtUnixMs:a}),u=await $(Bt({ecdsaThresholdKeyId:n.ecdsaThresholdKeyId,signingRootId:n.signingRootId,signingRootVersion:n.signingRootVersion,contextBinding32B64u:n.contextBinding32B64u,publicIdentity:o,exportRequestNonce32B64u:s,confirmationDigest32B64u:l,issuedAtUnixMs:i,expiresAtUnixMs:a,material:t})),d=n.publicCapability,f=`ecdsa-export:${s}`,p=await _e({workerCtx:e.getSignerWorkerContext(),command:{kind:`create_router_ab_ecdsa_explicit_export_ceremony_v1`,ceremonyId:f,request:{context:d.context,lifecycle:{lifecycle_id:f,work_kind:`key_export`,primitive_request_kind:`export`,root_share_epoch:d.activation_epoch,account_id:String(n.walletId),session_id:T.thresholdEcdsaSession(f),signer_set_id:d.signer_set.signer_set_id,selected_server_id:d.signer_set.selected_server.server_id},public_identity:d.public_identity,signer_set:d.signer_set,router_id:d.router_id,client_id:d.client_id,authorization:Mt(t.operationAuthorization),authorization_id:t.operationAuthorization.evidenceSetDigest,operation:t.operationAuthorization.operation,material_activation:r,export_authorization_digest_b64u:u,export_nonce:s,expires_at_ms:a,deriver_recipient_keys:d.deriver_recipient_keys}}});if(p.kind!==`router_ab_ecdsa_explicit_export_ceremony_created_v1`)throw Error(`[SigningEngine][ecdsa-export] strict export ceremony kind mismatch`);try{let i=await Pt({relayerUrl:t.relayerUrl,request:p.request,requestDigestB64u:p.requestDigestB64u});if(!i.ok)throw Error(i.error||i.message||i.code||`Strict ECDSA explicit export request failed`);let a=await ve({workerCtx:e.getSignerWorkerContext(),command:{kind:`finalize_router_ab_ecdsa_explicit_export_v1`,ceremonyId:f,clientProofFinalization:{kind:`finalize_encrypted_client_proof_bundles_v2`,bundles:i.value.response.bundles},signingWorkerExport:i.value.signing_worker_export,authorizationKind:c.authorizationKind,authorizationId:c.authorizationId,materialActivation:r,roleLocalMaterial:t.liveMaterial.liveHandle,roleLocalMaterialRef:t.liveMaterial.materialRef,publicFacts:n}});return{publicKeyHex:a.publicKeyHex,privateKeyHex:a.privateKeyHex,ethereumAddress:a.ethereumAddress}}catch(t){throw await be({workerCtx:e.getSignerWorkerContext(),command:{kind:`close_router_ab_ecdsa_post_registration_ceremony_v1`,ceremonyId:f}}).catch(()=>void 0),t}}async function Ht(e,t){let n=t.exportProvision.material;Lt({material:n,walletSessionUserId:t.walletSessionUserId});let r=String(n.relayerUrl||``).trim();if(!r)throw Error(`[SigningEngine][ecdsa-export] relayer URL is required`);let i=n.persistedMaterial;return await Vt(e,{persistedMaterial:i,liveMaterial:await zt({persistedMaterial:i,workerCtx:e.getSignerWorkerContext()}),relayerUrl:r,operationAuthorization:t.exportProvision.authorization,factorAuthorization:t.factorAuthorization})}function Ut(t){let n=t.runtime.normalSigning.scope,r=t.operationAuthorization.operation,i=x(r.material_activation);if(r.operation_kind!==`evm.export_key`||r.wallet_id!==String(t.runtime.walletId)||r.key_handle!==t.runtime.publicFacts.keyHandle||r.relayer_key_id!==t.runtime.relayerKeyId||r.participant_ids[0]!==t.runtime.publicFacts.participantIds[0]||r.participant_ids[1]!==t.runtime.publicFacts.participantIds[1]||r.signing_worker_id!==n.signing_worker.server_id||r.normal_signing_scope.wallet_id!==n.wallet_id||r.normal_signing_scope.context.application_binding_digest_b64u!==n.context.application_binding_digest_b64u||r.normal_signing_scope.public_identity.context_binding_b64u!==n.public_identity.context_binding_b64u||r.normal_signing_scope.public_identity.threshold_public_key33_b64u!==n.public_identity.threshold_public_key33_b64u||r.normal_signing_scope.signing_worker.server_id!==n.signing_worker.server_id||!e(i,t.runtime.materialActivation)||!e(x(r.normal_signing_scope.material_activation),t.runtime.materialActivation))throw Error(`[SigningEngine][ecdsa-export] active Wallet Authority operation identity changed`)}async function Wt(e,t){Ut(t);let n=t.runtime,r=n.normalSigning.scope;if(t.operationAuthorization.exportTopology.signer_set.selected_server.server_id!==r.signing_worker.server_id)throw Error(`[SigningEngine][ecdsa-export] active export topology changed`);let i=r.material_activation,a=Date.now(),o=It({issuedAtUnixMs:a,authorizationExpiresAtMsCeiling:t.operationAuthorization.expiresAtMs}),s={derivationClientSharePublicKey33B64u:r.public_identity.derivation_client_share_public_key33_b64u,relayerPublicKey33B64u:r.public_identity.server_public_key33_b64u,groupPublicKey33B64u:r.public_identity.threshold_public_key33_b64u,ethereumAddress:n.publicFacts.thresholdOwnerAddress},l=Q(),u=Z(t.operationAuthorization),d=await $({version:Y,walletId:String(n.walletId),ecdsaThresholdKeyId:r.ecdsa_threshold_key_id,relayerKeyId:n.relayerKeyId,contextBinding32B64u:r.public_identity.context_binding_b64u,publicIdentity:s,authorizationKind:u.authorizationKind,authorizationId:u.authorizationId,materialActivation:i,exportRequestNonce32B64u:l,issuedAtUnixMs:a,expiresAtUnixMs:o}),f=await $({version:X,operation:`explicit_key_export`,keyHandle:n.publicFacts.keyHandle,walletId:String(n.walletId),ecdsaThresholdKeyId:r.ecdsa_threshold_key_id,relayerKeyId:n.relayerKeyId,signingRootId:r.signing_root_id,signingRootVersion:r.signing_root_version,contextBinding32B64u:r.public_identity.context_binding_b64u,publicIdentity:s,exportRequestNonce32B64u:l,confirmationDigest32B64u:d,issuedAtUnixMs:a,expiresAtUnixMs:o,authorizationKind:u.authorizationKind,authorizationId:u.authorizationId,materialActivation:i,participantIds:n.publicFacts.participantIds}),p=`ecdsa-export:${l}`,m={context:r.context,lifecycle:{lifecycle_id:p,work_kind:`key_export`,primitive_request_kind:`export`,root_share_epoch:r.activation_epoch,account_id:r.wallet_id,session_id:T.thresholdEcdsaSession(p),signer_set_id:t.operationAuthorization.exportTopology.signer_set.signer_set_id,selected_server_id:t.operationAuthorization.exportTopology.signer_set.selected_server.server_id},public_identity:r.public_identity,signer_set:t.operationAuthorization.exportTopology.signer_set,router_id:t.operationAuthorization.exportTopology.router_id,client_id:String(n.walletId),authorization:Mt(t.operationAuthorization),operation:t.operationAuthorization.operation,authorization_id:c(t.operationAuthorization.evidenceSetDigest),material_activation:i,export_authorization_digest_b64u:f,export_nonce:l,expires_at_ms:o,deriver_recipient_keys:t.operationAuthorization.exportTopology.deriver_recipient_keys},h=await ye({holderHandleId:n.holderRuntime.holderHandleId,request:m,workerCtx:e.getSignerWorkerContext()});if(h.kind!==`ecdsa_holder_ordinary_export_request_created_v1`)throw Error(`[SigningEngine][ecdsa-export] active holder export request kind mismatch`);let g=await Ft({relayerUrl:t.relayerUrl,request:h.request,requestDigestB64u:h.requestDigestB64u,operationCredential:n.operationCredential});if(!g.ok)throw Error(g.error||g.message||g.code||`Active Wallet Authority ECDSA export request failed`);let _={wallet_id:r.wallet_id,key_handle:n.publicFacts.keyHandle,ecdsa_threshold_key_id:r.ecdsa_threshold_key_id,signing_root_id:r.signing_root_id,signing_root_version:r.signing_root_version,activation_epoch:r.activation_epoch,signing_worker_id:r.signing_worker.server_id,context_binding_b64u:r.public_identity.context_binding_b64u,threshold_public_key33_b64u:r.public_identity.threshold_public_key33_b64u,export_request_digest_b64u:h.requestDigestB64u,export_authorization_digest_b64u:f,export_nonce:l,authorization_kind:`verified_step_up`,authorization_id:t.operationAuthorization.evidenceSetDigest,material_activation:i,lifecycle_id:p,recipient_identity:h.request.client_id,recipient_public_key:h.request.client_ephemeral_public_key,expires_at_ms:h.request.expires_at_ms},v=await xe({holderHandleId:n.holderRuntime.holderHandleId,requestDigestB64u:h.requestDigestB64u,expectedBinding:_,forwardedResponse:g.value,workerCtx:e.getSignerWorkerContext()});return{publicKeyHex:v.publicKeyHex,privateKeyHex:v.privateKeyHex,ethereumAddress:v.ethereumAddress}}export{Ne as C,Re as S,Ee as T,j as _,yt as a,Pe as b,gt as c,kt as d,J as f,M as g,H as h,bt as i,jt as l,U as m,Ht as n,vt as o,W as p,xt as r,_t as s,Wt as t,At as u,Fe as v,Te as w,Oe as x,Ie as y};