@seams/wallet 0.6.0 → 0.6.2

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 (150) hide show
  1. package/dist/.build-inputs.sha256 +1 -1
  2. package/dist/esm/SeamsWeb/SeamsWeb.js +1 -0
  3. package/dist/esm/SeamsWeb/operations/registration/registration.js +162 -33
  4. package/dist/esm/SeamsWeb/operations/registration/registrationTiming.js +33 -2
  5. package/dist/esm/SeamsWeb/signingSurface/BrowserSigningSurface.js +3 -0
  6. package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +63 -10
  7. package/dist/esm/core/rpcClients/relayer/walletRegistration.js +45 -3
  8. package/dist/esm/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +19 -0
  9. package/dist/esm/core/signingEngine/flows/signNear/signTransactions.js +25 -6
  10. package/dist/esm/core/signingEngine/nonce/nearNonceLane.js +0 -29
  11. package/dist/esm/core/signingEngine/session/operationState/trace.js +10 -1
  12. package/dist/esm/core/signingEngine/session/passkey/prfCache.js +24 -4
  13. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +5 -3
  14. package/dist/esm/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +40 -3
  15. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +31 -35
  16. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +64 -10
  17. package/dist/esm/core/signingEngine/walletCustody/ceremonyDriver.js +1 -1
  18. package/dist/esm/react/SeamsWeb/SeamsWeb.js +1 -0
  19. package/dist/esm/react/SeamsWeb/operations/registration/registration.js +162 -33
  20. package/dist/esm/react/SeamsWeb/operations/registration/registrationTiming.js +33 -2
  21. package/dist/esm/react/SeamsWeb/signingSurface/BrowserSigningSurface.js +3 -0
  22. package/dist/esm/react/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +63 -10
  23. package/dist/esm/react/core/rpcClients/relayer/walletRegistration.js +45 -3
  24. package/dist/esm/react/core/signingEngine/flows/signNear/shared/ed25519YaoNormalSigning.js +19 -0
  25. package/dist/esm/react/core/signingEngine/flows/signNear/signTransactions.js +25 -6
  26. package/dist/esm/react/core/signingEngine/nonce/nearNonceLane.js +0 -29
  27. package/dist/esm/react/core/signingEngine/session/operationState/trace.js +10 -1
  28. package/dist/esm/react/core/signingEngine/session/passkey/prfCache.js +24 -4
  29. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.js +5 -3
  30. package/dist/esm/react/core/signingEngine/uiConfirm/PasskeyMpcSessionManager.js +40 -3
  31. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +31 -35
  32. package/dist/esm/react/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +64 -10
  33. package/dist/esm/react/core/signingEngine/walletCustody/ceremonyDriver.js +1 -1
  34. package/dist/esm/react/shared-ts/src/utils/routerAbEd25519Yao.js +13 -1
  35. package/dist/esm/sdk/{NonceCoordinator-C7QltTDC.js → NonceCoordinator-C7mqpJiU.js} +0 -29
  36. package/dist/esm/sdk/{adapters-Dgy69gf0.js → adapters-m94YFj70.js} +96 -46
  37. package/dist/{public/sdk/defaultConfigs-DJCLCrg9.js → esm/sdk/defaultConfigs-CyNOW4Sy.js} +1 -1
  38. package/dist/{public/sdk/display-Cw90-qmF.js → esm/sdk/display-DHdC2yXU.js} +1 -1
  39. package/dist/{public/sdk/ecdsaCapabilityManifest-DA_fklIs.js → esm/sdk/ecdsaCapabilityManifest-C8itxV9S.js} +1 -1
  40. package/dist/esm/sdk/{ecdsaPresignLifecycle-D_KCktCj.js → ecdsaPresignLifecycle-CnSnzoRJ.js} +13 -1
  41. package/dist/{public/sdk/ed25519SeedMaterial-0VmS6K9P.js → esm/sdk/ed25519SeedMaterial-Cghz8-XB.js} +2 -2
  42. package/dist/esm/sdk/{exactSessionState-C2aAv_ED.js → exactSessionState-Bt0HforB.js} +64 -11
  43. package/dist/esm/sdk/{export-viewer-host-NhjFdpm-.js → export-viewer-host-CbqG8ZQV.js} +1 -1
  44. package/dist/esm/sdk/{host-DACTruOj.js → host-BPC1zSVg.js} +2 -2
  45. package/dist/esm/sdk/{localOnly-DTNq69fJ.js → localOnly-CbLYTVbo.js} +2 -2
  46. package/dist/{public/sdk/nearEd25519YaoMaterialActivation-4AuGG2DG.js → esm/sdk/nearEd25519YaoMaterialActivation-Cz5UJQ_7.js} +46 -4
  47. package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-jiGcQylO.js → nearEd25519YaoSigningPreparation-DX6xG-IW.js} +1 -1
  48. package/dist/esm/sdk/{prfCache-Dwwauj4v.js → prfCache-CgAr-VEU.js} +24 -4
  49. package/dist/{public/sdk/recovery-entrypoint-CFTX6PFZ.js → esm/sdk/recovery-entrypoint-D39R1avB.js} +3 -3
  50. package/dist/{public/sdk/registration-CuP1WmQu.js → esm/sdk/registration-DtDICj-o.js} +1 -1
  51. package/dist/esm/sdk/{registration-D8nYJKec.js → registration-PIBMSsQR.js} +247 -40
  52. package/dist/esm/sdk/{registrationPreparationPreload-DDe0sbZi.js → registrationPreparationPreload-BZfAC_ba.js} +2 -2
  53. package/dist/{public/sdk/router-DeX_cJ2f.js → esm/sdk/router-CeFS9SgT.js} +3 -3
  54. package/dist/{public/sdk/routerAbNormalSigning-BGpRKRAj.js → esm/sdk/routerAbNormalSigning-DktZKnf1.js} +1 -1
  55. package/dist/{public/sdk/runtime-auth-Ch00YcH5.js → esm/sdk/runtime-auth-D_lUQQlc.js} +8 -8
  56. package/dist/esm/sdk/{runtime-device-link-CEhVZYAw.js → runtime-device-link-CEph1iM0.js} +4 -4
  57. package/dist/{public/sdk/runtime-ecdsa-tempo-B-qMRrmx.js → esm/sdk/runtime-ecdsa-tempo-tUWnafRo.js} +5 -5
  58. package/dist/esm/sdk/{runtime-email-otp-giyMPib8.js → runtime-email-otp-1wIPTDim.js} +4 -4
  59. package/dist/esm/sdk/{runtime-export-CV-6G1Oy.js → runtime-export-Du2d4_Vu.js} +4 -4
  60. package/dist/{public/sdk/runtime-near-DoDcS88O.js → esm/sdk/runtime-near-CGoWxu7u.js} +4 -4
  61. package/dist/{public/sdk/runtime-preferences-Canyenle.js → esm/sdk/runtime-preferences-JwJK_xP3.js} +4 -4
  62. package/dist/esm/sdk/{runtime-recovery-lWyILD1g.js → runtime-recovery-BEqBdpyo.js} +4 -4
  63. package/dist/esm/sdk/{runtimeContext-BdTaYxJD.js → runtimeContext-CTt9ON27.js} +83 -40
  64. package/dist/{public/sdk/runtimeLoader-Dxn8UA8B.js → esm/sdk/runtimeLoader-ZXsvx9zX.js} +9 -9
  65. package/dist/{public/sdk/secp256k1-CQFsI3qQ.js → esm/sdk/secp256k1-CWDid9WH.js} +4 -4
  66. package/dist/{public/sdk/signEvmFamily-CZLET02E.js → esm/sdk/signEvmFamily-pbMepepQ.js} +10 -10
  67. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-DHTBHHgE.js → signEvmFamilyWithUiConfirmForTempo-CxvfCI_o.js} +2 -2
  68. package/dist/{public/sdk/signEvmWithUiConfirm-CSxTBQUW.js → esm/sdk/signEvmWithUiConfirm-nk-r3Rff.js} +1 -1
  69. package/dist/esm/sdk/{signNear-BeUWiWm_.js → signNear-DVD9-IO5.js} +50 -13
  70. package/dist/{public/sdk/signatureUses-C1o1pDql.js → esm/sdk/signatureUses-BY1IY7uz.js} +1 -1
  71. package/dist/{public/sdk/signerLoader-C_w8vuhm.js → esm/sdk/signerLoader-D_w-SfR9.js} +3 -3
  72. package/dist/{public/sdk/trace-DWnDLSuV.js → esm/sdk/trace-08ayoiNp.js} +10 -1
  73. package/dist/{public/sdk/transactionState-Dd13hMoY.js → esm/sdk/transactionState-Bpm4GamO.js} +2 -2
  74. package/dist/esm/sdk/tx-confirm-ui.js +134 -93
  75. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  76. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  77. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  78. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  79. package/dist/esm/sdk/wallet-ui.css +92 -32
  80. package/dist/esm/sdk/{walletRecoveryCommit-DNvzgeIX.js → walletRecoveryCommit-G6w6N5RV.js} +3 -3
  81. package/dist/esm/sdk/{warmSessionHydration-CCKeEIIy.js → warmSessionHydration-DDNYdTCz.js} +1 -1
  82. package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +13 -1
  83. package/dist/public/headers.manifest.json +1 -1
  84. package/dist/public/sdk/{NonceCoordinator-C7QltTDC.js → NonceCoordinator-C7mqpJiU.js} +0 -29
  85. package/dist/public/sdk/{adapters-Dgy69gf0.js → adapters-m94YFj70.js} +96 -46
  86. package/dist/{esm/sdk/defaultConfigs-DJCLCrg9.js → public/sdk/defaultConfigs-CyNOW4Sy.js} +1 -1
  87. package/dist/{esm/sdk/display-Cw90-qmF.js → public/sdk/display-DHdC2yXU.js} +1 -1
  88. package/dist/{esm/sdk/ecdsaCapabilityManifest-DA_fklIs.js → public/sdk/ecdsaCapabilityManifest-C8itxV9S.js} +1 -1
  89. package/dist/public/sdk/{ecdsaPresignLifecycle-D_KCktCj.js → ecdsaPresignLifecycle-CnSnzoRJ.js} +13 -1
  90. package/dist/{esm/sdk/ed25519SeedMaterial-0VmS6K9P.js → public/sdk/ed25519SeedMaterial-Cghz8-XB.js} +2 -2
  91. package/dist/public/sdk/{exactSessionState-C2aAv_ED.js → exactSessionState-Bt0HforB.js} +64 -11
  92. package/dist/public/sdk/{export-viewer-host-NhjFdpm-.js → export-viewer-host-CbqG8ZQV.js} +1 -1
  93. package/dist/public/sdk/{host-DACTruOj.js → host-BPC1zSVg.js} +2 -2
  94. package/dist/public/sdk/{localOnly-DTNq69fJ.js → localOnly-CbLYTVbo.js} +2 -2
  95. package/dist/{esm/sdk/nearEd25519YaoMaterialActivation-4AuGG2DG.js → public/sdk/nearEd25519YaoMaterialActivation-Cz5UJQ_7.js} +46 -4
  96. package/dist/public/sdk/{nearEd25519YaoSigningPreparation-jiGcQylO.js → nearEd25519YaoSigningPreparation-DX6xG-IW.js} +1 -1
  97. package/dist/public/sdk/{prfCache-Dwwauj4v.js → prfCache-CgAr-VEU.js} +24 -4
  98. package/dist/{esm/sdk/recovery-entrypoint-CFTX6PFZ.js → public/sdk/recovery-entrypoint-D39R1avB.js} +3 -3
  99. package/dist/{esm/sdk/registration-CuP1WmQu.js → public/sdk/registration-DtDICj-o.js} +1 -1
  100. package/dist/public/sdk/{registration-D8nYJKec.js → registration-PIBMSsQR.js} +247 -40
  101. package/dist/public/sdk/{registrationPreparationPreload-DDe0sbZi.js → registrationPreparationPreload-BZfAC_ba.js} +2 -2
  102. package/dist/{esm/sdk/router-DeX_cJ2f.js → public/sdk/router-CeFS9SgT.js} +3 -3
  103. package/dist/{esm/sdk/routerAbNormalSigning-BGpRKRAj.js → public/sdk/routerAbNormalSigning-DktZKnf1.js} +1 -1
  104. package/dist/{esm/sdk/runtime-auth-Ch00YcH5.js → public/sdk/runtime-auth-D_lUQQlc.js} +8 -8
  105. package/dist/public/sdk/{runtime-device-link-CEhVZYAw.js → runtime-device-link-CEph1iM0.js} +4 -4
  106. package/dist/{esm/sdk/runtime-ecdsa-tempo-B-qMRrmx.js → public/sdk/runtime-ecdsa-tempo-tUWnafRo.js} +5 -5
  107. package/dist/public/sdk/{runtime-email-otp-giyMPib8.js → runtime-email-otp-1wIPTDim.js} +4 -4
  108. package/dist/public/sdk/{runtime-export-CV-6G1Oy.js → runtime-export-Du2d4_Vu.js} +4 -4
  109. package/dist/{esm/sdk/runtime-near-DoDcS88O.js → public/sdk/runtime-near-CGoWxu7u.js} +4 -4
  110. package/dist/{esm/sdk/runtime-preferences-Canyenle.js → public/sdk/runtime-preferences-JwJK_xP3.js} +4 -4
  111. package/dist/public/sdk/{runtime-recovery-lWyILD1g.js → runtime-recovery-BEqBdpyo.js} +4 -4
  112. package/dist/public/sdk/{runtimeContext-BdTaYxJD.js → runtimeContext-CTt9ON27.js} +83 -40
  113. package/dist/{esm/sdk/runtimeLoader-Dxn8UA8B.js → public/sdk/runtimeLoader-ZXsvx9zX.js} +9 -9
  114. package/dist/{esm/sdk/secp256k1-CQFsI3qQ.js → public/sdk/secp256k1-CWDid9WH.js} +4 -4
  115. package/dist/{esm/sdk/signEvmFamily-CZLET02E.js → public/sdk/signEvmFamily-pbMepepQ.js} +10 -10
  116. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-DHTBHHgE.js → signEvmFamilyWithUiConfirmForTempo-CxvfCI_o.js} +2 -2
  117. package/dist/{esm/sdk/signEvmWithUiConfirm-CSxTBQUW.js → public/sdk/signEvmWithUiConfirm-nk-r3Rff.js} +1 -1
  118. package/dist/public/sdk/{signNear-BeUWiWm_.js → signNear-DVD9-IO5.js} +50 -13
  119. package/dist/{esm/sdk/signatureUses-C1o1pDql.js → public/sdk/signatureUses-BY1IY7uz.js} +1 -1
  120. package/dist/{esm/sdk/signerLoader-C_w8vuhm.js → public/sdk/signerLoader-D_w-SfR9.js} +3 -3
  121. package/dist/{esm/sdk/trace-DWnDLSuV.js → public/sdk/trace-08ayoiNp.js} +10 -1
  122. package/dist/{esm/sdk/transactionState-Dd13hMoY.js → public/sdk/transactionState-Bpm4GamO.js} +2 -2
  123. package/dist/public/sdk/tx-confirm-ui.js +134 -93
  124. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  125. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  126. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  127. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  128. package/dist/public/sdk/wallet-ui.css +92 -32
  129. package/dist/public/sdk/{walletRecoveryCommit-DNvzgeIX.js → walletRecoveryCommit-G6w6N5RV.js} +3 -3
  130. package/dist/public/sdk/{warmSessionHydration-CCKeEIIy.js → warmSessionHydration-DDNYdTCz.js} +1 -1
  131. package/dist/public/sdk/workers/passkey-mpc-session.worker.js +92 -8
  132. package/dist/public/wallet-assets.manifest.json +86 -86
  133. package/dist/public/wallet-service/index.html +4 -4
  134. package/dist/types/wallet/src/SeamsWeb/operations/registration/registration.d.ts +15 -1
  135. package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTiming.d.ts +11 -1
  136. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +6 -0
  137. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +8 -2
  138. package/dist/types/wallet/src/core/rpcClients/relayer/walletRegistration.d.ts +49 -10
  139. package/dist/types/wallet/src/core/signingEngine/nonce/nearNonceLane.d.ts +2 -1
  140. package/dist/types/wallet/src/core/signingEngine/session/operationState/trace.d.ts +2 -0
  141. package/dist/types/wallet/src/core/signingEngine/session/passkey/prfCache.d.ts +7 -9
  142. package/dist/types/wallet/src/core/signingEngine/session/passkey/warmSessionHydration.d.ts +7 -8
  143. package/dist/types/wallet/src/core/signingEngine/session/passkey/warmSessionMaterialWriter.d.ts +9 -9
  144. package/dist/types/wallet/src/core/signingEngine/session/warmCapabilities/public.d.ts +7 -8
  145. package/dist/types/wallet/src/core/signingEngine/uiConfirm/PasskeyMpcSessionDurableState.d.ts +3 -0
  146. package/dist/types/wallet/src/core/signingEngine/uiConfirm/uiConfirm.types.d.ts +6 -0
  147. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/shamir3pass/clientSealPreparation.d.ts +2 -0
  148. package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +15 -1
  149. package/dist/workers/passkey-mpc-session.worker.js +92 -8
  150. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { t as initWalletIFrame } from "./host-DACTruOj.js";
1
+ import { t as initWalletIFrame } from "./host-BPC1zSVg.js";
2
2
  import "./validation-BphUDXs7.js";
3
3
  import "./errors-93h9uAW9.js";
4
4
  export { initWalletIFrame };
@@ -3205,6 +3205,7 @@ body.seams-transparent {
3205
3205
  }
3206
3206
 
3207
3207
  :where(.seams-wallet-ui) .email-otp-confirm__error {
3208
+ text-align: center;
3208
3209
  color: var(--seams-colors-error, var(--seams-red400));
3209
3210
  font-size: 0.8rem;
3210
3211
  font-weight: 600;
@@ -3212,6 +3213,7 @@ body.seams-transparent {
3212
3213
 
3213
3214
  :where(.seams-wallet-ui) .email-otp-confirm__resend {
3214
3215
  justify-self: center;
3216
+ margin-bottom: 0.75rem;
3215
3217
  border: 0;
3216
3218
  background: transparent;
3217
3219
  color: var(--seams-colors-buttonBackground);
@@ -4145,6 +4147,7 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
4145
4147
  }
4146
4148
 
4147
4149
  :where(.seams-wallet-ui) .seams-confirmation-modal--hosted {
4150
+ outline: none;
4148
4151
  inline-size: var(--seams-modal__container-max-width, 26rem);
4149
4152
  max-inline-size: 100%;
4150
4153
  max-block-size: none;
@@ -4915,14 +4918,14 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
4915
4918
  height: var(--seams-review-disclosure-height);
4916
4919
  overflow: hidden;
4917
4920
  }
4918
- :where(.seams-wallet-ui) .seams-transaction-review > .seams-review-technical > div {
4921
+ :where(.seams-wallet-ui) :is(.seams-transaction-review, .seams-transaction-receipt) > .seams-review-technical > div {
4919
4922
  margin-inline: calc(-1 * var(--seams-review-inset));
4920
4923
  background: var(--seams-colors-surface2);
4921
4924
  box-shadow: inset 0 1px 0 var(--seams-colors-borderPrimary),
4922
4925
  inset 0 -1px 0 var(--seams-colors-borderPrimary),
4923
4926
  inset 0 5px 8px -7px rgb(0 0 0 / 0.16);
4924
4927
  }
4925
- :where(.seams-wallet-ui) .seams-transaction-review > .seams-review-technical > div > .seams-review-detail {
4928
+ :where(.seams-wallet-ui) :is(.seams-transaction-review, .seams-transaction-receipt) > .seams-review-technical > div > :is(.seams-review-detail, .seams-review-fields) {
4926
4929
  margin: 0;
4927
4930
  padding: 0.75rem var(--seams-review-inset);
4928
4931
  }
@@ -5015,8 +5018,14 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5015
5018
  }
5016
5019
  :where(.seams-wallet-ui) .seams-review-detail-row--block > pre {
5017
5020
  grid-column: 1 / -1;
5021
+ grid-row: 2;
5018
5022
  text-align: start;
5019
5023
  }
5024
+ :where(.seams-wallet-ui) .seams-review-detail-row--block > .seams-review-copy {
5025
+ grid-column: 3;
5026
+ grid-row: 1;
5027
+ justify-self: end;
5028
+ }
5020
5029
  :where(.seams-wallet-ui) .seams-review-detail-row--block > pre,
5021
5030
  :where(.seams-wallet-ui) .seams-review-raw > pre {
5022
5031
  padding: 0.625rem;
@@ -5116,7 +5125,7 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5116
5125
  justify-content: center;
5117
5126
  gap: 0.25rem;
5118
5127
  width: fit-content;
5119
- margin: -0.25rem auto 0.75rem;
5128
+ margin: 0.75rem auto;
5120
5129
  color: var(--seams-colors-textSecondary);
5121
5130
  font-size: 0.75rem;
5122
5131
  text-decoration: none;
@@ -5173,35 +5182,55 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5173
5182
  }
5174
5183
  :where(.seams-wallet-ui) .seams-transaction-toast {
5175
5184
  position: relative;
5185
+ border-radius: inherit;
5176
5186
  background: var(--seams-colors-colorBackground);
5177
5187
  display: flex;
5178
5188
  align-items: center;
5179
5189
  gap: 0.75rem;
5180
- padding: 1.0625rem 1.125rem;
5190
+ padding: 0.625rem 0.75rem;
5181
5191
  }
5182
5192
  :where(.seams-wallet-ui) .seams-toast-progress {
5183
5193
  position: absolute;
5184
- inset: 0 0 auto;
5185
- height: 2px;
5186
- background: var(--seams-colors-colorBackground);
5194
+ inset: 0;
5195
+ border-radius: inherit;
5187
5196
  overflow: hidden;
5197
+ pointer-events: none;
5188
5198
  }
5189
- :where(.seams-wallet-ui) .seams-toast-progress > span {
5199
+ :where(.seams-wallet-ui) .seams-toast-progress-fill {
5200
+ position: relative;
5190
5201
  display: block;
5191
- height: 100%;
5202
+ height: 2px;
5192
5203
  width: 0;
5193
5204
  background: var(--seams-colors-buttonBackground);
5205
+ transform-origin: left;
5194
5206
  transition: width 300ms ease-out;
5195
5207
  }
5196
- :where(.seams-wallet-ui) [data-completed-stages='1'] .seams-toast-progress > span {
5208
+ :where(.seams-wallet-ui) [data-completed-stages='1'] .seams-toast-progress-fill,
5209
+ :where(.seams-wallet-ui) [data-stage='signing'] .seams-toast-progress-fill {
5197
5210
  width: calc(100% / 3);
5198
5211
  }
5199
- :where(.seams-wallet-ui) [data-completed-stages='2'] .seams-toast-progress > span {
5212
+ :where(.seams-wallet-ui) [data-completed-stages='2'] .seams-toast-progress-fill,
5213
+ :where(.seams-wallet-ui) [data-stage='broadcasting'] .seams-toast-progress-fill {
5200
5214
  width: calc(200% / 3);
5201
5215
  }
5202
- :where(.seams-wallet-ui) [data-completed-stages='3'] .seams-toast-progress > span {
5216
+ :where(.seams-wallet-ui) [data-completed-stages='3'] .seams-toast-progress-fill {
5203
5217
  width: 100%;
5204
5218
  }
5219
+ :where(.seams-wallet-ui) .seams-toast-progress-active {
5220
+ position: absolute;
5221
+ top: 0;
5222
+ left: 0;
5223
+ width: 100%;
5224
+ height: 2px;
5225
+ overflow: hidden;
5226
+ background: var(--seams-colors-borderPrimary);
5227
+ }
5228
+ :where(.seams-wallet-ui) .seams-toast-progress-active::after {
5229
+ content: '';
5230
+ position: absolute;
5231
+ inset: 0;
5232
+ background: linear-gradient(90deg, transparent, var(--seams-colors-buttonBackground), transparent);
5233
+ }
5205
5234
  :where(.seams-wallet-ui) .seams-transaction-toast-text {
5206
5235
  display: grid;
5207
5236
  flex: 1;
@@ -5225,7 +5254,7 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5225
5254
  cursor: pointer;
5226
5255
  }
5227
5256
  :where(.seams-wallet-ui[data-receipt-view='toast']) .seams-confirmation-modal--hosted {
5228
- inline-size: 22.5rem;
5257
+ inline-size: 20rem;
5229
5258
  }
5230
5259
  :where(.seams-wallet-ui[data-confirmation-kind='transaction'])
5231
5260
  .seams-confirmation-modal
@@ -5237,7 +5266,7 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5237
5266
  border-radius: min(calc(var(--seams-shape-card, 16px) * 1.625), 26px);
5238
5267
  }
5239
5268
  :where(.seams-wallet-ui[data-confirmation-kind='transaction']) .seams-confirmation-modal {
5240
- inline-size: min(100%, 26.25rem);
5269
+ inline-size: min(100%, 28rem);
5241
5270
  }
5242
5271
  :where(.seams-wallet-ui[data-receipt-view='toast'])
5243
5272
  .seams-confirmation-modal
@@ -5355,16 +5384,10 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5355
5384
  background: var(--seams-colors-surface2);
5356
5385
  box-shadow: 0 0 6px 3px var(--seams-colors-surface2);
5357
5386
  }
5358
- :where(.seams-wallet-ui) .seams-receipt-box {
5359
- background: var(--seams-colors-surface2);
5360
- padding: 0.25rem 0.875rem;
5361
- border-radius: var(--seams-shape-box, 12px);
5362
- margin-block: 0.75rem;
5363
- }
5364
5387
  :where(.seams-wallet-ui) .seams-receipt-morph-shell {
5365
5388
  position: fixed;
5366
5389
  pointer-events: none;
5367
- z-index: 1;
5390
+ z-index: 0;
5368
5391
  box-sizing: border-box;
5369
5392
  background: var(--seams-colors-colorBackground);
5370
5393
  border: 1px solid var(--seams-colors-borderPrimary);
@@ -5409,18 +5432,11 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5409
5432
  :where(.seams-wallet-ui) .seams-drawer-controls:has(.seams-drawer-origin) .seams-drawer-close {
5410
5433
  top: 0.5rem;
5411
5434
  }
5412
- :where(.seams-wallet-ui) .seams-receipt-box .seams-review-technical {
5413
- border-top: 0;
5414
- margin: 0;
5415
- }
5416
- :where(.seams-wallet-ui) .seams-receipt-box .seams-review-fields {
5417
- margin-bottom: 6px;
5418
- }
5419
- :where(.seams-wallet-ui) .seams-receipt-box .seams-review-fields dd .seams-review-copy:not(.seams-review-copy-address) > .copy-icon {
5435
+ :where(.seams-wallet-ui) .seams-transaction-receipt > .seams-review-technical .seams-review-fields dd .seams-review-copy:not(.seams-review-copy-address) > .copy-icon {
5420
5436
  opacity: 0;
5421
5437
  }
5422
- :where(.seams-wallet-ui) .seams-receipt-box .seams-review-fields dd:is(:hover, :focus-within) .seams-review-copy:not(.seams-review-copy-address) > .copy-icon,
5423
- :where(.seams-wallet-ui) .seams-receipt-box .seams-review-fields .seams-review-copy.copied > .copy-icon {
5438
+ :where(.seams-wallet-ui) .seams-transaction-receipt > .seams-review-technical .seams-review-fields dd:is(:hover, :focus-within) .seams-review-copy:not(.seams-review-copy-address) > .copy-icon,
5439
+ :where(.seams-wallet-ui) .seams-transaction-receipt > .seams-review-technical .seams-review-fields .seams-review-copy.copied > .copy-icon {
5424
5440
  opacity: 1;
5425
5441
  }
5426
5442
  :where(.seams-wallet-ui) .seams-receipt-step[data-state='complete'] {
@@ -5440,9 +5456,17 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5440
5456
  }
5441
5457
  }
5442
5458
  @media (prefers-reduced-motion: no-preference) {
5459
+ :where(.seams-wallet-ui) .seams-toast-progress {
5460
+ animation: seams-toast-progress-reveal 1ms step-end 200ms backwards;
5461
+ }
5462
+ :where(.seams-wallet-ui) .seams-toast-progress-fill {
5463
+ animation: seams-toast-progress-draw 180ms ease-out 200ms backwards;
5464
+ }
5465
+ :where(.seams-wallet-ui) .seams-toast-progress-active::after,
5443
5466
  :where(.seams-wallet-ui) .seams-receipt-step[data-state='active'] .seams-receipt-track::after {
5444
5467
  animation: seams-receipt-sweep 1.2s ease-in-out infinite;
5445
5468
  }
5469
+ :where(.seams-wallet-ui) [data-completed-stages='2'] .seams-toast-progress-active::after,
5446
5470
  :where(.seams-wallet-ui)
5447
5471
  .seams-receipt-step[data-stage='confirming'][data-state='active']
5448
5472
  .seams-receipt-track::after {
@@ -5452,6 +5476,22 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5452
5476
  animation: seams-receipt-spin 1.2s linear infinite;
5453
5477
  }
5454
5478
  }
5479
+ @keyframes seams-toast-progress-reveal {
5480
+ from {
5481
+ visibility: hidden;
5482
+ }
5483
+ to {
5484
+ visibility: visible;
5485
+ }
5486
+ }
5487
+ @keyframes seams-toast-progress-draw {
5488
+ from {
5489
+ transform: scaleX(0);
5490
+ }
5491
+ to {
5492
+ transform: scaleX(1);
5493
+ }
5494
+ }
5455
5495
  @keyframes seams-receipt-sweep {
5456
5496
  from {
5457
5497
  transform: translateX(-100%);
@@ -5466,8 +5506,14 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5466
5506
  }
5467
5507
  }
5468
5508
  @media (prefers-reduced-motion: reduce) {
5509
+ :where(.seams-wallet-ui) .seams-toast-progress,
5510
+ :where(.seams-wallet-ui) .seams-toast-progress-fill {
5511
+ animation: none;
5512
+ visibility: visible;
5513
+ transform: none;
5514
+ }
5469
5515
  :where(.seams-wallet-ui) .seams-review-caret,
5470
- :where(.seams-wallet-ui) .seams-toast-progress > span,
5516
+ :where(.seams-wallet-ui) .seams-toast-progress-fill,
5471
5517
  :where(.seams-wallet-ui) .seams-receipt-track::after {
5472
5518
  transition: none;
5473
5519
  }
@@ -5479,6 +5525,20 @@ html:has([data-seams-confirm-surface='wallet-iframe'][data-seams-confirm-variant
5479
5525
  }
5480
5526
  }
5481
5527
 
5528
+ /* Shared receipt content stays visible above the moving surface. */
5529
+ .seams-wallet-ui[data-receipt-morphing] .seams-confirmation-modal,
5530
+ .seams-wallet-ui[data-receipt-morphing] .seams-confirmation-modal .modal-container-root {
5531
+ overflow: visible;
5532
+ }
5533
+ .seams-wallet-ui[data-receipt-morphing] .seams-confirmation-modal .modal-container-root {
5534
+ z-index: 1;
5535
+ background: transparent;
5536
+ box-shadow: none;
5537
+ }
5538
+ .seams-wallet-ui[data-receipt-morphing] .seams-transaction-toast {
5539
+ background: transparent;
5540
+ }
5541
+
5482
5542
 
5483
5543
  /* recovery-backup-surface */
5484
5544
  /*
@@ -7,15 +7,15 @@ import { _ as parseUnixMs, d as parseEd25519PublicKeyB64u, f as parseEnvelopeCip
7
7
  import { M as WALLET_CUSTODY_ED25519_MATERIAL_KEY_KIND, h as prepareWalletRecoveryPasskeyPublication, m as prepareWalletRecoveryEmailOtpPublication } from "./accountLifecycle-Ddavc_FC.js";
8
8
  import { t as toAccountId } from "./accountIds-Ck4GAQfm.js";
9
9
  import { o as normalizeThresholdRuntimePolicyScope, x as walletAuthorityDigestsMatchV1 } from "./sessionPolicy-B4FsPuk2.js";
10
- import { At as buildEmailOtpWalletAuthAuthority, Ht as walletAuthAuthorityRef, Sn as routerAbMpcMaterialActivationRefToWire, ft as parseRouterAbEcdsaRegistrationActivationReceiptV1, it as parseRouterAbEcdsaDerivationPublicCapabilityV1, xn as routerAbMpcMaterialActivationRefFromWire, yn as parseRouterAbMpcMaterialActivationRef } from "./ecdsaPresignLifecycle-D_KCktCj.js";
10
+ import { At as buildEmailOtpWalletAuthAuthority, Cn as routerAbMpcMaterialActivationRefToWire, Ht as walletAuthAuthorityRef, Sn as routerAbMpcMaterialActivationRefFromWire, bn as parseRouterAbMpcMaterialActivationRef, ft as parseRouterAbEcdsaRegistrationActivationReceiptV1, it as parseRouterAbEcdsaDerivationPublicCapabilityV1 } from "./ecdsaPresignLifecycle-CnSnzoRJ.js";
11
11
  import { l as parseDeviceId } from "./capabilityKinds-jwCEaqBU.js";
12
12
  import { St as parseSdkEcdsaDerivationThresholdKeyId, bt as parseSdkEcdsaDerivationSigningRootId, gt as parseEcdsaServerGeneration, vt as computeEcdsaDerivationRoleLocalRelayerKeyId, xt as parseSdkEcdsaDerivationSigningRootVersion, yt as ecdsaClientRootPublicKey33B64uFromString } from "./evmFamilyEcdsaIdentity-_kuKSW35.js";
13
13
  import { d as parsePasskeyCustodyEnvelopeRecord } from "./passkey-custody-BaHyYMhj.js";
14
- import { g as prepareWalletCustodyEcdsaContinuity, s as IndexedDBManager, y as pendingWalletRecoveryCommitIdentityMatches } from "./ed25519SeedMaterial-0VmS6K9P.js";
14
+ import { g as prepareWalletCustodyEcdsaContinuity, s as IndexedDBManager, y as pendingWalletRecoveryCommitIdentityMatches } from "./ed25519SeedMaterial-Cghz8-XB.js";
15
15
  import { n as PASSKEY_PRF_SECOND_SALT_V1, t as PASSKEY_PRF_FIRST_SALT_V1 } from "./signingSessionSeal-CdtgXHSL.js";
16
16
  import { n as parseEmailOtpChallengeDelivery } from "./challengeDelivery-BjLKoou3.js";
17
17
  import { o as redactedPasskeyRegistrationCredential } from "./helpers-DpRjHMBx.js";
18
- import { S as buildEcdsaRoleLocalPublicFacts } from "./ecdsaCapabilityManifest-DA_fklIs.js";
18
+ import { S as buildEcdsaRoleLocalPublicFacts } from "./ecdsaCapabilityManifest-C8itxV9S.js";
19
19
  import { n as buildRelayerJsonPostRequestInit, r as normalizeRelayerBaseUrl } from "./relayerHttp-LsVTZCxA.js";
20
20
  //#region ../shared-ts/src/wallet-recovery/walletRecoveryTarget.ts
21
21
  function parseWalletRecoveryTargetV1(raw) {
@@ -1,4 +1,4 @@
1
- import { t as cacheCredentialBoundarySetupExportPrfFirst } from "./prfCache-Dwwauj4v.js";
1
+ import { t as cacheCredentialBoundarySetupExportPrfFirst } from "./prfCache-CgAr-VEU.js";
2
2
  //#region src/core/signingEngine/session/passkey/warmSessionHydration.ts
3
3
  function createWarmSessionHydrationService(deps) {
4
4
  return { hydrateSigningSession: (input) => cacheCredentialBoundarySetupExportPrfFirst(deps.getWarmSessionMaterialWriter(), input) };
@@ -767,6 +767,26 @@ class ClientSealPreparations {
767
767
  throw result.error;
768
768
  return result.seal;
769
769
  }
770
+ async readCiphertext(sessionId, preparationId) {
771
+ const entry = this.entries.get(sessionId);
772
+ if (!entry || entry.id !== preparationId) {
773
+ throw new Error("Client seal preparation is unavailable");
774
+ }
775
+ const result = await entry.result;
776
+ if (this.entries.get(sessionId) !== entry) {
777
+ throw new Error("Client seal preparation was discarded");
778
+ }
779
+ if (result.kind === "failed")
780
+ throw result.error;
781
+ return result.seal.ciphertext;
782
+ }
783
+ async takeExact(sessionId, preparationId, secret) {
784
+ const entry = this.entries.get(sessionId);
785
+ if (!entry || entry.id !== preparationId) {
786
+ throw new Error("Client seal preparation is unavailable");
787
+ }
788
+ return await this.take(sessionId, secret);
789
+ }
770
790
  async discard(sessionId, preparationId) {
771
791
  const entry = this.entries.get(sessionId);
772
792
  if (!entry || entry.id !== preparationId)
@@ -849,6 +869,21 @@ function parseClientSealDiscard(value) {
849
869
  const thresholdSessionId = parseSessionString(Reflect.get(value, "thresholdSessionId"));
850
870
  return preparationId && thresholdSessionId ? { preparationId, thresholdSessionId } : null;
851
871
  }
872
+ function parseClientSealCompletion(value) {
873
+ if (!value || typeof value !== "object" || Array.isArray(value))
874
+ return null;
875
+ const fields = Object.keys(value);
876
+ if (fields.length !== 4 || !fields.includes("preparationId") || !fields.includes("thresholdSessionId") || !fields.includes("transport") || !fields.includes("serverSeal")) {
877
+ return null;
878
+ }
879
+ const preparationId = parseSessionString(Reflect.get(value, "preparationId"));
880
+ const thresholdSessionId = parseSessionString(Reflect.get(value, "thresholdSessionId"));
881
+ const transport = parseSigningSessionSealTransport(Reflect.get(value, "transport"));
882
+ const serverSeal = parseSigningSessionSealRouteResult(Reflect.get(value, "serverSeal"));
883
+ if (!preparationId || !thresholdSessionId || !transport || !serverSeal.ok)
884
+ return null;
885
+ return { preparationId, thresholdSessionId, transport, serverSeal };
886
+ }
852
887
  function parseWarmSessionMaterialPutPayload(value) {
853
888
  if (value === null || typeof value !== "object" || Array.isArray(value))
854
889
  return null;
@@ -1013,6 +1048,10 @@ function parsePasskeyMpcSessionWorkerMessage(value) {
1013
1048
  return { kind: "prewarm", ...id ? { id } : {} };
1014
1049
  case "PREPARE_SESSION_CLIENT_SEAL":
1015
1050
  return { kind: "prepare_client_seal", id, payload: parseClientSealPreparation(payload) };
1051
+ case "READ_SESSION_CLIENT_SEAL":
1052
+ return { kind: "read_client_seal", id, payload: parseClientSealDiscard(payload) };
1053
+ case "COMPLETE_SESSION_CLIENT_SEAL":
1054
+ return { kind: "complete_client_seal", id, payload: parseClientSealCompletion(payload) };
1016
1055
  case "DISCARD_SESSION_CLIENT_SEAL":
1017
1056
  return { kind: "discard_client_seal", id, payload: parseClientSealDiscard(payload) };
1018
1057
  case "WARM_SESSION_MATERIAL_PUT":
@@ -1523,24 +1562,26 @@ async function runSigningSessionSealAndPersist(args) {
1523
1562
  const task = (async () => {
1524
1563
  const diagnostics = createWarmSessionSealAndPersistDiagnostics();
1525
1564
  try {
1526
- const prepared = await clientSealPreparations.take(thresholdSessionId, activeEntry.secret.prfFirstB64u);
1565
+ const prepared = args.kind === "prepared_response" ? await clientSealPreparations.takeExact(thresholdSessionId, args.preparationId, activeEntry.secret.prfFirstB64u) : await clientSealPreparations.take(thresholdSessionId, activeEntry.secret.prfFirstB64u);
1527
1566
  const { runtime, keyHandle, ciphertext: clientEncryptedCiphertext } = prepared;
1528
1567
  diagnostics.runtimeSetupMs = prepared.runtimeSetupMs;
1529
1568
  diagnostics.clientSealMs = prepared.clientSealMs;
1530
1569
  try {
1531
1570
  const serverSealRouteStartedAt = performance.now();
1532
- const applied = await callSigningSessionSealRoute({
1571
+ const applied = args.kind === "prepared_response" ? args.serverSeal : await callSigningSessionSealRoute({
1533
1572
  operation: "apply-server-seal",
1534
1573
  transport: args.transport,
1535
1574
  thresholdSessionId,
1536
1575
  ciphertext: clientEncryptedCiphertext,
1537
1576
  keyVersion: args.transport.keyVersion
1538
1577
  });
1539
- recordWarmSessionSealAndPersistDiagnosticDuration({
1540
- diagnostics,
1541
- bucket: "serverSealRouteMs",
1542
- startedAt: serverSealRouteStartedAt
1543
- });
1578
+ if (args.kind === "server_route") {
1579
+ recordWarmSessionSealAndPersistDiagnosticDuration({
1580
+ diagnostics,
1581
+ bucket: "serverSealRouteMs",
1582
+ startedAt: serverSealRouteStartedAt
1583
+ });
1584
+ }
1544
1585
  if (!applied.ok)
1545
1586
  return applied;
1546
1587
  const policyUpdateStartedAt = performance.now();
@@ -1740,6 +1781,40 @@ async function handleClientSealPreparation(incoming) {
1740
1781
  });
1741
1782
  }
1742
1783
  }
1784
+ async function handleClientSealRead(incoming) {
1785
+ try {
1786
+ if (!incoming.payload)
1787
+ throw new Error("Invalid client seal read request");
1788
+ const ciphertext = await clientSealPreparations.readCiphertext(incoming.payload.thresholdSessionId, incoming.payload.preparationId);
1789
+ postPasskeyMpcSessionWorkerResponse(incoming.id, {
1790
+ success: true,
1791
+ data: { ok: true, ciphertext }
1792
+ });
1793
+ } catch (error) {
1794
+ postPasskeyMpcSessionWorkerResponse(incoming.id, {
1795
+ success: false,
1796
+ error: error instanceof Error ? error.message : "Client seal read failed"
1797
+ });
1798
+ }
1799
+ }
1800
+ async function handleClientSealCompletion(incoming) {
1801
+ const payload = incoming.payload;
1802
+ if (!payload) {
1803
+ postPasskeyMpcSessionWorkerResponse(incoming.id, {
1804
+ success: false,
1805
+ error: "Invalid client seal completion request"
1806
+ });
1807
+ return;
1808
+ }
1809
+ const result = await runSigningSessionSealAndPersist({
1810
+ kind: "prepared_response",
1811
+ thresholdSessionId: payload.thresholdSessionId,
1812
+ preparationId: payload.preparationId,
1813
+ transport: payload.transport,
1814
+ serverSeal: payload.serverSeal
1815
+ });
1816
+ postPasskeyMpcSessionWorkerResponse(incoming.id, { success: true, data: result });
1817
+ }
1743
1818
  self.onmessage = (event) => {
1744
1819
  const incoming = parsePasskeyMpcSessionWorkerMessage(event.data);
1745
1820
  switch (incoming.kind) {
@@ -1747,6 +1822,12 @@ self.onmessage = (event) => {
1747
1822
  case "discard_client_seal":
1748
1823
  handleClientSealPreparation(incoming);
1749
1824
  return;
1825
+ case "read_client_seal":
1826
+ handleClientSealRead(incoming);
1827
+ return;
1828
+ case "complete_client_seal":
1829
+ handleClientSealCompletion(incoming);
1830
+ return;
1750
1831
  case "ping":
1751
1832
  postPasskeyMpcSessionWorkerResponse(incoming.id, { success: true, data: { ok: true } });
1752
1833
  return;
@@ -1877,7 +1958,10 @@ self.onmessage = (event) => {
1877
1958
  });
1878
1959
  return;
1879
1960
  }
1880
- const result = await runSigningSessionSealAndPersist(payload);
1961
+ const result = await runSigningSessionSealAndPersist({
1962
+ kind: "server_route",
1963
+ ...payload
1964
+ });
1881
1965
  postPasskeyMpcSessionWorkerResponse(incoming.id, { success: true, data: result });
1882
1966
  })();
1883
1967
  return;